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

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

## 1. Role

### JKKAdchgHakkoSODCC.htelNoDslOdrCtrl()

This method implements the **Light Phone Cancellation Order Control Process** (光電話番号解約オーダ制御処理). It is the central orchestrator responsible for generating the correct set of Service Order Data (SOD) records when a light phone (eo光電話) service is being cancelled, whether as a standalone cancellation, a move-related cancellation (移転), or a withdrawal-completion (撤去完了) scenario.

The method handles **four primary service branches** based on the order execution trigger (`odr_exec_div`):
1. **New-service completion** (`ODR_EXEC_DIV_NEW_END = "3"`): Checks for phone number changes, address changes, and existing DSL orders to determine whether SIP cancellation SODs should be issued.
2. **Withdrawal completion** (`ODR_EXEC_DIV_DSL_END = "2"`): Unconditionally fires SIP cancellation orders.
3. **Address-registration creation** (`ODR_EXEC_DIV_AD_CHG = "1"`): Pass-through behavior.
4. **Other triggers**: Pass-through or no-op.

It implements a **dispatch-and-delegate design pattern**: the method first gathers all relevant device and contract data (VA equipment, multi-function router info, FTTH auth registration), then branches into distinct order-generation sub-flows — OLS (optical line terminal) setup/cancellation, multi-function router VA-disc setup/cancellation, SIP/ENUM cancellation, emergency notice/cancellation, and Radius authentication cancellation. Each sub-flow delegates to `addSOD()` to create individual SOD records with specific order content codes.

As a **shared utility called by many screens and cancellation flows**, this method sits at the heart of the K-Opticom customer core system's service-order fulfillment pipeline. It is called from `htelNoDslOdrCtrlBfSvcStart`, `htelNoDslOdrCtrl002`, and directly from `JKKHakkoSODCC.htelNoDslOdrCtrl`. The method processes the complete lifecycle of a light phone cancellation order, ensuring all dependent services (VA, MFR router, SIP, ENUM, Radius, emergency notices) are properly ordered for cancellation or de-registration.

## 2. Processing Pattern (Detailed Business Logic)

