# Business Logic — JKKAdchgCancelHakkoSODCC.jdgOdr163() [171 LOC]

| Field | Value |
|-------|-------|
| Fully Qualified Name | `com.fujitsu.futurity.bp.custom.common.JKKAdchgCancelHakkoSODCC` |
| Layer | CC / Common Component (Business logic helper, part of the SOD issuance framework) |
| Module | `common` (Package: `com.fujitsu.futurity.bp.custom.common`) |

## 1. Role

### JKKAdchgCancelHakkoSODCC.jdgOdr163()

This method generates **router-side connection information and modification Service Order Data (SOD)** for the "BBR not changed, ISP authentication ID changed" scenario (SOD issuance quality improvement initiative, 2013). It is invoked during the broader SOD issuance flow (`jdgOdr158`) when a subscriber's equipment provider contract (KKTSVKEI) exists and a valid device model/serial number can be identified, but the broadband router (BBR) itself has not been swapped.

The method implements a **conditional routing/dispatch pattern** based on the equipment provider service code:

- **BBR-only equipment (KKTK_SVC_CD_BBR = "C014")**: Issues an SOD with order content code `163` (router connection info change) via `tsuikabunAddSOD`.
- **Multi-function router (KKTK_SVC_CD_MFR = "C024") or Home Gateway (KKTK_SVC_CD_HGW = "C025")**: Queries the equipment operation service (KKOP) to check whether a router function is active on the equipment operation service contract. If found, it resolves the router's service contract number, performs a circuit inner-info confirmation via `runEKK0251A010`, and issues an SOD with order content code `404` (multi-function router setup/change - router function connection info change).

Before dispatching, the method validates that no DSL SOD has already been added for the same device (via `hasDslSodAdded`), returning early if a DSL cancellation/dissolution order already exists - this prevents duplicate or conflicting SODs. The method operates as a **shared utility** within the SOD issuance chain, called by the same-named method in `JKKAdchgHakkoSODCC` and `JKKHakkoSODCC` after equipment provider contract determination logic has populated the `sodMap` with the post-change equipment data.

## 2. Processing Pattern (Detailed Business Logic)

