# Business Logic — JKKTVSvcKeiKaihukuCC.recoveryToConclusion() [169 LOC]

| Field | Value |
|-------|-------|
| Fully Qualified Name | `com.fujitsu.futurity.bp.custom.common.JKKTVSvcKeiKaihukuCC` |
| Layer | CC / Common Component (Service Component orchestration layer) |
| Module | `common` (Package: `com.fujitsu.futurity.bp.custom.common`) |

## 1. Role

### JKKTVSvcKeiKaihukuCC.recoveryToConclusion()

This method performs the business operation of **reversing a completed service contract cancellation** ("締結済⇒解約"からの回復処理) — essentially undoing a cancellation that was already finalized, so the service contract returns to its active (concluded) state. It is invoked after the user has requested a cancellation (submitting a cancellation application) and later decides to withdraw that request, restoring the original service contract in its entirety.

The method handles a cascading multi-entity cancellation reversal: first it cancels the top-level service contract cancellation (EKK0081C240), then iterates through the affected service contract detail records, their associated device-provisioned service contracts, and their associated option service contracts, invoking cancellation-inversion CBS calls for each matching record. A final step updates the skipper key information mapping to release any pause or suspension holds that were placed on the service.

The design pattern used is **sequential delegation with iterative filtering**: each CBS call is a service component (SC) invocation built from a CAANMsg envelope and dispatched through the generic `callSC()` wrapper. The method filters detail and sub-contract records by comparing the original cancellation detail number (`mskmDtlNoBf`) to ensure only the specific cancellation request being withdrawn is reversed — leaving unrelated concurrent cancellations intact.

This method serves as a **shared business component (CC)** called by the main recovery orchestrator `kaihuku()`. It is a core entry point for the "cancel a cancellation" use case within the K-Opticom eo TV service contract system, and is not directly invoked by any UI screen — instead, it is reached through the CBS/CB framework as part of a multi-step transaction flow.

## 2. Processing Pattern (Detailed Business Logic)

```mermaid
flowchart TD
    START(["recoveryToConclusion"])
    START --> EXTRACT["Extract data from ccMsg"]
    EXTRACT --> OPE_DATE["Get opeDate"]
    OPE_DATE --> CANCELLATION["EKK0081C240 - Service Contract Cancellation"]
    CANCELLATION --> GET_UPD1["Update lastUpdDtm"]
    GET_UPD1 --> QUERY_DETAILS["EKK0161B004 - Service Contract Details List"]
    QUERY_DETAILS --> LOOP_DETAILS["Loop: each curSvcKeiUcwkInfo"]
    LOOP_DETAILS --> FILTER_DETAILS["mskmDtlNoBf matches?"]
    FILTER_DETAILS -- "No" --> CONTINUE_DETAILS["continue"]
    FILTER_DETAILS -- "Yes" --> DETAIL_CANCEL["EKK0161C250 - Detail Cancellation"]
    DETAIL_CANCEL --> GET_UPD2["Update lastUpdDtm"]
    GET_UPD2 --> QUERY_DEVICE["EKK0341B501 - Device Contract List"]
    QUERY_DEVICE --> LOOP_DEVICE["Loop: each curKktkSvcKeiInfo"]
    LOOP_DEVICE --> FILTER_DEVICE["mskmDtlNoBf matches?"]
    FILTER_DEVICE -- "No" --> CONTINUE_DEVICE["continue"]
    FILTER_DEVICE -- "Yes" --> DEVICE_CANCEL["EKK0341C430 - Device Cancellation"]
    DEVICE_CANCEL --> GET_UPD3["Update lastUpdDtm"]
    GET_UPD3 --> CONTINUE_DEVICE
    CONTINUE_DEVICE --> QUERY_OPTION["EKK0351B002 - Option Contract List"]
    QUERY_OPTION --> LOOP_OPTION["Loop: each curOpSvcKeiInfo"]
    LOOP_OPTION --> FILTER_OPTION["mskmDtlNoBf matches?"]
    FILTER_OPTION -- "No" --> CONTINUE_OPTION["continue"]
    FILTER_OPTION -- "Yes" --> OPTION_CANCEL["EKK0351C310 - Option Cancellation"]
    OPTION_CANCEL --> GET_UPD4["Update lastUpdDtm"]
    GET_UPD4 --> CONTINUE_OPTION
    CONTINUE_OPTION --> SKIPPER_WORK["Setup skipper workMap"]
    SKIPPER_WORK --> SKIPPER_EXEC["JKKSptvKeyInfOperateCC.execute"]
    SKIPPER_EXEC --> END_NODE(["Return void"])
```

