## 5. Dependency Trace

| # | Caller (Screen/Batch) | Call Chain (Full Path to this Method) | Terminal (SC / CRUD / Entity) |
|---|----------------------|--------------------------------------|-------------------------------|
| 1 | Screen:FUSV0134 | `FUSV0134OPOperation.target7.invoke` -> `JFUSetVariTsushinKikiMskmCC.setVariTsushinKikiMskm` | `executeSC EKK0011D020 [C] KK_T_MSKM` |

## 6. Per-Branch Detail Blocks

### Block 1 - IF (funcCode check) (L888)

> Validate function code. If not "1" (Check and Register), return early.

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `String funcCode = getFuncCode(param, fixedText);` // Acquire function code [-> getFuncCode] |
| 2 | IF | `!JPCModelConstant.FUNC_CD_1.equals(funcCode)` [FUNC_CD_1="1"] |
| 3 | RETURN | `return param;` // Early return if not Check & Register mode |

### Block 2 - Data Extraction (L890)

> Extract data structures from param using fixedText as key.

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `HashMap inMap = (HashMap) param.getData(fixedText);` // Get param data map |
| 2 | EXEC | `ArrayList workLst = (ArrayList) inMap.get(KKTK_SVKEI_ADD_LIST)` [KKTK_SVKEI_ADD_LIST="kktk_svkei_add_list"] |
| 3 | EXEC | `HashMap inParamMap = (HashMap) workLst.get(JFUStrConst.I_ZERO)` // First element of work list |

### Block 3 - Parameter Extraction (L893-915)

> Extract all input parameters from inParamMap and inMap.

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `inParamSvcKeiNo = inParamMap.get(IN_PARAM_SVC_KEI_NO)` // Service contract number |
| 2 | EXEC | `inParamSysId = inParamMap.get(IN_PARAM_SYSID)` // SYSID |
| 3 | EXEC | `inParamIdoDiv = inParamMap.get(IN_PARAM_IDO_DIV)` // Displacement division |
| 4 | EXEC | `prgTkjk1 = inMap.get(IN_PARAM_PRG_TKJK_1)` // Progress special item 1 |
| 5 | EXEC | `prgTkjk2 = inMap.get(IN_PARAM_PRG_TKJK_2)` // Progress special item 2 |
| 6 | EXEC | `lastUpdDtm = inMap.get(HAITA_SVC_KEI_UPD_DTM)` // Last update datetime |
| 7 | EXEC | `inParamSvkeiKaisenUwNo = inMap.get("svc_kei_kaisen_ucwk_no")` // Service contract line detail number |
| 8 | EXEC | `inParamOwnTknRouterKind = inMap.get("own_tkn_router_kind")` // Owned multi-func router kind |
| 9 | EXEC | `inParamKikiSoryoUm = inMap.get("kiki_soryo_um")` // Equipment charge yes/no |
| 10 | EXEC | `inKojiakNo = inMap.get(IN_PARAM_KU0011_KOJIAK_NO)` // Project case number |
| 11 | EXEC | `cx_hantei_flg = inMap.get(IN_PARAM_CX_HANTEI_FLG)` // CX case switch flag |
| 12 | EXEC | `tk_hoshiki_cd = inMap.get(IN_PARAM_TK_HOSHIKI_CD)` // Delivery method code |
| 13 | EXEC | `tk_hoshiki_pattern_cd = inMap.get(IN_PARAM_TK_HOSHIKI_PATTERN_CD)` // Delivery method pattern code |
| 14 | EXEC | `prc_grp_cd = inMap.get(IN_PRC_GRP_CD)` // Price group code |
| 15 | EXEC | `hhs_1gonly_flg = inMap.get(IN_HHS_1GONLY_FLG)` // Fiber 1G-only flag |

### Block 4 - tempData Build & Delivery Way (L923-938)

> Build tempData map and set delivery way based on whether it is construction company delivery.

| # | Type | Code |
|---|------|------|
| 1 | SET | `cancelKktkList = new ArrayList()` // Cancel device list |
| 2 | SET | `tempData = new HashMap` // Internal work map |
| 3 | EXEC | `tempData.put(EKK0341D010CBSMsg.SYSID, inParamSysId)` |
| 4 | EXEC | `tempData.put(EKK0341D010CBSMsg.SVC_KEI_KAISEN_UCWK_NO, inParamSvkeiKaisenUwNo)` |
| 5 | EXEC | `tempData.put("cx_hantei_flg", cx_hantei_flg)` |
| 6 | IF | `isKojiHaiso(inKojiakNo)` [Construction Co. delivery] |
| 7 | EXEC | `tempData.put(HAISO_WAY_CD, JFUStrConst.CD01148_2)` // Construction company delivery |
| 8 | EXEC | `tempData.put(KIKI_HUKA_INFO_CD, JFUStrConst.EMPTY)` |
| 9 | ELSE | |
| 10 | EXEC | `tempData.put(HAISO_WAY_CD, JFUStrConst.CD01148_1)` // Customer direct delivery |
| 11 | EXEC | `tempData.put(KIKI_HUKA_INFO_CD, JFUStrConst.CD00866_004)` |
| 12 | END_IF | |
| 13 | EXEC | `tempData.put(HAISOCC_HAISO_RSV_YMD, JFUStrConst.EMPTY)` |
| 14 | EXEC | `tempData.put(HAISOCC_HAISO_REQ_SHITEI_YMD, JFUStrConst.EMPTY)` |
| 15 | EXEC | `mskmshoDtlNo = getMskmshoDtlNoSibn(handle, param, fixedText)` // Generate application detail no. |

### Block 5 - Step 1: Application Content Recognition Registration (L944-956)

