## 6. Per-Branch Detail Blocks

### Block 1 -- IF (Network/ADSL Branch) `(svc_kind == NET or ADSL)` (L7241)

> Network service recovery processing. Handles FTTH auth recovery, optional service re-registration, BBR device recovery, multi-function router, and pause/termination.

| # | Type | Code |
|---|------|------|
| 1 | SET | `getSameTrnNoFlg = false;` // Same transaction number discovery flag |
| 2 | SET | `eKK0351B002SCHashListMltise = new ArrayList();` // Multi-session optional contract list |
| 3 | SET | `eKK0351B002SCHashListFixipad = new ArrayList();` // Fixed IP address optional contract list |
| 4 | SET | `eKK0351B002SCHashListOp = new ArrayList();` // Optional service contract list |
| 5 | SET | `ipv6OpSvcList = new ArrayList();` // IPv6 optional service info list |

#### Block 1.1 -- IF (Not ADSL or ADSL Furetsu) `(!ADSL.equals(svc_kind) || pcrs_cd == FURETSU)` (L7265)

> FTTH authentication processing block. eoADSL alone does not process FTTH auth.

| # | Type | Code |
|---|------|------|
| 1 | SET | `inHashMltise.put(SVC_KEI_NO, svc_kei_no);` // Service contract number |
| 2 | SET | `inHashMltise.put(OP_SVC_CD, OP_SVC_CD_MLTISE);` // Option service code (Multi-session) |
| 3 | EXEC | `callEKK0351B002SC(param, handle, inHashMltise, resultHashMltise, FUNC_CODE_1);` // Multi-session opt svc list inquiry |
| 4 | IF | `0 != statusCode` -> throw CCException + SCCallException |
| 5 | SET | `msgEKK0351B002SCList = (CAANMsg[])resultHashMltise.get(TEMPLATE_ID_EKK0351B002);` |
| 6 | FOR | Loop through msgEKK0351B002SCList [L7290] |

##### Block 1.1.1 -- IF (Skip cancelled/terminated) `(stat == 920 or 910)` (L7294)

| # | Type | Code |
|---|------|------|
| 1 | IF | `SVC_KEI_STAT_920.equals(op_svc_kei_stat) || SVC_KEI_STAT_910.equals(op_svc_kei_stat)` -> continue |

##### Block 1.1.2 -- IF (Parent service match check) (L7300)

| # | Type | Code |
|---|------|------|
| 1 | SET | `inHashOp2.put(OP_SVC_KEI_NO, msg.getString(OP_SVC_KEI_NO));` // Optional service contract number |
| 2 | SET | `inHashOp2.put(GENE_ADD_DTM, msg.getString(GENE_ADD_DTM));` // Generation registration timestamp |
| 3 | EXEC | `callEKK0351A010SC(param, handle, inHashOp2, resultHashOp2, FUNC_CODE_1);` // Optional service agreement inquiry |
| 4 | IF | `0 != statusCode` -> throw exception |
| 5 | SET | `oyaSvcKeiUcwkNo = eKK0351A010SCHash.get(SVC_KEI_UCWK_NO);` // Parent service contract detail number |
| 6 | IF | `!svc_kei_ucwk_no.equals(oyaSvcKeiUcwkNo)` -> continue [Mismatched parent] |
| 7 | SET | `eKK0351B002SCHashListMltise.add(eKK0351A010SCHash);` // Add valid entry to multi-session list |
| 8 | EXEC | `break;` // First match found |

#### Block 1.2 -- IF (Fixed IP Address Check) (L7331)

> Query fixed IP address optional services via EKK0351B002SC and EKK0351A010SC.

| # | Type | Code |
|---|------|------|
| 1 | SET | `inHashFixipad.put(SVC_KEI_UCWK_NO, svc_kei_ucwk_no);` // Service contract detail number |
| 2 | SET | `inHashFixipad.put(OP_SVC_CD, OP_SVC_CD_FIXIPAD);` // Option service code (Fixed IP Address) |
| 3 | EXEC | `callEKK0351B002SC(param, handle, inHashFixipad, resultHashFixipad, FUNC_CODE_1);` |
| 4 | FOR | Loop through msgEKK0351B002SCFipList [L7353] |
| 5 | IF | `stat == 920 or 910` -> continue |
| 6 | EXEC | `callEKK0351A010SC` for each entry |
| 7 | SET | `eKK0351B002SCHashListFixipad.add(eKK0351A010SCHash);` |
| 8 | SET | `this.op_svc_kei_no_fixipad = eKK0351A010SCHash.get(OP_SVC_KEI_NO);` |
| 9 | SET | `this.op_gadtm_fixipad = eKK0351A010SCHash.get(GENE_ADD_DTM);` |

