# Business Logic — JKKAdchgHakkoSODCC.adchgOdrCtrl() [622 LOC]

| Field | Value |
|-------|-------|
| Fully Qualified Name | `com.fujitsu.futurity.bp.custom.common.JKKAdchgHakkoSODCC` |
| Method | `adchgOdrCtrl` |
| Layer | CC / Common Component (Business Logic Coordination) |
| Module | `common` (Package: `com.fujitsu.futurity.bp.custom.common`) |
| File | `source/koptBp/ejbModule/com/fujitsu/futurity/bp/custom/common/JKKAdchgHakkoSODCC.java` |
| Line Range | 24706-25327 |

## 1. Role

### JKKAdchgHakkoSODCC.adchgOdrCtrl()

This method implements the **Location Change Order Control Processing** (利用場所変更オーダー制御処理), which is the central orchestrator for determining and issuing Service Order Data (SOD) during telecom service contract modifications triggered by customer address changes (住所変更登録) or DSL termination (撤去完了). It serves as a **dispatch router** that branches based on the `odr_exec_div` parameter (execution trigger type) and the active **operation service types** (e.g., Multi-Choice Selection, Dynamic DupConn, IPv6, BBR router, Multi-Function Router, Home Gateway) to determine which service-level orders (cancellation, deletion, re-registration) must be issued.

The method handles two primary business scenarios: **(1) Address Change Registration** (ODR_EXEC_DIV_AD_CHG = "1"), where it fetches both pre-change and post-change service contracts, resolves the new service number mapping, issues new FTTH authentication SOD for the new contract, and updates the work map accordingly; and **(2) DSL Termination** (ODR_EXEC_DIV_DSL_END = "2"), where it processes router authentication ID release/deletion for BBR and multi-function router services, as well as IPv6 and multi-choice selection service teardown orders.

Design patterns used: **Strategy pattern** (branching by `odr_exec_div` and `opSvcCd`/`kktk_svc_cd` to dispatch different business treatments), **Builder pattern** (accumulating multiple SODs into the parameter object via `addSOD`/`tsuikabunAddSOD`), and **Delegation** (all service calls delegated to specific SC methods like `callEKK0081A010SC`, `callEKK0351A010SC`).

The method sets instance fields (`this.*`) as output — it does not return data through the return value but mutates the object state. The returned `param` is the same object passed in, with its internal data map modified.

## 2. Processing Pattern (Detailed Business Logic)

```mermaid
flowchart TD
    START(["adchgOdrCtrl(params)"])

    START --> INIT["Initialize HashMaps and Extract Service Data from sodMap"]
    INIT --> CHECK1{"Post-op Service Info exists?"}
    CHECK1 -- Yes --> SC1["EKK0351A010SC - Post-op Service Agreement"]
    SC1 --> CHECK2{"Pre-device Service Info exists?"}
    CHECK1 -- No --> CHECK2
    CHECK2 -- Yes --> SC2["EKK0341A010SC - Pre-device Provision Service"]
    SC2 --> CHECK3{"Pre Service Contract Info exists?"}
    CHECK2 -- No --> CHECK3
    CHECK3 -- Yes --> SC3["EKK0081A010SC - Service Agreement (Pre)"]
    SC3 --> CHECK4{"Post Service Contract Info exists?"}
    CHECK3 -- No --> CHECK4
    CHECK4 -- Yes --> SC4["EKK0081A010SC - Service Agreement (Post)"]
    CHECK4 -- No --> CHECK5{"opSvcCd equals B015?"}
    SC4 --> CHECK5

    CHECK5 -- Yes --> CHECK5A{"Not mansion private?"}
    CHECK5A -- No --> CHECK7{"opSvcCd equals B020?"}
    CHECK5A -- Yes --> PAUSE["pauseJdg - Check Service Pause Status"]
    PAUSE --> PAUSE_JUDGE{"PAUSE_JDG_CD_1?"}
    PAUSE_JUDGE -- Yes --> SOD_MS_SUSP["addSOD: FTTH Auth Stop/Release, Mltise Release, FTTH Auth TempStop"]
    SOD_MS_SUSP --> CHECK7
    PAUSE_JUDGE -- No --> SOD_MS_REL["addSOD: Mltise Static Release"]
    SOD_MS_REL --> CHECK7

    CHECK7 -- Yes --> DIAL["getSame_trn_no, addSOD: DupConn Release + Delete"]
    DIAL --> CHECK9{"opSvcCd equals B070?"}
    CHECK7 -- No --> CHECK9
    CHECK9 -- Yes --> IPV6["IPv6 Flow: getSame_trn_no, runEKK2811B010, getKkOpSvcRec, runEKK0251A010, tsuikabunAddSOD for Router change, IPv6 release + delete"]
    IPV6 --> CHECK_DEVICE

    CHECK9 -- No --> CHECK_DEVICE{"kktk_svc_cd equals C014 (BBR)?"}
    CHECK_DEVICE -- Yes --> DSL_END_BBR{"odr_exec_div = 2 (DSL End)?"}
    DSL_END_BBR -- Yes --> ROUTER_SOD["addSOD: Router Auth ID Release + Delete (if not exists)"]
    DSL_END_BBR -- No --> CHECK_MFR
    CHECK_DEVICE -- No --> CHECK_MFR{"kktk_svc_cd = C024 (MultiRouter) or C025 (HGW)?"}
    CHECK_MFR -- Yes --> DSL_END_MFR{"odr_exec_div = 2?"}
    DSL_END_MFR -- Yes --> MFR_FLOW["runEKK2811B010, getKkOpSvcRec, runEKK0251A010, addSOD: Multi-Router auth ID release + delete"]
    DSL_END_MFR -- No --> CHECK_DSL_END
    CHECK_MFR -- No --> CHECK_DSL_END{"odr_exec_div = 2?"}
    CHECK_DSL_END -- Yes --> SVC_CHECK{"isChgPlaceZumi false?"}
    CHECK_DSL_END -- No --> END_RETURN
    SVC_CHECK -- Yes --> NOT_MANSION2{"Not mansion private?"}
    NOT_MANSION2 -- No --> END_RETURN
    NOT_MANSION2 -- Yes --> SVC_161["EKK0161B004SC, addSOD: FTTH Auth Release"]
    SVC_161 --> CHECK_AD_CHG{"odr_exec_div = 1?"}
    SVC_CHECK -- No --> END_RETURN
    CHECK_AD_CHG -- Yes --> AD_CHECK{"isChgPlaceZumi false?"}
    CHECK_AD_CHG -- No --> END_RETURN
    AD_CHECK -- Yes --> AD_FLOW["callEKK2101B001SC, EKK0161B004SC, EKK0891A010_SC, addSOD: FTTH Auth New, addSODFtthNew"]
    AD_CHECK -- No --> END_RETURN
    AD_FLOW --> END_RETURN
    ROUTER_SOD --> END_RETURN
    MFR_FLOW --> END_RETURN
    END_RETURN(["Return param"])
```

