## 5. Dependency Trace

| # | Caller (Screen/Batch) | Call Chain (Full Path to this Method) | Terminal (SC / CRUD / Entity) |
|---|----------------------|--------------------------------------|-------------------------------|
| 1 | Screen:FUW00116 | FUW00116SFChecker.validate -> FUW00116SFLogic.finMskm | setEKK0011C050 [C] KK_T_SUB_PROVISIONAL |
| 2 | Screen:FUW00116 | FUW00116SFLogic.finMskm | setEKK0011C110 [C] KK_T_SUBSCRIPTION |
| 3 | Screen:FUW00116 | FUW00116SFLogic.finMskm | setEKK0341D010 [C] KK_T_EQUIP_CONTRACT |
| 4 | Screen:FUW00116 | FUW00116SFLogic.finMskm | setEKK0361D010 [C] KK_T_OP_SVC_ISP |
| 5 | Screen:FUW00116 | FUW00116SFLogic.finMskm | setEZM0121D010 [C] KK_T_TELNO |
| 6 | Screen:FUW00116 | FUW00116SFLogic.finMskm | setEKK0371D010 [C] KK_T_OP_SVC_CONTRACT |
| 7 | Screen:FUW00116 | FUW00116SFLogic.finMskm | setEKK0381D010 [C] KK_T_OP_SVC_CONTRACT |
| 8 | Screen:FUW00116 | FUW00116SFLogic.finMskm | setEKK0491C060 [U] KK_T_SEIKYU_CONTRACT |
| 9 | Screen:FUW00116 | FUW00116SFLogic.finMskm | setECC0021D010 [C] KK_T_EMAIL |
| 10 | Screen:FUW00116 | FUW00116SFLogic.finMskm | setEKK0521D020 [C] KK_T_CARD_REG |
| 11 | Screen:FUW00116 | FUW00116SFLogic.finMskm | setEKK1091D010 [C] KK_T_ADVANCE |
| 12 | Screen:FUW00116 | FUW00116SFLogic.finMskm | setEKK0061A010 [C] KK_T_AGNT |
| 13 | Screen:FUW00116 | FUW00116SFLogic.finMskm | setEKKA0010003 [C] KK_T_ASSOCIATION |
| 14 | Screen:FUW00116 | FUW00116SFLogic.finMskm | setFUSV016040SC [R] eo Net consent SC |
| 15 | Screen:FUW00116 | FUW00116SFLogic.finMskm | setJFUMineoSetPlanRenkeiCC [C] mineo discount |
| 16 | Screen:FUW00122 | (redirect target from finMskm) | outputMap data returned from service invocation |

## 6. Per-Branch Detail Blocks

### Block 1 — IF (campaign check) (L1060)

After loading all form beans and service info beans, check if a campaign has been selected.

| # | Type | Code |
|---|------|------|
| 1 | SET | `commoninfoBean = getCommonInfoBean()` |
| 2 | SET | `web_new_info = commoninfoBean.getDataBeanArray(CommonInfoCFConst.WEB_NEW_INFO)` |
| 3 | SET | `web_new_infobean = web_new_info.getDataBean(0)` |
| 4 | SET | `serviceFormBean = getServiceFormBean()` |
| 5 | SET | `bnEoNet = getEonet(web_new_infobean)` |
| 6 | SET | `bnEoTv = getEotv(web_new_infobean)` |
| 7 | SET | `bnEoTel[] = getEotel(web_new_infobean)` |
| 8 | SET | `keiyakuSvc = getKeiyakusvcinfo(web_new_infobean)` |
| 9 | SET | `mansioninfo = getMansioninfo(web_new_infobean)` |
| 10 | SET | `payWayInfo = getPywyInfo(web_new_infobean)` |
| 11 | SET | `redirectInfo = getRedirectinfo(web_new_infobean)` |
| 12 | SET | `elseInfo = getelseInfo(web_new_infobean)` |
| 13 | CALL | `JFUWebCommon.campaignCheck(web_new_infobean, this)` |
| 14 | IF | Campaign check returns false -> handle campaign result |

### Block 1.1 — IF (campaign check fails) (L1076)

Campaign is selected, so set the campaign result code and redirect to confirmation screen FUW00166.

| # | Type | Code |
|---|------|------|
| 1 | SET | `elseInfo.sendMessageString(CommonInfoCFConst.CAMPAIGN_RESULTCODE_18, "1")` |
| 2 | SET | `web_new_infobean.sendMessageString(CommonInfoCFConst.SCREEN_MODE_06, SCREEN_MODE_KAKUNIN)` |
| 3 | SET | `commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, SCREEN_ID_FUW00166)` |
| 4 | SET | `commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, SCREEN_NAME_FUW00166)` |
| 5 | RETURN | `return true` |

### Block 2 — IF (new subscriber check) (L1090)

Check if this is a new subscription (MSKM_KBN equals MSKM_KBN_NEW). If so, validate keisha (subscriber) info.

| # | Type | Code |
|---|------|------|
| 1 | SET | `mskmKbn = web_new_infobean.sendMessageString(CommonInfoCFConst.MSKM_KBN_06, GET)` |
| 2 | IF | `JFUStrConst.MSKM_KBN_NEW.equals(mskmKbn)` |

