## 6. Per-Branch Detail Blocks (continued)

### Phase 3: State Comparison

**Block 3** -- [SET] State Variables (L11820)

| # | Type | Code |
|---|------|------|
| 1 | SET | selectOdrNaiyoCd = "" (selected order content code) |
| 2 | SET | opsvkeiStatBefore = before-option service contract status from chbfEKK0351A010SCHash |
| 3 | SET | opsvkeiStatAfter = after-option service contract status from chafEKK0351A010SCHash |
| 4 | SET | isNewOpsvkei = isBlank(chbf_opsvkei_no) && !isBlank(chaf_opsvkei_no) -- new option contract |
| 5 | SET | isNewOpsvkei &= !SVC_KEI_STAT_920.equals(opsvkeiStatAfter) -- exclude cancelled |
| 6 | SET | isDslOpsvkei = status is 910 (disconnected) or 920 (cancelled) |
| 7 | SET | isShosaCl = IDO_DIV_CANCEL && status is 010 (inspection cancelled) |
| 8 | SET | isKaihkOpsvkei = status transition 910/920 -> 100/020/030 (recovered) |
| 9 | SET | isChgOpsvkei = status is same 100/020/030 before and after (modified) |

### Phase 4: Email Service Dispatch

**Block 4** -- [IF] `OP_SVC_CD_EMAIL.equals(opSvcCd)` (L11834)

Email service SOD processing. Creates email add/cancel/delete/change/recover orders.

**Block 4.1** -- [SET] Key Info for Email (L11837)

| # | Type | Code |
|---|------|------|
| 1 | SET | this.op_svc_kei_no_ml = chaf_opsvkei_no |
| 2 | SET | this.op_gadtm_ml = chaf_opsvkei_gene_add_dtm |
| 3 | SET | this.mlad = MLAD from chafEKK0361A010SCHash |

**Block 4.1.1** -- [IF] `isNewOpsvkei` (Email + New Option)

| # | Type | Code |
|---|------|------|
| 1 | IF | chgOpsvKeiJdg(...) && 0 < sameTrnJdg(...) -- real change and has shared transaction number |
| 2 | SET | sameTrnNo = new String[1] |
| 3 | CALL | getSame_trn_no(param, handle, null, sameTrnNo) -- retrieve shared transaction number |
| 4 | SET | this.same_trn_no = sameTrnNo[0] |
| 5 | IF | chgOpsvKeiJdg(...) -- before and after numbers/dates differ |
| 6 | SET | set priority HIGH in work map [OM-2015-0001453] |
| 7 | CALL | addSOD(handle, param, ODR_NAIYO_CD_108) -- Email registration |
| 8 | SET | restore priority in work map |

**Block 4.1.2** -- [ELSE-IF] `isDslOpsvkei` (Email + Option Disconnected)

| # | Type | Code |
|---|------|------|
| 1 | IF | ido_div is NOT DSL/TEKKYO/kyosei/forced cancel -- not these modalities |
| 2 | SET | this.same_trn_no = "" -- clear shared transaction number |
| 3 | CALL | addSOD(handle, param, ODR_NAIYO_CD_116) -- Email cancellation |
| 4 | IF | isShosaCl (inspection cancellation) |
| 5 | CALL | addSOD(handle, param, ODR_NAIYO_CD_118) -- Email deletion |

**Block 4.1.3** -- [ELSE-IF] `isKaihkOpsvkei` (Email + Option Recovered)

| # | Type | Code |
|---|------|------|
| 1 | SET | this.same_trn_no = "" -- clear shared transaction number |
| 2 | CALL | addSOD(handle, param, ODR_NAIYO_CD_120) -- Email recovery registration |

**Block 4.1.4** -- [ELSE-IF] `isChgOpsvkei` (Email + Option Modified)

| # | Type | Code |
|---|------|------|
| 1 | IF | chgOpsvKeiJdg(...) && 0 < sameTrnJdg(...) -- real change and has shared transaction |
| 2 | SET | sameTrnNo = new String[1] |
| 3 | CALL | getSame_trn_no(param, handle, null, sameTrnNo) -- retrieve shared transaction number |
| 4 | IF | chgOpsvKeiJdg(...) -- before and after differ |
| 5 | SET | chbfMlad = before-option mail address |
| 6 | SET | chafMlad = after-option mail address |
| 7 | IF | chbfMlad != chafMlad && both not blank -- mail address changed |
| 8 | IF | isBlank(this.same_trn_no) -- shared transaction not yet obtained |
| 9 | CALL | getSame_trn_no(param, handle, null, sameTrnNo) |
| 10 | SET | store before/after key info fields |
| 11 | SET | set priority LOW in work map [ANK-3227-00-00] |
| 12 | CALL | addSOD(handle, param, ODR_NAIYO_CD_117) -- Email address cancellation with schedule |
| 13 | CALL | addSOD(handle, param, ODR_NAIYO_CD_119) -- Email address deletion with schedule |
| 14 | SET | store after key info |
| 15 | SET | set priority HIGH in work map |
| 16 | CALL | addSOD(handle, param, ODR_NAIYO_CD_108) -- Email address registration |
| 17 | SET | restore priority in work map |

**Block 4.2** -- [SET] Sub-option Service Code Extraction (L11915)

| # | Type | Code |
|---|------|------|
| 1 | SET | chafsbopSvcCd = chafEKK0401A010SCHash.get(SBOP_SVC_CD) |
| 2 | SET | chafSbopSvcKeiStat = chafEKK0401A010SCHash.get(SBOP_SVC_KEI_STAT) |
| 3 | SET | chbfSbopSvckeiStat = chbfEKK0401A010SCHash.get(SBOP_SVC_KEI_STAT) |
| 4 | SET | isNewSbopkei = isBlank(chbf_sbopsvkei_no) && !isBlank(chaf_sbopsvkei_no) |
| 5 | SET | isNewSbopkei &= !SVC_KEI_STAT_920.equals(chafSbopSvcKeiStat) |
| 6 | SET | isDslSbopkei = status transitions to 910/920 (disconnected/cancelled) |
| 7 | SET | isSbopkeiStatNotChg = before and after status are the same |