```mermaid
flowchart TD
    START(["htelNoDslOdrCtrl start"])

    START --> EXTRACT_SOD["Extract SOD info maps from sodMap"]
    EXTRACT_SOD --> SHKKA["Apply shkkaMap to each map"]
    SHKKA --> GET_PARAMS["Extract sys_id, ido_div, svc_kei_no, svc_kei_ucwk_no"]

    GET_PARAMS --> CHECK_BACKUP["Check moto_svc_kei_ucwk_no backup fields"]
    CHECK_BACKUP --> EARLY_EXIT{svc_kei_ucwk_no blank OR telDslExe false?}

    EARLY_EXIT -->|Yes| RETURN_PARAM["Return param unchanged"]
    EARLY_EXIT -->|No| CHECK_RADIUS_FLAG["Check isTelCancelSodIssued - set isRadiusZumi"]

    CHECK_RADIUS_FLAG --> GET_TRN["getSame_trn_no - obtain same processing number"]
    GET_TRN --> CALL_0191["callEKK0191A010SC - FTTH auth registration lookup"]
    CALL_0191 --> EXTRACT_0191["Extract VA portNo, modelCd, kikiSeizoNo, kikiChgNo"]

    EXTRACT_0191 --> CALL_0341["callEKK0341B008SC - device provision contract lookup"]
    CALL_0341 --> BUILD_KIKI["Build combined device list: VA + MFR router"]

    BUILD_KIKI --> LOOP_DEVICES["Loop through device list"]
    LOOP_DEVICES --> CHECK_VA{isRegalVaKiki?}

    CHECK_VA -->|Yes| SET_VA["Set kktkSvcKeiNo, geneAddDtm, kikiSeizoNo, tknkiki_sbt_cd"]
    CHECK_VA -->|No| CHECK_MFR{isRegalMfRouter?}

    CHECK_MFR -->|Yes| CHECK_JUHEN{isJuhenBfUse AND isJuhenBfUseKkop?}
    CHECK_MFR -->|No| CHECK_JV{isJuhenVA?}

    CHECK_JUHEN -->|Yes| SET_MFR["Set MFR info + runEKK0251A010 for line agreement"]
    CHECK_JUHEN -->|No| CHECK_JV2{isJuhenVA?}
    CHECK_JV -->|Yes| SET_JV["Set juhen VA info (no break)"]
    CHECK_JV2 -->|No| SKIP_DEVICE["Skip device (no break)"]

    SET_VA --> NEXT_DEV["va_kiki_list.add"]
    SET_MFR --> NEXT_DEV
    SET_JV --> NEXT_DEV
    SKIP_DEVICE --> NEXT_DEV
    NEXT_DEV --> MORE_DEV{More devices?}
    MORE_DEV -->|Yes| LOOP_DEVICES
    MORE_DEV -->|No| STORE_INST["Store results to instance fields"]

    STORE_INST --> CALL_0251["getEKK0251B001SC - service contract line list"]
    CALL_0251 --> STORE_0251["Store kaisen_ucwk_no and gadtm"]

    STORE_0251 --> CHECK_KIKI_FULL{All device info present?}
    CHECK_KIKI_FULL -->|No| SIP_ENUM_SEC["SIP and ENUM cancellation section"]
    CHECK_KIKI_FULL -->|Yes| CHECK_VA_KIKI{va_kiki unique?}

    CHECK_VA_KIKI -->|No| SIP_ENUM_SEC
    CHECK_VA_KIKI -->|Yes| SET_PREV["setPrevGeneIfVaMod"]

    SET_PREV --> RESET_VA["Re-set va_kiki from instance fields"]
    RESET_VA --> CHECK_RAD{!isRadiusZumi?}
    CHECK_RAD -->|No| CHECK_SBT{tknkiki_sbt_cd != MFR OR == HGW?}
    CHECK_RAD -->|Yes| CHECK_SBT

    CHECK_SBT -->|Non-MFR/HGW| OLS_EXIST{isDslOrderExist2 for OLS?}
    CHECK_SBT -->|MFR/HGW| RUN_KKOP["runEKK2811B010 + getKkOpSvcRec"]

    OLS_EXIST -->|No| ADD_OLS["addSOD 215 + 216 (OLS setup/cancel)"]
    OLS_EXIST -->|Yes| SKIP_OLS
    ADD_OLS --> SKIP_OLS

    RUN_KKOP --> HAS_ROUTER{Router service exists?}
    HAS_ROUTER -->|Yes| SET_ROUTER["Set kkop_svc_kei_router and kkop_svc_kei_va info"]
    HAS_ROUTER -->|No| CHECK_BBR_SVC{isKkopSvcOnKiki for BBR?}

    SET_ROUTER --> CHECK_BBR_SVC
    CHECK_BBR_SVC -->|Yes| ADD_VA_DISC["addSOD 417 (MFR change VA disc)"]
    CHECK_BBR_SVC -->|No| MRT_EXIST{isDslOrderExist2 for MRT?}

    MRT_EXIST -->|No| ADD_MRT_SOD["addSOD 421 + 422 (MFR setup/cancel VA disc)"]
    MRT_EXIST -->|Yes| NO_MRT_SOD
    ADD_VA_DISC --> NO_MRT_SOD
    ADD_MRT_SOD --> NO_MRT_SOD

    SKIP_OLS --> NO_MRT_SOD
    NO_MRT_SOD --> VA_KIKI_ADD["Add va_kiki to list"]
    VA_KIKI_ADD --> SIP_ENUM_SEC

    SIP_ENUM_SEC --> TOKI_CHECK{checkTokiOrderExist?}
    TOKI_CHECK -->|No TOKI ORDER| EXEC_DIV{odr_exec_div == 3 NEW_END?}

    EXEC_DIV -->|Yes| IS_CHG_TEL{isChgTel?}
    IS_CHG_TEL -->|Yes| SIP_FLAG_TRUE["isSipDslSodHakko = true"]
    IS_CHG_TEL -->|No| IS_CHG_ADDR{isChgAddress?}

    IS_CHG_ADDR -->|Yes| SIP_FLAG_T2["isSipDslSodHakko = true"]
    IS_CHG_ADDR -->|No| DSL_EXIST{isDslOrderExist?}

    DSL_EXIST -->|Yes| SIP_FLAG_T3["isSipDslSodHakko = true"]
    DSL_EXIST -->|No| SIP_FLAG_FALSE["isSipDslSodHakko = false"]

    EXEC_DIV -->|No| SIP_FLAG_TRUE_CANCEL["isSipDslSodHakko = true"]

    SIP_FLAG_TRUE --> SIP_DISC_SECTION
    SIP_FLAG_T2 --> SIP_DISC_SECTION
    SIP_FLAG_T3 --> SIP_DISC_SECTION
    SIP_FLAG_FALSE --> SIP_DISC_SECTION
    SIP_FLAG_TRUE_CANCEL --> SIP_DISC_SECTION

    SIP_DISC_SECTION --> ADD_SIP_SOD["addSOD 229 (SIP disc) + 230 (SIP cancel)"]
    ADD_SIP_SOD --> ENUM_LOOKUP["callEKK0191A010 for ENUM check"]
    ENUM_LOOKUP --> BMP_CHECK{BMP_UM set?}

    BMP_CHECK -->|No| SIP_ENUM_DONE
    BMP_CHECK -->|Yes| MONAI_CHECK{isMonaiBmp?}

    MONAI_CHECK -->|Yes| ADD_ENUM_CANC["addSOD 266 (ENUM cancellation)"]
    MONAI_CHECK -->|No| SIP_ENUM_DONE

    ADD_ENUM_CANC --> SIP_ENUM_DONE
    SIP_ENUM_DONE --> TOKI_INFO_CHECK{itntokiKibo == ARI AND itntokiAddCd == 2?}

    TOKI_INFO_CHECK -->|No| FINAL_SOD
    TOKI_INFO_CHECK -->|Yes| CHECK_TOKI_DATES{EndRsymd future AND StaYmd empty AND EndYmd empty?}

    CHECK_TOKI_DATES -->|Yes| UPD_TOKI["updItntokiInfo + addSOD 220 (SIP tokki reg)"]
    CHECK_TOKI_DATES -->|No| TOKI_SKIP

    UPD_TOKI --> TOKI_SKIP
    TOKI_SKIP --> IS_SIP_MONAI{isSipDslSodHakko AND isMonaiBmp AND !isTokiOrdered?}

    IS_SIP_MONAI -->|Yes| TELNO_UPD["Set result_updJudgeTelNo flag with tgTelNo"]
    IS_SIP_MONAI -->|No| FINAL_SOD

    TELNO_UPD --> FINAL_SOD
    FINAL_SOD --> ADD_EMERG["addSOD 252 (Emergency notice/cancel)"]
    ADD_EMERG --> CHECK_RAD_FINAL{!isRadiusZumi?}

    CHECK_RAD_FINAL -->|Yes| ADD_RADIUS["addSOD 204 (Radius auth disc)"]
    CHECK_RAD_FINAL -->|No| RETURN_FINAL

    ADD_RADIUS --> RETURN_FINAL
    RETURN_FINAL --> END_NODE(["Return param"])
    RETURN_PARAM --> END_NODE
```

**Key constant values resolved:**

| Constant | Value | Business Meaning |
|----------|-------|-----------------|
| `ODR_EXEC_DIV_NEW_END` | `"3"` | Order issuance trigger: new-service completion |
| `ODR_EXEC_DIV_DSL_END` | `"2"` | Order issuance trigger: withdrawal completion |
| `ODR_EXEC_DIV_AD_CHG` | `"1"` | Order issuance trigger: address registration |
| `ITNTOKI_KIBO_UM_ARI` | `"1"` | Transfer tokki (temporary pause) desire: present |
| `ITNTOKI_ADD_CD_DSL` | `"2"` | Transfer tokki registration code: light phone |
| `TAKNKIKI_SBT_CD_MFR` | `"R0"` | Home device type: multi-function router |
| `TAKNKIKI_SBT_CD_HGW` | `"S0"` | Home device type: home gateway |
| `KKOP_SVC_CD_VA` | `"G02"` | Equipment option service code: VA (Video Access) |
| `KKOP_SVC_CD_BBR` | `"G01"` | Equipment option service code: BBR (BroadBand Router) |
| `FUNC_CODE_1` | `"1"` | Function code: standard operation |
| `BMP_UM_ARI` | `"1"` | Number portability present: yes |

