## 5. Dependency Trace

### Direct callers (6 methods within JKKHakkoSODCC):

| # | Caller | Call Chain | Terminal Operations from opSetOdrCtrl |
|---|--------|-----------|---------------------------------------|
| 1 | `JKKHakkoSODCC.dslOdrCtrl()` | dslOdrCtrl -> opSetOdrCtrl | addSOD [C] KK_T_ODR_HAKKO_JOKEN, getSame_trn_no [R], callEKK0351A010SC [R] KK_T_OPSVKEI_AGREEMENT |
| 2 | `JKKHakkoSODCC.hakkoSOD()` | hakkoSOD -> opSetOdrCtrl | addSOD [C] KK_T_ODR_HAKKO_JOKEN, callEKK0351A010SC [R] KK_T_OPSVKEI_AGREEMENT, callEKK0361A010SC [R] KK_T_OPSVKEI_ISP |
| 3 | `JKKHakkoSODCC.htelNoDslOdrCtrl()` | htelNoDslOdrCtrl -> opSetOdrCtrl | addSOD [C], callEKK0351A010SC [R], callEKK0361A010SC [R] |
| 4 | `JKKHakkoSODCC.htelNoInfoChgeOdrCtrl()` | htelNoInfoChgeOdrCtrl -> opSetOdrCtrl | addSOD [C], callEKK0351A010SC [R] |
| 5 | `JKKHakkoSODCC.htelNoKaihkOdrCtrl()` | htelNoKaihkOdrCtrl -> opSetOdrCtrl | addSOD [C], callEKK0351A010SC [R] |
| 6 | `JKKHakkoSODCC.kaihkOdrCtrl()` | kaihkOdrCtrl -> opSetOdrCtrl | addSOD [C], callEKK0351A010SC [R] |

### Terminal (SC / CRUD / Entity) operations reached from this method:

| Terminal Operation | Type | Entity / SC Code |
|-------------------|------|-----------------|
| `addSOD` | Create | KK_T_ODR_HAKKO_JOKEN (SOD order records) |
| `addTakinoSOD` | Create | KK_T_ODR_HAKKO_JOKEN (Multi-function router SOD) |
| `add050AddSod` | Create | KK_T_ODR_HAKKO_JOKEN (050 number porting add) |
| `add050DelSod` | Create | KK_T_ODR_HAKKO_JOKEN (050 number porting delete) |
| `callEKK0351A010SC` | Read | KK_T_OPSVKEI_AGREEMENT (Optional service contract) |
| `callEKK0361A010SC` | Read | KK_T_OPSVKEI_ISP (ISP optional service contract) |
| `callEKK0401A010SC` | Read | KK_T_SBOP_OPSVKEI (Sub-optional service contract) |
| `callEKK0411A010SC` | Read | KK_T_SBOP_OPSVKEI_ISP (Sub-optional ISP) |
| `callEKK0161B004SC` | Read | KK_T_SVC_KEI_UCWK (Service detail) |
| `callEKK0351B002SC` | Read | KK_T_OPSVKEI (Optional service contract list) |
| `callEKK0341B008SC` | Read | KK_T_KKTSVKEI (Equipment-provided service) |
| `callEKK0191A010SC` | Read | KK_T_SVC_KEI_UCWK (Service detail <eo optical>) |
| `callEKK0191B001_2SC` | Read | KK_T_SVC_KEI_UCWK (Service detail list alternate) |
| `callEKK0251B001SC` | Read | KK_T_SVC_KEI_KAISEN (Service wiring detail) |
| `callEKK0161A010SC` | Read | KK_T_SVC_KEI_UCWK (Service detail lookup) |
| `callEKK0161A010SC` | Read | KK_T_SVC_KEI_UCWK (Service detail lookup) |
| `callEKK0161A010SC` | Read | KK_T_SVC_KEI_UCWK (Service detail lookup) |
| `getSame_trn_no` | Read | Shared transaction number |
| `getSame_trn_no` | Read | Shared transaction number |
| `getSame_trn_no` | Read | Shared transaction number |
| `getSame_trn_no` | Read | Shared transaction number |
| `getSame_trn_no` | Read | Shared transaction number |
| `getSame_trn_no` | Read | Shared transaction number |
| `getSame_trn_no` | Read | Shared transaction number |
| `getSame_trn_no` | Read | Shared transaction number |
| `getSame_trn_no` | Read | Shared transaction number |
| `getSame_trn_no` | Read | Shared transaction number |
| `pauseJdg` | Other | Service suspension determination |
| `pauseJdg` | Other | Service suspension determination |
| `pauseJdg` | Other | Service suspension determination |
| `getEKK0251B001SC` | Read | KK_T_SVC_KEI_KAISEN (Service wiring) |
| `getEKK0251B001SC` | Read | KK_T_SVC_KEI_KAISEN (Service wiring) |
| `shkkaChr` | Other | String null-safe trimming |
| `callEKK0191A010SC` | Read | KK_T_SVC_KEI_UCWK |
| `callEKK0191A010SC` | Read | KK_T_SVC_KEI_UCWK |
| `getEKK0251B001SC` | Read | KK_T_SVC_KEI_KAISEN |
| `checkTakinoRT` | Other | Multi-function router check |
| `add050DelSod` | Create | KK_T_ODR_HAKKO_JOKEN |

## 6. Per-Branch Detail Blocks

**Block 1** — [Initialization] (L11478)

Extract SOD sub-maps from sodMap, apply null-safe mapping, extract key fields.