**Block 4.2.1** -- [IF] Virus check new? `isNewSbopkei && SBOP_SVC_CD_VIRUS.equals(chafsbopSvcCd)`

| # | Type | Code |
|---|------|------|
| 1 | SET | priority HIGH in work map |
| 2 | CALL | addSOD(handle, param, ODR_NAIYO_CD_114) -- Email + VirusCheck registration |
| 3 | SET | restore priority |

**Block 4.2.2** -- [ELSE-IF] Virus check disconnected? `SBOP_SVC_CD_VIRUS.equals(chafsbopSvcCd) && isDslSbopkei`

| # | Type | Code |
|---|------|------|
| 1 | SET | priority HIGH in work map |
| 2 | SET | this.sbop_svckeino_mlvirus = chbf_sbopsvkei_no |
| 3 | SET | this.sbop_gadtm_mlvirus = chbf_sbopsvkei_gene_add_dtm |
| 4 | CALL | addSOD(handle, param, ODR_NAIYO_CD_115) -- Email + VirusCheck cancellation |
| 5 | SET | restore priority |

**Block 4.2.3** -- [ELSE-IF] Mailbox capacity new/disconnected? `SBOP_SVC_CD_MLCAPA.equals(chafsbopSvcCd)`

| # | Type | Code |
|---|------|------|
| 1 | SET | priority HIGH in work map |
| 2 | CALL | addSOD(handle, param, ODR_NAIYO_CD_113) -- Email + Mailbox capacity change |
| 3 | SET | restore priority |

**Block 4.2.4** -- [ELSE-IF] Mailbox capacity unchanged but differs? `isSbopkeiStatNotChg && MLCAPA`

| # | Type | Code |
|---|------|------|
| 1 | SET | chbfCapa = before sub-option capacity |
| 2 | SET | chafCapa = after sub-option capacity |
| 3 | IF | chbfCapa != chafCapa -- capacity differs |
| 4 | SET | priority HIGH in work map |
| 5 | CALL | addSOD(handle, param, ODR_NAIYO_CD_113) -- Email + Mailbox capacity change |
| 6 | SET | restore priority |

**Block 4.2.5** -- [ELSE-IF] Alias new? `isNewSbopkei && SBOP_SVC_CD_ALIAS.equals(chafsbopSvcCd)`

| # | Type | Code |
|---|------|------|
| 1 | SET | priority HIGH in work map |
| 2 | SET | this.sbop_svckeino_alias = chaf_sbopsvkei_no |
| 3 | CALL | addSOD(handle, param, ODR_NAIYO_CD_110) -- Email + Alias registration |
| 4 | SET | restore priority |

**Block 4.2.6** -- [ELSE-IF] Alias disconnected? `isDslSbopkei && SBOP_SVC_CD_ALIAS`

| # | Type | Code |
|---|------|------|
| 1 | SET | priority HIGH in work map |
| 2 | SET | this.sbop_svckeino_alias = chbf_sbopsvkei_no |
| 3 | CALL | addSOD(handle, param, ODR_NAIYO_CD_112) -- Email + Alias cancellation |
| 4 | SET | restore priority |

**Block 4.2.7** -- [ELSE-IF] Alias unchanged but differs? `isSbopkeiStatNotChg && SBOP_SVC_CD_ALIAS`

| # | Type | Code |
|---|------|------|
| 1 | SET | chbfAlias = before mail alias |
| 2 | SET | chafAlias = after mail alias |
| 3 | IF | chbfAlias != chafAlias -- alias differs |
| 4 | SET | priority HIGH in work map |
| 5 | CALL | addSOD(handle, param, ODR_NAIYO_CD_111) -- Email + Alias change |
| 6 | SET | restore priority |

---

### Phase 5: Home Page Service Dispatch

**Block 5** -- [IF] `OP_SVC_CD_HP.equals(opSvcCd)` (L12084)

Home Page SOD processing. Creates home page registration/cancellation/deletion/change orders.

**Block 5.1** -- [SET] Key Info (L12087)

| # | Type | Code |
|---|------|------|
| 1 | SET | this.op_svc_kei_no_hp = chaf_opsvkei_no |
| 2 | SET | this.op_gadtm_hp = chaf_opsvkei_gene_add_dtm |

**Block 5.1.1** -- [IF] `isNewOpsvkei` (HP + New Option)

| # | Type | Code |
|---|------|------|
| 1 | SET | chafUrlDomain = URL domain from chafEKK0361A010SCHash |
| 2 | SET | chafUrlAccount = URL account from chafEKK0361A010SCHash |
| 3 | IF | chafUrlDomain and chafUrlAccount both NOT blank -- URL configured |
| 4 | IF | chgOpsvKeiJdg(...) && 0 < sameTrnJdg(...) -- has shared transaction |
| 5 | CALL | getSame_trn_no(param, handle, null, sameTrnNo) |
| 6 | IF | chgOpsvKeiJdg(...) -- before/after differ |
| 7 | CALL | addSOD(handle, param, ODR_NAIYO_CD_121) -- WEB registration |

**Block 5.1.2** -- [ELSE-IF] `isDslOpsvkei` (HP + Disconnected)

| # | Type | Code |
|---|------|------|
| 1 | IF | URL configured |
| 2 | IF | IDO_DIV_OPSETTE.equals(ido_div) -- option settings modality |
| 3 | SET | this.same_trn_no = "" |
| 4 | CALL | addSOD(handle, param, ODR_NAIYO_CD_126) -- WEB cancellation |
| 5 | IF | isShosaCl (inspection cancellation) |
| 6 | CALL | addSOD(handle, param, ODR_NAIYO_CD_127) -- WEB deletion |

