# (DD06) Business Logic — JFUSetVariTsushinKikiMskmCC.hakkoSOD() [88 LOC]

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

## 1. Role

### JFUSetVariTsushinKikiMskmCC.hakkoSOD()

This method performs **SOD (Service Order Data) issuance** when a **multi-function router option is changed** in the telecom service fulfillment workflow. Its Javadoc title is "SOD issuance (multi-function router option change)" (SOD発行(多機能ルーターオプション変更時)). It acts as a **pipeline-style orchestrator** that sequentially executes five critical sub-workflows: (1) retrieving and confirming the base service contract consent, (2) retrieving and confirming the equipment-provided service contract consent, (3) searching the current service contract detail information list for the active net subscription, (4) registering the order issue conditions (the criteria that allow a service order to be issued), and (5) registering the order info creation work (the detailed order data that will be submitted to downstream fulfillment systems).

The method implements a **delegation pattern** — it does not perform database operations directly, but instead prepares input maps via helper methods (`setInMap*`) and delegates actual data access to service components via `executeSC`. It handles two service types implicitly — FTTH (Fiber To The Home) internet service and associated equipment-provided services — as evidenced by its integration with EKK0081A010 (service contract consent) and EKK0341A010 (equipment-provided service contract consent) templates.

It is a **private helper method** called from within the same class (`JFUSetVariTsushinKikiMskmCC`) during the equipment option service contract registration process. It is invoked from `setKkOpSvcKeiToroku` under two distinct scenarios: when a router is already deployed and only VA (Value Added) functions are used (passing `odrNaiyoCd = "402"` — equipment-provided service VA add), and when a router is already deployed and wireless/wired changes occur (passing `odrNaiyoCd = "418"` — equipment-provided service VA change). This method is a shared utility in the larger SOD issuance chain, ensuring all preconditions are met before the actual order is dispatched.

## 2. Processing Pattern (Detailed Business Logic)

```mermaid
flowchart TD
    START(["hakkoSOD()"])
    START --> GET_DATA["Get IN Parameter Data: param.getData(fixedText)"]

    GET_DATA --> EXTRACT_IN_PARAM["Extract inParamSvcKeiNo and inParamSvkeiKaisenUwNo from inMap"]

    EXTRACT_IN_PARAM --> SVC_CONSENT["Step 1: Service Contract Consent Confirmation"]
    SVC_CONSENT --> SVC_INIT["initData(param, IN_COLUMN_LIST_2)"]
    SVC_INIT --> SVC_MAP["setInMapSvcKeiUniqueSearch(param, inParamSvcKeiNo)"]
    SVC_MAP --> SVC_EXEC["executeSC(EKK0081A010)"]
    SVC_EXEC --> SVC_GADTM["Get svcKeiGeneAddDtm from template"]

    SVC_GADTM --> KKT_CONSENT["Step 2: Equipment-Provided Service Contract Consent"]
    KKT_CONSENT --> KKT_INIT["initData(param, IN_COLUMN_LIST_27)"]
    KKT_INIT --> KKT_MAP["setInMapKktkSvcKeiUqSearch(param, kktkSvcKeiNo)"]
    KKT_MAP --> KKT_EXEC["executeSC(EKK0341A010)"]
    KKT_EXEC --> KKT_GADTM["Get kktkSvcKeiGeneAddDtm from template"]

    KKT_GADTM --> SVC_UCWK["Step 3: Current Service Contract Detail Info (Net)"]
    SVC_UCWK --> UCWK_INIT["initData(param, IN_COLUMN_LIST_SVC_KEI_UCWK_LIST_SHOKAI)"]
    UCWK_INIT --> UCWK_MAP["setInMapSvcKeiUcwkSearch(param, inParamSvcKeiNo)"]
    UCWK_MAP --> UCWK_EXEC["executeSC(EKK0161B504)"]
    UCWK_EXEC --> UCWK_LOOP["Loop: for each HashMap in getTemplateList result]"]

    UCWK_LOOP --> CHECK_STAT["Check svcKeiUcwkStat from dataMap"]
    CHECK_STAT --> SKIP_STAT{Is stat CD00037_910 or CD00037_920?}
    SKIP_STAT -->|Yes| UCWK_CONTINUE["Continue to next entry"]
    SKIP_STAT -->|No| UCWK_ASSIGN["Assign svcKeiUcwkNo and svcKeiUcwkGeneAddDtm"]

    UCWK_ASSIGN --> UCWK_CONTINUE
    UCWK_CONTINUE --> UCWK_END(["End loop"])

    UCWK_END --> ORDER_COND["Step 4: Order Issue Condition Registration"]
    ORDER_COND --> OCOND_INIT["initData(param, IN_COLUMN_LIST_40)"]
    OCOND_INIT --> OCOND_MAP["setInMapOrderHakkoJyokenToroku(param, svcKeiNo, svcKeiUcwkNo, kktkSvcKeiNo, taknkikiModelCd, kikiSeizoNo)"]
    OCOND_MAP --> OCOND_EXEC["executeSC(EKK1081D010)"]
    OCOND_EXEC --> OCOND_RESULT["Get odrHakkoJokenNo from template"]

    OCOND_RESULT --> ORDER_WORK["Step 5: Order Info Creation Work Registration"]
    ORDER_WORK --> OWORK_INIT["initData(param, IN_COLUMN_LIST_41)"]
    OWORK_INIT --> OWORK_MAP["setInMapOrderJyohoSakuseiWork(param, odrHakkoJokenNo, svcKeiNo, svcKeiGeneAddDtm, svcKeiUcwkNo, svcKeiUcwkGeneAddDtm, kktkSvcKeiNo, kktkSvcKeiGeneAddDtm, kkopSvcKeiNo, geneAddDtmBef, geneAddDtmAft, odrNaiyoCd)"]
    OWORK_MAP --> OWORK_EXEC["executeSC(EKK1551D010)"]

    OWORK_EXEC --> END(["Return void"])
```

