# Business Logic — JKKTVSvcKeiKaihukuCC.execWctrlOrder() [156 LOC]

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

## 1. Role

### JKKTVSvcKeiKaihukuCC.execWctrlOrder()

This method orchestrates the issuance of a **viewing control order** (視聴制御オーダ) for the **service contract recovery** process in the K-Opticom television service system. It handles the scenario where a customer who was suspended (stopped) from service needs to recover their subscription — effectively a "recovery from suspension" workflow (休止中への回復).

The method acts as a **coordination hub** within the service recovery component. It gathers all necessary data about the customer's service contract lines, option service agreements, fee courses, and digital tier group codes through a series of service component (SC) calls. It then assembles this information into a structured output map that is passed to `JKKWctrlOrderSendCC.sendWctrlOrder()`, which handles the downstream transmission and registration of the viewing control order.

The method implements a **router-and-aggregator** pattern: it iterates over a list of operation service contract lines returned by an initial SC call, evaluates each line's status (active or recently stopped), collects eligible digital tier group codes, and merges them with data from the service contract details and fee course inquiries. The result is a consolidated payload containing the viewing control request transmission code set to "26" (service contract recovery), the customer's STB identifiers, and a deduplicated list of digital tier group codes.

## 2. Processing Pattern (Detailed Business Logic)

```mermaid
flowchart TD
    START(["execWctrlOrder(params)"])

    START --> GET_WORK_AREA["Get work area map from param"]
    GET_WORK_AREA --> GET_FUNC_CODE["Get func_code from work area"]
    GET_FUNC_CODE --> GET_OPE_DATE["Get opeDate from JPCBPCommon"]
    GET_OPE_DATE --> INIT_SEND_MAP["Create WctrlOrderSendMap in param"]
    INIT_SEND_MAP --> CALL_EKK0351B001["Call SC EKK0351B001: eo TV Option Channel Info List"]

    CALL_EKK0351B001 --> LOOP_START{For each opSvcKeiInfo in EKK0351B001 result}
    LOOP_START --> EKK0351A010["Call SC EKK0351A010: Option Service Contract Agreement"]
    EKK0351A010 --> CHECK_STAT{OP_SVC_KEI_STAT equals Active 100}
    CHECK_STAT --> yes1["Set isEnabledOpSvc to true"]
    CHECK_STAT --> no1{OP_SVC_KEI_STAT equals Stopped 030}
    yes1 --> GET_DGTIA_CHECK["Check DGTIA_GRP_CD"]
    no1 --> CHECK_SVC_STAYMD{SVC_STAYMD is null}
    CHECK_SVC_STAYMD --> svcNull["Call SC EKK1681B001: Movement Reservation Agreement"]
    svcNull --> GET_SVC_START_YMD["Get RSV_APLY_YMD"]
    CHECK_SVC_STAYMD --> svcNotNull["Get SVC_STAYMD from EKK0351A010"]
    svcNotNull --> GET_SVC_START_YMD
    GET_SVC_START_YMD --> CHECK_DAYS{0 <= subtractDay <= 2}
    CHECK_DAYS --> withinDays["Set isEnabledOpSvc to true"]
    CHECK_DAYS --> outOfDays["isEnabledOpSvc remains false"]
    withinDays --> GET_DGTIA_CHECK
    outOfDays --> GET_DGTIA_CHECK
    GET_DGTIA_CHECK --> NO_DGTIA{DGTIA_GRP_CD not null}
    NO_DGTIA --> hasDgtia["Add digitalTiaMap to digitalTiaList"]
    NO_DGTIA --> noDgtia["Skip"]

    INIT_SEND_MAP --> CALL_EKK0161A010["Call SC EKK0161A010: Service Contract Details Match"]
    CALL_EKK0161A010 --> CALL_EKK0791A010["Call SC EKK0791A010: Fee Course Match Inquiry"]
    CALL_EKK0791A010 --> ADD_DGTIA_FROM_EKK0791["Add DGTIA_GRP_CD to digitalTiaList"]
    ADD_DGTIA_FROM_EKK0791 --> GET_STB_IDS["Get C010 and C011 STB IDs from ucwkInfo"]

    GET_STB_IDS --> BUILD_OUT_MAP["Build outMap with viewing control data"]
    BUILD_OUT_MAP --> SEND_ORDER["Call orderSendCC.sendWctrlOrder()"]
    SEND_ORDER --> CLEANUP["Remove work data from param"]
    CLEANUP --> END_NODE(["Return"])

    LOOP_START --> LOOP_END["End of loop"]
    LOOP_END --> CALL_EKK0161A010
```

