**Block 3** — SECOND LOOP (Second `for (int i = 0; i < trgtDataList.size(); i++)`) (L1625)

> Main processing loop over each service contract data. Contains all core verification logic.

| # | Type | Code |
|---|------|------|
| 1 | SET | `errorList = new ArrayList(); wkErrorList = null;` |
| 2 | SET | `svkeiData = (HashMap)trgtDataList.get(i);` |
| 3 | SET | `agingWorkMap.clear(); bfAgingWorkMap.clear();` |
| 4 | SET | `svcCd = null; prcGrpCd = null; idoDiv = null; regitMemberSbtCd = null;` |
| 5 | SET | `sladUmFlg = "0"; optinmUmFlg = "0"; kojiakStat = null; pcrsCd = ""; svc_kei_no = "";` |
| 6 | EXEC | `wkRsltShokaiMap = editMapShokai0(param, i);` |
| 7 | EXEC | `rsltShokai = runShokai(param, handle, wkRsltShokaiMap, SVIF_MAP_KEY_SHOKAI0_LIST);` |
| 8 | SET | `workEKK0081A010 = getWorkParentData(..., EKK0081A010CBSMSG1LIST, ...)` |
| 9 | SET | `idoDiv = (String)svkeiData.get(IDO_DIV);` |
| 10 | SET | `if (JKKBpCommon.isNull(idoDiv))` |
| 11 | SET | `idoDiv = workEKK0081A010[0].getString(IDO_DIV); svkeiData.put(IDO_DIV, idoDiv);` |
| 12 | EXEC | `wkRsltShokaiMap = editMapShokai(param, i, rsltShokai);` |
| 13 | EXEC | `wkRsltShokai0 = runShokai(param, handle, wkRsltShokaiMap, SVIF_MAP_KEY_SHOKAI_LIST);` |
| 14 | EXEC | `wkRsltShokaiMap = editMapShokai2(param, i, rsltShokai);` |
| 15 | EXEC | `wkRsltShokai = runShokai(param, handle, wkRsltShokaiMap, SVIF_MAP_KEY_SHOKAI2_LIST);` |
| 16 | SET | `svc_kei_no = workEKK0081A010[0].getString(SVC_KEI_NO);` |
| 17 | SET | `svcCd = workEKK0081A010[0].getString(SVC_CD);` |
| 18 | SET | `prcGrpCd = workEKK0081A010[0].getString(PRC_GRP_CD);` |
| 19 | SET | `pcrsCd = workEKK0081A010[0].getString(PCRS_CD);` |
| 20 | SET | `svcSbtCd = getSvcSbtCd(svcCd, prcGrpCd);` |
| 21 | SET | `pplanCd = workEKK0081A010[0].getString(PPLAN_CD);` |
| 22 | EXEC | `getWorkParentData(ECK0011A010CBSMsg, rsltShokai, MAP_KEY_ECK0011A010);` |
| 23 | SET | `shk_eoId = workECK0011A010[0].getString(SHK_EOID);` |
| 24 | EXEC | `super.updCustinfo(param, handle, rsltShokai, prcGrpCd, svc_kei_no, i, errorList);` |

**Block 4** — SERVICE TYPE INQUIRY SWITCH (Phase 1) (L1723)

> Dispatches to type-specific inquiry mapper based on svcSbtCd.