| # | Type | Code |
|---|------|------|
| 1 | SET | `sod_kihon_info_Map = (HashMap)sodMap.get(SOD_KIHON_INFO)` |
| 2 | SET | `svc_kei_info_Map = (HashMap)sodMap.get(SVC_KEI_INFO)` |
| 3 | SET | `svc_kei_ucwk_info_Map = (HashMap)sodMap.get(SVC_KEI_UCWK_INFO)` |
| 4 | SET | `opsvkei_info_Map = (HashMap)sodMap.get(OPSVKEI_INFO)` |
| 5 | SET | `kktsvkei_info_Map = (HashMap)sodMap.get(KKTSVKEI_INFO)` |
| 6 | EXEC | `sod_kihon_info_Map = shkkaMap(sod_kihon_info_Map)` |
| 7 | EXEC | `svc_kei_info_Map = shkkaMap(svc_kei_info_Map)` |
| 8 | EXEC | `svc_kei_ucwk_info_Map = shkkaMap(svc_kei_ucwk_info_Map)` |
| 9 | EXEC | `opsvkei_info_Map = shkkaMap(opsvkei_info_Map)` |
| 10 | EXEC | `kktsvkei_info_Map = shkkaMap(kktsvkei_info_Map)` |
| 11 | SET | `chbfEKK0351A010SCHash = null` (before-optional service agreement hash) |
| 12 | SET | `chafEKK0351A010SCHash = null` (after-optional service agreement hash) |
| 13 | SET | `chbfEKK0361A010SCHash = null` (before-optional service <ISP> agreement hash) |
| 14 | SET | `chafEKK0361A010SCHash = null` (after-optional service <ISP> agreement hash) |
| 15 | SET | `chbfEKK0401A010SCHash = null` (before-sub-optional service agreement hash) |
| 16 | SET | `chafEKK0401A010SCHash = null` (after-sub-optional service agreement hash) |
| 17 | SET | `chbfEKK0411A010SCHash = null` (before-sub-optional <ISP> agreement hash) |
| 18 | SET | `chafEKK0411A010SCHash = null` (after-sub-optional <ISP> agreement hash) |
| 19 | SET | `chafEKK0341A010SCHash = null` (after-equipment service agreement hash) |
| 20 | SET | `ido_div = (String)sod_kihon_info_Map.get(INFO_IDO_DIV)` (move division) |
| 21 | SET | `svc_kei_no = (String)svc_kei_info_Map.get(INFO_SVC_KEI_NO)` (service contract number) |
| 22 | SET | `chbf_opsvkei_no = (String)opsvkei_info_Map.get(INFO_CHBF_OPSVKEI_NO)` (before-optional service contract number) |
| 23 | SET | `chbf_opsvkei_gene_add_dtm = (String)opsvkei_info_Map.get(INFO_CHBF_OPSVKEI_GENE_ADD_DTM)` (before generation datetime) |
| 24 | SET | `chaf_opsvkei_no = (String)opsvkei_info_Map.get(INFO_CHAF_OPSVKEI_NO)` (after-optional service contract number) |
| 25 | SET | `chaf_opsvkei_gene_add_dtm = (String)opsvkei_info_Map.get(INFO_CHAF_OPSVKEI_GENE_ADD_DTM)` (after generation datetime) |
| 26-29 | SET | Extract chbf_sbopsvkei_no, chaf_sbopsvkei_no, chbf_sbopsvkei_gene_add_dtm, chaf_sbopsvkei_gene_add_dtm |
| 30-31 | SET | Extract svc_kei_ucwk_no, chaf_svc_kei_ucwk_gene_add_dtm, chaf_kktk_svc_kei_no, chaf_kktk_svc_kei_gene_add_dtm |
| 32-35 | EXEC | `shkkaChr()` on chaf/chbf_opsvkei_no and generation datetime |
| 36-37 | SET | `ipv6_svc_kei_ucwk_no` and `ipv6_svc_kei_ucwk_gadtm` (IPV6 support, ANK-0046-00-01) |

**Block 2** — [IF] "Has before optional service data?" (L11504)
Condition: `!isBlank(chbf_opsvkei_no) && !isBlank(chbf_opsvkei_gene_add_dtm)`

> Get before-optional service contract agreement data from the SC.

| # | Type | Code |
|---|------|------|
| 1 | SET | `chbfInHash = new HashMap()` |
| 2 | SET | `chbfInHash.put(OP_SVC_KEI_NO, chbf_opsvkei_no)` |
| 3 | SET | `chbfInHash.put(GENE_ADD_DTM, chbf_opsvkei_gene_add_dtm)` |
| 4 | CALL | `callEKK0351A010SC(param, handle, chbfInHash, chbfResultHash, FUNC_CODE_1)` |
| 5 | IF | `statusCode != 0` -> Throw CCException with SCCallException |
| 6 | SET | `chbfEKK0351A010SCHash = (HashMap)chbfResultHash.get(TEMPLATE_ID_EKK0351A010)` |
| 7 | SET | `opSvcCd = (String)chbfEKK0351A010SCHash.get(OP_SVC_CD)` |
| 8 | CALL | `jdgOpSvcKind(opSvcCd)` -> opSvcKind array |
| 9 | IF | `opSvcKind == null` -> Return param (not SOD target) |
| 10 | IF | `SVC_KIND_NET.equals(opSvcKind[0])` (opSvcKind[0] == "1") |
| 11 | CALL | `callEKK0361A010SC` -> chbfEKK0361A010SCHash |
| 12 | IF | `SVC_KIND_TEL.equals(opSvcKind[0])` (opSvcKind[0] == "2") |
| 13 | COMMENT | EKK0371A010SC call is commented out (phone optional service) |
| 14 | IF | `opSvcKind[1] == "1" && !isBlank(chbf_sbopsvkei_no)` |
| 15 | IF | `SVC_KIND_NET` -> `callEKK0411A010SC` -> chbfEKK0411A010SCHash |
| 16 | CALL | `callEKK0401A010SC` -> chbfEKK0401A010SCHash (common for NET and TEL) |

**Block 3** — [IF/ELSE-IF chain] "Before/after comparison for after-change data" (L11760)
Always executed after Block 2. Gets after-optional service data.