### Block 2.1 — IF (keisha validation) (L1092)

Validate the subscriber's existing contract status.

| # | Type | Code |
|---|------|------|
| 1 | SET | `mapper = new FUSV0012_FUSV0012OPDBMapper()` |
| 2 | CALL | `mapper.checkKeishaInfo(web_new_infobean, this)` |
| 3 | IF | `!checkKeishaInfo(...)` -> throw ERROR_CODE_0013 |
| 4 | THROW | `JCCBusinessException(ERROR_CODE_0013)` -- Contract status error |

### Block 3 — PROCESSING (operational date and mail setup) (L1100)

| # | Type | Code |
|---|------|------|
| 1 | SET | `opeDate = JFUWebCommon.getOpeDate(this, null)` |
| 2 | CALL | `setFormBeanMailInfo(web_new_infobean, serviceFormBean)` |

### Block 4 — PROCESSING (mineo set plan info) (L1107)

Set mineo set-discount application info and propagate DNS flags across all service beans.

| # | Type | Code |
|---|------|------|
| 1 | CALL | `setmineoSetPlanInfo(commoninfoBean, serviceFormBean)` |
| 2 | SET | `dnskhDoiUmFlg = serviceFormBean.sendMessageString(DNSKH_DOI_ZM_FLG, GET)` |
| 3 | SET | `web_new_infobean.sendMessageString(DNSKH_DOI_UM_SCREEN_06, dnskhDoiUmFlg)` |
| 4 | SET | `bnEoNet.sendMessageString(DNSKH_DOI_ZM_FLG_11, dnskhDoiUmFlg)` |
| 5 | FOR | `for (telBean : bnEoTel)` -> set DNSKH_DOI_ZM_FLG_12 for each |
| 6 | SET | `bnEoTv.sendMessageString(DNSKH_DOI_ZM_FLG_13, dnskhDoiUmFlg)` |
| 7 | SET | `addInputMap = new HashMap<String, Object>()` |
| 8 | CALL | `JFUWebCommon.setMskmDmenXmlMapWebNew(addInputMap, this)` |
| 9 | SET | `super.setSessionObject("add_input_map", addInputMap)` |

### Block 5 — IF (wireless backhaul service type) (L1133)

Determine key service type code based on wireless backhaul service type and mansion type.

| # | Type | Code |
|---|------|------|
| 1 | SET | `mskm_ksn_svc = web_new_infobean.sendMessageString(MSKM_KSN_SVC_06, GET)` |
| 2 | SET | `mskmMnsType = web_new_infobean.sendMessageString(MSKM_MNS_TYPE_06, GET)` |
| 3 | SET | `plc_mskm = bnEoNet.sendMessageString(PLC_MSKM_11, GET)` |
| 4 | SET | `mesh_wifi = bnEoNet.sendMessageString(MESH_WIFI_11, GET)` |
| 5 | SET | `taknkikiModelCd = null` |
| 6 | SET | `keySvcTypeSkbtCd = null` |
| 7 | IF | `MSKM_KSN_SVC_HOME.equals(mskm_ksn_svc)` -> `keySvcTypeSkbtCd = "HF"` |
| 8 | ELSE-IF | `MSKM_KSN_SVC_MANSION && MSKM_MNS_TYPE_MEZON` -> `keySvcTypeSkbtCd = "MZ"` |
| 9 | ELSE-IF | `MSKM_KSN_SVC_MANSION && MSKM_MNS_TYPE_MANSION` -> `keySvcTypeSkbtCd = "MF"` |

### Block 5.1 — IF (PLC/Mesh Wi-Fi device model) (L1148)

If PLC repeater or mesh Wi-Fi is selected, query device model code via FUSV0376.

| # | Type | Code |
|---|------|------|
| 1 | IF | `("1".equals(plc_mskm) || "1".equals(mesh_wifi))` |
| 2 | IF | `"1".equals(plc_mskm)` -> query WLR path via getDispItemsAsMap |
| 3 | CALL | `callSvcFUSV0376(keySvcTypeSkbtCd, dispDefMapModelWlr)` -> `taknkikiModelCd` |
| 4 | ELSE-IF | `"1".equals(mesh_wifi)` -> query MESH_WIFI path |
| 5 | CALL | `callSvcFUSV0376(keySvcTypeSkbtCd, dispDefMapModelMeshwifi)` -> `taknkikiModelCd` |
| 6 | IF | `JFUWebCommon.isNull(taknkikiModelCd)` -> throw ERROR_CODE_0002 |

### Block 6 — IF (whole-building vs individual registration) (L1170)

Main branching point for service registration mapping approach.