## 3. Parameter Analysis

| No | Parameter Name | Type | Business Description |
|----|---------------|------|---------------------|
| 1 | `handle` | `SessionHandle` | Database session handle providing the transactional context (connection, session state) for CBS invocations. |
| 2 | `scCall` | `ServiceComponentRequestInvoker` | Service Component invocation dispatcher — the runtime object that executes CBS calls against the EJB layer. |
| 3 | `param` | `IRequestParameterReadWrite` | Request parameter object holding the message map (data), control map (operator info, error list), and transaction metadata (telegram ID, operator ID). Used to read/write business data maps and skipper work data. |
| 4 | `dataMapKey` | `String` | Key within `param` that identifies the business data map (`ccMsg`) containing all service contract fields: `func_code`, `svc_kei_no`, `mskm_dtl_no`, `ido_div`, `lastUpdDtm`. Typically set from the screen input (e.g., `fixedText`). |
| 5 | `mskmDtlNo` | `String` | Cancellation detail number — the unique identifier of the specific cancellation application being withdrawn. This is the value submitted by the user to identify which cancellation request should be reversed. |

**Instance fields / external state read:**
- None directly. All data flows through the `param` object's data map keyed by `dataMapKey`.

## 4. CRUD Operations / Called Services

### Pre-computed evidence from code analysis graph:

| CRUD | SC / CBS | SC Code | Entity / DB | Operation Description |
|------|----------|---------|-------------|----------------------|
| U | `callSC` (EKK0081C240CBS) | EKK0081C240CBS | Service contract cancellation record | Cancels the service contract cancellation (reverses the cancellation to restore the contract) |
| R | `callSC` (EKK0161B004CBS) | EKK0161B004CBS | Service contract detail (UCWK) table | Retrieves list of service contract details (service detail work records) for the given service contract number |
| U | `callSC` (EKK0161C250CBS) | EKK0161C250CBS | Service contract detail cancellation record | Cancels the service contract detail cancellation — reverses the cancellation for each matching service detail work record |
| R | `callSC` (EKK0341B501CBS) | EKK0341B501CBS | Device-provisioned service contract table | Retrieves list of device-provisioned service contracts linked to the service detail work number |
| U | `callSC` (EKK0341C430CBS) | EKK0341C430CBS | Device-provisioned service contract cancellation record | Cancels the device-provisioned service contract cancellation — restores the device contract to active state |
| R | `callSC` (EKK0351B002CBS) | EKK0351B002CBS | Option service contract table | Retrieves list of option service contracts linked to the service contract number |
| U | `callSC` (EKK0351C310CBS) | EKK0351C310CBS | Option service contract cancellation record | Cancels the option service contract cancellation — restores the option contract to active state |
| SET | `JKKSptvKeyInfOperateCC.execute` | - | Skipper key information (pause/resume mapping) | Updates skipper key information mapping to release pause status for the service contract |
| R | `callSC` (internal) | callSC | Data map | Generic SC invocation wrapper that calls `scCall.run()` and returns CBS responses |
| R | `param.getData` | - | - | Reads the business data map from request parameters |
| R | `param.getControlMapData` | - | - | Reads control map data (operator info, error info) |
| SET | `param.setData` | - | - | Writes skipper work data map for the pause-step-release operation |