The processing flow follows five major phases:

**Phase 1 - Data Extraction and Early Exit Check (L11688-L11718):** Extracts SOD basic info, service contract info, and service contract detail info from the sodMap. Applies `shkkaMap()` to each map (a transformation/copy operation). Extracts key identifiers (sys_id, ido_div, svc_kei_no, svc_kei_ucwk_no). If the previous service contract number (`moto_svc_kei_ucwk_no`) is set, it takes precedence. If `svc_kei_ucwk_no` is blank or `telDslExe` is false, the method returns immediately with the input param unchanged.

**Phase 2 - Device and Contract Data Gathering (L11719-L11877):** Calls `getSame_trn_no()` to obtain a same-processing number for transaction grouping. Calls `callEKK0191A010SC()` to look up FTTH auth registration data and extract VA port number, VA device model code, VA device serial number, and VA device change number. Calls `callEKK0341B008SC()` to look up device provision service contracts. Builds a combined device list by merging VA devices with multi-function router devices (from `getMfrInfoByEKK0341B019`) and pre-transfer multi-function router devices (from `getMfrInfoOfBfKaisen`). Iterates through the device list to identify the appropriate device, setting device contract numbers, generation timestamps, and device type codes.

**Phase 3 - Instance Field Storage and OLS/MFR Processing (L11878-L12016):** Stores all gathered device information into instance fields as String[1] arrays. Calls `getEKK0251B001SC()` to obtain service contract line list data. If all device info is present (kktkSvcKeiNo, kktkGeneAddDtm, taknkikiModelCd, kikiSeizoNo all non-blank), checks if the device is a new VA or a change (not already in `va_kiki_list`). If not Radius-cancellation-completed and the device is not a pure MFR or is an HGW, checks whether OLS cancellation orders already exist via `isDslOrderExist2()`. If not, issues OLS setup/cancellation SODs (`ODR_NAIYO_CD_215` + `ODR_NAIYO_CD_216`). For HGW/MFR devices, queries equipment option services (`runEKK2811B010`) to determine if VA or BBR router services are associated, and issues appropriate cancellation SODs.

**Phase 4 - SIP/ENUM Cancellation Processing (L12017-L12302):** Checks whether tokki (temporary pause) orders already exist via `checkTokiOrderExist()`. If no tokki order exists, determines whether SIP cancellation SODs should be issued based on the `odr_exec_div` value and change conditions (phone number change, address change, existing DSL orders). If SIP cancellation is needed, issues SIP cancellation SODs (`ODR_NAIYO_CD_229` + `ODR_NAIYO_CD_230`). Then performs ENUM cancellation processing by re-querying FTTH auth data, checking if the original phone number is an internal number port (isMonaiBmp), and issuing ENUM cancellation SOD (`ODR_NAIYO_CD_266`) if applicable. For tokki registration scenarios, updates tokki info via `updItntokiInfo()` and issues SIP tokki registration SOD (`ODR_NAIYO_CD_220`). If SIP cancellation was issued and the phone number is an internal number port (not tokki-ordered), sets the phone number update flag (`result_updJudgeTelNo`).

**Phase 5 - Final SOD Issuance (L12324-L12435):** Always issues emergency notice/cancellation SOD (`ODR_NAIYO_CD_252`). If Radius cancellation has not been completed (`!isRadiusZumi`), issues Radius authentication cancellation SOD (`ODR_NAIYO_CD_204`) and sets the Radius-completed flag. Returns the updated param.

## 3. Parameter Analysis

| No | Parameter Name | Type | Business Description |
|----|---------------|------|---------------------|
| 1 | `handle` | `SessionHandle` | Session manager handle carrying the application session context (database connections, transaction info, and session-scoped state). Used for all downstream SC (Service Component) calls and mapper operations. |
| 2 | `param` | `IRequestParameterReadWrite` | Request parameter object containing model groups and control maps. Carries user-entered data, system-generated mapping data, and results of processing (e.g., `result_updJudgeTelNo`). Modified in-place by `addSOD()` calls which append SOD entries. Returned as the updated result. |
| 3 | `fixedText` | `String` | User-specified arbitrary string used as a data key/group identifier for extracting and writing business data. Often used to locate specific data sections within `param` via `param.getData(fixedText)`. |
| 4 | `sodMap` | `HashMap<String, Object>` | Service Order Data map containing structured SOD information. Key entries include `sod_kihon_info` (SOD basic info with sys_id, ido_div), `svc_kei_info` (service contract info with svc_kei_no), `svc_kei_ucwk_info` (service contract detail info), `adchg_no` (change number for pre-transfer device lookups), and `moto_svc_kei_ucwk_no` / `moto_svc_kei_ucwk_gene_add_dtm` (backup previous contract numbers). |
| 5 | `odr_exec_div` | `String` | Order issuance trigger classification that determines which cancellation flow to follow. Values: `"3"` (new-service completion), `"2"` (withdrawal completion), `"1"` (address registration). Drives the SIP cancellation decision tree in Phase 4. |

**Instance fields read by this method:**

| Field | Type | Business Meaning |
|-------|------|-----------------|
| `telDslExe` | `boolean` | Flag indicating whether light phone/DSL execution is permitted. If false, causes early return. |
| `va_kiki_list` | `List<String>` | List of already-processed VA device keys (modelCd + serialNo). Prevents duplicate SOD issuance for the same device. |
| `isRadiusZumi` | `boolean` | Flag indicating whether Radius cancellation has already been completed. Prevents duplicate Radius SOD issuance. |

## 4. CRUD Operations / Called Services

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

