# Business Logic - JKKAdchgHakkoSODCC.htelNoDslOdrCtrl() [752 LOC]

| Field | Value |
|-------|-------|
| Fully Qualified Name | `com.fujitsu.futurity.bp.custom.common.JKKAdchgHakkoSODCC` |
| Layer | CC / Common Component (Service orchestration layer) |
| Module | `common` (Package: `com.fujitsu.futurity.bp.custom.common`) |

## 1. Role

### JKKAdchgHakkoSODCC.htelNoDslOdrCtrl()

This method orchestrates the **optical phone line cancellation order processing** within the Fujitsu KOPT telecom billing system's service change (adchg) workflow. Its Japanese name is 光電話番号解約オーダ制御処理 (Optical Telephone Number Cancellation Order Control Processing). It serves as the central dispatch hub that coordinates the generation of multiple Service Order Data (SOD) records required to fully decommission a customer's optical fiber telephone service (eo hikaritel), including downstream equipment teardown, SIP protocol cancellation, and network service deregistration.

The method handles multiple **service categories** in a single invocation: it manages Virtual Access (VA) device teardown (OLS setup/cancellation and OLS setup/deletion), multifunction router decommissioning (MFR setup/cancellation, MFR setup/deletion, MFR setup/change VA cancellation), SIP protocol cancellation and deletion, ENUM number portability cancellation, pause order registration, and Radius authentication cancellation. A final emergency notification deletion SOD is always issued.

The **design pattern** employed is a routing/dispatch model: the `odr_exec_div` parameter (order issuance trigger classification) determines which conditional branches execute - specifically, whether the cancellation is triggered by new-completion ("3"), address change, phone number change, or existing order presence. The method delegates device-matching decisions to specialized helper methods (isRegalVaKiki, isRegalMfRouter, isJuhenVA, isJuhenMfRouter, isKkopSvcOnKiki, isDslOrderExist, isDslOrderExist2) to determine which equipment types (VA, multifunction router, HGW, residential VA) are attached to the service line and which SOD records need to be created.

This method plays the role of a **shared utility** called by the broader service-change-orchestration flow `htelNoDslOdrCtrlBfSvcStart` (itself called from the main service change controller). It is part of the `JKKAdchgHakkoSODCC` family of methods responsible for order creation during service modifications. The method ensures all downstream dependencies (equipment, optional services, network protocols) are properly cancelled before the service line is decommissioned.

## 2. Processing Pattern (Detailed Business Logic)

```mermaid
flowchart TD
    START(["htelNoDslOdrCtrl"])
    EARLY_CHECK["Check svc_kei_ucwk_no blank or not telDslExe<br/>Early return if so"]
    RADIUS_CHECK{"isTelCancelSodIssued<br/>param, sodMap"}
    RADIUS_YES["Set isRadiusZumi = true"]
    GET_TRN["getSame_trn_no<br/>Obtain same processing number"]
    CALL_EKK0191["callEKK0191A010SC<br/>Get EO optical phone template<br/>VA port, model, serial info"]
    CALL_EKK0341["callEKK0341B008SC<br/>Get equipment provision service list"]
    BUILD_KIKI["Build newKikiList<br/>VA devices + multifunction routers"]
    DEVICE_LOOP{"Loop through newKikiList"}
    MATCH_REGAL{"isRegalVaKiki<br/>match"}
    MATCH_ROUTER{"isRegalMfRouter<br/>match"}
    MATCH_JUZEN_VA{"isJuhenVA<br/>match"}
    MATCH_JUZEN_ROUTER{"isJuhenMfRouter<br/>match"}
    CALL_EKK0251["runEKK0251A010<br/>Get service line inner contract agreement"]
    STORE_DEVICE["Store kktkSvcKeiNo, geneAddDtm,<br/>vaKikiSeizoNo, tknkiki_sbt_cd"]
    CALL_EKK0251_MAIN["getEKK0251B001SC<br/>Get service contract line inner contract list"]
    STORE_FIELDS["Store device info into<br/>instance fields"]
    DEV_EXISTS{"All device info not blank<br/>kktk_svc_kei_no AND kktk_svc_kei_gadtm<br/>AND taknkiki_model_cd AND kiki_seizo_no"}
    VA_DUPE_CHECK{"va_kiki NOT in va_kiki_list<br/>AND not isRadiusZumi"}
    OLS_NON_MFR{"Not MFR or equals HGW"}
    OLS_ORDER_EXIST{"isDslOrderExist2<br/>SVC_ORDER_CD_OLS"}
    ADD_OLS_SETUP["addSOD ODR_NAIYO_CD_215<br/>OLS setup cancellation"]
    ADD_OLS_DELETE["addSOD ODR_NAIYO_CD_216<br/>OLS setup deletion"]
    EKK2811["runEKK2811B010<br/>Equipment option service contract list"]
    GET_KKOP["getKkOpSvcRec<br/>Find VA service record"]
    KKOP_EXISTS{"ekk2811b010Map not null"}
    IS_KKOP_ON{"isKkopSvcOnKiki<br/>BBR service present"}
    ADD_417["addSOD ODR_NAIYO_CD_417<br/>MFR setup change VA cancellation"]
    IS_MRT_EXIST{"isDslOrderExist2<br/>SVC_ORDER_CD_MRT"}
    ADD_421["addSOD ODR_NAIYO_CD_421<br/>MFR setup cancellation VA cancel"]
    ADD_422["addSOD ODR_NAIYO_CD_422<br/>MFR setup deletion VA cancel"]
    SIP_FLOW{"checkTokiOrderExist"}
    NEW_END{"ODR_EXEC_DIV_NEW_END = '3'"}
    IS_CHG_ADDRESS{"isChgAddress<br/>Address changed"}
    IS_CHG_TEL{"isChgTel<br/>Phone number changed"}
    DSL_ORDER_EXIST{"isDslOrderExist<br/>SIP DSL order exists"}
    SET_IS_SIP["Set isSipDslSodHakko = true"]
    ADD_SIP_CANC["addSOD ODR_NAIYO_CD_229<br/>SIP cancellation"]
    ADD_SIP_DEL["addSOD ODR_NAIYO_CD_230<br/>SIP deletion"]
    ENUM_CHECK{"isMonaiBmp<br/>Intranet phone number"}
    ADD_ENUM["addSOD ODR_NAIYO_CD_266<br/>ENUM cancellation"]
    TOKI_BRANCH{"Pause conditions match"}
    TOKI_DATE_CHECK{"Future end date AND<br/>empty start/end dates"}
    ADD_TOKI_REG["addSOD ODR_NAIYO_CD_220<br/>SIP pause registration"]
    SET_TOKI_ORDER["Set isTokiOrdered = true"]
    EMERGENCY["addSOD ODR_NAIYO_CD_252<br/>Emergency notification deletion"]
    RADIUS_CANC["addSOD ODR_NAIYO_CD_204<br/>Radius auth cancellation"]
    RETURN(["Return param"])

    START --> EARLY_CHECK
    EARLY_CHECK -->|Not blank and telDslExe| RADIUS_CHECK
    EARLY_CHECK -->|Early return| RETURN
    RADIUS_CHECK -->|Yes| RADIUS_YES
    RADIUS_CHECK -->|No| GET_TRN
    RADIUS_YES --> GET_TRN
    GET_TRN --> CALL_EKK0191
    CALL_EKK0191 --> CALL_EKK0341
    CALL_EKK0341 --> BUILD_KIKI
    BUILD_KIKI --> DEVICE_LOOP
    DEVICE_LOOP --> MATCH_REGAL
    MATCH_REGAL -->|True| STORE_DEVICE
    STORE_DEVICE --> LOOP_END1["Continue loop"]
    MATCH_REGAL -->|False| MATCH_ROUTER
    MATCH_ROUTER -->|True| CALL_EKK0251
    CALL_EKK0251 --> STORE_DEVICE
    MATCH_ROUTER -->|False| MATCH_JUZEN_VA
    MATCH_JUZEN_VA -->|True| STORE_DEVICE
    MATCH_JUZEN_VA -->|False| MATCH_JUZEN_ROUTER
    MATCH_JUZEN_ROUTER -->|True| STORE_DEVICE
    MATCH_JUZEN_ROUTER -->|False| LOOP_END1
    LOOP_END1 --> CALL_EKK0251_MAIN
    CALL_EKK0251_MAIN --> STORE_FIELDS
    STORE_FIELDS --> DEV_EXISTS
    DEV_EXISTS -->|False| SIP_FLOW
    DEV_EXISTS -->|True| VA_DUPE_CHECK
    VA_DUPE_CHECK -->|In list or isRadiusZumi| SIP_FLOW
    VA_DUPE_CHECK -->|Valid| OLS_NON_MFR
    OLS_NON_MFR -->|True: Non-MFR or HGW| OLS_ORDER_EXIST
    OLS_NON_MFR -->|False: MFR| EKK2811
    OLS_ORDER_EXIST -->|No existing order| ADD_OLS_SETUP
    ADD_OLS_SETUP --> ADD_OLS_DELETE
    ADD_OLS_DELETE --> VA_LIST_ADD["va_kiki_list.add va_kiki"]
    VA_LIST_ADD --> SIP_FLOW
    EKK2811 --> GET_KKOP
    GET_KKOP --> KKOP_EXISTS
    KKOP_EXISTS -->|Exists| IS_KKOP_ON
    KKOP_EXISTS -->|Null| VA_LIST_ADD
    IS_KKOP_ON -->|BBR on| ADD_417
    IS_KKOP_ON -->|No BBR| IS_MRT_EXIST
    IS_MRT_EXIST -->|No existing| ADD_421
    ADD_421 --> ADD_422
    ADD_422 --> VA_LIST_ADD
    SIP_FLOW -->|No pause order| NEW_END_CHECK
    NEW_END_CHECK{"ODR_EXEC_DIV_NEW_END"}
    NEW_END_CHECK -->|Yes| IS_CHG_ADDRESS
    NEW_END_CHECK -->|No| SET_IS_SIP
    IS_CHG_ADDRESS -->|Address changed| SET_IS_SIP
    IS_CHG_ADDRESS -->|No| IS_CHG_TEL
    IS_CHG_TEL -->|Phone changed| SET_IS_SIP
    IS_CHG_TEL -->|No| DSL_ORDER_EXIST
    DSL_ORDER_EXIST -->|Order exists| SET_IS_SIP
    DSL_ORDER_EXIST -->|No| SET_IS_SIP
    SET_IS_SIP --> ADD_SIP_CANC
    ADD_SIP_CANC --> ADD_SIP_DEL
    ADD_SIP_DEL --> ENUM_CHECK
    ENUM_CHECK -->|Intranet phone| ADD_ENUM
    ENUM_CHECK -->|Not intranet| EMERGENCY_PATH
    ADD_ENUM --> EMERGENCY_PATH
    EMERGENCY_PATH{"checkTokiOrderExist"}
    EMERGENCY_PATH -->|No pause order| TOKI_BRANCH
    TOKI_BRANCH -->|Yes| TOKI_DATE_CHECK
    TOKI_BRANCH -->|No| EMERGENCY
    TOKI_DATE_CHECK --> ADD_TOKI_REG
    ADD_TOKI_REG --> SET_TOKI_ORDER
    SET_TOKI_ORDER --> EMERGENCY
    EMERGENCY --> RADIUS_CANC
    RADIUS_CANC --> RETURN
```