### Branch Summary

| Branch | Condition (CONSTANT) | Business Description |
|--------|---------------------|---------------------|
| Pre-op service fetch | `chaf_opsvkei_no` + `chaf_opsvkei_gene_add_dtm` not blank | Fetch post-operation service agreement via EKK0351A010SC |
| Pre-device fetch | `chbf_kktsvkei_no` + `chbf_kktsvkei_gene_add_dtm` not blank | Fetch pre-device provision service via EKK0341A010SC |
| Pre service fetch | `svc_kei_no` + `chbf_svc_kei_gene_add_dtm` not blank | Fetch pre service contract via EKK0081A010SC |
| Post service fetch | `saki_svc_kei_no` + `chaf_svc_kei_gene_add_dtm` not blank | Fetch post service contract via EKK0081A010SC |
| B015 Mltise | `OP_SVC_CD_MLTISE = "B015"` | Multi-Choice Selection service - check pause status, issue release/stop SODs |
| B020 DupConn | `OP_SVC_CD_DUP = "B020"` | Dynamic DupConnection - issue release and delete SODs |
| B070 IPv6 | `OP_SVC_CD_IPV6 = "B070"` | IPv6 Access - issue router change, IPv6 release and delete SODs |
| C014 BBR | `KKTK_SVC_CD_BBR = "C014"` + `ODR_EXEC_DIV_DSL_END = "2"` | BBR Router - issue router auth ID release and delete SODs |
| C024/C025 MultiRouter/HGW | `KKTK_SVC_CD_MFR = "C024"` or `KKTK_SVC_CD_HGW = "C025"` + `ODR_EXEC_DIV_DSL_END = "2"` | Multi-Function Router / Home Gateway - issue auth ID release SODs |
| DSL End | `ODR_EXEC_DIV_DSL_END = "2"` | DSL Termination - issue FTTH Auth Release for non-mansion services |
| Address Change | `ODR_EXEC_DIV_AD_CHG = "1"` | Address Change - resolve new service mapping, issue FTTH Auth New |

## 3. Parameter Analysis

| No | Parameter Name | Type | Business Description |
|----|---------------|------|---------------------|
| 1 | `handle` | `SessionHandle` | Session manager handle providing database and transaction context for SC calls |
| 2 | `param` | `IRequestParameterReadWrite` | Request parameter object containing model group and control map; carries SOD work data (HAKKOSODCCWORKMAP) and serves as the output container for accumulated SODs |
| 3 | `sodMap` | `HashMap<String, Object>` | Service Order Data map containing service contract info (`SVC_KEI_INFO`), service detail info (`SVC_KEI_UCWK_INFO`), operation service info (`OPSVKEI_INFO`), device provision service info (`KKTSVKEI_INFO`), and address change info (`adchg_no`, `chaf_svc_kei_kaisen_ucwk_no`) |
| 4 | `odr_exec_div` | `String` | Order execution trigger code that determines the business scenario: `"1"` for Address Change Registration (住所変更登録), `"2"` for DSL Termination (撤去完了) |

### Instance Fields Read/Written

| Field | Access | Business Meaning |
|-------|--------|------------------|
| `this.op_svc_kei_no_mltise` | Write | Post-op service number for Multi-Choice Selection |
| `this.op_gadtm_mltise` | Write | Registration datetime for Multi-Choice Selection post-op service |
| `this.svc_kei_ucwk_no[]` | Write | Service detail number (for Multi-Choice Selection) |
| `this.svc_kei_ucwk_gadtm[]` | Write | Registration datetime of service detail |
| `this.old_vrsb_jdg_svc_dtl_cd` | Write | Service detail code for old VR identification judgment |
| `this.same_trn_no` | Write | Same processing number (unique transaction ID across SODs) |
| `this.op_svc_kei_no_dial` | Write | Post-op service number for Dynamic DupConn |
| `this.op_gadtm_dial` | Write | Registration datetime for Dynamic DupConn |
| `this.op_svc_kei_no_ipv6` | Write | Post-op service number for IPv6 |
| `this.op_gadtm_ipv6` | Write | Registration datetime for IPv6 |
| `this.ipv6_svc_kei_ucwk_no` | Write | Service detail number for IPv6 |
| `this.ipv6_svc_kei_ucwk_gadtm` | Write | Registration datetime for IPv6 service detail |
| `this.kkop_svc_kei_router[]` | Write | K-Op Service (Router) contract number |
| `this.kkop_svc_kei_router_gadtm[]` | Write | Registration datetime of K-Op Service (Router) |
| `this.kkop_svc_kei_va[]` | Write | K-Op Service (VA) contract number |
| `this.kkop_svc_kei_va_gadtm[]` | Write | Registration datetime of K-Op Service (VA) |
| `this.svc_kei_kaisen_ucwk_no` | Write | Service contract line detail number (internal circuit) |
| `this.svc_kei_kaisen_ucwk_gadtm` | Write | Registration datetime of internal circuit agreement |
| `this.kiki_seizo_no[]` | Write | Device manufacturing serial number |
| `this.taknkiki_model_cd[]` | Write | Indoor device model code |
| `this.kktk_svc_kei_no[]` | Write | Device provision service contract number |
| `this.kktk_svc_kei_gadtm[]` | Write | Registration datetime of device provision service |
| `this.pplan_cd` | Write | Price plan code |
| `this.pcrs_cd` | Write | Pricing code |
| `this.isChgPlaceZumi` | Read/Write | Location change processing completion flag |
| `this.pplan_cd` | Read/Write | Price plan code (used for old VR identification) |

## 4. CRUD Operations / Called Services

### Service Component Calls