#### Block 1.3 -- IF (Main Optional Services Loop) (L7379)

> Query all optional services and dispatch by op_svc_cd code.

| # | Type | Code |
|---|------|------|
| 1 | SET | `inHashMltise.put(SVC_KEI_NO, svc_kei_no);` |
| 2 | EXEC | `callEKK0351B002SC(param, handle, inHashMltise, resultHashMltise, FUNC_CODE_1);` |
| 3 | FOR | Loop through msgEKK0351B002SCList [L7387] |
| 4 | SET | `op_svc_cd = eKK0351B002SCHash.get(OP_SVC_CD);` |
| 5 | SET | `op_svc_kei_stat = eKK0351B002SCHash.get(OP_SVC_KEI_STAT);` |

##### Block 1.3.1 -- IF (Status and Code Match) `(stat == 020/030/100/210 AND op_svc_cd in {EMAIL, HP, MLIST, IPV6, DUP, FMTCEL})` (L7419)

> Check for active optional services. If match found, add to optional services list and set getSameTrnNoFlg.

| # | Type | Code |
|---|------|------|
| 1 | SET | `eKK0351B002SCHashListOp.add(eKK0351B002SCHash);` // Add to optional services list |
| 2 | SET | `getSameTrnNoFlg = true;` // Same transaction number discovery flag set |

##### Block 1.3.2 -- IF/ELSE-IF (op_svc_cd dispatch) (L7507-7610)

> Dispatch based on optional service code:
- B001 = EMAIL -> callEKK0361A010SC + addSOD (120: Email recovery)
- B002 = HP -> callEKK0361A010SC + check URL fields + addSOD (128: Homepage recovery)
- B003 = MLIST -> addSOD (133: Mailing list recovery)
- B020 = DUP -> addSOD (134: Dial-up connection registration/recovery)
- B075 = FMTCEL -> addSOD (165: Flett Cell recovery)
- B070 = IPV6 -> Add to ipv6OpSvcList for later processing

##### Block 1.3.2.1 -- IF (Email B001) `OP_SVC_CD_EMAIL.equals(op_svc_cd)` (L7508)

| # | Type | Code |
|---|------|------|
| 1 | SET | `inHashNet.put(OP_SVC_KEI_NO, op_svc_kei_no);` |
| 2 | SET | `inHashNet.put(GENE_ADD_DTM, op_gene_add_dtm);` |
| 3 | EXEC | `callEKK0361A010SC(param, handle, inHashNet, resultHashNet, FUNC_CODE_1);` |
| 4 | SET | `op_svc_kei_no_ml = op_svc_kei_no;` |
| 5 | SET | `op_gadtm_ml = op_gene_add_dtm;` |
| 6 | SET | `mlad = eKK0361A010SCHash.get(MLAD);` |
| 7 | EXEC | `addSOD(handle, param, ODR_NAIYO_CD_120);` // Email recovery |

##### Block 1.3.2.2 -- IF (Homepage B002) `OP_SVC_CD_HP.equals(op_svc_cd)` (L7536)

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `callEKK0361A010SC(param, handle, inHashNet, resultHashNet, FUNC_CODE_1);` |
| 2 | SET | `urlDomain = eKK0361A010SCHash.get(URL_DOMAIN);` |
| 3 | SET | `urlAccount = eKK0361A010SCHash.get(URL_ACCOUNT);` |
| 4 | IF | `isBlank(urlDomain) || isBlank(urlAccount)` -> continue (no SOD) |
| 5 | SET | `op_svc_kei_no_hp = op_svc_kei_no;` |
| 6 | SET | `op_gadtm_hp = op_gene_add_dtm;` |
| 7 | EXEC | `addSOD(handle, param, ODR_NAIYO_CD_128);` // Homepage recovery |

##### Block 1.3.2.3 -- IF (Mailing list B003) `OP_SVC_CD_MLIST.equals(op_svc_cd)` (L7572)

| # | Type | Code |
|---|------|------|
| 1 | SET | `op_svc_kei_no_mlist = op_svc_kei_no;` |
| 2 | SET | `op_gadtm_mlist = op_gene_add_dtm;` |
| 3 | EXEC | `addSOD(handle, param, ODR_NAIYO_CD_133);` // Mailing list recovery |