| # | Type | Code |
|---|------|------|
| 1 | SET | `switch (svcSbtCd)` |
| 2 | SET | `case SVC_SBT_CD_HNET:` |
| 3 | EXEC | `editMapShokaiHNet(param, i, rsltShokai);` |
| 4 | EXEC | `runShokai(param, handle, wkRsltShokaiMap, SVIF_MAP_KEY_SHOKAI_HNET_LIST);` |
| 5 | SET | `case SVC_SBT_CD_HTV:` |
| 6 | EXEC | `editMapShokaiHTv(param, i, rsltShokai);` |
| 7 | EXEC | `runShokai(param, handle, wkRsltShokaiMap, SVIF_MAP_KEY_SHOKAI_HTV_LIST);` |
| 8 | SET | `case SVC_SBT_CD_HTEL:` |
| 9 | EXEC | `editMapShokaiHTel(param, i, rsltShokai);` |
| 10 | EXEC | `runShokai(param, handle, wkRsltShokaiMap, SVIF_MAP_KEY_SHOKAI_HTEL_LIST);` |
| 11 | SET | `case SVC_SBT_CD_MOBA:` |
| 12 | EXEC | `editMapShokaiMoba(param, i, rsltShokai);` |
| 13 | EXEC | `runShokai(param, handle, wkRsltShokaiMap, SVIF_MAP_KEY_SHOKAI_MOBA_LIST);` |
| 14 | SET | `default:` (ADSL) |
| 15 | EXEC | `editMapShokaiAdsl(param, i, rsltShokai);` |
| 16 | EXEC | `runShokai(param, handle, wkRsltShokaiMap, SVIF_MAP_KEY_SHOKAI_ADSL_LIST);` |
| 17 | EXEC | `saveBfAgingTgValue(handle, param, rsltShokai);` |

**Block 5** — SERVICE TYPE VERIFICATION SWITCH (Phase 2) (L1777)

> Dispatches to type-specific verification based on svcSbtCd.

| # | Type | Code |
|---|------|------|
| 1 | SET | `switch (svcSbtCd)` |
| 2 | SET | `case SVC_SBT_CD_HNET:` |
| 3 | SET | `malwareFlg = malwareum(svkeiData, rsltShokai, pcrsCd, scmTypeCd, scmJgsCd);` |
| 4 | SET | `wkMap = editMapShosaOkHNet(handle, param, i, rsltShokai, idoDiv, canCncSvcKei, malwareFlg);` |
| 5 | EXEC | `wkErrorList = runShosaOkHNet(handle, param, wkMap, canCncSvcKei, rsltShokai);` |
| 6 | SET | `case SVC_SBT_CD_HTV:` |
| 7 | SET | `wkMap = editMapShosaOkHTv(handle, param, i, rsltShokai, idoDiv);` |
| 8 | EXEC | `wkErrorList = runShosaOkHTv(handle, param, wkMap);` |
| 9 | SET | `case SVC_SBT_CD_HTEL:` |
| 10 | SET | `wkMap = editMapShosaOkHTel(handle, param, i, rsltShokai, idoDiv, canCncSvcKei);` |
| 11 | SET | `wkMap = editMapShosaOkHTelBanpo(param, handle, i, rsltShokai, wkMap, idoDiv);` |
| 12 | SET | `wkMap = editMapShosaOkHTelTelno(param, handle, i, rsltShokai, wkMap, idoDiv);` |
| 13 | EXEC | `wkErrorList = runShosaOkHTel(handle, param, wkMap, canCncSvcKei, rsltShokai);` |
| 14 | SET | `case SVC_SBT_CD_MOBA:` |
| 15 | SET | `wkMap = editMapShosaOkMoba(handle, param, i, rsltShokai, idoDiv);` |
| 16 | EXEC | `wkErrorList = runShosaOkMoba(handle, param, wkMap);` |
| 17 | SET | `default:` (ADSL) |
| 18 | SET | `wkMap = editMapShosaOkAdsl(param, i, rsltShokai, idoDiv, canCncSvcKei);` |
| 19 | EXEC | `wkErrorList = runShosaOkAdsl(handle, param, wkMap, canCncSvcKei);` |

**Block 6** — COMMON VERIFICATION (L1846)

> Runs common verification steps after type-specific verification.