| # | Type | Code |
|---|------|------|
| 1 | SET | `chafInHash.put(OP_SVC_KEI_NO, chaf_opsvkei_no)` |
| 2 | SET | `chafInHash.put(GENE_ADD_DTM, chaf_opsvkei_gene_add_dtm)` |
| 3 | SET | `funcCode = (null != chaf_opsvkei_gene_add_dtm && 17 == length ? FUNC_CODE_1 : FUNC_CODE_2)` |
| 4 | CALL | `callEKK0351A010SC(param, handle, chafInHash, chafResultHash, funcCode)` |
| 5 | IF | `statusCode != 0` -> Throw CCException |
| 6 | SET | `chafEKK0351A010SCHash = (HashMap)chafResultHash.get(TEMPLATE_ID_EKK0351A010)` |
| 7 | SET | `opSvcCd = (String)chafEKK0351A010SCHash.get(OP_SVC_CD)` |
| 8 | IF | `null == chaf_opsvkei_gene_add_dtm || length < 17` -> Fill from SC result (multi-selection change fix) |
| 9 | CALL | `jdgOpSvcKind(opSvcCd)` -> opSvcKind |
| 10 | IF | `opSvcKind == null` -> Return param |
| 11 | IF | `SVC_KIND_NET.equals(opSvcKind[0])` -> `callEKK0361A010SC` -> chafEKK0361A010SCHash |
| 12 | IF | `SVC_KIND_TEL.equals(opSvcKind[0])` -> Commented out |
| 13 | IF | `opSvcKind[1] == "1" && !isBlank(chaf_sbopsvkei_no)` |
| 14 | IF | `SVC_KIND_NET` -> `callEKK0411A010SC` -> chafEKK0411A010SCHash |
| 15 | CALL | `callEKK0401A010SC` -> chafEKK0401A010SCHash |

**Block 4** — [State comparison] (L11928)
Compare before/after optional service contract status.

| # | Type | Code |
|---|------|------|
| 1 | SET | `selectOdrNaiyoCd = ""` (selected order content code) |
| 2 | SET | `opsvkeiStatBefore = (String)chbfEKK0351A010SCHash.get(OP_SVC_KEI_STAT)` |
| 3 | SET | `opsvkeiStatAfter = (String)chafEKK0351A010SCHash.get(OP_SVC_KEI_STAT)` |
| 4 | SET | `isNewOpsvkei = isBlank(chbf_opsvkei_no) && !isBlank(chaf_opsvkei_no)` |
| 5 | SET | `isNewOpsvkei &= !SVC_KEI_STAT_920.equals(opsvkeiStatAfter)` (exclude cancelled) |
| 6 | SET | `isDslOpsvkei = SVC_KEI_STAT_910/920.equals(opsvkeiStatAfter)` |
| 7 | SET | `isShosaCl = IDO_DIV_CANCEL.equals(this.ido_div) && SVC_KEI_STAT_010.equals(opsvkeiStatAfter)` |
| 8 | SET | `isKaihkOpsvkei` (910->100/030 or 920->020/030) |
| 9 | SET | `isChgOpsvkei` (100->100 or 020->020 or 030->030) |

**Block 5** — [IF] "opSvcCd == OP_SVC_CD_EMAIL" (L11998)

> Email optional service SOD issuance logic.

| # | Type | Code |
|---|------|------|
| 1 | SET | `op_svc_kei_no_ml = chaf_opsvkei_no`, `op_gadtm_ml = chaf_opsvkei_gene_add_dtm` |
| 2 | SET | `mlad = (String)chafEKK0361A010SCHash.get(MLAD)` |
| 3 | IF | `isNewOpsvkei` (before not specified) |
| 4 | IF | `chgOpsvKeiJdg() && sameTrnJdg() > 0` -> `getSame_trn_no()` |
| 5 | IF | `chgOpsvKeiJdg()` -> Priority HIGH |
| 6 | SET | `selectOdrNaiyoCd = ODR_NAIYO_CD_108` |
| 7 | CALL | `addSOD(handle, param, 108)` (Email registration) |
| 8 | IF | `isDslOpsvkei` (after is 910 or 920) |
| 9 | IF | `!IDO_DIV_DSL/TEKKYODSL/KYOSEIDSL/KYOSEIDSLFIX/CANCEL.equals(ido_div)` -> clear same_trn_no |
| 10 | SET | `selectOdrNaiyoCd = ODR_NAIYO_CD_116` |
| 11 | CALL | `addSOD(handle, param, 116)` (Email cancellation) |
| 12 | IF | `isShosaCl` -> `addSOD(118)` (Email deletion during withdrawal) |
| 13 | IF | `isKaihkOpsvkei` -> `addSOD(120)` (Email restoration) |
| 14 | IF | `isChgOpsvkei` -> Compare chbfMlad vs chafMlad |
| 15 | IF | Mlad differs -> `addSOD(117)` (Email address change), `addSOD(119)` (Email deletion) |
| 16 | SET | `addSOD(108)` (Email re-registration with new address) |
| 17 | Priority management: set KEI_SVC_CTL_YOKYU_ODR_SKCD to HIGH/LOW/PRIORITY_HIGH/PRIORITY_LOW |

**Block 6** — [IF] "opSvcCd == OP_SVC_CD_HP" (L12282)

> Home Page optional service SOD issuance logic.

| # | Type | Code |
|---|------|------|
| 1 | SET | `op_svc_kei_no_hp = chaf_opsvkei_no`, `op_gadtm_hp = chaf_opsvkei_gene_add_dtm` |
| 2 | IF | `isNewOpsvkei` -> Check URL domain and account |
| 3 | IF | `!isBlank(chafUrlDomain) && !isBlank(chafUrlAccount)` |
| 4 | IF | `chgOpsvKeiJdg() && sameTrnJdg() > 0` -> `getSame_trn_no()` |
| 5 | IF | `chgOpsvKeiJdg()` -> `addSOD(121)` (HP registration) |
| 6 | IF | `isDslOpsvkei` -> `addSOD(126)` (HP cancellation), `addSOD(127)` (HP deletion) |
| 7 | IF | `isKaihkOpsvkei` -> `addSOD(128)` (HP restoration) |
| 8 | IF | `isChgOpsvkei` -> Compare URLs, `addSOD(126+127+121)` (URL change) |
| 9 | IF | `null != chbfEKK0361A010SCHash && null != chafEKK0361A010SCHash` -> Compare CAPA for HP capacity change |
| 10 | IF | `isHakkoSod && !isBlank(chbfCapa) && !isBlank(chafCapa) && chbfCapa != chafCapa` -> `addSOD(123)` (HP capacity change) |

**Block 7** — [IF] "opSvcCd == OP_SVC_CD_MLIST" (L12544)

> Mail List optional service SOD issuance logic.