**CRUD classification:**

| CRUD | SC / CBS | SC Code | Entity / DB | Operation Description |
|------|----------|---------|-------------|----------------------|
| U | `JKKTVSvcKeiKaihukuCC.callSC` (EKK0081C240CBS) | EKK0081C240CBS | KK_T_SVC_KEI (service contract table) | Cancels the service contract cancellation — effectively restores the service contract from "cancelled" back to "concluded" |
| R | `JKKTVSvcKeiKaihukuCC.callSC` (EKK0161B004CBS) | EKK0161B004CBS | KK_T_SVC_KEI_UCWK (service detail work table) | Queries all service detail work records belonging to the service contract |
| U | `JKKTVSvcKeiKaihukuCC.callSC` (EKK0161C250CBS) | EKK0161C250CBS | KK_T_SVC_KEI_UCWK_KAIHK (service detail work cancellation table) | Reverses the cancellation of each matching service detail work record |
| R | `JKKTVSvcKeiKaihukuCC.callSC` (EKK0341B501CBS) | EKK0341B501CBS | KK_T_KKTK_SVC_KEI (device-provisioned service contract table) | Queries all device-provisioned service contract records for the service detail work number |
| U | `JKKTVSvcKeiKaihukuCC.callSC` (EKK0341C430CBS) | EKK0341C430CBS | KK_T_KKTK_SVC_KEI_KAIHK (device-provisioned service contract cancellation table) | Reverses the cancellation of each matching device-provisioned service contract |
| R | `JKKTVSvcKeiKaihukuCC.callSC` (EKK0351B002CBS) | EKK0351B002CBS | KK_T_OP_SVC_KEI (option service contract table) | Queries all option service contract records for the service contract number |
| U | `JKKTVSvcKeiKaihukuCC.callSC` (EKK0351C310CBS) | EKK0351C310CBS | KK_T_OP_SVC_KEI_KAIHK (option service contract cancellation table) | Reverses the cancellation of each matching option service contract |
| SET | `JKKSptvKeyInfOperateCC.execute` | - | KK_T_SKIPPER_KEY_INFO (skipper key info table) | Updates skipper key information mapping to release the pause state set during cancellation |

## 5. Dependency Trace

| # | Caller (Screen/Batch) | Call Chain (Full Path to this Method) | Terminal (SC / CRUD / Entity) |
|---|----------------------|--------------------------------------|-------------------------------|
| 1 | CBS: JKTVSvcKeiKaihukuCC.kaihuku | `JKKTVSvcKeiKaihukuCC.kaihuku` -> `recoveryToConclusion` | `callSC(EKK0081C240CBS) [U]`, `callSC(EKK0161B004CBS) [R]`, `callSC(EKK0161C250CBS) [U]`, `callSC(EKK0341B501CBS) [R]`, `callSC(EKK0341C430CBS) [U]`, `callSC(EKK0351B002CBS) [R]`, `callSC(EKK0351C310CBS) [U]`, `JKKSptvKeyInfOperateCC.execute [SET]` |

**Call chain details:**
- The `kaihuku()` method is the main orchestrator for the service contract recovery process. It processes multiple service contract records from a list and calls `recoveryToConclusion()` for each one that matches the recovery criteria.
- No direct screen (KKSV*) or batch entry points were found within 8 hops. The call originates from the CBS/CB framework as part of the overall service contract cancellation withdrawal workflow.

**Terminal operations from this method:**
`execute` [-], `setData` [-], `callSC` (EKK0081C240CBS) [U], `callSC` (EKK0161B004CBS) [R], `callSC` (EKK0161C250CBS) [U], `callSC` (EKK0341B501CBS) [R], `callSC` (EKK0341C430CBS) [U], `callSC` (EKK0351B002CBS) [R], `callSC` (EKK0351C310CBS) [U]

## 6. Per-Branch Detail Blocks

**Block 1** — [SET] Extract data from ccMsg (L2768)