| # | Type | Code |
|---|------|------|
| 1 | SET | `paramMap.put(TELEGRAM_INFO_USECASE_ID, USECASE_ID_FUSV0160)` |
| 2 | SET | `mapper = new FUSV0160_FUSV0160OPDBMapper()` |
| 3 | SET | `mapper_152 = new FUSV0152_FUSV0152OPDBMapper()` |
| 4 | SET | `mapper_161 = new FUSV0161_FUSV0161OPDBMapper()` |
| 5 | SET | `inputMap = (HashMap)super.getSessionObject("add_input_map").get(true)` |
| 6 | SET | `beans = { commoninfoBean, serviceFormBean }` |
| 7 | SET | `knykeiMskmJokenCd = mansioninfo.sendMessageString(KNYKEI_MSKM_JOKEN_CD_16, GET)` |
| 8 | IF | `KNYKEI_MSKM_JOKEN_CD_13.equals(knykeiMskmJokenCd)` [code "13" = whole-building] |

### Block 6.1 — IF (whole-building batch mapping) (L1180)

For whole-building registration, use batch mapping instead of individual registration.

| # | Type | Code |
|---|------|------|
| 1 | SET | `paramMap.put(TELEGRAM_INFO_USECASE_ID, USECASE_ID_FUSV0161)` |
| 2 | CALL | `callSetdatamap(mapper_152, mapper, mapper_161, beans, inputMap, taknkikiModelCd)` |
| 3 | GOTO | Block 11 (outputMap preparation) |

### Block 6.2 — ELSE (full per-service registration) (L1189)

Over 50 mapper calls to register all service contracts sequentially:

| # | Type | Code | Business Description |
|---|------|------|---------------------|
| 1 | CALL | `setMskmDmenXmlMap(beans, inputMap, FUNC_CD_1)` | Subscription screen XML mapping |
| 2 | CALL | `setFUSV016006CC(beans, inputMap, FUNC_CD_1)` | Usage location / residence split |
| 3 | CALL | `setFUSV016007CC(beans, inputMap, FUNC_CD_1)` | Contract holder residence |
| 4 | CALL | `setFUSV016008CC(beans, inputMap, FUNC_CD_1)` | Number portability residence |
| 5 | CALL | `setFUSV016010CC(beans, inputMap, FUNC_CD_1)` | Mobile device delivery address |
| 6 | CALL | `setEKK0011C050(beans, inputMap, FUNC_CD_1)` | Provisional registration |
| 7 | CALL | `setEKK0011C110(beans, inputMap, FUNC_CD_1)` | Subscription content approval |
| 8 | CALL | `setEKK0341D010(beans, inputMap, FUNC_CD_1, modelCd)` | Device contract registration |
| 9 | CALL | `setEKK2811B503(beans, inputMap, FUNC_CD_1)` | Equipment list (front) |
| 10 | CALL | `setEKK0341B002(beans, inputMap, FUNC_CD_1)` | Contract list |
| 11 | CALL | `setEKK0341C330(beans, inputMap, FUNC_CD_1)` | Contract cancellation |
| 12 | CALL | `setEKK0091A010(beans, inputMap, FUNC_CD_1)` | eo Net consent |
| 13 | CALL | `setEKK0341D010Tkn(beans, inputMap, FUNC_CD_1)` | Device contract (TK) |
| 14 | CALL | `setEKK2811D010Net02(beans, inputMap, FUNC_CD_1)` | Equipment option (Net) |
| 15 | CALL | `setEKK2811D010Tel02(beans, inputMap, FUNC_CD_1)` | Equipment option (Tel) |
| 16 | CALL | `setEKK0391D010(beans, inputMap, FUNC_CD_1)` | Support service registration |
| 17 | CALL | `setFUSV016040SC(beans, inputMap, FUNC_CD_2)` | eo Net consent SC |
| 18 | CALL | `setJKKSecurityPackOperateCC(beans, inputMap, FUNC_CD_1)` | Security pack operation |
| 19 | CALL | `setJFUFamipaRouterCC(beans, inputMap, FUNC_CD_2, opeDT)` | Family router auto register |
| 20 | CALL | `setJFUVaKikiCancelCC(beans, inputMap)` | Equipment option cancel |
| 21 | CALL | `setJFUWribSvcKeiAutoAddCC(beans, inputMap, FUNC_CD_1)` | Discount auto add |
| 22 | CALL | `setFUSV016033CC(beans, inputMap, FUNC_CD_1, opeDate)` | Discount registration |
| 23 | CALL | `setFUSV016034CC(beans, inputMap, FUNC_CD_1, opeDate)` | Data extraction |
| 24 | CALL | `setFUSV016021CC(beans, inputMap)` | Latest contract update mapping |

### Block 6.2.1 — IF (tablet/GH plan check) (L1219)

For tablet or GH buy plans, register additional agent, ISP, device, and discount contracts.

| # | Type | Code |
|---|------|------|
| 1 | IF | `SMALIN_TABLET_MSKM.equals(bnEoNet.getTabletTanmtMskm())` OR `GH_TANMT_BUY.equals(bnEoNet.getGhTanmt())` |
| 2 | CALL | `setEKK0061A010(beans, inputMap, FUNC_CD_2)` -- Agent consent |
| 3 | CALL | `setJFUSmartLinAdd2CC(beans, inputMap)` -- eo Smart Link 2 |
| 4 | CALL | `setEKK0361D010(beans, inputMap, FUNC_CD_1)` -- ISP contract |
| 5 | CALL | `setEKK0341D010Sml(beans, inputMap, FUNC_CD_1, opeDate)` -- Device contract (small) |
| 6 | CALL | `setEKK2541D010(beans, inputMap, FUNC_CD_1)` -- Discount contract |