```mermaid
flowchart TD
    START(["jdgOdr163 params"])
    START --> GET_KIHON["Get kihon_info_Map from sodMap"]
    GET_KIHON --> SHKKA_KIHON["shkkaMap(kihon_info_Map)"]
    SHKKA_KIHON --> GET_SYORIDIV["Get syoriDiv from kihon_info_Map"]
    GET_SYORIDIV --> COND_SYORI{"syoriDiv == SYORI_DIV_ODR_163
\"BBR not change,
ISP ninsho Id change\""}
    COND_SYORI -->|false| END_RETURN["Return (no-op)"]
    COND_SYORI -->|true| GET_SVC_INFO["Get svc_kei_info_Map,
svc_kei_ucwk_info_Map,
kktsvkei_info_Map"]
    GET_SVC_INFO --> SHKKA_SVC["shkkaMap on each map"]
    SHKKA_SVC --> EXTRACT_FIELDS["Extract svc_kei_no,
svc_kei_ucwk_no, chbf_kktsvkei_no,
chbf_kktsvkei_gene_add_dtm"]
    EXTRACT_FIELDS --> COND_KKTCHK{"isBlank(chbf_kktsvkei_no)
or isBlank(chbf_kktsvkei_gene_add_dtm)"}
    COND_KKTCHK -->|true - Pre-change data missing| SEARCH_KKTSVKEI["Call EKK0341B008SC to
search KKTSVKEI by svc_kei_no"]
    COND_KKTCHK -->|false - Pre-change data exists| QUERY_KKTSVKEI["Call EKK0341A010SC to
query KKTSVKEI by chbf_kktsvkei_no"]
    SEARCH_KKTSVKEI --> LOOP_KKT["Loop through
EKK0341B022 result list"]
    QUERY_KKTSVKEI --> EXTRACT_KKT["Extract model_cd, seizing_no,
kktk_svc_cd, svc_kei_kaisen_ucwk_no"]
    LOOP_KKT --> KKT_TYPE_CHECK{"kktk_svc_cd ==
BBR or MFR or HGW"}
    KKT_TYPE_CHECK -->|true| SET_KKT_FIELDS["Set chbf_kktsvkei_no,
gene_add_dtm, model_cd, seizing_no"]
    SET_KKT_FIELDS --> END_LOOP["End loop iteration"]
    KKT_TYPE_CHECK -->|false| SKIP_KKT["Skip to next
iteration"]
    EXTRACT_KKT --> COND_MODEL{"kktsvkei_model_cd !=
blank AND kktsvkei_seizo_no !=
blank"}
    SET_KKT_FIELDS --> COND_MODEL
    SKIP_KKT --> COND_MODEL
    COND_MODEL -->|false| END_RETURN
    COND_MODEL -->|true| SET_IPV6["Set IPv6 instance fields:
op_svc_kei_no_ipv6=null,
ipv6_svc_kei_ucwk_no,
ipv6_kktk_svc_kei_no,
taknkiki_model_cd_ipv6,
kiki_seizo_no_ipv6"]
    SET_IPV6 --> DSL_CHECK{hasDslSodAdded param,
kktk_svc_kei_no,
kktk_svc_cd}
    DSL_CHECK -->|true - DSL SOD
already added| EARLY_RETURN["Return early"]
    DSL_CHECK -->|false| KKT_SVC_TYPE{"kktk_svc_cd != MFR
AND != HGW"}
    EARLY_RETURN --> END_RETURN
    KKT_SVC_TYPE -->|true - BBR only| TSUIKABUN_163["tsuikabunAddSOD with
ODR_NAIYO_CD_163 = \"163\"
Router connection info change"]
    TSUIKABUN_163 --> END_RETURN
    KKT_SVC_TYPE -->|false - MFR or HGW| RUN_EKK2811["runEKK2811B010 to
search KKOP SVC list"]
    RUN_EKK2811 --> GET_BBR_REC["getKkOpSvcRec with
KKOP_SVC_CD_BBR = \"G01\""]
    GET_BBR_REC --> COND_BBR_REC{"ekk2811b010Map
!= null"}
    COND_BBR_REC -->|null - No BBR on KKOP| END_RETURN
    COND_BBR_REC -->|not null| SET_ROUTER_FIELDS["Set kkop_svc_kei_router,
kkop_svc_kei_router_gadtm,
kkop_svc_kei_va=\"\", kkop_svc_kei_va_gadtm,
svc_kei_kaisen_ucwk_no"]
    SET_ROUTER_FIELDS --> RUN_EKK0251["runEKK0251A010 to
confirm circuit inner-info"]
    RUN_EKK0251 --> SET_GADTM["Set svc_kei_kaisen_ucwk_gadtm
from GENE_ADD_DTM"]
    SET_GADTM --> TSUIKABUN_404["tsuikabunAddSOD with
ODR_NAIYO_CD_404 = \"404\"
Multi-function router setup/change"]
    TSUIKABUN_404 --> END_RETURN
    END_RETURN --> FINISH(["End"])
```

## 3. Parameter Analysis

| No | Parameter Name | Type | Business Description |
|----|---------------|------|---------------------|
| 1 | `handle` | `SessionHandle` | Database session handle used for service component invocations. Carries the transactional context and database connection for all SC calls within this method. |
| 2 | `param` | `IRequestParameterReadWrite` | Request parameter object carrying SOD issuance data. It is the primary vehicle through which the output SOD data is accumulated (via `tsuikabunAddSOD` returning a modified `param`). |
| 3 | `sodMap` | `HashMap<String, Object>` | SOD context map containing nested sub-maps: `SOD_KIHON_INFO` (processing info including `syoriDiv`), `SVC_KEI_INFO` (service contract header), `SVC_KEI_UCWK_INFO` (service contract detail work info including pre-change data), and `KKTSVKEI_INFO` (equipment provider contract info). |