## 3. Parameter Analysis

| No | Parameter Name | Type | Business Description |
|----|---------------|------|---------------------|
| 1 | `handle` | `SessionHandle` | Database session handle for executing service component calls and maintaining transaction context throughout the SOD issuance workflow. |
| 2 | `param` | `IRequestParameterReadWrite` | Request parameter object carrying the data map (accessible via `fixedText` key). Used to initialize, populate, and retrieve work data across all five processing steps. |
| 3 | `fixedText` | `String` | Service message key used to identify the data map within `param`. It serves as the namespace key for `param.getData(fixedText)` to retrieve the `HashMap<String, Object> inMap`. |
| 4 | `kktkSvcKeiNo` | `String` | Equipment-provided service contract number (機器提供サービス契約番号). Identifies the service contract associated with the customer-provided equipment (router). Used to search equipment-provided contract consent. |
| 5 | `taknkikiModelCd` | `String` | Equipment model code (機種モデルコード). Specifies the equipment model being registered, passed into the order issue condition registration to capture which device model is involved. |
| 6 | `kikiSeizoNo` | `String` | Equipment serial/manufacturer number (機器製造番号). The unique hardware identifier of the router/device. Used to determine if the device is already shipped (`isShukkaZumi` check in the caller). |
| 7 | `kkopSvcKeiNo` | `String` | Router-function service contract number (ルーター機能サービス契約番号). The specific service contract for the router function, used in order info creation work. |
| 8 | `geneAddDtmBef` | `String` | Post-registration addition date/time (before) (世代登録年月日時分秒_後). Timestamp of the generation registration before this operation. |
| 9 | `geneAddDtmAft` | `String` | Post-registration addition date/time (after) (世代登録年月日時分秒_後). Timestamp of the generation registration after this operation. |
| 10 | `odrNaiyoCd` | `String` | Order content code (オーダー内容コード). Classifies the type of order being issued. Two known values: `"402"` (CD01105_402 — Equipment-provided service VA add / 機器提供サービスVA追加) and `"418"` (CD01105_418 — Equipment-provided service VA change / 機器提供サービスVA変更). Determines the business intent of the SOD issuance. |