## 3. Parameter Analysis

| No | Parameter Name | Type | Business Description |
|----|---------------|------|---------------------|
| 1 | `handle` | `SessionHandle` | Session management handle carrying session context; used for database connections and transaction coordination throughout the method's service calls |
| 2 | `param` | `IRequestParameterReadWrite` | Parameter object containing model groups and control maps; carries business data read/written during processing. Returned with updated SOD records appended |
| 3 | `fixedText` | `String` | User-defined arbitrary string used for mapping key identification in parameter data access (param.getData(fixedText)); serves as a namespace for business data blocks |
| 4 | `sodMap` | `HashMap<String, Object>` | Service Order Data map containing nested sub-maps: SOD_KIHON_INFO (basic order info), SVC_KEI_INFO (service contract info), SVC_KEI_UCWK_INFO (service contract inner contract info). Also carries `adchg_no` for change-order tracking |
| 5 | `odr_exec_div` | `String` | Order issuance trigger classification that determines which business scenario is being processed. Value `"3"` (`ODR_EXEC_DIV_NEW_END`) indicates new-completion scenario; other values indicate withdrawal-completion. Controls whether SIP cancellation SODs should be issued |

**Instance fields accessed by this method:**

| Field | Type | Business Description |
|-------|------|---------------------|
| `telDslExe` | `boolean` | Flag indicating whether optical phone line cancellation execution is enabled; if false, method returns early |
| `same_trn_no` | `String[]` | Same processing number, obtained via `getSame_trn_no`, used to correlate operations across the same transaction |
| `svc_kei_ucwk_no` | `String[]` | After processing, stores the service contract inner contract number |
| `svc_kei_ucwk_gadtm` | `String[]` | After processing, stores the version registration datetime |
| `kktk_svc_kei_no` | `String[]` | After processing, stores the equipment provision service contract number |
| `kktk_svc_kei_gadtm` | `String[]` | After processing, stores the equipment version registration datetime |
| `taknkiki_model_cd` | `String[]` | After processing, stores the home device model code (e.g., "R0" for multifunction router, "S0" for HGW) |
| `kiki_seizo_no` | `String[]` | After processing, stores the VA device manufacturing/serial number |
| `chbf_kktk_svc_kei_gadtm` | `String[]` | After processing, stores the pre-change equipment provision service version registration datetime |
| `svc_kei_kaisen_ucwk_no` | `String` | Service contract line inner contract number, obtained from EKK0251B001SC |
| `svc_kei_kaisen_ucwk_gadtm` | `String` | Service contract line inner contract version registration datetime |
| `kkop_svc_kei_va` | `String[]` | Equipment option service contract number (VA), obtained from EKK2811B010 |
| `kkop_svc_kei_va_gadtm` | `String[]` | Equipment option service VA version registration datetime |
| `kkop_svc_kei_router` | `String[]` | Equipment option service contract number (router) |
| `kkop_svc_kei_router_gadtm` | `String[]` | Equipment option service router version registration datetime |
| `va_kiki_list` | `List<String>` | List of previously processed VA device identifiers to prevent duplicate SOD generation |
| `isRadiusZumi` | `boolean` | Flag tracking whether Radius cancellation has already been processed; prevents duplicate Radius SOD |