## 3. Parameter Analysis

| No | Parameter Name | Type | Business Description |
|----|---------------|------|---------------------|
| 1 | `handle` | `SessionHandle` | Database session handle used for all service component (SC) invocations. Carries the current database transaction context. |
| 2 | `param` | `IRequestParameterReadWrite` | Request parameter object carrying work area data. Used to read the caller's work map (`func_code`, `sysid`, `svc_kei_no`) and store the assembled viewing control order payload under the key `WctrlOrderSendMap`. |
| 3 | `scCall` | `ServiceComponentRequestInvoker` | Service component invocation bridge used to dispatch CBS calls (e.g., `EKK0351B001CBS`) to the underlying business service layer. |
| 4 | `svcUcwkNo` | `String` | Service contract line item work number (サービス契約項目作業番号) — internal tracking ID that uniquely identifies the service contract line item being processed for recovery. Passed as a key to multiple SC calls to scope queries to this specific line. |
| 5 | `ucwkInfo` | `HashMap<String, String>` | Work information map carrying per-line item data. Contains device identifiers: `C009_MODEL` (set-top box model code), `C009` (set-top box serial number), `C010` (STB ID for decoder 1), `C011` (STB ID for decoder 2). These identify the customer's viewing equipment for the viewing control order. |
| 6 | `dataMapKey` | `String` | Key into the `param` object used to retrieve and pass the work area map (`ccMsg`) that contains caller-supplied data such as `func_code` (function code), `sysid` (system ID), and `svc_kei_no` (service line number). |

## 4. CRUD Operations / Called Services

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

The method primarily interacts with Service Components (SCs) via its private `callSC()` method. Each SC call maps to a CBS (Common Business Service) and is classified below.

| CRUD | SC / CBS | SC Code | Entity / DB | Operation Description |
|------|----------|---------|-------------|----------------------|
| R | `callSC (EKK0351B001)` | `EKK0351B001CBS` | `EKK0351B001` | Retrieves eo TV option channel information list (eo光テレビオプションチャンネル情報一覧) for the given service contract line work number. Returns operation service contract details. |
| R | `callSC (EKK0351A010)` | `EKK0351A010CBS` | `EKK0351A010` | Queries option service contract agreement details (オプションサービス契約同意照会) to obtain service status (`OP_SVC_KEI_STAT`) and service start date (`SVC_STAYMD`). |
| R | `callSC (EKK1681B001)` | `EKK1681B001CBS` | `EKK1681B001` | Retrieves movement reservation agreement details (異動予約同意照会) — a fallback to obtain the service start date when the primary SC does not return it. Uses reservation application date as service start date. |
| R | `callSC (EKK0821A010)` | `EKK0821A010CBS` | `EKK0821A010` | Queries option service agreement details (オプションサービス同意照会) to obtain the digital tier group code (`DGTIA_GRP_CD`). Called only for enabled (active or recently stopped) service lines. |
| R | `callSC (EKK0161A010)` | `EKK0161A010CBS` | `EKK0161A010` | Retrieves service contract details match information (サービス契約内容同意照会) — fetches the contract line's fee course code (`PCRS_CD`) used in the subsequent fee course query. |
| R | `callSC (EKK0791A010)` | `EKK0791A010CBS` | `EKK0791A010` | Queries fee course agreement details (料金コース同意照会) to obtain the digital tier group code (`DGTIA_GRP_CD`) from the primary fee course, complementing the optional service data collected in the loop. |
| - | `callSC (private method)` | — | — | Delegates to SC layer. Wraps CAANMsg construction, invokes `ServiceComponentRequestInvoker`, and extracts result lists. |
| - | `JKKWctrlOrderSendCC.sendWctrlOrder` | — | — | Delegates the assembled viewing control order data to the order transmission component for final processing (mapping, IF execution, order dispatch, and result registration). |
| R | `JCCBPCommon.getOpeDate` | — | — | Returns the current operation date for use as `RESV_APLY_YMD` in SC calls and for the 2-day window check. |
| - | `JCCBPCommon.subtractDay` | — | — | Computes the day difference between service start date and operation date to determine if the service was stopped within the past 2 days. |
| - | `param.setData` / `param.getData` / `param.removeData` | — | — | Stores, retrieves, and cleans up work area data in the request parameter object. |