**Block 5.1.3** -- [ELSE-IF] `isKaihkOpsvkei` (HP + Recovered)

| # | Type | Code |
|---|------|------|
| 1 | IF | URL configured |
| 2 | CALL | addSOD(handle, param, ODR_NAIYO_CD_128) -- WEB recovery registration |

**Block 5.1.4** -- [ELSE-IF] `isChgOpsvkei` (HP + Modified)

| # | Type | Code |
|---|------|------|
| 1 | IF | chgOpsvKeiJdg(...) && 0 < sameTrnJdg(...) -- has shared transaction |
| 2 | CALL | getSame_trn_no(param, handle, null, sameTrnNo) |
| 3 | IF | chgOpsvKeiJdg(...) -- before/after differ |
| 4 | SET | chbfUrl = before URL account, chafUrl = after URL account |
| 5 | IF | chafUrl != chbfUrl && chafUrl not blank -- URL account changed |
| 6 | IF | isBlank(this.same_trn_no) -- shared transaction not yet obtained |
| 7 | IF | !isBlank(chbfUrl) -- before URL exists |
| 8 | CALL | addSOD(handle, param, ODR_NAIYO_CD_126) -- WEB cancellation |
| 9 | CALL | addSOD(handle, param, ODR_NAIYO_CD_127) -- WEB deletion |
| 10 | CALL | addSOD(handle, param, ODR_NAIYO_CD_121) -- WEB registration |

**Block 5.2** -- [IF] Home page capacity change? (L12202, OM-2014-0000880)

> Checks if the ISP capacity field differs. Only applicable when option status is 100/030/020.

| # | Type | Code |
|---|------|------|
| 1 | IF | chbfEKK0361A010SCHash and chafEKK0361A010SCHash both exist |
| 2 | SET | chbfCapa = before ISP capacity, chafCapa = after ISP capacity |
| 3 | SET | isHakkoSod = status is 100/030/020 |
| 4 | IF | isHakkoSod && both capacity values NOT blank && differ |
| 5 | CALL | addSOD(handle, param, ODR_NAIYO_CD_123) -- WEB + Home page capacity change |

---

### Phase 6: M-List Service Dispatch

**Block 6** -- [IF] `OP_SVC_CD_MLIST.equals(opSvcCd)` (L12401)

M-List (Mobile List service) SOD processing. Creates M-List registration/cancellation/deletion/recovery orders.

**Block 6.1** -- [IF] `isNewOpsvkei` (M-List + New Option)

| # | Type | Code |
|---|------|------|
| 1 | SET | this.same_trn_no = "" -- clear shared transaction number |
| 2 | CALL | addSOD(handle, param, ODR_NAIYO_CD_129) -- M-List registration |

**Block 6.2** -- [ELSE-IF] `isDslOpsvkei` (M-List + Disconnected)

| # | Type | Code |
|---|------|------|
| 1 | IF | ido_div NOT in DSL/TEKKYO/kyosei/forced cancel -- not cancellation modalities |
| 2 | SET | this.same_trn_no = "" -- clear |
| 3 | CALL | addSOD(handle, param, ODR_NAIYO_CD_131) -- M-List cancellation |
| 4 | IF | isShosaCl (inspection cancellation) |
| 5 | CALL | addSOD(handle, param, ODR_NAIYO_CD_132) -- M-List deletion |

**Block 6.3** -- [ELSE-IF] `isKaihkOpsvkei` (M-List + Recovered)

| # | Type | Code |
|---|------|------|
| 1 | SET | this.same_trn_no = "" |
| 2 | CALL | addSOD(handle, param, ODR_NAIYO_CD_133) -- M-List recovery |

---

### Phase 7: Fixed IP Address Service Dispatch

**Block 7** -- [IF] `OP_SVC_CD_FIXIPAD.equals(opSvcCd)` (L12499)

Fixed IP Address SOD processing. Creates fixed IP registration/cancellation/recovery orders. Also handles FTTH authentication.

**Block 7.1** -- [SET] Service Contract Detail Fetch (L12526)

| # | Type | Code |
|---|------|------|
| 1 | CALL | eKK0161A010Hash = searchSvcKeiUcwk(handle, param, chafEKK0351A010SCHash.get(SVC_KEI_UCWK_NO), null) |
| 2 | SET | this.svc_kei_ucwk_no = new String[1] |
| 3 | SET | this.svc_kei_ucwk_no[0] = eKK0161A010Hash.get(SVC_KEI_UCWK_NO) |
| 4 | SET | this.svc_kei_ucwk_gadtm = new String[1] |
| 5 | SET | this.svc_kei_ucwk_gadtm[0] = eKK0161A010Hash.get(GENE_ADD_DTM) |
| 6 | SET | this.op_svc_kei_no_fixipad = chaf_opsvkei_no |
| 7 | SET | this.op_gadtm_fixipad = chaf_opsvkei_gene_add_dtm |
| 8 | CALL | this.old_vrsb_jdg_svc_dtl_cd = getOldVrsbIdgSvcDtlCd(handle, param, svc_kei_no, svc_kei_ucwk_no[0], this.pplan_cd) |
| 9 | SET | svc_kei_ucwk_stat = eKK0161A010Hash.get(SVC_KEI_UCWK_STAT) |

**Block 7.2** -- [IF] `isBlank(chbf_opsvkei_no)` (New Fixed IP)

| # | Type | Code |
|---|------|------|
| 1 | CALL | addSOD(handle, param, ODR_NAIYO_CD_152) -- Fixed IP registration |

**Block 7.3** -- [ELSE-IF] `isDslOpsvkei` (Fixed IP Disconnected)

> SVC_KEI_STAT_910 or 920 after option