| CRUD | SC / CBS | SC Code | Entity / DB | Operation Description |
|------|----------|---------|-------------|----------------------|
| R | `JKKAdchgHakkoSODCC.getSame_trn_no` | - | - | Gets the same processing number for transaction grouping |
| R | `JKKAdchgHakkoSODCC.callEKK0191A010SC` | EKK0191A010SC | KK_T_ODR_HAKKO_JOKEN (FTTH auth registration) | Looks up FTTH auth registration data: VA port number, VA device model code, VA device serial number, VA device change number, BMP_UM (number portability flag), tokki registration info |
| R | `JKKAdchgHakkoSODCC.callEKK0341B008SC` | EKK0341B008SC | KK_T_KKTSVKEI (Device provision service contract) | Looks up device provision service contracts by service contract number (svc_kei_no). Returns EKK0341B022 contract list. |
| R | `JKKAdchgHakkoSODCC.getMfrInfoByEKK0341B019` | EKK0341B019SC | KK_T_KKTSVKEI_ISP (Device/multi-function router list) | Gets multi-function router devices attached to the line from the device list. |
| R | `JKKAdchgHakkoSODCC.getMfrInfoOfBfKaisen` | EKK0341B019SC (via adchg_no) | KK_T_KKTSVKEI_ISP (Pre-transfer device list) | Gets multi-function router devices used before transfer, for post-transfer device reconciliation. |
| R | `JKKAdchgHakkoSODCC.getDataFromA010Res` | - | - | Transforms Map key names from agreement-result format to list-agreement format (data adapter). |
| R | `JKKAdchgHakkoSODCC.getEKK0251B001SC` | EKK0251B001SC | KK_T_SVC_KEI_UCWK (Service contract detail) | Gets service contract line list by service contract number. Returns line agreement numbers and generation timestamps. |
| C | `JKKAdchgHakkoSODCC.addSOD` | - | KK_T_SOD (Service Order Data) | Creates a new SOD record. Called with specific ODR_NAIYO_CD order content codes. |
| R | `JKKAdchgHakkoSODCC.runEKK0251A010` | EKK0251A010SC | KK_T_SVC_KEI_UCWK (Service contract detail) | Gets service contract detail agreement for MFR line agreement processing. Returns generation timestamp. |
| R | `JKKAdchgHakkoSODCC.runEKK2811B010` | EKK2811B010SC | KK_T_KKOP_SVC_KEI (Equipment option service contract) | Gets equipment option service contract list for device-provided service (KKOP). Identifies VA and BBR router services. |
| R | `JKKAdchgHakkoSODCC.getKkOpSvcRec` | - | - | Extracts equipment option service record from contract list by service code (VA or BBR). |
| R | `JKKAdchgHakkoSODCC.getKkOpSvcRec` | - | - | Retrieves specific equipment option service record from a list filtered by service code. |
| R | `JKKAdchgHakkoSODCC.callEKK0191A010SC` (ENUM) | EKK0191A010SC | KK_T_ODR_HAKKO_JOKEN (FTTH auth registration) | Re-queries FTTH auth data for ENUM cancellation processing. Extracts BMP_UM (number portability) and TELNO (phone number). |
| R | `JKKAdchgHakkoSODCC.callEKK2091A010SC` | EKK2091A010SC | KK_T_AD_CHG (Address change) | Called within `updItntokiInfo()` for address change agreement lookup. |
| R | `JKKAdchgHakkoSODCC.setEKK0011B001` / `scCall.run` | EKK0011B001SC | KK_T_MSKM_DTL (Application detail) | Called within `updItntokiInfo()` for service contract detail list retrieval. |

**How to classify (applied):**
- **C** (Create): Methods with names like `addSOD` which create new SOD records
- **R** (Read): Methods with names like `call*SC`, `get*`, `runEKK*`, `getMfrInfo`, `getSame_trn_no` which query data from databases via service components

## 5. Dependency Trace

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

No screen/batch entry points found within 8 hops. Direct callers found: 7 methods.
Terminal operations from this method: `addSOD` [C], `addSOD` [C], `getData` [R], `getData` [R], `getData` [R], `getData` [R], `getData` [R], `isMonaiBmp` [-], `addSOD` [C], `updItntokiInfo` [-], `isEmptyDate` [-], `isEmptyDate` [-], `isFutureDate` [-], `isFutureDate` [-], `isFutureDate` [-], `isFutureDate` [-], `isFutureDate` [-], `getOpeDate` [R], `getOpeDate` [R], `getOpeDate` [R]

| # | Caller (Screen/Batch) | Call Chain (Full Path to this Method) | Terminal (SC / CRUD / Entity) |
|---|----------------------|--------------------------------------|-------------------------------|
| 1 | `htelNoDslOdrCtrlBfSvcStart` (JKKAdchgHakkoSODCC) | `htelNoDslOdrCtrlBfSvcStart` -> `htelNoDslOdrCtrl` | `addSOD` [C] KK_T_SOD (14 calls) |
| 2 | `JKKHakkoSODCC.htelNoDslOdrCtrl` | `htelNoDslOdrCtrl` -> `htelNoDslOdrCtrl` | `addSOD` [C] KK_T_SOD (14 calls) |
| 3 | `htelNoDslOdrCtrl002` (JKKAdchgHakkoSODCC) | `htelNoDslOdrCtrl002` -> `htelNoDslOdrCtrl` | `addSOD` [C] KK_T_SOD (14 calls) |
| 4 | `htelNoDslOdrCtrl002` (JKKHakkoSODCC) | `htelNoDslOdrCtrl002` -> `htelNoDslOdrCtrl` | `addSOD` [C] KK_T_SOD (14 calls) |
| 5 | `htelNoDslOdrCtrl002` (JKKAdchgCancelHakkoSODCC) | `htelNoDslOdrCtrl002` -> `htelNoDslOdrCtrl` | `addSOD` [C] KK_T_SOD (14 calls) |
| 6 | `htelNoDslOdrCtrl` (JKKAdchgCancelHakkoSODCC) | `htelNoDslOdrCtrl` -> `htelNoDslOdrCtrl` | `addSOD` [C] KK_T_SOD (14 calls) |
| 7 | Direct call from cancel flow | Direct call to `htelNoDslOdrCtrl` | `addSOD` [C] KK_T_SOD (14 calls) |

**Terminal operations from this method (ALL CRUD endpoints reached):**