## 5. Dependency Trace

| # | Caller (Screen/Batch) | Call Chain (Full Path to this Method) | Terminal (SC / CRUD / Entity) |
|---|----------------------|--------------------------------------|-------------------------------|
| 1 | Class: `JKKTVSvcKeiKaihukuCC` | `recovery()` → `execWctrlOrder()` | `EKK0351B001CBS [R]`, `EKK0351A010CBS [R]`, `EKK1681B001CBS [R]`, `EKK0821A010CBS [R]`, `EKK0161A010CBS [R]`, `EKK0791A010CBS [R]`, `sendWctrlOrder` |

**Details:**

- **Direct caller: `JKKTVSvcKeiKaihukuCC.recovery()`** — This is the service recovery entry point within the same class. It invokes `execWctrlOrder` to handle the viewing control order dispatch as part of the broader service contract recovery process. The `recovery()` method prepares the `ucwkInfo` map (with STB IDs and model codes), determines the `svcUcwkNo` for the line being recovered, and delegates to this method to assemble and transmit the order.

- **Terminal operations reached from this method:** `sendWctrlOrder` (viewing control order dispatch), `getString` on EKK0351B001/EKK0351A010/EKK1681B001/EKK0821A010/EKK0161A010/EKK0791A010 results (data reads), `callSC` (SC invocation for all CBS calls).

## 6. Per-Branch Detail Blocks

**Block 1** — [SET] Work area extraction (L749)

Retrieves the work area map and extracts the function code.

| # | Type | Code |
|---|------|------|
| 1 | SET | `ccMsg = (HashMap) param.getData(dataMapKey)` // Work area map |
| 2 | SET | `funcCode = (String) ccMsg.get("func_code")` // Function code from caller |
| 3 | SET | `opeDate = JPCBPCommon.getOpeDate(null)` // Current operation date [-> JPCBPCommon.getOpeDate] |

**Block 2** — [SET] Initialize sending map (L754-757)

Prepares the output data structure for the viewing control order transmission.

| # | Type | Code |
|---|------|------|
| 1 | SET | `orderSendCC = new JKKWctrlOrderSendCC()` // Instantiate order sender component |
| 2 | SET | `workOrderSendDataKey = "WctrlOrderSendMap"` // Map key constant |
| 3 | EXEC | `param.setData(workOrderSendDataKey, new HashMap<String, Object>())` // Initialize empty map in param |
| 4 | SET | `outMap = (HashMap) param.getData(workOrderSendDataKey)` // Reference to the newly created map |

**Block 3** — [CALL] EKK0351B001 — eo TV Option Channel Info List (L759-765)

First SC call: retrieves the list of option service contract lines associated with the given service contract work number. This is the master list that the method will iterate over.