| # | Type | Code |
|---|------|------|
| 1 | SET | `op_svc_kei_no_mlist = chaf_opsvkei_no`, `op_gadtm_mlist = chaf_opsvkei_gene_add_dtm` |
| 2 | IF | `isNewOpsvkei` -> `addSOD(129)` (Mail List registration) |
| 3 | IF | `isDslOpsvkei` -> `addSOD(131)` (Mail List cancellation), `addSOD(132)` (Mail List deletion) |
| 4 | IF | `isKaihkOpsvkei` -> `addSOD(133)` (Mail List restoration) |

**Block 8** — [IF] "opSvcCd == OP_SVC_CD_FIXIPAD" (L12710)

> Fixed Global IP Address optional service SOD issuance logic.

| # | Type | Code |
|---|------|------|
| 1 | SET | `svc_kei_ucwk_no = searchSvcKeiUcwk()` -> EKK0161A010SC |
| 2 | SET | `op_svc_kei_no_fixipad = chaf_opsvkei_no`, `op_gadtm_fixipad = chaf_opsvkei_gene_add_dtm` |
| 3 | SET | `old_vrsb_jdg_svc_dtl_cd = getOldVrsbIdgSvcDtlCd()` |
| 4 | IF | `isBlank(chbf_opsvkei_no)` -> `addSOD(152)` (Fixed IP registration) |
| 5 | IF | `SVC_KEI_STAT_910/920.equals(chafEKK0351A010SCHash)` -> Check service suspension |
| 6 | IF | `SVC_KEI_STAT_910/920.equals(svc_kei_ucwk_stat)` -> No SOD issued (account already cancelled) |
| 7 | IF | `pauseJdg()` -> `PAUSE_JDG_CD_1` -> `addSOD(107)` + `addSOD(154)` + `addSOD(104)` + `addSOD(101)` + `addSOD(106)` |
| 8 | IF | `PAUSE_JDG_CD_0` -> `addSOD(154)` + `addSOD(104)` + `addSOD(101)` |
| 9 | IF | `SVC_KEI_STAT_910(chbf) && SVC_KEI_STAT_100(chaf)` -> `addSOD(153)` (Fixed IP restoration) |

**Block 9** — [IF] "opSvcCd == OP_SVC_CD_MLTISE" (L13032)

> Multi-Session (Multi-Session option) SOD issuance logic.

| # | Type | Code |
|---|------|------|
| 1 | SET | `op_svc_kei_no_mltise = chaf_opsvkei_no`, `op_gadtm_mltise = chaf_opsvkei_gene_add_dtm` |
| 2 | CALL | `callEKK0351B002SC` -> msgList (optional service contract list) |
| 3 | FOR | Loop msgList[] -> Check op_svc_kei_stat -> `isAddSodTrgtStat()` |
| 4 | SET | `fixipadAri = true` if any active fixed IP exists |
| 5 | IF | `fixipadAri` |
| 6 | IF | `isNewOpsvkei` -> Static: `addSOD(144)`, Dynamic: `addSOD(142)` |
| 7 | IF | `isDslOpsvkei` -> `pauseJdg()` -> Static: `addSOD(145)`, Dynamic: `addSOD(143)` |
| 8 | IF | `isKaihkOpsvkei` -> `addSOD(161)` (Multi-Session restoration) |
| 9 | IF | `isChgOpsvkei` -> `addSOD(162)` (Multi-Session selection change) |

**Block 10** — [IF] "opSvcCd == OP_SVC_CD_DUP" (L13232)

> Dial-up Connection SOD issuance logic.

| # | Type | Code |
|---|------|------|
| 1 | CALL | `callEKK0161B004SC` -> service detail info |
| 2 | SET | `op_svc_kei_no_dial = chaf_opsvkei_no` |
| 3 | IF | `isNewOpsvkei` -> `addSOD(134)` (Dial-up registration) |
| 4 | IF | `isDslOpsvkei` -> `addSOD(137)` (Dial-up cancellation), `addSOD(138)` (Dial-up deletion) |
| 5 | IF | `isKaihkOpsvkei` -> `addSOD(134)` (Dial-up restoration) |
| 6 | IF | `isChgOpsvkei` -> `addSOD(136)` (Dial-up plan change) |

**Block 11** — [IF] "opSvcCd == OP_SVC_CD_FMTCEL" (L13312)

> Format Cell SOD issuance logic.

| # | Type | Code |
|---|------|------|
| 1 | SET | `op_svc_kei_no_fmtcel = chaf_opsvkei_no` |
| 2 | IF | `isBlank(chbf_opsvkei_no)` -> `addSOD(164)` (Format Cell registration) |
| 3 | IF | `SVC_KEI_STAT_910/920.equals(chafEKK0351A010SCHash)` -> `addSOD(166)` (Format Cell cancellation), `addSOD(167)` (Format Cell deletion) |
| 4 | IF | `SVC_KEI_STAT_910(chbf) && SVC_KEI_STAT_100(chaf)` -> `addSOD(164)` (Format Cell restoration) |

**Block 12** — [Caller Number Notification section] (L13414)

> DSP_ME and DSP: Caller number notification, display number, and related SIP features.