| # | Type | Code |
|---|------|------|
| 1 | SET | `wkErrorList = new ArrayList();` |
| 2 | SET | `wkMap = editMapShosaOkCmn(handle, param, i, rsltShokai, idoDiv, svcSbtCd, canCncSvcKei);` |
| 3 | EXEC | `wkErrorList = runShosaOkCmn(handle, param, wkMap, svcSbtCd, canCncSvcKei, idoDiv);` |
| 4 | SET | `errorList.addAll(wkErrorList);` |
| 5 | SET | `if (SVC_SBT_CD_HNET == svcSbtCd || SVC_SBT_CD_MOBA == svcSbtCd || SVC_SBT_CD_ADSL == svcSbtCd)` |
| 6 | SET | `workEKK0361C010 = (CAANMsg) wkMap.get(MAP_KEY_EKK0361C010_MLAD);` |
| 7 | SET | `if (null != workEKK0361C010 && !isNull(workEKK0361C010.getString(MLAD)))` |
| 8 | SET | `mladUmFlg = "1";` // Email address present |

**Block 7** — AX LINKAGE DATA PREPARATION (L1882)

> Prepares AxMRenkeiData (business partner linkage data) for service contract inspection BP.

| # | Type | Code |
|---|------|------|
| 1 | SET | `JKKBpCommon.putAxMRenkeiDataKbn(param, SJISHO_MAP, RENKEI_DATA_KBN_SYSID, TRN_KBN_UPD, new String[]{svc_kei_no}, currentSysid);` |
| 2 | SET | `JKKBpCommon.putAxMRenkeiDataKbn07(param, SJISHO_MAP, TRN_KBN_UPD, new String[]{svc_kei_no}, "料金グループ番号?");` |
| 3 | SET | `JKKBpCommon.putAxMRenkeiDataKbn(param, SJISHO_MAP, RENKEI_DATA_KBN_SEIKY_KEI, TRN_KBN_ADD, new String[]{svc_kei_no}, currentSysid);` |
| 4 | EXEC | `stackSeiriBangoMap(param, svc_kei_no, currentSysid);` |

**Block 8** — SAME LINE VA/LTE CHECK (HNet or HTel with Service Addition) (L1934)

> When idoDiv = CD00576_00002 (service addition) and service subtype is HNet or HTel: checks for dependent old VA/LTE devices on the same line and performs cancellation/verification if they exist.

