# Business Logic — JKKOpsvkeiTelIktAddCC.mainProc() [678 LOC]

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

## 1. Role

### JKKOpsvkeiTelIktAddCC.mainProc()

This method is the **central orchestration routine for the K-Opticom telephone service one-stop registration** (電話サービス一括登録), a core telecom order fulfillment workflow. It handles the complete lifecycle of registering a new **Option Service Contract (Telephone)** (オプションサービス契約〈電話〉) including all its subordinate service details and sub-option services, coordinating with 17 distinct Service Components (SCs) to manage the service contract, service detail agreement, device provisioning, content acceptance, and activation processes.

The method implements a **routing/dispatch pattern**: it first validates the service contract hierarchy by calling agreement/confirmation SCs (EKK0081A010, EKK0161A010, EKK0341B002, EKK0251B003), then branches based on content acceptance status (`isShosazumi`) to conditionally execute registration and post-processing steps. Within its main processing loop (iterating over `jkkOpsvkeiTelIktAddCCList`), it applies a **multi-branch delegation pattern** to handle two service types — **Option Services** (メインオプションサービス) and **Sub-Option Services** (サブオプションサービス) — each with its own registration, billing notification, check-close, and activation flows.

The method also manages the **SOD (Service Order Data) issuance flag**, determining whether a service can trigger SOD issuance based on VLAN-ID fix status, device manufacturing number, and the service type (particularly the Tenso/Bundled service B024). Upon completion, it delegates the actual SOD issuance to `JKKHakkoSODCC.hakkoSOD()`.

## 2. Processing Pattern (Detailed Business Logic)

```mermaid
flowchart TD
    START(["mainProc params"])
    START --> INIT["Initialize variables wkResultHash"]
    INIT --> STEP1["Step1 Service Contract Agreement Call EKK0081A010"]
    STEP1 --> CHECK1{statusCode != 0}
    CHECK1 -->|"Yes"| RET1["Return statusCode"]
    CHECK1 -->|"No"| GET_SVC_STAT["Get svcKeiStat from wkResultHash"]
    GET_SVC_STAT --> STEP2["Step2 Service Contract Detail Agreement Call EKK0161A010"]
    STEP2 --> CHECK2{statusCode != 0}
    CHECK2 -->|"Yes"| RET2["Return statusCode"]
    CHECK2 -->|"No"| GET_SVC_UCWK["Get svcKeiUcwkStat from wkResultHash"]
    GET_SVC_UCWK --> STEP3["Step3 Device Provision Service Contract List EKK0341B002"]
    STEP3 --> CHECK3{statusCode != 0}
    CHECK3 -->|"Yes"| RET3["Return statusCode"]
    CHECK3 -->|"No"| GET_KIKI["Get kikiSeizoNo from EKK0341B002 result"]
    GET_KIKI --> STEP4["Step4 Service Contract Line Detail List EKK0251B003"]
    STEP4 --> CHECK4{ekk0251b003Hash not empty}
    CHECK4 -->|"No"| SKIP_FALLBACK["Skip VLAN check fallback"]
    CHECK4 -->|"Yes"| CHECK_KIKI{kikiSeizoNo valid}
    CHECK_KIKI -->|"No"| FALLBACK["Call EKK0341B504 fallback search multi-function router"]
    CHECK_KIKI -->|"Yes"| SKIP_FALLBACK
    FALLBACK --> FIND_KIKI["Find kikiSeizoNo from fallback result"]
    FIND_KIKI --> VLAN_CHECK["vlanIdFixFlg equals 1 AND kikiSeizoNo set"]
    VLAN_CHECK -->|"Yes"| SET_SOD_FLG["sodHakkoFlg true"]
    VLAN_CHECK -->|"No"| SKIP_SOD["sodHakkoFlg stays false"]
    SKIP_SOD --> CHECK5{isShosazumi svcKeiStat}
    SET_SOD_FLG --> CHECK5
    SKIP_FALLBACK --> CHECK5
    CHECK5 -->|"Yes"| SHOSAZUMI1["Step5 Content Acceptance Registration EKK0011D020"]
    SHOSAZUMI1 --> SET_IDO_DTM["Set IDO_DTM current timestamp"]
    SET_IDO_DTM --> CHECK6{statusCode != 0}
    CHECK6 -->|"Yes"| RET6["Return statusCode"]
    CHECK6 -->|"No"| CHECK7{isShosazumi svcKeiStat}
    CHECK5 -->|"No"| LOOP_START["Loop iterate jkkOpsvkeiTelIktAddCCList"]
    CHECK7 -->|"Yes"| CHECK8["Step6 Content Check Post-processing Request EKK0021C060"]
    CHECK7 -->|"No"| LOOP_START
    CHECK8 --> LOOP_START
    LOOP_START --> GET_ITEM["Get list item jkkOpsvkeiTelIktAddCC"]
    GET_ITEM --> IS_SVC{isSvcKei item}
    IS_SVC -->|"Yes"| TWRYO_CHECK{isTwryoStiam AND op_svc_kei_no set}
    IS_SVC -->|"No"| SUBOP["Sub-ops processing branch"]
    TWRYO_CHECK -->|"Yes"| CALL_371A["Step7 Call EKK0371A010 Service Agreement Call"]
    TWRYO_CHECK -->|"No"| TWRYO_NOT_EXIST{existTwryoStiam}
    CALL_371A --> CMP_STIAM{twryo_stiam DB matches input}
    CMP_STIAM -->|"No"| SET_TWRYO_FLG["existTwryoFlg true"]
    CMP_STIAM -->|"Yes"| SET_PRG_FLG["prgExecFlg false"]
    SET_TWRYO_FLG --> SET_EXIST_TWRYO["existTwryoStiam true"]
    SET_PRG_FLG --> SET_EXIST_TWRYO
    SET_EXIST_TWRYO --> TWRYO_EXIST{existTwryoStiam}
    TWRYO_EXIST -->|"Yes"| EXIST_TWRYO_CHECK{existTwryoFlg}
    TWRYO_EXIST -->|"No"| TWRYO_NOT_EXIST
    EXIST_TWRYO_CHECK -->|"Yes"| CALL_371C050["Step8a EKK0371C050 Info Change + EAC0401C020 Billing Notification"]
    EXIST_TWRYO_CHECK -->|"No"| CALL_371D010["Step8b EKK0371D010 Registration"]
    CALL_371C050 --> TEIKETSU{svcKeiUcwkStat Teiketsuzumi}
    CALL_371D010 --> TEIKETSU
    TEIKETSU -->|"Yes"| CALL_371C030["Step9a EKK0371C030 Check Close"]
    TEIKETSU -->|"No"| TEIKYO{svcKeiUcwkStat Teikyo}
    TEIKETSU -->|"No"| CALL_371C010["Step9c EKK0371C010 Check"]
    CALL_371C030 --> TEIKYO
    TEIKYO -->|"Yes"| ENABLE_CHECK{isEnabledStartOption}
    TEIKYO -->|"No"| CALL_371C010
    ENABLE_CHECK -->|"Yes"| CALL_371C040["Step10 EKK0371C040 Start Activation"]
    TEIKYO -->|"No"| CALL_371C010
    CALL_371C040 --> CALL_0821["Step11 EKK0821A010 Service Agreement Call"]
    ENABLE_CHECK -->|"No"| CALL_0821
    CALL_371C010 --> CALL_0821
    CALL_0821 --> OP_NAME["Build prgTkjk1 opSvcNm plus progress notes"]
    OP_NAME --> NEXT_ITEM["Next iteration"]
    TWRYO_NOT_EXIST --> NEXT_ITEM
    SUBOP --> GET_SBOP["Get sbOpSvcCd op_svc_kei_no kk0351_gene_add_dtm"]
    GET_SBOP --> CALL_431D["Step8 EKK0431D010 Sub-ops Registration"]
    CALL_431D --> S_TEIKETSU{svcKeiUcwkStat Teiketsuzumi}
    S_TEIKETSU -->|"Yes"| CALL_431C030_2["Step9a EKK0431C030 Check Close"]
    S_TEIKETSU -->|"No"| CALL_431C010_2["Step9c EKK0431C010 Check"]
    S_TEIKETSU -->|"No"| S_TEIKYO{svcKeiUcwkStat Teikyo}
    CALL_431C030_2 --> S_TEIKYO
    S_TEIKYO -->|"Yes"| CALL_431C040_2["Step10 EKK0431C040 Start"]
    S_TEIKYO -->|"No"| CALL_431C010_2
    CALL_431C010_2 --> CALL_0831["Step11 EKK0831A010 Sub-ops Agreement Call"]
    CALL_431C040_2 --> CALL_0831
    CALL_0831 --> SBOP_NAME["Build prgTkjk1 sbOpSvcNm plus progress notes"]
    SBOP_NAME --> NEXT_ITEM
    NEXT_ITEM --> POST_LOOP{All items processed}
    POST_LOOP -->|"No"| GET_ITEM
    POST_LOOP -->|"Yes"| SOD_CHECK["sodTerm.put opSvcCd SOD eligibility"]
    SOD_CHECK --> CACHE_RESULT["CASH_RESULTS.add wkResultHash"]
    CACHE_RESULT --> CLEAR_HASH["Clear wkResultHash template entries"]
    CLEAR_HASH --> EDIT_SOD["editHakkoSODccMap"]
    EDIT_SOD --> CALL_SOD["new JKKHakkoSODCC hakkoSOD handle param KKSV005003CC"]
    CALL_SOD --> END_NODE(["Return statusCode"])
    RET1 --> END_NODE
    RET2 --> END_NODE
    RET3 --> END_NODE
    RET6 --> END_NODE
```