> Extracts all required fields from the business data map. These values drive the cancellation reversal process.

| # | Type | Code |
|---|------|------|
| 1 | SET | `ccMsg = (HashMap) param.getData(dataMapKey)` // Read business data map |
| 2 | SET | `funcCode = (String) ccMsg.get("func_code")` // Function code (feature identifier) |
| 3 | SET | `ido_div = (String) ccMsg.get("ido_div")` // Inverse difference category — distinguishes cancellation from other operations |
| 4 | SET | `mskmDtlNoBf = (String) ccMsg.get("mskm_dtl_no")` // Pre-update cancellation detail number — the cancellation being withdrawn |
| 5 | SET | `lastUpdDtm = (String) ccMsg.get("lastUpdDtm")` // Last update datetime — optimistic locking timestamp |

**Block 2** — [SET] Get operation date (L2782)

> Retrieves the current operation date for use in CBS message payloads.

| # | Type | Code |
|---|------|------|
| 1 | SET | `opeDate = JPCBPCommon.getOpeDate(null)` // Current operation date (YYYYMMDD format) |

**Block 3** — [CALL] EKK0081C240 — Service Contract Cancellation Reversal (L2784-L2796)

> Invokes the service contract cancellation cancellation CBS to reverse the top-level service contract cancellation. This is the primary cancellation-inversion operation.

| # | Type | Code |
|---|------|------|
| 1 | SET | `ekk0081c240IN = new CAANMsg(EKK0081C240CBSMsg.class.getName())` // Create CBS input message envelope |
| 2 | SET | `ekk0081c240IN.set(TEMPLATEID, TEMPLATE_ID_EKK0081C240)` // [-> "EKK0081C240"] CBS template ID |
| 3 | SET | `ekk0081c240IN.set(FUNC_CODE, funcCode)` // Function code from input |
| 4 | SET | `ekk0081c240IN.set(SVC_KEI_NO, ccMsg.get("svc_kei_no"))` // Service contract number |
| 5 | SET | `ekk0081c240IN.set(MSKM_DTL_NO, mskmDtlNo)` // Cancellation detail number (input parameter) |
| 6 | SET | `ekk0081c240IN.set(IDO_DIV, ido_div)` // Inverse difference category |
| 7 | SET | `ekk0081c240IN.set(UPD_DTM_BF, lastUpdDtm)` // Pre-update datetime for optimistic locking |
| 8 | CALL | `ekk0081c240OUT = callSC(handle, scCall, param, dataMapKey, ekk0081c240IN)` // Execute CBS |

**Block 4** — [SET] Retrieve updated timestamp (L2799)

> Updates the optimistic locking timestamp from the CBS response for use in subsequent operations.

| # | Type | Code |
|---|------|------|
| 1 | SET | `lastUpdDtm = ekk0081c240OUT.getString(EKK0081C240CBSMsg.UPD_DTM)` // Updated last update datetime |

**Block 5** — [CALL] EKK0161B004 — Service Contract Details List Query (L2801-L2804)

> Queries all service contract detail (service detail work) records associated with the service contract number. This provides the list of records that may need reversal.

| # | Type | Code |
|---|------|------|
| 1 | SET | `ekk0161b004IN = new CAANMsg(EKK0161B004CBSMsg.class.getName())` // Create CBS input message |
| 2 | SET | `ekk0161b004IN.set(TEMPLATEID, TEMPLATE_ID_EKK0161B004)` // [-> "EKK0161B004"] CBS template ID |
| 3 | SET | `ekk0161b004IN.set(FUNC_CODE, "1")` // Function code = "1" (inquiry) |
| 4 | SET | `ekk0161b004IN.set(KEY_SVC_KEI_NO, ccMsg.get("svc_kei_no"))` // Service contract number as search key |
| 5 | CALL | `ekk0161b004OUT = callSC(...).getCAANMsgList(EKK0161B004CBSMsg.EKK0161B004CBSMSG1LIST)` // Execute CBS, extract result list |