### Block 6.2.2 — ELSE (standard phone and option registrations) (L1238)

| # | Type | Code |
|---|------|------|
| 1 | CALL | `setJFUBmpTelNoAddChkCC(beans, inputMap, FUNC_CD_2)` -- BMP phone check |
| 2 | CALL | `setTransferCC(beans, inputMap)` -- Data transfer |
| 3 | CALL | `setJKKChkDobanitenPsbAreaCC(beans, inputMap)` -- Number transfer area check |
| 4 | CALL | `setJFUMstTelNoUpdCC(beans, inputMap, FUNC_CD_1)` -- Master tel update |
| 5 | CALL | `setEZM0121D010(beans, inputMap, FUNC_CD_1)` -- Phone registration |
| 6 | CALL | `setEZM0111D010(beans, inputMap, FUNC_CD_1)` -- Ekiing registration |
| 7 | CALL | `setEKK0191C012(beans, inputMap, FUNC_CD_1)` -- Tel contract content change |
| 8 | CALL | `setEKK0371D010(beans, inputMap, FUNC_CD_1)` -- Tel option contract |
| 9 | CALL | `setEKK0381D010(beans, inputMap, FUNC_CD_1)` -- TV option contract |
| 10 | CALL | `setEKK0341C230(beans, inputMap, FUNC_CD_1)` -- Device contract info change |
| 11 | CALL | `setEKK0431D010(beans, inputMap, FUNC_CD_1)` -- Sub-option registration |
| 12 | CALL | `setEKKA0010003(beans, inputMap, FUNC_CD_1)` -- Pre-association request |
| 13 | CALL | `setEKK0521D020(beans, inputMap, FUNC_CD_1)` -- Credit card reg map |
| 14 | CALL | `setEKK0521D010(beans, inputMap, FUNC_CD_1, NOT_IKT)` -- Credit card request map |
| 15 | CALL | `setEKK1031D010(beans, inputMap, FUNC_CD_1, opeDT)` -- Association registration |
| 16 | CALL | `setJFUAddSeikyKozaCC(beans, inputMap, FUNC_CD_1)` -- Bank account |
| 17 | CALL | `setEKK0491C240(beans, inputMap, FUNC_CD_1, opeDate)` -- Payment change |
| 18 | CALL | `setEKK0491C060(beans, inputMap, FUNC_CD_1, opeDate)` -- Invoice contract change |
| 19 | CALL | `setEKK0081C012(beans, inputMap, FUNC_CD_1)` -- Payment method continuation |
| 20 | CALL | `setEKK0491C220(beans, inputMap, FUNC_CD_1)` -- Invoice reservation cancel |
| 21 | CALL | `setEKK0321D010(beans, inputMap, FUNC_CD_1)` -- Invoice destination |
| 22 | CALL | `mapper_152.setJFUAddAgntCC(beans, inputMap, FUNC_CD_1, SCREEN_ID_FUW00116)` -- Agent |
| 23 | CALL | `setEKK1091D010(beans, inputMap, FUNC_CD_1)` -- Advance registration |
| 24 | CALL | `setECC0021D010(beans, inputMap, FUNC_CD_1)` -- Email registration |
| 25 | CALL | `setECC0021D010_PAY(beans, inputMap, FUNC_CD_1)` -- Email payment registration |
| 26 | CALL | `setEKK2201A010(beans, inputMap, FUNC_CD_1)` -- Web support consent |
| 27 | CALL | `setEKK2201C010(beans, inputMap, FUNC_CD_1)` -- Web support update |
| 28 | CALL | `setEKK0321B002(beans, inputMap, FUNC_CD_1)` -- Telephone couple |

### Block 6.2.3 — IF (telephone package) (L1285)

| # | Type | Code |
|---|------|------|
| 1 | SET | `telMskm = keiyakuSvc.sendMessageString(SELECT_SVC_TEL_10, GET)` |
| 2 | SET | `telCourse = web_new_infobean.sendMessageString(TEL_COURSE_06, GET)` |
| 3 | IF | `SELECT_SVC_TEL_CHOICE.equals(telMskm)` -> register tel package 1-number |
| 4 | CALL | `setEKK0451D01001(beans, inputMap, FUNC_CD_1, opeDate)` |
| 5 | IF | `TEL_COURSE_2BANGOU_SVC.equals(telCourse)` [2-number course] |
| 6 | CALL | `setEKK0451D01002(beans, inputMap, FUNC_CD_1, opeDate)` |

### Block 6.2.4 — ELSE (discount auto apply) (L1300)