**Branch Summaries:**

- **Pre-loop SC calls (Step 1–4)**: Always executed sequentially. Each SC call checks for non-zero `statusCode` and returns immediately on failure.
- **Content acceptance check (`isShosazumi(svcKeiStat)`)**: If the service contract status indicates pending content acceptance, the method registers the content acceptance (EKK0011D020) and requests the post-processing check (EKK0021C060).
- **Fallback multi-function router lookup (ANK-3754)**: If the device manufacturing number (`kikiSeizoNo`) is empty and the service line detail list is available, a fallback SC (EKK0341B504) searches for multi-function router records with service type `C024` (TakinoRort/Telecom) or `C025` (HGW/Home Gateway) having status below `910`.
- **SOD issuance flag**: Set to `true` when VLAN-ID is fixed (`vlanIdFixFlg == "1"`) AND a device manufacturing number exists.
- **Main loop — Option Service branch (`isSvcKei == true`)**: For each Option Service item, handles three sub-branches:
  - **Billing amount reach notification (B072)**: If the service code is `B072` (通話指定額到達通知 / Call Allowance Limit Reach Notification) and an option service contract number exists, calls EKK0371A010, compares DB vs. input billing amounts, and conditionally updates (EKK0371C050) or registers (EKK0371D010).
  - **Registration without billing notification**: Calls EKK0371D010, then follows the service detail status chain (Check Close → Check/Check Close → Start Activation).
  - **Sub-Option Service branch (`isSvcKei == false`)**: Same flow structure but uses Sub-Option SCs (EKK0431* series) and calls EKK0831A010 for the service agreement lookup instead of EKK0821A010.

## 3. Parameter Analysis

| No | Parameter Name | Type | Business Description |
|----|---------------|------|---------------------|
| 1 | `handle` | `SessionHandle` | Database session handle carrying transaction context, connection pooling, and system identity. Used by all SC invocations and SOD issuance. |
| 2 | `param` | `IRequestParameterReadWrite` | Request parameter object containing the model group data map and control flow map. Carries the screen-level input data (`KKSV005001CC`) and is modified with results during processing (e.g., `uno_dtm`, error mappings). |
| 3 | `requestParam` | `HashMap<String, Object>` | Business data parameter map derived from the screen request. Contains the `JKKOpsvkeiTelIktAddCCList` (list of service contract items to process), operational date (`unyo_ymd`), and other request-scoped business fields. |
| 4 | `fixedText` | `String` | User-designated fixed text string (任意文字列) used as the `dataMapKey` for the progress registration service agreement calls (EKK0821A010 / EKK0831A010). Carries custom tracking/annotation text for progress status entries. |

**Instance Fields / External State Read:**

| Field | Type | Business Description |
|-------|------|---------------------|
| `CASH_RESULTS` | `ArrayList<HashMap<String, Object>>` (static) | Cache for intermediate result hashes — accumulates results across all loop iterations, used as the final output for SOD issuance. |
| `opSvcKeiKeyMap` | `Map<String, String[]>` | Option service contract key map holding `op_svc_kei_no` and `kk0351_gene_add_dtm` pairs for sub-option lookups. |
| `sodTerm` | `Map<String, Boolean>` | SOD issuance eligibility map indexed by `op_svc_cd`, computed per loop iteration. |
| `oPE_DATE` | `String` | Operational date set by the caller (`execute()`) via `JCCBPCommon.getOpeDate()`. |

## 4. CRUD Operations / Called Services

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