| # | Type | Code |
|---|------|------|
| 1 | SET | `if (CD00576_00002.equals(idoDiv) && (svcSbtCd == HNET || svcSbtCd == HTel))` |
| 2 | SET | `msgWorkArray = getWorkParentData(EKK0021A010CBSMsg, rsltShokai, MAP_KEY_EKK0021A010);` |
| 3 | SET | `mskmshoDtlNo = msgEKK0021A010.getString(MSKM_DTL_NO);` |
| 4 | SET | `workEKK2811B011 = getWorkParentData(EKK2811B011CBSMsg, rsltShokai, MAP_KEY_EKK2811B011);` |
| 5 | SET | `workEKK2811A010Array = (ArrayList) rsltShokai.get(MAP_KEY_EKK2811A010);` |
| 6 | SET | `kkop_tg_kktk_svc_kei_no = "";` |
| 7 | SET | `if (workEKK2811A010Array != null)` |
| 8 | SET | `for (a = 0; a < workEKK2811A010Array.size(); a++)` |
| 9 | SET | `kkop_svc_cd = childTemplate.getString(KKOP_SVC_CD);` |
| 10 | SET | `if (HNET == svcSbtCd && "G01".equals(kkop_svc_cd))` // Router function |
| 11 | SET | `kkop_tg_kktk_svc_kei_no = childTemplate.getString(KKTK_SVC_KEI_NO);` |
| 12 | SET | `else if (HTel == svcSbtCd && "G02".equals(kkop_svc_cd))` // VA function |
| 13 | SET | `kkop_tg_kktk_svc_kei_no = childTemplate.getString(KKTK_SVC_KEI_NO);` |
| 14 | SET | `if (kkop_tg_kktk_svc_kei_no != null && !"".equals(kkop_tg_kktk_svc_kei_no))` |
| 15 | SET | `if (workEKK2811B011 != null && workEKK2811B011.length > 0)` |
| 16 | SET | `if (kkop_tg_kktk_svc_kei_no.equals(kktk_svc_kei_no))` |
| 17 | SET | `svckaisenUcwkNo = getworkEKK2811B011.getString(SVC_KEI_KAISEN_UCWK_NO);` |
| 18 | SET | `if (svckaisenUcwkNo != null && !"".equals(svckaisenUcwkNo))` |
| 19 | EXEC | `shosaOkMapper.editInMsgEKK0241B002(param, i, svckaisenUcwkNo);` |
| 20 | EXEC | `scCall.run(inMsgEKK0241B002Map, handle);` |
| 21 | SET | `if (HNET == svcSbtCd && SVC_CD_TEL.equals(svc_cd))` // Net check: Phone service number |
| 22 | SET | `eqKaienTgSvcKeiNo = getEKK0241B002List.getString(SVC_KEI_NO);` |
| 23 | SET | `else if (HTel == svcSbtCd && SVC_CD_NET.equals(svc_cd))` // Phone check: Net service number |
| 24 | SET | `eqKaienTgSvcKeiNo = getEKK0241B002List.getString(SVC_KEI_NO);` |
| 25 | SET | `if (eqKaienTgSvcKeiNo == null || "".equals(eqKaienTgSvcKeiNo))` // No dependent service |
| 26 | SET | `else` // Dependent service exists |
| 27 | SET | `if (HNET == svcSbtCd)` |
| 28 | EXEC | `shokaiMapper.editInMsgEKK0341B002(param, eqKaienTgSvcKeiNo, "C004");` |
| 29 | EXEC | `scCall.run(inMsgEKK0341B002Map, handle);` |
| 30 | SET | `if ("020".compareTo(kktk_svc_kei_stat) <= 0 && !kkopShosaFlg)` |
| 31 | SET | `for (a = 0; a < workEKK2811A010Array.size(); a++)` |
| 32 | SET | `if ("G02".equals(kkop_svc_cd) && "010".equals(kkop_svc_kei_stat))` // VA function, activated |
| 33 | EXEC | `shosaOkMapper.editInMsgEKK2811C030(param, childTemplate, idoDiv);` |
| 34 | EXEC | `runShosa(handle, param, rsltShosaMap, MAP_KEY_EKK2811C030);` // VA function verification |
| 35 | SET | `oldKikiRunFlg = true;` |
| 36 | SET | `if (oldKikiRunFlg)` |
| 37 | SET | `createUserData(param, "oldKkCnlDelKhkCC");` |
| 38 | SET | `trgt_data.put("svc_kei_no", eqKaienTgSvcKeiNo);` |
| 39 | SET | `trgt_data.put("kktk_svc_kei_no", kktk_svc_kei_no);` |
| 40 | EXEC | `JKKBpCommon.oldKkCnlDelCall(handle, param, trgt_data, workFixedText);` |
| 41 | SET | `if (HTel == svcSbtCd)` |
| 42 | EXEC | `shokaiMapper.editInMsgEKK0341B002(param, eqKaienTgSvcKeiNo, "C014");` |
| 43 | EXEC | `scCall.run(inMsgEKK0341B002Map, handle);` |
| 44 | SET | `if ("020".compareTo(kktk_svc_kei_stat) <= 0 && !kkopShosaFlg)` |
| 45 | SET | `if ("G01".equals(kkop_svc_cd) && "010".equals(kkop_svc_kei_stat))` // LTE function, activated |
| 46 | EXEC | `runShosa(handle, param, rsltShosaMap, MAP_KEY_EKK2811C030);` // LTE function verification |
| 47 | SET | `else` // oyaStat check for HTel case |
| 48 | SET | `if (SVC_KEI_STAT_020.equals(oyaStat) || SVC_KEI_STAT_030.equals(oyaStat) || SVC_KEI_STAT_100.equals(oyaStat) || SVC_KEI_STAT_210.equals(oyaStat) || SVC_KEI_STAT_220.equals(oyaStat))` |
| 49 | SET | `if ("G01".equals(kkop_svc_cd) && SVC_KEI_STAT_010.equals(kkop_svc_kei_stat))` |
| 50 | EXEC | `runShosa(handle, param, rsltShosaMap, MAP_KEY_EKK2811C030);` |