**Instance fields read/written by this method:**

| Field | Type | Usage |
|-------|------|-------|
| `op_svc_kei_no_ipv6` | `String[]` | Set to `null` as part of IPv6 field initialization (line 23356) |
| `op_gadtm_ipv6` | `String[]` | Set to `null` as part of IPv6 field initialization |
| `ipv6_svc_kei_ucwk_no` | `String` | Set to pre-change service contract detail work number |
| `ipv6_svc_kei_ucwk_gadtm` | `String` | Set to pre-change service contract detail work generation registration timestamp |
| `ipv6_kktk_svc_kei_no` | `String` | Set to pre-change equipment provider contract number |
| `ipv6_kktk_svc_kei_gadtm` | `String` | Set to pre-change equipment provider contract generation registration timestamp |
| `taknkiki_model_cd_ipv6` | `String` | Set to device model code from KKTSVKEI |
| `kiki_seizo_no_ipv6` | `String` | Set to device serial number (seizing/production number) |
| `kkop_svc_kei_router` | `String[]` | Set to KKOP service contract number (router) when multi-function router path is taken |
| `kkop_svc_kei_router_gadtm` | `String[]` | Set to KKOP generation registration date (router) |
| `kkop_svc_kei_va` | `String[]` | Set to empty string `""` for VA (virtual access?) |
| `kkop_svc_kei_va_gadtm` | `String[]` | Set to empty string `""` for VA generation date |
| `svc_kei_kaisen_ucwk_no` | `String` | Set to circuit inner-info detail work number from KKTSVKEI query |
| `svc_kei_kaisen_ucwk_gadtm` | `String` | Set to confirmation generation date from EKK0251A010 result |

## 4. CRUD Operations / Called Services

| CRUD | SC / CBS | SC Code | Entity / DB | Operation Description |
|------|----------|---------|-------------|----------------------|
| R | `JKKAdchgCancelHakkoSODCC.callEKK0341B008SC` | EKK0341B008SC | KKTSVKEI (Equipment Provider Contract) | Searches for equipment provider contracts by service contract number (`svc_kei_no`) when pre-change equipment data is missing. Returns list of KKTSVKEI records. |
| R | `JKKAdchgCancelHakkoSODCC.callEKK0341A010SC` | EKK0341A010SC | KKTSVKEI (Equipment Provider Contract) | Queries equipment provider contract by pre-change contract number (`chbf_kktsvkei_no`) and generation date (`chbf_kktsvkei_gene_add_dtm`). Returns model code, serial number, equipment service code, and circuit inner-info work number. |
| - | `JKKAdchgCancelHakkoSODCC.hasDslSodAdded` | - | - | Checks whether a DSL-related SOD has already been added for the same device. Returns `true` if so, causing early exit. |
| - | `JKKAdchgCancelHakkoSODCC.isBlank` | - | - | Utility method that checks if a string is null or empty (whitespace-only). Used for validation throughout. |
| - | `JKKAdchgCancelHakkoSODCC.shkkaMap` | - | - | Helper method that processes/refreshes a HashMap (likely clears or re-initializes it). |
| - | `JKKAdchgCancelHakkoSODCC.runEKK2811B010` | EKK2811B010SC | KKOP_SVC (Equipment Operation Service Contract) | Queries the equipment operation service contract list for the given equipment provider contract number. Returns `ArrayList<HashMap>` of KKOP service records. |
| - | `JKKAdchgCancelHakkoSODCC.getKkOpSvcRec` | - | - | Filters KKOP service record list by service code (KKOP_SVC_CD_BBR = "G01"). Returns map with BBR-related KKOP contract data. |
| - | `JKKAdchgCancelHakkoSODCC.runEKK0251A010` | EKK0251A010SC | SVC_KEI_KAISEN_UCWK (Circuit Inner-Info Detail Work) | Performs confirmation of circuit inner-info and retrieves the generation registration date (`GENE_ADD_DTM`). |
| C | `JKKAdchgCancelHakkoSODCC.tsuikabunAddSOD` | - | SOD (Service Order Data) | Appends a new SOD entry to the request parameters with the given order content code (163 or 404). Used twice: once for BBR-only path (code 163) and once for multi-function router path (code 404). |

