# Business Logic — JKKKikiIchiranKkUpdCC.execUpdateKktkSvckei() [293 LOC]

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

## 1. Role

### JKKKikiIchiranKkUpdCC.execUpdateKktkSvckei()

This method is the central update orchestrator for the "Equipment Provision Service Contract" (機器提供サービス契約) business domain. It handles the full lifecycle of updating a service contract's device (equipment) information, including the device provider details, contract conditions, and any dependent downstream systems. The method is invoked by the device list and update screen handler (`execKikiIchiranKikiUpd`) and acts as a dispatch hub that branches based on service type, contract status, and channel context.

Specifically, the method performs the following business operations in sequence: (1) It retrieves the provider allocation agreement data (引当柱一意的照会) when a sales category is specified, via the EDK0451A010 CBS. (2) It fetches the current service contract line-item details via EKK0251B003. (3) It consolidates all device-provision contract fields and calls the main update CBS (EKK0341C230) to persist the equipment provision service contract information. (4) If the contract is in "unshipped" status (UKZUMI / 未発送済み) and the price course code (PCRS_CD / 料金コースコード) has changed, it invokes a secondary CBS (EKK0341C080) to update the in-progress price code. (5) If the customer is on the eo Mobile channel, it optionally updates the device MAC address in the eo Mobile service contract table via EKK0121C040. (6) Finally, if processing under function code 1, it refreshes the device list in the work area via `setKikiIchiranIkkatsuList`.

The method implements a **routing/dispatch pattern** where each conditional branch delegates to a specific service component, and a **delegation pattern** where the CC itself doesn't contain business logic but coordinates CBS invocations. Its role in the larger system is that of a service contract update coordinator — it is the single entry point for all equipment provision service contract updates triggered from the device update screen.