**Block 6** — [FOR LOOP] Iterate service contract details (L2806)

> Iterates through each service contract detail record returned from the query.

| # | Type | Code |
|---|------|------|
| 1 | SET | `curSvcKeiUcwkInfo` (loop variable: CAANMsg) // Current service contract detail record |

**Block 6.1** — [IF] Filter by cancellation detail number (L2810)

> Only process records that match the cancellation detail number being withdrawn. Records with a different `mskmDtlNo` are skipped — they represent unrelated cancellation requests.

| # | Type | Code |
|---|------|------|
| 1 | IF | `!mskmDtlNoBf.equals(curSvcKeiUcwkInfo.getString(EKK0161B004CBSMsg1List.MSKM_DTL_NO))` // Skip non-matching records |
| 1.1 | EXEC | `continue` // Skip this record |

**Block 6.2** — [CALL] EKK0161C250 — Service Contract Detail Cancellation Reversal (L2817-L2823)

> Reverses the cancellation of the current service contract detail work record. This is a nested cancellation reversal within the detail level.

| # | Type | Code |
|---|------|------|
| 1 | SET | `ekk0161c250IN = new CAANMsg(EKK0161C250CBSMsg.class.getName())` // Create CBS input message |
| 2 | SET | `ekk0161c250IN.set(TEMPLATEID, TEMPLATE_ID_EKK0161C250)` // [-> "EKK0161C250"] CBS template ID |
| 3 | SET | `ekk0161c250IN.set(FUNC_CODE, funcCode)` // Function code |
| 4 | SET | `ekk0161c250IN.set(SVC_KEI_UCWK_NO, curSvcKeiUcwkInfo.getString(EKK0161B004CBSMsg1List.SVC_KEI_UCWK_NO))` // Service detail work number |
| 5 | SET | `ekk0161c250IN.set(MSKM_DTL_NO, mskmDtlNo)` // Cancellation detail number |
| 6 | SET | `ekk0161c250IN.set(IDO_DIV, ido_div)` // Inverse difference category |
| 7 | SET | `ekk0161c250IN.set(UPD_DTM_BF, lastUpdDtm)` // Pre-update datetime |
| 8 | CALL | `ekk0161c250OUT = callSC(handle, scCall, param, dataMapKey, ekk0161c250IN)` // Execute CBS |

**Block 6.3** — [SET] Retrieve updated timestamp (L2826)

| # | Type | Code |
|---|------|------|
| 1 | SET | `lastUpdDtm = ekk0161c250OUT.getString(EKK0161C250CBSMsg.UPD_DTM)` // Updated last update datetime |

**Block 6.4** — [CALL] EKK0341B501 — Device Provisioned Service Contract List Query (L2828-L2831)

> Queries device-provisioned service contract records linked to the current service detail work number. These represent physical device contracts (e.g., set-top boxes, routers) that need to be restored.

| # | Type | Code |
|---|------|------|
| 1 | SET | `ekk0341b501IN = new CAANMsg(EKK0341B501CBSMsg.class.getName())` // Create CBS input message |
| 2 | SET | `ekk0341b501IN.set(TEMPLATEID, TEMPLATE_ID_EKK0341B501)` // [-> "EKK0341B501"] CBS template ID |
| 3 | SET | `ekk0341b501IN.set(FUNC_CODE, "1")` // Function code = "1" (inquiry) |
| 4 | SET | `ekk0341b501IN.set(KEY_SVC_KEI_UCWK_NO, curSvcKeiUcwkInfo.getString(EKK0161B004CBSMsg1List.SVC_KEI_UCWK_NO))` // Service detail work number as search key |
| 5 | CALL | `ekk0341b501OUT = callSC(...).getCAANMsgList(EKK0341B501CBSMsg.EKK0341B501CBSMSG1LIST)` // Execute CBS, extract result list |