| CRUD | SC / CBS | SC Code | Entity / DB | Operation Description |
|------|----------|---------|-------------|----------------------|
| R | `callEKK0081A010SC` | EKK0081A010SC | KK_T_SVC_KEI, KK_M_SVC_STAT | Reads service contract agreement data and status for the target contract number. Validates the contract exists before proceeding. |
| R | `callEKK0161A010SC` | EKK0161A010SC | KK_T_SVC_KEI_UCWK, KK_M_SVC_UCWK_STAT | Reads service contract detail (line item) agreement data. Retrieves the service detail status (Teikyo/Shosazumi/etc.) for branch determination. |
| R | `callEKK0341B002SC` | EKK0341B002SC | KK_T_SVC_KEI, KK_T_KIKI_SEIZO_NO | Reads device provision service contract list filtered by service contract number. Obtains the device manufacturing number (kikiSeizoNo) for SOD eligibility. |
| R | `callEKK0251B003SC` | EKK0251B003SC | KK_T_SVC_KEI_KAISEN_UCWK, KK_T_VLAN | Reads service contract line detail list for currently active contracts. Includes VLAN-ID fix flag and line routing detail. |
| R | `callEKK0341B504SC` | EKK0341B504SC | KK_T_SVC_KEI, KK_T_KIKI_SEIZO_NO | Fallback SC: reads all device provision records to find a multi-function router (C024/C025) with status below 910. Used when primary device manufacturing number lookup fails. |
| C | `callEKK0011D020SC` | EKK0011D020SC | KK_T_ODR_HAKKO_JOKEN | Registers content acceptance (申込み内容承認登録) when the service contract status requires it. Sets the异动 timestamp (ido_dtm). |
| R | `callEKK0021C060SC` | EKK0021C060SC | KK_T_ODR_HAKKO_JOKEN, KK_T_IDO_RSN | Requests content check and post-processing (申込み内容照会・後続業務依頼). Verifies pending content items and delegates subsequent processing. |
| R | `callEKK0371A010SC` | EKK0371A010SC | KK_T_OP_SVC_KEI, KK_T_TWRYO_STIAM | Reads Option Service (Telephone) agreement data and existing billing amount (twryo_stiam_ttu_tchi_stiam). Used in the billing reach notification flow. |
| U | `callEKK0371C050SC` | EKK0371C050SC | KK_T_OP_SVC_KEI, KK_T_TWRYO_STIAM | Updates Option Service (Telephone) information when the billing amount input differs from the database value. |
| C | `callEKK0371D010SC` | EKK0371D010SC | KK_T_OP_SVC_KEI | Registers a new Option Service (Telephone) contract line item. Called when no billing reach notification exists. |
| C | `callEAC0401C020SC` | EAC0401C020SC | KK_T_EOH_TEL_SUMMIT | Updates the EO (eo光) telephone aggregate billing exceedance notification code. Invoked when billing amount has been changed. |
| C | `callEKK0371C030SC` | EKK0371C030SC | KK_T_OP_SVC_KEI | Performs check-close for Option Service (Telephone) when service detail status is "Teiketsuzumi" (締結済 / Contract finalized). |
| C | `callEKK0371C010SC` | EKK0371C010SC | KK_T_OP_SVC_KEI | Performs check for Option Service (Telephone) when service detail status is "Shosazumi" (申込済 / Pending). |
| C | `callEKK0371C040SC` | EKK0371C040SC | KK_T_OP_SVC_KEI, KK_T_SVC_KEI | Activates/starts Option Service (Telephone) when service detail status is "Teikyo" (提供中 / Service in progress). |
| R | `callEKK0821A010` | EKK0821A010SC | KK_T_OP_SVC | Service agreement call for Option Services. Retrieves the option service name (op_svc_nm) for progress registration. |
| R | `callEKK1091D010SC` | EKK1091D010SC | KK_T_PRG_TKJK | Registers progress status entries (5101: Option Info Application / 5102: Option Setup Complete). |
| R | `callEKK0821A010` | EKK0821A010SC | KK_T_OP_SVC | Retrieves option service name for progress notes after Option Service processing. |
| R | `callEKK0831A010` | EKK0831A010SC | KK_T_SBOP_SVC | Retrieves sub-option service name (sbop_svc_nm) for progress notes after Sub-Option Service processing. |
| C | `callEKK0431D010SC` | EKK0431D010SC | KK_T_SBOP_SVC_KEI | Registers a new Sub-Option Service (Telephone) contract line item. |
| C | `callEKK0431C030SC` | EKK0431C030SC | KK_T_SBOP_SVC_KEI | Performs check-close for Sub-Option Service when service detail status is "Teiketsuzumi". |
| C | `callEKK0431C010SC` | EKK0431C010SC | KK_T_SBOP_SVC_KEI | Performs check for Sub-Option Service when service detail status is "Shosazumi". |
| C | `callEKK0431C040SC` | EKK0431C040SC | KK_T_SBOP_SVC_KEI, KK_T_SVC_KEI | Activates/starts Sub-Option Service when service detail status is "Teikyo". |

**Called utility/helper methods (no DB access):**

| Method | Purpose |
|--------|---------|
| `JACBatCommon.isNull()` | Null check utility |
| `JACbatRknBusinessUtil.isNull()` | Null check utility |
| `JCHbatSeikyKaknoBusinessUtil.isNull()` | Null check utility |
| `JBSbatACInsentetivePrcInfoSaksei.isNull()` | Null check utility |
| `JBSbatAKCHSeikyYsoInfMake.isNull()` | Null check utility |
| `JBSbatFUCaseFileRnkData.getString()` | String extraction utility |
| `JBSbatFUMoveNaviData.getString()` | String extraction utility |
| `JBSbatZMAdDataSet.getString()` | String extraction utility |
| `JCCBatCommon.getSysDateTimeStamp()` | System timestamp |
| `JCCBPCommon.getSysDateTimeStamp()` | System timestamp |
| `getLastUpdDtm()` | Retrieves latest update timestamp from result hash |
| `setSvKeiUpdDtm()` | Sets service contract update timestamp for control |
| `setOpSvcKeiKeyMap()` / `setOpSvcKeiKeyMapFromUpd()` | Updates option service key map after contract update |
| `setSbopSvcKeiKeyMap()` | Updates sub-option service key map after contract update |
| `editHakkoSODccMap()` | Prepares SOD issuance parameter map |
| `isEnabledStartOption()` | Checks if option start is available (ANK-3754: Tobirafon対応) |

## 5. Dependency Trace