| # | Terminal Operation | Type | Entity |
|---|-------------------|------|--------|
| 1 | `addSOD` | C | KK_T_SOD (Service Order Data) - OLS setup (ODR_215) |
| 2 | `addSOD` | C | KK_T_SOD (Service Order Data) - OLS cancel (ODR_216) |
| 3 | `addSOD` | C | KK_T_SOD (Service Order Data) - MFR change VA disc (ODR_417) |
| 4 | `addSOD` | C | KK_T_SOD (Service Order Data) - MFR setup VA disc (ODR_421) |
| 5 | `addSOD` | C | KK_T_SOD (Service Order Data) - MFR cancel VA disc (ODR_422) |
| 6 | `addSOD` | C | KK_T_SOD (Service Order Data) - SIP disc (ODR_229) |
| 7 | `addSOD` | C | KK_T_SOD (Service Order Data) - SIP cancel (ODR_230) |
| 8 | `addSOD` | C | KK_T_SOD (Service Order Data) - ENUM cancel (ODR_266) |
| 9 | `addSOD` | C | KK_T_SOD (Service Order Data) - SIP tokki reg (ODR_220) |
| 10 | `addSOD` | C | KK_T_SOD (Service Order Data) - Emergency notice/cancel (ODR_252) |
| 11 | `addSOD` | C | KK_T_SOD (Service Order Data) - Radius auth disc (ODR_204) |
| 12 | `getEKK0251B001SC` | R | KK_T_SVC_KEI_UCWK (Service contract detail) |
| 13 | `callEKK0191A010SC` | R | KK_T_ODR_HAKKO_JOKEN (FTTH auth registration) |
| 14 | `callEKK0341B008SC` | R | KK_T_KKTSVKEI (Device provision service contract) |
| 15 | `getMfrInfoByEKK0341B019` | R | KK_T_KKTSVKEI_ISP (Device/multi-function router list) |
| 16 | `runEKK2811B010` | R | KK_T_KKOP_SVC_KEI (Equipment option service contract) |
| 17 | `runEKK0251A010` | R | KK_T_SVC_KEI_UCWK (Service contract detail) |
| 18 | `callEKK2091A010SC` (via updItntokiInfo) | R | KK_T_AD_CHG (Address change) |
| 19 | `setEKK0011B001` (via updItntokiInfo) | R | KK_T_MSKM_DTL (Application detail) |

## 6. Per-Branch Detail Blocks

### Block 1 — Variable Declarations and Map Extraction (L11688)

> Initializes the method's working variables and extracts SOD information maps from the sodMap.

| # | Type | Code |
|---|------|------|
| 1 | SET | `statusCode = 0` // service-integration state flag |
| 2 | SET | `sod_kihon_info_Map = (HashMap)sodMap.get(SOD_KIHON_INFO)` // SOD basic info map |
| 3 | SET | `svc_kei_info_Map = (HashMap)sodMap.get(SVC_KEI_INFO)` // service contract info map |
| 4 | SET | `svc_kei_ucwk_info_Map = (HashMap)sodMap.get(SVC_KEI_UCWK_INFO)` // service contract detail info map |
| 5 | EXEC | `sod_kihon_info_Map = shkkaMap(sod_kihon_info_Map)` // transformation |
| 6 | EXEC | `svc_kei_info_Map = shkkaMap(svc_kei_info_Map)` // transformation |
| 7 | EXEC | `svc_kei_ucwk_info_Map = shkkaMap(svc_kei_ucwk_info_Map)` // transformation |

### Block 2 — Key Value Extraction (L11696)

> Extracts key identifiers from the three maps.

| # | Type | Code |
|---|------|------|
| 1 | SET | `sys_id = (String)sod_kihon_info_Map.get(INFO_SYSID)` // SYSID |
| 2 | SET | `ido_div = (String)sod_kihon_info_Map.get(INFO_IDO_DIV)` // migration classification |
| 3 | SET | `svc_kei_no = (String)svc_kei_info_Map.get(INFO_SVC_KEI_NO)` // service contract number |
| 4 | SET | `svc_kei_ucwk_no = (String)svc_kei_ucwk_info_Map.get(INFO_SVC_KEI_UCWK_NO)` // post-change contract detail number |
| 5 | SET | `chaf_svc_kei_ucwk_gene_add_dtm = (String)svc_kei_ucwk_info_Map.get(INFO_CHAF_SVC_KEI_UCWK_GENE_ADD_DTM)` // post-change registration datetime |

### Block 2.1 — Backup Field Check (L11702, IKK-2013-0001085)

> If previous service contract number is set, prefer it over the current one.