| # | Type | Code |
|---|------|------|
| 1 | SET | `nOrderedZ1 = findZ1OrderAtKK1041SvcKeiUcwk(param, handle, svc_kei_no, svc_kei_ucwk_no)` |
| 2 | SET | `isZ1Ordered = (4 <= nOrderedZ1)` |
| 3 | IF | `isExecuteKikiSeizoNoCheck()` -> `isKikiSeizoNoCheck()` |
| 4 | IF | `OP_SVC_CD_DSP_ME.equals(opSvcCd) && (isZ1Ordered || isKikiSeizoNoCheckResult)` |
| 5 | IF | `null == chaf_kktk_svc_kei_no` -> `callEKK0341B008SC` + `callEKK0191A010SC` |
| 6 | CALL | `callEKK0341B008_02SC` (EG switching support) |
| 7 | SET | `vaTaknkiki_model_cd`, `vaKikiSeizoNo`, `kktk_svc_kei_no` |
| 8 | IF | `takino_flg == 0` -> `addSOD(211)` (OLS setup + caller notification) if Z1 ordered or device checked |
| 9 | IF | `takino_flg != 9` -> `addTakinoSOD(411)` (multi-function router setup) if Z1 ordered or device checked |
| 10 | IF | `isZ1Ordered` -> `addSOD(231)` (SIP caller notification) |
| 11 | IF | `OP_SVC_CD_DSP.equals(opSvcCd) && isZ1Ordered` |
| 12 | IF | `!chbfOpSvcKeiStat.equals(chafOpSvcKeiStat)` -> `addSOD(240)` (display registration) |
| 13 | IF | `isChgOpsvkei` (stat same) -> `addSOD(242/243)` (non-notification rejection) |
| 14 | IF | `OP_SVC_CD_WARKMI.equals(opSvcCd) && isZ1Ordered` -> `addSOD(234/235)` (split phone) |
| 15 | IF | `OP_SVC_CD_MWKTEL.equals(opSvcCd) && isZ1Ordered` -> `addSOD(244/245)` (confusing call rejection) |
| 16 | IF | `OP_SVC_CD_STINO.equals(opSvcCd) && isZ1Ordered` -> `addSOD(246/247)` (designated number rejection) |
| 17 | IF | `OP_SVC_CD_KOKUSAI_STP.equals(opSvcCd) && isZ1Ordered` -> `addSOD(253/254)` (international stop) |

**Block 13** — [IF] "opSvcCd == OP_SVC_CD_TENSO" (L13577)

> Transfer Phone SOD issuance logic.

| # | Type | Code |
|---|------|------|
| 1 | IF | `!chbfOpSvcKeiStat.equals(chafOpSvcKeiStat)` (before/after status differ) |
| 2 | IF | `isNotCancelled` (not 910/920 after) -> `isBmpNon && 4 > nOrderedZ1` |
| 3 | CALL | `addSOD(218)` (SIP registration) if non-portable and Z1 not done |
| 4 | CALL | `addSOD(225)` (SIP portable info) + `addSOD(265)` (ENUM setup) for internal portable |
| 5 | IF | `(4 <= nOrderedZ1) || (isBmpNon && 4 > nOrderedZ1)` -> `addSOD(236)` (SIP transfer registration) |
| 6 | ELSE | `isZ1Ordered` -> `addSOD(237)` (SIP transfer cancellation) |
| 7 | ELSE | `isBmpNon` -> `addSOD(229/230)` (SIP cancellation/deletion), `addSOD(266)` (ENUM deletion) |
| 8 | IF | `SBOP_SVC_CD_TENSOSEL.equals(chafSbopSvcCd) && isZ1Ordered` -> `addSOD(238/239)` (SIP transfer select) |

**Block 14** — [IF] "opSvcCd == OP_SVC_CD_IPV6" (L13778)

> IPV6 SOD issuance logic.

| # | Type | Code |
|---|------|------|
| 1 | SET | `op_svc_kei_no_ipv6 = chaf_opsvkei_no` |
| 2 | CALL | `getSame_trn_no()` |
| 3 | IF | `isBlank(chbf_opsvkei_no)` -> `sod_pattern_ipv6 = 1` -> `jdgIpv6(handle, param, "", chaf_opsvkei_no, chafEKK0361A010SCHash)` |
| 4 | IF | `SVC_KEI_STAT_910/920.equals(chafEKK0351A010SCHash)` -> `sod_pattern_ipv6 = 3` -> `jdgIpv6(handle, param, "", chbf_opsvkei_no, chafEKK0361A010SCHash)` |
| 5 | IF | `SVC_KEI_STAT_910(chbf) && SVC_KEI_STAT_100(chaf)` -> `sod_pattern_ipv6 = 1` -> `jdgIpv6(handle, param, "", chaf_opsvkei_no, chafEKK0361A010SCHash)` |

**Block 15** — [IF] "opSvcCd == OP_SVC_CD_N050" (L13846)

> 050 Number Plate SOD issuance logic.