**Block 9** — ROUTER DEVICE AUTO-EXCHANGE CHECK (L2167)

> Calls execRtKikiAutoExchangeCC to determine if router device auto-exchange is needed, then handles device change procedure.

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `rtKikiChgCkParam = execRtKikiAutoExchangeCC(handle, param, svc_kei_no, idoDiv, pcrsCd, rtMskmCd);` |
| 2 | SET | `if ("1".equals(rtKikiChgCkParam.get("kiki_chg_um")))` // Device change determined |
| 3 | SET | `if (C024.equals(rtKikiChgCkParam.get("kaishu_kktk_svc_cd_router")))` |
| 4 | SET | `fatRtKKtkSvcKei = rtKikiChgCkParam.get("kaishu_kktk_svc_kei_no_router");` |
| 5 | EXEC | `shokaiMapper.editInMsgEKK0341A010(param, fatRtKKtkSvcKei);` |
| 6 | EXEC | `scCall.run(inMsgEKK0341A010Map, handle);` |
| 7 | EXEC | `shosaOkMapper.editInMsgEKK0341C530(param, outMsgEKK0341A010List[0], mskmDtlNo, idoDiv);` |
| 8 | EXEC | `runShosa(handle, param, rsltShosaMap, MAP_KEY_EKK0341C530);` // Device change procedure start |
| 9 | EXEC | `shokaiMapper.editInMsgEKK0341B008(param, kktkSvcKeiNo);` |
| 10 | EXEC | `scCall.run(inMsgEKK0341B008Map, handle);` |
| 11 | EXEC | `shokaiMapper.editInMsgEKK0341A010_01(param, kktkSvcKeiNo, addGeneDtm);` |
| 12 | EXEC | `scCall.run(inMsgEKK0341A010_01Map, handle);` |
| 13 | SET | `svkeiData.put("haiso_kktk_svc_kei_no", caanMsgEKK0341A010_01.getString(KKTK_SVC_KEI_NO));` |
| 14 | SET | `svkeiData.put("haiso_gene_add_dtm", caanMsgEKK0341A010_01.getString(GENE_ADD_DTM));` |
| 15 | SET | `svkeiData.put("taknkiki_model_cd", "R0");` |
| 16 | EXEC | `shokaiMapper.editInMsgEKK0251A010(param, 0, svckaisenUcwkNo);` |
| 17 | EXEC | `scCall.run(inMsgEKK0251A010Map, handle);` |
| 18 | EXEC | `shosaOkMapper.editInMsgEKK0341C231(param, outMsgEKK0341A010_01List[0], workECK0011A010[0], outMsgEKK0251A010List[0]);` |
| 19 | EXEC | `runShosa(handle, param, rsltShosaMap, MAP_KEY_EKK0341C231);` // Contract change in progress |
| 20 | SET | `svkeiData.put(HEMPIN_KKTK_SVC_KEI_NO_LST, hempin_kktk_svc_kei_no_lst);` |
| 21 | SET | `svkeiData.put(EQ_KAISEN_TG_SVC_KEI_NO, eqKaienTgSvcKeiNo);` |

**Block 10** — ONU EXCHANGE FLAG CHECK (L2308)

> Checks if ONU exchange work is needed (10G EPON scenario: parent OLT is 10G, customer has Wi-Skill code != A, HGW non-exchange flag = 0, system parameter = 0).