| # | Type | Code |
|---|------|------|
| 1 | SET | `ekk0351b001IN = new CAANMsg(EKK0351B001CBSMsg.class.getName())` |
| 2 | SET | `ekk0351b001IN.set(TEMPLATEID, TEMPLATE_ID_EKK0351B001 = "EKK0351B001")` |
| 3 | SET | `ekk0351b001IN.set(FUNC_CODE, "1")` // Function code: list inquiry |
| 4 | SET | `ekk0351b001IN.set(KEY_SVC_KEI_UCWK_NO, svcUcwkNo)` // Scope to target line |
| 5 | CALL | `ekk0351b001OUT = callSC(handle, scCall, param, dataMapKey, ekk0351b001IN)` |

**Block 4** — [FOR] Iterate over operation service contract lines (L768-840)

The central processing loop. For each option service contract line returned by EKK0351B001:

| # | Type | Code |
|---|------|------|
| 1 | SET | `digitalTiaList = new ArrayList<HashMap<String, Object>>()` // Result collection |
| 2 | EXEC | `for (CAANMsg curOpSvcKeiInfo : ekk0351b001OUT)` // Iteration |

**Block 4.1** — [CALL] EKK0351A010 — Option Service Contract Agreement (L775-784)

Within the loop, calls EKK0351A010 to get the status of each option service line.

| # | Type | Code |
|---|------|------|
| 1 | SET | `ekk0351a010IN = new CAANMsg(EKK0351A010CBSMsg.class.getName())` |
| 2 | SET | `ekk0351a010IN.set(TEMPLATEID, TEMPLATE_ID_EKK0351A010 = "EKK0351A010")` |
| 3 | SET | `ekk0351a010IN.set(FUNC_CODE, "2")` // Function code: inquiry |
| 4 | SET | `ekk0351a010IN.set(KEY_OP_SVC_KEI_NO, curOpSvcKeiInfo.getString(OP_SVC_KEI_NO))` |
| 5 | SET | `ekk0351a010IN.set(KEY_RSV_APLY_YMD, opeDate)` |
| 6 | CALL | `ekk0351a010INOUT = callSC(handle, scCall, param, dataMapKey, ekk0351a010IN)` |

**Block 4.2** — [IF] Check if option service is enabled (status = 100 Active) (L786-790)

If the service status is "100" (Active/有効), the line is immediately eligible.

| # | Type | Code |
|---|------|------|
| 1 | SET | `isEnabledOpSvc = false` // Reset flag |
| 2 | IF | `"100".equals(ekk0351a010INOUT[0].getString(OP_SVC_KEI_STAT))` [OP_SVC_KEI_STAT = "100" (Active)] |
| 3 | SET | `isEnabledOpSvc = true` // Service is active, include it |

**Block 4.3** — [ELSE IF] Check if service was stopped recently (status = 030) (L791-819)

If status is "030" (Stopped/停止中), the method checks whether the service start date is within 2 days of the operation date. This allows recovery for recently stopped services.

| # | Type | Code |
|---|------|------|
| 1 | IF | `"030".equals(ekk0351a010INOUT[0].getString(OP_SVC_KEI_STAT))` [OP_SVC_KEI_STAT = "030" (Stopped)] |
| 2 | SET | `svcStaYmd = ""` // Default empty |
| 3 | IF | `ekk0351a010INOUT[0].isNull(SVC_STAYMD)` // Service start date not available from EKK0351A010 |

**Block 4.3.1** — [IF] SVC_STAYMD is null — fallback via EKK1681B001 (L799-807)

When the primary SC (EKK0351A010) does not return the service start date, the method falls back to querying the movement reservation agreement table to find the reservation application date.