| # | Type | Code |
|---|------|------|
| 1 | IF | svc_kei_ucwk_stat is 910 or 920 -- contract status also disconnected |
| 2 | SET | (no SOD emitted -- authentication already cancelled) |
| 3 | ELSE | svc_kei_ucwk_stat is other value |
| 4 | SET | pause_jdg_cd = new String[1] |
| 5 | CALL | pauseJdg(param, handle, null, svc_kei_no, pause_jdg_cd) |
| 6 | SET | sameTrnNo = new String[1] |
| 7 | CALL | getSame_trn_no(param, handle, null, sameTrnNo) |
| 8 | SET | this.same_trn_no = sameTrnNo[0] |
| 9 | IF | PAUSE_JDG_CD_1.equals(pause_jdg_cd[0]) -- service suspended |
| 10 | CALL | addSOD(handle, param, ODR_NAIYO_CD_107) -- FTTH authentication suspension cancellation |
| 11 | CALL | addSOD(handle, param, ODR_NAIYO_CD_154) -- Fixed IP cancellation (-> FTTH cancellation) |
| 12 | CALL | addSOD(handle, param, ODR_NAIYO_CD_104) -- FTTH authentication deletion |
| 13 | CALL | addSOD(handle, param, ODR_NAIYO_CD_101) -- FTTH registration |
| 14 | CALL | addSOD(handle, param, ODR_NAIYO_CD_106) -- FTTH authentication temporary suspension |
| 15 | ELSE | PAUSE_JDG_CD_0.equals(pause_jdg_cd[0]) -- not suspended |
| 16 | CALL | addSOD(handle, param, ODR_NAIYO_CD_154) -- Fixed IP cancellation |
| 17 | CALL | addSOD(handle, param, ODR_NAIYO_CD_104) -- FTTH authentication deletion |
| 18 | CALL | addSOD(handle, param, ODR_NAIYO_CD_101) -- FTTH registration |

**Block 7.4** -- [ELSE-IF] `isKaihkOpsvkei` (Fixed IP Recovered) (L12649)

| # | Type | Code |
|---|------|------|
| 1 | SET | this.op_svc_kei_no_fixipad = chaf_opsvkei_no |
| 2 | CALL | addSOD(handle, param, ODR_NAIYO_CD_153) -- Fixed IP recovery registration |

---

### Phase 8: Multi-Session Internet (MLTISE) Dispatch

**Block 8** -- [IF] `OP_SVC_CD_MLTISE.equals(opSvcCd)` (L12680)

Multi-Session Internet SOD processing. Checks existing Fixed IP assignments and creates static/dynamic multi-session SOD orders.

**Block 8.1** -- [SET] Key Info (L12685)

| # | Type | Code |
|---|------|------|
| 1 | SET | this.op_svc_kei_no_mltise = chaf_opsvkei_no |
| 2 | SET | this.op_gadtm_mltise = chaf_opsvkei_gene_add_dtm |
| 3 | SET | inHashMltise = new HashMap with SVC_KEI_UCWK_NO, GENE_ADD_DTM, OP_SVC_CD_FIXIPAD |
| 4 | CALL | statusCode = callEKK0351B002SC(param, handle, inHashMltise, resultHashMltise, FUNC_CODE_1) |
| 5 | SET | msgList = resultHashMltise.get(TEMPLATE_ID_EKK0351B002) |
| 6 | SET | fixipadAri = false |
| 7 | FOR | Loop through msgList[i] -- check each option contract status |
| 8 | IF | isAddSodTrgtStat(op_svc_kei_stat) -- status qualifies as SOD target |
| 9 | SET | fixipadAri = true |

**Block 8.2** -- [IF] `fixipadAri` (Fixed IP exists)

> If existing Fixed IP is found, handle static multi-session SOD orders.

**Block 8.2.1** -- [IF] `isNewOpsvkei` (MLTISE + New Option)

| # | Type | Code |
|---|------|------|
| 1 | CALL | getOldVrsbIdgSvcDtlCd(handle, param, svc_kei_no, svc_kei_ucwk_no, pplan_cd) |
| 2 | CALL | addSOD(handle, param, ODR_NAIYO_CD_144) -- Multi-session (static) registration |

**Block 8.2.2** -- [ELSE-IF] `isDslOpsvkei` (MLTISE + Disconnected)

| # | Type | Code |
|---|------|------|
| 1 | SET | pause_jdg_cd = new String[1] |
| 2 | CALL | pauseJdg(param, handle, null, svc_kei_no, pause_jdg_cd) |
| 3 | IF | PAUSE_JDG_CD_1.equals(pause_jdg_cd[0]) -- suspended |
| 4 | CALL | callEKK0161B004SC -- fetch service contract detail |
| 5 | SET | svc_kei_ucwk_no[0] = retHash.get(SVC_KEI_UCWK_NO) |
| 6 | CALL | getOldVrsbIdgSvcDtlCd(...) |
| 7 | CALL | getSame_trn_no(param, handle, null, sameTrnNo) |
| 8 | CALL | addSOD(handle, param, ODR_NAIYO_CD_107) -- FTTH authentication suspension cancellation |
| 9 | CALL | addSOD(handle, param, ODR_NAIYO_CD_145) -- Multi-session (static) cancellation |
| 10 | CALL | addSOD(handle, param, ODR_NAIYO_CD_106) -- FTTH authentication temporary suspension |
| 11 | ELSE | PAUSE_JDG_CD_0 -- not suspended |
| 12 | CALL | addSOD(handle, param, ODR_NAIYO_CD_145) -- Multi-session (static) cancellation |

**Block 8.2.3** -- [ELSE-IF] `isKaihkOpsvkei` (MLTISE + Recovered)

| # | Type | Code |
|---|------|------|
| 1 | CALL | getOldVrsbIdgSvcDtlCd(...) |
| 2 | CALL | addSOD(handle, param, ODR_NAIYO_CD_161) -- Multi-session (static) recovery |