## 4. CRUD Operations / Called Services

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

| CRUD | SC / CBS | SC Code | Entity / DB | Operation Description |
|------|----------|---------|-------------|----------------------|
| R | `getSame_trn_no` | JKKAdchgHakkoSODCC | - | Reads same processing number to correlate operations within the same transaction |
| R | `callEKK0191A010SC` | EKK0191A010SC | EO optical phone template | Reads EO optical phone equipment template data to obtain VA port number, VA device model code, VA manufacturing serial number, and VA change number |
| R | `callEKK0341B008SC` | EKK0341B008SC | Equipment provision service | Reads equipment provision service contract list matching the service contract number |
| R | `getMfrInfoByEKK0341B019` | EKK0341B019CBS | Multifunction router equipment | Reads equipment list filtered to extract particularly multifunction routers from line-attached equipment |
| R | `getMfrInfoOfBfKaisen` | EKK0341B022CBS | Pre-change multifunction router | Reads equipment list for multifunction routers before service line change, for address-change scenarios |
| R | `getDataFromA010Res` | JKKAdchgHakkoSODCC | - | Transforms map key names from A010 result format to match list-agreement result format |
| C | `addSOD` | JKKAdchgHakkoSODCC | SOD | Creates Service Order Data records for OLS setup/cancellation (215), OLS setup/deletion (216), SIP cancellation (229), SIP deletion (230), ENUM cancellation (266), pause registration (220), emergency notification deletion (252), Radius cancellation (204), MFR setup/change (417), MFR setup/cancellation (421), MFR setup/deletion (422) |
| R | `getEKK0251B001SC` | EKK0251B001SC | Service contract line inner contract list | Reads service contract line inner contract agreement list (service contract number) to obtain inner contract number and version datetime |
| R | `runEKK0251A010` | EKK0251A010CBS | Service line agreement | Reads service line inner contract agreement to obtain version datetime for pre-change-to-MFR scenarios |
| R | `runEKK2811B010` | EKK2811B010CBS | Equipment option service contract | Reads equipment option service contract list (equipment provision service) to find VA service records |
| R | `getKkOpSvcRec` | JKKAdchgHakkoSODCC | - | Retrieves equipment option service record from search result list, filtering by VA service code ("G02") |
| - | `isRegalVaKiki` | JKKAdchgHakkoSODCC | - | Checks if device is a VA (Virtual Access) device matching the VA model code and change number |
| - | `isRegalMfRouter` | JKKAdchgHakkoSODCC | - | Checks if device is a multifunction router with address-change validation checks |
| - | `isJuhenVA` | JKKAdchgHakkoSODCC | - | Checks if device is a residential-change VA (address change scenario) |
| - | `isJuhenMfRouter` | JKKAdchgHakkoSODCC | - | Checks if device is a residential-change multifunction router |
| - | `isKkopSvcOnKiki` | JKKAdchgHakkoSODCC | - | Checks whether BBR service is present on the equipment for optional service routing |
| - | `isDslOrderExist` | JKKAdchgHakkoSODCC | - | Checks if SIP DSL cancellation/deletion order already exists to prevent duplicates |
| - | `isDslOrderExist2` | JKKAdchgHakkoSODCC | - | Checks if OLS or MFR cancellation/deletion order already exists (with device model and serial criteria) |
| - | `isChgAddress` | JKKAdchgHakkoSODCC | - | Checks whether the service address has changed (used to determine if SIP SOD is needed) |
| - | `isChgTel` | JKKAdchgHakkoSODCC | - | Checks whether the phone number has changed |
| - | `checkTokiOrderExist` | JKKAdchgHakkoSODCC | - | Checks if a pause registration order already exists for the service contract inner contract number |
| - | `updItntokiInfo` | JKKAdchgHakkoSODCC | EKK2091A010CBS, EKK0011B001CBS | Updates pause registration start date by calling EKK2091A010 (address change agreement) and EKK0011B001 (service contract inner contract list) |
| - | `isTelCancelSodIssued` | JKKAdchgHakkoSODCC | - | Checks if a tel-cancellation SOD has already been issued, used to prevent duplicate Radius cancellation SOD |
| - | `isMonaiBmp` | JKKAdchgHakkoSODCC | - | Checks if the telephone number is an intranet phone number (自社番号); requires company code "CD00189_JISHA" |
| - | `shkkaMap` | JKKAdchgHakkoSODCC | - | Shifts character encoding in SOD maps |
| R | `JCCBPCommon.getOpeDate` | JCCBPCommon | - | Reads the current operation date for date comparison |
| R | `JFUeoTelOpTransferCC.getData` | JFUeoTelOpTransferCC | - | Used in related flow for data retrieval |
| R | `JFUEoTvCngAddStbCC.getOpeDate` | JFUEoTvCngAddStbCC | - | Alternative operation date retrieval |
| R | `JFUHikkosiNaviRelAddCC.getOpeDate` | JFUHikkosiNaviRelAddCC | - | Alternative operation date retrieval |
| R | `JFUTransferCC.getData` | JFUTransferCC | - | Used in related flow for data retrieval |
| R | `JFUTransferListToListCC.getData` | JFUTransferListToListCC | - | Used in related flow for data retrieval |

## 5. Dependency Trace

### Callers:

| # | Caller (Screen/Batch) | Call Chain (Full Path to this Method) | Terminal (SC / CRUD / Entity) |
|---|----------------------|--------------------------------------|-------------------------------|
| 1 | Method: `htelNoDslOdrCtrlBfSvcStart` (JKKAdchgHakkoSODCC) | `htelNoDslOdrCtrlBfSvcStart` -> `htelNoDslOdrCtrl(handle, param, fixedText, sodMap, odr_exec_div)` | `addSOD [C] SOD`, `addSOD [C] SOD`, `callEKK0191A010SC [R]`, `callEKK0341B008SC [R]`, `callEKK2811B010 [R]` |
| 2 | Method: `telNoAddOdrCtrl` (JKKAdchgHakkoSODCC, L24062) | `telNoAddOdrCtrl` -> `htelNoDslOdrCtrl(keepSesHandle.get(), param, fixedText, sodMap, odr_exec_div)` (in ODR_EXEC_DIV_NEW_END branch, after setParamHtelNoDslOdr001) | `addSOD [C] SOD`, `addSOD [C] SOD`, `callEKK0191A010SC [R]`, `callEKK0341B008SC [R]` |
| 3 | Method: `htelNoDslOdrCtrl` (JKKHakkoSODCC, L850) | `htelNoDslOdrCtrl` (in JKKHakkoSODCC) -> `htelNoDslOdrCtrl(handle, param, fixedText, sodMap)` (old 4-param signature) | `addSOD [C] SOD`, `callEKK0191A010SC [R]`, `callEKK0341B008SC [R]` |
| 4 | Screen: KKSV0004 (assumed) | `KKSV0004CBS` -> `htelNoDslOdrCtrlBfSvcStart` -> `htelNoDslOdrCtrl` | `addSOD [C] SOD`, `addSOD [C] SOD` |