| # | Type | Code |
|---|------|------|
| 1 | SET | `hgwKknFfg = ""; oyaKikiSbtCd = ""; kkHgwKokanFfg = "";` |
| 2 | EXEC | `shokaiMapper.editInMsgEKK0251B001(param, i, svc_kei_no);` |
| 3 | EXEC | `scCall.run(inMsgEKK0251B001Map, handle);` |
| 4 | EXEC | `shokaiMapper.editInMsgEKK0251A010(param, 0, svckaisenUcwkNo_EKK0251B001);` |
| 5 | EXEC | `scCall.run(inMsgEKK0251A010Map, handle);` |
| 6 | SET | `hgwKknFfg = outMsgEKK0251A010List[0].getString(HGW_KKN_FFG);` |
| 7 | SET | `if ((Arrays.asList(RZKZMCC_ACT_PSB_LIST).contains(prcGrpCd)))` // Processable pricing group |
| 8 | SET | `rzkzmAnkenChkMap = new HashMap<String, Object>();` |
| 9 | SET | `rzkzmAnkenChkMap.put("svc_kei_no", svc_kei_no);` |
| 10 | SET | `rzkzmAnkenChkMap.put("svc_kei_kaisen_ucwk_no", svckaisenUcwkNo_EKK0251B001);` |
| 11 | SET | `rzkzmAnkenChkMap.put("ido_div", CD00576_00002);` |
| 12 | EXEC | `rzkzmAnkenChkCC.jdgeRzkzmAnken(handle, param, "rzkzm_anken_check_map");` |
| 13 | SET | `chkResultMap = (Map) param.getData("rzkzm_anken_check_map");` |
| 14 | SET | `rozzetflg = (String) chkResultMap.get("chk_result");` |
| 15 | EXEC | `shokaiMapper.editInMsgEZM0321A010(param, WORK_PARAM_ID_KK_HGW_KOKAN_FFG);` |
| 16 | SET | `kkHgwKokanFfg = rsltMsgEZM0321A010.getString(WORK_PARAM_SETTE_VALUE);` |
| 17 | SET | `if (04.equals(oyaKikiSbtCd) && !"A".equals(scmTypeCd) && !"1".equals(hgwKknFfg) && !"1".equals(kkHgwKokanFfg))` |
| 18 | SET | `bolTakinoRt = false; kikiKokanHaisoTgInfoList = new ArrayList<>();` |
| 19 | EXEC | `shokaiMapper.editInMsgEKK0341B022(param, svc_kei_no);` |
| 20 | EXEC | `scCall.run(inMsgEKK0341B022Map, handle);` |
| 21 | SET | `List<String> stateList = Arrays.asList("030", "100", "210", "220");` // Valid statuses: activated, in service, suspended, halted |
| 22 | SET | `for (CAANMsg b022msg : outMsgEKK0341B022List)` |
| 23 | SET | `if (KKTK_SVC_C012.equals(...) && stateList.contains(kktk_svc_kei_stat))` // Valid ONU |
| 24 | SET | `if (KKTK_SVC_C024.equals(...) && mskmshoDtlNo.equals(childTemplate.getString(MSKM_DTL_NO)))` |
| 25 | SET | `if (!"910".equals(kktkSvcKeiStat) && !"920".equals(kktkSvcKeiStat))` |
| 26 | SET | `if (HNET == svcSbtCd || HTel == svcSbtCd)` |
| 27 | SET | `haisoInfo.put(KEY_KKTK_SVC_KEI_NO, kktkSvcKeiNo);` |
| 28 | SET | `kikiKokanHaisoTgInfoList.add(haisoInfo); bolTakinoRt = true;` |
| 29 | SET | `if (bolTakinoRt == true)` |
| 30 | SET | `buturyuCtrlCc.onuKokankikiKokanJdgTran(...)` or `onuKokankikiKokanUseSofuSakiJdgTran(...)` |
| 31 | SET | `onuKokankojiflg = true;` // ONU exchange work triggered |