> Register application content, then retrieve generated application number and detail number.

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `initData(param, fixedText, IN_COLUMN_LIST_1)` // Initialize data |
| 2 | EXEC | `setInMapMskmRegist(param, fixedText, inParamSysId, mskmshoDtlNo)` // Set mapping |
| 3 | CALL | `executeSC(handle, param, fixedText, TEMPLATE_ID_1, ...)` [SC: EKK0011D020] |
| 4 | EXEC | `mskmNo = getTemplateValue(inMap, getKey(TEMP_TEMPLATE_KEY_1), EKK0011D020CBSMsg.MSKM_NO)` |
| 5 | EXEC | `mskmDetailNo = getTemplateListValue(inMap, getKey(...), EKK0011D020CBSMsg1List.MSKM_DTL_NO, 0)` |
| 6 | EXEC | `updDtmMskm = getTemplateValue(inMap, getKey(...), EKK0011D020CBSMsg.UPD_DTM)` |

### Block 6 - Step 2: Service Contract Line Detail List (L958-963)

> Search service contract line detail list by service contract number.

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `initData(param, fixedText, IN_COLUMN_LIST_16)` |
| 2 | EXEC | `setInMapKaisenUwSvcKeiSearch(param, fixedText, inParamSvcKeiNo)` |
| 3 | CALL | `executeSC(handle, param, fixedText, TEMPLATE_ID_16, ...)` [SC: EKK0251B001] |
| 4 | EXEC | `kaisenUwMap = getTemplateList(inMap, getKey(TEMP_TEMPLATE_KEY_16), ...).get(0)` |

### Block 7 - Step 3: Service Contract Line Detail Uniqueness Check (L965-971)

> Uniqueness check of service contract line detail.

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `initData(param, fixedText, IN_COLUMN_LIST_17)` |
| 2 | EXEC | `setInMapKaisenUwUniqueSearch(param, fixedText, kaisenUwMap.SVC_KEI_KAISEN_UCWK_NO, kaisenUwMap.GENE_ADD_DTM)` |
| 3 | CALL | `executeSC(handle, param, fixedText, TEMPLATE_ID_17, ...)` [SC: EKK0251A010] |
| 4 | EXEC | `kaisenUwUniqueMap = getTemplateList(inMap, getKey(TEMP_TEMPLATE_KEY_17), ...).get(0)` |

### Block 8 - Step 4: Customer Uniqueness Check (L973-979)

> Check customer uniqueness by SYSID.

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `initData(param, fixedText, IN_COLUMN_LIST_18)` |
| 2 | EXEC | `setInMapCustomerSearch(param, fixedText, inParamSysId)` |
| 3 | CALL | `executeSC(handle, param, fixedText, TEMPLATE_ID_18, ...)` [SC: ECK0011A010] |
| 4 | EXEC | `custMap = getTemplateListMap(inMap, getKey(TEMP_TEMPLATE_KEY_18), ..., 0)` |

### Block 9 - Step 5: Hanger Uniqueness Check (L981-993)

> Check hanger uniqueness and retrieve shelf code.

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `initData(param, fixedText, IN_COLUMN_LIST_20)` |
| 2 | EXEC | `setInMapHkAtShelfSearch(param, fixedText)` |
| 3 | CALL | `executeSC(handle, param, fixedText, TEMPLATE_ID_20, ...)` [SC: EDK0451A010] |
| 4 | EXEC | `shelfCd = getTemplateListValue(inMap, getKey(TEMP_TEMPLATE_KEY_20), ..., SHELF_CD, 0)` |

### Block 10 - IF (Multi-functional router check) (L996-1021)

> If the service is a multi-functional router (isKktkSvcTakino), check for existing KKOP service contracts.

| # | Type | Code |
|---|------|------|
| 1 | SET | `tknRouterFlag = false` |
| 2 | SET | `tknRouterKktkSvcKeiNo = null` |
| 3 | IF | `isKktkSvcTakino(inParamMap.get(IN_PARAM_KKTK_SVC_CD))` [Multi-func router] |
| 4 | EXEC | `initData(param, fixedText, IN_COLUMN_LIST_KKOP_SVKEI_LIST_SHOKAI)` |
| 5 | EXEC | `setInMapKkOpSvcKeiListShokai(param, fixedText, inParamSysId, inParamSvkeiKaisenUwNo)` |
| 6 | EXEC | `ignoreSearchError(param, fixedText)` |
| 7 | CALL | `executeSC(handle, param, fixedText, TEMPLATE_ID_KKOP_SVKEI_LIST_SHOKAI, ...)` [SC: EKK2811B503] |
| 8 | FOR | `dataMap : getTemplateList(...)` |
| 9 | IF | `KKOP_SVC_KEI_STAT_MUKO.contains(kkopSvcKeiStat)` [Invalid status - skip] |
| 10 | EXEC | `continue` |
| 11 | END_IF | |
| 12 | SET | `tknRouterFlag = true` |
| 13 | SET | `tknRouterKktkSvcKeiNo = dataMap.get(EKK2811B503CBSMsg1List.KKTK_SVC_KEI_NO)` |
| 14 | END_FOR | |
| 15 | END_IF | |

### Block 11 - Step 6 & 8: Phone Service Contract (L1023-1061)

> Get phone service contract and invoice contract if phone exists.

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `initData(param, fixedText, IN_COLUMN_LIST_EKK0241B002)` |
| 2 | EXEC | `setInMapEKK0241B002(param, fixedText, inParamSvkeiKaisenUwNo)` |
| 3 | CALL | `executeSC(handle, param, fixedText, TEMPLATE_ID_EKK0241B002, ...)` [SC: EKK0241B002] |
| 4 | EXEC | `svcKeiTelList = getTemplateList(inMap, getKey(TEMP_TEMPLATE_KEY_EKK0241B002), ...)` |
| 5 | FOR | `svcKeiTelMap : svcKeiTelList` |
| 6 | IF | `CD00130_02.equals(svcCd) && !SVC_KEI_STAT_MUKO.contains(svcKeiStat)` [Phone SVC & active] |
| 7 | SET | `svcKeiNoTel = svcKeiTelMap.SVC_KEI_NO` |
| 8 | SET | `svcKeiStatTel = svcKeiStat` |
| 9 | END_IF | |
| 10 | IF | `CD00130_01.equals(svcCd) && !SVC_KEI_STAT_MUKO.contains(svcKeiStat)` [Network SVC & active] |
| 11 | SET | `svcKeiStatNet = svcKeiStat` |
| 12 | END_IF | |
| 13 | END_FOR | |