### Terminal operations reached FROM this method:

| # | Terminal Operation | Type | Details |
|---|-------------------|------|---------|
| 1 | `addSOD(handle, param, ODR_NAIYO_CD_215)` | C | OLS setup/cancellation SOD creation |
| 2 | `addSOD(handle, param, ODR_NAIYO_CD_216)` | C | OLS setup/deletion SOD creation |
| 3 | `addSOD(handle, param, ODR_NAIYO_CD_229)` | C | SIP cancellation SOD creation |
| 4 | `addSOD(handle, param, ODR_NAIYO_CD_230)` | C | SIP deletion SOD creation |
| 5 | `addSOD(handle, param, ODR_NAIYO_CD_266)` | C | ENUM cancellation SOD creation |
| 6 | `addSOD(handle, param, ODR_NAIYO_CD_220)` | C | SIP pause registration SOD creation |
| 7 | `addSOD(handle, param, ODR_NAIYO_CD_252)` | C | Emergency notification deletion SOD creation |
| 8 | `addSOD(handle, param, ODR_NAIYO_CD_204)` | C | Radius authentication cancellation SOD creation |
| 9 | `addSOD(handle, param, ODR_NAIYO_CD_417)` | C | MFR setup/change VA cancellation SOD creation |
| 10 | `addSOD(handle, param, ODR_NAIYO_CD_421)` | C | MFR setup/cancellation VA cancellation SOD creation |
| 11 | `addSOD(handle, param, ODR_NAIYO_CD_422)` | C | MFR setup/deletion VA cancellation SOD creation |
| 12 | `callEKK0191A010SC` | R | EO optical phone template read |
| 13 | `callEKK0341B008SC` | R | Equipment provision service read |
| 14 | `getEKK0251B001SC` | R | Service contract line inner contract list read |
| 15 | `runEKK0251A010` | R | Service line agreement read |
| 16 | `runEKK2811B010` | R | Equipment option service contract list read |
| 17 | `getMfrInfoByEKK0341B019` | R | Multifunction router equipment read |
| 18 | `getMfrInfoOfBfKaisen` | R | Pre-change multifunction router equipment read |
| 19 | `updItntokiInfo` | C | Pause registration start date update (calls EKK2091A010CBS, EKK0011B001CBS) |

## 6. Per-Branch Detail Blocks

**Block 1** — [SET] Extract SOD sub-maps and apply character encoding shift (L11692-L11697)

| # | Type | Code |
|---|------|------|
| 1 | GET | `sod_kihon_info_Map = (HashMap)sodMap.get(SOD_KIHON_INFO)` |
| 2 | GET | `svc_kei_info_Map = (HashMap)sodMap.get(SVC_KEI_INFO)` |
| 3 | GET | `svc_kei_ucwk_info_Map = (HashMap)sodMap.get(SVC_KEI_UCWK_INFO)` |
| 4 | EXEC | `sod_kihon_info_Map = shkkaMap(sod_kihon_info_Map)` // shift character encoding |
| 5 | EXEC | `svc_kei_info_Map = shkkaMap(svc_kei_info_Map)` |
| 6 | EXEC | `svc_kei_ucwk_info_Map = shkkaMap(svc_kei_ucwk_info_Map)` |

**Block 2** — [SET] Extract key fields from SOD maps (L11701-L11706)

| # | Type | Code |
|---|------|------|
| 1 | GET | `sys_id = (String)sod_kihon_info_Map.get(INFO_SYSID)` |
| 2 | GET | `ido_div = (String)sod_kihon_info_Map.get(INFO_IDO_DIV)` // movement classification |
| 3 | GET | `svc_kei_no = (String)svc_kei_info_Map.get(INFO_SVC_KEI_NO)` |
| 4 | GET | `svc_kei_ucwk_no = (String)svc_kei_ucwk_info_Map.get(INFO_SVC_KEI_UCWK_NO)` |
| 5 | GET | `chaf_svc_kei_ucwk_gene_add_dtm = (String)svc_kei_ucwk_info_Map.get(INFO_CHAF_SVC_KEI_UCWK_GENE_ADD_DTM)` |

**Block 3** — [IF] Prefer original service contract inner contract number (IKK-2013-0001085) (L11709-L11714)

| # | Type | Code |
|---|------|------|
| 1 | IF | `!StringUtils.isEmpty(moto_svc_kei_ucwk_no) && !StringUtils.isEmpty(moto_svc_kei_ucwk_gene_add_dtm)` |
| 2 | SET | `svc_kei_ucwk_no = (String)svc_kei_ucwk_info_Map.get("moto_svc_kei_ucwk_no")` // prefer original |
| 3 | SET | `chaf_svc_kei_ucwk_gene_add_dtm = (String)svc_kei_ucwk_info_Map.get("moto_svc_kei_ucwk_gene_add_dtm")` |

**Block 4** — [IF] Early return guard (L11719-L11722)

| # | Type | Code |
|---|------|------|
| 1 | IF | `isBlank(svc_kei_ucwk_no) || !telDslExe` |
| 2 | RETURN | `return param` // early exit if no contract inner number or cancellation disabled |

**Block 5** — [IF] Check if tel-cancellation SOD already issued (OM-2014-0000624) (L11726-L11730)

| # | Type | Code |
|---|------|------|
| 1 | IF | `isTelCancelSodIssued(param, sodMap)` |
| 2 | SET | `isRadiusZumi = true` // prevent duplicate Radius cancellation SOD |

**Block 6** — [SET] Obtain same processing number (L11733-L11736)

| # | Type | Code |
|---|------|------|
| 1 | SET | `sameTrnNo = new String[1]` |
| 2 | CALL | `getSame_trn_no(param, handle, null, sameTrnNo)` |
| 3 | SET | `this.same_trn_no = sameTrnNo[0]` |

**Block 7** — [CALL] Call EKK0191A010SC to get EO optical phone template data (L11740-L11757)