| # | Caller (Screen/Batch) | Call Chain (Full Path to this Method) | Terminal (SC / CRUD / Entity) |
|---|----------------------|--------------------------------------|-------------------------------|
| 1 | Screen:KKSV0050 (via execute()) | `JKKOpsvkeiTelIktAddCC.execute()` -> `mainProc()` | `hakkoSOD [-]`, `editHakkoSODccMap [U]`, `callEKK1091D010SC [C] KK_T_PRG_TKJK`, `getString [R]`, `callEKK0831A010 [-]`, `setSbopSvcKeiKeyMap [-]`, `setSvKeiUpdDtm [-]`, `callEKK0431C010SC [C] KK_T_SBOP_SVC_KEI`, `callEKK0431C030SC [C] KK_T_SBOP_SVC_KEI`, `callEKK0431C040SC [C] KK_T_SBOP_SVC_KEI`, `callEKK0431D010SC [C] KK_T_SBOP_SVC_KEI`, `callEKK0371A010SC [R] KK_T_OP_SVC_KEI`, `callEKK0371C010SC [C] KK_T_OP_SVC_KEI`, `callEKK0371C030SC [C] KK_T_OP_SVC_KEI`, `callEKK0371C040SC [C] KK_T_OP_SVC_KEI`, `callEKK0371C050SC [U] KK_T_OP_SVC_KEI`, `callEKK0371D010SC [C] KK_T_OP_SVC_KEI`, `callEAC0401C020SC [C] KK_T_EOH_TEL_SUMMIT`, `callEKK0011D020SC [C] KK_T_ODR_HAKKO_JOKEN`, `callEKK0021C060SC [R] KK_T_ODR_HAKKO_JOKEN`, `callEKK0081A010SC [R] KK_T_SVC_KEI`, `callEKK0161A010SC [R] KK_T_SVC_KEI_UCWK`, `callEKK0251B003SC [R] KK_T_SVC_KEI_KAISEN_UCWK`, `callEKK0341B002SC [R] KK_T_SVC_KEI`, `callEKK0341B504SC [R] KK_T_SVC_KEI` |

**Terminal operations trace (all endpoints reached FROM this method):**

- `hakkoSOD` — JKKHakkoSODCC (SOD issuance, delegates to JKKAdchgHakkoSODCC / JKKHakkoSODCC / JFUSetVariTsushinKikiMskmCC)
- `editHakkoSODccMap` — Prepares SOD parameter map [U]
- `callEKK1091D010SC` — Progress registration [C]
- `callEKK0831A010` — Sub-option service agreement call [R]
- `getString` — Data extraction [R] (multiple utility sources)
- `setSbopSvcKeiKeyMap` — Key map update [-]
- `setSvKeiUpdDtm` — Timestamp update [-]
- `callEKK0431C010SC` — Sub-option check [C]
- `callEKK0431C030SC` — Sub-option check close [C]
- `callEKK0431C040SC` — Sub-option start [C]
- `callEKK0431D010SC` — Sub-option registration [C]
- `isSvcKei` — Branch determination [-]
- `isShosazumi` — Pending status check [-]
- `callEKK0371A010SC` — Option service agreement read [R]
- `setSbopSvcKeiKeyMap` — Sub-option key map update [-]
- `setSvKeiUpdDtm` — Update timestamp [-]
- `callEKK0371C010SC` — Option service check [C]
- `isShosazumi` — Pending status check [-]
- `setSbopSvcKeiKeyMap` — Key map update [-]
- `setSvKeiUpdDtm` — Update timestamp [-]

## 6. Per-Branch Detail Blocks

**Block 1** — [SET/INIT] `(Initialization)` (L372)

> Initializes working variables, caches, and the result hash map before processing begins.

| # | Type | Code |
|---|------|------|
| 1 | SET | `wkResultHash = new HashMap<String, Object>()` |
| 2 | SET | `jkkOpsvkeiTelIktAddCCList = null` |
| 3 | SET | `statusCode = 0` |
| 4 | SET | `svcKeiStat = ""` (サービス契約ステータス) |
| 5 | SET | `svcKeiUcwkStat = ""` (サービス契約内詳ステータス) |
| 6 | SET | `sodHakkoFlg = false` (SOD発行フラグ) |
| 7 | SET | `prgTkjk1 = ""` (進捗特記事項1) |
| 8 | SET | `opSvcNm = ""` (オプションサービス名) |

**Block 2** — [CALL + RETURN CHECK] `(Step 1: Service Contract Agreement EKK0081A010)` (L393)

> Calls the service contract agreement inquiry SC. If the service contract does not exist or the inquiry fails, returns immediately.

| # | Type | Code |
|---|------|------|
| 1 | CALL | `callEKK0081A010SC(param, handle, requestParam, wkResultHash)` |
| 2 | IF | `statusCode != 0` → return statusCode |
| 3 | SET | `svcKeiInfo = wkResultHash.get(TEMPLATE_ID_EKK0081A010)` |
| 4 | SET | `svcKeiStat = svcKeiInfo.get(SVC_KEI_STAT)` |
| 5 | IF | `wkResultHash != null` → SET `requestParam.put(EX_UPD_DTM, getLastUpdDtm(...))` |

**Block 3** — [CALL + RETURN CHECK] `(Step 2: Service Contract Detail Agreement EKK0161A010)` (L414)

> Calls the service contract detail (line item) agreement SC. Retrieves the service detail status.

| # | Type | Code |
|---|------|------|
| 1 | CALL | `callEKK0161A010SC(param, handle, requestParam, wkResultHash)` |
| 2 | IF | `statusCode != 0` → return statusCode |
| 3 | SET | `svcKeiUcwkInfo = wkResultHash.get(TEMPLATE_ID_EKK0161A010)` |
| 4 | SET | `svcKeiUcwkStat = svcKeiUcwkInfo.get(SVC_KEI_UCWK_STAT)` |

**Block 4** — [CALL + RETURN CHECK] `(Step 3: Device Provision Service Contract List EKK0341B002)` (L430)

> Calls the device provision service contract list SC filtered by the service contract number. Retrieves the device manufacturing number (kikiSeizoNo) from the result.

| # | Type | Code |
|---|------|------|
| 1 | CALL | `callEKK0341B002SC(param, handle, requestParam, wkResultHash)` |
| 2 | IF | `statusCode != 0` → return statusCode |
| 3 | SET | `eKK0341B002Hash = wkResultHash.get(TEMPLATE_ID_EKK0341B002)` |
| 4 | IF | `eKK0341B002Hash != null` → SET `kikiSeizoNo = eKK0341B002Hash.get(KIKI_SEIZO_NO)` |
| 5 | SET | `kk0341b002CbsMsg1List = (CAANMsg[])wkResultHash.get(ALLDATA_EKK0341B002)` |
| 6 | SET | `kk0341b504 = null` |