| # | Type | Code |
|---|------|------|
| 1 | CALL | `setJKKWrisvcAutoAplyCC(beans, inputMap, FUNC_CD_1)` -- Discount auto apply |
| 2 | CALL | `setJKKWrisvcAutoAplyCC2(beans, inputMap, FUNC_CD_1)` -- Discount auto apply 2 |
| 3 | CALL | `setEKK1391C040(beans, inputMap, FUNC_CD_1, opeDate)` -- Data extraction complete |
| 4 | CALL | `setJFUBackyardMappingCC(beans, inputMap)` -- WiFi set mapping |
| 5 | CALL | `setJFUCustCC(beans, inputMap, FUNC_CD_1)` -- Customer data |
| 6 | CALL | `setJFUSameSeikyusakiCheckCC(beans, inputMap, FUNC_CD_1)` -- Same invoice check |
| 7 | CALL | `setJFUAddSeikyOpSvcCC(beans, inputMap, "1")` -- Invoice op service reg |

### Block 6.2.5 — IF (electric guide desire) (L1319)

| # | Type | Code |
|---|------|------|
| 1 | IF | `ELEC_GUIDE_KIBO_ARI.equals(bnEoNet.getElecGuideKibo())` |
| 2 | SET | `opeDateStamp = JFUWebCommon.getOpeDateTimeStamp(this, null)` |
| 3 | CALL | `setECR0511D010(beans, inputMap, FUNC_CD_1, opeDateStamp)` -- CASE file reg |

### Block 6.2.6 — IF (mineo set plan application) (L1331)

Check if mineo set-discount application is active and register.

| # | Type | Code |
|---|------|------|
| 1 | IF | `(MINEO_SETPLAN_KBN="2" && telArea!=empty && telCity!=empty && telLocal!=empty)` OR `(MINEO_SETPLAN_KBN="1" && uktnNo!=empty)` |
| 2 | CALL | `setEKK0011A010(beans, inputMap, FUNC_CD_2)` -- Subscription approval |
| 3 | CALL | `setEKK0011C020(beans, inputMap, FUNC_CD_1, SCREEN_ID_FUW00116)` -- Content change mapping |
| 4 | CALL | `setJFUMineoSetPlanRenkeiCC(beans, inputMap, opeDateTimeStamp)` -- Mineo set-discount linkage |

### Block 6.2.7 — IF (terminal repair plan) (L1355)

| # | Type | Code |
|---|------|------|
| 1 | SET | `netInfobean = getEonet(web_new_infobean)` |
| 2 | SET | `netPcpln = netInfobean.getKkCompPcMskm()` |
| 3 | SET | `netPcwpln = netInfobean.getKkCompPcwMskm()` |
| 4 | SET | `netTvpln = netInfobean.getKkCompTvMskm()` |
| 5 | IF | `(PC_PLN_MSKM.equals(netPcpln) || PCW_PLN_MSKM.equals(netPcwpln) || TV_PLN_MSKM.equals(netTvpln))` |
| 6 | SET | `mskmDate = JFUWebCommon.getOpeDate(this, null)` |
| 7 | CALL | `setJKKTmcpOperateCC(beans, inputMap, FUNC_CD_1, mskmDate)` -- Terminal repair CC |

### Block 6.2.8 — ELSE (standard post-service registrations) (L1383)

| # | Type | Code |
|---|------|------|
| 1 | CALL | `setFUSV016041CC(beans, inputMap)` -- Address split CC |
| 2 | CALL | `setFUSV016042CC(beans, inputMap)` -- Contract state check |
| 3 | SET | `payway = payWayInfo.sendMessageString(PAYWAY_15, GET)` |
| 4 | IF | `payway.equals(PAYWAY_CREDIT)` -> `setFUSV016047SC(...)` -- Credit payment SC |
| 5 | IF | Campaign list has entries -> `setJFUGetCampaignListCC(...)` |
| 6 | IF | `intrCd` matches regex `[A-Z][0-9]{9}` -> `setFUSV016044SC` + `setFUSV016043SC` -- Referral |

### Block 7 — PROCESSING (outputMap and post-invoke setup) (L1421)

| # | Type | Code |
|---|------|------|
| 1 | SET | `outputMap = new HashMap<String, Object>()` |
| 2 | CALL | `setWorkStrConstMap(beans, inputMap, FUNC_CD_1)` -- Fixed language linkage |
| 3 | CALL | `setFUSV016046SC(beans, inputMap, FUNC_CD_1)` |
| 4 | SET | `cxStartFrom = JFUWebCommon.getDispItem(CX_START_FROM)` |
| 5 | IF | `cxStartFrom <= opeDate && MSKM_KBN_NEW` -> `setJFUEoidInputInfoAddCC(...)` |
| 6 | CALL | `setJFUMskmDtlUpdCC(beans, inputMap, FUNC_CD_1)` -- Subscription detail update |

### Block 8 — TRY-CATCH (service invocation) (L1438)

Main service invocation with comprehensive exception handling for all SC errors.

| # | Type | Code |
|---|------|------|
| 1 | TRY | `invokeService(paramMap, inputMap, outputMap)` |
| 2 | CATCH | `JCCWebServiceException e` |
| 3 | SET | `moreInfo = e.getMessageList().getMessageMoreInfoList()` |
| 4 | SET | `info = moreInfo[0]` |
| 5 | SET | `templateid = info.getTemplateId()` |
| 6 | SET | `itemid = info.getItemId()` |
| 7 | SET | `status = info.getStatus()` |
| 8 | SET | `errFlg = info.getItemCheckErr()` |
| 9 | IF | `RELATION_ERR.equals(status) && EKKA0010003.equals(templateid)` |