| # | Type | Code |
|---|------|------|
| 1 | SET | `inHashUcwk = new HashMap` // input map for EKK0191A010 |
| 2 | SET | `resultHashUcwk = new HashMap` // result map for EKK0191A010 |
| 3 | SET | `inHashUcwk.put(SVC_KEI_UCWK_NO, svc_kei_ucwk_no)` |
| 4 | SET | `inHashUcwk.put(GENE_ADD_DTM, chaf_svc_kei_ucwk_gene_add_dtm)` |
| 5 | CALL | `statusCode = callEKK0191A010SC(param, handle, inHashUcwk, resultHashUcwk, FUNC_CODE_1)` |
| 6 | IF | `0 != statusCode` |
| 7 | THROW | `new CCException(...)` |
| 8 | GET | `eKK0191A010Hash = (HashMap)resultHashUcwk.get(TEMPLATE_ID_EKK0191A010)` |
| 9 | GET | `vaPortNo = (String)eKK0191A010Hash.get(VA_PORT_NO)` |
| 10 | GET | `vaTaknkikiModelCd = (String)eKK0191A010Hash.get(VA_TAKNKIKI_MODEL_CD)` |
| 11 | GET | `vaKikiSeizoNo = (String)eKK0191A010Hash.get(VA_KIKI_SEIZO_NO)` |
| 12 | GET | `vaKikiChgNo = (String)eKK0191A010Hash.get(VA_KIKI_CHG_NO)` // VA device change number |

**Block 8** — [CALL] Call EKK0341B008SC to get equipment provision service list (L11761-L11776)

| # | Type | Code |
|---|------|------|
| 1 | SET | `inHashKktk = new HashMap` // input map for EKK0341B008 |
| 2 | SET | `resultHashKktk = new HashMap` // result map |
| 3 | SET | `inHashKktk.put(SVC_KEI_NO, svc_kei_no)` |
| 4 | CALL | `statusCode = callEKK0341B008SC(param, handle, inHashKktk, resultHashKktk, FUNC_CODE_1)` |
| 5 | IF | `0 != statusCode` |
| 6 | THROW | `new CCException(...)` |
| 7 | GET | `msgEKK0341B022SCList = (CAANMsg[])resultHashKktk.get(TEMPLATE_ID_EKK0341B022)` |

**Block 9** — [FOR] Iterate through device list and match VA/router (L11816-L11910)

| # | Type | Code |
|---|------|------|
| 1 | SET | `newKikiList = new ArrayList` // combined VA device list |
| 2 | FOR | `i=0 to msgEKK0341B022SCList.length` // add VA device data to newKikiList |
| 3 | EXEC | `newKikiList.add((HashMap)msgEKK0341B022SCList[i].getMsgData())` |
| 4 | CALL | `mfrKikiList = getMfrInfoByEKK0341B019(param, handle, FUNC_CODE_1, svc_kei_no)` // get multifunction routers |
| 5 | CALL | `mfrKikiListModed = getDataFromA010Res(mfrKikiList)` // normalize key names |
| 6 | EXEC | `newKikiList.addAll(mfrKikiListModed)` |
| 7 | CALL | `mfrKikiListBfKaisen = getMfrInfoOfBfKaisen(param, handle, fixedText, (String)sodMap.get("adchg_no"))` // pre-change MFRs |
| 8 | CALL | `mfrKikiListBfKsnModed = getDataFromA010Res(mfrKikiListBfKaisen)` |
| 9 | EXEC | `newKikiList.addAll(mfrKikiListBfKsnModed)` |
| 10 | FOR | `HashMap<String,Object> eKK0341B022SCHash : newKikiList` // loop through combined device list |
| 11 | IF | `isRegalVaKiki(eKK0341B022SCHash, vaTaknkikiModelCd, null, ido_div, vaKikiChgNo)` // Block 9.1 |
| 12 | ELSE-IF | `isRegalMfRouter(...)` with `isJuhenBfUse` and `isJuhenBfUseKkop` guards (Block 9.2) |
| 13 | ELSE-IF | `isJuhenVA(handle, param, adchg_no, eKK0341B022SCHash)` (Block 9.3) |
| 14 | ELSE-IF | `isJuhenMfRouter(handle, param, adchg_no, eKK0341B022SCHash) && StringUtils.isEmpty(kktkSvcKeiNo)` (Block 9.4) |

**Block 9.1** — [IF] isRegalVaKiki match (L11822-L11836) — VA device found

| # | Type | Code |
|---|------|------|
| 1 | SET | `kktkSvcKeiNo = (String)eKK0341B022SCHash.get(KKTK_SVC_KEI_NO)` // equipment provision service contract number |
| 2 | SET | `kktkGeneAddDtm = (String)eKK0341B022SCHash.get(GENE_ADD_DTM)` |
| 3 | SET | `vaKikiSeizoNo = (String)eKK0341B022SCHash.get(KIKI_SEIZO_NO)` |
| 4 | SET | `tknkiki_sbt_cd = (String)eKK0341B022SCHash.get(TAKNKIKI_SBT_CD)` // home device type code |
| 5 | BREAK | `break` // exit for loop, VA matched |

**Block 9.2** — [IF-ELSE-IF] isRegalMfRouter match with juhenBfUse guards (L11840-L11862) — Multifunction router found, post-change to MFR scenario

| # | Type | Code |
|---|------|------|
| 1 | IF | `isRegalMfRouter(...) && isJuhenBfUse(...) && isJuhenBfUseKkop(...)` // limits to previously-used devices |
| 2 | SET | `kktkSvcKeiNo = (String)eKK0341B022SCHash.get(KKTK_SVC_KEI_NO)` |
| 3 | SET | `kktkGeneAddDtm = (String)eKK0341B022SCHash.get(GENE_ADD_DTM)` |
| 4 | SET | `vaKikiSeizoNo = (String)eKK0341B022SCHash.get(KIKI_SEIZO_NO)` |
| 5 | SET | `tknkiki_sbt_cd = (String)eKK0341B022SCHash.get(TAKNKIKI_SBT_CD)` |
| 6 | SET | `svc_kei_kaisen_ucwk_no = (String)eKK0341B022SCHash.get(SVC_KEI_KAISEN_UCWK_NO)` |
| 7 | CALL | `ekk0251a010Map = runEKK0251A010(param, handle, svc_kei_kaisen_ucwk_no)` |
| 8 | SET | `svc_kei_kaisen_ucwk_gadtm = (String)ekk0251a010Map.get(GENE_ADD_DTM)` |
| 9 | BREAK | `break` |

**Block 9.3** — [IF] isJuhenVA match (L11868-L11879) — Residential-change VA (keeps info without break)

| # | Type | Code |
|---|------|------|
| 1 | IF | `isJuhenVA(handle, param, adchg_no, eKK0341B022SCHash)` |
| 2 | SET | `kktkSvcKeiNo = (String)eKK0341B022SCHash.get(KKTK_SVC_KEI_NO)` |
| 3 | SET | `kktkGeneAddDtm = (String)eKK0341B022SCHash.get(GENE_ADD_DTM)` |
| 4 | SET | `vaKikiSeizoNo = (String)eKK0341B022SCHash.get(KIKI_SEIZO_NO)` |
| 5 | SET | `tknkiki_sbt_cd = (String)eKK0341B022SCHash.get(TAKNKIKI_SBT_CD)` |
| 6 | NO BREAK | // continues loop to check other devices |