### Block 12 - IF (executeHaisoYotei) (L1074-1086)

> Calculate and get delivery scheduled date if needed.

| # | Type | Code |
|---|------|------|
| 1 | IF | `executeHaisoYotei(tk_hoshiki_cd, tk_hoshiki_pattern_cd, svcKeiStatNet, svcKeiNoTel, prc_grp_cd, hhs_1gonly_flg, isKojiHaiso(inKojiakNo))` |
| 2 | EXEC | `resultHaiso = getHaisoReqShiteiYmd(handle, param, inParamSvcKeiNo, svcKeiStatNet, svcKeiNoTel, svcKeiStatTel)` |
| 3 | SET | `haiso_rsv_ymd = resultHaiso.get(HAISOCC_HAISO_RSV_YMD)` |
| 4 | SET | `haiso_req_shitei_ymd = resultHaiso.get(HAISOCC_HAISO_REQ_SHITEI_YMD)` |
| 5 | EXEC | `tempData.put(HAISOCC_HAISO_RSV_YMD, haiso_rsv_ymd)` |
| 6 | EXEC | `tempData.put(HAISOCC_HAISO_REQ_SHITEI_YMD, haiso_req_shitei_ymd)` |
| 7 | EXEC | `printDebugLog(...)` // Log delivery dates |
| 8 | END_IF | |

### Block 13 - IF (Phone invoice contract) (L1089-1120)

> If phone service exists, get invoice contract number and pricing code.

| # | Type | Code |
|---|------|------|
| 1 | IF | `!JFUBPCommon.isNull(svcKeiNoTel)` [Has phone SVC] |
| 2 | EXEC | `initData(param, fixedText, IN_COLUMN_LIST_EKK0321B002)` |
| 3 | EXEC | `setInMapKakinsSearch(param, fixedText, svcKeiNoTel)` |
| 4 | CALL | `executeSC(handle, param, fixedText, TEMPLATE_ID_EKK0321B002, ...)` [SC: EKK0321B002] |
| 5 | EXEC | `seikyKeiNoTel = getTemplateListValue(inMap, getKey(TEMP_TEMPLATE_KEY_EKK0321B002), ..., SEIKY_KEI_NO, 0)` |
| 6 | EXEC | `initData(param, fixedText, IN_COLUMN_LIST_2)` |
| 7 | EXEC | `setInMapSvcKeiUniqueSearch(param, fixedText, svcKeiNoTel)` |
| 8 | CALL | `executeSC(handle, param, fixedText, TEMPLATE_ID_2, ...)` [SC: EKK0081A010] |
| 9 | EXEC | `pcrsCdTel = getTemplateListValue(inMap, getKey(TEMP_TEMPLATE_KEY_2), ..., PCRSCD, 0)` |
| 10 | END_IF | |

### Block 14 - FOR (Device List Loop) (L1123-1574)

> Main device processing loop. Processes each device in the work list.

| # | Type | Code |
|---|------|------|
| 1 | FOR | `i from 0 to workLst.size()` |
| 2 | EXEC | `workMap = workLst.get(i)` |
| 3 | EXEC | `inParamMskmCnt = parseInt(workMap.get(IN_PARAM_MSKM_CNT))` // Order quantity |
| 4 | EXEC | `inParamSethnCnt = parseInt(workMap.get(IN_PARAM_SETHN_CNT))` // Set quantity |
| 5 | EXEC | `inParamKktkSvcKeiNo = workMap.get(IN_PARAM_KKTK_SVC_KEI_NO)` // Device SVC contract no. |
| 6 | EXEC | `inParamKktkSvcCd = workMap.get(IN_PARAM_KKTK_SVC_CD)` // Device service code |
| 7 | EXEC | `inParamPcrsCd = workMap.get(IN_PARAM_PCRS_CD)` // Pricing code |
| 8 | EXEC | `inParamPplanCd = workMap.get(IN_PARAM_PPLAN_CD)` // Price plan code |
| 9 | EXEC | `inParamTknkikiModelCd = workMap.get(IN_PARAM_TAKNKIKI_MODEL_CD)` |
| 10 | EXEC | `inParamSeikyKeiNo = workMap.get(IN_PARAM_SEIKY_KEI_NO)` // Invoice contract no. |
| 11 | IF | `JFUBPCommon.isNull(inParamSeikyKeiNo)` |
| 12 | SET | `inParamSeikyKeiNo = seikyKeiNoTel` // Fallback to phone invoice |
| 13 | END_IF | |
| 14 | IF | `isKktkSvcTakino(inParamKktkSvcCd)` [Multi-func router] |
| 15 | SET | `inParamTknkikiModelCd = JFUStrConst.EMPTY` |
| 16 | END_IF | |

### Block 14.1 - Work Param Check (nested in Block 14) (L1164-1177)

> Check work parameter settlement value.

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `setInMapWorkParam(param, fixedText)` |
| 2 | CALL | `executeSC(handle, param, fixedText, TEMPLATE_ID_EZM0321A010, ...)` [SC: EZM0321A010] |
| 3 | IF | `isExistsTemplateDetail(inMap, TEMP_TEMPLATE_KEY_EZM0321A010, ...)` |
| 4 | EXEC | `tnmt_buy_uk_tntsha_nm = getTemplateListValue(inMap, ..., WORK_PARAM_SETTE_VALUE, 0)` |
| 5 | END_IF | |

### Block 14.2 - IF (ONU Conversion) (nested in Block 14) (L1180-1193)

> If ONU conversion and standard router type, handle registration immediately.

| # | Type | Code |
|---|------|------|
| 1 | IF | `isOnuKokanKoji(inMap) && OWN_TKN_RT_KIND_0.equals(inParamOwnTknRouterKind)` |
| 2 | CALL | `lastUpdDtm = setKkOpSvcKeiToroku(handle, param, fixedText, tknRouterKktkSvcKeiNo, ...)` |
| 3 | SET | `inParamKktkSvcKeiNo = ""` |
| 4 | SET | `inParamOwnTknRouterKind = ""` |
| 5 | SET | `tknRouterKktkSvcKeiNo = ""` |
| 6 | SET | `tknRouterFlag = false` |
| 7 | END_IF | |