**Block 5** — [CALL + CONDITIONAL BLOCK] `(Step 4: Service Contract Line Detail EKK0251B003)` (L449)

> Calls the service contract line detail list (currently in-use). This block contains the SOD eligibility determination logic and the ANK-3754 fallback device lookup.

| # | Type | Code |
|---|------|------|
| 1 | CALL | `callEKK0251B003SC(param, handle, wkResultHash, svcKeiInfo.get(SVC_KEI_NO))` |
| 2 | SET | `ekk0251b003Hash = wkResultHash.get(TEMPLATE_ID_EKK0251B003)` |
| 3 | IF | `ekk0251b003Hash != null && ekk0251b003Hash.size() > 0` |

**Block 5.1** — [IF] `(Fallback multi-function router search)` (ANK-3754, L467)

> If the device manufacturing number (`kikiSeizoNo`) is empty/missing, calls EKK0341B504 to search all device provision records for multi-function router records (C024 TakinoRort or C025 HGW) with status below 910.

| # | Type | Code |
|---|------|------|
| 1 | IF | `kikiSeizoNo == null || kikiSeizoNo.length < 1` → [KKTK_SVC_CD_TAKINORT="C024"] [KKTK_SVC_CD_HGW="C025"] |
| 2 | SET | `kk0251No = ekk0251b003Hash.get(EKK0251B003CBSMsg1List.SVC_KEI_KAISEN_UCWK_NO)` |
| 3 | CALL | `callEKK0341B504SC(param, handle, kk0251No, wkResultHash)` |
| 4 | SET | `ekk0341b504List = wkResultHash.get("EKK0341B504")` |
| 5 | FOR | `i = 0; i < ekk0341b504List.size(); i++` |

**Block 5.1.1** — [FOR] `(Iterate fallback device records)` (L471)

| # | Type | Code |
|---|------|------|
| 1 | SET | `childMap = ekk0341b504List.get(i)` |
| 2 | SET | `kk0341Stat = childMap.get(EKK0341B504CBSMsg1List.KKTK_SVC_KEI_STAT)` |
| 3 | SET | `kktkSvcCd = childMap.get(EKK0341B504CBSMsg1List.KKTK_SVC_CD)` |
| 4 | IF | `KKTK_SVC_CD_TAKINORT="C024".equals(kktkSvcCd) && "910".compareTo(kk0341Stat) > 0` |
| 4 | OR | `KKTK_SVC_CD_HGW="C025".equals(kktkSvcCd) && "910".compareTo(kk0341Stat) > 0` |
| 5 | SET | `kk0341b504 = childMap` |
| 6 | SET | `kikiSeizoNo = childMap.get(KIKI_SEIZO_NO)` |
| 7 | BREAK | break loop |

**Block 5.2** — [IF] `(SOD issuance flag determination)` (L492)

> If VLAN-ID fix flag is "1" (VLAN-ID-fix completed) AND a device manufacturing number is set, enable the SOD issuance flag.

| # | Type | Code |
|---|------|------|
| 1 | SET | `vlanIdFixFlg = ekk0251b003Hash.get(EKK0251B003CBSMsg1List.VLAN_ID_FIX_FLG)` |
| 2 | IF | `VLAN_ID_FIX_FLG_ON="1".equals(vlanIdFixFlg) && !JKKBpCommon.isNull(kikiSeizoNo)` |
| 3 | SET | `sodHakkoFlg = true` |

**Block 6** — [IF] `(isShosazumi(svcKeiStat) — Content Acceptance Registration)` (L515)

> If the service contract status indicates "pending content acceptance", register the content acceptance and set the异动 timestamp.

| # | Type | Code |
|---|------|------|
| 1 | IF | `isShosazumi(svcKeiStat)` |
| 2 | CALL | `callEKK0011D020SC(param, handle, requestParam, wkResultHash)` |
| 3 | SET | `mapKey = TEMPLATE_ID_EKK0011D020` |
| 4 | SET | `requestParam.put(IDO_DTM, JKKBpCommon.getSysDateTimeStamp())` |
| 5 | IF | `statusCode != 0` → return statusCode |

**Block 7** — [IF] `(isShosazumi(svcKeiStat) — Content Check / Post-processing Request)` (L528)

> If the service contract status is pending content acceptance, request the content check and post-processing delegate.

| # | Type | Code |
|---|------|------|
| 1 | IF | `isShosazumi(svcKeiStat)` |
| 2 | CALL | `callEKK0021C060SC(param, handle, requestParam, wkResultHash, mapKey)` |
| 3 | IF | `statusCode != 0` → return statusCode |

**Block 8** — [FOR LOOP] `(Process each jkkOpsvkeiTelIktAddCCList item)` (L540)

> Iterates over all service contract line items. For each item, determines whether it is an Option Service or Sub-Option Service, and processes accordingly.

| # | Type | Code |
|---|------|------|
| 1 | FOR | `i = 0; i < jkkOpsvkeiTelIktAddCCList.size(); i++` |
| 2 | SET | `jkkOpsvkeiTelIktAddCC = jkkOpsvkeiTelIktAddCCList.get(i)` |
| 3 | SET | `isSokuji = unyoYmd.equals(jkkOpsvkeiTelIktAddCC.get(USE_START_YMD))` (即時適用フラグ) |
| 4 | SET | `opSvcCd = jkkOpsvkeiTelIktAddCC.get(OP_SVC_CD)` |
| 5 | SET | `isTwryoStiam = OP_SVC_CD_VALUE_TWRYO_STIAM="B072".equals(opSvcCd)` |
| 6 | SET | `existTwryoStiam = false` |
| 7 | SET | `existTwryoFlg = false` |
| 8 | SET | `prgExecFlg = true` |
| 9 | SET | `requestParam.put(USE_START_YMD, jkkOpsvkeiTelIktAddCC.get(USE_START_YMD))` |

**Block 8.1** — [IF] `(isSvcKei — Option Service branch)` (L558)

> Determines if the item is an Option Service (not a Sub-Option Service). Enters the Option Service processing flow.

| # | Type | Code |
|---|------|------|
| 1 | IF | `isSvcKei(jkkOpsvkeiTelIktAddCC)` |

**Block 8.1.1** — [IF] `(Billing amount reach notification判定 — isTwryoStiam AND op_svc_kei_no set)` (L563)

> If the item is the billing reach notification service code (`B072` — 通話指定額到達通知) AND an option service contract number (`op_svc_kei_no`) exists, call the service agreement SC and compare DB vs. input billing amounts.