**External/Instance State:**
- `KKTK_SVKEI_ADD_LIST` = `"kktk_svkei_add_list"` — Key to retrieve the list of equipment registration detail entries from the IN data map.
- `IN_PARAM_SVC_KEI_NO` = `"kk0341_svc_kei_no"` — Key for the base service contract number extracted from the IN parameter work map.

## 4. CRUD Operations / Called Services

| CRUD | SC / CBS | SC Code | Entity / DB | Operation Description |
|------|----------|---------|-------------|----------------------|
| R | `JFUSetVariTsushinKikiMskmCC.getData` | - | inMap (HashMap) | Retrieves the IN data map via `param.getData(fixedText)` — reads the work data context from the request parameter. |
| R | `JFUSetVariTsushinKikiMskmCC.initData` | EKK0081A010SC | Service Contract Consent | Clears and initializes the input map with `IN_COLUMN_LIST_2` fields for service contract consent confirmation. |
| - | `JFUSetVariTsushinKikiMskmCC.setInMapSvcKeiUniqueSearch` | EKK0081A010SC | Service Contract Consent | Populates the input map with unique search key (service contract number) for consent retrieval. |
| R | `EKK0081A010SC` | EKK0081A010 | KK_T_SVC_KEI (Service Contract) | Executes service contract consent confirmation — reads the service contract record by service contract number. |
| R | `JFUSetVariTsushinKikiMskmCC.initData` | EKK0341A010SC | Equipment Service Contract | Clears and initializes input map with `IN_COLUMN_LIST_27` fields for equipment-provided service contract consent. |
| - | `JFUSetVariTsushinKikiMskmCC.setInMapKktkSvcKeiUqSearch` | EKK0341A010SC | Equipment Service Contract | Populates input map with unique search key (equipment-provided service contract number). |
| R | `EKK0341A010SC` | EKK0341A010 | KK_T_KKTK_SVC_KEI (Equipment-Provided Service Contract) | Executes equipment-provided service contract consent confirmation — reads the equipment-provided service contract record. |
| R | `JFUSetVariTsushinKikiMskmCC.initData` | EKK0161B504SC | Service Contract Detail (Net) | Clears and initializes input map with `IN_COLUMN_LIST_SVC_KEI_UCWK_LIST_SHOKAI` fields for service contract detail info search. |
| - | `JFUSetVariTsushinKikiMskmCC.setInMapSvcKeiUcwkSearch` | EKK0161B504SC | Service Contract Detail (Net) | Populates input map with service contract number for detail list search. |
| R | `EKK0161B504SC` | EKK0161B504 | KK_T_SVC_KEI_UCWK (Service Contract Detail) | Executes current service contract detail info list search (net) — returns a list of all detail records for the service contract number. |
| R | `JFUSetVariTsushinKikiMskmCC.initData` | EKK1081D010SC | Order Issue Condition | Clears and initializes input map with `IN_COLUMN_LIST_40` fields for order issue condition registration. |
| - | `JFUSetVariTsushinKikiMskmCC.setInMapOrderHakkoJyokenToroku` | EKK1081D010SC | Order Issue Condition | Populates input map with order issue condition data including service contract numbers, equipment info, model code, and serial number. |
| C | `EKK1081D010SC` | EKK1081D010 | KK_T_ODR_HAKKO_JOKEN (Order Issue Condition) | Executes order issue condition registration — creates a new order issue condition record and returns the assigned condition number. |
| R | `JFUSetVariTsushinKikiMskmCC.initData` | EKK1551D010SC | Order Info Creation Work | Clears and initializes input map with `IN_COLUMN_LIST_41` fields for order info creation work registration. |
| - | `JFUSetVariTsushinKikiMskmCC.setInMapOrderJyohoSakuseiWork` | EKK1551D010SC | Order Info Creation Work | Populates input map with full order info data including order condition number, all service contract numbers, generation timestamps, and order content code. |
| C | `EKK1551D010SC` | EKK1551D010 | KK_T_ODR_INF_SKSI_WK (Order Info Creation Work) | Executes order info creation work registration — creates a detailed order work record for downstream processing. |