**Block 8.2.4** -- [ELSE-IF] `isChgOpsvkei` (MLTISE + Modified)

| # | Type | Code |
|---|------|------|
| 1 | CALL | getOldVrsbIdgSvcDtlCd(...) |
| 2 | CALL | addSOD(handle, param, ODR_NAIYO_CD_162) -- Multi-session (static) session count change |

**Block 8.3** -- [ELSE] No Fixed IP (L12833)

> No existing Fixed IP -- handle dynamic multi-session SOD orders.

**Block 8.3.1** -- [SET] Service Contract Detail (L12833)

| # | Type | Code |
|---|------|------|
| 1 | SET | inHashUcwk = new HashMap with SVC_KEI_NO |
| 2 | CALL | callEKK0161B004SC -- fetch service contract detail |
| 3 | SET | retHash = takeCurrentSvcKeiUcwk(resultHashUcwk, svc_kei_ucwk_no) |
| 4 | SET | svc_kei_ucwk_no[0] = retHash.get(SVC_KEI_UCWK_NO) |
| 5 | CALL | getOldVrsbIdgSvcDtlCd(...) |

**Block 8.3.2** -- [IF] `isNewOpsvkei` (Dynamic MLTISE + New)

| # | Type | Code |
|---|------|------|
| 1 | CALL | addSOD(handle, param, ODR_NAIYO_CD_142) -- Multi-session (dynamic) registration |

**Block 8.3.3** -- [ELSE-IF] `isDslOpsvkei` (Dynamic MLTISE + Disconnected)

| # | Type | Code |
|---|------|------|
| 1 | SET | pause_jdg_cd = new String[1] |
| 2 | CALL | pauseJdg(param, handle, null, svc_kei_no, pause_jdg_cd) |
| 3 | IF | PAUSE_JDG_CD_1 -- suspended |
| 4 | CALL | getSame_trn_no(param, handle, null, sameTrnNo) |
| 5 | CALL | addSOD(handle, param, ODR_NAIYO_CD_107) -- FTTH auth suspension cancellation |
| 6 | CALL | addSOD(handle, param, ODR_NAIYO_CD_143) -- Multi-session (dynamic) cancellation |
| 7 | CALL | addSOD(handle, param, ODR_NAIYO_CD_106) -- FTTH auth temporary suspension |
| 8 | ELSE | PAUSE_JDG_CD_0 -- not suspended |
| 9 | CALL | addSOD(handle, param, ODR_NAIYO_CD_143) -- Multi-session (dynamic) cancellation |

**Block 8.3.4** -- [ELSE-IF] `isKaihkOpsvkei` (Dynamic MLTISE + Recovered)

| # | Type | Code |
|---|------|------|
| 1 | CALL | addSOD(handle, param, ODR_NAIYO_CD_142) -- Multi-session (dynamic) registration |

**Block 8.3.5** -- [ELSE-IF] `isChgOpsvkei` (Dynamic MLTISE + Modified)

| # | Type | Code |
|---|------|------|
| 1 | SET | sameTrnNo = new String[1] |
| 2 | CALL | getSame_trn_no(param, handle, null, sameTrnNo) |
| 3 | SET | this.same_trn_no = sameTrnNo[0] |
| 4 | SET | store before key info |
| 5 | CALL | addSOD(handle, param, ODR_NAIYO_CD_143) -- Multi-session (dynamic) cancellation |
| 6 | SET | store after key info |
| 7 | CALL | addSOD(handle, param, ODR_NAIYO_CD_142) -- Multi-session (dynamic) registration |

---

### Phase 9: Dial-up (DUP) Service Dispatch

**Block 9** -- [IF] `OP_SVC_CD_DUP.equals(opSvcCd)` (L12923)

Dial-up connection SOD processing. Creates dial-up registration/cancellation/change orders.

**Block 9.1** -- [SET] Service Contract Detail (L12931)

| # | Type | Code |
|---|------|------|
| 1 | SET | inHashUcwk = new HashMap with SVC_KEI_NO |
| 2 | CALL | callEKK0161B004SC -- fetch service contract detail |
| 3 | SET | retHash = takeCurrentSvcKeiUcwk(resultHashUcwk) |
| 4 | SET | svc_kei_ucwk_no[0] = retHash.get(SVC_KEI_UCWK_NO) |
| 5 | SET | op_svc_kei_no_dial = chaf_opsvkei_no |

**Block 9.2** -- [IF] `isNewOpsvkei` (Dial-up + New)

| # | Type | Code |
|---|------|------|
| 1 | CALL | addSOD(handle, param, ODR_NAIYO_CD_134) -- Dial-up connection registration |

**Block 9.3** -- [ELSE-IF] `isDslOpsvkei` (Dial-up + Disconnected)

| # | Type | Code |
|---|------|------|
| 1 | IF | ido_div NOT in DSL/TEKKYO/kyosei/cancel -- not these modalities |
| 2 | CALL | getSame_trn_no(param, handle, null, sameTrnNo) |
| 3 | SET | this.same_trn_no = sameTrnNo[0] |
| 4 | CALL | addSOD(handle, param, ODR_NAIYO_CD_137) -- Dial-up connection cancellation |
| 5 | CALL | addSOD(handle, param, ODR_NAIYO_CD_138) -- Dial-up connection deletion |

**Block 9.4** -- [ELSE-IF] `isKaihkOpsvkei` (Dial-up + Recovered)

| # | Type | Code |
|---|------|------|
| 1 | CALL | addSOD(handle, param, ODR_NAIYO_CD_134) -- Dial-up connection registration (recovery) |

**Block 9.5** -- [ELSE-IF] `isChgOpsvkei` (Dial-up + Modified)

| # | Type | Code |
|---|------|------|
| 1 | CALL | addSOD(handle, param, ODR_NAIYO_CD_136) -- Dial-up connection plan change |