| CRUD | SC / CBS | SC Code | Entity / DB | Operation Description |
|------|----------|---------|-------------|----------------------|
| R | `callEKK0351A010SC` | EKK0351A010SC | Service agreement table | Fetch post-operation service agreement details (post-op service contract) |
| R | `callEKK0341A010SC` | EKK0341A010SC | Device provision service table | Fetch pre-device provision service details |
| R | `callEKK0081A010SC` (x2) | EKK0081A010SC | Service contract table | Fetch service agreement (pre-change or post-change contract) |
| R | `callEKK0161B004SC` (x2) | EKK0161B004SC | Service detail table | Fetch service detail listing for pause judgment or address change |
| R | `callEKK0161B004SC(handle, param, svc_kei_no)` | EKK0161B004SC | Service detail table | Single-argument variant: fetch service detail by service contract number |
| R | `callEKK2101B001SC` | EKK2101B001SC | Address change contract table | Fetch address change details and map pre-change to post-change service number |
| R | `callEKK0891A010_SC` | EKK0891A010SC | Provision method agreement table | Fetch provision method agreement for mansion optical concentration |
| R | `getDammyPplanCd` | - | - | Get dummy price plan code from provision method agreement result |
| R | `runEKK2811B010` (x2) | EKK2811B010 | K-Op service listing table | Run device provision service listing search (device provision SV) |
| R | `runEKK0251A010` (x2) | EKK0251A010 | Internal circuit agreement table | Run internal circuit agreement to obtain contract registration datetime |
| R | `getKkOpSvcRec` | - | - | Extract K-Op service record (router) from search results |
| R | `getOldVrsbIdgSvcDtlCd` | - | - | Get old VR identification service detail code |
| R | `getSame_trn_no` | - | - | Obtain a unique same processing number (transaction ID) |
| C | `addSOD` (multiple) | - | Service Order Data | Create service order data (FTTH Auth Registration/Release/Stop, Mltise Release, DupConn Release/Delete, Router Auth Release/Delete) |
| C | `addSODFtthNew` | - | Service Order Data | Create new FTTH authentication SOD for address change |
| C | `tsuikabunAddSOD` (multiple) | - | Service Order Data | Create additional SOD (IPv6 release/delete, Multi-Router auth ID release/delete, Router connection change) |
| - | `isBlank` | - | - | Null/blank check utility |
| - | `shkkaMap` | - | - | HashMap initialization/normalization |
| - | `isMansionPrvate` | - | - | Check if pricing code indicates mansion private service |
| - | `isMansHhsSwchflg` | - | - | Check mansion optical distribution switching flag |
| - | `pauseJdg` | - | - | Determine service pause status (suspended vs. not suspended) |
| - | `isDslOrderExist2` | - | - | Check if DSL-related order already exists (duplicate prevention) |

## 5. Dependency Trace

### Callers

| # | Caller (Screen/Batch) | Call Chain (Full Path to this Method) |
|---|----------------------|--------------------------------------|
| 1 | Screen:KKSV0565 | `KKSV0565OPOperation` -> (BPM flow) -> `JKKAdchgHakkoSODCC.adchgOdrCtrl` |
| 2 | Screen:KKSV0725 | `KKSV0725OPOperation` -> (BPM flow) -> `JKKAdchgHakkoSODCC.adchgOdrCtrl` |
| 3 | Screen:KKSV0674 | `KKSV0674OPOperation` -> (BPM flow) -> `JKKAdchgHakkoSODCC.adchgOdrCtrl` |
| 4 | Internal | `JKKAdchgHakkoSODCC.svcAddOdrCtrl` -> `JKKAdchgHakkoSODCC.adchgOdrCtrl` |

### Terminal Operations (Outbound Effects)

| Terminal Operation | Type | Description |
|-------------------|------|-------------|
| `addSOD(handle, param, ODR_NAIYO_CD_107)` | C | FTTH Authentication Stop/Release |
| `addSOD(handle, param, ODR_NAIYO_CD_145)` | C | Multi-Choice Selection (Static) Release |
| `addSOD(handle, param, ODR_NAIYO_CD_106)` | C | FTTH Authentication Temp Stop |
| `addSOD(handle, param, ODR_NAIYO_CD_137)` | C | Dynamic DupConnection Release |
| `addSOD(handle, param, ODR_NAIYO_CD_138)` | C | Dynamic DupConnection Delete |
| `tsuikabunAddSOD(handle, param, ODR_NAIYO_CD_163)` | C | Router Connection Change |
| `tsuikabunAddSOD(handle, param, ODR_NAIYO_CD_157)` | C | IPv6 Release |
| `tsuikabunAddSOD(handle, param, ODR_NAIYO_CD_158)` | C | IPv6 Delete |
| `addSOD(handle, param, ODR_NAIYO_CD_149)` | C | Router Auth ID Release |
| `addSOD(handle, param, ODR_NAIYO_CD_150)` | C | Router Auth ID Delete |
| `addSOD(handle, param, ODR_NAIYO_CD_103)` | C | FTTH Auth Release (DSL End) |
| `addSOD(handle, param, ODR_NAIYO_CD_101)` | C | FTTH Auth Registration (commented out) |
| `addSODFtthNew(handle, param)` | C | New FTTH Auth Registration (address change) |
| `tsuikabunAddSOD(handle, param, ODR_NAIYO_CD_404)` | C | Multi-Router Setting/Change (Router Function Connection Change) |
| `tsuikabunAddSOD(handle, param, ODR_NAIYO_CD_419)` | C | Multi-Router Auth ID Release |
| `tsuikabunAddSOD(handle, param, ODR_NAIYO_CD_420)` | C | Multi-Router Auth ID Delete |
| `setData(HAKKOSODCCWORKMAP, dataMap)` | - | Update work map with service contract number and registration datetime |
| `clear` (inHash/resultHash) | - | Clear intermediate data maps |

## 6. Per-Branch Detail Blocks

**Block 1** — INIT (Initialization) (L24707)

Initialize service data HashMaps and extract information from `sodMap`.

| # | Type | Code |
|---|------|------|
| 1 | SET | `statusCode = 0` |
| 2 | SET | `chafEKK0351A010SCHash = new HashMap<>()` |
| 3 | SET | `chbfEKK0341A010SCHash = new HashMap<>()` |
| 4 | SET | `chbfEKK0081A010SCHash = new HashMap<>()` |
| 5 | SET | `chafEKK0081A010SCHash = new HashMap<>()` |
| 6 | SET | `svc_kei_info_Map = (HashMap)sodMap.get(JKKHakkoSODConstCC.SVC_KEI_INFO)` |
| 7 | SET | `svc_kei_ucwk_info_Map = (HashMap)sodMap.get(JKKHakkoSODConstCC.SVC_KEI_UCWK_INFO)` |
| 8 | SET | `opsvkei_info_Map = (HashMap)sodMap.get(JKKHakkoSODConstCC.OPSVKEI_INFO)` |
| 9 | SET | `kktsvkei_info_Map = (HashMap)sodMap.get(JKKHakkoSODConstCC.KKTSVKEI_INFO)` |
| 10 | EXEC | `svc_kei_info_Map = shkkaMap(svc_kei_info_Map)` |
| 11 | EXEC | `svc_kei_ucwk_info_Map = shkkaMap(svc_kei_ucwk_info_Map)` |
| 12 | EXEC | `opsvkei_info_Map = shkkaMap(opsvkei_info_Map)` |
| 13 | EXEC | `kktsvkei_info_Map = shkkaMap(kktsvkei_info_Map)` |
| 14 | SET | `inHash = new HashMap<>()` |
| 15 | SET | `resultHash = new HashMap<>()` |