| # | Type | Code |
|---|------|------|
| 1 | IF | `!isEmpty(moto_svc_kei_ucwk_no) AND !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 previous contract number |
| 3 | SET | `chaf_svc_kei_ucwk_gene_add_dtm = (String)svc_kei_ucwk_info_Map.get("moto_svc_kei_ucwk_gene_add_dtm")` // prefer previous generation datetime |

### Block 3 — Early Exit Check (L11712)

> If the service contract detail number is blank OR telDslExe flag is false, exit early.

| # | Type | Code |
|---|------|------|
| 1 | IF | `isBlank(svc_kei_ucwk_no) OR !telDslExe` |
| 2 | RETURN | `return param` // no further processing needed |

### Block 4 — Radius Cancellation Flag Check (L11719, OM-2014-0000624)

> Checks whether a 2-number mid-section tokki (temporary pause) has already cancelled service, to prevent duplicate OLS issuance.

| # | Type | Code |
|---|------|------|
| 1 | IF | `isTelCancelSodIssued(param, sodMap)` |
| 2 | SET | `isRadiusZumi = true` // radius cancellation already done |

### Block 5 — Transaction Number and FTTH Auth Lookup (L11726-L11740)

> Gets the same processing number and looks up FTTH auth registration data.

| # | Type | Code |
|---|------|------|
| 1 | SET | `sameTrnNo = new String[1]` // same processing number holder |
| 2 | CALL | `getSame_trn_no(param, handle, null, sameTrnNo)` |
| 3 | SET | `this.same_trn_no = sameTrnNo[0]` |
| 4 | SET | `inHashUcwk = new HashMap` // input hash for EKK0191A010 |
| 5 | SET | `resultHashUcwk = new HashMap` // result hash for EKK0191A010 |
| 6 | SET | `inHashUcwk.put(SVC_KEI_UCWK_NO, svc_kei_ucwk_no)` |
| 7 | SET | `inHashUcwk.put(GENE_ADD_DTM, chaf_svc_kei_ucwk_gene_add_dtm)` |
| 8 | CALL | `statusCode = callEKK0191A010SC(param, handle, inHashUcwk, resultHashUcwk, FUNC_CODE_1)` |
| 9 | IF | `0 != statusCode` |
| 10 | EXEC | `throw new CCException(...)` |
| 11 | SET | `eKK0191A010Hash = (HashMap)resultHashUcwk.get(TEMPLATE_ID_EKK0191A010)` |
| 12 | SET | `vaPortNo = (String)eKK0191A010Hash.get(VA_PORT_NO)` |
| 13 | SET | `vaTaknkikiModelCd = (String)eKK0191A010Hash.get(VA_TAKNKIKI_MODEL_CD)` |
| 14 | SET | `vaKikiSeizoNo = (String)eKK0191A010Hash.get(VA_KIKI_SEIZO_NO)` |
| 15 | SET | `vaKikiChgNo = (String)eKK0191A010Hash.get(VA_KIKI_CHG_NO)` |

### Block 6 — Device Provision Contract Lookup (L11744-L11760)

> Calls EKK0341B008SC to look up device provision service contracts and builds a combined device list.

| # | Type | Code |
|---|------|------|
| 1 | SET | `inHashKktk = new HashMap` |
| 2 | SET | `resultHashKktk = new HashMap` |
| 3 | SET | `inHashKktk.put(SVC_KEI_NO, svc_kei_no)` |
| 4 | CALL | `statusCode = callEKK0341B008SC(param, handle, inHashKktk, resultHashKktk, FUNC_CODE_1)` |
| 5 | SET | `msgEKK0341B022SCList = (CAANMsg[])resultHashKktk.get(TEMPLATE_ID_EKK0341B022)` |
| 6 | SET | `kktkSvcKeiNo = ""`, `kktkGeneAddDtm = ""`, `tknkiki_sbt_cd = ""`, `svc_kei_kaisen_ucwk_no = ""`, `svc_kei_kaisen_ucwk_gadtm = ""` |
| 7 | SET | `newKikiList = new ArrayList` |
| 8 | FOR | `for i=0; i<msgEKK0341B022SCList.length; i++`: add VA device maps to newKikiList |
| 9 | CALL | `mfrKikiList = getMfrInfoByEKK0341B019(param, handle, FUNC_CODE_1, svc_kei_no)` |
| 10 | SET | `mfrKikiListModed = getDataFromA010Res(mfrKikiList)` |
| 11 | SET | `newKikiList.addAll(mfrKikiListModed)` |
| 12 | CALL | `mfrKikiListBfKaisen = getMfrInfoOfBfKaisen(param, handle, fixedText, (String)sodMap.get("adchg_no"))` |
| 13 | SET | `mfrKikiListBfKsnModed = getDataFromA010Res(mfrKikiListBfKaisen)` |
| 14 | SET | `newKikiList.addAll(mfrKikiListBfKsnModed)` |

### Block 7 — Device List Iteration (L11780)

> Iterates through the combined device list and identifies the appropriate device for the light phone service.

| # | Type | Code |
|---|------|------|
| 1 | FOR | `for (HashMap eKK0341B022SCHash : newKikiList)` |
| 2 | IF | `isRegalVaKiki(eKK0341B022SCHash, vaTaknkikiModelCd, null, ido_div, vaKikiChgNo)` — VA device attached to phone |
| 3 | SET | `kktkSvcKeiNo = (String)eKK0341B022SCHash.get(KKTK_SVC_KEI_NO)` |
| 4 | SET | `kktkGeneAddDtm = (String)eKK0341B022SCHash.get(GENE_ADD_DTM)` |
| 5 | SET | `vaKikiSeizoNo = (String)eKK0341B022SCHash.get(KIKI_SEIZO_NO)` |
| 6 | SET | `tknkiki_sbt_cd = (String)eKK0341B022SCHash.get(TAKNKIKI_SBT_CD)` |
| 7 | EXEC | `break` |

### Block 7.1 — Multi-Function Router Identification (L11798)

> Identifies a multi-function router attached to the phone, with pre-transfer usage restrictions.

| # | Type | Code |
|---|------|------|
| 1 | ELSE-IF | `isRegalMfRouter(...) AND isJuhenBfUse(handle, param, adchg_no, eKK0341B022SCHash) AND isJuhenBfUseKkop(handle, param, adchg_no, KKOP_SVC_CD_VA)` |
| 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 | EXEC | `break` |

### Block 7.2 — Pre-Transfer VA Device (L11819)

> Preserves pre-transfer VA devices without breaking (VA takes priority over MFR).

| # | Type | Code |
|---|------|------|
| 1 | ELSE-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)` |

### Block 7.3 — Pre-Transfer MFR with No Current Kktk (L11834)

> Preserves pre-transfer MFR when no current kktkSvcKeiNo is set.

| # | Type | Code |
|---|------|------|
| 1 | ELSE-IF | `isJuhenMfRouter(handle, param, adchg_no, eKK0341B022SCHash) AND isEmpty(kktkSvcKeiNo)` |
| 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 8 — Instance Field Storage (L11845-L11867)

> Stores all gathered device information into instance fields as String[1] arrays.

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

### Block 9 — Service Contract Line List Lookup (L11873)

> Gets service contract line list data for VLAN-ID processing.

| # | 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 10 — OLS/MFR Processing (L11884)

> If all device info is present, performs OLS setup/cancellation or MFR router processing.