## 5. Dependency Trace

### Pre-computed evidence from code analysis graph:

**Direct callers of `jdgOdr163` in this class (JKKAdchgCancelHakkoSODCC): 1**

| # | Caller (Screen/Batch) | Call Chain (Full Path to this Method) | Terminal (SC / CRUD / Entity) |
|---|----------------------|--------------------------------------|-------------------------------|
| 1 | CBS:JKKAdchgCancelHakkoSODCC.jdgOdr158 | `jdgOdr158(handle, param, sodMap)` -> `jdgOdr163(handle, param, sodMap)` | `tsuikabunAddSOD [C] SOD`, `runEKK0251A010 [R] SVC_KEI_KAISEN_UCWK`, `callEKK0341A010SC [R] KKTSVKEI`, `callEKK0341B008SC [R] KKTSVKEI`, `runEKK2811B010 [R] KKOP_SVC` |

### Callers in sibling/related classes (JKKAdchgHakkoSODCC and JKKHakkoSODCC):

| # | Caller (Screen/Batch) | Call Chain (Full Path to this Method) | Terminal (SC / CRUD / Entity) |
|---|----------------------|--------------------------------------|-------------------------------|
| 2 | CBS:JKKAdchgHakkoSODCC.jdgOdr158 | `jdgOdr158(handle, param, sodMap)` -> `jdgOdr163(handle, param, sodMap)` | `tsuikabunAddSOD [C] SOD`, `runEKK0251A010 [R] SVC_KEI_KAISEN_UCWK`, `callEKK0341A010SC [R] KKTSVKEI` |
| 3 | CBS:JKKHakkoSODCC.jdgOdr158 | `jdgOdr158(handle, param, sodMap)` -> `jdgOdr163(handle, param, sodMap)` | `tsuikabunAddSOD [C] SOD`, `runEKK0251A010 [R] SVC_KEI_KAISEN_UCWK`, `runEKK2811B010 [R] KKOP_SVC` |

**Terminal operations from this method (all leaf-level business effects):**
- `tsuikabunAddSOD` - Creates SOD entries (two possible order content codes: 163, 404)
- `runEKK0251A010` - Reads circuit inner-info confirmation data
- `callEKK0341A010SC` / `callEKK0341B008SC` - Reads equipment provider contract data
- `runEKK2811B010` - Reads equipment operation service contract list
- `hasDslSodAdded` - Guard check (early-return condition)

## 6. Per-Branch Detail Blocks

**Block 1** — IF `(syoriDiv == SYORI_DIV_ODR_163 = "BBR not change, ISP ninsho Id change")` (L23241)

> The method entry gate. If the processing division does not match, the method returns immediately without any side effects. This is the primary filter that routes SOD issuance to this specific handler.

| # | Type | Code |
|---|------|------|
| 1 | SET | `kihon_info_Map = (HashMap)sodMap.get(SOD_KIHON_INFO)` // Get basic info map |
| 2 | EXEC | `kihon_info_Map = shkkaMap(kihon_info_Map)` // Refresh basic info map |
| 3 | SET | `syoriDiv = (String)kihon_info_Map.get(INFO_KKSV0202_SYORI_DIV)` // Processing division code |
| 4 | IF | `syoriDiv == SYORI_DIV_ODR_163` [SYORI_DIV_ODR_163 = "BBR not change, ISP ninsho Id change"] |

**Block 1.1** — IF body: service contract info extraction (L23244-L23251)

> Within the matched branch, extract service contract header and detail work info maps, then extract key identifiers.