| # | Type | Code |
|---|------|------|
| 1 | IF | `isTwryoStiam == true` AND `jkkOpsvkeiTelIktAddCC.get(OP_SVC_KEI_NO) != null && !"".equals(...)` |
| 2 | SET | `isSokuji = true` |
| 3 | CALL | `callEKK0371A010SC(param, handle, requestParam, jkkOpsvkeiTelIktAddCC, wkResultHash)` |
| 4 | IF | `statusCode != 0` → return statusCode |
| 5 | SET | `ekk0371a010Msg = wkResultHash.get(TEMPLATE_ID_EKK0371A010)` |
| 6 | IF | `ekk0371a010Msg != null` |
| 7 | SET | `ekk0371a010CBSMSG1 = ekk0371a010Msg1list[0].getMsgData()` |
| 8 | SET | `nowTsttStiam = jkkOpsvkeiTelIktAddCC.get(TWRYO_STIAM_TTU_TCHI_STIAM)` (画面入力値) |
| 9 | SET | `getTsttStiam = ekk0371a010CBSMSG1.get(TWRYO_STIAM_TTU_TCHI_STIAM)` (DB値) |
| 10 | IF | `ekk0371a010Msg1list != null && ekk0371a010Msg1list.length > 0` |
| 11 | IF | `!getTsttStiam.equals(nowTsttStiam)` → `existTwryoFlg = true` |
| 11 | ELSE | `prgExecFlg = false` (一致する場合、進捗出さない) |
| 12 | SET | `existTwryoStiam = true` |

**Block 8.1.2** — [IF] `(existTwryoStiam — Billing notification update path)` (L632)

> If a billing reach notification already exists, check whether the billing amount was updated. If updated, call the info change SC (EKK0371C050) and billing notification SC (EAC0401C020).

| # | Type | Code |
|---|------|------|
| 1 | IF | `existTwryoStiam == true` |
| 2 | IF | `existTwryoFlg == true` (DB != 画面入力) |
| 3 | CALL | `callEKK0371C050SC(param, handle, requestParam, jkkOpsvkeiTelIktAddCC, wkResultHash)` |
| 4 | IF | `statusCode != 0` → return statusCode |
| 5 | IF | `wkResultHash != null` → `setSvKeiUpdDtm(requestParam, wkResultHash, TEMPLATE_ID_EKK0371C050)` |
| 6 | CALL | `callEAC0401C020SC(param, handle, requestParam, wkResultHash)` |
| 7 | IF | `statusCode != 0` → return statusCode |
| 8 | EXEC | `wkResultHash.remove(TEMPLATE_ID_EKK0371D010)` (remove previous registration result) |

**Block 8.1.3** — [ELSE] `(Billing notification not present — Registration path)` (L673)

> If no billing reach notification exists, register a new Option Service (Telephone) contract via EKK0371D010.

| # | Type | Code |
|---|------|------|
| 1 | CALL | `callEKK0371D010SC(param, handle, requestParam, jkkOpsvkeiTelIktAddCC, wkResultHash)` |
| 2 | IF | `statusCode != 0` → return statusCode |
| 3 | IF | `wkResultHash != null` → `setSvKeiUpdDtm(requestParam, wkResultHash, TEMPLATE_ID_EKK0371D010)` |
| 4 | IF | `wkResultHash != null` → `setOpSvcKeiKeyMapFromUpd(opSvcCd, wkResultHash, TEMPLATE_ID_EKK0371D010)` |

**Block 8.1.3.1** — [IF] `(isTeiketsuzumi(svcKeiUcwkStat) — Check Close)` (L687)

> If the service detail status is "Teiketsuzumi" (締結済 — Contract finalized), perform the check-close step.

| # | Type | Code |
|---|------|------|
| 1 | IF | `isTeiketsuzumi(svcKeiUcwkStat)` |
| 2 | CALL | `callEKK0371C030SC(param, handle, requestParam, jkkOpsvkeiTelIktAddCC, wkResultHash)` |
| 3 | IF | `statusCode != 0` → return statusCode |
| 4 | IF | `wkResultHash != null` → `setSvKeiUpdDtm(requestParam, wkResultHash, TEMPLATE_ID_EKK0371C030)` |
| 5 | IF | `wkResultHash != null` → `setOpSvcKeiKeyMapFromUpd(opSvcCd, wkResultHash, TEMPLATE_ID_EKK0371C030)` |

**Block 8.1.3.1.1** — [IF] `(isTeikyo(svcKeiUcwkStat) — Start Activation)` (L709)

> If the service detail status is "Teikyo" (提供中 — Service in progress), check if option start is enabled and call the start SC.

| # | Type | Code |
|---|------|------|
| 1 | IF | `isTeikyo(svcKeiUcwkStat)` |
| 2 | IF | `isEnabledStartOption(handle, param, requestParam, opSvcCd, kk0341b002CbsMsg1List, kk0341b504)` |
| 3 | CALL | `callEKK0371C040SC(param, handle, requestParam, jkkOpsvkeiTelIktAddCC, wkResultHash)` |
| 4 | IF | `statusCode != 0` → return statusCode |
| 5 | IF | `wkResultHash != null` → `setSvKeiUpdDtm(requestParam, wkResultHash, TEMPLATE_ID_EKK0371C040)` |
| 6 | IF | `wkResultHash != null` → `setOpSvcKeiKeyMapFromUpd(opSvcCd, wkResultHash, TEMPLATE_ID_EKK0371C040)` |

**Block 8.1.3.2** — [ELSE-IF] `(isShosazumi(svcKeiUcwkStat) — Check)` (L731)

> If the service detail status is "Shosazumi" (申込済 — Pending), perform the check step.

| # | Type | Code |
|---|------|------|
| 1 | IF | `isShosazumi(svcKeiUcwkStat)` |
| 2 | CALL | `callEKK0371C010SC(param, handle, requestParam, jkkOpsvkeiTelIktAddCC, wkResultHash)` |
| 3 | IF | `statusCode != 0` → return statusCode |
| 4 | IF | `wkResultHash != null` → `setSvKeiUpdDtm(requestParam, wkResultHash, TEMPLATE_ID_EKK0371C010)` |
| 5 | IF | `wkResultHash != null` → `setOpSvcKeiKeyMapFromUpd(opSvcCd, wkResultHash, TEMPLATE_ID_EKK0371C010)` |

**Block 8.1.4** — [CALL] `(Progress registration — EKK0821A010 for Option Services)` (L745)

> Calls the service agreement inquiry to get the option service name, builds the progress notes string.

| # | Type | Code |
|---|------|------|
| 1 | SET | `dataMapKey = fixedText` |
| 2 | CALL | `callEKK0821A010(param, handle, dataMapKey, opSvcCd)` → `ekk0821a010OUT` |
| 3 | SET | `opSvcNm = ekk0821a010OUT[0].getString(EKK0821A010CBSMsg1List.OP_SVC_NM)` |
| 4 | SET | `prgTkjk1 = opSvcNm + PRG_TKJK_1_JYOHO + PRG_TKJK_1_TOUROKU` |