### Block 14.3 - FOR (Item Count Loop) (nested in Block 14) (L1195-1460)

> Inner loop for each item (mskmCnt * sethnCnt).

| # | Type | Code |
|---|------|------|
| 1 | FOR | `j from 0 to (inParamMskmCnt * inParamSethnCnt)` |
| 2 | SET | `kktkSvcKeiNoMap = new HashMap()` // Delivery receipt map |
| 3 | SET | `kojiKktkSvcKeiMap = new HashMap()` // Construction co. map |
| 4 | IF | `isKktkSvcTakino(inParamKktkSvcCd) && !isNull(inParamKktkSvcKeiNo)` [Has old device] |

### Block 14.3.1 - Old Device Search (nested in Block 14.3) (L1205-1211)

> Search existing device service contract.

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `initData(param, fixedText, IN_COLUMN_LIST_27)` |
| 2 | EXEC | `setInMapKktkSvcKeiUqSearch(param, fixedText, inParamKktkSvcKeiNo)` |
| 3 | CALL | `executeSC(handle, param, fixedText, TEMPLATE_ID_27, ...)` [SC: EKK0341A010] |
| 4 | EXEC | `kikiInfoMap = getTemplateListMap(inMap, getKey(TEMP_TEMPLATE_KEY_27), ..., 0)` |
| 5 | EXEC | `kktkSvcKeiStatOwn = kikiInfoMap.get(EKK0341A010CBSMsg1List.KKTK_SVC_KEI_STAT)` |

### Block 14.3.2 - IF (isKojiHaiso) (nested in Block 14.3.1) (L1212-1220)

> If construction company delivery, collect cancel info.

| # | Type | Code |
|---|------|------|
| 1 | IF | `isKojiHaiso(inKojiakNo)` |
| 2 | EXEC | `cancelKktkList.add(setKojiCancelInfo(kikiInfoMap))` |
| 3 | SET | `geneAddDtm = kikiInfoMap.get(EKK0341A010CBSMsg1List.GENE_ADD_DTM)` |
| 4 | EXEC | `kktkSvcKeiNoMap.put(JKKKojiAnkenConstCC.CHGBF_KKTK_SVC_KEI_NO, inParamKktkSvcKeiNo)` |
| 5 | EXEC | `kktkSvcKeiNoMap.put(JKKKojiAnkenConstCC.CHGBF_KKTK_SVC_KEI_NO_GENE_ADD_DTM, geneAddDtm)` |
| 6 | END_IF | |

### Block 14.3.3 - Device Info Change (nested in Block 14.3.1) (L1223-1233)

> Update device service contract info.

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `initData(param, fixedText, IN_COLUMN_LIST_28)` |
| 2 | EXEC | `setInMapKktkSvcKeiInfoChg(param, fixedText, kikiInfoMap, lastUpdDtm, inParamIdoDiv, tempData)` |
| 3 | CALL | `executeSC(handle, param, fixedText, TEMPLATE_ID_28, ...)` [SC: EKK0341C230] |
| 4 | EXEC | `lastUpdDtm = getTemplateValue(inMap, getKey(TEMP_TEMPLATE_KEY_28), EKK0341C230CBSMsg.UPD_DTM)` |

### Block 14.3.4 - IF (Return non-router) (nested in Block 14.3.1) (L1238-1304)

> Handle return and registration for non-multi-functional routers.

| # | Type | Code |
|---|------|------|
| 1 | IF | `isNull(inParamOwnTknRouterKind)` [Non-router - needs return] |
| 2 | EXEC | `henpinOutMap = new HashMap()` |
| 3 | CALL | `JKKBpCommon.createHmpin(param, handle, inParamKktkSvcKeiNo, inParamIdoDiv, henpinOutMap, fixedText)` // Return receipt |
| 4 | IF | `CD00056_020.equals(kktkSvcKeiStatOwn)` [Inspection completed] |

### Block 14.3.4.1 - Contract Cancellation (L1249-1261)

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `initData(param, fixedText, IN_COLUMN_LIST_29)` |
| 2 | EXEC | `setInMapKktkSvcKeiCancel(param, fixedText, inParamKktkSvcKeiNo, mskmDetailNo, inParamIdoDiv, lastUpdDtm)` |
| 3 | CALL | `executeSC(handle, param, fixedText, TEMPLATE_ID_29, ...)` [SC: EKK0341C330] |
| 4 | EXEC | `lastUpdDtm = getTemplateValue(inMap, getKey(TEMP_TEMPLATE_KEY_29), EKK0341C330CBSMsg.UPD_DTM)` |
| 5 | ELSE | |

### Block 14.3.4.2 - DSL Cancellation (L1267-1304)

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `initData(param, fixedText, IN_COLUMN_LIST_10)` |
| 2 | EXEC | `setInMapKktkSvcKeiDsl(param, fixedText, inParamKktkSvcKeiNo, lastUpdDtm, mskmDetailNo, inParamIdoDiv)` |
| 3 | CALL | `executeSC(handle, param, fixedText, TEMPLATE_ID_10, ...)` [SC: EKK0341C340] |
| 4 | EXEC | `lastUpdDtm = getTemplateValue(inMap, getKey(TEMP_TEMPLATE_KEY_10), EKK0341C340CBSMsg.UPD_DTM)` |
| 5 | EXEC | `initData(param, fixedText, IN_COLUMN_LIST_30)` |
| 6 | EXEC | `setInMapKktkSvcKeiDslFix(param, fixedText, inParamKktkSvcKeiNo, lastUpdDtm)` |
| 7 | CALL | `executeSC(handle, param, fixedText, TEMPLATE_ID_30, ...)` [SC: EKK0341C350] |
| 8 | EXEC | `lastUpdDtm = getTemplateValue(inMap, getKey(TEMP_TEMPLATE_KEY_30), EKK0341C350CBSMsg.UPD_DTM)` |
| 9 | END_IF | |