**Block 2** — EXTRACT (Data extraction from maps) (L24744)

Extract all service-level fields from the initialized HashMaps.

| # | Type | Code |
|---|------|------|
| 1 | SET | `svc_kei_no = (String)svc_kei_info_Map.get(INFO_SVC_KEI_NO)` |
| 2 | SET | `chbf_svc_kei_gene_add_dtm = (String)svc_kei_info_Map.get(INFO_CHBF_SVC_KEI_GENE_ADD_DTM)` |
| 3 | SET | `saki_svc_kei_no = (String)svc_kei_info_Map.get(INFO_SAKI_SVC_KEI_NO)` |
| 4 | SET | `chaf_svc_kei_gene_add_dtm = (String)svc_kei_info_Map.get(INFO_CHAF_SVC_KEI_GENE_ADD_DTM)` |
| 5 | SET | `svc_kei_ucwk_no = (String)svc_kei_ucwk_info_Map.get(INFO_SVC_KEI_UCWK_NO)` |
| 6 | SET | `chbf_svc_kei_ucwk_gene_add_dtm = (String)svc_kei_ucwk_info_Map.get(INFO_CHBF_SVC_KEI_UCWK_GENE_ADD_DTM)` |
| 7 | SET | `saki_svc_kei_ucwk_no = (String)svc_kei_ucwk_info_Map.get(INFO_SAKI_SVC_KEI_UCWK_NO)` |
| 8 | SET | `chaf_svc_kei_ucwk_gene_add_dtm = (String)svc_kei_ucwk_info_Map.get(INFO_CHAF_SVC_KEI_UCWK_GENE_ADD_DTM)` |
| 9 | SET | `chaf_opsvkei_no = (String)opsvkei_info_Map.get(INFO_CHAF_OPSVKEI_NO)` |
| 10 | SET | `chaf_opsvkei_gene_add_dtm = (String)opsvkei_info_Map.get(INFO_CHAF_OPSVKEI_GENE_ADD_DTM)` |
| 11 | SET | `chbf_kktsvkei_no = (String)kktsvkei_info_Map.get(INFO_CHBF_KKTSVKEI_NO)` |
| 12 | SET | `chbf_kktsvkei_gene_add_dtm = (String)kktsvkei_info_Map.get(INFO_CHBF_KKTSVKEI_GENE_ADD_DTM)` |

**Block 3** — [IF] Post-operation service info fetch (L24768)
Condition: `!isBlank(chaf_opsvkei_no) && !isBlank(chaf_opsvkei_gene_add_dtm)`

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `inHash.clear()` |
| 2 | EXEC | `resultHash.clear()` |
| 3 | SET | `inHash.put(OP_SVC_KEI_NO, chaf_opsvkei_no)` |
| 4 | SET | `inHash.put(GENE_ADD_DTM, chaf_opsvkei_gene_add_dtm)` |
| 5 | CALL | `callEKK0351A010SC(param, handle, inHash, resultHash, FUNC_CODE_1)` |
| 6 | IF | `statusCode != 0` -> throw CCException(SCCallException) |
| 7 | SET | `chafEKK0351A010SCHash = (HashMap)resultHash.get(TEMPLATE_ID_EKK0351A010)` |

**Block 4** — [IF] Pre-device service info fetch (L24785)
Condition: `!isBlank(chbf_kktsvkei_no) && !isBlank(chbf_kktsvkei_gene_add_dtm)`

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `inHash.clear()` |
| 2 | EXEC | `resultHash.clear()` |
| 3 | SET | `inHash.put(KKTK_SVC_KEI_NO, chbf_kktsvkei_no)` |
| 4 | SET | `inHash.put(GENE_ADD_DTM, chbf_kktsvkei_gene_add_dtm)` |
| 5 | CALL | `callEKK0341A010SC(param, handle, inHash, resultHash, FUNC_CODE_1)` |
| 6 | IF | `statusCode != 0` -> throw CCException(SCCallException) |
| 7 | SET | `chbfEKK0341A010SCHash = (HashMap)resultHash.get(TEMPLATE_ID_EKK0341A010)` |

**Block 5** — [IF] Pre-service contract info fetch (L24802)
Condition: `!isBlank(svc_kei_no) && !isBlank(chbf_svc_kei_gene_add_dtm)`

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `inHash.clear()` |
| 2 | EXEC | `resultHash.clear()` |
| 3 | SET | `inHash.put(SVC_KEI_NO, svc_kei_no)` |
| 4 | SET | `inHash.put(GENE_ADD_DTM, chbf_svc_kei_gene_add_dtm)` |
| 5 | CALL | `callEKK0081A010SC(param, handle, inHash, resultHash, FUNC_CODE_1)` |
| 6 | IF | `statusCode != 0` -> throw CCException(SCCallException) |
| 7 | SET | `chbfEKK0081A010SCHash = (HashMap)resultHash.get(TEMPLATE_ID_EKK0081A010)` |

**Block 6** — [IF] Post-service contract info fetch (L24819)
Condition: `!isBlank(saki_svc_kei_no) && !isBlank(chaf_svc_kei_gene_add_dtm)`

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `inHash.clear()` |
| 2 | EXEC | `resultHash.clear()` |
| 3 | SET | `inHash.put(SVC_KEI_NO, saki_svc_kei_no)` |
| 4 | SET | `inHash.put(GENE_ADD_DTM, chaf_svc_kei_gene_add_dtm)` |
| 5 | CALL | `callEKK0081A010SC(param, handle, inHash, resultHash, FUNC_CODE_1)` |
| 6 | IF | `statusCode != 0` -> throw CCException(SCCallException) |
| 7 | SET | `chafEKK0081A010SCHash = (HashMap)resultHash.get(TEMPLATE_ID_EKK0081A010)` |