---

### Phase 10: Format Cell (FMTCEL) Service Dispatch

**Block 10** -- [IF] `OP_SVC_CD_FMTCEL.equals(opSvcCd)` (L13022)

Format Cell SOD processing. Creates format cell registration/cancellation/deletion/recovery orders.

**Block 10.1** -- [SET] Key Info (L13025)

| # | Type | Code |
|---|------|------|
| 1 | SET | this.op_svc_kei_no_fmtcel = chaf_opsvkei_no |
| 2 | SET | this.op_gadtm_fmtcel = chaf_opsvkei_gene_add_dtm |

**Block 10.2** -- [IF] `isBlank(chbf_opsvkei_no)` (Format Cell + New)

| # | Type | Code |
|---|------|------|
| 1 | CALL | addSOD(handle, param, ODR_NAIYO_CD_164) -- Format Cell registration |

**Block 10.3** -- [ELSE-IF] `isDslOpsvkei` (Format Cell + Disconnected)

| # | Type | Code |
|---|------|------|
| 1 | IF | ido_div NOT in DSL/TEKKYO/kyosei/cancel -- not cancellation modalities |
| 2 | CALL | getSame_trn_no(param, handle, null, sameTrnNo) |
| 3 | SET | this.same_trn_no = sameTrnNo[0] |
| 4 | CALL | addSOD(handle, param, ODR_NAIYO_CD_166) -- Format Cell cancellation |
| 5 | CALL | addSOD(handle, param, ODR_NAIYO_CD_167) -- Format Cell deletion |

**Block 10.4** -- [ELSE-IF] Recovered (910 -> 100)

| # | Type | Code |
|---|------|------|
| 1 | CALL | addSOD(handle, param, ODR_NAIYO_CD_164) -- Format Cell recovery registration |

---

### Phase 11: Z1 Order Count Gate

**Block 11** -- [SET] Z1 Order Check (L13052)

| # | Type | Code |
|---|------|------|
| 1 | CALL | nOrderedZ1 = findZ1OrderAtKK1041SvcKeiUcwk(param, handle, svc_kei_no, svc_kei_ucwk_no) |
| 2 | SET | isZ1Ordered = 4 <= nOrderedZ1 |

**Block 12** -- [SET] Equipment Serial Number Check (L13057)

| # | Type | Code |
|---|------|------|
| 1 | SET | isKikiSeizoNoCheckResult = false |
| 2 | IF | isExecuteKikiSeizoNoCheck(handle, param) |
| 3 | CALL | isKikiSeizoNoCheckResult = isKikiSeizoNoCheck(handle, param, svc_kei_no, svc_kei_ucwk_no) |

---

### Phase 12: Call Forwarding (TENSO) Dispatch

**Block 13** -- [IF] `OP_SVC_CD_TENSO.equals(opSvcCd) && isZ1Ordered` (L13135)

Call Forwarding SOD processing. Handles SIP call forwarding registration/cancellation/deletion/transfer selection.

**Block 13.1** -- [SET] Key State Info (L13143)

| # | Type | Code |
|---|------|------|
| 1 | SET | chbfOpSvcKeiStat = before option service contract status |
| 2 | SET | chafOpSvcKeiStat = after option service contract status |
| 3 | IF | chbfOpSvcKeiStat != chafOpSvcKeiStat -- state changed |
| 4 | SET | this.svc_kei_ucwk_no[0] = svc_kei_ucwk_no |
| 5 | CALL | getSame_trn_no(param, handle, null, sameTrnNo) |
| 6 | SET | this.same_trn_no = sameTrnNo[0] |
| 7 | IF | chafOpSvcKeiStat NOT 910 or 920 -- not disconnected |
| 8 | IF | isBmpNon && 4 > nOrderedZ1 -- non-portable and Z1 not yet processed |
| 9 | CALL | addSOD(handle, param, ODR_NAIYO_CD_218) -- SIP registration |
| 10 | IF | telno not empty && !isTajgsTelNo(handle, param, telno) && isMonaiBmp(handle, param, telno) |
| 11 | CALL | addSOD(handle, param, ODR_NAIYO_CD_225) -- SIP + portable number info registration |
| 12 | CALL | addSOD(handle, param, ODR_NAIYO_CD_265) -- ENUM setup registration |
| 13 | ELSE | 4 <= nOrderedZ1 || (isBmpNon && 4 > nOrderedZ1) -- Z1 processed or non-portable not processed |
| 14 | CALL | addSOD(handle, param, ODR_NAIYO_CD_236) -- SIP + call forwarding registration |
| 15 | ELSE | chafOpSvcKeiStat IS 910 or 920 -- disconnected/cancelled |
| 16 | IF | isZ1Ordered |
| 17 | CALL | addSOD(handle, param, ODR_NAIYO_CD_237) -- SIP + call forwarding cancellation |
| 18 | ELSE | isBmpNon -- non-portable number |
| 19 | CALL | addSOD(handle, param, ODR_NAIYO_CD_229) -- SIP cancellation |
| 20 | CALL | addSOD(handle, param, ODR_NAIYO_CD_230) -- SIP deletion |
| 21 | IF | telno not empty && !isTajgsTelNo(...) && isMonaiBmp(...) |
| 22 | CALL | addSOD(handle, param, ODR_NAIYO_CD_266) -- ENUM deletion |

**Block 13.2** -- [SET] Sub-option Service Code Check (L13222)