## 2. Processing Pattern (Detailed Business Logic)

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

    START --> GET_CC_MSG["Get ccMsg from temporaryData
(TEMPLATE_ID_EKK0081A010)"]

    GET_CC_MSG --> CHECK_HAMBAI{"hambai_sbt
has value?"}

    CHECK_HAMBAI -->|Yes| CALL_EDK0451["Call SC: EDK0451A010
(Contract Allocation Agreement Inquiry)"]
    CHECK_HAMBAI -->|No| SKIP_EDK["Skip EDK0451A010"]

    CALL_EDK0451 --> STORE_EDK["Store edk0451a010cbsMsg
to temporaryData"]
    SKIP_EDK --> STORE_EDK

    STORE_EDK --> CALL_EKK0251["Call SC: EKK0251B003
(Service Contract Line Item List)"]

    CALL_EKK0251 --> STORE_EKK0251["Store ekk0251b003cbsMsg
to temporaryData"]

    STORE_EKK0251 --> PREP_UPDATE["Prepare EKK0341C230 input:
- pcrsData, ekk0341a010cbsMsg_bf
- kikiShsKbtShiteiFlg, mapBasho
- kikiSohusAdChkLv"]

    PREP_UPDATE --> CHECK_SCRN{"scrnId = KKW108?"}

    CHECK_SCRN -->|Yes| SET_MAN_INPUT["Set kikiShsAdManInputFlg = '1'
(same screen execution)"]
    CHECK_SCRN -->|No| SKIP_SCRN["Keep original value"]

    SET_MAN_INPUT --> INVERT_CHK_LV["Invert kikiShsAdManInputFlg to
kikiSohusAdChkLv"]
    SKIP_SCRN --> INVERT_CHK_LV

    INVERT_CHK_LV --> CALL_EKK0341C["Call SC: EKK0341C230
(Equipment Provision Service Contract
Information Change)"]

    CALL_EKK0341C --> SET_UPD_DTM["Set update timestamp to
work area (setSvcUpDtm)"]

    SET_UPD_DTM --> CHECK_SVC_STAT["Get svcKeiStat from EKK0081A010
response"]

    CHECK_SVC_STAT --> FUNC_CODE_UKZUMI{"func_code = '1'
AND svcKeiStat = '010'
(UKZUMI = unshipped)?"}

    FUNC_CODE_UKZUMI -->|Yes| CHECK_PCRS{"PCRS_CD changed?
(bf != af)"}
    FUNC_CODE_UKZUMI -->|No| CHECK_ISMOBILE

    CHECK_PCRS -->|Yes| CALL_EKK0341C080["Call SC: EKK0341C080
(Equipment Provision Service Contract
In-Progress Price Code Change)"]
    CHECK_PCRS -->|No| CHECK_ISMOBILE

    CALL_EKK0341C080 --> SET_UPD_DTM2["Set update timestamp to
work area"]

    SET_UPD_DTM2 --> CHECK_ISMOBILE{"isMobile(param)?"}

    CHECK_ISMOBILE -->|Yes| QUERY_EKK0121A["Call SC: EKK0121A010
(Service Contract: eo Mobile List)"]

    QUERY_EKK0121A --> CHECK_MAC_RESULT{"EKK0121A010
returned rows?"}

    CHECK_MAC_RESULT -->|Yes| CHECK_MAC_CHANGED{"MAC address
changed?"}
    CHECK_MAC_RESULT -->|No| CHECK_ISMOBILE_END
    CHECK_MAC_CHANGED -->|Yes| CALL_EKK0121C["Call SC: EKK0121C040
(Service Contract <eo Mobile>
Info Change)"]
    CHECK_MAC_CHANGED -->|No| CHECK_ISMOBILE_END

    CALL_EKK0121C --> SET_UPD_DTM3["Set update timestamp to
work area"]

    SET_UPD_DTM3 --> CHECK_ICHIRAN{"func_code = FUNC_CODE_1?"}

    CHECK_ICHIRAN -->|Yes| SET_LIST["Call setKikiIchiranIkkatsuList()
(Refresh device list)"]
    CHECK_ICHIRAN -->|No| END_NODE

    SET_LIST --> END_NODE(["Return (void)"])
    CHECK_ISMOBILE_END --> END_NODE
```

**Constant Resolution:**
- `FUNC_CODE_1 = "1"` — Primary function code indicating the main update/registration operation path.
- `SVC_KEI_STAT_UKZUMI = "010"` — Service contract status meaning "Unshipped" (未発送済み). Used to gate price code update processing.
- `SCRN_ID_KKW108 = "KKW108"` — Screen ID for the KKW108 device contract screen. When the check comes from this screen, manual address input is forced (skipping address validation).
- `PCRS_MAP = "PCRS_MAP"` — Key for the price course (料金コース) distinction acquisition section in `temporaryData`.

## 3. Parameter Analysis

| No | Parameter Name | Type | Business Description |
|----|---------------|------|---------------------|
| 1 | `handle` | `SessionHandle` | Database session handle for CBS invocations. Provides the transactional context and database connection for all service component calls within this method. |
| 2 | `scCall` | `ServiceComponentRequestInvoker` | Service component invocation proxy. Used by `callSC` to route CBS requests to their corresponding backend service components. |
| 3 | `param` | `IRequestParameterReadWrite` | Request parameter read/write interface carrying screen input data and work-area values. Used to read update timestamps (`getSvcUpDtm`) and set update timestamps (`setSvcUpDtm`) in the work area. |
| 4 | `dataMapKey` | `String` | Key identifying the data map within the request parameters. Used to retrieve the `ccMsg` HashMap that contains all screen input fields (e.g., `func_code`, `svc_kei_no`, `mac_ad`). |
| 5 | `temporaryData` | `HashMap<String, Object>` | Temporary data storage shared across CC methods within the same request lifecycle. Contains previously fetched CBS responses (e.g., `EKK0081A010`, `EDK0451A010`, `EKK0251B003`) and intermediate processing data (e.g., `PCRS_MAP`). |

**Instance fields / external state read by this method:**

| Field | Type | Business Description |
|-------|------|---------------------|
| `TEMPLATE_ID_EKK0081A010` | `String` | Constant key for the service contract header inquiry response stored in `temporaryData`. |
| `PCRS_MAP` | `String` | Constant key (`"PCRS_MAP"`) for retrieving price course (PCRS) data from `temporaryData`. |
| `TEMPORARY_DATA` template keys | Various | Keys for `EDK0451A010`, `EKK0251B003`, and `EKK0341A010` CBS messages stored in `temporaryData`. |

## 4. CRUD Operations / Called Services

| CRUD | SC / CBS | SC Code | Entity / DB | Operation Description |
|------|----------|---------|-------------|----------------------|
| R | `EDK0451A010` | EDK0451A010CBS | KK_T_EDK_CONTRACT_ALLOCATION | Contract allocation agreement inquiry (引当柱一意的照会) — retrieves allocation/contract agreement data when sales category is specified |
| R | `EKK0251B003` | EKK0251B003CBS | KK_T_EKK_SVC_LINE | Service contract line-item detail list (サービス契約回線内訳一覧照会) — fetches current active service contract lines for the given service contract number |
| U | `EKK0341A010` (pre-fetched) | EKK0341A010CBS | KK_T_EKK_SVC_CONTRACT | Equipment provision service contract information inquiry (機器提供サービス契約情報照会) — pre-fetched "before" state used as source data for the update |
| U | `EKK0341C230` | EKK0341C230CBS | KK_T_EKK_SVC_CONTRACT | Equipment provision service contract information change (機器提供サービス契約情報変更) — **main update** persisting all device contract fields including provider info, address, installation status, trial dates, and contract terms |
| U | `EKK0341C080` | EKK0341C080CBS | KK_T_EKK_SVC_CONTRACT_PCRS | Equipment provision service contract in-progress price code change (機器提供サービス契約施工中料金コード変更) — updates price course code when the PCRS changes during an unshipped contract |
| R | `EKK0121A010` | EKK0121A010CBS | KK_T_EKK_MOBILE_CONTRACT | Service contract: eo Mobile list (サービス契約:eoモバイル一覧) — queries eo Mobile service contract record to retrieve MAC address |
| U | `EKK0121C040` | EKK0121C040CBS | KK_T_EKK_MOBILE_CONTRACT | Service contract <eo Mobile> info change (サービス契約<eoモバイル>情報変更) — updates MAC address in the eo Mobile service contract when it has changed |
| R | `getKanriBasho` | (internal) | - | Retrieves management location codes and maps storage/contract codes for the update input |
| R | `getKikiShsKbtShiteiFlg` | (internal) | - | Retrieves the equipment provider specification flag |
| R | `getMskmDtlNo` | (internal) | - | Retrieves the service detail number (サービス内訳詳細番号) used in CBS parameter construction |
| R | `getNullToStr` | (internal) | - | Utility method converting null values to empty strings |
| R | `getSvcUpDtm` | (internal) | - | Retrieves the service update timestamp from the work area |
| R | `isMobile` | (internal) | - | Determines if the request context is the eo Mobile channel |
| R | `setKikiIchiranIkkatsuList` | (internal) | - | Refreshes the device list in the work area after contract update (list consolidation) |
| - | `setSvcUpDtm` | (internal) | - | Sets the update timestamp in the work area after each CBS invocation |

## 5. Dependency Trace

| # | Caller (Screen/Batch) | Call Chain (Full Path to this Method) | Terminal (SC / CRUD / Entity) |
|---|----------------------|--------------------------------------|-------------------------------|
| 1 | `execKikiIchiranKikiUpd` (JKKKikiIchiranKkUpdCC) | `execKikiIchiranKikiUpd` -> `execUpdateKktkSvckei` | `EKK0341C230 [U] KK_T_EKK_SVC_CONTRACT`, `EKK0341C080 [U] KK_T_EKK_SVC_CONTRACT_PCRS`, `EKK0121C040 [U] KK_T_EKK_MOBILE_CONTRACT`, `EDK0451A010 [R] KK_T_EDK_CONTRACT_ALLOCATION`, `EKK0251B003 [R] KK_T_EKK_SVC_LINE`, `setKikiIchiranIkkatsuList [-] work-area list refresh` |

## 6. Per-Branch Detail Blocks

**Block 1** — [SET] `ccMsg = (HashMap)param.getData(dataMapKey)` — Retrieve the message map from request parameters (L530)

| # | Type | Code |
|---|------|------|
| 1 | SET | `ccMsg = (HashMap<String, Object>)param.getData(dataMapKey)` // Message map from request |
| 2 | SET | `ekk0081a010cbsMsg = (CAANMsg)temporaryData.get(TEMPLATE_ID_EKK0081A010)` // Pre-fetched service contract header |

**Block 2** — [IF] `hambai_sbt` has value `(L534)` — Condition: `!"".equals(getNullToStr((String)ccMsg.get("hambai_sbt")))`

> If a sales category (販売種別) is specified, retrieve the contract allocation agreement data (引当柱一意的照会).

| # | Type | Code |
|---|------|------|
| 1 | SET | `edk0451a010IN[0] = {EDK0451A010CBSMsg.TEMPLATEID, TEMPLATE_ID_EDK0451A010}` // Template ID |
| 2 | SET | `edk0451a010IN[1] = {EDK0451A010CBSMsg.FUNC_CODE, FUNC_CODE_1}` // FUNC_CODE_1 = "1" |
| 3 | SET | `edk0451a010IN[2] = {EDK0451A010CBSMsg.KEY_HAMBAI_SBT_CD, ccMsg.get("hambai_sbt")}` // Sales category code |
| 4 | SET | `edk0451a010IN[3] = {EDK0451A010CBSMsg.KEY_UNYO_YMD, ccMsg.get("unyo_ymd")}` // Operation date |
| 5 | CALL | `edk0451a010cbsMsg = callSC(handle, scCall, param, dataMapKey, edk0451a010IN).getCAANMsgList(...)[0]` // Invoke EDK0451A010 CBS |

**Block 3** — [SET] Store EDK0451A010 result `(L547)`

| # | Type | Code |
|---|------|------|
| 1 | SET | `temporaryData.put(TEMPLATE_ID_EDK0451A010, edk0451a010cbsMsg)` // Store allocation agreement result |

**Block 4** — [CALL] `EKK0251B003` Service contract line-item detail list `(L551)`

> Fetches the current active service contract line items using the service contract number.

| # | Type | Code |
|---|------|------|
| 1 | SET | `ekk0251b003IN[0] = {EKK0251B003CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0251B003}` |
| 2 | SET | `ekk0251b003IN[1] = {EKK0251B003CBSMsg.FUNC_CODE, FUNC_CODE_1}` // FUNC_CODE_1 = "1" |
| 3 | SET | `ekk0251b003IN[2] = {EKK0251B003CBSMsg.KEY_SVC_KEI_NO, ccMsg.get("svc_kei_no")}` // Service contract number |
| 4 | CALL | `ekk0251b003cbsMsg = callSC(handle, scCall, param, dataMapKey, ekk0251b003IN).getCAANMsgList(...)[0]` |
| 5 | SET | `temporaryData.put(TEMPLATE_ID_EKK0251B003, ekk0251b003cbsMsg)` // Store result |

**Block 5** — [SET] Prepare reference data for update `(L558)`

| # | Type | Code |
|---|------|------|
| 1 | SET | `pcrsData = (Map<String, Object>)temporaryData.get(PCRS_MAP)` // PCRS_MAP = "PCRS_MAP" — Price course data |
| 2 | SET | `ekk0341a010cbsMsg_bf = (CAANMsg)temporaryData.get(TEMPLATE_ID_EKK0341A010)` // "Before" contract data |
| 3 | CALL | `kikiShsKbtShiteiFlg = getKikiShsKbtShiteiFlg(param, dataMapKey, temporaryData)` // Equipment provider specification flag |
| 4 | CALL | `mapBasho = getKanriBasho(ccMsg, edk0451a010cbsMsg)` // Management location + storage/contract codes |
| 5 | SET | `kikiShsAdManInputFlg = (String)ccMsg.get("kiki_shs_ad_man_input_flg")` // Manual address input flag |
| 6 | SET | `scrnId = getNullToStr((String)ccMsg.get("check_scrn_id"))` // Screen ID for address check control |

**Block 6** — [IF] `scrnId = KKW108` `(L587)` — v5.00.00 change

> When executed from the sub-screen (KKW108), skip address validation by forcing manual input flag to "1".
> Condition: `SCRN_ID_KKW108.equals(scrnId)` where `SCRN_ID_KKW108 = "KKW108"`

| # | Type | Code |
|---|------|------|
| 1 | SET | `kikiShsAdManInputFlg = "1"` // Force manual input flag for same-screen execution |

**Block 7** — [SET] Invert manual input flag to check level `(L595)`

| # | Type | Code |
|---|------|------|
| 1 | SET | `kikiSohusAdChkLv = "0"` if `kikiShsAdManInputFlg == "1"` (else `"1"`) // Invert: manual-input = skip-check |

**Block 8** — [CALL] `EKK0341C230` Main equipment provision service contract update `(L602)`

> This is the core update operation. It consolidates all device provider information (address, name, phone, storage code, installation specifications), contract conditions (trial dates, warranty, penalty), and service settings into a single CBS call. The input spans 50+ fields covering provider details, delivery specifications, installation specifications, and contract terms.

| # | Type | Code |
|---|------|------|
| 1 | SET | `ekk0341c230IN[0] = {TEMPLATEID, TEMPLATE_ID_EKK0341C230}` |
| 2 | SET | `...FUNC_CODE, ccMsg.get("func_code")` |
| 3 | SET | `...KKTK_SVC_KEI_NO, ccMsg.get("kktk_svc_kei_no")` |
| 4 | SET | `...KKTK_SBT_CD, ccMsg.get("kktk_sbt_cd")` |
| 5 | SET | `...HAMBAI_SBT_CD, ccMsg.get("hambai_sbt")` |
| 6 | SET | `...TAKNKIKI_MODEL_CD, ccMsg.get("taknkiki_model_cd")` |
| 7 | SET | `...KIKI_SEIZO_NO, ccMsg.get("kk_seizo_no")` |
| 8 | SET | `...HDD_CAPA_CD, pcrsData.get("hdd_capa_cd")` // From PCRS data |
| 9 | SET | `...TSUSHIN_KIKI_SET_CD, ekk0341a010cbsMsg_bf.getString(...)` // From before data |
| 10 | SET | `...KIKI_HKAT_SHITEI_SOKO_CD, mapBasho.get(TMP_KIKI_HKAT_SHITEI_SOKO_CD)` |
| 11 | SET | `...KIKI_HKAT_SHITEI_SKDN_CD, mapBasho.get(TMP_KIKI_HKAT_SHITEI_SKDN_CD)` |
| 12 | SET | `...KIKI_SOHUS_NM through KIKI_SOHUS_TELNO` // All provider address/name/phone fields |
| 13 | SET | `...KIKI_SHS_KBT_SHITEI_FLG, kikiShsKbtShiteiFlg` |
| 14 | SET | `...KIKI_STC_SAKI_AD_CD through KIKI_STC_SAKI_BNCHIGO` // Forward address from EKK0251B003 |
| 15 | SET | `...FTRIAL_KANYU_YMD through HONKANYU_IKO_KIGEN_YMD` // Trial and permanent installation dates |
| 16 | SET | `...HAISO_REQ_SHITEI_YMD, ccMsg.get("haiso_req_shitei_ymd")` |
| 17 | SET | `...KIKI_SHS_AD_MAN_INPUT_FLG, kikiShsAdManInputFlg` // v5.00.00: uses inverted flag |
| 18 | SET | `...KAISHU_KIKI_UM, ekk0341a010cbsMsg_bf.getString(...)` |
| 19 | SET | `...UPD_DTM_BF, getSvcUpDtm(param)` // Previous update timestamp |
| 20 | SET | `...KIKI_SOHUS_AD_CHK_LV, kikiSohusAdChkLv` // Address check level |
| 21 | SET | `...KIKI_STI_JI_KRIPLACE_SKCD, mapBasho.get(TMP_KIKI_STI_JI_KRIPLACE_SKCD)` |
| 22 | SET | `...SVC_STA_KISAN_YMD, getNullToStr(ccMsg.get("keiyaku_ymd"))` // v8.00.00: contract start date |
| 23 | CALL | `ekk0341c230cbsMsg_out = callSC(handle, scCall, param, dataMapKey, ekk0341c230IN)` |
| 24 | SET | `setSvcUpDtm(param, ekk0341c230cbsMsg_out.getString(EKK0341C230CBSMsg.UPD_DTM))` |

**Block 9** — [IF] `func_code = FUNC_CODE_1 && svcKeiStat = SVC_KEI_STAT_UKZUMI` `(L695)` — v5.01.01 change

> Condition: `FUNC_CODE_1.equals(ccMsg.get("func_code")) && SVC_KEI_STAT_UKZUMI.equals(svcKeiStat)` where `FUNC_CODE_1 = "1"` and `SVC_KEI_STAT_UKZUMI = "010"` (UKZUMI = unshipped).
> This branch handles price course code changes during unshipped contracts. If the PCRS_CD before and after differ, it invokes a separate CBS to update the in-progress price code.

| # | Type | Code |
|---|------|------|
| 1 | SET | `svcKeiStat = getNullToStr(ekk0081a010cbsMsg.getString(EKK0081A010CBSMsg1List.SVC_KEI_STAT))` |
| 2 | IF | `func_code = "1" && svcKeiStat = "010"` // FUNC_CODE_1 && SVC_KEI_STAT_UKZUMI |
| 3 | SET | `pcrsCd_bf = getNullToStr(ekk0341a010cbsMsg_bf.getString(EKK0341A010CBSMsg1List.PCRS_CD))` // Before price course |
| 4 | SET | `pcrsCd_af = getNullToStr((String)pcrsData.get("pcrs_cd"))` // After price course |
| 5 | IF | `!pcrsCd_bf.equals(pcrsCd_af)` // Price course changed |
| 6 | SET | `pplan_cd_af = getNullToStr((String)pcrsData.get("pplan_cd"))` // After plan code |
| 7 | SET | Build `ekk0341c080IN` with: TEMPLATEID, FUNC_CODE, KKTK_SVC_KEI_NO, GENE_ADD_DTM, PCR S_CD, PPLAN_CD, MSKM_DTL_NO, PNLTY_HASSEI_CD, UPD_DTM_BF, TAKNKIKI_MODEL_CD |
| 8 | CALL | `ekk0341C080cbsMsg_out = callSC(handle, scCall, param, dataMapKey, ekk0341c080IN)` // EKK0341C080 CBS |
| 9 | SET | `setSvcUpDtm(param, ekk0341C080cbsMsg_out.getString(EKK0341C080CBSMsg.UPD_DTM))` |

**Block 10** — [IF] `isMobile(param, dataMapKey, temporaryData)` `(L721)`

> Condition: `isMobile(param, dataMapKey, temporaryData)` — determines if the request is from the eo Mobile channel.
> If mobile, query the eo Mobile service contract and update the MAC address if it has changed.

| # | Type | Code |
|---|------|------|
| 1 | CALL | `isMobile(param, dataMapKey, temporaryData)` // Check if eo Mobile channel |
| 2 | SET | Build `ekk0121a010IN`: TEMPLATEID, FUNC_CODE="2", KEY_SVC_KEI_NO, KEY_GENE_ADD_DTM |
| 3 | CALL | `CAANMsg[] ekk0121a010cbsMsg = callSC(handle, scCall, param, dataMapKey, ekk0121a010IN).getCAANMsgList(...)` // EKK0121A010 |

**Block 10.1** — [IF] `ekk0121a010cbsMsg != null && length >= 1` `(L730)`

| # | Type | Code |
|---|------|------|
| 1 | SET | `macCd_bf = getNullToStr(ekk0121a010cbsMsg[0].getString(EKK0121A010CBSMsg1List.MACAD))` // Current MAC |
| 2 | IF | `!macCd_bf.equals(ccMsg.get("mac_ad"))` // MAC address changed |

**Block 10.1.1** — [CALL] `EKK0121C040` eo Mobile service contract update `(L740)`

> Updates the eo Mobile service contract with the new MAC address and all associated service contract fields (payment method, trial dates, installation info, penalty info, etc.). This CBS has 36+ input fields covering the full mobile service contract record.

| # | Type | Code |
|---|------|------|
| 1 | SET | Build `ekk0121c040IN`: TEMPLATEID, FUNC_CODE, SVC_KEI_NO, MSKM_DTL_NO, SEIRI_NO, MENKAIHAT_ANKEN_NO, ID_SOKHOSHO_OUTPUT_YH, SKEKKA_CD, SKEKKA_DTL_CD, SKEKKA_HOKI_CD, SKEKKA_SEND_CD, PAYWAY_KEIZOKU_FLG, FTRIAL_KANYU_YMD, FTRIAL_PRD_ENDYMD, HONKANYU_YMD, HONKANYU_IKO_KIGEN_YMD, LETTER_HASSO_SHIWAKE_DIV, THNX_LETTER_SHS_CD, WEB_OP_ADD_FAIL_FLG, PNLTY_HASSEI_CD, IDO_DIV, INTR_CD, IDO_NG_STAT_CD, WORK_RRK_BIKO, AUTO_SHOSA_TRAN_STAT_CD, UPD_DTM_BF, JIGYOSHA_KEI_ID, MACAD, JGS_DSL_INFO_RNKI_YMD, JGS_DSL_INFO_RNKI_UK_YMD, JGS_USE_STP_RNKI_YMD, JGS_USE_STP_UK_YMD, JGS_USE_STP_RLS_RNKI_YMD, JGS_USE_STP_RLS_UK_YMD, JGS_STP_TEL_RRK_YMD, JGS_STP_SKAI_TEL_RRK_YMD, JGS_DSL_TEL_RRK_YMD, COURSECHG_NG_STAT_CD, JGS_COURSECHG_RNK_YMD, COURSECHG_TCH_ML_SKSI_YMD, USIM_RTN_YMD_KOPT, USIM_RTN_YMD_MBL_JGS |
| 2 | CALL | `ekk0121c040cbsMsg_out = callSC(handle, scCall, param, dataMapKey, ekk0121c040IN)` // EKK0121C040 CBS |
| 3 | SET | `setSvcUpDtm(param, ekk0121c040cbsMsg_out.getString(EKK0121C040CBSMsg.UPD_DTM))` |

**Block 11** — [IF] `func_code = FUNC_CODE_1` `(L814)`

> Condition: `FUNC_CODE_1.equals(ccMsg.get("func_code"))` where `FUNC_CODE_1 = "1"`.
> After all CBS updates complete, refresh the device list in the work area so the next screen render shows the updated data.

| # | Type | Code |
|---|------|------|
| 1 | CALL | `setKikiIchiranIkkatsuList(handle, scCall, param, dataMapKey, temporaryData)` // Refresh device list |
| 2 | RETURN | `void` // Method ends |

## 7. Glossary

| Term | Type | Business Meaning |
|------|------|------------------|
| `kiki` | Field prefix | 機器 — Equipment / device in telecom context |
| `svckei` | Field prefix | サービス契約 — Service contract |
| `svc_kei_no` | Field | Service contract number — unique identifier for a service contract |
| `svc_kei_stat` | Field | Service contract status — "010" = UKZUMI (unshipped) |
| `SVC_KEI_STAT_UKZUMI` | Constant | "010" — Service contract status meaning "Unshipped" (未発送済み), i.e., the contract has not yet been shipped/activated |
| `hambai_sbt` | Field | 販売種別 — Sales category code — classifies the type of sale |
| `func_code` | Field | Function code — "1" indicates the main update/registration operation |
| `FUNC_CODE_1` | Constant | "1" — Primary function code for the update/registration path |
| `pcrs_cd` | Field | 料金コースコード — Price course code — the pricing plan associated with the service contract |
| `PCRS_MAP` | Constant | "PCRS_MAP" — Key for the price course data section in temporaryData |
| `mac_ad` | Field | MAC address — network interface hardware address of the equipment |
| `kiki_sofu_*` | Field prefix | 機器提供先 — Equipment provision destination — provider's address/name fields (nm = name, kana = katakana, ad_cd = address code, pcd = postal code, state = prefecture, city = city, oaztsu = district, azcho = town/chome, bnchigo = block number, adrttm = building name room, adrrm = address line 2, telno = phone) |
| `kiki_shs_kbt_shitei_flg` | Field | 機器提供先指定フラグ — Equipment provider specification flag |
| `kiki_shs_ad_man_input_flg` | Field | 機器提供先住所手動入力フラグ — Equipment provider address manual input flag |
| `kiki_sohus_ad_chk_lv` | Field | 機器提供先住所チェックレベル — Equipment provider address check level — inverted from manual input flag |
| `kktk_svc_kei_no` | Field | 機器提供サービス契約番号 — Equipment provision service contract number |
| `kktk_sbt_cd` | Field | 機器提供サービス種別コード — Equipment provision service type code |
| `taknkiki_model_cd` | Field | 賃貸機器モデルコード — Leased equipment model code |
| `kk_seizo_no` | Field | 機器製造番号 — Equipment manufacturing serial number |
| `hdd_capa_cd` | Field | HDD capacity code |
| `haiso_div_cd` | Field | 配送区分コード — Delivery type code |
| `haiso_way_cd` | Field | 配送方式コード — Delivery method code |
| `ido_div` | Field | 異動区分 — Move/change type code |
| `huka_info` | Field | 付加情報 — Additional information code |
| `keiyaku_ymd` | Field | 契約年月日 — Contract start date |
| `FTRIAL_KANYU_YMD` | Field | フェリータル輸入年月日 — Trial input date |
| `FTRIAL_PRD_ENDYMD` | Field | フェリータル契約終了日 — Trial period end date |
| `HONKANYU_YMD` | Field | 本輸入年月日 — Permanent installation date |
| `HONKANYU_IKO_KIGEN_YMD` | Field | 本輸入以降期日 — Date after permanent installation |
| `HOSHO_CD` | Field | 保証コード — Warranty code |
| `PNLTY_HASSEI_CD` | Field | ペナルティ発生コード — Penalty occurrence code |
| `KAISEN_PLACE_*` | Field prefix | 回線場所 — Line location / forwarding destination fields (from EKK0251B003) |
| `KISN_PLC_KKK_SEIRI_CHU_FLG` | Field | 機器供給先処理中フラグ — Equipment supply destination processing flag |
| `AD_MI_FIX_FLG` | Field | アドレス未確定フラグ — Address undetermined flag |
| `JIGYOSHA_KEI_ID` | Field | 事業者種別ID — Business operator type ID |
| `EDK0451A010` | CBS | 引当柱一意的照会 — Contract allocation agreement inquiry — retrieves allocation/contract agreement data |
| `EKK0251B003` | CBS | サービス契約回線内訳一覧照会(現在利用中) — Service contract line-item detail list (currently active) |
| `EKK0341A010` | CBS | 機器提供サービス契約情報照会 — Equipment provision service contract information inquiry |
| `EKK0341C230` | CBS | 機器提供サービス契約情報変更 — Equipment provision service contract information change (main update) |
| `EKK0341C080` | CBS | 機器提供サービス契約施工中料金コード変更 — Equipment provision service contract in-progress price code change |
| `EKK0121A010` | CBS | サービス契約:eoモバイル一覧 — Service contract: eo Mobile list |
| `EKK0121C040` | CBS | サービス契約<eoモバイル>情報変更 — Service contract <eo Mobile> information change |
| `SCRN_ID_KKW108` | Constant | "KKW108" — Screen ID for the KKW108 device contract screen |
| `setKikiIchiranIkkatsuList` | Method | 機器一覧一括リスト更新 — Refreshes the consolidated device list in the work area after contract update |
| `callSC` | Method | Service component call — generic method for invoking CBS through the service component framework |
| `getKanriBasho` | Method | 管理場所取得 — Retrieves management location codes (storage, construction company, reservation office) |
| `getMskmDtlNo` | Method | サービス内訳詳細番号取得 — Retrieves the service detail number for CBS parameter construction |
| `isMobile` | Method | eo Mobile channel detection — checks if the current request context is the eo Mobile channel |
| `setSvcUpDtm` | Method | 更新タイムスタンプ設定 — Sets the service update timestamp in the work area |
| `getSvcUpDtm` | Method | 更新タイムスタンプ取得 — Retrieves the service update timestamp from the work area |
| `UKZUMI` | Acronym | 未発送済み — Unshipped (contract status, value "010") |
| `eo Mobile` | Business term | NTT Docomo's mobile service brand — the eo Mobile channel is a specific distribution channel for mobile service contracts |
| `PCRS` | Acronym | プランコース — Plan/course — pricing plan code |
| `GENE_ADD_DTM` | Field | 生成入力日時 — Generation input date/time (auto-generated timestamp) |
| `UPD_DTM_BF` | Field | 更新前日時 — Update-before timestamp (previous state) |