| # | Type | Code |
|---|------|------|
| 1 | SET | `svc_kei_info_Map = (HashMap)sodMap.get(SVC_KEI_INFO)` |
| 2 | EXEC | `svc_kei_info_Map = shkkaMap(svc_kei_info_Map)` |
| 3 | SET | `svc_kei_no = (String)svc_kei_info_Map.get(INFO_SVC_KEI_NO)` // Service contract number |
| 4 | SET | `svc_kei_ucwk_info_Map = (HashMap)sodMap.get(SVC_KEI_UCWK_INFO)` |
| 5 | EXEC | `svc_kei_ucwk_info_Map = shkkaMap(svc_kei_ucwk_info_Map)` |
| 6 | SET | `svc_kei_ucwk_no = (String)svc_kei_ucwk_info_Map.get(INFO_SVC_KEI_UCWK_NO)` // Pre-change service contract detail work number |
| 7 | SET | `chbf_svc_kei_ucwk_gene_add_dtm = (String)svc_kei_ucwk_info_Map.get(INFO_CHBF_SVC_KEI_UCWK_GENE_ADD_DTM)` // Pre-change generation registration datetime |
| 8 | SET | `kktsvkei_info_Map = (HashMap)sodMap.get(KKTSVKEI_INFO)` |
| 9 | EXEC | `kktsvkei_info_Map = shkkaMap(kktsvkei_info_Map)` |

**Block 1.2** — Field extraction from kktsvkei_info_Map (L23253-L23275)

> Extract pre-change equipment provider contract data. Initialize new variables added by the IT1-2013-0001749 (ANK-1578-00-00) modification for multi-function router support.

| # | Type | Code |
|---|------|------|
| 1 | SET | `chbf_kktsvkei_no = (String)kktsvkei_info_Map.get(INFO_CHBF_KKTSVKEI_NO)` // Pre-change equipment provider contract number |
| 2 | SET | `chbf_kktsvkei_gene_add_dtm = (String)kktsvkei_info_Map.get(INFO_CHBF_KKTSVKEI_GENE_ADD_DTM)` // Pre-change generation registration datetime |
| 3 | SET | `kktsvkei_model_cd = null` // Device model code (IT1-2013-0001749 ADD) |
| 4 | SET | `kktsvkei_seizo_no = null` // Device serial/seizing number (IT1-2013-0001749 ADD) |
| 5 | SET | `kktk_svc_cd = null` // Equipment provider service code (IT1-2013-0001749 ADD) |
| 6 | SET | `svc_kei_kaisen_ucwk_no = null` // Circuit inner-info detail work number (IT1-2013-0001749 ADD) |
| 7 | SET | `kkop_svc_kei_srch_list = null` // Equipment operation service contract search result list (IT1-2013-0001749 ADD) |

**Block 1.3** — IF `(isBlank(chbf_kktsvkei_no) OR isBlank(chbf_kktsvkei_gene_add_dtm))` (L23279)

> When pre-change equipment provider contract data is missing (both contract number and generation date), the method searches for the equipment provider contract using the service contract number alone. This branch handles cases where the pre-change data was not populated.

| # | Type | Code |
|---|------|------|
| 1 | SET | `inHashKktk = new HashMap()` // Input map for search |
| 2 | SET | `resultHashKktk = new HashMap()` // Result map |
| 3 | SET | `inHashKktk.put(SVC_KEI_NO, svc_kei_no)` // Service contract number |
| 4 | EXEC | `statusCode = callEKK0341B008SC(param, handle, inHashKktk, resultHashKktk, FUNC_CODE_1)` [FUNC_CODE_1 = "1"] |
| 5 | IF | `statusCode != 0` -> `throw new CCException("...", new SCCallException("...", String.valueOf(statusCode), statusCode))` |
| 6 | SET | `msgEKK0341B008SCList = (CAANMsg[])resultHashKktk.get(TEMPLATE_ID_EKK0341B022)` |
| 7 | FOR | `i = 0; i < msgEKK0341B008SCList.length; i++` |

**Block 1.3.1** — FOR body: iterate KKTSVKEI search results (L23291-L23318)

> For each returned KKTSVKEI record, check if it matches BBR, multi-function router (MFR), or home gateway (HGW). If it matches, extract fields and break.