**Block 7** — [IF/ELSE-IF/ELSE] Post-op service data confirmation (B015/B020/B070) (L24837)
Read `opSvcCd` and `opSvcKeiStat` from `chafEKK0351A010SCHash`.

**Block 7.1** — [IF-IF] B015: Multi-Choice Selection (OP_SVC_CD_MLTISE = "B015") (L24850)

| # | Type | Code |
|---|------|------|
| 1 | IF | `isMansionPrvate() == false` |
| 2 | SET | `this.op_svc_kei_no_mltise = chaf_opsvkei_no` |
| 3 | SET | `this.op_gadtm_mltise = chaf_opsvkei_gene_add_dtm` |
| 4 | SET | `svc_kei_no_tmp = (String)svc_kei_info_Map.get("svc_kei_no")` |
| 5 | SET | `pause_jdg_cd = new String[1]` |
| 6 | CALL | `pauseJdg(param, handle, null, svc_kei_no_tmp, pause_jdg_cd)` |
| 7 | IF | `PAUSE_JDG_CD_1.equals(pause_jdg_cd[0])` (Suspended) |
| 8 | SET | `inHashUcwk.put(SVC_KEI_NO, svc_kei_no_tmp)` |
| 9 | CALL | `callEKK0161B004SC(param, handle, inHashUcwk, resultHashUcwk, FUNC_CODE_1)` |
| 10 | SET | `msgListUcwk = (CAANMsg[])resultHashUcwk.get(TEMPLATE_ID_EKK0161B004)` |
| 11 | SET | `this.svc_kei_ucwk_no = new String[1]` |
| 12 | SET | `this.svc_kei_ucwk_no[0] = retHash.get(SVC_KEI_UCWK_NO)` |
| 13 | SET | `this.svc_kei_ucwk_gadtm = new String[1]` |
| 14 | SET | `this.svc_kei_ucwk_gadtm[0] = retHash.get(GENE_ADD_DTM)` |
| 15 | CALL | `getOldVrsbIdgSvcDtlCd(...)` -> `this.old_vrsb_jdg_svc_dtl_cd` |
| 16 | SET | `sameTrnNo = new String[1]` |
| 17 | CALL | `getSame_trn_no(param, handle, null, sameTrnNo)` |
| 18 | SET | `this.same_trn_no = sameTrnNo[0]` |
| 19 | CALL | `addSOD(handle, param, ODR_NAIYO_CD_107)` — FTTH Auth Stop/Release |
| 20 | CALL | `addSOD(handle, param, ODR_NAIYO_CD_145)` — Mltise Static Release |
| 21 | CALL | `addSOD(handle, param, ODR_NAIYO_CD_106)` — FTTH Auth Temp Stop |
| 8b | ELSE-IF | `PAUSE_JDG_CD_0.equals(pause_jdg_cd[0])` (Not Suspended) |
| 9b | CALL | `getOldVrsbIdgSvcDtlCd(...)` -> `this.old_vrsb_jdg_svc_dtl_cd` |
| 10b | CALL | `addSOD(handle, param, ODR_NAIYO_CD_145)` — Mltise Static Release |

**Block 7.2** — [ELSE-IF] B020: Dynamic DupConnection (OP_SVC_CD_DUP = "B020") (L24947)

| # | Type | Code |
|---|------|------|
| 1 | IF | `isBlank(this.same_trn_no)` |
| 2 | SET | `sameTrnNo = new String[1]` |
| 3 | CALL | `getSame_trn_no(param, handle, null, sameTrnNo)` |
| 4 | SET | `this.same_trn_no = sameTrnNo[0]` |
| 5 | SET | `this.op_svc_kei_no_dial = chaf_opsvkei_no` |
| 6 | SET | `this.op_gadtm_dial = chaf_opsvkei_gene_add_dtm` |
| 7 | CALL | `addSOD(handle, param, ODR_NAIYO_CD_137)` — DupConn Release |
| 8 | CALL | `addSOD(handle, param, ODR_NAIYO_CD_138)` — DupConn Delete |

**Block 7.3** — [ELSE-IF] B070: IPv6 (OP_SVC_CD_IPV6 = "B070") (L24965)

| # | Type | Code |
|---|------|------|
| 1 | IF | `isBlank(this.same_trn_no)` |
| 2 | SET | `sameTrnNo = new String[1]` |
| 3 | CALL | `getSame_trn_no(param, handle, null, sameTrnNo)` |
| 4 | SET | `this.same_trn_no = sameTrnNo[0]` |
| 5 | SET | `this.op_svc_kei_no_ipv6 = chaf_opsvkei_no` |
| 6 | SET | `this.op_gadtm_ipv6 = chaf_opsvkei_gene_add_dtm` |
| 7 | SET | `inHashUcwk.put(SVC_KEI_NO, svc_kei_info_Map.get("svc_kei_no"))` |
| 8 | CALL | `callEKK0161B004SC(param, handle, inHashUcwk, resultHashUcwk, FUNC_CODE_1)` |
| 9 | SET | `msgListUcwk = (CAANMsg[])resultHashUcwk.get(TEMPLATE_ID_EKK0161B004)` |
| 10 | SET | `this.ipv6_svc_kei_ucwk_no = retHash.get(SVC_KEI_UCWK_NO)` |
| 11 | SET | `this.ipv6_svc_kei_ucwk_gadtm = retHash.get(GENE_ADD_DTM)` |
| 12 | SET | `tmp_kktk_svc_cd = (String)chbfEKK0341A010SCHash.get(KKTK_SVC_CD)` |
| 13 | IF | `!KKTK_SVC_CD_MFR.equals(tmp_kktk_svc_cd) \|\| KKTK_SVC_CD_HGW.equals(tmp_kktk_svc_cd)` |
| 14 | CALL | `tsuikabunAddSOD(handle, param, ODR_NAIYO_CD_163)` — Router Connection Change |
| 15 | ELSE | IF `!KKTK_SVC_CD_MFR.equals(tmp_kktk_svc_cd) \|\| KKTK_SVC_CD_HGW.equals(tmp_kktk_svc_cd)` |
| 16 | CALL | `runEKK2811B010(param, handle, FUNC_CODE_1, chbf_kktsvkei_no)` |
| 17 | CALL | `getKkOpSvcRec(kkop_svc_kei_srch_list, KKOP_SVC_CD_BBR, true)` |
| 18 | IF | `ekk2811b010Map != null` |
| 19 | SET | `this.kkop_svc_kei_router[0] = ekk2811b010Map.get(KKOP_SVC_KEI_NO)` |
| 20 | SET | `this.kkop_svc_kei_router_gadtm[0] = ekk2811b010Map.get(GENE_ADD_DTM)` |
| 21 | SET | `this.kkop_svc_kei_va[0] = ""` |
| 22 | SET | `this.kkop_svc_kei_va_gadtm[0] = ""` |
| 23 | SET | `this.svc_kei_kaisen_ucwk_no = (String)sodMap.get("chaf_svc_kei_kaisen_ucwk_no")` |
| 24 | CALL | `runEKK0251A010(param, handle, this.svc_kei_kaisen_ucwk_no)` |
| 25 | SET | `this.svc_kei_kaisen_ucwk_gadtm = ekk0251a010Map.get(GENE_ADD_DTM)` |
| 26 | CALL | `tsuikabunAddSOD(handle, param, ODR_NAIYO_CD_404)` — Multi-Router Set/Change |
| 27 | CALL | `tsuikabunAddSOD(handle, param, ODR_NAIYO_CD_157)` — IPv6 Release |
| 28 | CALL | `tsuikabunAddSOD(handle, param, ODR_NAIYO_CD_158)` — IPv6 Delete |