| # | 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)` |
| 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)` |

**Block 16** — [IF] "opSvcCd == OP_SVC_CD_B135" (L13930)

> ANSHIN Caller ID SOD issuance logic (multi-function router dependent).

| # | Type | Code |
|---|------|------|
| 1 | SET | `svc_kei_ucwk_no[0] = svc_kei_ucwk_no`, `svc_kei_ucwk_gadtm[0] = chaf_svc_kei_ucwk_gene_add_dtm` |
| 2 | CALL | `checkTakinoRT(handle, param)` -> takino_flg |
| 3 | IF | `takino_flg == 4` (multi-function change order only) |
| 4 | CALL | `getEKK0251B001SC()` -> service wiring info |
| 5 | CALL | `callEKK0191A010SC()` -> VA device change number |
| 6 | CALL | `callEKK0191B001_2SC()` -> service detail list count |
| 7 | FOR | Loop service details, count those matching VA device change number (excluding 910/920/010) |
| 8 | CALL | `getSame_trn_no()` |
| 9 | IF | `ucwkCount <= 1` -> `addTakinoSOD(425)` (ANSHIN service change, 1-number attachment) |
| 10 | IF | `ucwkCount > 1` -> `addTakinoSOD(426)` (ANSHIN service change, 2-number attachment) |

**Block 17** — [Cleanup/Return] (L14012)

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

## 7. Glossary

| Term | Type | Business Meaning |
|------|------|------------------|
| SOD | Acronym | Service Order Data - telecom order fulfillment entity representing a request to change or add an optional service |
| SOD map | Field | `sodMap` parameter - the master map containing all pre-fetched SOD data sub-maps |
| opcSvcCd | Field | Optional Service Code - classifies the type of optional service being processed (MAIL, HP, MLIST, FIXIPAD, MLTISE, DUP, FMTCEL, etc.) |
| opSvcKind | Field | Array returned by jdgOpSvcKind() - [0] = service category code (NET="1", TEL="2", MOB="4", ADSL="5"), [1] = sub-optional indicator |
| chbf_opsvkei_no | Field | Before-Change Optional Service Contract Number - the optional service contract number before the operation |
| chaf_opsvkei_no | Field | After-Change Optional Service Contract Number - the optional service contract number after the operation |
| chbf_sbopsvkei_no | Field | Before-Change Sub-Optional Service Contract Number - the sub-optional service contract number before the operation |
| chaf_sbopsvkei_no | Field | After-Change Sub-Optional Service Contract Number - the sub-optional service contract number after the operation |
| svc_kei_no | Field | Service Contract Number - the main service contract identifier |
| svc_kei_ucwk_no | Field | Service Detail Number - the detailed service contract identifier within a service contract |
| svc_kei_ucwk_gadtm | Field | Service Detail Generation Registration Datetime - timestamp of the service detail generation |
| kktk_svc_kei_no | Field | Equipment-Provided Service Contract Number - the contract number for NTT-provided equipment (phones, routers) |
| taknkiki_model_cd | Field | Indoor Equipment Model Code - model code for indoor equipment (VA telephone, router) |
| kiki_seizo_no | Field | Device Serial Number - serial number of the indoor equipment (VA telephone) |
| ido_div | Field | Move Division - operation type classification (DSL="00001", KYOSEIDSL="00002", TEKKYODSL="00003", OPSETTE="00004", CANCEL="00005", HTTELNODSL="00007", TEKEN="00032") |
| same_trn_no | Field | Same Transaction Number - a shared transaction number for coordinating multiple related service operations in a single batch |
| isDslOpsvkei | Field | Boolean flag indicating the optional service contract status is 910 (Cancelled) or 920 (Cancellation Pending) |
| isKaihkOpsvkei | Field | Boolean flag indicating restoration from cancelled state (910->100/030 or 920->020/030) |
| isChgOpsvkei | Field | Boolean flag indicating modification with same active status (100->100, 020->020, 030->030) |
| isShosaCl | Field | Boolean flag for withdrawal cancellation (IDO_DIV_CANCEL + SVC_KEI_STAT_010) |
| isZ1Ordered | Field | Boolean indicating Z1 orders >= 4, meaning number porting processing has been completed |
| isKikiSeizoNoCheckResult | Field | Boolean indicating device serial number registration has been completed |
| takino_flg | Field | Multi-function router (Takino router) registration flag returned by checkTakinoRT() - 0=none, 4=change order, 9=unregistered |
| PAUSE_JDG_CD | Field | Suspension Judgment Code - 1=service is suspended, 0=service is active |
| SVC_KEI_STAT_100 | Field | Service Contract Status: "Service Provision Active" (30003: Active) |
| SVC_KEI_STAT_010 | Field | Service Contract Status: "Subscription Pending" (30001: Pending) |
| SVC_KEI_STAT_020 | Field | Service Contract Status: "Contract Completed" (30002: Completed) |
| SVC_KEI_STAT_030 | Field | Service Contract Status: "Service Provision Completed" (30004: Completed) |
| SVC_KEI_STAT_910 | Field | Service Contract Status: "Contract Cancelled" (30010: Cancelled) |
| SVC_KEI_STAT_920 | Field | Service Contract Status: "Cancellation Pending" (30011: Cancellation Pending) |
| FUNC_CODE_1 | Constant | Function Code "00001" - standard processing mode |
| FUNC_CODE_2 | Constant | Function Code "00002" - retrieval search mode (used when gene_add_dtm is not 17 chars for multi-selection change support) |
| OP_SVC_CD_EMAIL | Constant | Optional Service Code for Email (MAIL) - value from JKKHakkoSODConstCC |
| OP_SVC_CD_HP | Constant | Optional Service Code for Home Page - value from JKKHakkoSODConstCC |
| OP_SVC_CD_MLIST | Constant | Optional Service Code for Mail List - value from JKKHakkoSODConstCC |
| OP_SVC_CD_FIXIPAD | Constant | Optional Service Code for Fixed Global IP Address - value from JKKHakkoSODConstCC |
| OP_SVC_CD_MLTISE | Constant | Optional Service Code for Multi-Session - value from JKKHakkoSODConstCC |
| OP_SVC_CD_DUP | Constant | Optional Service Code for Dial-up Connection (DUP) - value from JKKHakkoSODConstCC |
| OP_SVC_CD_FMTCEL | Constant | Optional Service Code for Format Cell - value from JKKHakkoSODConstCC |
| OP_SVC_CD_DSP_ME | Constant | Optional Service Code for Caller Number Notification (Message) - value from JKKHakkoSODConstCC |
| OP_SVC_CD_TENSO | Constant | Optional Service Code for Transfer Phone (Tenso) - value from JKKHakkoSODConstCC |
| OP_SVC_CD_KOKUSAI_STP | Constant | Optional Service Code for International Call Stop - value from JKKHakkoSODConstCC |
| OP_SVC_CD_IPV6 | Constant | Optional Service Code for IPV6 - value from JKKHakkoSODConstCC |
| OP_SVC_CD_N050 | Constant | Optional Service Code for 050 Number Plate - value from JKKHakkoSODConstCC |
| OP_SVC_CD_B135 | Constant | Optional Service Code for ANSHIN Caller ID - value from JKKHakkoSODConstCC |
| ODR_NAIYO_CD_101 | Constant | SOD Order Content Code: FTTH Registration (101) |
| ODR_NAIYO_CD_104 | Constant | SOD Order Content Code: FTTH Deletion (104) |
| ODR_NAIYO_CD_106 | Constant | SOD Order Content Code: FTTH Temporary Suspension (106) |
| ODR_NAIYO_CD_107 | Constant | SOD Order Content Code: FTTH Authentication - Suspension Release (107) |
| ODR_NAIYO_CD_108 | Constant | SOD Order Content Code: Email Registration (108) |
| ODR_NAIYO_CD_110 | Constant | SOD Order Content Code: Email - Alias Registration (110) |
| ODR_NAIYO_CD_111 | Constant | SOD Order Content Code: Email - Alias Change (111) |
| ODR_NAIYO_CD_112 | Constant | SOD Order Content Code: Email - Alias Cancellation (112) |
| ODR_NAIYO_CD_113 | Constant | SOD Order Content Code: Email - Mailbox Capacity Change (113) |
| ODR_NAIYO_CD_114 | Constant | SOD Order Content Code: Email - Virus Check Registration (114) |
| ODR_NAIYO_CD_115 | Constant | SOD Order Content Code: Email - Virus Check Cancellation (115) |
| ODR_NAIYO_CD_116 | Constant | SOD Order Content Code: Email Cancellation (116) |
| ODR_NAIYO_CD_117 | Constant | SOD Order Content Code: Email Address Change (117) |
| ODR_NAIYO_CD_118 | Constant | SOD Order Content Code: Email Deletion (Withdrawal Cancellation) (118) |
| ODR_NAIYO_CD_119 | Constant | SOD Order Content Code: Email Deletion (119) |
| ODR_NAIYO_CD_120 | Constant | SOD Order Content Code: Email Restoration (120) |
| ODR_NAIYO_CD_121 | Constant | SOD Order Content Code: HP Registration (121) |
| ODR_NAIYO_CD_123 | Constant | SOD Order Content Code: HP Capacity Change (123) |
| ODR_NAIYO_CD_124 | Constant | SOD Order Content Code: HP - Access Analytics Registration (124) |
| ODR_NAIYO_CD_125 | Constant | SOD Order Content Code: HP - Access Analytics Cancellation (125) |
| ODR_NAIYO_CD_126 | Constant | SOD Order Content Code: HP Cancellation (126) |
| ODR_NAIYO_CD_127 | Constant | SOD Order Content Code: HP Deletion (127) |
| ODR_NAIYO_CD_128 | Constant | SOD Order Content Code: HP Restoration (128) |
| ODR_NAIYO_CD_129 | Constant | SOD Order Content Code: Mail List Registration (129) |
| ODR_NAIYO_CD_131 | Constant | SOD Order Content Code: Mail List Cancellation (131) |
| ODR_NAIYO_CD_132 | Constant | SOD Order Content Code: Mail List Deletion (132) |
| ODR_NAIYO_CD_133 | Constant | SOD Order Content Code: Mail List Restoration (133) |
| ODR_NAIYO_CD_134 | Constant | SOD Order Content Code: Dial-up Registration (134) |
| ODR_NAIYO_CD_136 | Constant | SOD Order Content Code: Dial-up Plan Change (136) |
| ODR_NAIYO_CD_137 | Constant | SOD Order Content Code: Dial-up Cancellation (137) |
| ODR_NAIYO_CD_138 | Constant | SOD Order Content Code: Dial-up Deletion (138) |
| ODR_NAIYO_CD_142 | Constant | SOD Order Content Code: Multi-Session (Dynamic) Registration (142) |
| ODR_NAIYO_CD_143 | Constant | SOD Order Content Code: Multi-Session (Dynamic) Cancellation (143) |
| ODR_NAIYO_CD_144 | Constant | SOD Order Content Code: Multi-Session (Static) Registration (144) |
| ODR_NAIYO_CD_145 | Constant | SOD Order Content Code: Multi-Session (Static) Cancellation (145) |
| ODR_NAIYO_CD_152 | Constant | SOD Order Content Code: Fixed Global IP Address Registration (152) |
| ODR_NAIYO_CD_153 | Constant | SOD Order Content Code: Fixed Global IP Address Restoration (153) |
| ODR_NAIYO_CD_154 | Constant | SOD Order Content Code: Fixed Global IP Address Cancellation (154) |
| ODR_NAIYO_CD_161 | Constant | SOD Order Content Code: Multi-Session Restoration (161) |
| ODR_NAIYO_CD_162 | Constant | SOD Order Content Code: Multi-Session Selection Change (162) |
| ODR_NAIYO_CD_164 | Constant | SOD Order Content Code: Format Cell Registration (164) |
| ODR_NAIYO_CD_166 | Constant | SOD Order Content Code: Format Cell Cancellation (166) |
| ODR_NAIYO_CD_167 | Constant | SOD Order Content Code: Format Cell Deletion (167) |
| ODR_NAIYO_CD_211 | Constant | SOD Order Content Code: OLS Setup + Caller Number Notification Registration (211) |
| ODR_NAIYO_CD_212 | Constant | SOD Order Content Code: OLS Setup + Caller Number Notification Cancellation (212) |
| ODR_NAIYO_CD_218 | Constant | SOD Order Content Code: SIP Registration (Transfer, non-portable, Z1 not done) (218) |
| ODR_NAIYO_CD_225 | Constant | SOD Order Content Code: SIP Portable Information Registration (225) |
| ODR_NAIYO_CD_229 | Constant | SOD Order Content Code: SIP Cancellation (non-portable) (229) |
| ODR_NAIYO_CD_230 | Constant | SOD Order Content Code: SIP Deletion (non-portable) (230) |
| ODR_NAIYO_CD_231 | Constant | SOD Order Content Code: SIP Caller Number Notification Registration (231) |
| ODR_NAIYO_CD_232 | Constant | SOD Order Content Code: SIP Caller Number Notification Cancellation (232) |
| ODR_NAIYO_CD_234 | Constant | SOD Order Content Code: SIP Split Phone Registration (234) |
| ODR_NAIYO_CD_235 | Constant | SOD Order Content Code: SIP Split Phone Cancellation (235) |
| ODR_NAIYO_CD_236 | Constant | SOD Order Content Code: SIP Transfer Registration (236) |
| ODR_NAIYO_CD_237 | Constant | SOD Order Content Code: SIP Transfer Cancellation (237) |
| ODR_NAIYO_CD_238 | Constant | SOD Order Content Code: SIP Transfer Select Registration (238) |
| ODR_NAIYO_CD_239 | Constant | SOD Order Content Code: SIP Transfer Select Cancellation (239) |
| ODR_NAIYO_CD_240 | Constant | SOD Order Content Code: SIP Display Number Registration (240) |
| ODR_NAIYO_CD_241 | Constant | SOD Order Content Code: SIP Display Number Cancellation (241) |
| ODR_NAIYO_CD_242 | Constant | SOD Order Content Code: SIP Non-Notification Rejection Registration (242) |
| ODR_NAIYO_CD_243 | Constant | SOD Order Content Code: SIP Non-Notification Rejection Cancellation (243) |
| ODR_NAIYO_CD_244 | Constant | SOD Order Content Code: SIP Confusing Call Rejection Registration (244) |
| ODR_NAIYO_CD_245 | Constant | SOD Order Content Code: SIP Confusing Call Rejection Cancellation (245) |
| ODR_NAIYO_CD_246 | Constant | SOD Order Content Code: SIP Designated Number Rejection Registration (246) |
| ODR_NAIYO_CD_247 | Constant | SOD Order Content Code: SIP Designated Number Rejection Cancellation (247) |
| ODR_NAIYO_CD_253 | Constant | SOD Order Content Code: International Call Stop Registration (253) |
| ODR_NAIYO_CD_254 | Constant | SOD Order Content Code: International Call Stop Cancellation (254) |
| ODR_NAIYO_CD_265 | Constant | SOD Order Content Code: ENUM Setup Registration (265) |
| ODR_NAIYO_CD_266 | Constant | SOD Order Content Code: ENUM Deletion (266) |
| ODR_NAIYO_CD_411 | Constant | SOD Order Content Code: Multi-Function Router Setup Change (VA setup + Caller Number Notification) (411) |
| ODR_NAIYO_CD_412 | Constant | SOD Order Content Code: Multi-Function Router Setup Change (VA cancellation + Caller Number Notification) (412) |
| ODR_NAIYO_CD_425 | Constant | SOD Order Content Code: ANSHIN Caller ID Service Change (1-number attached) (425) |
| ODR_NAIYO_CD_426 | Constant | SOD Order Content Code: ANSHIN Caller ID Service Change (2-number attached) (426) |
| ODR_NAIYO_CD_124 | Constant | SOD Order Content Code: HP Access Analytics Registration (124) |
| EKK0351A010SC | SC Code | Optional Service Contract Agreement - retrieves optional service contract data |
| EKK0361A010SC | SC Code | Optional Service Contract <ISP> Agreement - retrieves ISP-specific optional service data |
| EKK0401A010SC | SC Code | Sub-Optional Service Contract Agreement - retrieves sub-optional service contract data |
| EKK0411A010SC | SC Code | Sub-Optional Service Contract <ISP> Agreement - retrieves ISP sub-optional service data |
| EKK0161B004SC | SC Code | Service Contract Detail List Agreement - retrieves service detail info |
| EKK0351B002SC | SC Code | Optional Service Contract List Agreement - retrieves optional service contract list |
| EKK0341B008SC | SC Code | Equipment-Provided Service Contract Agreement - retrieves equipment service contract data |
| EKK0191A010SC | SC Code | Service Contract Detail <eo Optical Phone> Agreement - retrieves service detail for eo optical phone |
| EKK0191B001_2SC | SC Code | Service Contract Detail List <eo Optical Phone> Alternate 2 - retrieves service detail list |
| EKK0251B001SC | SC Code | Service Wiring Detail List - retrieves service wiring information |
| EKK0161A010SC | SC Code | Service Contract Detail List (for fixed IP address lookup) |
| KK_T_OPSVKEI_AGREEMENT | Table | Optional service contract agreement table |
| KK_T_OPSVKEI_ISP | Table | Optional service contract <ISP> table |
| KK_T_SBOP_OPSVKEI | Table | Sub-optional service contract table |
| KK_T_SBOP_OPSVKEI_ISP | Table | Sub-optional service contract <ISP> table |
| KK_T_SVC_KEI_UCWK | Table | Service contract detail table |
| KK_T_KKTSVKEI | Table | Equipment-provided service contract table |
| KK_T_SVC_KEI_KAISEN | Table | Service wiring detail table |
| KK_T_ODR_HAKKO_JOKEN | Table | SOD order record table |
| FTTH | Business term | Fiber To The Home - fiber-optic broadband internet service |
| ISP | Business term | Internet Service Provider |
| VA | Business term | Voice Apparatus - NTT-provided indoor telephone equipment |
| SIP | Business term | Session Initiation Protocol - VoIP call setup protocol |
| ENUM | Business term | E.164 Number Mapping - maps telephone numbers to Internet addresses |
| OLS | Business term | Optical Line Terminal - fiber optic network termination equipment |
| IPV6 | Business term | Internet Protocol version 6 |
| EG | Business term | Equipment Gateway - used in EG switching (ido_div "00067") |
| VC | Business term | Virus Check (malware blocking) |
| MLAD | Field | Mail Address - email address for Email optional service |
| SBOP_SVC_CD_VIRUS | Constant | Sub-Optional Service Code for Virus Check (D03) |
| SBOP_SVC_CD_MLCAPA | Constant | Sub-Optional Service Code for Mail Box Capacity (D02) |
| SBOP_SVC_CD_ALIAS | Constant | Sub-Optional Service Code for Email Alias (D01) |
| SBOP_SVC_CD_HPACCESS | Constant | Sub-Optional Service Code for HP Access Analytics (D05) |
| SBOP_SVC_CD_HPCAPA | Constant | Sub-Optional Service Code for HP Capacity (D04) |
| SBOP_SVC_CD_TENSOSEL | Constant | Sub-Optional Service Code for Transfer Select |
| KEI_SVC_CTL_YOKYU_ODR_SKCD_PRIORITY_HIGH | Constant | Contract service control required order identification code: High priority |
| KEI_SVC_CTL_YOKYU_ODR_SKCD_PRIORITY_LOW | Constant | Contract service control required order identification code: Low priority |
| HAKKOSODCCWORKMAP | Constant | Work map key for param.getData() - stores order identification code for priority control |
| Z1 Order | Business term | Z1 order - number porting request order (Z1 indicates the number porting process) |
| Takino Router | Business term | Multi-function router (Takino-RT) - NTT's multi-function router supporting SIP, VoIP, and various features |
| ANSHIN Caller ID | Business term | ANSHIN Caller ID service - NTT East's caller ID service with additional features |
| 050 Number | Business term | 050 prefix number plate - a telephone number with 050 prefix for VoIP services |
| Number Porting | Business term | Number porting (bangō otoshi-kae) - transferring a telephone number to a different provider |
| Same Trn No | Field | Same Transaction Number - used to coordinate cancel+restore operations in the same batch |
| Z3 Order | Business term | Z3 order - a type of order processed after Z1 |
| Kiki Seizo No | Field | Device Serial Number - serial number of the equipment (phone, router) |
| isAddSodTrgtStat | Method | Helper method to check if a service status is a target for SOD issuance |