**Template ID Mapping:**

| Step | Template ID | SC Code | Business Purpose |
|------|-------------|---------|-----------------|
| 1 | `EKK0081A010` | EKK0081A010 | Service Contract Consent Confirmation |
| 2 | `EKK0341A010` | EKK0341A010 | Equipment-Provided Service Contract Consent |
| 3 | `EKK0161B504` | EKK0161B504 | Current Service Contract Detail Info List (Net) |
| 4 | `EKK1081D010` | EKK1081D010 | Order Issue Condition Registration |
| 5 | `EKK1551D010` | EKK1551D010 | Order Info Creation Work Registration |

## 5. Dependency Trace

This is a **private method** called internally from `setKkOpSvcKeiToroku` within the same class `JFUSetVariTsushinKikiMskmCC`.

| # | Caller (Screen/Batch) | Call Chain (Full Path to this Method) | Terminal (SC / CRUD / Entity) |
|---|----------------------|--------------------------------------|-------------------------------|
| 1 | Screen:KKSV0486 (HakkoSOD screen) | `KKSV0486OP_HakkoSODCC` -> `JFUSetVariTsushinKikiMskmCC.setKkOpSvcKeiToroku` -> `JFUSetVariTsushinKikiMskmCC.hakkoSOD` | `executeSC [C] KK_T_ODR_HAKKO_JOKEN, executeSC [C] KK_T_ODR_INF_SKSI_WK` |
| 2 | Screen:KKSV0428 (HakkoSOD screen) | `KKSV0428OP_HakkoSODCC` -> ... -> `JFUSetVariTsushinKikiMskmCC.setKkOpSvcKeiToroku` -> `JFUSetVariTsushinKikiMskmCC.hakkoSOD` | `executeSC [R] KK_T_SVC_KEI, executeSC [R] KK_T_KKTK_SVC_KEI, executeSC [R] KK_T_SVC_KEI_UCWK, executeSC [C] KK_T_ODR_HAKKO_JOKEN, executeSC [C] KK_T_ODR_INF_SKSI_WK` |
| 3 | Screen:KKSV0429 (HakkoSOD screen) | `KKSV0429OP_HakkoSODCC` -> ... -> `JFUSetVariTsushinKikiMskmCC.hakkoSOD` | Same as above |
| 4 | Screen:KKSV0430 (HakkoSOD screen) | `KKSV0430OP_HakkoSODCC` -> ... -> `JFUSetVariTsushinKikiMskmCC.hakkoSOD` | Same as above |
| 5 | CC:JFUSetVariTsushinKikiMskmCC | `setKkOpSvcKeiToroku` -> `hakkoSOD` (L2618, L2807) | `executeSC [C] KK_T_ODR_HAKKO_JOKEN [EKK1081D010], executeSC [C] KK_T_ODR_INF_SKSI_WK [EKK1551D010]` |
| 6 | CC:JFUSetVariTsushinKikiMskmCC | `setKkOpSvcKeiToroku` -> `hakkoSOD` with odrNaiyoCd="402" | `executeSC [R] KK_T_SVC_KEI [EKK0081A010], executeSC [R] KK_T_KKTK_SVC_KEI [EKK0341A010], executeSC [R] KK_T_SVC_KEI_UCWK [EKK0161B504]` |
| 7 | CC:JFUSetVariTsushinKikiMskmCC | `setKkOpSvcKeiToroku` -> `hakkoSOD` with odrNaiyoCd="418" | Same reads as above + creates order condition and work records |

**Terminal operations from this method:**