| # | Type | Code |
|---|------|------|
| 1 | IF | `!isEmpty(kktk_svc_kei_no[0]) AND !isEmpty(kktk_svc_kei_gadtm[0]) AND !isEmpty(taknkiki_model_cd[0]) AND !isEmpty(kiki_seizo_no[0])` |
| 2 | SET | `va_kiki = vaTaknkikiModelCd + vaKikiSeizoNo` |
| 3 | IF | `!isNullBlank(va_kiki) AND !va_kiki_list.contains(va_kiki)` |
| 4 | CALL | `setPrevGeneIfVaMod(handle, param, adchg_no, svc_kei_no, kktkSvcKeiNo)` |
| 5 | SET | `va_kiki = this.taknkiki_model_cd[0] + this.kiki_seizo_no[0]` (re-set from instance fields) |
| 6 | IF | `!isNullBlank(va_kiki) AND !va_kiki_list.contains(va_kiki) AND !isRadiusZumi` |
| 7 | ELSE-IF | `!TAKNKIKI_SBT_CD_MFR.equals(tknkiki_sbt_cd) OR TAKNKIKI_SBT_CD_HGW.equals(tknkiki_sbt_cd)` |
| 8 | IF | `!isDslOrderExist2(param, handle, SVC_ORDER_CD_OLS, kktk_svc_kei_no[0], taknkiki_model_cd[0], kiki_seizo_no[0])` |
| 9 | CALL | `param = addSOD(handle, param, ODR_NAIYO_CD_215)` // OLS setup/cancellation |
| 10 | CALL | `param = addSOD(handle, param, ODR_NAIYO_CD_216)` // OLS setup/cancel |
| 11 | ELSE | (HGW/MFR device) |
| 12 | CALL | `kkop_svc_kei_srch_list = runEKK2811B010(param, handle, FUNC_CODE_1, kktk_svc_kei_no[0])` |
| 13 | CALL | `ekk2811b010Map = getKkOpSvcRec(kkop_svc_kei_srch_list, KKOP_SVC_CD_VA, false)` |
| 14 | IF | `ekk2811b010Map != null` |
| 15 | SET | `this.kkop_svc_kei_router[0] = ""` |
| 16 | SET | `this.kkop_svc_kei_router_gadtm[0] = ""` |
| 17 | SET | `this.kkop_svc_kei_va[0] = (String)ekk2811b010Map.get(KKOP_SVC_KEI_NO)` |
| 18 | SET | `this.kkop_svc_kei_va_gadtm[0] = (String)ekk2811b010Map.get(GENE_ADD_DTM)` |
| 19 | IF | `isKkopSvcOnKiki(param, fixedText, handle, sodMap, kktkSvcKeiNo, KKOP_SVC_CD_BBR)` |
| 20 | CALL | `param = addSOD(handle, param, ODR_NAIYO_CD_417)` // MFR setup/change VA disc |
| 21 | ELSE | (no BBR service) |
| 22 | IF | `!isDslOrderExist2(param, handle, SVC_ORDER_CD_MRT, kktk_svc_kei_no[0], taknkiki_model_cd[0], kiki_seizo_no[0])` |
| 23 | CALL | `param = addSOD(handle, param, ODR_NAIYO_CD_421)` // MFR setup VA disc |
| 24 | CALL | `param = addSOD(handle, param, ODR_NAIYO_CD_422)` // MFR cancel VA disc |
| 25 | EXEC | `va_kiki_list.add(va_kiki)` |

### Block 11 — SIP/ENUM Cancellation Processing (L12031-L12302)

> Main SIP/ENUM cancellation decision tree. Checks tokki order existence first.

| # | Type | Code |
|---|------|------|
| 1 | IF | `!checkTokiOrderExist(param, handle, svc_kei_ucwk_no)` |
| 2 | IF | `ODR_EXEC_DIV_NEW_END.equals(odr_exec_div)` (NEW_END = "3") |
| 3 | IF | `isChgTel(param, handle, sodMap, svc_kei_ucwk_no)` |
| 4 | SET | `isSipDslSodHakko = true` |
| 5 | ELSE-IF | `isChgAddress(param, handle, sodMap, svc_kei_ucwk_no, chaf_svc_kei_ucwk_gene_add_dtm)` |
| 6 | SET | `isSipDslSodHakko = true` |
| 7 | ELSE-IF | `isDslOrderExist(param, handle, svc_kei_ucwk_no)` |
| 8 | SET | `isSipDslSodHakko = true` |
| 9 | ELSE | (ODR_EXEC_DIV_DSL_END = "2" or other) |
| 10 | SET | `isSipDslSodHakko = true` (unconditional for withdrawal completion) |
| 11 | IF | `isSipDslSodHakko` |
| 12 | CALL | `param = addSOD(handle, param, ODR_NAIYO_CD_229)` // SIP disc |
| 13 | CALL | `param = addSOD(handle, param, ODR_NAIYO_CD_230)` // SIP cancel |
| 14 | CALL | `callEKK0191A010SC` (ENUM check re-query) |
| 15 | SET | `bmpUmEnum = (String)eKK0191A010HashEnum.get(BMP_UM)` |
| 16 | SET | `telno = (String)eKK0191A010HashEnum.get(TELNO)` |
| 17 | IF | `isMonaiBmp(handle, param, telno, CD00189_JISHA)` |
| 18 | CALL | `param = addSOD(handle, param, ODR_NAIYO_CD_266)` // ENUM cancellation |
| 19 | SET | `bmpUm = (String)eKK0191A010Hash.get(BMP_UM)` |

### Block 12 — Tokki Registration Processing (L12327-L12379)

> Handles transfer tokki (temporary pause) registration for light phone services.

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

### Block 13 — Phone Number Update Flag (L12397)

> If SIP cancellation was issued, phone number is internal port, and no tokki order exists, set the phone number update flag.

| # | Type | Code |
|---|------|------|
| 1 | IF | `isSipDslSodHakko AND isMonaiBmp(handle, param, telno, null) AND !isTokiOrdered` |
| 2 | SET | `inMap = (HashMap)param.getData(fixedText)` |
| 3 | SET | `resultList = (List)inMap.get("result_updJudgeTelNo")` (create if null) |
| 4 | SET | `resultMap = new HashMap` |
| 5 | SET | `resultMap.put("updJudgeTelNo", "1")` |
| 6 | SET | `resultMap.put("tgTelNo", telno)` |
| 7 | SET | `resultList.add(resultMap)` |