**Block 8** — [IF] Pre-device data confirmation (C014 BBR) (L25046)
Read `kktk_svc_cd` and `kktk_svc_kei_stat` from `chbfEKK0341A010SCHash`.

**Block 8.1** — [IF] C014: BBR (KKTK_SVC_CD_BBR = "C014") (L25055)

| # | Type | Code |
|---|------|------|
| 1 | IF | `ODR_EXEC_DIV_DSL_END.equals(odr_exec_div)` (L25070) |
| 2 | SET | `kiki_seizo_no = (String)chbfEKK0341A010SCHash.get(KIKI_SEIZO_NO)` |
| 3 | SET | `taknkiki_model_cd = (String)chbfEKK0341A010SCHash.get(TAKNKIKI_MODEL_CD)` |
| 4 | IF | `isBlank(this.same_trn_no)` |
| 5 | SET | `sameTrnNo = new String[1]` |
| 6 | CALL | `getSame_trn_no(param, handle, null, sameTrnNo)` |
| 7 | SET | `this.same_trn_no = sameTrnNo[0]` |
| 8 | SET | `this.kiki_seizo_no[0] = kiki_seizo_no` |
| 9 | SET | `this.taknkiki_model_cd[0] = taknkiki_model_cd` |
| 10 | SET | `this.kktk_svc_kei_no[0] = chbf_kktsvkei_no` |
| 11 | SET | `this.kktk_svc_kei_gadtm[0] = chbf_kktsvkei_gene_add_dtm` |
| 12 | IF | `!isDslOrderExist2(param, handle, SVC_ORDER_CD_ROUTER, ...)` (L25092) |
| 13 | CALL | `addSOD(handle, param, ODR_NAIYO_CD_149)` — Router Auth ID Release |
| 14 | CALL | `addSOD(handle, param, ODR_NAIYO_CD_150)` — Router Auth ID Delete |

**Block 9** — [IF] C024/C025: Multi-Function Router or Home Gateway (L25096)
Condition: `KKTK_SVC_CD_MFR.equals(kktk_svc_cd) \|\| KKTK_SVC_CD_HGW.equals(kktk_svc_cd)`

**Block 9.1** — [IF] DSL End processing for Multi-Router/HGW (L25102)

| # | Type | Code |
|---|------|------|
| 1 | IF | `ODR_EXEC_DIV_DSL_END.equals(odr_exec_div)` |
| 2 | IF | `"".equals(isMansHhsSwchflg(handle, param, sodMap))` |
| 3 | SET | `kktkSvcKeiNo = (String)chbfEKK0341A010SCHash.get(KKTK_SVC_KEI_NO)` |
| 4 | CALL | `runEKK2811B010(param, handle, FUNC_CODE_1, kktkSvcKeiNo)` |
| 5 | CALL | `getKkOpSvcRec(msgList, KKOP_SVC_CD_BBR, false)` |
| 6 | IF | `ekk2811b010Map != null` |
| 7 | SET | `kiki_seizo_no = (String)chbfEKK0341A010SCHash.get(KIKI_SEIZO_NO)` |
| 8 | SET | `taknkiki_model_cd = (String)chbfEKK0341A010SCHash.get(TAKNKIKI_MODEL_CD)` |
| 9 | IF | `isBlank(this.same_trn_no)` |
| 10 | SET | `sameTrnNo = new String[1]` |
| 11 | CALL | `getSame_trn_no(param, handle, null, sameTrnNo)` |
| 12 | SET | `this.same_trn_no = sameTrnNo[0]` |
| 13 | SET | `this.kiki_seizo_no[0] = kiki_seizo_no` |
| 14 | SET | `this.taknkiki_model_cd[0] = taknkiki_model_cd` |
| 15 | SET | `this.kktk_svc_kei_no[0] = chbf_kktsvkei_no` |
| 16 | SET | `this.kktk_svc_kei_gadtm[0] = chbf_kktsvkei_gene_add_dtm` |
| 17 | SET | `this.kkop_svc_kei_router[0] = ekk2811b010Map.get(KKOP_SVC_KEI_NO)` |
| 18 | SET | `this.kkop_svc_kei_router_gadtm[0] = ekk2811b010Map.get(GENE_ADD_DTM)` |
| 19 | SET | `this.kkop_svc_kei_va[0] = ""` |
| 20 | SET | `this.kkop_svc_kei_va_gadtm[0] = ""` |
| 21 | SET | `this.svc_kei_kaisen_ucwk_no = (String)chbfEKK0341A010SCHash.get(SVC_KEI_KAISEN_UCWK_NO)` |
| 22 | CALL | `runEKK0251A010(param, handle, this.svc_kei_kaisen_ucwk_no)` |
| 23 | SET | `this.svc_kei_kaisen_ucwk_gadtm = ekk0251a010Map.get(GENE_ADD_DTM)` |
| 24 | IF | `!isDslOrderExist2(param, handle, SVC_ORDER_CD_MRT, ...)` (L25156) |
| 25 | CALL | `addSOD(handle, param, ODR_NAIYO_CD_419)` — Multi-Router Auth ID Release |
| 26 | CALL | `addSOD(handle, param, ODR_NAIYO_CD_420)` — Multi-Router Auth ID Delete |