##### Block 1.3.2.4 -- IF (Dial-up B020) `OP_SVC_CD_DUP.equals(op_svc_cd)` (L7585)

| # | Type | Code |
|---|------|------|
| 1 | SET | `op_svc_kei_no_dial = op_svc_kei_no;` |
| 2 | SET | `op_gadtm_dial = op_gene_add_dtm;` |
| 3 | EXEC | `addSOD(handle, param, ODR_NAIYO_CD_134);` // Dial-up connection registration/recovery |

##### Block 1.3.2.5 -- IF (Flett Cell B075) `OP_SVC_CD_FMTCEL.equals(op_svc_cd)` (L7596)

| # | Type | Code |
|---|------|------|
| 1 | SET | `op_svc_kei_no_fmtcel = op_svc_kei_no;` |
| 2 | SET | `op_gadtm_fmtcel = op_gene_add_dtm;` |
| 3 | EXEC | `addSOD(handle, param, ODR_NAIYO_CD_165);` // Flett Cell recovery |

##### Block 1.3.2.6 -- IF (IPv6 B070) `OP_SVC_CD_IPV6.equals(op_svc_cd)` (L7609)

| # | Type | Code |
|---|------|------|
| 1 | SET | `ipv6Info = new HashMap<String, String>();` |
| 2 | SET | `ipv6Info.put(OP_SVC_KEI_NO, op_svc_kei_no);` |
| 3 | SET | `ipv6Info.put(GENE_ADD_DTM, op_gene_add_dtm);` |
| 4 | SET | `ipv6OpSvcList.add(ipv6Info);` // Deferred IPv6 SOD issuance |

#### Block 1.4 -- IF (BBR Device Check) `tmp_kiki_seizo_no != null` (L7644)

> BBR device provider check. If device info exists and not mansion private, set device fields.

| # | Type | Code |
|---|------|------|
| 1 | IF | `!isMansionPrvate()` -> continue (skip mansion private) |
| 2 | IF | `isOldCourseAvailable` -> addSOD (163: Router setup/change - course change) |
| 3 | ELSE | addSOD (147: Router connection info registration) |

#### Block 1.5 -- IF/ELSE-IF (Takino Router Flag) (L7796)

> Multi-function router setup based on takino_flg:
- takino_flg == 2: addTakinoSOD (401 registration or 404 change if course change)
- takino_flg == 4: addTakinoSOD (402 change or 404 change if course change)

| # | Type | Code |
|---|------|------|
| 1 | IF | `takino_flg == 2` -> addTakinoSOD (401 registration or 404 change) |
| 2 | ELSE-IF | `takino_flg == 4` -> addTakinoSOD (402 change or 404 change) |

#### Block 1.6 -- FOR (IPv6 Processing) (L7847)

| # | Type | Code |
|---|------|------|
| 1 | SET | `ipv6Info = ipv6OpSvcList.get(i);` |
| 2 | SET | `this.op_svc_kei_no_ipv6 = ipv6Info.get(OP_SVC_KEI_NO);` |
| 3 | SET | `this.op_gadtm_ipv6 = ipv6Info.get(GENE_ADD_DTM);` |
| 4 | SET | `this.sod_pattern_ipv6 = 1;` // IPv6 registration pattern |
| 5 | EXEC | `jdgIpv6EKK0361A010(handle, param, svc_kei_ucwk_no[0], op_svc_kei_no_ipv6, op_gadtm_ipv6);` |

#### Block 1.7 -- IF/ELSE-IF/ELSE (Pause/Termination State) `(svc_kei_stat == 210)` (L7864)

> Handle suspend/terminate state.
- svc_kei_stat == 210 AND pause_stp_cd != "02": Issue pause receipt SOD
- svc_kei_stat == 210 AND pause_stp_cd == "02": Issue termination SOD
- Otherwise: No action