### Block 14.3.5 - Service Search (L1306-1317)

> Search device service to get domestic device type code.

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `initData(param, fixedText, IN_COLUMN_LIST_19)` |
| 2 | EXEC | `setInMapKkTkSvcSearch(param, fixedText, inParamKktkSvcCd)` |
| 3 | CALL | `executeSC(handle, param, fixedText, TEMPLATE_ID_19, ...)` [SC: EKK0771A010] |
| 4 | EXEC | `tknkikiSbtCd = getTemplateListValue(inMap, getKey(TEMP_TEMPLATE_KEY_19), ..., TAKNKIKI_SBT_CD, 0)` |

### Block 14.3.6 - New Device Registration (L1319-1360)

> Register new device service contract.

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `initData(param, fixedText, IN_COLUMN_LIST_11)` |
| 2 | EXEC | `setInMapKktkRegist(param, fixedText, inParamPcrsCd, inParamPplanCd, inParamTknkikiModelCd, ...)` |
| 3 | CALL | `executeSC(handle, param, fixedText, TEMPLATE_ID_11, ...)` [SC: EKK0341D010] |
| 4 | EXEC | `lastUpdDtm = getTemplateValue(inMap, getKey(TEMP_TEMPLATE_KEY_11), EKK0341D010CBSMsg.UPD_DTM)` |
| 5 | EXEC | `sendKktkSvcKeiNo = getTemplateValue(inMap, getKey(TEMP_TEMPLATE_KEY_11), EKK0341D010CBSMsg.KKTK_SVC_KEI_NO)` |
| 6 | EXEC | `sendKikiChgNo = getTemplateValue(inMap, getKey(TEMP_TEMPLATE_KEY_11), EKK0341D010CBSMsg.KIKI_CHG_NO)` |
| 7 | EXEC | `sendKikiGeneAddDtm = getTemplateValue(inMap, getKey(TEMP_TEMPLATE_KEY_11), EKK0341D010CBSMsg.GENE_ADD_DTM)` |

### Block 14.3.7 - Device Inspection (L1362-1374)

> Inspect device service contract.

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `initData(param, fixedText, IN_COLUMN_LIST_12)` |
| 2 | EXEC | `setInMapKktkShosa(param, fixedText, sendKktkSvcKeiNo, lastUpdDtm, inParamIdoDiv)` |
| 3 | CALL | `executeSC(handle, param, fixedText, TEMPLATE_ID_12, ...)` [SC: EKK0341C030] |
| 4 | EXEC | `lastUpdDtm = getTemplateValue(inMap, getKey(TEMP_TEMPLATE_KEY_12), EKK0341C030CBSMsg.UPD_DTM)` |

### Block 14.3.8 - Operation Service Registration (L1377-1379)

> Register operation service contract.

| # | Type | Code |
|---|------|------|
| 1 | CALL | `setKkOpSvcKeiToroku(handle, param, fixedText, sendKktkSvcKeiNo, inParamSeikyKeiNo, ...)` |

### Block 14.3.9 - ELSE: Non-router / PLC Path (L1380-1460)

> Handle non-router devices (PLC, etc.) or new multi-router without old device.

| # | Type | Code |
|---|------|------|
| 1 | ELSE | [Non-router or new multi-router] |
| 2 | IF | `KK0771_KKTK_SVC_CD_C015.equals(inParamKktkSvcCd) || KK0771_KKTK_SVC_CD_C023.equals(inParamKktkSvcCd) || tknRouterFlag == false` |
| 3 | EXEC | `initData(param, fixedText, IN_COLUMN_LIST_19)` |
| 4 | EXEC | `setInMapKkTkSvcSearch(param, fixedText, inParamKktkSvcCd)` |
| 5 | CALL | `executeSC(handle, param, fixedText, TEMPLATE_ID_19, ...)` [SC: EKK0771A010] |
| 6 | EXEC | `tknkikiSbtCd = getTemplateListValue(inMap, getKey(TEMP_TEMPLATE_KEY_19), ..., TAKNKIKI_SBT_CD, 0)` |
| 7 | IF | `isKktkSvcTakino(inParamKktkSvcCd)` [Multi-func router] |

### Block 14.3.9.1 - Get max lastUpdateDTM (nested in Block 14.3.9)

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `initData(param, fixedText, IN_COLUMN_LIST_EKK0241B002)` |
| 2 | EXEC | `setInMapEKK0241B002(param, fixedText, inParamSvkeiKaisenUwNo)` |
| 3 | CALL | `executeSC(handle, param, fixedText, TEMPLATE_ID_EKK0241B002, ...)` [SC: EKK0241B002] |
| 4 | FOR | `svcKeiMap : svcKeiList` |
| 5 | EXEC | `setInMapSvcKeiUniqueSearch(param, fixedText, svcKeiMap.SVC_KEI_NO)` |
| 6 | CALL | `executeSC(handle, param, fixedText, TEMPLATE_ID_2, ...)` [SC: EKK0081A010] |
| 7 | EXEC | `lastUpdDtmList.add(getTemplateListValue(..., LAST_UPD_DTM, 0))` |
| 8 | END_FOR | |
| 9 | EXEC | `Collections.sort(lastUpdDtmList); Collections.reverse(lastUpdDtmList)` |
| 10 | SET | `lastUpdDtm = lastUpdDtmList.get(0)` |
| 11 | END_IF | |
| 12 | EXEC | `initData(param, fixedText, IN_COLUMN_LIST_11)` |
| 13 | EXEC | `setInMapKktkRegist(param, fixedText, ...)` |
| 14 | CALL | `executeSC(handle, param, fixedText, TEMPLATE_ID_11, ...)` [SC: EKK0341D010] |
| 15 | EXEC | `sendKktkSvcKeiNo = getTemplateValue(inMap, getKey(TEMP_TEMPLATE_KEY_11), KKTK_SVC_KEI_NO)` |
| 16 | EXEC | `sendKikiChgNo = getTemplateValue(inMap, getKey(TEMP_TEMPLATE_KEY_11), KIKI_CHG_NO)` |
| 17 | EXEC | `initData(param, fixedText, IN_COLUMN_LIST_12)` |
| 18 | EXEC | `setInMapKktkShosa(param, fixedText, sendKktkSvcKeiNo, lastUpdDtm, inParamIdoDiv)` |
| 19 | CALL | `executeSC(handle, param, fixedText, TEMPLATE_ID_12, ...)` [SC: EKK0341C030] |
| 20 | EXEC | `setInMapWrSvAtAplyNoPlanChg(param, fixedText, mskmNo, sendKktkSvcKeiNo, ...)` [Auto-discount] |