**Block 9.4** — [IF] isJuhenMfRouter match (L11883-L11896) — Residential-change multifunction router

| # | Type | Code |
|---|------|------|
| 1 | IF | `isJuhenMfRouter(...) && StringUtils.isEmpty(kktkSvcKeiNo)` // only if no VA matched yet |
| 2 | SET | `kktkSvcKeiNo = (String)eKK0341B022SCHash.get(KKTK_SVC_KEI_NO)` |
| 3 | SET | `kktkGeneAddDtm = (String)eKK0341B022SCHash.get(GENE_ADD_DTM)` |
| 4 | SET | `vaKikiSeizoNo = (String)eKK0341B022SCHash.get(KIKI_SEIZO_NO)` |
| 5 | SET | `tknkiki_sbt_cd = (String)eKK0341B022SCHash.get(TAKNKIKI_SBT_CD)` |

**Block 10** — [SET] Store processed device info into instance fields (L11902-L11923)

| # | Type | Code |
|---|------|------|
| 1 | SET | `this.svc_kei_ucwk_no = new String[1]` |
| 2 | SET | `this.svc_kei_ucwk_no[0] = svc_kei_ucwk_no` |
| 3 | SET | `this.svc_kei_ucwk_gadtm[0] = chaf_svc_kei_ucwk_gene_add_dtm` |
| 4 | SET | `this.kktk_svc_kei_no[0] = kktkSvcKeiNo` |
| 5 | SET | `this.kktk_svc_kei_gadtm[0] = kktkGeneAddDtm` |
| 6 | SET | `this.taknkiki_model_cd[0] = vaTaknkikiModelCd` |
| 7 | SET | `this.kiki_seizo_no[0] = vaKikiSeizoNo` |
| 8 | SET | `this.chbf_kktk_svc_kei_gadtm = new String[1]` |

**Block 11** — [CALL] Get service contract line inner contract list (EKK0251B001SC) (L11929-L11936)

| # | Type | Code |
|---|------|------|
| 1 | CALL | `eKK0251B001Hash = getEKK0251B001SC(param, handle, svc_kei_no, FUNC_CODE_1)` |
| 2 | SET | `this.svc_kei_kaisen_ucwk_no = (String)eKK0251B001Hash.get(SVC_KEI_KAISEN_UCWK_NO)` |
| 3 | SET | `this.svc_kei_kaisen_ucwk_gadtm = (String)eKK0251B001Hash.get(GENE_ADD_DTM)` |

**Block 12** — [IF] Device info exists check (ANK-2643-00-00) (L11942-L11948)

| # | Type | Code |
|---|------|------|
| 1 | IF | `!isBlank(this.kktk_svc_kei_no[0]) && !isBlank(this.kktk_svc_kei_gadtm[0]) && !isBlank(this.taknkiki_model_cd[0]) && !isBlank(this.kiki_seizo_no[0])` |
| 2 | SET | `va_kiki = vaTaknkikiModelCd + vaKikiSeizoNo` |

**Block 13** — [IF] VA duplicate prevention + OLS/MFR SOD creation (L11950-L12028)

| # | Type | Code |
|---|------|------|
| 1 | IF | `!JKKStringUtil.isNullBlank(va_kiki) && !va_kiki_list.contains(va_kiki)` |
| 2 | CALL | `setPrevGeneIfVaMod(handle, param, adchg_no, svc_kei_no, kktkSvcKeiNo)` |
| 3 | SET | `va_kiki = this.taknkiki_model_cd[0] + this.kiki_seizo_no[0]` // re-key after prev-generation update |
| 4 | IF | `!JKKStringUtil.isNullBlank(va_kiki) && !va_kiki_list.contains(va_kiki) && !isRadiusZumi` |
| 5 | IF | `!TAKNKIKI_SBT_CD_MFR.equals(tknkiki_sbt_cd) || TAKNKIKI_SBT_CD_HGW.equals(tknkiki_sbt_cd)` // [-> TAKNKIKI_SBT_CD_MFR="R0" (JKKAdchgHakkoSODCC.java:476)], [-> TAKNKIKI_SBT_CD_HGW="S0" (JKKStrConst.java:2616)] |
| 6 | IF | `!isDslOrderExist2(param, handle, SVC_ORDER_CD_OLS, kktk_svc_kei_no[0], taknkiki_model_cd[0], kiki_seizo_no[0])` |
| 7 | CALL | `param = addSOD(handle, param, ODR_NAIYO_CD_215)` // OLS setup/cancellation |
| 8 | CALL | `param = addSOD(handle, param, ODR_NAIYO_CD_216)` // OLS setup/deletion |
| 9 | ELSE | // MFR path |
| 10 | CALL | `kkop_svc_kei_srch_list = runEKK2811B010(param, handle, FUNC_CODE_1, kktk_svc_kei_no[0])` |
| 11 | CALL | `ekk2811b010Map = getKkOpSvcRec(kkop_svc_kei_srch_list, KKOP_SVC_CD_VA, false)` |
| 12 | IF | `ekk2811b010Map != null` |
| 13 | SET | `this.kkop_svc_kei_router[0] = ""` |
| 14 | SET | `this.kkop_svc_kei_router_gadtm[0] = ""` |
| 15 | SET | `this.kkop_svc_kei_va[0] = (String)ekk2811b010Map.get(KKOP_SVC_KEI_NO)` |
| 16 | SET | `this.kkop_svc_kei_va_gadtm[0] = (String)ekk2811b010Map.get(GENE_ADD_DTM)` |
| 17 | IF | `isKkopSvcOnKiki(param, fixedText, handle, sodMap, kktkSvcKeiNo, KKOP_SVC_CD_BBR)` |
| 18 | CALL | `param = addSOD(handle, param, ODR_NAIYO_CD_417)` // MFR setup/change VA cancellation |
| 19 | ELSE | `isKkopSvcOnKiki` returned false |
| 20 | IF | `!isDslOrderExist2(param, handle, SVC_ORDER_CD_MRT, kktk_svc_kei_no[0], taknkiki_model_cd[0], kiki_seizo_no[0])` |
| 21 | CALL | `param = addSOD(handle, param, ODR_NAIYO_CD_421)` // MFR setup/cancellation VA cancel |
| 22 | CALL | `param = addSOD(handle, param, ODR_NAIYO_CD_422)` // MFR setup/deletion VA cancel |
| 23 | EXEC | `va_kiki_list.add(va_kiki)` |

**Block 14** — [IF] SIP cancellation/deletion SOD dispatch based on odr_exec_div (L12105-L12228)