### Block 14 — Final SOD Issuance (L12422-L12435)

> Always issues emergency notice/cancellation SOD. Issues Radius cancellation SOD if not yet done.

| # | Type | Code |
|---|------|------|
| 1 | CALL | `param = addSOD(handle, param, ODR_NAIYO_CD_252)` // Emergency notice/cancel |
| 2 | IF | `!isRadiusZumi` |
| 3 | CALL | `param = addSOD(handle, param, ODR_NAIYO_CD_204)` // Radius auth disc |
| 4 | SET | `isRadiusZumi = true` |
| 5 | RETURN | `return param` |

## 7. Glossary

### Service Types and Domains

| Term | Type | Business Meaning |
|------|------|------------------|
| eo光電話 | Business term | eo Light Phone — K-Opticom's fixed-line telephone service over FTTH (fiber) infrastructure |
| SOD | Acronym | Service Order Data — internal work order entity used for telecommunications service provisioning and cancellation |
| FTTH | Business term | Fiber To The Home — fiber-optic broadband service infrastructure |
| OLS | Acronym | Optical Line Terminal — NTT's fiber access equipment that connects end-user devices to the FTTH network |
| MFR | Acronym | Multi-Function Router — home gateway device with routing, Wi-Fi, and VA (Video Access) capabilities |
| VA | Acronym | Video Access — K-Opticom's video-on-demand/broadcast TV service bundled with light phone |
| BBR | Acronym | BroadBand Router — K-Opticom's equipment-option router service |
| SIP | Acronym | Session Initiation Protocol — signaling protocol used for light phone call sessions over IP networks |
| ENUM | Acronym | E.164 Number Mapping — DNS-based telephone number-to-URI mapping service (for VoIP) |
| Radius | Business term | RADIUS authentication — remote authentication service for FTTH network access (PPPoE authentication) |
| 移転 | Japanese term | Transfer/Migration — customer relocation scenario where service is transferred to a new address |
| 撤去完了 | Japanese term | Withdrawal completion — end-of-service scenario where equipment is fully removed |
| トーキ | Japanese term | Tokki (temporary pause) — temporary service suspension with a defined start/end period |
| 番号照会 | Japanese term | Number lookup/verification — service to look up phone number information |

### Order Content Codes (ODR_NAIYO_CD)

| Code | Value | Business Meaning |
|------|-------|------------------|
| `ODR_NAIYO_CD_215` | `"215"` | OLS setup/cancellation — registers/deregisters the optical line terminal |
| `ODR_NAIYO_CD_216` | `"216"` | OLS setup/cancel — cancels the OLS registration |
| `ODR_NAIYO_CD_229` | `"229"` | SIP cancellation (disc) — deregisters SIP service for light phone calls |
| `ODR_NAIYO_CD_230` | `"230"` | SIP cancellation (cancel) — fully cancels the SIP service registration |
| `ODR_NAIYO_CD_252` | `"252"` | Emergency notice/cancellation — registers/cancels emergency notice service (110/119) |
| `ODR_NAIYO_CD_220` | `"220"` | SIP tokki registration — registers a temporary pause for SIP service |
| `ODR_NAIYO_CD_265` | `"265"` | ENUM registration (commented out, STEP2 migration) |
| `ODR_NAIYO_CD_266` | `"266"` | ENUM cancellation — cancels ENUM number mapping for internal port numbers |
| `ODR_NAIYO_CD_204` | `"204"` | Radius authentication cancellation — deregisters RADIUS authentication |
| `ODR_NAIYO_CD_417` | `"417"` | MFR setup/change (VA function disc) — changes multi-function router settings for VA disc |
| `ODR_NAIYO_CD_421` | `"421"` | MFR setup (VA function disc) — registers MFR with VA disc |
| `ODR_NAIYO_CD_422` | `"422"` | MFR cancel (VA function disc) — cancels MFR with VA disc |

### Service Order Codes

| Code | Business Meaning |
|------|------------------|
| `SVC_ORDER_CD_OLS` | Service order code: Optical Line Terminal |
| `SVC_ORDER_CD_MRT` | Service order code: Multi-Function Router |

### Key Fields

| Field | Type | Business Meaning |
|-------|------|------------------|
| `svc_kei_no` | Field | Service contract number — the primary identifier for a customer's service contract line item |
| `svc_kei_ucwk_no` | Field | Service contract detail number — internal tracking ID for service contract detail records |
| `kktk_svc_kei_no` | Field | Device provision service contract number — contract number for equipment provided to the customer |
| `taknkiki_sbt_cd` | Field | Home device type code — classifies device as MFR (`R0`), HGW (`S0`), etc. |
| `va_kiki` | Field | VA device key — composite key of VA model code + serial number, used to prevent duplicate OLS SOD issuance |
| `isRadiusZumi` | Field | Radius cancellation-completed flag — prevents duplicate Radius authentication cancellation SODs |
| `isSipDslSodHakko` | Field | SIP DSL SOD issuance flag — determines whether SIP cancellation SODs should be generated |
| `isTokiOrdered` | Field | Tokki-ordered flag — indicates whether a tokki order has been issued (affects ENUM processing) |
| `ida_div` | Field | Migration classification — indicates the type of service change (new, transfer, etc.) |
| `telDslExe` | Field | Light phone/DSL execution flag — gate control for whether light phone cancellation processing should proceed |
| `chaf_svc_kei_ucwk_gene_add_dtm` | Field | Post-change service contract detail generation registration datetime — timestamp of the latest change |
| `chbf_kktk_svc_kei_gadtm` | Field | Pre-change device provision service contract generation registration datetime — timestamp before equipment change |
| `itntokiKiboUm` | Field | Transfer tokki desire flag — whether the customer requested a temporary pause during transfer |
| `itntokiAddCd` | Field | Transfer tokki registration code — classifies the type of tokki (light phone = "2") |
| `BMP_UM` | Field | Number portability flag — indicates whether number porting is in use |
| `telno` | Field | Phone number — the customer's original phone number (used for ENUM internal number port check) |
| `same_trn_no` | Field | Same processing number — transaction grouping identifier for related operations |
| `adchg_no` | Field | Change number — identifier for the address change/order modification record |