### Block 8.1 — IF (association error retry via FUSV0368) (L1464)

| # | Type | Code |
|---|------|------|
| 1 | IF | `outputMap.containsKey("EKKA0010003")` |
| 2 | SET | `mapper_368 = new FUSV0368_FUSV0368OPDBMapper()` |
| 3 | SET | `paramMap_368.put(TELEGRAM_INFO_USECASE_ID, USECASE_ID_FUSV0368)` |
| 4 | CALL | `mapper_368.setFUSV036801CC(parentMap, inputMap_368, FUNC_CD_1)` |
| 5 | TRY | `invokeService(paramMap_368, inputMap_368, outputMap_368)` |
| 6 | CATCH | `JCCWebServiceException e_368` -> throw ERROR_CODE_0002 |

### Block 8.2 — IF (payment/credit card errors) (L1492)

| # | Type | Code |
|---|------|------|
| 1 | IF | `ERR_PY_CARDNUMBER.equals(itemid)` [py_connect_id] -> set CR_RESULTCODE_NG, redirect FUW00115, return true |
| 2 | IF | `ERR_PY_CARDEXP.equals(itemid)` [py_connect_password] -> set CR_RESULTCODE_NG_2, redirect FUW00115, return true |
| 3 | IF | `ERR_PY_AMOUNT.equals(itemid)` [py_card_token] -> set CR_RESULTCODE_NG_4, redirect FUW00115, return true |
| 4 | ELSE | set CR_RESULTCODE_NG_3, redirect FUW00115, return true |

### Block 8.3 — IF (campaign errors) (L1572)

| # | Type | Code |
|---|------|------|
| 1 | IF | `(EKK1351A010 || EKK1351B003 || EKK0841A010 || EKK0841B003).equals(templateid) && RELATION_CHECK_ERR_EA.equals(errFlg)` |
| 2 | IF | `"notfound".equals(itemid)` -> set elseInfo CAMPAIGN_RESULTCODE_18="1", redirect FUW00166, return true |
| 3 | IF | `"outofrange".equals(itemid)` -> set elseInfo CAMPAIGN_RESULTCODE_18="2", redirect FUW00166, return true |

### Block 8.4 — IF (other template errors) (L1598)

| # | Type | Code |
|---|------|------|
| 1 | IF | `EKK0081B524.equals(templateid) && ITEMID_KEY_SVC_KEI_ERR.equals(itemid)` -> throw ERROR_CODE_0102 |
| 2 | IF | `EZM0121A010.equals(templateid) && ITEMID_KEY_TELNO_ERR.equals(itemid)` -> throw ERROR_CODE_0103 |
| 3 | IF | `EZM0111B030.equals(templateid) && ITEMID_KEY_AGING_TG_VALUE_ERR.equals(itemid)` -> throw ERROR_CODE_0103 |
| 4 | IF | `ETU0071A010.equals(templateid) && ITEMID_KEY_JUDGE_KYOKU_NO_ERR.equals(itemid)` -> throw ERROR_CODE_0103 |
| 5 | IF | `"EKK0161B511".equals(templateid) && "upplno".equals(itemid)` -> throw ERROR_CODE "0112" |
| 6 | IF | `EZM0121C010.equals(templateid) && ITEMID_TELNO_ERR.equals(itemid)` -> throw ERROR_CODE_0102 |

### Block 8.5 — IF (mineo contract errors) (L1646)

| # | Type | Code |
|---|------|------|
| 1 | IF | `EKKA0070001.equals(templateid) && RELATION_CHECK_ERR_EA.equals(errFlg)` |
| 2 | IF | `("shokai" || "else").equals(itemid)` -> setMessageInfo(MSG_EKF2020_NW, MINEO_TEL), return true |
| 3 | IF | `"nodata".equals(itemid)` -> setMessageInfo(MSG_EKF2030_NW, MINEO_TEL), return true |
| 4 | IF | `"EKK0251B502".equals(templateid) && "mineo_stat".equals(itemid)` -> throw ERROR_CODE_0102 |
| 5 | IF | `"ECK0011B009".equals(templateid) && "cust_rsv".equals(itemid)` -> throw ERROR_CODE_0102 |
| 6 | ELSE | throw ERROR_CODE_0002 (system error) |

### Block 9 — PROCESSING (post-invoke) (L1664)

| # | Type | Code |
|---|------|------|
| 1 | CALL | `JFUWebCommon.executeAxmRenkeiService(this)` -- AxM integration |
| 2 | SET | `workKiseiListBean = getWorkKiseiList(commoninfoBean)` |
| 3 | SET | `frontKadoTrgtKiseiFlg = workKiseiListBean.sendMessageString(FRONT_KADO_TRGT_KISEI_FLG_48, GET)` |
| 4 | IF | `!REQUEST_RESTRICTION_FLG_ON.equals(frontKadoTrgtKiseiFlg)` |

