# Business Logic — JKKAdchgCancelHakkoSODCC.stpUkOdrCtrl() [409 LOC]

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

## 1. Role

### JKKAdchgCancelHakkoSODCC.stpUkOdrCtrl()

This method is the **interruption order control processor** (中断受付オーダ制御処理) within the K-Opticom billing back-end system. It handles the core business operation of generating Service Order Data (SOD) when a customer initiates a service interruption (中断) for their active telecom service contract. Rather than directly executing interruptions, it acts as a **routing/dispatch layer** that inspects the service type and existing service options to determine which specific SODs must be issued. The method follows a **service-type-dispatch pattern**: it classifies the target service into one of three categories -- Network (NET/Fiber), Mobile (MOB), or Telephone (TEL) -- and executes entirely different processing branches for each.

For the **NET branch** (Fiber-to-the-Home, ADSL), the method queries the customer's existing option services (such as Dual Up Connection and Fixed Cell broadband options) to check whether any have a "halted/interrupted" contract status (status 210). If so, it simultaneously issues corresponding suspension orders for those option services. The **MOB branch** (Mobile/eMobile, WiMAX, SpotWiFi) evaluates the customer's billing code (PCRS_CD) to determine if e-mobile temporary disconnection, WiMAX CUI suspension, or Wi-Fi Spot changes/suspensions apply. The **TEL branch** (SIP-based optical telephone) handles SIP-specific operations including temporary suspension, phone number portability cancellation when applicable, phone number info deletion if NTT phone number work is present, and transfer-toke (トクイ, transfer destination registration) deregistration.

Throughout all branches, the method coordinates with multiple SC (Service Component) calls to verify current contract states, resolves a "same transaction number" (same_trn_no) for deduplication, and sets instance fields that downstream processors will reference. It is always called as a pre-step before SOD issuance (e.g., in `executeOdrHakkoJokenAdd`), serving as the gatekeeper that decides "what orders to issue for this interruption."

## 2. Processing Pattern (Detailed Business Logic)

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

    START --> SVC_TYPE["Service Type: suc_kind from jdgSvcKind"]

    SVC_TYPE -->|"NET = 1 or FURETTSU = A22"| NET_BLOCK["NET Branch"]
    SVC_TYPE -->|"MOB = 4"| MOB_BLOCK["MOB Branch"]
    SVC_TYPE -->|"TEL = 2"| TEL_BLOCK["TEL Branch"]
    SVC_TYPE -->|"Else"| RETURN["Return param"]

    NET_BLOCK --> MANSION["isMansionPrvate"]
    MANSION -->|"true"| RETURN
    MANSION -->|"false"| CALL_EKK0351["callEKK0351B002SC: Option Service Contract Summary"]

    CALL_EKK0351 --> EKK_CHECK["statusCode check"]
    EKK_CHECK -->|"error"| THROW["throw CCException"]
    EKK_CHECK -->|"0"| LOOP_MSGS["Loop CAANMsg msgList"]

    LOOP_MSGS --> DUP["op_svc_cd == DUP = B020"]
    DUP -->|"true"| DUP_STAT["op_svc_kei_stat == 210"]
    DUP -->|"false"| FMT["op_svc_cd == FMTCEL = B075"]

    DUP_STAT -->|"true"| SET_DIAL["Set dial_flg = true"]
    DUP_STAT -->|"false"| FMT
    FMT -->|"true"| FMT_STAT["op_svc_kei_stat == 210"]
    FMT -->|"false"| END_LOOP["End loop"]

    FMT_STAT -->|"true"| SET_FMT["Set fmtcel_flg = true"]
    FMT_STAT -->|"false"| END_LOOP
    SET_DIAL --> END_LOOP
    SET_FMT --> END_LOOP

    END_LOOP --> DIAL_FMT["dial_flg || fmtcel_flg"]
    DIAL_FMT -->|"true"| CALL_SAME["getSame_trn_no"]
    DIAL_FMT -->|"false"| SET_EMPTY["same_trn_no = ''"]

    CALL_SAME --> STORE_SVC["svc_kei_ucwk_no = new String[1]"]
    SET_EMPTY --> STORE_SVC

    STORE_SVC --> ADD_SOD_FTTH["addSOD ODR_NAIYO_CD_106"]

    ADD_SOD_FTTH --> DIAL_FLG["dial_flg"]
    DIAL_FLG -->|"true"| ADD_SOD_DIAL["addSOD ODR_NAIYO_CD_140"]
    DIAL_FLG -->|"false"| FMT_FLG

    ADD_SOD_DIAL --> FMT_FLG["fmtcel_flg"]
    FMT_FLG -->|"true"| ADD_SOD_FMT["addSOD ODR_NAIYO_CD_168"]
    FMT_FLG -->|"false"| NET_END

    ADD_SOD_FMT --> NET_END["NET branch complete"]

    MOB_BLOCK --> SPOT["pcrs_cd == WIFISPOT = A30"]
    SPOT -->|"true"| SPOT_RET["same_trn_no = ''"]
    SPOT -->|"false"| CHG_SVC["chgSvcKeiJdg svc_kei_no"]

    CHG_SVC -->|"true"| CALL_SAME_MOB["getSame_trn_no"]
    CHG_SVC -->|"false"| CALL_EKK0161A["callEKK0161A010SC"]

    CALL_SAME_MOB --> STORE_SVC_MOB["same_trn_no = sameTrnNo[0]"]
    STORE_SVC_MOB --> CALL_EKK0161A

    CALL_EKK0161A --> EMCHECK["svc_kei_ucwk_no check"]
    EMCHECK -->|"true"| PUT_MAP["inHash put svc_kei_ucwk_no"]
    EMCHECK -->|"false"| GET_PCRS["ucwkPcrsCd from result"]

    PUT_MAP --> CALL_EMCHECK["callEKK0161A010SC"]
    CALL_EMCHECK --> EM_STATUS["statusCode check"]
    EM_STATUS -->|"error"| THROW_EM
    EM_STATUS -->|"0"| GET_PCRS
    THROW_EM --> THROW

    GET_PCRS --> EMOB["pcrs_cd == EMOBILE_7M = A26 or 21M = A27"]
    EMOB -->|"true"| SAKI["saki_svc_kei_no check"]
    EMOB -->|"false"| WIMAX["ucwkPcrsCd == WIMAX = A46"]

    SAKI -->|"true"| ADD_SOD_EM["addSOD ODR_NAIYO_CD_314"]
    SAKI -->|"false"| WIMAX
    ADD_SOD_EM --> WIMAX

    WIMAX -->|"true"| SET_WIMAX["svc_kei_ucwk_no = new String[1]"]
    WIMAX -->|"false"| FREE_W["ucwkPcrsCd == FREE_WIFI = A45"]

    SET_WIMAX --> ADD_SOD_WIMAX["addSOD ODR_NAIYO_CD_310"]
    ADD_SOD_WIMAX --> FREE_W

    FREE_W -->|"true"| CALL_EKK0161B["callEKK0161B003SC"]
    FREE_W -->|"false"| FINAL_CHK["isBlank same_trn_no"]

    CALL_EKK0161B --> WIFI_LOOP["Loop msgListUcwk"]
    WIFI_LOOP --> WIFI_INNER["For each: callEKK0161A010SC count A45"]
    WIFI_INNER --> WIFI_CNT["wifiSpotCnt >= 2"]
    WIFI_CNT -->|"true"| ADD_302["addSOD ODR_NAIYO_CD_302"]
    WIFI_CNT -->|"false"| WIFI_CNT1["wifiSpotCnt == 1"]
    WIFI_CNT1 -->|"true"| ADD_304["addSOD ODR_NAIYO_CD_304"]
    WIFI_CNT1 -->|"false"| WIFI_END["wifiSpotCnt == 0"]

    ADD_302 --> WIFI_END
    ADD_304 --> WIFI_END
    WIFI_END --> FINAL_CHK

    FINAL_CHK -->|"false"| SET_MAE["mae_recode_ch_svc_kei_no = svc_kei_no"]
    FINAL_CHK -->|"true"| MOB_END["MOB branch complete"]

    SET_MAE --> MOB_END

    TEL_BLOCK --> IDO_DIV["ido_div == USESTP = 00062"]
    IDO_DIV -->|"true"| CALL_SAME_TEL["getSame_trn_no"]
    IDO_DIV -->|"false"| SET_EMPTY_TEL["same_trn_no = ''"]

    CALL_SAME_TEL --> STORE_TEL["svc_kei_ucwk_no = new String[1]"]
    SET_EMPTY_TEL --> STORE_TEL

    STORE_TEL --> ADD_223["addSOD ODR_NAIYO_CD_223"]

    ADD_223 --> TEL_USESTP["ido_div == USESTP = 00062"]
    TEL_USESTP -->|"true"| CALL_KK0351["getOpSvcKei4Eohtel N050 = B029"]
    TEL_USESTP -->|"false"| CALL_EKK0191["callEKK0191A010SC"]

    CALL_KK0351 --> KK_LOOP["Loop EKK0351A010SCHash"]
    KK_LOOP --> KK_STAT["op_svc_kei_stat == 220 and mskm match"]
    KK_STAT -->|"true"| SET_TI["op_svc_kei_no_tikan store"]
    KK_STAT -->|"false"| END_KK

    SET_TI --> ADD_249["addSOD ODR_NAIYO_CD_249"]
    ADD_249 --> END_KK

    END_KK --> CALL_EKK0191

    CALL_EKK0191 --> BMP["BMP_UM_ARI = 1"]
    BMP -->|"true"| ADD_226["addSOD ODR_NAIYO_CD_226"]
    BMP -->|"false"| ADD_TOKI["addItnTokiSOD ODR_NAIYO_CD_221"]

    ADD_226 --> ADD_TOKI
    ADD_TOKI --> TEL_END["TEL branch complete"]

    TEL_END --> FINAL_RETURN(["Return param"])
    RETURN --> FINAL_RETURN
    NET_END --> FINAL_RETURN
    MOB_END --> FINAL_RETURN

    style START fill:#e1f5fe
    style FINAL_RETURN fill:#e1f5fe