| # | Type | Code |
|---|------|------|
| 1 | SET | `opSodKihonInfoMap.put(INFO_SYSID, sys_id);` |
| 2 | SET | `opSodKihonInfoMap.put(INFO_IDO_DIV, ido_div);` |
| 3 | SET | `opSvcKeiInfoMap.put(INFO_SVC_KEI_NO, svc_kei_no);` |
| 4 | SET | `opSvcKeiUcwkInfoMap.put(INFO_SVC_KEI_UCWK_NO, svc_kei_ucwk_no);` |
| 5 | SET | `opSvcKeiUcwkInfoMap.put(INFO_CHAF_SVC_KEI_UCWK_GENE_ADD_DTM, chaf_svc_kei_ucwk_gene_add_dtm);` |
| 6 | SET | `opSodMap.put(SOD_KIHON_INFO, opSodKihonInfoMap);` |
| 7 | SET | `opSodMap.put(SVC_KEI_INFO, opSvcKeiInfoMap);` |
| 8 | SET | `opSodMap.put(SVC_KEI_UCWK_INFO, opSvcKeiUcwkInfoMap);` |
| 9 | EXEC | `pauseUkOdrCtrl(handle, param, opSodMap);` // Pause receipt SOD |
| 10 | ELSE-IF | `pause_stp_cd == "02"` -> `stpUkOdrCtrl(handle, param, fixedText, sodMap);` // Termination SOD |

### Block 2 -- ELSE-IF (Mobile Branch) `(svc_kind == MOBILE)` (L8036)

> Mobile service recovery processing. Handles e-mobile, WiMAX, WiFi Spot, and MailAddress optional services.

| # | Type | Code |
|---|------|------|
| 1 | IF | `PCRS_CD_WIFISPOT.equals(pcrs_cd)` -> `same_trn_no = "";` |
| 2 | ELSE-IF | `chgSvcKeiJdg(svc_kei_no)` -> `getSame_trn_no()` |

#### Block 2.1 -- IF (Non-MailAddress pricing) `!PCRS_CD_MAILADDRESS.equals(pcrs_cd)` (L8055)

| # | Type | Code |
|---|------|------|
| 1 | SET | `inEKK0161A010Hash.put(SVC_KEI_UCWK_NO, svc_kei_ucwk_no);` |
| 2 | SET | `inEKK0161A010Hash.put(GENE_ADD_DTM, chaf_svc_kei_ucwk_gene_add_dtm);` |
| 3 | EXEC | `callEKK0161A010SC(param, handle, inEKK0161A010Hash, retEKK0161A010Hash, FUNC_CODE_1);` |
| 4 | SET | `ucwkPcrsCd = eKK0161A010Hash.get(PCRS_CD);` |

#### Block 2.2 -- IF (e-mobile) `isEmobile()` (L8107)

> e-mobile recovery processing. Issue Suspend Removal SOD (315) then process optional services.

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `addSOD(handle, param, ODR_NAIYO_CD_315);` // e-mobile Suspend Removal |
| 2 | SET | `inHashMltise.put(SVC_KEI_NO, svc_kei_no);` |
| 3 | EXEC | `callEKK0351B002SC(param, handle, inHashMltise, resultHashMltise, FUNC_CODE_1);` |
| 4 | FOR | Loop through msgEKK0351B002SCList [L8123] |
| 5 | IF | `stat == 100 AND op_svc_cd == EMAIL` -> callEKK0361A010SC + addSOD (120) |
| 6 | ELSE-IF | `stat == 100 AND op_svc_cd == HP` -> callEKK0361A010SC + addSOD (128) |
| 7 | ELSE-IF | `stat == 100 AND op_svc_cd == MLIST` -> addSOD (133) |

#### Block 2.3 -- IF (WiMAX) `PCRS_CD_WIMAX.equals(ucwkPcrsCd)` (L8206)

> WiMAX recovery. Issue WiMAX CUI Recovery (316) + DEV Recovery (317).

| # | Type | Code |
|---|------|------|
| 1 | SET | `this.svc_kei_ucwk_no = new String[1];` |
| 2 | SET | `this.svc_kei_ucwk_no[0] = svc_kei_ucwk_no;` |
| 3 | IF | `PCRS_CD_UQWIMAX_B.equals(pcrs_cd)` -> callEKK0341B002SC for UQ device info |
| 4 | ELSE | Clear kktk fields to empty strings |
| 5 | EXEC | `tsuikabunAddSOD(handle, param, ODR_NAIYO_CD_316);` // WiMAX CUI Recovery |
| 6 | EXEC | `tsuikabunAddSOD(handle, param, ODR_NAIYO_CD_317);` // WiMAX DEV Recovery |

#### Block 2.4 -- IF (WiFi Spot/Free WiFi) (L8281)

> WiFi Spot session management. Count active sessions and issue Change (302) or Registration (301) SOD.

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `wifiSpotCnt = countUpWiFiSpotSessions(param, handle, sys_id, svc_kei_ucwk_no);` |
| 2 | IF | `wifiSpotCnt > 0` -> `tsuikabunAddSOD(handle, param, ODR_NAIYO_CD_302);` // WiFi Spot Change |
| 3 | ELSE | `tsuikabunAddSOD(handle, param, ODR_NAIYO_CD_301);` // WiFi Spot Registration |
| 4 | SET | `this.odr_hakkou_jyoken = ODR_HAKKO_JOKEN_CD_CHIEN_HAKKO;` |