| # | Type | Code |
|---|------|------|
| 1 | SET | `isSipDslSodHakko = false` |
| 2 | SET | `telno = ""` |
| 3 | IF | `!checkTokiOrderExist(param, handle, svc_kei_ucwk_no)` // [-> no pause order exists] |
| 4 | IF | `ODR_EXEC_DIV_NEW_END.equals(odr_exec_div)` // [-> ODR_EXEC_DIV_NEW_END="3" (JKKAdchgHakkoSODConstCC.java:74)] |
| 5 | IF | `isChgTel(param, handle, sodMap, svc_kei_ucwk_no)` |
| 6 | SET | `isSipDslSodHakko = true` |
| 7 | ELSE-IF | `isChgAddress(param, handle, sodMap, svc_kei_ucwk_no, chaf_svc_kei_ucwk_gene_add_dtm)` |
| 8 | SET | `isSipDslSodHakko = true` |
| 9 | ELSE-IF | `isDslOrderExist(param, handle, svc_kei_ucwk_no)` |
| 10 | SET | `isSipDslSodHakko = true` |
| 11 | ELSE | // odr_exec_div != NEW_END => withdrawal-completed |
| 12 | SET | `isSipDslSodHakko = true` |
| 13 | IF | `isSipDslSodHakko` |
| 14 | CALL | `param = addSOD(handle, param, ODR_NAIYO_CD_229)` // SIP cancellation |
| 15 | CALL | `param = addSOD(handle, param, ODR_NAIYO_CD_230)` // SIP deletion |

**Block 15** — [IF-ELSE-IF] ENUM SOD creation for intranet phone numbers (ANK-4494-00-00 STEP2) (L12156-L12224)

| # | Type | Code |
|---|------|------|
| 1 | SET | `inHashUcwkEnum = new HashMap` |
| 2 | SET | `inHashUcwkEnum.put(SVC_KEI_UCWK_NO, this.svc_kei_ucwk_no[0])` |
| 3 | SET | `inHashUcwkEnum.put(GENE_ADD_DTM, this.svc_kei_ucwk_gadtm[0])` |
| 4 | CALL | `statusCode = callEKK0191A010SC(param, handle, inHashUcwkEnum, resultHashUcwkEnum, FUNC_CODE_1)` |
| 5 | GET | `eKK0191A010HashEnum = (HashMap)resultHashUcwkEnum.get(TEMPLATE_ID_EKK0191A010)` |
| 6 | IF | `eKK0191A010HashEnum != null` |
| 7 | SET | `bmpUmEnum = (String)eKK0191A010HashEnum.get(BMP_UM)` |
| 8 | SET | `telno = (String)eKK0191A010HashEnum.get(TELNO)` |
| 9 | IF | `isMonaiBmp(handle, param, telno, "CD00189_JISHA")` // [-> CD00189_JISHA=company code for self-number check] |
| 10 | CALL | `param = addSOD(handle, param, ODR_NAIYO_CD_266)` // ENUM cancellation |

**Block 16** — [IF] Pause order processing (itntokiKiboUm branch) (L12238-L12293)

| # | Type | Code |
|---|------|------|
| 1 | GET | `itntokiKiboUm = (String)eKK0191A010Hash.get(DSL_PAUSE_TOKI_KIBO_UM)` // pause registration desired presence |
| 2 | GET | `itntokiAddCd = (String)eKK0191A010Hash.get(DSL_PAUSE_TOKI_ADD_CD)` // pause registration code |
| 3 | IF | `ITNTOKI_KIBO_UM_ARI.equals(itntokiKiboUm) && ITNTOKI_ADD_CD_DSL.equals(itntokiAddCd)` |
| 4 | GET | `dslPauseTokiEndRsymd = (String)eKK0191A010Hash.get(DSL_PAUSE_TOKI_END_RSYMD)` |
| 5 | GET | `dslPauseTokiStaYmd = (String)eKK0191A010Hash.get(DSL_PAUSE_TOKI_STA_YMD)` |
| 6 | GET | `dslPauseTokiEndYmd = (String)eKK0191A010Hash.get(DSL_PAUSE_TOKI_END_YMD)` |
| 7 | IF | `isFutureDate(dslPauseTokiEndRsymd, getOpeDate(null), "0") && isEmptyDate(dslPauseTokiStaYmd) && isEmptyDate(dslPauseTokiEndYmd)` |
| 8 | CALL | `geneAddDtmUpd = updItntokiInfo(param, fixedText, svc_kei_ucwk_no, (String)sodMap.get("adchg_no"))` |
| 9 | SET | `chaf_svc_kei_ucwk_gene_add_dtm = geneAddDtmUpd` |
| 10 | SET | `this.svc_kei_ucwk_gadtm[0] = geneAddDtmUpd` |
| 11 | CALL | `param = addSOD(handle, param, ODR_NAIYO_CD_220)` // SIP pause registration |
| 12 | SET | `isTokiOrdered = true` |

**Block 17** — [IF] Telephone number update flag for post-SOD processing (L12298-L12318)

| # | Type | Code |
|---|------|------|
| 1 | IF | `isSipDslSodHakko && isMonaiBmp(handle, param, telno, null) && !isTokiOrdered` |
| 2 | GET | `inMap = (HashMap)param.getData(fixedText)` |
| 3 | GET | `resultList = (List)inMap.get("result_updJudgeTelNo")` |
| 4 | IF | `resultList == null` |
| 5 | SET | `resultList = new ArrayList` |
| 6 | SET | `inMap.put("result_updJudgeTelNo", resultList)` |
| 7 | SET | `resultMap = new HashMap` |
| 8 | SET | `resultMap.put("updJudgeTelNo", "1")` |
| 9 | SET | `resultMap.put("tgTelNo", telno)` |
| 10 | EXEC | `resultList.add(resultMap)` // passes phone update request to caller |

**Block 18** — [CALL] Emergency notification deletion (always) (L12322-L12325)

| # | Type | Code |
|---|------|------|
| 1 | CALL | `param = addSOD(handle, param, ODR_NAIYO_CD_252)` // emergency notification deletion |

**Block 19** — [IF] Radius authentication cancellation (only if not already done) (L12327-L12332)

| # | Type | Code |
|---|------|------|
| 1 | IF | `!isRadiusZumi` |
| 2 | CALL | `param = addSOD(handle, param, ODR_NAIYO_CD_204)` // Radius auth cancellation |
| 3 | SET | `isRadiusZumi = true` |

**Block 20** — [RETURN] Return updated parameter object (L12334)

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

## 7. Glossary