| # | Type | Code |
|---|------|------|
| 1 | SET | `eKK0341B008SCHash = msgEKK0341B008SCList[i].getMsgData()` |
| 2 | SET | `tmp_kktk_svc_cd = (String)eKK0341B008SCHash.get(KKTK_SVC_CD)` // Equipment provider service code |
| 3 | IF | `tmp_kktk_svc_cd == BBR("C014") or MFR("C024") or HGW("C025")` |
| 4 | SET | `chbf_kktsvkei_no = (String)eKK0341B008SCHash.get(KKTK_SVC_KEI_NO)` |
| 5 | SET | `chbf_kktsvkei_gene_add_dtm = (String)eKK0341B008SCHash.get(GENE_ADD_DTM)` |
| 6 | SET | `kktsvkei_model_cd = (String)eKK0341B008SCHash.get(TAKNKIKI_MODEL_CD)` |
| 7 | SET | `kktsvkei_seizo_no = (String)eKK0341B008SCHash.get(KIKI_SEIZO_NO)` |
| 8 | EXEC | `break` |

**Block 1.4** — ELSE: existing pre-change data path (L23320-L23336)

> When pre-change equipment provider contract data exists, directly query the KKTSVKEI table using the contract number and generation date. This is the more common path.

| # | Type | Code |
|---|------|------|
| 1 | SET | `inHashKktk = new HashMap()` |
| 2 | SET | `resultHashKktk = new HashMap()` |
| 3 | SET | `inHashKktk.put(KKTK_SVC_KEI_NO, chbf_kktsvkei_no)` |
| 4 | SET | `inHashKktk.put(GENE_ADD_DTM, chbf_kktsvkei_gene_add_dtm)` |
| 5 | CALL | `callEKK0341A010SC(param, handle, inHashKktk, resultHashKktk, FUNC_CODE_1)` |
| 6 | SET | `chafEKK0341A010SCHash = (HashMap)resultHashKktk.get(TEMPLATE_ID_EKK0341A010)` |
| 7 | SET | `kktsvkei_model_cd = (String)chafEKK0341A010SCHash.get(TAKNKIKI_MODEL_CD)` |
| 8 | SET | `kktsvkei_seizo_no = (String)chafEKK0341A010SCHash.get(KIKI_SEIZO_NO)` |
| 9 | SET | `kktk_svc_cd = (String)chafEKK0341A010SCHash.get(KKTK_SVC_CD)` // IT1-2013-0001749 ADD |
| 10 | SET | `svc_kei_kaisen_ucwk_no = (String)chafEKK0341A010SCHash.get(SVC_KEI_KAISEN_UCWK_NO)` // IT1-2013-0001749 ADD |

**Block 1.5** — IF `(kktsvkei_model_cd != blank AND kktsvkei_seizo_no != blank)` (L23338)

> If both device model code and serial number are available, proceed to set IPv6-related instance fields and determine which SOD to issue. This is the main processing pivot.

| # | Type | Code |
|---|------|------|
| 1 | SET | `this.op_svc_kei_no_ipv6 = null` |
| 2 | SET | `this.op_gadtm_ipv6 = null` |
| 3 | SET | `this.ipv6_svc_kei_ucwk_no = svc_kei_ucwk_no` |
| 4 | SET | `this.ipv6_svc_kei_ucwk_gadtm = chbf_svc_kei_ucwk_gene_add_dtm` |
| 5 | SET | `this.ipv6_kktk_svc_kei_no = chbf_kktsvkei_no` |
| 6 | SET | `this.ipv6_kktk_svc_kei_gadtm = chbf_kktsvkei_gene_add_dtm` |
| 7 | SET | `this.taknkiki_model_cd_ipv6 = kktsvkei_model_cd` |
| 8 | SET | `this.kiki_seizo_no_ipv6 = kktsvkei_seizo_no` |

**Block 1.5.1** — IF `(hasDslSodAdded(...))` (L23353-L23356, IT2-2014-0000180 ADD)