**Block 10** — [IF] DSL End, non-chg-place-completed, non-mansion (L25182)
Condition: `ODR_EXEC_DIV_DSL_END.equals(odr_exec_div)` && `!isChgPlaceZumi`

**Block 10.1** — [IF] Not mansion private (L25193)
Condition: `!isMansionPrvate()`

| # | Type | Code |
|---|------|------|
| 1 | SET | `this.pcrs_cd = (String)chbfEKK0081A010SCHash.get(PCRS_CD)` |
| 2 | IF | `isBlank(this.same_trn_no)` |
| 3 | SET | `sameTrnNo = new String[1]` |
| 4 | CALL | `getSame_trn_no(param, handle, null, sameTrnNo)` |
| 5 | SET | `this.same_trn_no = sameTrnNo[0]` |
| 6 | CALL | `callEKK0161B004SC(handle, param, svc_kei_no)` -> `ekk0161B004map` |
| 7 | SET | `svc_kei_ucwk_no = ekk0161B004map.get(SVC_KEI_UCWK_NO)` |
| 8 | SET | `chbf_svc_kei_ucwk_gene_add_dtm = ekk0161B004map.get(GENE_ADD_DTM)` |
| 9 | SET | `this.svc_kei_ucwk_no[0] = svc_kei_ucwk_no` |
| 10 | SET | `this.svc_kei_ucwk_gadtm[0] = chbf_svc_kei_ucwk_gene_add_dtm` |
| 11 | CALL | `addSOD(handle, param, ODR_NAIYO_CD_103)` — FTTH Auth Release |
| 12 | SET | `this.isChgPlaceZumi = true` |

**Block 11** — [IF] Address Change Registration (L25212)
Condition: `ODR_EXEC_DIV_AD_CHG.equals(odr_exec_div)`

**Block 11.1** — [IF] Not chg-place-completed (L25215)
Condition: `!isChgPlaceZumi`

**Block 11.1.1** — [IF] Not mansion private (L25226)
Condition: `!isMansionPrvate()`

| # | Type | Code |
|---|------|------|
| 1 | SET | `this.pcrs_cd = (String)chafEKK0081A010SCHash.get(PCRS_CD)` |
| 2 | IF | `isBlank(this.same_trn_no)` |
| 3 | SET | `sameTrnNo = new String[1]` |
| 4 | CALL | `getSame_trn_no(param, handle, null, sameTrnNo)` |
| 5 | SET | `this.same_trn_no = sameTrnNo[0]` |
| 6 | SET | `adchgNo = (String)sodMap.get("adchg_no")` |
| 7 | IF | `!JKKStringUtil.isNullBlank(adchgNo)` |
| 8 | CALL | `callEKK2101B001SC(handle, param, adchgNo, "01")` -> `dataList` |
| 9 | FOR | `datamap : dataList` |
| 10 | IF | `svc_kei_no.equals(datamap.get("CHBF_SKBT_NO"))` |
| 11 | SET | `svc_kei_no = (String)datamap.get("CHAF_SKBT_NO")` |
| 12 | CALL | `callEKK0161B004SC(handle, param, svc_kei_no)` -> `ekk0161B004map` |
| 13 | SET | `saki_svc_kei_ucwk_no = ekk0161B004map.get(SVC_KEI_UCWK_NO)` |
| 14 | SET | `chaf_svc_kei_ucwk_gene_add_dtm = ekk0161B004map.get(GENE_ADD_DTM)` |
| 15 | SET | `this.svc_kei_ucwk_no[0] = saki_svc_kei_ucwk_no` |
| 16 | SET | `this.svc_kei_ucwk_gadtm[0] = chaf_svc_kei_ucwk_gene_add_dtm` |
| 17 | SET | `pplanCdBf = this.pplan_cd` |
| 18 | SET | `this.pplan_cd = (String)chafEKK0081A010SCHash.get(PPLAN_CD)` |
| 19 | SET | `prc_grp_cd = (String)chafEKK0081A010SCHash.get(PRC_GRP_CD)` |
| 20 | SET | `tk_hoshiki_kei_no = (String)chafEKK0081A010SCHash.get(TK_HOSHIKI_KEI_NO)` |
| 21 | IF | `PRC_GRP_CD_NET_MT.equals(prc_grp_cd) && tk_hoshiki_kei_no != null && !"".equals(tk_hoshiki_kei_no)` |
| 22 | SET | `inHashMans.put(KEY_TK_HOSHIKI_KEI_NO, tk_hoshiki_kei_no)` |
| 23 | CALL | `callEKK0891A010_SC(param, keepSesHandle.get(), inHashMans, resultHashMans, FUNC_CODE_1)` |
| 24 | SET | `eKK0891A010SCHash = (HashMap)resultHashMans.get(TEMPLATE_ID_EKK0891A010)` |
| 25 | IF | `eKK0891A010SCHash != null && !"".equals(eKK0891A010SCHash)` |
| 26 | CALL | `getDammyPplanCd(param, keepSesHandle.get(), eKK0891A010SCHash)` -> `dammy_pplan_cd` |
| 27 | IF | `dammy_pplan_cd != null && !"".equals(dammy_pplan_cd)` |
| 28 | SET | `this.pplan_cd = dammy_pplan_cd` |
| 29 | SET | `dataMap = (HashMap)param.getData(HAKKOSODCCWORKMAP)` |
| 30 | SET | `dataMap.put("svc_kei_no", saki_svc_kei_no)` |
| 31 | SET | `dataMap.put("svkei_gadtm", chaf_svc_kei_gene_add_dtm)` |
| 32 | EXEC | `param.setData(HAKKOSODCCWORKMAP, dataMap)` |
| 33 | CALL | `addSODFtthNew(handle, param)` — New FTTH Auth Registration (commented: addSOD 101) |
| 34 | SET | `dataMap = (HashMap)param.getData(HAKKOSODCCWORKMAP)` |
| 35 | SET | `dataMap.put("svc_kei_no", svc_kei_no)` |
| 36 | SET | `dataMap.put("svkei_gadtm", chbf_svc_kei_gene_add_dtm)` |
| 37 | EXEC | `param.setData(HAKKOSODCCWORKMAP, dataMap)` |
| 38 | SET | `this.pplan_cd = pplanCdBf` |
| 39 | SET | `this.isChgPlaceZumi = true` |

**Block 12** — RETURN (L25326)

| # | Type | Code |
|---|------|------|
| 1 | RETURN | `return param` |

## 7. Glossary