### Block 9.1 — IF (no restriction) (L1674)

| # | Type | Code |
|---|------|------|
| 1 | IF | `KNYKEI_MSKM_JOKEN_CD_13.equals(knykeiMskmJokenCd)` [whole-building] |
| 2 | CALL | `callGetdatamap(mapper_152, mapper_161, beans, outputMap)` -- Output mapping |

### Block 9.2 — ELSE (restriction active) (L1682)

| # | Type | Code |
|---|------|------|
| 1 | CALL | `keiyakuSvc.sendMessageString(UPD_DTM_MSKM_NO_10, opeDateTime)` -- Set update datetime |

### Block 10 — FINAL PROCESSING (L1690)

| # | Type | Code |
|---|------|------|
| 1 | SET | `web_new_infobean.sendMessageString(SCREEN_MODE_06, SCREEN_MODE_DEF)` |
| 2 | SET | `commoninfoBean.sendMessageString(NEXT_SCREEN_ID, SCREEN_ID_FUW00122)` |
| 3 | SET | `commoninfoBean.sendMessageString(NEXT_SCREEN_NAME, SCREEN_NAME_FUW00122)` |
| 4 | IF | `KNYKEI_MSKM_JOKEN_CD_13.equals(knykeiMskmJokenCd)` -> `usecaseId = USECASE_ID_FUSV0161` |
| 5 | ELSE | `usecaseId = USECASE_ID_FUSV0160` |
| 6 | CALL | `JFUWebCommon.sendMskmFinMail(this, outputMap, usecaseId)` -- Completion email |
| 7 | RETURN | `return true` |

## 7. Glossary