| # | Type | Code |
|---|------|------|
| 1 | SET | `ekk1681b001IN = new CAANMsg(EKK1681B001CBSMsg.class.getName())` |
| 2 | SET | `ekk1681b001IN.set(TEMPLATEID, TEMPLATE_ID_EKK1681B001 = "EKK1681B001")` |
| 3 | SET | `ekk1681b001IN.set(FUNC_CODE, "1")` |
| 4 | SET | `ekk1681b001IN.set(KEY_OP_SVC_KEI_NO, curOpSvcKeiInfo.getString(OP_SVC_KEI_NO))` |
| 5 | SET | `ekk1681b001IN.set(KEY_IDO_DIV, "00031")` // Movement type code |
| 6 | SET | `ekk1681b001IN.set(KEY_IDO_RSV_DTL_CD, "014")` // Reservation detail code |
| 7 | SET | `ekk1681b001IN.set(KEY_IDO_RSV_STAT_CD, "00")` // Reservation status code |
| 8 | CALL | `ekk1681b001OUT = callSC(handle, scCall, param, dataMapKey, ekk1681b001IN)` |
| 9 | IF | `ekk1681b001OUT.length > 0` |
| 10 | SET | `svcStaYmd = ekk1681b001OUT[0].getString(RSV_APLY_YMD)` // Use reservation application date |

**Block 4.3.2** — [ELSE] SVC_STAYMD is available (L811-812)

| # | Type | Code |
|---|------|------|
| 1 | SET | `svcStaYmd = ekk0351a010INOUT[0].getString(SVC_STAYMD)` // Use directly |

**Block 4.3.3** — [IF] Service start date is within 2 days of operation date (L813-819)

| # | Type | Code |
|---|------|------|
| 1 | IF | `!"".equals(svcStaYmd)` |
| 2 | IF | `JCCBPCommon.subtractDay(svcStaYmd, opeDate) <= 2 && JCCBPCommon.subtractDay(svcStaYmd, opeDate) >= 0` // Within 0-2 day window |
| 3 | SET | `isEnabledOpSvc = true` // Include this line — recovery is permitted |

**Block 4.4** — [IF] Service is enabled — collect digital tier group code (L822-840)

For enabled option services, query the option service agreement to obtain the digital tier group code.

| # | Type | Code |
|---|------|------|
| 1 | IF | `isEnabledOpSvc` |
| 2 | SET | `ekk0821a010IN = new CAANMsg(EKK0821A010CBSMsg.class.getName())` |
| 3 | SET | `ekk0821a010IN.set(TEMPLATEID, TEMPLATE_ID_EKK0821A010 = "EKK0821A010")` |
| 4 | SET | `ekk0821a010IN.set(FUNC_CODE, "2")` |
| 5 | SET | `ekk0821a010IN.set(KEY_OP_SVC_CD, ekk0351a010INOUT[0].getString(OP_SVC_CD))` |
| 6 | SET | `ekk0821a010IN.set(KEY_RSV_APLY_YMD, opeDate)` |
| 7 | CALL | `ekk0821a010OUT = callSC(handle, scCall, param, dataMapKey, ekk0821a010IN)` |

**Block 4.4.1** — [IF] Digital tier group code is not null (L827-832)

| # | Type | Code |
|---|------|------|
| 1 | IF | `!ekk0821a010OUT[0].isNull(DGTIA_GRP_CD)` |
| 2 | SET | `digitalTiaMap = new HashMap<String, Object>()` |
| 3 | SET | `digitalTiaMap.put("wc01611_dgtia_grp_cd", ekk0821a010OUT[0].getString(DGTIA_GRP_CD))` |
| 4 | EXEC | `digitalTiaList.add(digitalTiaMap)` |

**Block 5** — [CALL] EKK0161A010 — Service Contract Details Match (L845-850)

After the loop, calls EKK0161A010 to retrieve the main service contract details, including the fee course code.

| # | Type | Code |
|---|------|------|
| 1 | SET | `ekk0161a010IN = new CAANMsg(EKK0161A010CBSMsg.class.getName())` |
| 2 | SET | `ekk0161a010IN.set(TEMPLATEID, TEMPLATE_ID_EKK0161A010 = "EKK0161A010")` |
| 3 | SET | `ekk0161a010IN.set(FUNC_CODE, "2")` |
| 4 | SET | `ekk0161a010IN.set(KEY_SVC_KEI_UCWK_NO, svcUcwkNo)` |
| 5 | SET | `ekk0161a010IN.set(KEY_RSV_APLY_YMD, opeDate)` |
| 6 | CALL | `ekk0161a010OUT = callSC(handle, scCall, param, dataMapKey, ekk0161a010IN)` |