### Block 14.3.9.2 - IF (C023 device) (nested in Block 14.3.9)

| # | Type | Code |
|---|------|------|
| 1 | IF | `KK0771_KKTK_SVC_CD_C023.equals(inParamKktkSvcCd)` |
| 2 | EXEC | `initData(param, fixedText, IN_COLUMN_LIST_EKK3271D010)` |
| 3 | EXEC | `setInMapTmkntshoRegist(param, fixedText, sendKktkSvcKeiNo, mskmDetailNo, tnmt_buy_uk_tntsha_nm)` |
| 4 | CALL | `executeSC(handle, param, fixedText, TEMPLATE_ID_EKK3271D010, ...)` [SC: EKK3271D010] |
| 5 | END_IF | |

### Block 14.3.10 - IF (Multi-router operation registration) (L1439-1453)

> Register operation service for multi-functional routers.

| # | Type | Code |
|---|------|------|
| 1 | IF | `isKktkSvcTakino(inParamKktkSvcCd)` |
| 2 | IF | `!isNull(tknRouterKktkSvcKeiNo)` |
| 3 | SET | `sendKktkSvcKeiNo = tknRouterKktkSvcKeiNo` |
| 4 | END_IF | |
| 5 | CALL | `lastUpdDtm = setKkOpSvcKeiToroku(handle, param, fixedText, sendKktkSvcKeiNo, ...)` |
| 6 | END_IF | |

### Block 14.3.11 - IF (OWN_TKN_RT_KIND_0 = "0") Router Change (L1462-1514)

> Handle router change request start and update.

| # | Type | Code |
|---|------|------|
| 1 | IF | `OWN_TKN_RT_KIND_0.equals(inParamOwnTknRouterKind)` |
| 2 | EXEC | `initData(param, fixedText, IN_COLUMN_LIST_42)` |
| 3 | EXEC | `setInMapKktkSvcKeiKikiChgKaishi(param, fixedText, tknRouterKktkSvcKeiNo, lastUpdDtm, ...)` |
| 4 | CALL | `executeSC(handle, param, fixedText, TEMPLATE_ID_42, ...)` [SC: EKK0341C530] |
| 5 | EXEC | `geneAddDtm = getTemplateValue(inMap, getKey(TEMP_TEMPLATE_KEY_42), EKK0341C530CBSMsg.GENE_ADD_DTM)` |
| 6 | EXEC | `initData(param, fixedText, IN_COLUMN_LIST_27)` |
| 7 | EXEC | `setInMapKktkSvcKeiUqSearch(param, fixedText, tknRouterKktkSvcKeiNo, geneAddDtm)` |
| 8 | CALL | `executeSC(handle, param, fixedText, TEMPLATE_ID_27, ...)` [SC: EKK0341A010] |
| 9 | EXEC | `kikiInfoMap = getTemplateListMap(inMap, getKey(TEMP_TEMPLATE_KEY_27), ..., 0)` |
| 10 | EXEC | `initData(param, fixedText, IN_COLUMN_LIST_43)` |
| 11 | EXEC | `setInMapKktkSvcKeiInfoChgTkn(param, fixedText, kikiInfoMap, lastUpdDtm, shelfCd, ...)` |
| 12 | CALL | `executeSC(handle, param, fixedText, TEMPLATE_ID_43, ...)` [SC: EKK0341C231] |
| 13 | EXEC | `chgKikiGeneAddDtm = getTemplateValue(inMap, getKey(TEMP_TEMPLATE_KEY_43), GENE_ADD_DTM)` |
| 14 | EXEC | `initData(param, fixedText, IN_COLUMN_LIST_27)` |
| 15 | EXEC | `setInMapKktkSvcKeiUqSearch(param, fixedText, tknRouterKktkSvcKeiNo, chgKikiGeneAddDtm)` |
| 16 | CALL | `executeSC(handle, param, fixedText, TEMPLATE_ID_27, ...)` [SC: EKK0341A010] |
| 17 | EXEC | `chgKikiInfoMap = getTemplateListMap(inMap, getKey(TEMP_TEMPLATE_KEY_27), ..., 0)` |
| 18 | SET | `sendKikiChgNo = chgKikiInfoMap.KIKI_CHG_NO` |
| 19 | SET | `sendKikiGeneAddDtm = chgKikiGeneAddDtm` |
| 20 | SET | `tknRouterFlag = false` |
| 21 | END_IF | |

### Block 14.4 - Post-device-loop Processing (L1480-1574)

> After all device items are processed, handle delivery and finalization.

| # | Type | Code |
|---|------|------|
| 1 | IF | `tknRouterFlag == false` |
| 2 | EXEC | `kktkSvcKeiNoMap.put(JKKButuryuCtrlCC.KEY_KKTK_SVC_KEI_NO, sendKktkSvcKeiNo)` |
| 3 | EXEC | `kktkSvcKeiNoMap.put(EKK0341D010CBSMsg.GENE_ADD_DTM, sendKikiGeneAddDtm)` |
| 4 | EXEC | `kktkSvcKeiNoList.add(kktkSvcKeiNoMap)` |
| 5 | IF | `!isKktkSvcTakino(inParamKktkSvcCd) && !isKojiHaiso(inKojiakNo)` |
| 6 | CALL | `chgFrntHisukZkup(handle, param, fixedText, sendKktkSvcKeiNo, sendKikiChgNo)` |
| 7 | END_IF | |
| 8 | EXEC | `setFUSV013407CC(param, sendKktkSvcKeiNo, sendKikiChgNo)` |
| 9 | IF | `isKojiHaiso(inKojiakNo)` |
| 10 | EXEC | `kojiKktkSvcKeiMap.put(JKKButuryuCtrlCC.KEY_KKTK_SVC_KEI_NO, sendKktkSvcKeiNo)` |
| 11 | EXEC | `kojiHaisoList.add(kojiKktkSvcKeiMap)` |
| 12 | END_IF | |
| 13 | IF | `isOnuKokanKoji(inMap)` |
| 14 | CALL | `execOnuKokanKoji(handle, param, fixedText, lastUpdDtm, inParamIdoDiv, mskmNo, mskmDetailNo, kktkSvcKeiNoList)` |
| 15 | EXEC | `cancelKktkList.clear()` |
| 16 | EXEC | `kojiHaisoList.clear()` |
| 17 | END_IF | |
| 18 | END_FOR | [end i loop] |