**Block 7** — [FOR LOOP] Iterate device-provisioned service contracts (L2832)

> Iterates through each device-provisioned service contract record.

| # | Type | Code |
|---|------|------|
| 1 | SET | `curKktkSvcKeiInfo` (loop variable: CAANMsg) // Current device-provisioned service contract record |

**Block 7.1** — [IF] Filter by cancellation detail number (L2836)

> Only process device-provisioned contracts matching the withdrawal cancellation detail number.

| # | Type | Code |
|---|------|------|
| 1 | IF | `!mskmDtlNoBf.equals(curKktkSvcKeiInfo.getString(EKK0341B501CBSMsg1List.MSKM_DTL_NO))` // Skip non-matching records |
| 1.1 | EXEC | `continue` // Skip this record |

**Block 7.2** — [CALL] EKK0341C430 — Device Provisioned Service Contract Cancellation Reversal (L2858-L2867)

> Reverses the cancellation of the current device-provisioned service contract record. Note: the original EKK0341C390 (pre-delivery device recovery) was commented out starting in v7.00.01; only EKK0341C430 is executed.

| # | Type | Code |
|---|------|------|
| 1 | SET | `ekk0341c430IN = new CAANMsg(EKK0341C430CBSMsg.class.getName())` // Create CBS input message |
| 2 | SET | `ekk0341c430IN.set(TEMPLATEID, TEMPLATE_ID_EKK0341C430)` // [-> "EKK0341C430"] CBS template ID |
| 3 | SET | `ekk0341c430IN.set(FUNC_CODE, funcCode)` // Function code |
| 4 | SET | `ekk0341c430IN.set(KKTK_SVC_KEI_NO, curKktkSvcKeiInfo.getString(EKK0341B501CBSMsg1List.KKTK_SVC_KEI_NO))` // Device-provisioned service contract number |
| 5 | SET | `ekk0341c430IN.set(MSKM_DTL_NO, mskmDtlNo)` // Cancellation detail number |
| 6 | SET | `ekk0341c430IN.set(IDO_DIV, ido_div)` // Inverse difference category |
| 7 | SET | `ekk0341c430IN.set(UPD_DTM_BF, lastUpdDtm)` // Pre-update datetime |
| 8 | CALL | `ekk0341c430OUT = callSC(handle, scCall, param, dataMapKey, ekk0341c430IN)` // Execute CBS |

**Block 7.3** — [SET] Retrieve updated timestamp (L2869)

| # | Type | Code |
|---|------|------|
| 1 | SET | `lastUpdDtm = ekk0341c430OUT.getString(EKK0341C430CBSMsg.UPD_DTM)` // Updated last update datetime |

**Block 8** — [CALL] EKK0351B002 — Option Service Contract List Query (L2873-L2878)

> Queries all option service contract records linked to the service contract number. Option contracts are supplementary services (e.g., additional channels, packages) that may need to be restored.

| # | Type | Code |
|---|------|------|
| 1 | SET | `ekk0351b002IN = new CAANMsg(EKK0351B002CBSMsg.class.getName())` // Create CBS input message |
| 2 | SET | `ekk0351b002IN.set(TEMPLATEID, TEMPLATE_ID_EKK0351B002)` // [-> "EKK0351B002"] CBS template ID |
| 3 | SET | `ekk0351b002IN.set(FUNC_CODE, "1")` // Function code = "1" (inquiry) |
| 4 | SET | `ekk0351b002IN.set(KEY_SVC_KEI_NO, ccMsg.get("svc_kei_no"))` // Service contract number as search key |
| 5 | CALL | `ekk0351b002OUT = callSC(...).getCAANMsgList(EKK0351B002CBSMsg.EKK0351B002CBSMSG1LIST)` // Execute CBS, extract result list |

**Block 9** — [FOR LOOP] Iterate option service contracts (L2880)

> Iterates through each option service contract record.

| # | Type | Code |
|---|------|------|
| 1 | SET | `curOpSvcKeiInfo` (loop variable: CAANMsg) // Current option service contract record |