```

**CRITICAL -- Constant Resolution:**

| Constant | Resolved Value | Business Meaning |
|----------|---------------|-----------------|
| `SVC_KIND_NET` | `"1"` | Network service type (FTTH/eo光ネット) |
| `SVC_KIND_MOB` | `"4"` | Mobile service type (eoモバイル) |
| `SVC_KIND_TEL` | `"2"` | Telephone service type (eo光電話) |
| `PCRS_CD_ADSL_FURETTSU` | `"A22"` | FLET'S ADSL pricing code (treated as NET) |
| `PCRS_CD_WIFISPOT` | `"A30"` | Wi-Fi Spot pricing code |
| `OP_SVC_CD_DUP` | `"B020"` | Dual Up Connection option service code |
| `OP_SVC_CD_FMTCEL` | `"B075"` | Fixed Cell option service code |
| `OP_SVC_CD_N050` | `"B029"` | 050 Number Plan option service code |
| `PCRS_CD_EMOBILE_7M` | `"A26"` | e-mobile 7.2M fixed plan pricing code |
| `PCRS_CD_EMOBILE_21M` | `"A27"` | e-mobile 21M fixed plan pricing code |
| `PCRS_CD_WIMAX` | `"A46"` | WiMAX authentication ID pricing code |
| `PCRS_CD_FREE_WIFI` | `"A45"` | Mobile Wi-Fi Unlimited Plan pricing code |
| `SVC_KEI_STAT_210` | `"210"` | Contract status: Halted/Interrupted |
| `SVC_KEI_STAT_220` | `"220"` | Contract status: Suspended (停止中) |
| `IDO_DIV_USESTP` | `"00062"` | Disruption classification: Usage Suspension |
| `BMP_UM_ARI` | `"1"` | NTT Phone Number: Present |

| ODR Constant | Resolved Value | Business Description |
|-------------|---------------|---------------------|
| `ODR_NAIYO_CD_106` | `"106"` | FTTH Authentication · Temp Suspension |
| `ODR_NAIYO_CD_140` | `"140"` | Dual Up Connection · Temp Suspension |
| `ODR_NAIYO_CD_168` | `"168"` | Fixed Cell · Temp Suspension |
| `ODR_NAIYO_CD_314` | `"314"` | e-mobile · Temp Disconnection |
| `ODR_NAIYO_CD_310` | `"310"` | WiMAX · CUI Temp Suspension |
| `ODR_NAIYO_CD_302` | `"302"` | Wi-Fi Spot · Change |
| `ODR_NAIYO_CD_304` | `"304"` | Wi-Fi Spot · Temp Suspension |
| `ODR_NAIYO_CD_223` | `"223"` | SIP · Temp Suspension |
| `ODR_NAIYO_CD_249` | `"249"` | Number Portability · Cancellation |
| `ODR_NAIYO_CD_226` | `"226"` | SIP · Phone Number Info Deletion |
| `ODR_NAIYO_CD_221` | `"221"` | SIP · Transfer Source Deregistration |

## 3. Parameter Analysis

| No | Parameter Name | Type | Business Description |
|----|---------------|------|---------------------|
| 1 | `handle` | `SessionHandle` | Session manager handle carrying session context (DB connection, transaction info) used by all downstream SC calls |
| 2 | `param` | `IRequestParameterReadWrite` | Parameter object containing model groups, control maps, and request data. Modified in-place with new service order parameters; returned after processing |
| 3 | `fixedText` | `String` | Request data map ID (リクエストデータマップＩＤ) -- identifier for the request data map, not directly used in this method |
| 4 | `sodMap` | `HashMap<String, Object>` | SOD (Service Order Data) map containing nested sub-maps for SOD basic info (SOD_KIHON_INFO), service contract info (SVC_KEI_INFO), and service contract detail info (SVC_KEI_UCWK_INFO) |

**Instance fields read by this method:**

| Field | Type | Business Meaning |
|-------|------|-----------------|
| `pcrs_cd` | `String` | Pricing code -- determines the specific billing plan (e.g., ADSL FLET'S, e-mobile 7.2M, Wi-Fi Spot) |
| `ido_div` | `String` | Disruption classification code -- determines the type of contract change (e.g., USESTP = 00062 for usage suspension) |
| `mskm_dtl_no` | `String` | Application detail number (申請明細番号) -- used to match option service contract detail records |

## 4. CRUD Operations / Called Services

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

| CRUD | SC / CBS | SC Code | Entity / DB | Operation Description |
|------|----------|---------|-------------|----------------------|
| R | `JKKAdchgCancelHakkoSODCC.callEKK0351B002SC` | EKK0351B002SC | - | Query: Option Service Contract Summary (サービス契約一覧照会) -- retrieves list of option services (Dual Up Connection, Fixed Cell) for the given service contract number |
| R | `JKKAdchgCancelHakkoSODCC.callEKK0161A010SC` | EKK0161A010SC | - | Query: Service Contract Detail Consent (サービス契約内容合意照会) -- retrieves service contract detail info including pricing code (PCRS_CD), called for mobile service detail and Wi-Fi Spot verification |
| R | `JKKAdchgCancelHakkoSODCC.callEKK0161B003SC` | EKK0161B003SC | - | Query: Service Contract Detail Summary by SYSID (サービス契約内容一覧照会 SYSID) -- retrieves all service contract details for a given SYSID, used in Wi-Fi Spot count processing |
| R | `JKKAdchgCancelHakkoSODCC.callEKK0191A010SC` | EKK0191A010SC | - | Query: Service Contract Detail: eo光電話 · Consent (サービス契約内容：eo光電話＞合意照会) -- retrieves service contract detail for optical telephone including NTT phone number flag (BMP_UM) |
| R | `JKKAdchgCancelHakkoSODCC.getSame_trn_no` | EKK1081C011 | - | Query: Same Transaction Number Inquiry (同一処理番号採番) -- retrieves a shared transaction number for deduplication and tracking |
| R | `JKKAdchgCancelHakkoSODCC.getOpSvcKei4Eohtel` | EKK0351A010SC | - | Query: Option Service Contract Summary (電話) -- retrieves option service contracts for 050 number plan, used in TEL branch when ido_div == USESTP |
| R | `JCCBPCommon.getOpeDate` | JCCBPCommon | - | Query: Get operational date (運用日取得) -- returns the current business date, called within the Wi-Fi Spot loop iteration |
| C | `JKKAdchgCancelHakkoSODCC.addSOD` | - | SOD entities | Create: Service Order Data creation -- adds a service order with the given order content code to the SOD queue |
| C | `JKKAdchgCancelHakkoSODCC.addItnTokiSOD` | - | SOD entities | Create: Internal transfer-toke Service Order Data creation -- adds a transfer destination registration cancellation order (internal processing) |
| - | `JKKAdchgCancelHakkoSODCC.chgSvcKeiJdg` | - | - | Judge: Previous vs. current service contract number comparison judgment |
| R | `JKKAdchgCancelHakkoSODCC.getSame_trn_no` (overloaded) | EKK1081C011 | - | Query: Same Transaction Number Inquiry (no args variant) -- used in TEL branch |
| - | `JKKAdchgCancelHakkoSODCC.isBlank` | - | - | Utility: Null-or-empty string check |
| - | `JKKAdchgCancelHakkoSODCC.isMansionPrvate` | - | - | Utility: Mansion-type housing type detection (returns true if property is a mansion) |
| - | `JKKAdchgCancelHakkoSODCC.jdgSvcKind` | - | - | Judge: Service type determination from SOD basic info |
| - | `JKKAdchgCancelHakkoSODCC.shkkaMap` | - | - | Utility: Map data decryption/transformation |

## 5. Dependency Trace

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

No screen/batch entry points found within 8 hops. Direct callers found: 2 methods.
Terminal operations from this method: `addItnTokiSOD` [C], `addSOD` [C], `callEKK0191A010SC` [R], `addSOD` [C], `getOpSvcKei4Eohtel` [R], `addSOD` [C], `getSame_trn_no` [R], `getSame_trn_no` [R], `isBlank` [-], `addSOD` [C], `addSOD` [C], `callEKK0161A010SC` [R], `getOpeDate` [R], `getOpeDate` [R], `getOpeDate` [R], `getOpeDate` [R], `getOpeDate` [R], `callEKK0161B003SC` [R], `addSOD` [C], `addSOD` [C]

| # | Caller (Screen/Batch) | Call Chain (Full Path to this Method) | Terminal (SC / CRUD / Entity) |
|---|----------------------|--------------------------------------|-------------------------------|
| 1 | `JKKAdchgHakkoSODCC` | `stpUkOdrCtrl` | `addSOD` [C] ODR_NAIYO_CD_106, `addSOD` [C] ODR_NAIYO_CD_140, `addSOD` [C] ODR_NAIYO_CD_168, `callEKK0351B002SC` [R], `callEKK0161A010SC` [R], `callEKK0161B003SC` [R], `callEKK0191A010SC` [R], `getSame_trn_no` [R], `getOpSvcKei4Eohtel` [R], `addItnTokiSOD` [C] ODR_NAIYO_CD_221, `addSOD` [C] ODR_NAIYO_CD_223, `addSOD` [C] ODR_NAIYO_CD_226, `addSOD` [C] ODR_NAIYO_CD_249, `addSOD` [C] ODR_NAIYO_CD_302, `addSOD` [C] ODR_NAIYO_CD_304, `addSOD` [C] ODR_NAIYO_CD_310, `addSOD` [C] ODR_NAIYO_CD_314 |
| 2 | `JKKHakkoSODCC` | `stpUkOdrCtrl` | Same terminal operations as above (re-entrant dispatch from another SOD-hakko CC) |

## 6. Per-Branch Detail Blocks

**Block 1** — [SET / LOCAL VARIABLE DECLARATIONS] `(L5283)`

> Initialize local variables and extract SOD data maps from the input sodMap parameter. Decrypt each sub-map using `shkkaMap`. Extract key business identifiers (SYSID, service contract number, service contract detail number, change-after registration datetime).

| # | Type | Code |
|---|------|------|
| 1 | SET | `statusCode = 0` // Service interface status flag |
| 2 | SET | `sod_kihon_info_Map = (HashMap)sodMap.get(SOD_KIHON_INFO)` // SOD basic info |
| 3 | SET | `svc_kei_info_Map = (HashMap)sodMap.get(SVC_KEI_INFO)` // Service contract info |
| 4 | SET | `svc_kei_ucwk_info_Map = (HashMap)sodMap.get(SVC_KEI_UCWK_INFO)` // Service contract detail info |
| 5 | CALL | `sod_kihon_info_Map = shkkaMap(sod_kihon_info_Map)` // Decrypt SOD basic info |
| 6 | CALL | `svc_kei_info_Map = shkkaMap(svc_kei_info_Map)` // Decrypt service contract info |
| 7 | CALL | `svc_kei_ucwk_info_Map = shkkaMap(svc_kei_ucwk_info_Map)` // Decrypt service contract detail info |
| 8 | SET | `sys_id = (String)sod_kihon_info_Map.get(INFO_SYSID)` // SYSID from SOD basic info |
| 9 | SET | `svc_kei_no = (String)svc_kei_info_Map.get(INFO_SVC_KEI_NO)` // Service contract number |
| 10 | SET | `svc_kei_ucwk_no = (String)svc_kei_ucwk_info_Map.get(INFO_SVC_KEI_UCWK_NO)` // Service contract detail number |
| 11 | SET | `chaf_svc_kei_ucwk_gene_add_dtm = (String)svc_kei_ucwk_info_Map.get(INFO_CHAF_SVC_KEI_UCWK_GENE_ADD_DTM)` // Change-after contract detail registration datetime |

**Block 2** — [CALL] `(L5299)`

> Determine the service type classification (NET / TEL / MOB / ADSL) by calling `jdgSvcKind()`. This replaces the legacy `jdgSvcKind_PcrsCd()` method (IT2-2016-0000004).

| # | Type | Code |
|---|------|------|
| 1 | CALL | `svc_kind = jdgSvcKind()` // Determine service type code |

**Block 3** — [IF-ELSEIF-ELSE] `[SVC_KIND_NET = "1" or PCRS_CD_ADSL_FURETTSU = "A22"] (L5302)`

> **NET Branch (L5302-L5479)**: Handles Fiber-to-the-Home (FTTH), eo光ネット, and FLET'S ADSL interruption orders. First checks if the customer resides in a mansion-type property -- if so, skips SOD issuance entirely (FTTH authentication not issued for mansion, and dial-up connection is not contractible). Otherwise, queries existing option services to check for Dual Up Connection (B020) and Fixed Cell (B075) with halted status (210), then issues the appropriate SODs.

| # | Type | Code |
|---|------|------|
| 1 | CALL | `isMansionPrvate()` // Check if mansion-type property |
| 2 | SET | `inHashMltise = new HashMap()` // Input for option service contract inquiry |
| 3 | SET | `resultHashMltise = new HashMap()` // Output from option service contract inquiry |
| 4 | SET | `inHashMltise.put(SVC_KEI_NO, svc_kei_no)` // Set service contract number |
| 5 | CALL | `callEKK0351B002SC(param, handle, inHashMltise, resultHashMltise, FUNC_CODE_1 = "1")` // Query option service contracts |
| 6 | EXEC | `if (0 != statusCode) { throw CCException(..., new SCCallException(...)) }` // Error handling |

**Block 3.1** — [FOR LOOP] `[Loop over msgList from EKK0351B002CBSMsg1List] (L5330)`

> Iterate over option service contract results to check for Dual Up Connection (B020) and Fixed Cell (B075) with halted status (210).

| # | Type | Code |
|---|------|------|
| 1 | SET | `op_svc_kei_no = (String)retHash.get(EKK0351B002CBSMsg1List.OP_SVC_KEI_NO)` // Option service contract number |
| 2 | SET | `op_gene_add_dtm = (String)retHash.get(EKK0351B002CBSMsg1List.GENE_ADD_DTM)` // Option service contract registration datetime |
| 3 | SET | `op_svc_kei_stat = (String)retHash.get(EKK0351B002CBSMsg1List.OP_SVC_KEI_STAT)` // Option service contract status |
| 4 | SET | `op_svc_cd = (String)retHash.get(EKK0351B002CBSMsg1List.OP_SVC_CD)` // Option service code |

**Block 3.2** — [IF] `[OP_SVC_CD_DUP = "B020"] (L5343)`

> Check for Dual Up Connection option service. If its status is "halted/interrupted" (210), record the option service contract number and set dial_flg.

| # | Type | Code |
|---|------|------|
| 1 | IF | `OP_SVC_CD_DUP = "B020"` (Dual Up Connection) |
| 2 | IF | `SVC_KEI_STAT_210 = "210"` (Halted/Interrupted) |
| 3 | SET | `this.op_svc_kei_no_dial = op_svc_kei_no` // Record option service contract number |
| 4 | SET | `this.op_gadtm_dial = op_gene_add_dtm` // Record registration datetime |
| 5 | SET | `dial_flg = true` // Flag for Dual Up Connection suspension SOD |

**Block 3.3** — [ELSE-IF] `[OP_SVC_CD_FMTCEL = "B075"] (L5359)`

> Check for Fixed Cell option service. If its status is "halted/interrupted" (210), record the option service contract number and set fmtcel_flg.

| # | Type | Code |
|---|------|------|
| 1 | IF | `OP_SVC_CD_FMTCEL = "B075"` (Fixed Cell) |
| 2 | IF | `SVC_KEI_STAT_210 = "210"` (Halted/Interrupted) |
| 3 | SET | `this.op_svc_kei_no_fmtcel = op_svc_kei_no` // Record option service contract number |
| 4 | SET | `this.op_gadtm_fmtcel = op_gene_add_dtm` // Record registration datetime |
| 5 | SET | `fmtcel_flg = true` // Flag for Fixed Cell suspension SOD |

**Block 3.4** — [IF-ELSE] `[dial_flg || fmtcel_flg] (L5376)`

> If any option service was found to be halted, retrieve a same transaction number for deduplication. Otherwise, clear it.

| # | Type | Code |
|---|------|------|
| 1 | IF | `dial_flg || fmtcel_flg` |
| 2 | SET | `sameTrnNo = new String[1]` |
| 3 | CALL | `getSame_trn_no(param, handle, null, sameTrnNo)` // Query same transaction number |
| 4 | SET | `this.same_trn_no = sameTrnNo[0]` // Store in instance field |
| 5 | ELSE | -- |
| 6 | SET | `this.same_trn_no = ""` // Clear same transaction number |

**Block 3.5** — [SET / PREPARATION] `(L5388)`

> Initialize the service contract detail number array and registration datetime array for later SOD issuance.

| # | Type | Code |
|---|------|------|
| 1 | SET | `this.svc_kei_ucwk_no = new String[1]` |
| 2 | SET | `this.svc_kei_ucwk_no[0] = svc_kei_ucwk_no` // Set current detail number |
| 3 | SET | `this.svc_kei_ucwk_gadtm = new String[1]` |
| 4 | SET | `this.svc_kei_ucwk_gadtm[0] = chaf_svc_kei_ucwk_gene_add_dtm` // Set current registration datetime |

**Block 3.6** — [CALL] `(L5393)`

> Issue the FTTH Authentication · Temp Suspension SOD.

| # | Type | Code |
|---|------|------|
| 1 | CALL | `param = addSOD(handle, param, ODR_NAIYO_CD_106 = "106")` // FTTH Auth · Temp Suspension |

**Block 3.7** — [IF] `[dial_flg] (L5396)`

> If Dual Up Connection option was found to be halted, issue its suspension SOD.

| # | Type | Code |
|---|------|------|
| 1 | IF | `dial_flg` |
| 2 | CALL | `param = addSOD(handle, param, ODR_NAIYO_CD_140 = "140")` // Dual Up Connection · Temp Suspension |

**Block 3.8** — [IF] `[fmtcel_flg] (L5402)`

> If Fixed Cell option was found to be halted, issue its suspension SOD.

| # | Type | Code |
|---|------|------|
| 1 | IF | `fmtcel_flg` |
| 2 | CALL | `param = addSOD(handle, param, ODR_NAIYO_CD_168 = "168")` // Fixed Cell · Temp Suspension |

**Block 4** — [ELSE-IF] `[SVC_KIND_MOB = "4"] (L5409)`

> **MOB Branch (L5409-L5560)**: Handles Mobile service type (eoモバイル including e-mobile, WiMAX, SpotWiFi) interruption orders. Determines which specific service to suspend based on the pricing code (PCRS_CD). Handles SpotWiFi, e-mobile temporary disconnection, WiMAX CUI suspension, and Wi-Fi Spot change/suspension processing.

| # | Type | Code |
|---|------|------|
| 1 | IF | `PCRS_CD_WIFISPOT = "A30"` (Wi-Fi Spot) |
| 2 | SET | `this.same_trn_no = ""` // Clear same transaction number for SpotWiFi |

**Block 4.1** — [ELSE-IF] `[chgSvcKeiJdg(svc_kei_no)] (L5419)`

> If the previous service contract number differs from the current one, retrieve a same transaction number for deduplication.

| # | Type | Code |
|---|------|------|
| 1 | IF | `chgSvcKeiJdg(svc_kei_no)` // Previous vs current service contract number differs |
| 2 | SET | `sameTrnNo = new String[1]` |
| 3 | CALL | `getSame_trn_no(param, handle, null, sameTrnNo)` // Query same transaction number |
| 4 | SET | `this.same_trn_no = sameTrnNo[0]` // Store in instance field |

**Block 4.2** — [SET / PREPARATION] `(L5428)`

> Prepare input/output maps for the Service Contract Detail Consent SC call (EKK0161A010SC).

| # | Type | Code |
|---|------|------|
| 1 | SET | `inEKK0161A010Hash = new HashMap()` // Input for EKK0161A010SC |
| 2 | SET | `retEKK0161A010Hash = new HashMap()` // Output from EKK0161A010SC |

**Block 4.3** — [IF] `[svc_kei_ucwk_no != null && length > 0] (L5433)`

> If service contract detail number is available, populate input hash and call the SC.

| # | Type | Code |
|---|------|------|
| 1 | IF | `svc_kei_ucwk_no != null && 0 < svc_kei_ucwk_no.length()` |
| 2 | SET | `inEKK0161A010Hash.put(SVC_KEI_UCWK_NO, svc_kei_ucwk_no)` // Set service contract detail number |
| 3 | SET | `inEKK0161A010Hash.put(GENE_ADD_DTM, chaf_svc_kei_ucwk_gene_add_dtm)` // Set registration datetime |
| 4 | CALL | `callEKK0161A010SC(param, handle, inEKK0161A010Hash, retEKK0161A010Hash, FUNC_CODE_1 = "1")` // Query service contract detail |
| 5 | EXEC | `if (0 != statusCode) { throw CCException(...) }` // Error handling |

**Block 4.4** — [SET] `(L5447)`

> Extract the pricing code (PCRS_CD) from the service contract detail result.

| # | Type | Code |
|---|------|------|
| 1 | SET | `eKK0161A010Hash = (HashMap)retEKK0161A010Hash.get(TEMPLATE_ID_EKK0161A010)` |
| 2 | SET | `ucwkPcrsCd = (String)eKK0161A010Hash.get(EKK0161A010CBSMsg1List.PCRS_CD)` // Pricing code |

**Block 4.5** — [IF] `[PCRS_CD_EMOBILE_7M = "A26" or PCRS_CD_EMOBILE_21M = "A27"] (L5452)`

> For e-mobile 7.2M or 21M plans, check if a previous service contract number is specified. If so, issue the e-mobile · Temp Disconnection SOD.

| # | Type | Code |
|---|------|------|
| 1 | IF | `PCRS_CD_EMOBILE_7M = "A26"` or `PCRS_CD_EMOBILE_21M = "A27"` |
| 2 | SET | `saki_svc_kei_no = (String)svc_kei_info_Map.get(INFO_SAKI_SVC_KEI_NO)` // Previous service contract number |
| 3 | IF | `saki_svc_kei_no != null && 0 < saki_svc_kei_no.length()` |
| 4 | CALL | `param = addSOD(handle, param, ODR_NAIYO_CD_314 = "314")` // e-mobile · Temp Disconnection |

**Block 4.6** — [IF] `[ucwkPcrsCd == WIMAX = "A46"] (L5465)`

> For WiMAX services (authentication ID pricing code A46), store the service contract detail number and issue the WiMAX · CUI Temp Suspension SOD.

| # | Type | Code |
|---|------|------|
| 1 | IF | `PCRS_CD_WIMAX = "A46"` (WiMAX authentication ID) |
| 2 | SET | `this.svc_kei_ucwk_no = new String[1]` |
| 3 | SET | `this.svc_kei_ucwk_no[0] = svc_kei_ucwk_no` // Set detail number |
| 4 | SET | `this.svc_kei_ucwk_gadtm = new String[1]` |
| 5 | SET | `this.svc_kei_ucwk_gadtm[0] = chaf_svc_kei_ucwk_gene_add_dtm` // Set registration datetime |
| 6 | CALL | `param = addSOD(handle, param, ODR_NAIYO_CD_310 = "310")` // WiMAX · CUI Temp Suspension |

**Block 4.7** — [ELSE-IF] `[ucwkPcrsCd == FREE_WIFI = "A45"] (L5479)`

> For Wi-Fi Spot services (pricing code A45), query all service contract details by SYSID and count how many have the Free Wi-Fi pricing code. Issue a Change SOD if count >= 2, or a Temp Suspension SOD if count == 1.

| # | Type | Code |
|---|------|------|
| 1 | IF | `PCRS_CD_FREE_WIFI = "A45"` (Mobile Wi-Fi Unlimited Plan) |
| 2 | SET | `inHashUcwk = new HashMap()` // Input hash for EKK0161B003SC |
| 3 | SET | `resultHashUcwk = new HashMap()` // Output hash |
| 4 | SET | `inHashUcwk.put(SYSID, sys_id)` // Set SYSID |
| 5 | CALL | `callEKK0161B003SC(param, handle, inHashUcwk, resultHashUcwk, FUNC_CODE_1 = "1")` // Query service contract details by SYSID |
| 6 | SET | `wifiSpotCnt = 0` // Wi-Fi Spot counter |
| 7 | FOR | Loop over `msgListUcwk` (CAANMsg[]) |

**Block 4.7.1** — [FOR LOOP] `(L5498)`

> For each service contract detail record, call EKK0161A010SC with the detail number and operational date to get the pricing code, counting those with A45 (Free Wi-Fi).

| # | Type | Code |
|---|------|------|
| 1 | SET | `tmp_svc_kei_ucwk_no = (String)eKK0161B003Hash.get(EKK0161B003CBSMsg1List.SVC_KEI_UCWK_NO)` // Service contract detail number |
| 2 | SET | `inHashUcwkWifi = new HashMap()` // Input for inner EKK0161A010SC |
| 3 | SET | `inHashUcwkWifi.put(SVC_KEI_UCWK_NO, tmp_svc_kei_ucwk_no)` // Set detail number |
| 4 | SET | `inHashUcwkWifi.put(OPE_DATE, JCCBPCommon.getOpeDate(null))` // Set operational date |
| 5 | CALL | `callEKK0161A010SC(param, handle, inHashUcwkWifi, resultHashUcwkWifi, FUNC_CODE_2 = "2")` // Query service contract detail |
| 6 | SET | `pcrsCdWifi = (String)eKK0161A010HashWifi.get(EKK0161A010CBSMsg1List.PCRS_CD)` // Get pricing code |
| 7 | IF | `pcrsCdWifi == PCRS_CD_FREE_WIFI = "A45"` |
| 8 | SET | `wifiSpotCnt++` // Increment Wi-Fi Spot count |

**Block 4.7.2** — [IF] `[wifiSpotCnt >= 2] (L5519)`

> If 2 or more Wi-Fi Spot service contracts exist, issue the Wi-Fi Spot · Change SOD.

| # | Type | Code |
|---|------|------|
| 1 | IF | `wifiSpotCnt >= 2` |
| 2 | SET | `this.svc_kei_ucwk_no = new String[1]` |
| 3 | SET | `this.svc_kei_ucwk_no[0] = svc_kei_ucwk_no` // Set detail number |
| 4 | SET | `this.svc_kei_ucwk_gadtm = new String[1]` |
| 5 | SET | `this.svc_kei_ucwk_gadtm[0] = chaf_svc_kei_ucwk_gene_add_dtm` // Set registration datetime |
| 6 | CALL | `param = addSOD(handle, param, ODR_NAIYO_CD_302 = "302")` // Wi-Fi Spot · Change |

**Block 4.7.3** — [ELSE-IF] `[wifiSpotCnt == 1] (L5527)`

> If exactly 1 Wi-Fi Spot service contract exists, issue the Wi-Fi Spot · Temp Suspension SOD.

| # | Type | Code |
|---|------|------|
| 1 | IF | `wifiSpotCnt == 1` |
| 2 | SET | `this.svc_kei_ucwk_no = new String[1]` |
| 3 | SET | `this.svc_kei_ucwk_no[0] = svc_kei_ucwk_no` // Set detail number |
| 4 | SET | `this.svc_kei_ucwk_gadtm = new String[1]` |
| 5 | SET | `this.svc_kei_ucwk_gadtm[0] = chaf_svc_kei_ucwk_gene_add_dtm` // Set registration datetime |
| 6 | CALL | `param = addSOD(handle, param, ODR_NAIYO_CD_304 = "304")` // Wi-Fi Spot · Temp Suspension |

**Block 4.8** — [IF] `[!isBlank(this.same_trn_no)] (L5536)`

> If a same transaction number was resolved (indicating service contract number change), store the previous service contract number.

| # | Type | Code |
|---|------|------|
| 1 | IF | `!isBlank(this.same_trn_no)` |
| 2 | SET | `this.mae_recode_ch_svc_kei_no = new String(svc_kei_no)` // Store previous service contract number |

**Block 5** — [ELSE-IF] `[SVC_KIND_TEL = "2"] (L5545)`

> **TEL Branch (L5545-L5653)**: Handles optical telephone (eo光電話 / SIP-based) interruption orders. If the disruption classification is "Usage Suspension" (ido_div == USESTP = 00062), it checks for 050 Number Plan option services with stopped status (220) and issues number portability cancellation SODs. Always issues SIP · Temp Suspension SOD. If NTT phone number work is present (BMP_UM_ARI = 1), also issues SIP · Phone Number Info Deletion SOD. Finally, issues the SIP · Transfer Source Deregistration SOD via `addItnTokiSOD`.

| # | Type | Code |
|---|------|------|
| 1 | IF | `IDO_DIV_USESTP = "00062"` (Usage Suspension) |
| 2 | CALL | `same_trn_no = getSame_trn_no(param, handle)` // Query same transaction number (no-args variant) |
| 3 | ELSE | -- |
| 4 | SET | `this.same_trn_no = ""` // Clear same transaction number |

**Block 5.1** — [SET / PREPARATION] `(L5558)`

> Initialize the service contract detail number array and registration datetime array.

| # | Type | Code |
|---|------|------|
| 1 | SET | `this.svc_kei_ucwk_no = new String[1]` |
| 2 | SET | `this.svc_kei_ucwk_no[0] = svc_kei_ucwk_no` // Set detail number |
| 3 | SET | `this.svc_kei_ucwk_gadtm = new String[1]` |
| 4 | SET | `this.svc_kei_ucwk_gadtm[0] = chaf_svc_kei_ucwk_gene_add_dtm` // Set registration datetime |

**Block 5.2** — [CALL] `(L5564)`

> Issue the SIP · Temp Suspension SOD.

| # | Type | Code |
|---|------|------|
| 1 | CALL | `param = addSOD(handle, param, ODR_NAIYO_CD_223 = "223")` // SIP · Temp Suspension |

**Block 5.3** — [IF] `[ido_div == USESTP = "00062"] (L5567)`

> If the disruption classification is "Usage Suspension", process 050 Number Plan option services and transfer-toke registration.

| # | Type | Code |
|---|------|------|
| 1 | IF | `IDO_DIV_USESTP = "00062"` (Usage Suspension) |
| 2 | CALL | `kk0351MapList = getOpSvcKei4Eohtel(param, handle, svc_kei_ucwk_no, OP_SVC_CD_N050 = "B029")` // Query 050 Number Plan option services |
| 3 | FOR | Loop over `kk0351MapList` |

**Block 5.3.1** — [FOR LOOP] `(L5572)`

> For each 050 Number Plan option service, check if status is "Stopped" (220) and detail number matches. If so, record the option service contract number and issue number portability cancellation SOD.

| # | Type | Code |
|---|------|------|
| 1 | SET | `kk0351No = (String)eKK0351A010SCHash.get(EKK0351A010CBSMsg1List.OP_SVC_KEI_NO)` // Option service contract number |
| 2 | SET | `op_gene_add_dtm = (String)eKK0351A010SCHash.get(EKK0351A010CBSMsg1List.GENE_ADD_DTM)` // Registration datetime |
| 3 | SET | `op_mskm_dtl_no = (String)eKK0351A010SCHash.get(EKK0351A010CBSMsg1List.MSKM_DTL_NO)` // Application detail number |
| 4 | SET | `op_svc_kei_stat = (String)eKK0351A010SCHash.get(EKK0351A010CBSMsg1List.OP_SVC_KEI_STAT)` // Contract status |
| 5 | IF | `op_svc_kei_stat == SVC_KEI_STAT_220 = "220"` and `op_mskm_dtl_no == this.mskm_dtl_no` |
| 6 | SET | `this.op_svc_kei_no_tikan = kk0351No` // Record option service contract number |
| 7 | SET | `this.op_gadtm_tikan = op_gene_add_dtm` // Record registration datetime |
| 8 | CALL | `param = addSOD(handle, param, ODR_NAIYO_CD_249 = "249")` // Number Portability · Cancellation |

**Block 5.4** — [SET / PREPARATION] `(L5591)`

> Prepare input hash and call Service Contract Detail: eo光電話 · Consent (EKK0191A010SC).

| # | Type | Code |
|---|------|------|
| 1 | SET | `inHashUcwk = new HashMap()` // Input for EKK0191A010SC |
| 2 | SET | `resultHashUcwk = new HashMap()` // Output hash |
| 3 | SET | `inHashUcwk.put(SVC_KEI_UCWK_NO, svc_kei_ucwk_no)` // Set detail number |
| 4 | SET | `inHashUcwk.put(GENE_ADD_DTM, chaf_svc_kei_ucwk_gene_add_dtm)` // Set registration datetime |
| 5 | CALL | `callEKK0191A010SC(param, handle, inHashUcwk, resultHashUcwk, FUNC_CODE_1 = "1")` // Query eo光電話 contract detail |
| 6 | EXEC | `if (0 != statusCode) { throw CCException(...) }` // Error handling |
| 7 | SET | `eKK0191A010Hash = (HashMap)resultHashUcwk.get(TEMPLATE_ID_EKK0191A010)` // Extract result |

**Block 5.5** — [IF] `[BMP_UM_ARI = "1"] (L5603)`

> If NTT phone number is present (BMP_UM_ARI = "1"), issue the SIP · Phone Number Info Deletion SOD.

| # | Type | Code |
|---|------|------|
| 1 | IF | `BMP_UM_ARI = "1"` (NTT Phone Number: Present) |
| 2 | CALL | `param = addSOD(handle, param, ODR_NAIYO_CD_226 = "226")` // SIP · Phone Number Info Deletion |

**Block 5.6** — [CALL] `(L5609)`

> Issue the SIP · Transfer Source Deregistration SOD via `addItnTokiSOD`. Note: `addItnTokiSOD` internally also issues ODR_NAIYO_CD_221 (SIP · Transfer Source Deregistration Cancellation).

| # | Type | Code |
|---|------|------|
| 1 | CALL | `param = addItnTokiSOD(handle, param, svc_kei_ucwk_no, ODR_NAIYO_CD_221 = "221")` // SIP · Transfer Source Deregistration (internal: also issues ODR_NAIYO_CD_221) |

**Block 6** — [RETURN] `(L5615)`

> Return the updated param object.

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

## 7. Glossary

| Term | Type | Business Meaning |
|------|------|------------------|
| `sodMap` | Field | SOD Map -- HashMap containing SOD basic info, service contract info, and service contract detail info |
| `sod_kihon_info_Map` | Field | SOD Basic Info Map -- contains core SOD metadata including SYSID |
| `svc_kei_info_Map` | Field | Service Contract Info Map -- contains service contract number and previous service contract number |
| `svc_kei_ucwk_info_Map` | Field | Service Contract Detail Info Map -- contains service contract detail number and registration datetimes |
| `svc_kei_no` | Field | Service Contract Number -- unique identifier for the customer's active service contract |
| `svc_kei_ucwk_no` | Field | Service Contract Detail Number -- unique identifier for a specific service contract detail record |
| `saki_svc_kei_no` | Field | Previous Service Contract Number -- used to detect contract changes (e.g., number portability, service migration) |
| `sys_id` | Field | SYSID -- system identifier for the customer account |
| `pcrs_cd` | Field | Pricing Code -- determines the specific billing plan/price tier (e.g., A22 = FLET'S ADSL, A45 = Wi-Fi Unlimited Plan) |
| `ido_div` | Field | Disruption Classification -- determines the type of contract change operation (e.g., 00062 = Usage Suspension) |
| `mskm_dtl_no` | Field | Application Detail Number (申請明細番号) -- identifies a specific application record, used to match option service contracts |
| `chaf_svc_kei_ucwk_gene_add_dtm` | Field | Change-After Service Contract Detail Registration Datetime -- the registration datetime of the current (change-after) service contract detail record |
| `SVC_KIND_NET` | Constant | Service Type Code "1" -- Network service (eo光ネット, Fiber-to-the-Home, ADSL) |
| `SVC_KIND_MOB` | Constant | Service Type Code "4" -- Mobile service (eoモバイル: e-mobile, WiMAX, SpotWiFi) |
| `SVC_KIND_TEL` | Constant | Service Type Code "2" -- Telephone service (eo光電話: SIP-based optical telephone) |
| `SVC_KEI_STAT_210` | Constant | Contract Status "210" -- Halted / Interrupted (休止・中断中) |
| `SVC_KEI_STAT_220` | Constant | Contract Status "220" -- Suspended (停止中) |
| `ODR_NAIYO_CD` | Field | Order Content Code ( orders内容コード) -- classifies the type of service order to issue |
| `ODR_NAIYO_CD_106` | Constant | Order Content Code "106" -- FTTH Authentication · Temp Suspension |
| `ODR_NAIYO_CD_140` | Constant | Order Content Code "140" -- Dual Up Connection · Temp Suspension |
| `ODR_NAIYO_CD_168` | Constant | Order Content Code "168" -- Fixed Cell · Temp Suspension |
| `ODR_NAIYO_CD_221` | Constant | Order Content Code "221" -- SIP · Transfer Source Deregistration Cancellation |
| `ODR_NAIYO_CD_223` | Constant | Order Content Code "223" -- SIP · Temp Suspension |
| `ODR_NAIYO_CD_226` | Constant | Order Content Code "226" -- SIP · Phone Number Info Deletion |
| `ODR_NAIYO_CD_249` | Constant | Order Content Code "249" -- Number Portability · Cancellation |
| `ODR_NAIYO_CD_302` | Constant | Order Content Code "302" -- Wi-Fi Spot · Change |
| `ODR_NAIYO_CD_304` | Constant | Order Content Code "304" -- Wi-Fi Spot · Temp Suspension |
| `ODR_NAIYO_CD_310` | Constant | Order Content Code "310" -- WiMAX · CUI Temp Suspension |
| `ODR_NAIYO_CD_314` | Constant | Order Content Code "314" -- e-mobile · Temp Disconnection |
| `OP_SVC_CD_DUP` | Constant | Option Service Code "B020" -- Dual Up Connection (ダイアルアップ接続) |
| `OP_SVC_CD_FMTCEL` | Constant | Option Service Code "B075" -- Fixed Cell (フォトセル) |
| `OP_SVC_CD_N050` | Constant | Option Service Code "B029" -- 050 Number Plan (050ナンバープレス) |
| `PCRS_CD_ADSL_FURETTSU` | Constant | Pricing Code "A22" -- FLET'S ADSL (フレッツ) -- treated as NET type |
| `PCRS_CD_WIFISPOT` | Constant | Pricing Code "A30" -- Wi-Fi Spot (WiFiスポット) |
| `PCRS_CD_EMOBILE_7M` | Constant | Pricing Code "A26" -- e-mobile 7.2M Fixed Plan (3ギガ・7.2M 定額プラン) |
| `PCRS_CD_EMOBILE_21M` | Constant | Pricing Code "A27" -- e-mobile 21M Fixed Plan (3ギガ・21M 定額プラン) |
| `PCRS_CD_WIMAX` | Constant | Pricing Code "A46" -- WiMAX Authentication ID (UQ WiMAX認証ID) |
| `PCRS_CD_FREE_WIFI` | Constant | Pricing Code "A45" -- Mobile Wi-Fi Unlimited Plan (モバイル Wi-Fi 定額無料) |
| `IDO_DIV_USESTP` | Constant | Disruption Classification "00062" -- Usage Suspension (利用停止) |
| `BMP_UM_ARI` | Constant | NTT Phone Number: Present (番有) |
| `dial_flg` | Field | Dual Up Connection existence flag -- indicates a halted Dual Up Connection option was found |
| `fmtcel_flg` | Field | Fixed Cell existence flag -- indicates a halted Fixed Cell option was found |
| `same_trn_no` | Field | Same Transaction Number (同一処理番号) -- used for deduplication and tracking across operations |
| `op_svc_kei_no_dial` | Field | Dual Up Connection option service contract number |
| `op_gadtm_dial` | Field | Dual Up Connection option service registration datetime |
| `op_svc_kei_no_fmtcel` | Field | Fixed Cell option service contract number |
| `op_gadtm_fmtcel` | Field | Fixed Cell option service registration datetime |
| `op_svc_kei_no_tikan` | Field | 050 Number Plan option service contract number (for number portability) |
| `op_gadtm_tikan` | Field | 050 Number Plan option service registration datetime (for number portability) |
| `mae_recode_ch_svc_kei_no` | Field | Previous service contract number (before change) -- set when service contract number has changed |
| SOD | Acronym | Service Order Data (サービスオーダデータ) -- the core order entity in K-Opticom's billing system, representing a pending business operation to be executed |
| FTTH | Business term | Fiber To The Home -- fiber-optic broadband internet service (eo光ネット) |
| SIP | Technical term | Session Initiation Protocol -- VoIP protocol used for eo光電話 (optical telephone) services |
| CUI | Technical term | Customer User Interface -- the WiMAX subscriber authentication mechanism |
| Wi-Fi Spot | Business term | WiFiスポット -- public/private Wi-Fi hotspot access service |
| Dual Up Connection | Business term | ダイアルアップ接続 -- optional dual internet connection service (simultaneous broadband + dial-up) |
| Fixed Cell | Business term | フォトセル -- fixed-cell broadband option service for dedicated internet connectivity |
| e-mobile | Business term | eモバイル -- KDDI's mobile broadband service (3G 7.2M / 21M plans) |
| 050 Number Plan | Business term | 050ナンバープレス -- VoIP telephone number plan using the 050 area code |
| Number Portability | Business term | 番号置換 / 番号ポータビリティ -- MNP (Mobile Number Portability) for telephone numbers |
| Transfer-toke (トクイ) | Business term | 転送先登録 -- transfer destination registration for call forwarding / number portability |
| Mansion Type | Business term | マンションタイプ -- apartment/condominium housing type, often requiring different installation procedures |
| SC Code (EKKxxxxx) | Technical term | Service Component code -- Fujitsu's standard SC naming convention for telecom billing service components (e.g., EKK0351B002SC = Option Service Contract Summary) |
| CC | Technical term | Component Controller -- the controller layer class in the K-Opticom architecture that orchestrates SC calls |
| EKK | Technical term | Service inquiry SC prefix (K-Opticom internal prefix for service contract detail/query SCs) |
| CAANMsg | Technical term | Communication message object wrapper -- used to carry query results between SC calls |