#### Block 2.5 -- IF (MailAddress) `PCRS_CD_MAILADDRESS.equals(pcrs_cd)` (L8326)

> Mail address optional service processing. Similar to network branch optional service loop.

| # | Type | Code |
|---|------|------|
| 1 | SET | `inHashMltise.put(SVC_KEI_NO, svc_kei_no);` |
| 2 | EXEC | `callEKK0351B002SC(param, handle, inHashMltise, resultHashMltise, FUNC_CODE_1);` |
| 3 | FOR | Loop: EMAIL (B001) -> addSOD (120), MLIST (B003) -> addSOD (133) |

#### Block 2.6 -- IF (Same transaction number) `!isBlank(this.same_trn_no)` (L8358)

| # | Type | Code |
|---|------|------|
| 1 | SET | `this.mae_recode_ch_svc_kei_no = new String(svc_kei_no);` |

### Block 3 -- ELSE-IF (Telephone Branch) `(svc_kind == TEL)` (L8366)

> Telephone service recovery processing. Handles OLS setup, SIP registration, phone number operations, ENUM, and emergency notification.

| # | Type | Code |
|---|------|------|
| 1 | SET | `isFirstAproach = false;` |
| 2 | SET | `this.svc_kei_ucwk_no = new String[1];` |
| 3 | SET | `this.svc_kei_ucwk_no[0] = svc_kei_ucwk_no;` |
| 4 | SET | `this.svc_kei_ucwk_gadtm = new String[1];` |
| 5 | SET | `this.svc_kei_ucwk_gadtm[0] = chaf_svc_kei_ucwk_gene_add_dtm;` |

#### Block 3.1 -- (Tel Line List + Contract Agreement) (L8384)

| # | Type | Code |
|---|------|------|
| 1 | SET | `eKK0251B001Hash = getEKK0251B001SC(param, handle, svc_kei_no, FUNC_CODE_1);` |
| 2 | SET | `svcKeiKaisenUcwkNo = eKK0251B001Hash.get(SVC_KEI_KAISEN_UCWK_NO);` |
| 3 | SET | `svcKeiKaisenUcwkGadtm = eKK0251B001Hash.get(GENE_ADD_DTM);` |
| 4 | SET | `eKK0161A010Hash = searchSvcKeiUcwk(handle, param, svc_kei_ucwk_no, chaf_svc_kei_ucwk_gene_add_dtm);` |
| 5 | SET | `svcKeiUcwkMskmDtlNo = eKK0161A010Hash.get(MSKM_DTL_NO);` |

#### Block 3.2 -- FOR (Tel Optional Services Loop) (L8399)

| # | Type | Code |
|---|------|------|
| 1 | SET | `inHashOp.put(SVC_KEI_UCWK_NO, svc_kei_ucwk_no);` |
| 2 | EXEC | `callEKK0351B002SC(param, handle, inHashOp, resultHashOp, FUNC_CODE_1);` |
| 3 | SET | `no050Um = false;` // 050 number plan presence |
| 4 | SET | `telOpUm = false;` // Non-050 tel option presence |
| 5 | SET | `htbTchUm = false;` // Caller ID notification presence |
| 6 | SET | `tensoUm = false;` // Forwarding phone option presence |
| 7 | FOR | Loop through msgList [L8416] |

##### Block 3.2.1 -- IF (N050 Number) `OP_SVC_CD_N050.equals(op_svc_cd)` (L8447)

| # | Type | Code |
|---|------|------|
| 1 | SET | `this.op_svc_kei_no_tikan = eKK0351B002Hash.get(OP_SVC_KEI_NO);` |
| 2 | SET | `this.op_gadtm_tikan = eKK0351B002Hash.get(GENE_ADD_DTM);` |
| 3 | SET | `no050Um = true;` |

##### Block 3.2.2 -- ELSE (Other tel ops) (L8467)

| # | Type | Code |
|---|------|------|
| 1 | SET | `telOpUm = (telOpUm ? telOpUm : legalTelSod(op_svc_cd));` |
| 2 | IF | `OP_SVC_CD_DSP_ME.equals(op_svc_cd)` -> `htbTchUm = true;` (Caller ID) |
| 3 | ELSE-IF | `OP_SVC_CD_TENSO.equals(op_svc_cd)` -> `tensoUm = true;` (Forwarding) |