| # | Type | Code |
|---|------|------|
| 1 | SET | chafSbopSvcCd, chafSbopSvcKeiStat, chbfSbopSvckeiStat |
| 2 | IF | SBOP_SVC_CD_TENSOSEL.equals(chafSbopSvcCd) && isZ1Ordered |
| 3 | IF | chbfSbopSvckeiStat != chafSbopSvcKeiStat -- sub-option state changed |
| 4 | IF | chafSbopSvcKeiStat NOT 910 or 920 -- not disconnected |
| 5 | CALL | addSOD(handle, param, ODR_NAIYO_CD_238) -- SIP + call forwarding selection registration |
| 6 | ELSE | disconnected/cancelled |
| 7 | CALL | addSOD(handle, param, ODR_NAIYO_CD_239) -- SIP + call forwarding selection cancellation |
| 8 | ELSE | chbfOpSvcKeiStat == chafOpSvcKeiStat && isZ1Ordered -- states same, Z1 processed |
| 9 | IF | SBOP_SVC_CD_TENSOSEL.equals(chafSbopSvcCd) && (4 <= nOrderedZ1 || (isBmpNon && 4 > nOrderedZ1)) |
| 10 | IF | chbfSbopSvckeiStat != chafSbopSvcKeiStat |
| 11 | SET | sameTrnNo = new String[1] |
| 12 | CALL | getSame_trn_no(param, handle, null, sameTrnNo) |
| 13 | IF | chafSbopSvcKeiStat NOT 910/920 |
| 14 | CALL | addSOD(handle, param, ODR_NAIYO_CD_238) -- SIP + call forwarding selection registration |
| 15 | ELSE | disconnected/cancelled |
| 16 | CALL | addSOD(handle, param, ODR_NAIYO_CD_239) -- SIP + call forwarding selection cancellation |

---

### Phase 13: Caller ID Display (DSP) Dispatch

**Block 14** -- [IF] `OP_SVC_CD_DSP.equals(opSvcCd) && isZ1Ordered` (L13355)

Caller ID Display SOD processing. Creates SIP caller ID registration/cancellation orders.

**Block 14.1** -- [SET] State Comparison (L13362)

| # | Type | Code |
|---|------|------|
| 1 | SET | chbfOpSvcKeiStat, chafOpSvcKeiStat |
| 2 | IF | chbfOpSvcKeiStat != chafOpSvcKeiStat -- state changed |
| 3 | SET | this.svc_kei_ucwk_no[0] = svc_kei_ucwk_no |
| 4 | CALL | getSame_trn_no(param, handle, null, sameTrnNo) |
| 5 | IF | chafOpSvcKeiStat NOT 910/920 -- not disconnected |
| 6 | CALL | addSOD(handle, param, ODR_NAIYO_CD_240) -- SIP + caller ID display registration |
| 7 | ELSE | disconnected/cancelled |
| 8 | CALL | addSOD(handle, param, ODR_NAIYO_CD_241) -- SIP + caller ID display cancellation |
| 9 | IF | chbfOpSvcKeiStat == chafOpSvcKeiStat -- states same |
| 10 | IF | SBOP_SVC_CD_NOTELNO.equals(chafSbopSvcCd) && state differs |
| 11 | IF | chafSbopSvcKeiStat NOT 910/920 -- not disconnected |
| 12 | CALL | addSOD(handle, param, ODR_NAIYO_CD_242) -- SIP + non-notified call rejection registration |
| 13 | ELSE | disconnected/cancelled |
| 14 | CALL | addSOD(handle, param, ODR_NAIYO_CD_243) -- SIP + non-notified call rejection cancellation |

---

### Phase 14: Anonymous Call Rejection (MWKTEL) Dispatch

**Block 15** -- [IF] `OP_SVC_CD_MWKTEL.equals(opSvcCd) && isZ1Ordered` (L13455)

Anonymous Call Rejection SOD processing. Creates SIP anonymous call rejection registration/cancellation orders.

**Block 15.1** -- [SET] State Comparison

| # | Type | Code |
|---|------|------|
| 1 | SET | chbfOpSvcKeiStat, chafOpSvcKeiStat |
| 2 | IF | chbfOpSvcKeiStat != chafOpSvcKeiStat -- state changed |
| 3 | CALL | getSame_trn_no(param, handle, null, sameTrnNo) |
| 4 | SET | this.svc_kei_ucwk_no[0] = svc_kei_ucwk_no |
| 5 | IF | chafOpSvcKeiStat NOT 910/920 -- not disconnected |
| 6 | CALL | addSOD(handle, param, ODR_NAIYO_CD_244) -- SIP + anonymous call rejection registration |
| 7 | ELSE | disconnected/cancelled |
| 8 | CALL | addSOD(handle, param, ODR_NAIYO_CD_245) -- SIP + anonymous call rejection cancellation |

---

### Phase 15: Restricted Number Selection (STINO) Dispatch

**Block 16** -- [IF] `OP_SVC_CD_STINO.equals(opSvcCd) && isZ1Ordered` (L13511)

Restricted Number Selection SOD processing. Creates SIP restricted number rejection registration/cancellation orders.

**Block 16.1** -- [SET] State Comparison

| # | Type | Code |
|---|------|------|
| 1 | SET | chbfOpSvcKeiStat, chafOpSvcKeiStat |
| 2 | IF | chbfOpSvcKeiStat != chafOpSvcKeiStat -- state changed |
| 3 | CALL | getSame_trn_no(param, handle, null, sameTrnNo) |
| 4 | SET | this.svc_kei_ucwk_no[0] = svc_kei_ucwk_no |
| 5 | IF | chafOpSvcKeiStat NOT 910/920 -- not disconnected |
| 6 | CALL | addSOD(handle, param, ODR_NAIYO_CD_246) -- SIP + restricted number rejection registration |
| 7 | ELSE | disconnected/cancelled |
| 8 | CALL | addSOD(handle, param, ODR_NAIYO_CD_247) -- SIP + restricted number rejection cancellation |

---

### Phase 16: International Call Suspension (KOKUSAI_STP) Dispatch

**Block 17** -- [IF] `OP_SVC_CD_KOKUSAI_STP.equals(opSvcCd) && isZ1Ordered` (L13567)

International Call Suspension SOD processing. Creates SIP international call suspension registration/cancellation orders.