| Term | Type | Business Meaning |
|------|------|------------------|
| `svc_kei_no` | Field | Service contract number — the unique identifier for a customer's service agreement line |
| `svc_kei_ucwk_no` | Field | Service contract inner contract number — internal tracking ID for service contract detail lines |
| `svc_kei_kaisen_ucwk_no` | Field | Service contract line inner contract number — number for the service line's inner contract detail |
| `kktk_svc_kei_no` | Field | Equipment provision service contract number — the service contract associated with provided equipment (VA or MFR) |
| `chaf_svc_kei_ucwk_gene_add_dtm` | Field | Post-change service contract inner contract version registration datetime — version tracking for service changes |
| `ido_div` | Field | Movement classification — indicates the type of service movement (e.g., new installation, change, cancellation) |
| `odr_exec_div` | Field | Order issuance trigger classification — determines which business scenario triggers SOD creation |
| `taknkiki_sbt_cd` | Field | Home device type code — classifies device type (R0 = multifunction router, S0 = HGW, etc.) |
| `kiki_seizo_no` | Field | Device manufacturing serial number — unique serial number of the VA equipment |
| `va_kiki` | Field | VA device identifier — concatenation of VA model code + serial number for duplicate detection |
| SOD | Acronym | Service Order Data — the order creation entity in the KOPT system; each addSOD call creates one SOD record |
| OLS | Business term | Optical Line Terminal setup/cancellation — the fiber-optic line setup and teardown process for optical phone services |
| VA | Business term | Virtual Access — a device or service endpoint used in optical fiber phone services, typically a router or ONT |
| MFR | Business term | Multifunction Router — a home network device with routing, Wi-Fi, and telephony functions |
| HGW | Business term | Home Gateway — a residential gateway device (taknkiki_sbt_cd="S0") combining modem and router functionality |
| SIP | Business term | Session Initiation Protocol — the signaling protocol used for VoIP/telephone call setup in optical phone services |
| ENUM | Business term | E.164 Number Mapping — a DNS-based system for mapping telephone numbers to internet addresses; cancellation required when phone numbers are decommissioned |
| Radius | Business term | Remote Authentication Dial-In User Service — the authentication system for network access; cancellation required when service lines end |
| KKOP_SVC_CD_VA | Field | Equipment option service code "G02" — the code identifying VA-specific optional services |
| KKOP_SVC_CD_BBR | Field | Equipment option service code for BBR (broadband routing) service — indicates BBR is present on the equipment |
| TAKNKIKI_SBT_CD_MFR | Constant | Home device type code "R0" — identifies multifunction router devices |
| TAKNKIKI_SBT_CD_HGW | Constant | Home device type code "S0" — identifies home gateway devices |
| ODR_NAIYO_CD_215 | Constant | Order content code "215" — OLS setup/cancellation order |
| ODR_NAIYO_CD_216 | Constant | Order content code "216" — OLS setup/deletion order |
| ODR_NAIYO_CD_220 | Constant | Order content code "220" — SIP pause registration order |
| ODR_NAIYO_CD_229 | Constant | Order content code "229" — SIP cancellation order |
| ODR_NAIYO_CD_230 | Constant | Order content code "230" — SIP deletion order |
| ODR_NAIYO_CD_252 | Constant | Order content code "252" — Emergency notification deletion order |
| ODR_NAIYO_CD_266 | Constant | Order content code "266" — ENUM cancellation order (for intranet phone numbers) |
| ODR_NAIYO_CD_204 | Constant | Order content code "204" — Radius authentication cancellation order |
| ODR_NAIYO_CD_417 | Constant | Order content code "417" — Multifunction router setup/change with VA cancellation |
| ODR_NAIYO_CD_421 | Constant | Order content code "421" — Multifunction router setup/cancellation with VA cancellation |
| ODR_NAIYO_CD_422 | Constant | Order content code "422" — Multifunction router setup/deletion with VA cancellation |
| ODR_EXEC_DIV_NEW_END | Constant | Order execution division "3" — indicates new-completion scenario (phone line cancellation after new installation is complete) |
| SVC_ORDER_CD_OLS | Constant | Service order code for OLS — used in order-existence checks |
| SVC_ORDER_CD_MRT | Constant | Service order code for MFR — used in order-existence checks |
| ITNTOKI_KIBO_UM_ARI | Constant | Indicates pause registration is desired — the customer wants to pause (not immediately cancel) their service |
| ITNTOKI_ADD_CD_DSL | Constant | Indicates DSL pause registration code — the specific type of pause being requested |
| KOPT | Acronym | Fujitsu's telecom billing/order processing platform |
| eo hikaritel | Business term | EO Hikari Telephone — Fujitsu's fiber-optic telephone service brand |
| 光電話番号 | Business term | Optical telephone number — the telephone number associated with the fiber-optic phone line |
| 解約 | Business term | Cancellation/Termination — the business act of ending a service contract |
| トーク | Business term | Pause (temporary suspension) — a registration to temporarily suspend rather than fully cancel a service |
| 移転元 | Business term | Pre-move address — the address before a customer moves; used in address-change scenarios |
| 自社番号 | Business term | Intranet/self-company phone number — a phone number within the company's own numbering plan |
| CD00189_JISHA | Constant | Company code "CD00189_JISHA" — identifier for self-company (intranet) phone numbers |
| FUNC_CODE_1 | Constant | Function code "1" — used as a standard parameter value for SC invocation calls |
| isRadiusZumi | Field | Radius cancellation completion flag — tracks whether Radius cancellation SOD has already been issued |
| isSipDslSodHakko | Field | SIP DSL SOD issuance flag — determines whether SIP cancellation/deletion SODs should be created |
| isTokiOrdered | Field | Pause order issued flag — tracks whether a pause registration SOD has been created |
| isTelCancelSodIssued | Method | Checks if a tel-cancellation SOD has already been issued, used to prevent duplicate Radius cancellation SOD |
| shkkaMap | Method | Character encoding shift function — applies character code conversion to SOD sub-maps |
| updItntokiInfo | Method | Updates pause registration start date by calling EKK2091A010 (address change agreement) and EKK0011B001 (service contract inner contract list) |
| EKK0191A010CBSMsg1List | Constant | CBS message list class for EKK0191A010 — provides field constants for EO optical phone template data |
| EKK0341B008CBSMsg1List | Constant | CBS message list class for EKK0341B008 — provides field constants for equipment provision service data |
| EKK0341B022CBSMsg1List | Constant | CBS message list class for EKK0341B022 — provides field constants for equipment provision service list data |
| EKK0251B001CBSMsg1List | Constant | CBS message list class for EKK0251B001 — provides field constants for service contract line inner contract list data |
| EKK0251A010CBSMsg1List | Constant | CBS message list class for EKK0251A010 — provides field constants for service line agreement data |
| EKK2811B010CBSMsg1List | Constant | CBS message list class for EKK2811B010 — provides field constants for equipment option service contract data |
| EKK2091A010CBSMsg1List | Constant | CBS message list class for EKK2091A010 — provides field constants for address change agreement data |
| EKK0011B001CBSMsg1List | Constant | CBS message list class for EKK0011B001 — provides field constants for service contract inner contract list data |
| isEmptyDate | Method | Private helper method that checks if a YYYYMMDD string is empty, null, or the default "20991231" value |
| isJuhenBfUse | Method | Checks if a device was used at the pre-move address (address-change scenario validation) |
| isJuhenBfUseKkop | Method | Checks if an equipment option service was used at the pre-move address |
| same_trn_no | Field | Same processing number — used to correlate operations within the same transaction batch |
| keepSesHandle | Field | Holder for session handle — ThreadLocal storage for the session handle across method calls |