### Block 15 - Post-Device Loop: tknRouterFlag Check (L1577-1621)

> After the device loop, determine delivery path based on tknRouterFlag.

| # | Type | Code |
|---|------|------|
| 1 | IF | `tknRouterFlag == false` |
| 2 | IF | `!isKojiHaiso(inKojiakNo)` [Customer direct] |
| 3 | EXEC | `haisoOutMap = new HashMap()` |
| 4 | IF | `!isNull(tempData.get(HAISOCC_HAISO_RSV_YMD))` |
| 5 | CALL | `JKKBpCommon.createHaiso(param, handle, mskmNo, mskmDetailNo, ..., kktkSvcKeiNoList, ..., haiso_rsv_ymd)` |
| 6 | EXEC | `inMap.put(HAISO_OUT_MAP_KEY, haisoOutMap)` |
| 7 | ELSE | |
| 8 | CALL | `JKKBpCommon.createHaiso(param, handle, mskmNo, mskmDetailNo, ..., kktkSvcKeiNoList, ..., fixedText, DK0091_SOKO_CD_000001)` |
| 9 | EXEC | `inMap.put(HAISO_OUT_MAP_KEY, haisoOutMap)` |
| 10 | END_IF | |
| 11 | ELSE | [Construction company delivery] |
| 12 | CALL | `execKojiAnkenRenkei(handle, param, fixedText, tempData, mskmDetailNo, KOUJI_CANCEL_PARAM, cancelKktkList)` |
| 13 | CALL | `execKojiAnkenRenkei(handle, param, fixedText, tempData, mskmDetailNo, KOUJI_RENKEI_PARAM, kojiHaisoList)` |
| 14 | END_IF | |
| 15 | ELSE | [tknRouterFlag == true - Multi-functional router] |
| 16 | IF | `isKojiHaiso(inKojiakNo)` |
| 17 | EXEC | `kojiKikiMap = getKojiTknikiki(handle, param, fixedText, inKojiakNo)` |
| 18 | FOR | `dataMap : kojiHaisoList` |
| 19 | IF | `kojiKikiMap.containsKey(kktkSvcKeiNo)` |
| 20 | EXEC | `workList.add(dataMap)` |
| 21 | END_IF | |
| 22 | IF | `workList.size() > 0` |
| 23 | CALL | `execKojiAnkenRenkei(handle, param, fixedText, tempData, mskmDetailNo, KOUJI_RENKEI_PARAM, workList)` |
| 24 | END_IF | |
| 25 | END_IF | |
| 26 | END_ELSE | |

### Block 16 - ONU Conversion Delivery Info Linkage (L1623-1629)

| # | Type | Code |
|---|------|------|
| 1 | IF | `isOnuKokanKoji(inMap) && !isKojiHaiso(inKojiakNo)` |
| 2 | EXEC | `JFUBPCommon.execKikiHaisoInfoRnkt(handle, param, JKK_KIKI_HAISO_RNKT_CC, mskmNo)` |
| 3 | END_IF | |

### Block 17 - Step 33: Progress Registration (L1631-1637)

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `initData(param, fixedText, IN_COLUMN_LIST_33)` |
| 2 | EXEC | `setInMapPrgRegist(param, fixedText, inParamSvcKeiNo, mskmDetailNo, prgTkjk1, prgTkjk2, inParamIdoDiv)` |
| 3 | CALL | `executeSC(handle, param, fixedText, TEMPLATE_ID_33, ...)` [SC: EKK1091D010] |

### Block 18 - Step 34: Application Detail Inspection / Post-task (L1639-1645)

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `initData(param, fixedText, IN_COLUMN_LIST_34)` |
| 2 | EXEC | `setInMapMskmDtlShosaKzkWrk(param, fixedText, mskmDetailNo, updDtmMskm, inParamIdoDiv)` |
| 3 | CALL | `executeSC(handle, param, fixedText, TEMPLATE_ID_34, ...)` [SC: EKK0341C030] |

### Block 19 - Mail Processing (L1647-1652)

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `mailList = (List) inMap.get(ECC0021D010CBSMsg.ECC0021D010CBSMSG1LIST)` |
| 2 | EXEC | `addRrksMlad(handle, param, fixedText, inMap, inParamSysId, mailList)` |
| 3 | CALL | `super.sendMail(handle, param, fixedText)` |
| 4 | RETURN | `return param` |

## 7. Glossary