| Terminal | SC Code | Type | Entity/DB Table |
|----------|---------|------|-----------------|
| `executeSC` (EKK0081A010) | EKK0081A010 | R | KK_T_SVC_KEI (Service Contract) |
| `executeSC` (EKK0341A010) | EKK0341A010 | R | KK_T_KKTK_SVC_KEI (Equipment-Provided Service Contract) |
| `executeSC` (EKK0161B504) | EKK0161B504 | R | KK_T_SVC_KEI_UCWK (Service Contract Detail) |
| `executeSC` (EKK1081D010) | EKK1081D010 | C | KK_T_ODR_HAKKO_JOKEN (Order Issue Condition) |
| `executeSC` (EKK1551D010) | EKK1551D010 | C | KK_T_ODR_INF_SKSI_WK (Order Info Creation Work) |

## 6. Per-Branch Detail Blocks

**Block 1** — [GET/EXTRACT] IN Parameter Acquisition (L3028)

Retrieves the input data map and extracts the base service contract number and detail work number from the IN work list.

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `HashMap<String, Object> inMap = (HashMap<String, Object>)param.getData(fixedText)` // Retrieve the IN data map [-> fixedText] |
| 2 | EXEC | `ArrayList<Object> workLst = (ArrayList<Object>)inMap.get(KKTK_SVKEI_ADD_LIST)` // Get equipment registration detail list [-> KKTK_SVKEI_ADD_LIST="kktk_svkei_add_list"] |
| 3 | EXEC | `HashMap inParamMap = (HashMap)workLst.get(I_ZERO)` // Get the first entry from the work list [-> I_ZERO=0] |
| 4 | SET | `String inParamSvcKeiNo = (String)inParamMap.get(IN_PARAM_SVC_KEI_NO)` // Extract base service contract number [-> IN_PARAM_SVC_KEI_NO="kk0341_svc_kei_no"] |
| 5 | SET | `String inParamSvkeiKaisenUwNo = (String)inMap.get("svc_kei_kaisen_ucwk_no")` // Extract service detail work number |

**Block 2** — [SEQUENTIAL] Step 1: Service Contract Consent Confirmation (L3039–3050)

Initializes, populates, and executes the service contract consent confirmation SC (EKK0081A010) to read the base service contract record. Then extracts the generation registration timestamp.

| # | Type | Code |
|---|------|------|
| 1 | CALL | `initData(param, fixedText, IN_COLUMN_LIST_2)` // Initialize input map with service contract consent columns [EKK0081A010: svc_kei_no, gene_add_dtm, rsv_aply_ymd] |
| 2 | CALL | `setInMapSvcKeiUniqueSearch(param, fixedText, inParamSvcKeiNo)` // Populate unique search key with service contract number |
| 3 | CALL | `executeSC(handle, param, fixedText, TEMPLATE_ID_2, TEMPLATE_ID_2_DETAIL, IN_COLUMN_LIST_2, ERROR_COLUMN_2)` // Execute SC EKK0081A010 [-> TEMPLATE_ID_2="EKK0081A010"] |
| 4 | SET | `String svcKeiGeneAddDtm = getTemplateListValue(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMPLATE_KEY_2), TEMPLATE_ID_2_DETAIL, EKK0081A010CBSMsg1List.GENE_ADD_DTM, 0)` // Extract generation timestamp from result [-> TEMP_TEMPLATE_KEY_2] |

**Block 3** — [SEQUENTIAL] Step 2: Equipment-Provided Service Contract Consent (L3053–3064)

Initializes, populates, and executes the equipment-provided service contract consent SC (EKK0341A010) to read the equipment-provided service contract record. Then extracts the generation registration timestamp.

| # | Type | Code |
|---|------|------|
| 1 | CALL | `initData(param, fixedText, IN_COLUMN_LIST_27)` // Initialize input map with equipment-provided service consent columns [EKK0341A010: kktk_svc_kei_no, gene_add_dtm, rsv_aply_ymd] |
| 2 | CALL | `setInMapKktkSvcKeiUqSearch(param, fixedText, kktkSvcKeiNo)` // Populate unique search key with equipment-provided service contract number |
| 3 | CALL | `executeSC(handle, param, fixedText, TEMPLATE_ID_27, TEMPLATE_ID_27_DETAIL, IN_COLUMN_LIST_27, ERROR_COLUMN_27)` // Execute SC EKK0341A010 [-> TEMPLATE_ID_27="EKK0341A010"] |
| 4 | SET | `String kktkSvcKeiGeneAddDtm = getTemplateListValue(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMPLATE_KEY_27), TEMPLATE_ID_27_DETAIL, EKK0341A010CBSMsg1List.GENE_ADD_DTM, 0)` // Extract generation timestamp from result [-> TEMP_TEMPLATE_KEY_27] |