> Early-return guard: if a DSL-related SOD (e.g., FTTH cancellation/dissolution) has already been added for this device, skip issuing the router SOD entirely. This prevents conflicting orders.

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `if (hasDslSodAdded(param, chbf_kktsvkei_no, kktsvkei_model_cd, kktsvkei_seizo_no, kktk_svc_cd))` |
| 2 | RETURN | `return;` (do not issue router SOD) |

**Block 1.5.2** — IF `(kktk_svc_cd != MFR("C024") AND != HGW("C025"))` (L23362-L23365)

> BBR-only path: When the equipment is standard BBR (not multi-function router or home gateway), issue a simple router connection info change SOD with order content code 163.

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `param = tsuikabunAddSOD(handle, param, ODR_NAIYO_CD_163)` [ODR_NAIYO_CD_163 = "163" - Router connection info change] |

**Block 1.5.3** — ELSE: multi-function router path (MFR or HGW) (L23366-L23393)

> For multi-function routers (MFR = "C024") or home gateways (HGW = "C025"): query the equipment operation service (KKOP) list to check if a router function is active. If so, resolve the router's service contract info, perform circuit inner-info confirmation, and issue SOD with order content code 404.

| # | Type | Code |
|---|------|------|
| 1 | CALL | `kkop_svc_kei_srch_list = runEKK2811B010(param, handle, chbf_kktsvkei_no)` // Equipment operation SVC list search (equipment provider SV) |
| 2 | CALL | `ekk2811b010Map = getKkOpSvcRec(kkop_svc_kei_srch_list, KKOP_SVC_CD_BBR, true)` // Find router function SVC record [KKOP_SVC_CD_BBR = "G01"] |
| 3 | IF | `ekk2811b010Map != null` (router function exists on KKOP) |
| 4 | SET | `this.kkop_svc_kei_router[0] = (String)ekk2811b010Map.get(KKOP_SVC_KEI_NO)` |
| 5 | SET | `this.kkop_svc_kei_router_gadtm[0] = (String)ekk2811b010Map.get(GENE_ADD_DTM)` |
| 6 | SET | `this.kkop_svc_kei_va[0] = ""` // KKOP SVC contract number (VA) |
| 7 | SET | `this.kkop_svc_kei_va_gadtm[0] = ""` // KKOP SVC contract (VA) generation date |
| 8 | SET | `this.svc_kei_kaisen_ucwk_no = svc_kei_kaisen_ucwk_no` // Circuit inner-info detail work number |
| 9 | CALL | `ekk0251a010Map = runEKK0251A010(param, handle, this.svc_kei_kaisen_ucwk_no)` // Confirm circuit inner-info |
| 10 | SET | `this.svc_kei_kaisen_ucwk_gadtm = (String)ekk0251a010Map.get(GENE_ADD_DTM)` |
| 11 | EXEC | `param = tsuikabunAddSOD(handle, param, ODR_NAIYO_CD_404)` [ODR_NAIYO_CD_404 = "404" - Multi-function router setup/change (router function connection info change)] |

## 7. Glossary