**Block 17.1** -- [SET] State Comparison

| # | Type | Code |
|---|------|------|
| 1 | SET | chbfOpSvcKeiStat, chafOpSvcKeiStat |
| 2 | IF | chbfOpSvcKeiStat != chafOpSvcKeiStat -- state changed |
| 3 | CALL | getSame_trn_no(param, handle, null, sameTrnNo) |
| 4 | SET | this.svc_kei_ucwk_no[0] = svc_kei_ucwk_no |
| 5 | IF | chafOpSvcKeiStat NOT 910/920 -- not disconnected |
| 6 | CALL | tsuikabunAddSOD(handle, param, ODR_NAIYO_CD_253) -- SIP + international call suspension registration |
| 7 | ELSE | disconnected/cancelled |
| 8 | CALL | tsuikabunAddSOD(handle, param, ODR_NAIYO_CD_254) -- SIP + international call suspension cancellation |

---

### Phase 17: IPv6 Dispatch

**Block 18** -- [IF] `OP_SVC_CD_IPV6.equals(opSvcCd)` (L13629)

IPv6 SOD processing. Calls jdgIpv6 to determine whether to emit IPv6 orders.

**Block 18.1** -- [SET] Key Info (L13633)

| # | Type | Code |
|---|------|------|
| 1 | SET | this.op_svc_kei_no_ipv6 = chaf_opsvkei_no |
| 2 | SET | this.op_gadtm_ipv6 = chaf_opsvkei_gene_add_dtm |
| 3 | CALL | getSame_trn_no(param, handle, null, sameTrnNo) |
| 4 | IF | isBlank(chbf_opsvkei_no) -- new IPv6 option |
| 5 | SET | this.sod_pattern_ipv6 = 1 (registration) |
| 6 | CALL | jdgIpv6(handle, param, "", chaf_opsvkei_no, chafEKK0361A010SCHash) |
| 7 | ELSE | isDslOpsvkei (910 or 920 after) |
| 8 | SET | this.sod_pattern_ipv6 = 3 (cancellation) |
| 9 | CALL | jdgIpv6(handle, param, "", chbf_opsvkei_no, chafEKK0361A010SCHash) |
| 10 | ELSE | recovered (910 before, 100 after) |
| 11 | SET | this.sod_pattern_ipv6 = 1 (registration) |
| 12 | CALL | jdgIpv6(handle, param, "", chaf_opsvkei_no, chafEKK0361A010SCHash) |

---

### Phase 18: Number Portability (N050) Dispatch

**Block 19** -- [IF] `OP_SVC_CD_N050.equals(opSvcCd) && isZ1Ordered` (L13685)

Number Portability SOD processing. Creates number portability registration and deletion orders through add050AddSod and add050DelSod.

| # | Type | Code |
|---|------|------|
| 1 | CALL | add050AddSod(param, handle, svc_kei_no, svc_kei_ucwk_no, chaf_svc_kei_ucwk_gene_add_dtm, chaf_opsvkei_no, chaf_opsvkei_gene_add_dtm) -- Number portability registration |
| 2 | CALL | add050DelSod(param, handle, svc_kei_no, svc_kei_ucwk_no, chaf_svc_kei_ucwk_gene_add_dtm, chaf_opsvkei_no, chaf_opsvkei_gene_add_dtm) -- Number portability deletion |

---

### Phase 19: Ani-koro Call Service (B135) Dispatch

**Block 20** -- [IF] `OP_SVC_CD_B135.equals(opSvcCd) && (isZ1Ordered || isKikiSeizoNoCheckResult)` (L13766)

Ani-koro Call Service SOD processing. Creates multi-function router Ani-koro Call Service orders.

**Block 20.1** -- [SET] Key Info (L13769)

| # | Type | Code |
|---|------|------|
| 1 | SET | this.svc_kei_ucwk_no[0] = svc_kei_ucwk_no |
| 2 | SET | this.op_svc_kei_no = chaf_opsvkei_no |
| 3 | CALL | takino_flg = checkTakinoRT(handle, param) |
| 4 | IF | takino_flg == 4 (modification order only) |
| 5 | SET | eKK0251B001Hash = getEKK0251B001SC(...) |
| 6 | CALL | callEKK0191A010SC(...) -- eo Hikari Phone detail |
| 7 | CALL | callEKK0191B001_2SC(param, handle, svc_kei_no, resultHash, FUNC_CODE_1) |
| 8 | FOR | Loop msgList[i] -- count active line items for this router |
| 9 | IF | ucwkStat NOT 910/920/010 and vaKikiChgNo matches chaf_vaKikiChgNo |
| 10 | SET | ucwkCount++ |
| 11 | CALL | getSame_trn_no(param, handle, null, sameTrnNo) |
| 12 | IF | ucwkCount <= 1 |
| 13 | CALL | addTakinoSOD(handle, param, ODR_NAIYO_CD_425) -- Ani-koro Call Service change (1-line attached) |
| 14 | ELSE | ucwkCount > 1 |
| 15 | CALL | addTakinoSOD(handle, param, ODR_NAIYO_CD_426) -- Ani-koro Call Service change (2-line attached) |

---

### Phase 20: Final Setup

**Block 21** -- [SET] Final Instance Fields (L13864)

| # | Type | Code |
|---|------|------|
| 1 | SET | this.mae_recode_chaf_op_svc_kei_no = new String(chaf_opsvkei_no) |
| 2 | SET | this.mae_recode_chaf_op_svc_kei_gene_add_dtm = new String(chaf_opsvkei_gene_add_dtm) |
| 3 | SET | this.mae_recode_chbf_op_svc_kei_no = new String(chbf_opsvkei_no) |
| 4 | SET | this.mae_recode_chbf_op_svc_kei_gene_add_dtm = new String(chbf_opsvkei_gene_add_dtm) |
| 5 | RETURN | return param |