#### Block 3.3 -- IF (Z1 Order Check) `!isZ1Ordered` (L8510)

> If Z1 order not yet sent, handle forwarding and early return.

| # | Type | Code |
|---|------|------|
| 1 | IF | `tensoUm` -> `edit4OpSetOdrCtrl(ido_div, sys_id, svc_kei_no, svc_kei_ucwk_no, chaf_svc_kei_ucwk_gene_add_dtm, b024OpSvcKeiNo, null, b024GeneAddDtm);` |
| 2 | EXEC | `opSetOdrCtrl(handle, param, fixedText, opSodMap);` |
| 3 | EXEC | `callEKK1081B001SC(param, handle, ORDER_SBT_CD_TEL, SVC_ORDER_CD_EOH_TEL_NEW_KEI_ODR, ODR_HAKKO_JOKEN_CD_TEL_SVC_START_JOKEN, svc_kei_no);` |
| 4 | IF | `kk1081List == null || size < 1` -> `addSODTelNew(handle, param);` |
| 5 | EXEC | `return param;` // Early return |

#### Block 3.4 -- (OLS Processing) (L8534)

> OLS (Optical Line Terminal) setup processing for telephone services.

| # | Type | Code |
|---|------|------|
| 1 | SET | `inHashUcwk.put(SVC_KEI_UCWK_NO, svc_kei_ucwk_no);` |
| 2 | SET | `inHashUcwk.put(GENE_ADD_DTM, chaf_svc_kei_ucwk_gene_add_dtm);` |
| 3 | EXEC | `callEKK0191A010SC(param, handle, inHashUcwk, resultHashUcwk, FUNC_CODE_1);` |
| 4 | SET | `vaTaknkikiModelCd = eKK0191A010Hash.get(VA_TAKNKIKI_MODEL_CD);` |
| 5 | SET | `vaKikiChgNo = eKK0191A010Hash.get(VA_KIKI_CHG_NO);` |
| 6 | SET | `inHashKktk.put(SVC_KEI_NO, svc_kei_no);` |
| 7 | EXEC | `callEKK0341B008SC(param, handle, inHashKktk, resultHashKktk, FUNC_CODE_1);` |
| 8 | EXEC | `callEKK0341B008_02SC(param, handle, inHashKktk, resultHashKktk, FUNC_CODE_4);` // EG switch replacement |
| 9 | IF | `ido_div == "00067" AND vaKikiChgNo == kikiChgNo` -> `msgEKK0341B008SCList = msgEKK0341B002_02SCList;` |
| 10 | FOR | Loop through msgEKK0341B008SCList [L8592] |
| 11 | IF | `!isRegalVaKiki(handle, param, eKK0341B008SCHash, vaTaknkikiModelCd, null, ido_div, vaKikiChgNo, kokanBfKiki)` -> continue |
| 12 | IF | `kokanBfKiki != null` -> use replacement device info |
| 13 | SET | `this.kktk_svc_kei_no[0] = kktkSvcKeiNo;` |
| 14 | SET | `this.kktk_svc_kei_gadtm[0] = kktkGeneAddDtm;` |
| 15 | SET | `this.taknkiki_model_cd[0] = vaTaknkikiModelCd;` |
| 16 | SET | `this.kiki_seizo_no[0] = kktkKikiSeizoNo;` |
| 17 | EXEC | `break;` |

#### Block 3.5 -- IF/ELSE-IF (Takino Router Flag in Tel Branch) (L8635)

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `takino_flg = checkTakinoRT(handle, param);` |
| 2 | IF | `chgSvcKeiJdg(svc_kei_no)` -> `getSame_trn_no()`, set `svc_kei_kaisen_ucwk_no`, `addSOD(206)`, `isFirstAproach = true;` |

#### Block 3.6 -- IF (Device Info Check) `(kktk fields != null && not blank)` (L8664)

| # | Type | Code |
|---|------|------|
| 1 | SET | `telnoJun = eKK0191A010Hash.get(TELNO_JUN);` |
| 2 | IF | `telnoJun == "2"` (Second number) |
| 3 | ELSE-IF | `takino_flg == 0` -> `addSOD(208)` (OLS Setup Phone Add) |
| 4 | ELSE-IF | `takino_flg != 9` -> `addTakinoSOD(408)` (Router setup/change for 2nd number) |
| 5 | IF | `telnoJun != "2"` (First number) |
| 6 | ELSE-IF | `takino_flg == 0` -> `addSOD(207)` (OLS Setup Registration) |
| 7 | ELSE-IF | `takino_flg == 2` -> `addTakinoSOD(406)` (Router setup/registration - VA) |
| 8 | ELSE-IF | `takino_flg == 4 || takino_flg == 1` -> `addTakinoSOD(407)` (Router setup/change) |