**Block 6** — [CALL] EKK0791A010 — Fee Course Match Inquiry (L853-858)

Queries the fee course details using the course code obtained from EKK0161A010. This provides a second source of digital tier group code.

| # | Type | Code |
|---|------|------|
| 1 | SET | `ekk0791a010IN = new CAANMsg(EKK0791A010CBSMsg.class.getName())` |
| 2 | SET | `ekk0791a010IN.set(TEMPLATEID, TEMPLATE_ID_EKK0791A010 = "EKK0791A010")` |
| 3 | SET | `ekk0791a010IN.set(FUNC_CODE, "2")` |
| 4 | SET | `ekk0791a010IN.set(KEY_PCRS_CD, ekk0161a010OUT[0].getString(PCRS_CD))` |
| 5 | SET | `ekk0791a010IN.set(KEY_RSV_APLY_YMD, opeDate)` |
| 6 | CALL | `ekk0791a010OUT = callSC(handle, scCall, param, dataMapKey, ekk0791a010IN)` |

**Block 7** — [SET] Collect digital tier group code from fee course (L860-861)

Adds the digital tier group code from the fee course inquiry to the result list, complementing the codes gathered during the loop.

| # | Type | Code |
|---|------|------|
| 1 | SET | `digitalTiaMap = new HashMap<String, Object>()` |
| 2 | SET | `digitalTiaMap.put("wc01611_dgtia_grp_cd", ekk0791a010OUT[0].getString(DGTIA_GRP_CD))` |
| 3 | EXEC | `digitalTiaList.add(digitalTiaMap)` |

**Block 8** — [SET] Extract STB IDs from ucwkInfo (L862-863)

Retrieves set-top box identifiers from the work info map.

| # | Type | Code |
|---|------|------|
| 1 | SET | `bcasStbId = ucwkInfo.get("C010")` // STB ID (BCAS chip ID) |
| 2 | SET | `ccasStbId = ucwkInfo.get("C011")` // STB ID (CCAS chip ID) |

**Block 9** — [SET] Assemble viewing control order payload (L866-877)

Builds the complete output map with all required viewing control order fields.

| # | Type | Code |
|---|------|------|
| 1 | SET | `outMap.put("wc0011d_wctrl_req_trn_cd", WCTRL_REQ_TRN_CD_SVC_KAIHK = "26")` [-> "26" (Service Contract Recovery)] |
| 2 | SET | `outMap.put("wc0011d_sysid", ccMsg.get("sysid"))` // System ID from caller |
| 3 | SET | `outMap.put("wc0011d_svc_kei_no", ccMsg.get("svc_kei_no"))` // Service line number |
| 4 | SET | `outMap.put("wc0011d_svc_kei_ucwk_no", svcUcwkNo)` // Service contract line work number |
| 5 | SET | `outMap.put("wca001_key_tk_mdl_cd", ucwkInfo.get("C009_MODEL"))` // Set-top box model code |
| 6 | SET | `outMap.put("wca001_key_kk_seizo_no", ucwkInfo.get("C009"))` // Set-top box serial number |
| 7 | SET | `outMap.put("wc01611_EWC0161D010CBSMsg1List", digitalTiaList)` // Digital tier group codes |
| 8 | SET | `outMap.put("func_code", funcCode)` // Function code from caller |

**Block 10** — [CALL] Send viewing control order (L879)

Delegates to the order sending component for downstream processing.

| # | Type | Code |
|---|------|------|
| 1 | CALL | `orderSendCC.sendWctrlOrder(handle, param, workOrderSendDataKey)` |

**Block 11** — [EXEC] Cleanup (L881)

Removes the temporary work data from the parameter object.

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `param.removeData(workOrderSendDataKey)` |

## 7. Glossary