**Block 4** — [SEQUENTIAL + LOOP] Step 3: Current Service Contract Detail Info Search (Net) (L3067–3094)

Searches the list of service contract detail records for the base service contract number. Iterates through results to find the first active (non-cancelled, non-rescinded) contract detail, capturing its detail number and generation timestamp.

| # | Type | Code |
|---|------|------|
| 1 | CALL | `initData(param, fixedText, IN_COLUMN_LIST_SVC_KEI_UCWK_LIST_SHOKAI)` // Initialize with detail list search columns [EKK0161B504: svc_kei_no, isp_ninsho_id] |
| 2 | CALL | `setInMapSvcKeiUcwkSearch(param, fixedText, inParamSvcKeiNo)` // Populate search key with service contract number |
| 3 | CALL | `executeSC(handle, param, fixedText, TEMPLATE_ID_SVC_KEI_UCWK_LIST_SHOKAI, TEMPLATE_ID_DETAIL_SVC_KEI_UCWK_LIST_SHOKAI, IN_COLUMN_LIST_SVC_KEI_UCWK_LIST_SHOKAI, ERROR_COLUMN_SVC_KEI_UCWK)` // Execute SC EKK0161B504 [-> TEMPLATE_ID_SVC_KEI_UCWK_LIST_SHOKAI="EKK0161B504"] |
| 4 | SET | `String svcKeiUcwkNo = ""` // Initialize detail work number |
| 5 | SET | `String svcKeiUcwkGeneAddDtm = ""` // Initialize detail generation timestamp |
| 6 | LOOP | `for (HashMap dataMap : getTemplateList(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMPLATE_KEY_SVC_KEI_UCWK_LIST_SHOKAI), TEMPLATE_ID_DETAIL_SVC_KEI_UCWK_LIST_SHOKAI))` // Iterate through detail result rows [-> TEMP_TEMPLATE_KEY_SVC_KEI_UCWK_LIST_SHOKAI] |

**Block 4.1** — [IF/ELSE] Stat Status Check Inside Loop (L3073–3086)

Within the loop, checks whether the service contract detail status indicates "rescinded" (910) or "cancelled" (920). These statuses are excluded — only the first active (non-terminated) detail record is captured. This is a OM-2017-0000899 change.

| # | Type | Code |
|---|------|------|
| 1 | SET | `String svcKeiUcwkStat = (String)dataMap.get(EKK0161B504CBSMsg1List.SVC_KEI_UCWK_STAT)` // Read status from current row |
| 2 | IF | `!(CD00037_910.equals(svcKeiUcwkStat) || CD00037_920.equals(svcKeiUcwkStat))` // Exclude rescinded [910] and cancelled [920] statuses [-> CD00037_910="910", CD00037_920="920"] |
| 3 | SET | `svcKeiUcwkNo = (String)dataMap.get(EKK0161B504CBSMsg1List.SVC_KEI_UCWK_NO)` // Capture detail work number |
| 4 | SET | `svcKeiUcwkGeneAddDtm = (String)dataMap.get(EKK0161B504CBSMsg1List.GENE_ADD_DTM)` // Capture detail generation timestamp |

**Block 5** — [SEQUENTIAL] Step 4: Order Issue Condition Registration (L3098–3103)

Prepares and executes the order issue condition registration SC (EKK1081D010). This SC creates a new order issue condition record that defines the criteria for issuing a service order. The input map is populated with service contract numbers, equipment info, order type codes, and the model/serial numbers.