#### Block 3.7 -- (SIP Registration) (L8745)

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `addSOD(handle, param, ODR_NAIYO_CD_218);` // SIP Registration |

#### Block 3.8 -- IF (BMP/Phone Number Processing) (L8751)

> Phone number (bangou pos) processing for SIP.

| # | Type | Code |
|---|------|------|
| 1 | IF | `BMP_UM == ARI` (Phone number present) |
| 2 | IF | `isBmpOpenZumi(param, handle, svc_kei_no, svc_kei_ucwk_no, chaf_svc_kei_ucwk_gene_add_dtm)` |
| 3 | IF | `isTajgsTelNo(handle, param, telno)` -> `addSOD(225)` (SIP Phone Number Registration) |
| 4 | ELSE | `addSOD(223)` (SIP Temporary Suspend) |
| 5 | ELSE (BMP_UM != ARI) | `isTajgsTelNo() && isMonaiBmp()` -> `addSOD(225)` + `addSOD(265)` (ENUM Setup) |

#### Block 3.9 -- IF (Non-050 Tel Options) `telOpUm` (L8809)

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `addSOD(handle, param, ODR_NAIYO_CD_219);` // SIP Option Bulk Registration (non-050) |

#### Block 3.10 -- (Toki SOD) (L8867)

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `addTokiSOD(handle, param, ido_div, null);` // Toki SOD registration |

#### Block 3.11 -- IF (050 Number) `no050Um` (L8876)

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `add050AddSod(param, handle, svc_kei_no, svc_kei_ucwk_no, chaf_svc_kei_ucwk_gene_add_dtm, op_svc_kei_no_tikan, op_gadtm_tikan);` // Number change |

#### Block 3.12 -- (Emergency Notification) (L8884)

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `addSOD(handle, param, ODR_NAIYO_CD_250);` // Emergency notification registration |

#### Block 3.13 -- IF (Pause/Termination State) `svc_kei_stat == 210` (L8890)

> Same pause/termination handling as network branch - build opSodMap and call pauseUkOdrCtrl.

| # | Type | Code |
|---|------|------|
| 1 | SET | `opSodKihonInfoMap`, `opSvcKeiInfoMap`, `opSvcKeiUcwkInfoMap` with basic info |
| 2 | SET | `opSodMap` with SOD_KIHON_INFO, SVC_KEI_INFO, SVC_KEI_UCWK_INFO |
| 3 | EXEC | `pauseUkOdrCtrl(handle, param, opSodMap);` // Pause receipt SOD |

#### Block 3.14 -- IF (Previous Record Change) `isFirstAproach` (L8898)

| # | Type | Code |
|---|------|------|
| 1 | SET | `this.mae_recode_ch_svc_kei_no = new String(svc_kei_no);` |

## 7. Glossary