**Block 9.1** — [IF] Filter by cancellation detail number (L2884)

> Only process option contracts matching the withdrawal cancellation detail number.

| # | Type | Code |
|---|------|------|
| 1 | IF | `!mskmDtlNoBf.equals(curOpSvcKeiInfo.getString(EKK0351B002CBSMsg1List.MSKM_DTL_NO))` // Skip non-matching records |
| 1.1 | EXEC | `continue` // Skip this record |

**Block 9.2** — [CALL] EKK0351C310 — Option Service Contract Cancellation Reversal (L2891-L2897)

> Reverses the cancellation of the current option service contract record, restoring the option to active status.

| # | Type | Code |
|---|------|------|
| 1 | SET | `ekk0351c310IN = new CAANMsg(EKK0351C310CBSMsg.class.getName())` // Create CBS input message |
| 2 | SET | `ekk0351c310IN.set(TEMPLATEID, TEMPLATE_ID_EKK0351C310)` // [-> "EKK0351C310"] CBS template ID |
| 3 | SET | `ekk0351c310IN.set(FUNC_CODE, funcCode)` // Function code |
| 4 | SET | `ekk0351c310IN.set(OP_SVC_KEI_NO, curOpSvcKeiInfo.getString(EKK0351B002CBSMsg1List.OP_SVC_KEI_NO))` // Option service contract number |
| 5 | SET | `ekk0351c310IN.set(MSKM_DTL_NO, mskmDtlNo)` // Cancellation detail number |
| 6 | SET | `ekk0351c310IN.set(IDO_DIV, ido_div)` // Inverse difference category |
| 7 | SET | `ekk0351c310IN.set(UPD_DTM_BF, lastUpdDtm)` // Pre-update datetime |
| 8 | CALL | `ekk0351c310OUT = callSC(handle, scCall, param, dataMapKey, ekk0351c310IN)` // Execute CBS |

**Block 9.3** — [SET] Retrieve updated timestamp (L2900)

| # | Type | Code |
|---|------|------|
| 1 | SET | `lastUpdDtm = ekk0351c310OUT.getString(EKK0351C310CBSMsg.UPD_DTM)` // Updated last update datetime |

**Block 10** — [SET] Skipper key info mapping update (ANK-4592-00-00) (L2904-L2916)

> Sets up and executes the skipper key information operation to release the pause status on the service contract. This is a new feature added in v74.00.00 for the new skipper key system (skappa).

| # | Type | Code |
|---|------|------|
| 1 | SET | `workMap = new HashMap<String, Object>()` // Create work map for skipper operation |
| 2 | SET | `workMap.put("func_cd", funcCode)` // [-> "Function code from input"] Feature function code |
| 3 | SET | `workMap.put("shori_cd", SHORI_CD_KAIHK_PAUSE_STP_RLS)` // [-> "5"] Processing code: Recovery/Pause Release |
| 4 | SET | `workMap.put("svc_kei_no", ccMsg.get("svc_kei_no"))` // Service contract number |
| 5 | SET | `workMap.put("snst_mt_ymd", opeDate)` // Notification date (YYYYMMDD) |
| 6 | SET | `param.setData(CC_WORK_SPTVKAIHK_PAUSE_STP_RLS, workMap)` // [-> "JKKSptvKaihkPauseStpRls"] Store skipper work data |
| 7 | SET | `JKKSptvKeyInfOperateCC jkksptv = new JKKSptvKeyInfOperateCC()` // Instantiate skipper key operation CC |
| 8 | CALL | `jkksptv.execute(handle, param, CC_WORK_SPTVKAIHK_PAUSE_STP_RLS)` // Execute skipper key info operation to release pause |

## 7. Glossary