**Block 8.2** — [ELSE] `(Sub-Option Service branch)` (L762)

> Processes Sub-Option Service items. Same lifecycle structure as Option Services but uses EKK0431* series SCs.

| # | Type | Code |
|---|------|------|
| 1 | SET | `sbOpSvcCd = jkkOpsvkeiTelIktAddCC.get(SBOP_SVC_CD)` |
| 2 | SET | `op_svc_kei_no = jkkOpsvkeiTelIktAddCC.get(OP_SVC_KEI_NO)` |
| 3 | SET | `kk0351_gene_add_dtm = jkkOpsvkeiTelIktAddCC.get(PARAM_KK0351_GENE_ADD_DTM)` |
| 4 | IF | `op_svc_kei_no == null || "".equals(op_svc_kei_no)` |
| 5 | SET | `pair = opSvcKeiKeyMap.get(opSvcCd)` |
| 6 | IF | `pair != null` → `op_svc_kei_no = pair[NO_POS]`, `kk0351_gene_add_dtm = pair[GE_POS]` |
| 7 | ELSE | `setOpSvcKeiKeyMap(opSvcCd + CHBF_KEY="_CHBF", op_svc_kei_no, kk0351_gene_add_dtm)` |

**Block 8.2.1** — [CALL] `(Sub-Option Service Registration — EKK0431D010)` (L792)

| # | Type | Code |
|---|------|------|
| 1 | CALL | `callEKK0431D010SC(param, handle, requestParam, jkkOpsvkeiTelIktAddCC, wkResultHash, op_svc_kei_no)` |
| 2 | IF | `statusCode != 0` → return statusCode |
| 3 | IF | `wkResultHash != null` → `setSvKeiUpdDtm(requestParam, wkResultHash, TEMPLATE_ID_EKK0431D010)` |
| 4 | IF | `wkResultHash != null` → `setSbopSvcKeiKeyMap(sbOpSvcCd, wkResultHash, TEMPLATE_ID_EKK0431D010)` |

**Block 8.2.1.1** — [IF] `(isTeiketsuzumi(svcKeiUcwkStat) — Sub-ops Check Close)` (L811)

| # | Type | Code |
|---|------|------|
| 1 | IF | `isTeiketsuzumi(svcKeiUcwkStat)` |
| 2 | CALL | `callEKK0431C030SC(param, handle, requestParam, jkkOpsvkeiTelIktAddCC, wkResultHash)` |
| 3 | IF | `statusCode != 0` → return statusCode |
| 4 | IF | `wkResultHash != null` → `setSvKeiUpdDtm(requestParam, wkResultHash, TEMPLATE_ID_EKK0431C030)` |
| 5 | IF | `wkResultHash != null` → `setSbopSvcKeiKeyMap(sbOpSvcCd, wkResultHash, TEMPLATE_ID_EKK0431C030)` |

**Block 8.2.1.1.1** — [IF] `(isTeikyo(svcKeiUcwkStat) — Sub-ops Start)` (L835)

| # | Type | Code |
|---|------|------|
| 1 | IF | `isTeikyo(svcKeiUcwkStat)` |
| 2 | CALL | `callEKK0431C040SC(param, handle, requestParam, jkkOpsvkeiTelIktAddCC, wkResultHash)` |
| 3 | IF | `statusCode != 0` → return statusCode |
| 4 | IF | `wkResultHash != null` → `setSvKeiUpdDtm(requestParam, wkResultHash, TEMPLATE_ID_EKK0431C040)` |
| 5 | IF | `wkResultHash != null` → `setSbopSvcKeiKeyMap(sbOpSvcCd, wkResultHash, TEMPLATE_ID_EKK0431C040)` |

**Block 8.2.1.2** — [ELSE-IF] `(isShosazumi(svcKeiUcwkStat) — Sub-ops Check)` (L860)

| # | Type | Code |
|---|------|------|
| 1 | IF | `isShosazumi(svcKeiUcwkStat)` |
| 2 | CALL | `callEKK0431C010SC(param, handle, requestParam, jkkOpsvkeiTelIktAddCC, wkResultHash)` |
| 3 | IF | `statusCode != 0` → return statusCode |
| 4 | IF | `wkResultHash != null` → `setSvKeiUpdDtm(requestParam, wkResultHash, TEMPLATE_ID_EKK0431C010)` |
| 5 | IF | `wkResultHash != null` → `setSbopSvcKeiKeyMap(sbOpSvcCd, wkResultHash, TEMPLATE_ID_EKK0431C010)` |

**Block 8.2.2** — [CALL] `(Progress registration — EKK0831A010 for Sub-Option Services)` (L876)

| # | Type | Code |
|---|------|------|
| 1 | SET | `dataMapKey = fixedText` |
| 2 | CALL | `callEKK0831A010(param, handle, dataMapKey, sbOpSvcCd)` → `ekk0831a010OUT` |
| 3 | SET | `opSvcNm = ekk0831a010OUT[0].getString(EKK0831A010CBSMsg1List.SBOP_SVC_NM)` |
| 4 | SET | `prgTkjk1 = opSvcNm + PRG_TKJK_1_JYOHO + PRG_TKJK_1_TOUROKU` |

**Block 9** — [IF/ELSE] `(prgStat: progress status code)` (L887)

> Sets the progress status code: `5102` for immediate application (即時適用), `5101` for application in progress (オプション情報申請中).

| # | Type | Code |
|---|------|------|
| 1 | IF | `isSokuji == true` → `prgStat = "5102"` (オプション設定完了) |
| 2 | ELSE | `prgStat = "5101"` (オプション情報申請中) |

**Block 10** — [IF] `(prgExecFlg — Progress registration call)` (L898)

> Only calls progress registration if `prgExecFlg` was not set to false by the billing amount comparison logic.

| # | Type | Code |
|---|------|------|
| 1 | IF | `prgExecFlg == true` |
| 2 | CALL | `callEKK1091D010SC(param, handle, requestParam, wkResultHash, prgStat, prgTkjk1)` |
| 3 | IF | `statusCode != 0` → return statusCode |

**Block 11** — [SET] `(SOD eligibility computation)` (L914)

> Computes whether this service item is eligible for SOD (Service Order Data) issuance.

| # | Type | Code |
|---|------|------|
| 1 | SET | `sodTerm.put(opSvcCd, isShosazumi(svcKeiStat) && isSokuji && (sodHakkoFlg || (!sodHakkoFlg && JKKSvcConst.OP_SVC_CD_TENSO="B024".equals(opSvcCd))))` |