| Term | Type | Business Meaning |
|------|------|------------------|
| `svcUcwkNo` | Field | Service contract line item work number — internal tracking ID for the specific service contract line being recovered |
| `ucwkInfo` | Field | Work information HashMap carrying per-line item context including device identifiers |
| `C009` | Field | Set-top box serial number (製造番号) — hardware identification for the customer's set-top box |
| `C009_MODEL` | Field | Set-top box model code — identifies the make/model of the set-top box |
| `C010` | Field | BCAS STB ID — identifier for the BCAS (Broadcast Content Access System) chip in the set-top box |
| `C011` | Field | CCAS STB ID — identifier for the CCAS (Content Control and Access System) chip in the set-top box |
| `func_code` | Field | Function code — caller-supplied value that determines the mode of operation (e.g., data gathering only vs. full execution) |
| `sysid` | Field | System ID — identifies the originating system or subsystem |
| `svc_kei_no` | Field | Service line number — identifies the specific TV service line in the customer's subscription |
| `WCTRL_REQ_TRN_CD_SVC_KAIHK` | Constant | Viewing control request transmission code for service contract recovery — value "26" |
| EKK0351B001 | SC Code | eo TV Option Channel Info List (eo光テレビオプションチャンネル情報一覧照会) — retrieves the list of option channels/subscriptions associated with a service line |
| EKK0351A010 | SC Code | Option Service Contract Agreement (オプションサービス契約同意照会) — retrieves details and status of an option service line |
| EKK1681B001 | SC Code | Movement Reservation Agreement (異動予約同意照会) — retrieves reservation/agreement details for service changes; used as a fallback to obtain service start date |
| EKK0821A010 | SC Code | Option Service Agreement (オプションサービス同意照会) — retrieves option service agreement details including digital tier group codes |
| EKK0161A010 | SC Code | Service Contract Details Match (サービス契約内容同意照会) — retrieves service contract line details including fee course code |
| EKK0791A010 | SC Code | Fee Course Match Inquiry (料金コース同意照会) — retrieves fee course details including digital tier group codes |
| `OP_SVC_KEI_STAT` | Field | Option service contract line status — "100" means Active (有効), "030" means Stopped (停止中) |
| `SVC_STAYMD` | Field | Service start year/month/day (サービス開始年月日) — when the service began; may be null in some contract states |
| `RSV_APLY_YMD` | Field | Reservation application year/month/day (予約申請年月日) — the date the movement/reservation request was filed; used as a fallback for service start date |
| `DGTIA_GRP_CD` | Field | Digital tier group code (デジタルティアグループコード) — classifies the customer's digital subscription tier (e.g., premium, basic) |
| `PCRS_CD` | Field | PCRS (Preserved Course) code — identifies the customer's fee/coursing plan |
| `digitalTiaList` | Field | List of digital tier group codes collected from option services and fee course, used to determine viewing control parameters |
| OP_SVC_KEI_NO | Field | Option service contract line number |
| OP_SVC_CD | Field | Option service code |
| `subtractDay` | Method | Computes the difference in days between two date strings (yyyy-MM-dd format) |
| JKKWctrlOrderSendCC | Class | Viewing control order sending common component — handles downstream mapping, IF execution, order dispatch, and result registration for viewing control orders |
| 視聴制御オーダ | Business term | Viewing control order — a command issued to control (suspend/recover) a customer's ability to view TV content |
| 視聴制御依頼処理コード | Business term | Viewing control request processing code — a classification code (e.g., "26" for service contract recovery) that determines the type of viewing control action |
| 休止中への回復 | Business term | Recovery from suspension — the process of restoring a suspended/stopped service contract to active status |
| eo光テレビ | Business term | eo Hikari TV — K-Opticom's fiber-to-the-home IPTV service brand |
| CAANMsg | Technical type | CAAN message container — the framework's standardized message format for CBS request/response data exchange |
| SC Code | Technical abbreviation | Service Component Code — the naming convention `EKKxxxxA010SC` or `EKKxxxxB001CBS` that uniquely identifies a service component or common business service |