| Term | Type | Business Meaning |
|------|------|------------------|
| `recoveryToConclusion` | Method | Recovery to concluded state — undoes a cancellation that was already applied, restoring the service contract to its active status |
| `mskm` | Field/Abbreviation | 申し込み明細 (Shouikomi Meisai) — Application detail / cancellation detail. A unique identifier for a specific cancellation request |
| `mskm_dtl_no` | Field | Cancellation application detail number — the unique ID identifying which cancellation request is being withdrawn |
| `mskmDtlNoBf` | Field | Pre-update cancellation detail number — the value of `mskm_dtl_no` extracted from the input data map before processing |
| `svc_kei_no` | Field | Service contract number — the unique identifier of the top-level service contract line |
| `svc_kei_ucwk_no` | Field | Service detail work number — internal tracking ID for a service contract detail/line item within a service contract |
| `kktk_svc_kei_no` | Field | Device-provisioned service contract number — identifier for a service contract that includes physical device provisioning (e.g., set-top box, router) |
| `op_svc_kei_no` | Field | Option service contract number — identifier for a supplementary option service contract (e.g., additional channel packages) |
| `ido_div` | Field | Inverse difference category — distinguishes between cancellation and other operation types (e.g., registration, change) |
| `func_code` | Field | Function code — identifies the feature/function module performing the operation |
| `lastUpdDtm` | Field | Last update datetime — used for optimistic locking to prevent concurrent modification conflicts |
| `opeDate` | Field | Operation date — the current business date (YYYYMMDD format) used in CBS messages |
| `SHORI_CD_KAIHK_PAUSE_STP_RLS` | Constant | Processing code "5" — Recovery/Pause Release. Indicates the operation type for skipper key info: releasing a pause on the service contract |
| `CC_WORK_SPTVKAIHK_PAUSE_STP_RLS` | Constant | "JKKSptvKaihkPauseStpRls" — Work map name for skipper key pause-step release operation |
| EKK0081C240 | CBS Code | Service contract cancellation cancellation — reverses the service contract-level cancellation |
| EKK0161B004 | CBS Code | Service contract details list inquiry — queries service detail work records for a service contract |
| EKK0161C250 | CBS Code | Service contract detail cancellation cancellation — reverses the cancellation of a service detail work record |
| EKK0341B501 | CBS Code | Device-provisioned service contract list inquiry (by service contract detail number) — queries device-provisioned service contracts |
| EKK0341C430 | CBS Code | Device-provisioned service contract cancellation cancellation — reverses the cancellation of a device-provisioned service contract |
| EKK0351B002 | CBS Code | Option service contract list inquiry (by service contract number) — queries option service contracts |
| EKK0351C310 | CBS Code | Option service contract cancellation cancellation — reverses the cancellation of an option service contract |
| JKKSptvKeyInfOperateCC | CC Class | Skipper key information operation common component — manages skipper key (skappa) pause/resume operations |
| `callSC` | Method | Generic service component invocation wrapper — handles CBS call dispatch, error mapping, and response extraction |
| CAANMsg | Class | CBS message envelope — generic message container for CBS input/output data |
| CC | Abbreviation | Common Component — shared business logic class in the K-Opticom system architecture |
| CBS | Abbreviation | Common Business Service — the backend EJB layer that executes database operations |
| SC | Abbreviation | Service Component — the component layer that invokes CBS calls |
| 締結済 (Tekekuzumi) | Japanese term | Concluded / finalized — the state of a service contract that has been completed and is active |
| 解約 (Kaiyaku) | Japanese term | Cancellation — the state where a service contract has been cancelled |
| 回復 (Kaihuku) | Japanese term | Recovery — reversing a previous operation to restore a prior state |
| 取り消し (Torikeshi) | Japanese term | Cancellation / withdrawal — in this context, cancelling a cancellation request |
| 機器提供 (Kiki Teikyou) | Japanese term | Device provision — a service contract that includes provisioned hardware (set-top box, modem, etc.) |
| オプション (Option) | Japanese term | Option service — supplementary/add-on service contracts (e.g., extra channel packages) |