| # | Type | Code |
|---|------|------|
| 1 | CALL | `initData(param, fixedText, IN_COLUMN_LIST_40)` // Initialize with order issue condition columns [EKK1081D010: svc_kei_no, svc_kei_ucwk_no, kktk_svc_kei_no, order_sbt_cd, svc_order_cd, yokyu_sbt_cd, odr_hakko_joken_cd, taknkiki_model_cd, kiki_seizo_no, etc.] |
| 2 | CALL | `setInMapOrderHakkoJyokenToroku(param, fixedText, inParamSvcKeiNo, inParamSvkeiKaisenUwNo, kktkSvcKeiNo, taknkikiModelCd, kikiSeizoNo)` // Populate all order issue condition fields [-> L3099] |
| 3 | CALL | `executeSC(handle, param, fixedText, TEMPLATE_ID_40, TEMPLATE_ID_40_DETAIL, IN_COLUMN_LIST_40, ERROR_COLUMN_40)` // Execute SC EKK1081D010 [-> TEMPLATE_ID_40="EKK1081D010"] |
| 4 | SET | `String odrHakkoJokenNo = getTemplateValue(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMPLATE_KEY_40), EKK1081D010CBSMsg.ODR_HAKKO_JOKEN_NO)` // Read the assigned order issue condition number from result [-> TEMP_TEMPLATE_KEY_40] |

**Block 6** — [SEQUENTIAL] Step 5: Order Info Creation Work Registration (L3106–3111)

Prepares and executes the order info creation work registration SC (EKK1551D010). This is the final step — it registers the full order information work record with all service contract numbers, generation timestamps, and the order content code. This record will be consumed by downstream SOD issuance processing.

| # | Type | Code |
|---|------|------|
| 1 | CALL | `initData(param, fixedText, IN_COLUMN_LIST_41)` // Initialize with order info creation work columns [EKK1551D010: odr_hakko_joken_no, odr_naiyo_cd, svc_kei_no, svkei_gadtm, svc_kei_ucwk_no, svkeiuw_gadtm, kktk_svc_kei_no, kktsvkei_gadtm, op_svc_kei_no, etc.] |
| 2 | CALL | `setInMapOrderJyohoSakuseiWork(param, fixedText, odrHakkoJokenNo, inParamSvcKeiNo, svcKeiGeneAddDtm, svcKeiUcwkNo, svcKeiUcwkGeneAddDtm, kktkSvcKeiNo, kktkSvcKeiGeneAddDtm, kkopSvcKeiNo, geneAddDtmBef, geneAddDtmAft, odrNaiyoCd)` // Populate all order info fields [-> L3107] |
| 3 | CALL | `executeSC(handle, param, fixedText, TEMPLATE_ID_41, TEMPLATE_ID_41_DETAIL, IN_COLUMN_LIST_41, ERROR_COLUMN_41)` // Execute SC EKK1551D010 [-> TEMPLATE_ID_41="EKK1551D010"] |
| 4 | RETURN | `return;` // Method returns void — all processing complete |

## 7. Glossary