| Term | Type | Business Meaning |
|------|------|------------------|
| SOD | Acronym | Service Order Data - telecom order fulfillment entity representing a service change registration request |
| SYORI_DIV_ODR_163 | Constant | Processing division code "BBR not change, ISP ninsho Id change" - identifies the scenario where the broadband router is not being replaced but the ISP authentication ID is changing |
| ODR_NAIYO_CD | Field | Order content code - classifies the type of order (e.g., 163 = router connection info change, 404 = multi-function router setup/change) |
| ODR_NAIYO_CD_163 | Constant | "163" - Router connection information change SOD |
| ODR_NAIYO_CD_404 | Constant | "404" - Multi-function router setup/change (router function connection info change) SOD |
| KKTSVKEI | Entity/Table | KKTSVKEI - Equipment Provider Contract entity/DB table. Holds records of contracts for equipment provided by the carrier (broadband routers, gateways, etc.) |
| KKTSVKEI_INFO | Map Key | Key in sodMap for the equipment provider contract info sub-map |
| KKTK_SVC_CD_BBR | Constant | "C014" - Equipment provider service code for standard broadband router (BBR) |
| KKTK_SVC_CD_MFR | Constant | "C024" - Equipment provider service code for multi-function router (MFR) |
| KKTK_SVC_CD_HGW | Constant | "C025" - Equipment provider service code for home gateway (HGW) |
| KKOP_SVC | Entity/Table | KKOP_SVC - Equipment Operation Service Contract entity/DB table. Holds records of equipment-level operation service contracts (e.g., router functions) |
| KKOP_SVC_CD_BBR | Constant | "G01" - Equipment operation service code for BBR |
| KKOP_SVC_KEI_NO | Field | KKOP service contract number - identifies a specific equipment operation service contract record |
| KKOP_SVC_KEI | Field | KKOP service contract number (VA) - virtual access variant |
| KKTK_SVC_KEI_NO | Field | Equipment provider service contract number |
| TAKNKIKI_MODEL_CD | Field | Device model code - hardware model identifier for the equipment provider device |
| KIKI_SEIZO_NO | Field | Device serial/seizing number (production number) - unique hardware identifier |
| SOD_KIHON_INFO | Map Key | Key in sodMap for the basic info sub-map containing processing metadata |
| SVC_KEI_INFO | Map Key | Key in sodMap for the service contract header info sub-map |
| SVC_KEI_UCWK_INFO | Map Key | Key in sodMap for the service contract detail work info sub-map |
| INFO_SVC_KEI_NO | Field | Service contract number - primary identifier for a service contract line item |
| INFO_SVC_KEI_UCWK_NO | Field | Service contract detail work number - internal tracking ID for service contract line item changes |
| INFO_CHBF_SVC_KEI_UCWK_GENE_ADD_DTM | Field | Pre-change service contract detail work generation registration timestamp |
| INFO_CHBF_KKTSVKEI_NO | Field | Pre-change equipment provider contract number |
| INFO_CHBF_KKTSVKEI_GENE_ADD_DTM | Field | Pre-change equipment provider contract generation registration datetime |
| INFO_KKSV0202_SYORI_DIV | Field | Processing division field from KKSV0202 - determines which SOD issuance branch to take |
| KIHON_INFO | Field | Basic information sub-map key |
| chbf | Abbreviation | Pre-change (変更前) - refers to data from before the current modification |
| chaf | Abbreviation | Post-change (変更後) - refers to data from after the current modification |
| genkai | Field | Circuit inner-info - internal circuit configuration data associated with a service contract |
| genkai_ucwk_no | Field | Circuit inner-info detail work number |
| gen_add_dtm | Field | Generation registration date/time - timestamp when a contract record was created or last modified |
| hasDslSodAdded | Method | Guard method that checks whether a DSL-related SOD has already been added for a device |
| shkkaMap | Method | Map refresh/initialization helper - likely clears or re-populates a HashMap |
| tsuikabunAddSOD | Method | Appends (追加) a new SOD entry to the request parameters with a specified order content code |
| EKK0341A010SC | SC Code | Equipment provider contract single-query service component |
| EKK0341B008SC | SC Code | Equipment provider contract list-search service component |
| EKK0251A010SC | SC Code | Circuit inner-info confirmation service component |
| EKK2811B010SC | SC Code | Equipment operation service contract list-search service component |
| FUNC_CODE_1 | Constant | "1" - Function code used for service component calls |
| IPv6 | Business term | Internet Protocol version 6 - the method sets instance fields related to IPv6 service provisioning |
| ISP | Acronym | Internet Service Provider - the entity providing internet connectivity |
| FTTH | Business term | Fiber To The Home - fiber-optic broadband service type |
| BBR | Acronym | Broadband Router - the customer-premises device that provides internet connectivity |
| MFR | Acronym | Multi-function Router - a router with additional capabilities (e.g., wireless AP, firewall) |
| HGW | Acronym | Home Gateway - a residential gateway device combining router, modem, and often VoIP functionality |