| Term | Type | Business Meaning |
|------|------|------------------|
| `odr_exec_div` | Field | Order execution trigger classification — determines whether the method processes address change registration ("1") or DSL termination ("2") |
| `svc_kei_no` | Field | Service contract number — unique identifier for a telecom service contract line |
| `svc_kei_ucwk_no` | Field | Service contract detail number — internal tracking ID for service contract line items |
| `svc_kei_info_Map` | Field | Service contract information map — contains service-level data including contract number, status, pricing code |
| `svc_kei_ucwk_info_Map` | Field | Service contract detail information map — contains line-item-level service detail data |
| `opsvkei_info_Map` | Field | Operation service information map — contains operation service (value-added service) data |
| `kktsvkei_info_Map` | Field | Device provision service contract information map — contains data for ISP/device-provided services |
| `chaf_opsvkei_no` | Field | Post-change operation service number |
| `chbf_kktsvkei_no` | Field | Pre-change device provision service number |
| `gene_add_dtm` | Field | Generation registration datetime — timestamp when the contract/record was created in the system |
| `op_svc_cd` | Field | Operation service code — classifies the type of value-added operation service |
| `kktk_svc_cd` | Field | Device provision service code — classifies the type of device-provided service |
| `same_trn_no` | Field | Same processing number — a unique transaction ID shared across multiple SODs to group related orders |
| SOD | Acronym | Service Order Data — the system entity representing a service order request to be sent to external systems |
| FTTH | Business term | Fiber To The Home — fiber-optic broadband internet service |
| BBR | Business term | Broad Band Router — BBR router service code C014, the basic broadband routing service |
| Mltise | Business term | Multi-Choice Selection (マルチセッショーン) — operation service code B015, a bundled service selection type |
| DupConn | Business term | Dynamic DupConnection (ダイアルアップ接続) — operation service code B020, PPPoE dial-up connection service |
| IPv6 | Business term | Internet Protocol version 6 — operation service code B070, IPv6 access service |
| Multi-Router | Business term | Multi-Function Router (多機能ルーター) — device provision service code C024, advanced router service |
| HGW | Business term | Home Gateway (ホームゲートウェイ) — device provision service code C025, integrated home gateway device |
| `ODR_NAIYO_CD_107` | Constant | FTTH Authentication Stop/Release (FTTH認証・停止解除) — cancels FTTH authentication ID suspension |
| `ODR_NAIYO_CD_145` | Constant | Multi-Choice Selection (Static) Release (マルチセッショーン(静的)・解約) — cancels multi-choice selection |
| `ODR_NAIYO_CD_106` | Constant | FTTH Authentication Temp Stop (FTTH認証・一時停止) — temporarily suspends FTTH authentication |
| `ODR_NAIYO_CD_137` | Constant | Dynamic DupConnection Release (ダイアルアップ接続・解約) — cancels PPPoE connection |
| `ODR_NAIYO_CD_138` | Constant | Dynamic DupConnection Delete (ダイアルアップ接続・消去) — deletes PPPoE connection data |
| `ODR_NAIYO_CD_163` | Constant | Router Connection Change (ルーター向け接続情報・変更) — updates router connection credentials |
| `ODR_NAIYO_CD_157` | Constant | IPv6 Release (IPv6・解約) — cancels IPv6 access service |
| `ODR_NAIYO_CD_158` | Constant | IPv6 Delete (IPv6・消去) — deletes IPv6 service data |
| `ODR_NAIYO_CD_149` | Constant | Router Auth ID Release (ルーター向け接続情報・解約) — cancels router authentication ID |
| `ODR_NAIYO_CD_150` | Constant | Router Auth ID Delete (ルーター向け接続情報・消去) — deletes router authentication data |
| `ODR_NAIYO_CD_103` | Constant | FTTH Auth Release (FTTH認証・解約) — cancels FTTH authentication for DSL termination |
| `ODR_NAIYO_CD_101` | Constant | FTTH Auth Registration (FTTH認証・登録) — registers new FTTH authentication ID |
| `ODR_NAIYO_CD_404` | Constant | Multi-Router Setting/Change (多機能ルーター設定・変更) — changes multi-function router settings |
| `ODR_NAIYO_CD_419` | Constant | Multi-Router Auth ID Release (多機能ルーター設定・解約) — cancels multi-function router auth |
| `ODR_NAIYO_CD_420` | Constant | Multi-Router Auth ID Delete (多機能ルーター設定・消去) — deletes multi-function router auth data |
| `PAUSE_JDG_CD_1` | Constant | Service Suspended (中止中) — service status indicator meaning the service is currently suspended |
| `PAUSE_JDG_CD_0` | Constant | Not Suspended (中止中ではない) — service status indicator meaning the service is active |
| `PRC_GRP_CD_NET_MT` | Constant | eo Optical Mansion Net Type (eo光ネットマンションタイプ) — pricing group code for mansion-type net service |
| `SVC_ORDER_CD_ROUTER` | Constant | Router (ルーター向け情報) — service order code "0A" for router-related orders |
| `SVC_ORDER_CD_MRT` | Constant | Multi-Function Router (多機能ルーター) — service order code "26" for multi-function router orders |
| `HAKKOSODCCWORKMAP` | Constant | Work map key "HakkoSODCCWORK" — stores intermediate SOD processing data |
| `isChgPlaceZumi` | Field | Location change processing completion flag — tracks whether location change processing has been completed |
| `pplan_cd` | Field | Price plan code — identifies the customer's billing plan |
| `pcrs_cd` | Field | Pricing code — classifies the customer's pricing tier |
| `isMansionPrvate` | Method | Mansion private check — determines if the pricing code corresponds to a mansion private service type (A47, A48, A49) |
| EKK0081A010SC | SC | Service Agreement (サービス契約照会) — service component to query service contract details |
| EKK0351A010SC | SC | Post-op Service Agreement (オプションサービス契約照会) — service component to query operation service agreement |
| EKK0341A010SC | SC | Pre-device Provision Service (機器提供サービス契約照会) — service component to query device provision service |
| EKK0161B004SC | SC | Service Detail Listing (サービス契約内一覧照会) — service component to query service detail records |
| EKK2101B001SC | SC | Address Change Contract (住所変更契約照会) — service component to query address change contract mapping |
| EKK0891A010_SC | SC | Provision Method Agreement (提供方式照会) — service component to query provision method for mansion optical |
| EKK2811B010 | SC | Device Provision Service Listing (機器オプションサービス一覧照会) — service component to list device option services |
| EKK0251A010 | SC | Internal Circuit Agreement (サービス契約回線内照会) — service component to query internal circuit agreement |