| Term | Type | Business Meaning |
|------|------|------------------|
| `hakkoSOD` | Method | Service Order Data issuance — the process of creating and registering order data for downstream fulfillment systems |
| SOD | Acronym | Service Order Data — the core telecom order entity that carries all service contract, equipment, and order details for fulfillment processing |
| `kktkSvcKeiNo` | Field | Equipment-provided service contract number (機器提供サービス契約番号) — the service contract number for customer-provided equipment (router, set-top box, etc.) |
| `taknkikiModelCd` | Field | Equipment model code (機種モデルコード) — the product/model code identifying the type of equipment being registered |
| `kikiSeizoNo` | Field | Equipment serial/manufacturer number (機器製造番号) — the unique hardware serial number of the physical device |
| `kkopSvcKeiNo` | Field | Router-function service contract number (ルーター機能サービス契約番号) — the service contract number specifically for the router function within the multi-function equipment |
| `geneAddDtmBef` | Field | Post-generation registration timestamp (before) (世代登録年月日時分秒_後_変更前) — the generation timestamp prior to this operation |
| `geneAddDtmAft` | Field | Post-generation registration timestamp (after) (世代登録年月日時分秒_後_変更後) — the generation timestamp after this operation |
| `odrNaiyoCd` | Field | Order content code (オーダー内容コード) — classifies the type of service order: `"402"` = Equipment-provided service VA add (機器提供サービスVA追加), `"418"` = Equipment-provided service VA change (機器提供サービスVA変更) |
| `inParamSvcKeiNo` | Field | Input parameter base service contract number (入力項目サービス契約番号) — the primary service contract number for the customer |
| `inParamSvkeiKaisenUwNo` | Field | Input parameter service detail work number (入力項目サービス契約回線内訳番号) — tracks the detail work number for service contract changes |
| `svcKeiGeneAddDtm` | Field | Service contract generation registration date/time (サービス契約世代登録年月日時分秒) — timestamp when this service contract record was created/registered |
| `kktkSvcKeiGeneAddDtm` | Field | Equipment-provided service contract generation registration date/time (機器提供サービス契約世代登録年月日時分秒) |
| `svcKeiUcwkNo` | Field | Service contract detail work number (サービス契約内訳番号) — unique identifier for a service contract detail/line item record |
| `svcKeiUcwkGeneAddDtm` | Field | Service contract detail generation registration date/time (サービス契約内訳世代登録年月日時分秒) |
| `svcKeiUcwkStat` | Field | Service contract detail status (サービス契約内訳ステータス) — lifecycle status code; `"910"` = rescinded (解消済), `"920"` = cancelled (キャンセル済), other values = active |
| `odrHakkoJokenNo` | Field | Order issue condition number (オーダー発行条件番号) — unique ID for the order issue condition record that gates whether an order can be issued |
| CD00037_910 | Constant | Status code `"910"` — rescinded (解消済) |
| CD00037_920 | Constant | Status code `"920"` — cancelled (キャンセル済) |
| CD01105_402 | Constant | Order content code `"402"` — Equipment-provided service VA add (機器提供サービスVA追加) |
| CD01105_418 | Constant | Order content code `"418"` — Equipment-provided service VA change (機器提供サービスVA変更) |
| KKTK_SVKEI_ADD_LIST | Constant | `"kktk_svkei_add_list"` — key for the equipment registration detail list in the IN data map |
| IN_PARAM_SVC_KEI_NO | Constant | `"kk0341_svc_kei_no"` — key for the base service contract number in the IN parameter work map |
| EKK0081A010 | SC Code | Service Contract Consent Confirmation SC — reads base service contract consent data |
| EKK0341A010 | SC Code | Equipment-Provided Service Contract Consent SC — reads equipment-provided service contract consent data |
| EKK0161B504 | SC Code | Current Service Contract Detail Info List (Net) SC — searches and returns the list of service contract detail records for a given service contract number |
| EKK1081D010 | SC Code | Order Issue Condition Registration SC — registers a new order issue condition and returns the assigned condition number |
| EKK1551D010 | SC Code | Order Info Creation Work Registration SC — registers detailed order creation work data for downstream processing |
| FTTH | Business term | Fiber To The Home — fiber-optic broadband internet service |
| VA | Acronym | Value Added — additional services/features attached to a base service (e.g., router rental, insurance) |
| IN_COLUMN_LIST | Constant | Input column list — defines which fields are used as input parameters for a given SC call |
| TEMPLATE_ID | Constant | Template ID — identifies the CBS message template used for data extraction after SC execution |
| initData | Method pattern | Initializes (clears and sets up) an input parameter map with a predefined column list before populating it |
| setInMap* | Method pattern | Populates (sets) the input parameter map with specific search criteria or data values |
| executeSC | Method pattern | Executes a Service Component (SC) call, which performs the actual database/CBS operation |
| getTemplateValue | Method pattern | Extracts a single value from the SC execution result template |
| getTemplateList | Method pattern | Extracts a list of records from the SC execution result template (used for result sets) |
| getMaxTempTempleteKey | Method pattern | Retrieves the maximum temporary template key from the result map for indexing |