**Block 12** — [SET] `(Result caching and clearing)` (L923)

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `CASH_RESULTS.add(wkResultHash)` |
| 2 | SET | `wkResultHash.put(TEMPLATE_ID_EKK0371D010, null)` |
| 3 | SET | `wkResultHash.put(TEMPLATE_ID_EKK0371C050, null)` |
| 4 | IF | `!isSvcKei(jkkOpsvkeiTelIktAddCC)` → `wkResultHash.put(TEMPLATE_ID_EKK0431D010, null)` |

**Block 13** — [CALL] `(SOD issuance)` (L938)

> After all items are processed, prepares the SOD parameter map and delegates SOD issuance to `JKKHakkoSODCC.hakkoSOD()`.

| # | Type | Code |
|---|------|------|
| 1 | CALL | `editHakkoSODccMap(param, requestParam, wkResultHash)` |
| 2 | CALL | `(new JKKHakkoSODCC()).hakkoSOD(handle, param, KKSV0050_KKSV0050OP.KKSV005003CC)` |
| 3 | RETURN | `statusCode` |

## 7. Glossary

| Term | Type | Business Meaning |
|------|------|------------------|
| `svc_kei_stat` | Field | Service contract status — master status of a service contract line (e.g., pending, finalized, active) |
| `svc_kei_ucwk_stat` | Field | Service contract detail status — status of a service contract line item (申込済/Teikyo/締結済) |
| `svc_kei_no` | Field | Service contract number — unique identifier for a service contract |
| `svc_kei_ucwk_no` | Field | Service contract line item number — identifier for a specific service detail line |
| `kikiSeizoNo` | Field | Device manufacturing number — serial number of the provisioned network device |
| `sodHakkoFlg` | Field | SOD (Service Order Data) issuance flag — determines whether this service can trigger SOD creation |
| `vlanIdFixFlg` | Field | VLAN-ID fix flag — "1" means the VLAN-ID has been fixed/confirmed |
| `isSokuji` | Field | Immediate application flag — whether the service should take effect immediately |
| `prgStat` | Field | Progress status code — "5101" = Option Info Application, "5102" = Option Setup Complete |
| `prgTkjk1` | Field | Progress remark field 1 — concatenated string of service name + progress notes |
| `op_svc_cd` | Field | Option service code — classifies the type of option service |
| `sbop_svc_cd` | Field | Sub-option service code — classifies the type of sub-option service |
| `op_svc_kei_no` | Field | Option service contract number — the specific contract number for an option service |
| `op_svc_nm` | Field | Option service name — human-readable name of the option service |
| `twryo_stiam_ttu_tchi_stiam` | Field | Call allowance limit reach notification designated amount — billing threshold for reach notifications |
| `uno_ymd` | Field | Operational year-month-day — date used to determine if a service is effective immediately |
| `ido_dtm` | Field |异动 timestamp — timestamp of the status change/异动 record |
| `ex_upd_dtm` | Field | External update timestamp — used for optimistic concurrency control |
| KKTK_SVC_CD_TAKINORT | Constant | Service type code "C024" — Telecom service (多機能ルータ/Telecom) |
| KKTK_SVC_CD_HGW | Constant | Service type code "C025" — Home Gateway service (ホームゲートウェイ) |
| OP_SVC_CD_VALUE_TWRYO_STIAM | Constant | Option service code "B072" — Call Allowance Limit Reach Notification (通話指定額到達通知) |
| OP_SVC_CD_TENSO | Constant | Option service code "B024" — Tenso/Bundled service (てんそ/Bundle) |
| VLAN_ID_FIX_FLG_ON | Constant | "1" — VLAN-ID fix completed flag |
| PRG_TKJK_1_JYOHO | Constant | "情報" — "Information" appended to progress notes |
| PRG_TKJK_1_TOUROKU | Constant | "登録" — "Registration" appended to progress notes |
| CHBF_KEY | Constant | "_CHBF" — Suffix key for contract bundle flag in option service key map |
| NO_POS | Constant | `0` — Array index for contract number position in key map pairs |
| GE_POS | Constant | `1` — Array index for add timestamp position in key map pairs |
| SOD | Acronym | Service Order Data — telecom order fulfillment data entity for provisioning |
| EKK* | Acronym | Service Component code prefix — EO K-opticom services (eo光オプション契約) |
| EAC* | Acronym | Service Component code prefix — EO Agreement/Congestion services |
| EDK* | Acronym | Service Component code prefix — EO Device/Contract services |
| SC | Acronym | Service Component — backend business logic module that performs DB operations |
| CC | Acronym | Common Component — shared Java class for business logic orchestration |
| SIF | Acronym | Service Interface — Fujitsu middleware for SC invocation |
| CAANMsg | Type | Common Application ANimation Message — message container used in SC I/O |
| Teiketsuzumi | Japanese term | 締結済 — Contract finalized status; service detail has been contracted |
| Teikyo | Japanese term | 提供中 — Service in progress/active status |
| Shosazumi | Japanese term | 申込済 — Pending application status; awaiting approval/confirmation |
| FTTH | Business term | Fiber To The Home — fiber-optic internet service delivery method |
| VLAN-ID | Acronym | Virtual Local Area Network Identifier — network segmentation tag for service isolation |
| HGW | Acronym | Home Gateway — residential network gateway device |
| ICS | Acronym | IP Communication Service — IP-based telephony service |
| Eo光 (eo-hikari) | Japanese term | eo Fiber — Fujitsu's FTTH broadband service brand |
| 通話指定額到達通知 | Japanese term | Call Allowance Limit Reach Notification — billing threshold alert service |
| オプションサービス | Japanese term | Option Service — additional telephone service bundled with the main contract |
| サブオプションサービス | Japanese term | Sub-Option Service — secondary service subordinate to an Option Service |
| 一括登録 | Japanese term | One-stop Registration — batch registration of multiple service lines simultaneously |
| 照会 | Japanese term | Inquiry/Check — status verification and validation step |
| 照会締結 | Japanese term | Check Close — finalizing a check-verified service contract |
| 開始 | Japanese term | Start/Activation — activating a confirmed service contract |
| 情報変更 | Japanese term | Information Change — updating existing service contract details |
| 申込み内容承認登録 | Japanese term | Content Acceptance Registration — registering customer's content acceptance |
| 進捗登録 | Japanese term | Progress Registration — recording the operational progress status of option services |
| 即時適用 | Japanese term | Immediate Application — service takes effect at the current operational date |
| 料金コード | Japanese term | Price code — tariff code identifying the billing plan |