| Term | Type | Business Meaning |
|------|------|------------------|
| finMskm | Method | Finalize subscription - completes the application when user presses the button on payment method confirmation screen |
| mskm_kbn | Field | Subscription category code - "new" for new subscribers, other values for existing customers |
| mskm_kbn_new | Constant | New subscription indicator |
| mskm_ksn_svc | Field | Wireless backhaul service type - indicates whether wireless LAN repeater service is included |
| mskm_mns_type | Field | Mansion type - "mezon" for apartment-style, "mansion" for full mansion buildings |
| knykei_mskm_joken_cd | Field | Building subscription condition code - "13" means whole-building (all-units) simultaneous registration |
| plc_mskm | Field | PLC (Power Line Communication) wireless LAN repeater selection flag |
| mesh_wifi | Field | Mesh Wi-Fi selection flag |
| taknkiki_model_cd | Field | Device model code for wireless LAN repeaters |
| key_svc_type_skbt_cd | Field | Service type identification code - "HF" for home, "MZ" for mezon, "MF" for mansion |
| dnskh_doi_zm_flg | Field | DNS connection-related flag for mineo set-discount |
| mineo_setplan_kbn | Field | Mineo set-discount plan category - determines how mineo discount is applied |
| mineo_telno_areacd | Field | Mineo telephone number area code |
| mineo_telno_citycd | Field | Mineo telephone number city code |
| mineo_telno_local | Field | Mineo telephone number local code |
| mineo_uktk_no | Field | Mineo UKTK (unique contract) number |
| keiyaku_svc | Field | Contract service data bean containing telephone service selection info |
| pay_way_info | Field | Payment method information bean containing payment type and result codes |
| redirect_info | Field | Redirect information bean containing referral code data |
| else_info | Field | Miscellaneous information bean containing campaign result codes |
| invokeService | Method | Invokes the batch of SC (Service Component) operations to register all services |
| usecase_id | Field | Service use case identifier - FUSV0160 for individual, FUSV0161 for whole-building |
| add_input_map | Session Key | Session-stored subscription input data map |
| output_map | Variable | Output data map populated by invokeService() with SC operation results |
| param_map | Variable | Parameter map with usecase ID passed to invokeService() |
| SCREEN_MODE_DEF | Constant | Default screen mode for redirect after completion |
| SCREEN_MODE_KAKUNIN | Constant | Confirmation screen mode |
| EKK0011C050 | SC Code | Provisional registration service component |
| EKK0011C110 | SC Code | Subscription content approval service component |
| EKK0011A010 | SC Code | Subscription agreement service component |
| EKK0011C020 | SC Code | Subscription content change mapping |
| EKK0341D010 | SC Code | Equipment provision service contract registration |
| EKK0341B002 | SC Code | Equipment provision service contract list |
| EKK0341C330 | SC Code | Equipment provision service contract cancellation |
| EKK0341C230 | SC Code | Equipment provision service contract information change |
| EKK0361D010 | SC Code | Option service contract ISP registration |
| EKK0371D010 | SC Code | Option service contract Telephone registration |
| EKK0381D010 | SC Code | Option service contract TV registration |
| EKK0391D010 | SC Code | Option service contract support registration |
| EKK0431D010 | SC Code | Sub-option registration |
| EKK0451D01001 | SC Code | Telecom package discount contract (1-number) |
| EKK0451D01002 | SC Code | Telecom package discount contract (2-number) |
| EKK0491C060 | SC Code | Invoice contract content change |
| EKK0491C240 | SC Code | Payment change |
| EKK0491C220 | SC Code | Invoice contract reservation cancellation |
| EKK0081C012 | SC Code | Payment method continuation change |
| EKK0091A010 | SC Code | eo Light Internet agreement consent |
| EKK0061A010 | SC Code | Agent consent agreement |
| EKK0191C012 | SC Code | Service contract content change (eo Light Tel) |
| EKK0321D010 | SC Code | Invoice destination registration |
| EKK0521D020 | SC Code | Credit card registration map |
| EKK0521D010 | SC Code | Credit card request map |
| EKK1031D010 | SC Code | Association actual result registration |
| EKK1091D010 | SC Code | Advance registration |
| EKK2201A010 | SC Code | Application screen input support consent |
| EKK2201C010 | SC Code | Application screen input support update |
| EKK2541D010 | SC Code | Discount contract registration |
| EKK2811B503 | SC Code | Equipment option service contract list (front) |
| EKK2811D010 | SC Code | Equipment option service contract registration |
| EKKA0010001 | Error Template | Initial association request error template |
| EKKA0010003 | Error Template | Pre-association request error template |
| EKKA0070001 | Error Template | Individual discount application check/change |
| EZM0111D010 | SC Code | Ekiing (station advertising) registration |
| EZM0121D010 | SC Code | Telephone number registration |
| ECC0021D010 | SC Code | Email information registration |
| ECR0511D010 | SC Code | CASE file creation work registration |
| FUSV0160 | Use Case | Individual subscription processing use case |
| FUSV0161 | Use Case | Whole-building (all-units) subscription processing use case |
| FUSV0368 | Use Case | Card receipt update processing |
| FUSV0376 | Service | Device model code query service |
| FUSV0319 | Use Case | Mineo set-discount application check/change |
| JFUWebCommon | Utility | Web common utility class with shared methods |
| JCCWebBusinessLogic | Base Class | Base business logic class for web operations |
| JCCBusinessException | Exception | Business-level exception with error codes |
| JCCWebServiceException | Exception | Web service exception from invokeService() |
| X31SDataBeanAccess | Class | Data bean access class for form data |
| X31SDataBeanAccessArray | Class | Array wrapper for data bean collections |
| FUNC_CD_1 | Constant | Function code 1 - used for standard processing |
| FUNC_CD_2 | Constant | Function code 2 - used for consent/agreement processing |
| NOT_IKT | Constant | "0" - not all-units (individual registration) |
| IKT | Constant | "1" - all-units |
| PAYWAY_CREDIT | Constant | Credit payment method indicator |
| SELECT_SVC_TEL_CHOICE | Constant | Telephone service selected indicator |
| TEL_COURSE_2BANGOU_SVC | Constant | 2-number service course |
| SMALIN_TABLET_MSKM | Constant | Tablet multi-device subscription indicator |
| GH_TANMT_BUY | Constant | GH (G-Hash) terminal purchase indicator |
| ELEC_GUIDE_KIBO_ARI | Constant | Electric guide desired = yes |
| PC_PLN_MSKM | Constant | PC plan for terminal repair |
| PCW_PLN_MSKM | Constant | PC Wireless plan for terminal repair |
| TV_PLN_MSKM | Constant | TV plan for terminal repair |
| MSKM_CHANNEL_CD_1 | Constant | Channel code 1 - web subscription |
| CR_RESULTCODE_NG | Constant | Credit card result: NG (payment failure) |
| CR_RESULTCODE_NG_2 | Constant | Credit card result: NG 2 (expired card) |
| CR_RESULTCODE_NG_3 | Constant | Credit card result: NG 3 (other error) |
| CR_RESULTCODE_NG_4 | Constant | Credit card result: NG 4 (amount error) |
| ERROR_CODE_0002 | Error | General system error |
| ERROR_CODE_0013 | Error | Contract status error (keisha validation) |
| ERROR_CODE_0102 | Error | Contract state error |
| ERROR_CODE_0103 | Error | Contract completed error |
| FUW00115 | Screen | Payment error confirmation screen (redirect target) |
| FUW00122 | Screen | Subscription completion confirmation screen |
| FUW00166 | Screen | Campaign result confirmation screen |
| eo Light Net | Service | Fiber optic Internet service by K-Opticom |
| eo Light TV | Service | Digital television service by K-Opticom |
| eo Light Tel | Service | Telephone service by K-Opticom |
| mineo | Service | MVNO mobile service brand by K-Opticom |
| set-discount | Service | Discount plan applied when combining mineo with eo Light services |
| PLC | Term | Power Line Communication - internet via electrical wiring |
| Ekiing | Service | Station advertising service (billboard placement at train stations) |
| AxM | System | AxM linked service - instruction/notification integration |
| SC | Term | Service Component - backend service method invoked via invokeService |
| CC | Term | Common Component - shared business logic component |
| mapper | Term | OPDBMapper - data mapping class between form beans and SC input maps |
| invokeService | Method | Main service invocation method that executes all SC operations in batch |