| Term | Type | Business Meaning |
|------|------|------------------|
| `kk0341_svc_kei_no` | Field | Service contract number for device service contract |
| `kk0341_sysid` | Field | System ID for customer identification |
| `kk0341_pcrs_cd` | Field | Pricing code - determines billing structure |
| `kk0341_pplan_cd` | Field | Price plan code - specific pricing plan selection |
| `kk0341_kktk_svc_cd` | Field | Device service code - classifies device type (C015=Cable, C023=PLC, etc.) |
| `kktk_svkei_add_list` | Field | Key for the list of devices to be added in the order |
| `ido_div` | Field | Displacement division - indicates if service is being moved to a new location |
| `cnt` | Field | Order quantity (number of applications) |
| `sethn_cnt` | Field | Set quantity (number of devices per order) |
| `kktk_svc_kei_no` | Field | Device-provided service contract number |
| `kk0341_taknkiki_model_cd` | Field | Domestic device model code |
| `kk0341_seiky_kei_no` | Field | Invoice contract number for billing |
| `prg_tkjk_1` | Field | Progress special item 1 - custom progress field |
| `prg_tkjk_2` | Field | Progress special item 2 - custom progress field |
| `haita_svc_kei_upd_dtm` | Field | Previous service contract line update datetime |
| `svc_kei_kaisen_ucwk_no` | Field | Service contract line detail number (internal work number) |
| `own_tkn_router_kind` | Field | Owned multi-functional router kind - "0" = standard router |
| `kiki_soryo_um` | Field | Equipment charge yes/no flag |
| `KU0011_kojiak_no` | Field | Project case number (工事案件番号) |
| `cx_hantei_flg` | Field | CX case switch flag (always "1" after opening) |
| `tk_hoshiki_cd` | Field | Delivery method code |
| `tk_hoshiki_pattern_cd` | Field | Delivery method pattern code |
| `prc_grp_cd` | Field | Price group code |
| `hhs_1gonly_flg` | Field | Fiber 1G-only flag |
| `onu_kokan_koji_um` | Field | ONU conversion work flag |
| FTTH | Business term | Fiber To The Home - fiber-optic broadband service |
| PLC | Business term | Provider LAN - LAN service provided by the ISP |
| KKOP | Acronym | K-Kopt Operation (kktk operation) - device operation service management |
| SOD | Acronym | Service Order Data - telecom order fulfillment entity |
| VA | Acronym | Virtual Appliance - multi-functional router with advanced features |
| ONU | Acronym | Optical Network Unit - fiber termination device |
| HGW | Acronym | Home Gateway - residential gateway device |
| SVC_KEI_NO | Field | Service contract number - main identifier for a service subscription |
| SVC_KEI_KAISEN_UCWK_NO | Field | Service contract line detail number - internal work number for line |
| GENE_ADD_DTM | Field | Generation add datetime - when the service contract was created |
| KKTK_SVC_KEI_STAT | Field | Device service contract status - "020" means inspection completed |
| MSKM_NO | Field | Application number (申込み番号) |
| MSKM_DTL_NO | Field | Application detail number (申込み詳細番号) |
| UPD_DTM | Field | Update datetime - last modification timestamp |
| PCRSCD | Field | Pricing code - determines the billing rate structure |
| HAISO_WAY_CD | Field | Delivery way code - "1" = customer direct, "2" = construction company |
| KIKI_HUKA_INFO_CD | Field | Equipment additional info code |
| SHELF_CD | Field | Shelf code - identifies the physical shelf/hanger assignment |
| TAKNKIKI_SBT_CD | Field | Domestic device type code |
| KIKI_SEIZO_NO | Field | Equipment manufacturing number (serial number) |
| KIKI_CHG_NO | Field | Equipment change number |
| PRG_STAT | Field | Progress status - current state of the business process |
| CD00130_01 | Constant | Network service code |
| CD00130_02 | Constant | Telephone service code |
| CD01148_1 | Constant | Customer direct delivery code |
| CD01148_2 | Constant | Construction company delivery code |
| CD00056_020 | Constant | Inspection completed status code |
| FUNC_CD_1 | Constant | Function code "1" - Check and Register mode |
| OWN_TKN_RT_KIND_0 | Constant | "0" - Standard (non-multi-functional) router type |
| KK0771_KKTK_SVC_CD_C015 | Constant | Service code C015 - Cable (Cable modem) |
| KK0771_KKTK_SVC_CD_C023 | Constant | Service code C023 - PLC (Provider LAN) |
| EKK0011D020 | SC Code | Application Content Recognition Registration SC |
| EKK0251B001 | SC Code | Service Contract Line Detail List Search SC |
| EKK0251A010 | SC Code | Service Contract Line Uniqueness Check SC |
| ECK0011A010 | SC Code | Customer Uniqueness Check SC |
| EDK0451A010 | SC Code | Hanger Uniqueness Check SC |
| EKK0241B002 | SC Code | Line-target Service Contract List SC |
| EKK0321B002 | SC Code | Invoice Contract Search SC |
| EKK0081A010 | SC Code | Service Contract Uniqueness Check SC |
| EKK0341A010 | SC Code | Device Service Contract Uniqueness Check SC |
| EKK0341C230 | SC Code | Device Service Contract Info Change SC |
| EKK0341C330 | SC Code | Device Service Contract Cancellation SC |
| EKK0341C340 | SC Code | Device Service Contract DSL Cancellation SC |
| EKK0341C350 | SC Code | Device Service Contract DSL Cancellation Fix SC |
| EKK0341D010 | SC Code | Device Service Contract Registration SC |
| EKK0341C030 | SC Code | Device Contract Inspection SC |
| EKK0341C530 | SC Code | Device Change Request Start SC |
| EKK0341C231 | SC Code | Contract Info Change In-progress SC |
| EKK0771A010 | SC Code | Device Service Uniqueness Check SC |
| EKK1091D010 | SC Code | Progress Registration SC |
| EKK2811B503 | SC Code | KKOP Service Contract List SC |
| EZM0321A010 | SC Code | Work Param Check SC |
| EKK3271D010 | SC Code | Item Notification Receipt Registration SC |
| ECC0021D010 | SC Code | Delivery Destination List SC (mail addresses) |
| K-Opticom | Business term | K-Opticom ISP - the telecommunications service provider |
| e-Customer Backbone | Business term | The core system platform for customer-facing operations |
| 申込み内容承認登録 | Japanese term | Application content recognition registration - creates the application record |
| サービス契約回線内訳一覧照会 | Japanese term | Service contract line detail list inquiry |
| お客様直送 | Japanese term | Customer direct delivery - device shipped directly to customer |
| 工事会社配送 | Japanese term | Construction company delivery - device shipped to installer |
| 工事案件連携 | Japanese term | Project case linkage - coordination with construction project records |
| ルーター | Japanese term | Router - network routing device |
| 多機能ルーター | Japanese term | Multi-functional router - advanced router with additional capabilities |