| Term | Type | Business Meaning |
|------|------|------------------|
| `svc_kei_no` | Field | Service contract number - internal ID for a telecom service contract line item |
| `svc_kei_ucwk_no` | Field | Service contract detail number - internal tracking ID for service contract processing details |
| `chaf_svc_kei_ucwk_gene_add_dtm` | Field | Post-change service contract detail generation registration datetime - timestamp when the contract detail was last created/modified |
| `ido_div` | Field | Move separation - operation type classification (e.g., "001" = Registration, "002" = Change, "006" = EG Switch, "007" = Termination, "008" = Cancellation, "009" = Forced Termination) |
| `svc_kind` | Field | Service type code - classifies the service as NET (1), TEL (2), MOB (4), ADSL (5), or ELSE (99) |
| `pcrs_cd` | Field | Price course code - the subscriber's current pricing plan (e.g., "A03" = 100M Course, "A05" = 1G Course, "PA3001" = WiFi Spot plan, "A12" = eo ACCESS 12M Type 1) |
| `op_svc_cd` | Field | Optional service code - classifies optional add-on services (B001=Email, B002=Homepage, B003=Mailing list, B020=Dial-up, B070=IPv6, B075=Flett Cell, B001=Fixed IP, MLTISE=Multi-session) |
| `op_svc_kei_stat` | Field | Optional service contract status (100=Service in Progress, 020=Application Complete, 030=Contracting, 210=Suspend/Terminate, 910=Cancelled, 920=Terminated) |
| SOD | Acronym | Service Order Data - the order document entity for telecom service operations |
| FTTH | Business term | Fiber To The Home - fiber-optic internet service offered by K-Opticom |
| BBR | Business term | BBR router - home network router device provided by the operator |
| VA | Acronym | Voice Application - VoIP telephone device (virtual appliance) |
| OLS | Acronym | Optical Line Terminal - the DSLAM-side equipment for optical network termination |
| ENUM | Business term | E.164 Number Mapping - DNS-based telephone number mapping service for SIP VoIP |
| WiFi Spot | Business term | Public WiFi hotspot service offered by K-Opticom |
| WiMAX | Business term | Wireless broadband service (IEEE 802.16e) offered via UQ Communications |
| e-mobile | Business term | Mobile carrier service operated by K-Opticom |
| 番号ポス (bangou pos) | Business term | Phone number portability - MNP (Mobile Number Portability) for telephone numbers |
| 番号置換 (bangou kae) | Field | Number change - phone number change operation for 050 numbers (VoIP) |
| トーキ (Toki) | Business term | Cancellation SOD - temporary order for service cancellation/termination events |
| 回復 (kaiaku) | Japanese term | Recovery - reactivating a suspended or terminated service |
| 回復オーダ制御 (kaiaku odra seiyo) | Japanese term | Recovery order control - the process of generating SODs for service recovery |
| 異動区分 (ido kubbun) | Field | Move separation/transaction type - classifies the type of contract operation |
| 休止/中止中 (shiusi/chuushi) | Field | Suspend/Terminate status (svc_kei_stat == "210") - contract is in suspended or terminated state |
| 解約 (gekai) | Japanese term | Cancellation/Termination - the act of cancelling a service contract |
| 強制解約 (kyousei gekai) | Japanese term | Forced termination - carrier-initiated service cancellation |
| カンセル (kanseru) | Japanese term | Cancel - cancellation operation type |
| 同一処理番号 (doui shori bangou) | Field | Same transaction number - shared transaction ID for correlating orders across services |
| マルチセッション (maruti sesshon) | Field | Multi-session - multiple concurrent IP sessions over a single contract |
| 固定IPアドレス (kotei IP address) | Field | Fixed IP address - static IP address optional service |
| 固定IPアドレス8 (kotei IP address 8) | Field | Fixed IP Address 8 - ANK-3900 feature for fixed IP address 8 settings |
| マンションプライベート (mansion private) | Field | Mansion private type - multi-dwelling unit private network configuration |
| 宅内機器 (takunai kiki) | Field | Home device - indoor equipment like routers and VoIP phones |
| 機器製造番号 (kiki seizo no) | Field | Device manufacturing serial number |
| ホームページ (home page) | Field | Homepage - web hosting optional service |
| メールリスト (meru risuto) | Field | Mailing list - email distribution list optional service |
| フレッツセル (Flett Cell) | Field | Flett Cell - bundled service combining Flet's Light (ADSL) with cellular |
| 発信者番号通知 (hasshin sha bangou tsuuchi) | Field | Caller ID notification - ANK-0035 optional service |
| 転送電話 (tenso denwa) | Field | Forwarding phone - call forwarding optional service |
| 電話オプション (denwa opushon) | Field | Phone option - telephone service add-on options (non-050) |
| 緊急通報 (kinkyuu tsuhou) | Field | Emergency notification - emergency alert service registration |
| 休止受理 (shiusi juuri) | Field | Pause receipt - SOD issued when a contract enters suspended state |
| 中止受理 (chuushi juuri) | Field | Termination receipt - SOD issued when a contract enters terminated state |
| Radius認証 (Radius ninkatsu) | Field | Radius authentication - network access authentication for telephone services |
| 工事完了 (kouji kanryo) | Field | Construction complete - phone number switching work completion status |
| 他社電話番号 (tasha denwa bangou) | Field | Other company phone number - phone number belonging to a different carrier |
| Z1オーダー | Field | Z1 order - primary order for new telephone service registration |
| 多重処理番号 (tajuu shori bangou) | Field | Multi-process number - same transaction number for correlating multi-service orders |
| 同一処理番号採番 (doui shori bangou sainban) | Field | Same transaction number assignment - assigning a shared transaction ID |
| 異動区分00067 | Field | Move separation code 00067 = EG switch (email gateway switch) mid-processing |
