# Business Logic — JKKHakkoSODCC.telNoChge() [775 LOC]

| Field | Value |
|-------|-------|
| Fully Qualified Name | `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC` |
| Layer | Common Component (Shared logic layer) |
| Module | `common` (Package: `com.fujitsu.futurity.bp.custom.common`) |

## 1. Role

### JKKHakkoSODCC.telNoChge()

The `telNoChge` method is the central business logic handler for **telecom phone number change processing** in the Fujitsu Futurity order fulfillment system. It orchestrates the complete lifecycle of changing a customer's phone number, including the original "before" number and the new "after" number, by creating, modifying, and cancelling associated Service Order Data (SOD) records.

This method handles two distinct business modes determined by the `mode` parameter: mode "0" (FLET phone number change, `TEL_CHNG_DIV_HTEL_CHNG`) covers full FLET broadband phone service number changes including SIP de-registration, and mode "1" (Number Port addition order, `TEL_CHNG_DIV_BMP_ADD_MSKM`) handles inbound ported number registrations. A significant extension added in 2013 (OT-2013-0000311) unified these modes by resolving pre-change and post-change internal service contract details through the `EKK0161A010SC` service call, enabling proper handling of cases where the before/after numbers have different internal contract IDs.

The method processes multiple service types including FLET SIP broadband phone (050-number and non-050-number), ENUM (Internet naming service), optional services (such as caller ID notification, emergency alerts, and other non-050 add-ons), and VA (home appliance) device associations. It implements a dispatch/routing pattern where each device iteration determines which SOD type to issue based on whether a multifunction router (`takino_flg`) is present, and a builder pattern where the `param` object is progressively enriched through successive `addSOD`, `add050AddSod`, and `add050DelSod` calls.

As a shared common component (CC) method, `telNoChge` is called by multiple higher-level order control methods (`bmpSwitchOdrCtrl`, `htelNoChgeOdrCtrl`), serving as a reusable workhorse for all phone number change scenarios across various screens and batch operations. It does not represent a screen entry point itself, but rather executes terminal SOD emission logic that ultimately writes to database tables via service components (SC).

## 2. Processing Pattern (Detailed Business Logic)

```mermaid
flowchart TD
    START(["telNoChge entry"])

    START --> extract["Extract SVC_KEI_INFO, SVC_KEI_UCWK_INFO, OPSVKEI_INFO from sodMap"]
    extract --> shkka1["shkkaMap on svc_kei_info_Map"]
    shkka1 --> shkka2["shkkaMap on svc_kei_ucwk_info_Map"]
    shkka2 --> shkka3["shkkaMap on opsvkei_info_Map"]
    shkka3 --> getData["Extract: svc_kei_no, svc_kei_ucwk_no, chbf/chaf dtm"]
    getData --> getInHash["Build inHashUcwk: SVC_KEI_UCWK_NO, GENE_ADD_DTM"]
    getInHash --> callEkk0161["callEKK0161A010SC with FUNC_CODE_1"]
    callEkk0161 --> err1{statusCode == 0?}
    err1 -->|no| throw1["throw CCException/SCCallException"]
    err1 -->|yes| getChbf["Get chbfSvcKeiUcwkNo from EKK0161 result"]
    err1 -->|yes| getChaf["Get chafSvcKeiUcwkNo"]
    getChbf --> getSameTrn["getSame_trn_no"]
    getChaf --> getSameTrn
    getChaf --> setThis["Set this.svc_kei_ucwk_no[0], this.svc_kei_ucwk_gadtm[0]"]
    getChaf --> setThis2["Set this.kktk_svc_kei_no, taknkiki_model_cd, kiki_seizo_no"]
    getChbf --> setChbfFields["Set this.svc_kei_ucwk_no[0]=chbfSvcKeiUcwkNo"]
    setThis --> getEkk0251["getEKK0251B001SC"]
    setThis2 --> getEkk0251
    setChbfFields --> getEkk0251

    getEkk0251 --> setSvcKaisen["Set this.svc_kei_kaisen_ucwk_no, gadtm"]
    setSvcKaisen --> callEkk0191["callEKK0191A010SC with FUNC_CODE_1"]
    callEkk0191 --> err2{statusCode == 0?}
    err2 -->|no| throw2["throw CCException/SCCallException"]
    err2 -->|yes| getVaData["Get VA modelCd, chgNo, BMP_UM"]
    getVaData --> callEkk0341["callEKK0341B008SC with FUNC_CODE_1"]
    callEkk0341 --> err3{statusCode == 0?}
    err3 -->|no| throw3["throw CCException/SCCallException"]
    err3 -->|yes| callEkk0341_02["callEKK0341B008_02SC with FUNC_CODE_4 - EG switching"]
    callEkk0341_02 --> checkMsg{"msgEKK0341B022 != null?"}
    checkMsg -->|yes| loopEgCheck["Loop: HTtel VA + 00067 + kikiChgNo match?"]
    checkMsg -->|no| loopDevices["Loop: iterate msgEKK0341B008SCList"]
    loopEgCheck --> loopDevices

    loopDevices --> getHash["eKK0341B008SCHash = msg[i].getMsgData()"]
    getHash --> getKktk["Get kktkSvcKeiNo, kktkGeneAddDtm, vaTaknkikiModelCd, kktkKikiSeizoNo"]
    getKktk --> isRegal{"isRegalVaKiki handle, param, hash, modelCd, ido_div, chgNo"}
    isRegal -->|false| loopNext["Continue next device"]
    isRegal -->|true| getKokanBf{"kokanBfKiki not empty?"}
    getKokanBf -->|yes| swapKktnk["Update vars from kokanBfKiki"]
    getKokanBf -->|no| setThisFields["Set this.kktk_svc_kei_no[0], gadtm, taknkiki_model_cd, kiki_seizo_no"]
    swapKktnk --> setThisFields
    setThisFields --> checkTakino["checkTakinoRT handle, param"]
    checkTakino --> modeCond{"mode == TEL_CHNG_DIV_HTEL_CHNG?"}

    modeCond -->|true| htTelChng{"takino_flg == 0?"}
    htTelChng -->|yes| addSod210["addSOD ODR_NAIYO_CD_210 - OLS+phone change"]
    htTelChng -->|no(+takino!=9)| addTakino409["addTakinoSOD ODR_NAIYO_CD_409 - multifunc router"]
    htTelChng -->|no(+takino==9)| noHtelChg["No action - skip"]

    modeCond -->|false| bmpAddMode{"mode == TEL_CHNG_DIV_BMP_ADD_MSKM"}
    bmpAddMode -->|false| normalAdd{"takino_flg == 0?"}
    bmpAddMode -->|true| bmpAddCheck{"chbfSvcKeiUcwkNo not null?"}
    bmpAddCheck -->|false| noAction1["No action - skip break"]
    bmpAddCheck -->|true| addSod210
    noAction1 --> break1["break"]
    noHtelChg --> break1
    addSod210 --> break1
    addTakino409 --> break1
    normalAdd -->|yes| addSod208["addSOD ODR_NAIYO_CD_208 - OLS+phone addition"]
    normalAdd -->|no(+takino!=9)| addTakino408["addTakinoSOD ODR_NAIYO_CD_408 - multifunc router"]
    normalAdd -->|no(+takino==9)| noAction2["No action - skip"]
    addTakino408 --> break1
    noAction2 --> break1
    addSod208 --> break1

    break1 --> getPrevContract["callEKK0191A010SC with FUNC_CODE_2 for chbf"]
    getPrevContract --> setChbfBmpUm["Set chbfBmpUm from EKK0191 BMP_UM"]
    setChbfBmpUm --> callEkk1041["callEKK1041B001SC ORDER_SBT_CD_TEL, SVC_ORDER_CD_SIP"]
    callEkk1041 --> getEkk1041List["getEKK1041B001result"]
    getEkk1041List --> loop1041{"loop eKK1041B001HashList"}
    loop1041 --> matchChbf{"tmpSvcKeiUcwkNo == chbfSvcKeiUcwkNo?"}
    matchChbf -->|no| loop1041Next["Continue"]
    matchChbf -->|yes| checkYokyu{"RCNT_YOKYU_SBT_CD == DSL or DEL?"}
    checkYokyu -->|yes| skipSip["can_skip_sip_ecs_delsod = true"]
    checkYokyu -->|no| loop1041Next
    skipSip --> loop1041Next

    loop1041Next --> skipSipCheck{!can_skip_sip_ecs_delsod?}
    skipSipCheck -->|yes| addSod229["addSOD ODR_NAIYO_CD_229 - SIP cancellation"]
    addSod229 --> addSod230["addSOD ODR_NAIYO_CD_230 - SIP deletion"]
    addSod230 --> enumCheck1{"chbfBmpUm == BMP_UM_ARI?"}
    skipSipCheck -->|no| enumCheck1

    enumCheck1 -->|yes| bmpOpenCheck{"isBmpOpenZumiDslNoDslNoChg?"}
    bmpOpenCheck -->|yes| isTelnoJudge{"isTelnoSODJudge TELNO_JUDGE_004 && !can_skip?"}
    bmpOpenCheck -->|no| enumNoAction1["No ENUM action"]
    isTelnoJudge -->|yes| addSod266_1["addSOD ODR_NAIYO_CD_266 - ENUM deletion"]
    isTelnoJudge -->|no| enumNoAction1
    enumNoAction1 --> callEkk0351_1["callEKK0351B002SC chbfSvcKeiUcwkNo"]
    addSod266_1 --> callEkk0351_1

    enumCheck1 -->|no| isTelnoJudgeNoBmp{"isTelnoSODJudge TELNO_JUDGE_004 && !can_skip?"}
    isTelnoJudgeNoBmp -->|yes| addSod266_2["addSOD ODR_NAIYO_CD_266 - ENUM deletion"]
    isTelnoJudgeNoBmp -->|no| callEkk0351_1
    addSod266_2 --> callEkk0351_1

    callEkk0351_1 --> loopBfOpt{"loop msgEKK0351B002 before services"}
    loopBfOpt --> mskmCheck{"isNullBlank(mskmDtlNoOp) || !equals(mskmDtlNo)?"}
    mskmCheck -->|yes| bfLoopNext["Continue next"]
    mskmCheck -->|no| opSvcCdCheck{"op_svc_cd == OP_SVC_CD_N050?"}
    opSvcCdCheck -->|yes| set050Bf["iHave050no=true, op_svc_kei_no_tikan, op_gadtm_tikan"]
    opSvcCdCheck -->|no| bfLoopNext
    set050Bf --> bfLoopNext
    bfLoopNext --> iHave050BfCheck{"iHave050no?"}

    iHave050BfCheck -->|yes| add050Del["add050DelSod before number"]
    iHave050BfCheck -->|no| emergBfCheck{!can_skip_sip_ecs_delsod?}
    add050Del --> emergBfCheck
    emergBfCheck -->|yes| addSod252_1["addSOD ODR_NAIYO_CD_252 - Emergency alert deletion"]
    emergBfCheck -->|no| resetSameTrn["this.same_trn_no = ''"]
    addSod252_1 --> resetSameTrn

    resetSameTrn --> setChafFields2["Set this.svc_kei_ucwk_no[0]=chaf"]
    setChafFields2 --> addSod218["addSOD ODR_NAIYO_CD_218 - SIP registration"]
    addSod218 --> htTelChgMode{"mode == TEL_CHNG_DIV_HTEL_CHNG && chafBmpUm == CD00001_1?"}

    htTelChgMode -->|yes| addSod223["addSOD ODR_NAIYO_CD_223 - FLET SIP temporary suspension"]
    htTelChgMode -->|no| isTelnoJudgeChaf{"isTelnoSODJudge TELNO_JUDGE_001?"}

    addSod223 --> isTelnoJudgeChaf
    isTelnoJudgeChaf -->|yes| addSod225_265["addSOD ODR_NAIYO_CD_225 + ODR_NAIYO_CD_265 - Number info + ENUM reg"]
    isTelnoJudgeChaf -->|no| callEkk0351_2["callEKK0351B002SC svc_kei_ucwk_no - after services"]
    addSod225_265 --> callEkk0351_2

    callEkk0351_2 --> loopAfOpt{"loop msgEKK0351B002 after services"}
    loopAfOpt --> opSvcCdCheck2{"op_svc_cd == OP_SVC_CD_N050?"}
    opSvcCdCheck2 -->|yes| opSvcKeiStatCheck{"isAddSodTrgtStat(op_svc_kei_stat)?"}
    opSvcCdCheck2 -->|no| legalTelSodCheck{"telOpUm = telOpUm || legalTelSod(op_svc_cd)"}
    opSvcKeiStatCheck -->|yes| set050Af["iHave050no=true, op_svc_kei_no_tikan, op_gadtm_tikan"]
    opSvcKeiStatCheck -->|no| afLoopNext["Continue"]
    set050Af --> afLoopNext
    afLoopNext --> afHasinshaCheck{"OP_SVC_CD_DSP_ME && isHakkoOlsTelnoChg?"}
    afHasinshaCheck -->|yes| setHasinsha{"SVC_KEI_STAT == 030/100/210?"}
    afHasinshaCheck -->|no| afLoopNext
    setHasinsha -->|yes| setHasinshaVars["existsHasinshaNoTchi=true or existsHasinshaNoTchiDsl=true"]
    setHasinsha -->|no| afLoopNext
    afLoopNext --> telOpUmCheck{"telOpUm?"}

    telOpUmCheck -->|yes| hasinshaStatusCheck{"existsHasinshaNoTchi?"}
    telOpUmCheck -->|no| add050AfCheck{"iHave050no?"}
    hasinshaStatusCheck -->|yes| addSod211["addSOD ODR_NAIYO_CD_211 - OLS + caller ID reg"]
    hasinshaStatusCheck -->|no| hasinshaDslCheck{"existsHasinshaNoTchiDsl?"}
    hasinshaDslCheck -->|yes| addSod212["addSOD ODR_NAIYO_CD_212 - OLS + caller ID cancellation"]
    hasinshaDslCheck -->|no| addSod219["addSOD ODR_NAIYO_CD_219 - SIP optional full reg"]
    addSod211 --> addSod219
    addSod212 --> addSod219

    addSod219 --> add050AfCheck
    add050AfCheck -->|yes| add050Add["add050AddSod after number"]
    add050AfCheck -->|no| addSod250["addSOD ODR_NAIYO_CD_250 - Emergency alert reg"]
    add050Add --> addSod250
    addSod250 --> END(["Return param"])
```

## 3. Parameter Analysis

| No | Parameter Name | Type | Business Description |
|----|---------------|------|---------------------|
| 1 | `handle` | `SessionHandle` | Session manager handle carrying session context and transaction state for the current business operation. Used to pass to all SC/CBS calls. |
| 2 | `param` | `IRequestParameterReadWrite` | Model group and control map containing parameter object used for business data read/write operations. Progressively enriched by SOD records added via `addSOD`, `add050AddSod`, `add050DelSod`. Returned at end of method. |
| 3 | `fixedText` | `String` | User-specified arbitrary character string (free-form text field). Passed through to SOD creation methods but not directly analyzed in this method's decision logic. |
| 4 | `sodMap` | `HashMap<String, Object>` | Service Order Data map containing pre-constructed business data including SVC_KEI_INFO (service contract info), SVC_KEI_UCWK_INFO (service contract detail info), and OPSVKEI_INFO (ops service detail info). Extracted and processed via `shkkaMap()` at start. |
| 5 | `mode` | `String` | Processing mode flag determining which phone number change path to take: `"0"` (TEL_CHNG_DIV_HTEL_CHNG) triggers FLET phone number change processing with SIP de-registration, `"1"` (TEL_CHNG_DIV_BMP_ADD_MSKM) triggers number port addition order processing. Extended in 2013 to handle unified before/after contract ID resolution. |

**Instance fields read by this method:**

| Field | Type | Business Description |
|-------|------|---------------------|
| `this.ido_div` | `String` | Displacement/division code - used in `isRegalVaKiki` to determine if VA (home appliance) equipment is under repair/exchange |
| `this.kktk_svc_kei_no` | `String[]` | Device provision service contract number - set per device iteration in the main loop |
| `this.kktk_svc_kei_gadtm` | `String[]` | Device provision service contract generation registration timestamp |
| `this.taknkiki_model_cd` | `String[]` | Home appliance model code - set from VA (home device) model code |
| `this.kiki_seizo_no` | `String[]` | Equipment manufacturing serial number - set per device iteration |
| `this.svc_kei_ucwk_no` | `String[]` | Service contract detail number - set to chaf (post-change) value first, then overwritten with chbf (pre-change) value mid-method |
| `this.svc_kei_ucwk_gadtm` | `String[]` | Service contract detail generation registration timestamp |
| `this.svc_kei_kaisen_ucwk_no` | `String` | Service line detail number - set from EKK0251B001 result |
| `this.svc_kei_kaisen_ucwk_gadtm` | `String` | Service line detail generation registration timestamp |
| `this.op_svc_kei_no_tikan` | `String` | Optional service contract number for transfer (050 number) - set during 050-number detection |
| `this.op_gadtm_tikan` | `String` | Optional service contract generation timestamp for transfer |
| `this.op_svc_kei_no` | `String` | Optional service contract number (non-050) - set for hasinsha (caller ID) notification |
| `this.op_gadtm` | `String` | Optional service contract generation timestamp |
| `this.same_trn_no` | `String` | Same transaction number - set at start, cleared to empty string after before-number processing (OM-2013-0003443) |

## 4. CRUD Operations / Called Services

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

| CRUD | SC / CBS | SC Code | Entity / DB | Operation Description |
|------|----------|---------|-------------|----------------------|
| C | `JKKHakkoSODCC.add050AddSod` | JKKHakkoSODCC | KK_T_SOD_ODR (SOD Order) | Calls `add050AddSod` in `JKKHakkoSODCC` - Creates SOD for 050-number (portable number) registration after the new phone number |
| C | `JKKHakkoSODCC.add050DelSod` | JKKHakkoSODCC | KK_T_SOD_ODR (SOD Order) | Calls `add050DelSod` in `JKKHakkoSODCC` - Creates SOD for 050-number (portable number) cancellation before the new phone number |
| C | `JKKHakkoSODCC.addSOD` | JKKHakkoSODCC | KK_T_SOD_ODR (SOD Order) | Calls `addSOD` in `JKKHakkoSODCC` - Generic SOD creation for various order types (210, 208, 229, 230, 266, 218, 223, 225, 265, 252, 211, 212, 219, 250) |
| C | `JKKHakkoSODCC.addTakinoSOD` | JKKHakkoSODCC | KK_T_SOD_ODR (SOD Order) | Calls `addTakinoSOD` in `JKKHakkoSODCC` - Creates SOD for multifunction router (Takino router) service settings with phone change/addition |
| R | `JKKHakkoSODCC.callEKK0161A010SC` | EKK0161A010SC | KK_T_SVC_KEI_UCWK (Service contract detail), KK_T_SVC_KEI (Service contract) | Calls `callEKK0161A010SC` - Resolves pre-change (chbf) and post-change (chaf) service contract detail numbers via internal contract ID agreement |
| R | `JKKHakkoSODCC.callEKK0191A010SC` | EKK0191A010SC | KK_T_VA_TAKNKIKI (VA home device), KK_T_SVC_KEI_UCWK | Calls `callEKK0191A010SC` - VA (home appliance) device information lookup; also called with FUNC_CODE_2 to resolve pre-change contract details |
| R | `JKKHakkoSODCC.callEKK0341B008_02SC` | EKK0341B008_02SC | KK_T_KKTK_SVC_KEI (Device provision service contract), KK_T_KIKI (Equipment) | Calls `callEKK0341B008_02SC` - EG (Ethernet Gateway) switching fallback lookup; checks for equipment replacement during EG switching (idoDiv 00067) |
| R | `JKKHakkoSODCC.callEKK0341B008SC` | EKK0341B008SC | KK_T_KKTK_SVC_KEI (Device provision service contract) | Calls `callEKK0341B008SC` - Device provision service contract list lookup; returns VA/home device info including model code, manufacturing serial number |
| R | `JKKHakkoSODCC.callEKK0351B002SC` | EKK0351B002SC | KK_T_OP_SVC_KEI (Optional service contract) | Calls `callEKK0351B002SC` - Optional service contract list lookup; iterates to detect 050-number ops (OP_SVC_CD_N050) and non-050 optional services including caller ID notification (OP_SVC_CD_DSP_ME) |
| R | `JKKHakkoSODCC.callEKK1041B001SC` | EKK1041B001SC | KK_T_SVC_ORDER (Service order) | Calls `callEKK1041B001SC` - Service order list lookup for SIP service (SVC_ORDER_CD_SIP) on the phone service; used to detect if SIP cancellation/deletion SODs were already issued |
| - | `JKKHakkoSODCC.checkTakinoRT` | JKKHakkoSODCC | - | Calls `checkTakinoRT` - Determines if the customer has a multifunction router (Takino router); returns 0 if no multifunc router, 9 if in maintenance mode |
| R | `JKKHakkoSODCC.getEKK0251B001SC` | EKK0251B001SC | KK_T_SVC_KEI_LINE (Service line) | Calls `getEKK0251B001SC` - Service line detail one-view lookup by service contract number |
| R | `JKKHakkoSODCC.getEKK1041B001result` | EKK1041B001SC | KK_T_SVC_ORDER | Calls `getEKK1041B001result` - Retrieves result of EKK1041B001SC for checking RCNT_YOKYU_SBT_CD (recent service type code: DSL=deactivation, DEL=deletion) |
| - | `JKKHakkoSODCC.getSame_trn_no` | JKKHakkoSODCC | - | Calls `getSame_trn_no` - Gets the same transaction number for batch processing consistency |
| - | `JKKHakkoSODCC.isAddSodTrgtStat` | JKKHakkoSODCC | - | Calls `isAddSodTrgtStat` - Checks if service status qualifies for SOD creation (stat 030/100/210: terminating, providing, suspending) |
| - | `JKKHakkoSODCC.isBmpOpenZumiDslNoDslNoChg` | JKKHakkoSODCC | - | Calls `isBmpOpenZumiDslNoDslNoChg` - Checks if number port (BMP) is already open; used to determine whether ENUM deletion SOD is needed |
| - | `JKKHakkoSODCC.isRegalVaKiki` | JKKHakkoSODCC | - | Calls `isRegalVaKiki` - Determines if VA (home appliance) is a legitimate target for phone number change; filters out non-phone VA equipment |
| - | `JKKHakkoSODCC.isTelnoSODJudge` | JKKHakkoSODCC | - | Calls `isTelnoSODJudge` - Judges whether SOD creation is needed for phone number change; uses TELNO_JUDGE_001 or TELNO_JUDGE_004 criteria |
| - | `JKKHakkoSODCC.legalTelSod` | JKKHakkoSODCC | - | Calls `legalTelSod` - Checks if an optional service code qualifies as a legal phone-related optional service |
| - | `JKKHakkoSODCC.shkkaMap` | JKKHakkoSODCC | - | Calls `shkkaMap` - Map sanitization/handling utility that processes HashMap entries before extraction |
| - | `JKKStringUtil.isNullBlank` | JKKString | - | Calls `isNullBlank` - Utility to check if a String is null or blank (empty/whitespace) |

## 5. Dependency Trace

| # | Caller (Screen/Batch) | Call Chain (Full Path to this Method) | Terminal (SC / CRUD / Entity) |
|---|----------------------|--------------------------------------|-------------------------------|
| 1 | `JKKHakkoSODCC.bmpSwitchOdrCtrl` | `bmpSwitchOdrCtrl` -> `telNoChge` | `addSOD [C] KK_T_SOD_ODR`, `add050AddSod [C] KK_T_SOD_ODR`, `add050DelSod [C] KK_T_SOD_ODR`, `addTakinoSOD [C] KK_T_SOD_ODR`, `callEKK0161A010SC [R] KK_T_SVC_KEI_UCWK`, `callEKK0191A010SC [R] KK_T_VA_TAKNKIKI`, `callEKK0341B008SC [R] KK_T_KKTK_SVC_KEI`, `callEKK0351B002SC [R] KK_T_OP_SVC_KEI`, `callEKK1041B001SC [R] KK_T_SVC_ORDER`, `callEKK0251B001SC [R] KK_T_SVC_KEI_LINE`, `callEKK0341B008_02SC [R] KK_T_KKTK_SVC_KEI` |
| 2 | `JKKHakkoSODCC.htelNoChgeOdrCtrl` | `htelNoChgeOdrCtrl` -> `telNoChge` | `addSOD [C] KK_T_SOD_ODR`, `add050AddSod [C] KK_T_SOD_ODR`, `add050DelSod [C] KK_T_SOD_ODR`, `addTakinoSOD [C] KK_T_SOD_ODR`, `callEKK0161A010SC [R] KK_T_SVC_KEI_UCWK`, `callEKK0191A010SC [R] KK_T_VA_TAKNKIKI`, `callEKK0341B008SC [R] KK_T_KKTK_SVC_KEI`, `callEKK0351B002SC [R] KK_T_OP_SVC_KEI`, `callEKK1041B001SC [R] KK_T_SVC_ORDER`, `callEKK0251B001SC [R] KK_T_SVC_KEI_LINE`, `callEKK0341B008_02SC [R] KK_T_KKTK_SVC_KEI` |

**Terminal operations from this method:** `addSOD` [C KK_T_SOD_ODR], `add050AddSod` [C KK_T_SOD_ODR], `add050DelSod` [C KK_T_SOD_ODR], `addTakinoSOD` [C KK_T_SOD_ODR], `callEKK0161A010SC` [R KK_T_SVC_KEI_UCWK], `callEKK0191A010SC` [R KK_T_VA_TAKNKIKI], `callEKK0341B008SC` [R KK_T_KKTK_SVC_KEI], `callEKK0341B008_02SC` [R KK_T_KKTK_SVC_KEI], `callEKK0351B002SC` [R KK_T_OP_SVC_KEI], `callEKK1041B001SC` [R KK_T_SVC_ORDER], `getEKK0251B001SC` [R KK_T_SVC_KEI_LINE], `getEKK1041B001result` [R KK_T_SVC_ORDER]

## 6. Per-Branch Detail Blocks

### Block 1 — INIT/EXTRACT (L33592)

> Extract service contract info maps from sodMap and sanitize with shkkaMap. Also extract OPSVKEI_INFO (ANK-1855-00-00: phone number change at handover/termination).

| # | Type | Code |
|---|------|------|
| 1 | SET | `String[] sameTrnNo = new String[1]` |
| 2 | EXEC | `getSame_trn_no(param, handle, null, sameTrnNo)` // Same transaction number retrieval |
| 3 | SET | `this.same_trn_no = sameTrnNo[0]` |
| 4 | SET | `this.svc_kei_ucwk_no = new String[1]` |
| 5 | SET | `this.svc_kei_ucwk_no[0] = svc_kei_ucwk_no` |
| 6 | SET | `this.svc_kei_ucwk_gadtm = new String[1]` |
| 7 | SET | `this.svc_kei_ucwk_gadtm[0] = chaf_svc_kei_ucwk_gene_add_dtm` |
| 8 | EXEC | `getEKK0251B001SC(param, handle, svc_kei_no, FUNC_CODE_1)` // Service line detail lookup |
| 9 | SET | `this.svc_kei_kaisen_ucwk_no = EKK0251B001 result.SVC_KEI_KAISEN_UCWK_NO` |
| 10 | SET | `this.svc_kei_kaisen_ucwk_gadtm = EKK0251B001 result.GENE_ADD_DTM` |

### Block 2 — VA DEVICE LOOKUP (L33640)

> Call EKK0191A010SC to retrieve VA (home appliance) device information. Extract model code, change number, and BMP_UM (number port existence).

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `callEKK0191A010SC(param, handle, inHashUcwk, resultHashUcwk, FUNC_CODE_1)` |
| 2 | COND | `if (0 != statusCode)` [throw CCException/SCCallException] |
| 3 | SET | `vaTaknkikiModelCd = EKK0191 result.VA_TAKNKIKI_MODEL_CD` |
| 4 | SET | `vaKikiChgNo = EKK0191 result.VA_KIKI_CHG_NO` |
| 5 | SET | `chafBmpUm = EKK0191 result.BMP_UM` // Number port existence at post-change |

### Block 3 — DEVICE PROVISION SERVICE LOOKUP (L33655)

> Call EKK0341B008SC for device provision service contract list. Then call EKK0341B008_02SC for EG switching fallback (IT2-2016-0000035).

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `callEKK0341B008SC(param, handle, inHashKktk, resultHashKktk, FUNC_CODE_1)` |
| 2 | COND | `if (0 != statusCode)` [throw CCException/SCCallException] |
| 3 | EXEC | `callEKK0341B008_02SC(param, handle, inHashKktk, resultHashKktk, FUNC_CODE_4)` |
| 4 | COND | `if (0 != statusCode)` [throw CCException/SCCallException] |
| 5 | COND | `if (msgEKK0341B022_02SCList != null && length > 0)` |
| 6 | FOR | `for(int i = 0; i < msgEKK0341B022_02SCList.length; i++)` |
| 7 | COND | `KKTK_SVC_CD_HTEL_VA.equals(kktkSvcCd)` |
| 8 | COND | `vaChgNo.equals(kikiChgNo) && "00067".equals(idoDiv)` // EG switching: replace device list |
| 9 | SET | `msgEKK0341B008SCList = msgEKK0341B022_02SCList` |

### Block 4 — DEVICE LOOP WITH REGAL CHECK (L33690)

> Iterate device provision results. For each device, check if it is a legitimate VA target via `isRegalVaKiki`. If repair/exchange during (kokanBfKiki not empty), swap to the replacement device data. Then check for multifunction router.

| # | Type | Code |
|---|------|------|
| 1 | FOR | `for(int i = 0; i < msgEKK0341B008SCList.length; i++)` |
| 2 | SET | `vaTaknkikiModelCd = eKK0341B008SCHash.TAKNKIKI_MODEL_CD` // OM-2015-0003416: from device provision, not service contract |
| 3 | SET | `kokanBfKiki = new HashMap<String, Object>()` |
| 4 | EXEC | `isRegalVaKiki(handle, param, eKK0341B008SCHash, vaTaknkikiModelCd, null, this.ido_div, vaKikiChgNo, kokanBfKiki)` |
| 5 | COND | `if (!isRegalVaKiki(...))` [continue next device] |
| 6 | COND | `kokanBfKiki != null && !isEmpty()` // Repair/exchange swap (ANK-3238-00-00) |
| 7 | SET | `kktkSvcKeiNo, kktkGeneAddDtm, kktkKikiSeizoNo, vaTaknkikiModelCd` from kokanBfKiki |
| 8 | SET | `this.kktk_svc_kei_no[0] = kktkSvcKeiNo` |
| 9 | SET | `this.kktk_svc_kei_gadtm[0] = kktkGeneAddDtm` |
| 10 | SET | `this.taknkiki_model_cd[0] = vaTaknkikiModelCd` |
| 11 | SET | `this.kiki_seizo_no[0] = kktkKikiSeizoNo` |
| 12 | EXEC | `takino_flg = checkTakinoRT(handle, param)` |

#### Block 4.1 — Mode: TEL_CHNG_DIV_HTEL_CHNG (L33744)

> When mode is `"0"` (FLET phone number change). Issue ODR_NAIYO_CD_210 (OLS setting + phone change) if no multifunc router, or ODR_NAIYO_CD_409 (multifunc router setting + phone change) if takino_flg != 9.

| # | Type | Code |
|---|------|------|
| 1 | COND | `mode == TEL_CHNG_DIV_HTEL_CHNG` [constant TEL_CHNG_DIV_HTEL_CHNG="0"] |
| 2 | COND | `takino_flg == 0` [no multifunction router] |
| 3 | CALL | `addSOD(handle, param, ODR_NAIYO_CD_210)` // OLS setting + phone change |
| 4 | SET | `isHakkoOlsTelnoChg = true` // OM-2014-0001919 flag |
| 5 | COND | `takino_flg != 9` [multifunc router, not maintenance mode] |
| 6 | CALL | `addTakinoSOD(handle, param, ODR_NAIYO_CD_409)` // Multifunc router + phone change |
| 7 | SET | `break` |

#### Block 4.2 — Mode: TEL_CHNG_DIV_BMP_ADD_MSKM (L33750)

> When mode is `"1"` (Number Port addition). Only proceed if chbfSvcKeiUcwkNo is not null (resolved in Block 1.1).

| # | Type | Code |
|---|------|------|
| 1 | COND | `mode == TEL_CHNG_DIV_BMP_ADD_MSKM && chbfSvcKeiUcwkNo != null` |
| 2 | CALL | `addSOD(handle, param, ODR_NAIYO_CD_210)` // Same as htTelChng path |
| 3 | SET | `break` |

#### Block 4.3 — Normal Addition Path (L33776)

> Default path when mode is neither HTEL_CHNG nor BMP_ADD_MSKM. Issue ODR_NAIYO_CD_208 (OLS + phone addition) if no multifunc router, or ODR_NAIYO_CD_408 (multifunc + phone addition).

| # | Type | Code |
|---|------|------|
| 1 | COND | `takino_flg == 0` [no multifunction router] |
| 2 | CALL | `addSOD(handle, param, ODR_NAIYO_CD_208)` // OLS setting + phone addition |
| 3 | COND | `takino_flg != 9` [multifunc router, not maintenance mode] |
| 4 | CALL | `addTakinoSOD(handle, param, ODR_NAIYO_CD_408)` // Multifunc router + phone addition |
| 5 | SET | `break` |

### Block 5 — PRE-CHANGE CONTRACT RESOLUTION (L33792)

> After the device loop break, resolve the actual pre-change (chbf) contract ID by calling EKK0191A010SC with FUNC_CODE_2. Extract chbfBmpUm for ENUM decision logic.

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `callEKK0191A010SC(param, handle, inHashUcwk, resultHashUcwk, FUNC_CODE_2)` |
| 2 | SET | `chbf_svc_kei_ucwk_gene_add_dtm = chbfEKK0191A010Map.GENE_ADD_DTM` |
| 3 | SET | `chbfBmpUm = chbfEKK0191A010Map.BMP_UM` // ANK-3876-00-00: before number port existence |
| 4 | SET | `this.svc_kei_ucwk_no[0] = chbfSvcKeiUcwkNo` |
| 5 | SET | `this.svc_kei_ucwk_gadtm[0] = chbf_svc_kei_ucwk_gene_add_dtm` |

### Block 6 — SIP STATUS CHECK (L33820)

> Check if SIP cancellation/deletion SODs were already issued (e.g., for forced termination). If already done, skip duplicate SIP SOD creation (ANK-4494-00-00).

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `callEKK1041B001SC(param, handle, ORDER_SBT_CD_TEL, SVC_ORDER_CD_SIP, null, svc_kei_no, null, null)` |
| 2 | SET | `eKK1041B001HashList = getEKK1041B001result(param)` |
| 3 | FOR | `for(eKK1041B001Hash : eKK1041B001HashList)` |
| 4 | COND | `chbfSvcKeiUcwkNo.equals(tmpSvcKeiUcwkNo)` |
| 5 | COND | `RCNT_YOKYU_SBT_CD == YOKYU_SBT_CD_DSL or YOKYU_SBT_CD_DEL` [constant YOKYU_SBT_CD_DSL="deactivation", YOKYU_SBT_CD_DEL="deletion"] |
| 6 | SET | `can_skip_sip_ecs_delsod = true` |
| 7 | SET | `break` |

### Block 7 — SIP CANCELLATION/DELETION (L33847)

> If `can_skip_sip_ecs_delsod` is false, issue SIP cancellation SOD (ODR_NAIYO_CD_229) and SIP deletion SOD (ODR_NAIYO_CD_230).

| # | Type | Code |
|---|------|------|
| 1 | COND | `!can_skip_sip_ecs_delsod` |
| 2 | CALL | `addSOD(handle, param, ODR_NAIYO_CD_229)` // SIP cancellation |
| 3 | CALL | `addSOD(handle, param, ODR_NAIYO_CD_230)` // SIP deletion |

### Block 8 — ENUM DELETION LOGIC (L33878)

> Conditional ENUM deletion (ODR_NAIYO_CD_266) based on before-number BMP_UM status.

#### Block 8.1 — chbfBmpUm == BMP_UM_ARI (L33882)

> Before-number has number port (BMP_ARI="1"). Check if already open via `isBmpOpenZumiDslNoDslNoChg`, then judge via `isTelnoSODJudge(TELNO_JUDGE_004)`.

| # | Type | Code |
|---|------|------|
| 1 | COND | `chbfBmpUm == BMP_UM_ARI` [constant BMP_UM_ARI="1"] |
| 2 | EXEC | `isBmpOpenZumiDslNoDslNoChg(param, handle, svc_kei_no, svc_kei_ucwk_no[0], svc_kei_ucwk_gadtm[0])` |
| 3 | COND | `result` |
| 4 | EXEC | `isTelnoSODJudge(handle, param, chbfSvcKeiUcwkNo, chbf_dtm, null, TELNO_JUDGE_004)` |
| 5 | COND | `result && !can_skip_sip_ecs_delsod` |
| 6 | CALL | `addSOD(handle, param, ODR_NAIYO_CD_266)` // ENUM setting/deletion |

#### Block 8.2 — chbfBmpUm != BMP_UM_ARI (L33894)

> Before-number does not have number port. Directly judge via `isTelnoSODJudge(TELNO_JUDGE_004)`.

| # | Type | Code |
|---|------|------|
| 1 | COND | `chbfBmpUm != BMP_UM_ARI` [i.e., BMP_NASI="0"] |
| 2 | EXEC | `isTelnoSODJudge(handle, param, chbfSvcKeiUcwkNo, chbf_dtm, null, TELNO_JUDGE_004)` |
| 3 | COND | `result && !can_skip_sip_ecs_delsod` |
| 4 | CALL | `addSOD(handle, param, ODR_NAIYO_CD_266)` // ENUM setting/deletion |

### Block 9 — BEFORE NUMBER OPTIONAL SERVICE LOOP (L33920)

> Query optional services for the before-number contract. Detect 050-number (OP_SVC_CD_N050) and set up for add050DelSod.

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `callEKK0351B002SC(param, handle, inHashOp, resultHashOp, FUNC_CODE_1)` // with chbfSvcKeiUcwkNo |
| 2 | FOR | `for(int i = 0; i < msgList.length; i++)` |
| 3 | SET | `mskmDtlNoOp = eKK0351B002Hash.MSKM_DTL_NO` |
| 4 | COND | `isNullBlank(mskmDtlNoOp) || !mskmDtlNoOp.equals(mskmDtlNo)` [continue] |
| 5 | COND | `op_svc_cd == OP_SVC_CD_N050` [constant OP_SVC_CD_N050="050"] |
| 6 | SET | `iHave050no = true` |
| 7 | SET | `this.op_svc_kei_no_tikan = eKK0351B002Hash.OP_SVC_KEI_NO` |
| 8 | SET | `this.op_gadtm_tikan = eKK0351B002Hash.GENE_ADD_DTM` |

### Block 10 — BEFORE NUMBER 050 DELETION (L33934)

> If a 050-number was found in the before-number's optional services, issue add050DelSod to cancel the old 050-number SOD.

| # | Type | Code |
|---|------|------|
| 1 | COND | `iHave050no` |
| 2 | CALL | `add050DelSod(param, handle, svc_kei_no, chbfSvcKeiUcwkNo, chbf_dtm, op_svc_kei_no_tikan, op_gadtm_tikan)` |

### Block 11 — BEFORE NUMBER EMERGENCY ALERT DELETION (L33951)

> If SIP deletion wasn't skipped, issue emergency alert deletion SOD (ODR_NAIYO_CD_252).

| # | Type | Code |
|---|------|------|
| 1 | COND | `!can_skip_sip_ecs_delsod` |
| 2 | CALL | `addSOD(handle, param, ODR_NAIYO_CD_252)` // Emergency alert deletion |

### Block 12 — SAME TRANSACTION NUMBER RESET (L33962)

> Clear the same_trn_no to empty string for new number SOD processing (OM-2013-0003443).

| # | Type | Code |
|---|------|------|
| 1 | SET | `this.same_trn_no = ""` |

### Block 13 — SIP REGISTRATION (L33969)

> Set svc_kei_ucwk_no to chaf (post-change) values and issue SIP registration SOD (ODR_NAIYO_CD_218).

| # | Type | Code |
|---|------|------|
| 1 | SET | `this.svc_kei_ucwk_no[0] = svc_kei_ucwk_no` [post-change value] |
| 2 | SET | `this.svc_kei_ucwk_gadtm[0] = chaf_svc_kei_ucwk_gene_add_dtm` |
| 3 | CALL | `addSOD(handle, param, ODR_NAIYO_CD_218)` // SIP registration |

### Block 14 — FLET SIP TEMPORARY SUSPENSION (L33975)

> If mode is HTEL_CHNG and chafBmpUm == CD00001_1, issue FLET's SIP temporary suspension SOD (ODR_NAIYO_CD_223).

| # | Type | Code |
|---|------|------|
| 1 | COND | `mode == TEL_CHNG_DIV_HTEL_CHNG && chafBmpUm == CD00001_1` |
| 2 | CALL | `addSOD(handle, param, ODR_NAIYO_CD_223)` // FLET's SIP temporary suspension |

### Block 15 — TELNO SOD JUDGE FOR AFTER NUMBER (L33980)

> After the optional suspension, check if additional SOD (number info + ENUM registration) is needed for external carrier numbers or FLET's internal phone number with number port.

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `isTelnoSODJudge(handle, param, svc_kei_ucwk_no, chaf_dtm, null, TELNO_JUDGE_001)` |
| 2 | COND | `result` |
| 3 | CALL | `addSOD(handle, param, ODR_NAIYO_CD_225)` // Number info registration |
| 4 | CALL | `addSOD(handle, param, ODR_NAIYO_CD_265)` // ENUM registration |

### Block 16 — AFTER NUMBER OPTIONAL SERVICE LOOP (L33994)

> Query optional services for the after-number contract. Detect 050-number and caller ID notification services.

| # | Type | Code |
|---|------|------|
| 1 | SET | `iHave050no = false` |
| 2 | SET | `inHashOp = new HashMap` |
| 3 | EXEC | `callEKK0351B002SC(param, handle, inHashOp, resultHashOp, FUNC_CODE_1)` // with svc_kei_ucwk_no (after) |
| 4 | FOR | `for(int i = 0; i < msgList2.length; i++)` |
| 5 | SET | `op_svc_kei_stat = eKK0351B002.OP_SVC_KEI_STAT` |
| 6 | SET | `op_svc_cd = eKK0351B002.OP_SVC_CD` |
| 7 | COND | `op_svc_cd == OP_SVC_CD_N050` |
| 8 | COND | `isAddSodTrgtStat(op_svc_kei_stat)` |
| 9 | SET | `iHave050no = true, op_svc_kei_no_tikan, op_gadtm_tikan` |
| 10 | COND | `else` (non-050) |
| 11 | SET | `telOpUm = telOpUm || legalTelSod(op_svc_cd)` |
| 12 | COND | `op_svc_cd == OP_SVC_CD_DSP_ME && isHakkoOlsTelnoChg` |
| 13 | COND | `op_svc_kei_stat == SVC_KEI_STAT_030 or 100 or 210` |
| 14 | SET | `existsHasinshaNoTchi = true, op_svc_kei_no, op_gadtm` |
| 15 | COND | `op_svc_kei_stat == SVC_KEI_STAT_910` |
| 16 | SET | `existsHasinshaNoTchiDsl = true, op_svc_kei_no, op_gadtm` |

### Block 17 — CALLER ID NOTIFICATION SOD (L34040)

> If any legal phone optional service was found (telOpUm), issue caller ID notification registration/cancellation based on hasinsha status.

| # | Type | Code |
|---|------|------|
| 1 | COND | `telOpUm` |
| 2 | COND | `existsHasinshaNoTchi && isHakkoOlsTelnoChg` |
| 3 | CALL | `addSOD(handle, param, ODR_NAIYO_CD_211)` // OLS + caller ID notification registration |
| 4 | COND | `else if existsHasinshaNoTchiDsl && isHakkoOlsTelnoChg` |
| 5 | CALL | `addSOD(handle, param, ODR_NAIYO_CD_212)` // OLS + caller ID notification cancellation |
| 6 | CALL | `addSOD(handle, param, ODR_NAIYO_CD_219)` // SIP optional service full registration |

### Block 18 — AFTER NUMBER 050 REGISTRATION (L34072)

> If a 050-number was found in the after-number's optional services, issue add050AddSod to register the new 050-number SOD.

| # | Type | Code |
|---|------|------|
| 1 | COND | `iHave050no` |
| 2 | CALL | `add050AddSod(param, handle, svc_kei_no, svc_kei_ucwk_no, chaf_dtm, op_svc_kei_no_tikan, op_gadtm_tikan)` |

### Block 19 — EMERGENCY ALERT REGISTRATION (L34093)

> Issue emergency alert registration SOD (ODR_NAIYO_CD_250) as the final SOD.

| # | Type | Code |
|---|------|------|
| 1 | CALL | `addSOD(handle, param, ODR_NAIYO_CD_250)` // Emergency alert registration |
| 2 | RETURN | `return param` |

## 7. Glossary

| Term | Type | Business Meaning |
|------|------|------------------|
| `svc_kei_no` | Field | Service contract number — internal ID for the broadband service contract line |
| `svc_kei_ucwk_no` | Field | Service contract detail number — unique identifier for a specific service contract detail/line item |
| `svc_kei_ucwk_info` | Field | Service contract detail information map — contains pre-change and post-change contract detail data |
| `svc_kei_ucwk_gene_add_dtm` | Field | Service contract detail generation registration timestamp — datetime when the contract detail was registered |
| `svc_kei_kaisen_ucwk_no` | Field | Service line detail number — line-level detail within a service contract |
| `svc_kei_kaisen_ucwk_gadtm` | Field | Service line detail generation registration timestamp |
| `chbf` | Term | "Before" (chirishi-mae) — the state/number prior to the phone number change |
| `chaf` | Term | "After" (chirishi-ato) — the state/number following the phone number change |
| `chbfSvcKeiUcwkNo` | Field | Pre-change service contract detail number — resolved via EKK0161A010SC contract ID agreement |
| `chbfBmpUm` | Field | Pre-change number port existence flag — whether the before-number had number port (BMP) service |
| `chafBmpUm` | Field | Post-change number port existence flag — whether the after-number has number port service |
| `sodMap` | Field | Service Order Data map — container holding SVC_KEI_INFO, SVC_KEI_UCWK_INFO, OPSVKEI_INFO |
| SOD | Acronym | Service Order Data — order fulfillment entity records for telecom service provisioning |
| SC | Acronym | Service Component — modular service layer for database operations (e.g., EKK0161A010SC) |
| CBS | Acronym | Core Business System — database access layer (e.g., EKK0191A010CBSMsg1List) |
| `IDO_DIV` | Acronym | Displacement/division code — device movement type indicator (00067 = EG switching) |
| VA | Term | Home appliance / Home device — customer-premises equipment such as residential gateways |
| HTTEL_VA | Term | Hikari Denwa VA — FLET broadband phone home device (contract code KKTK_SVC_CD_HTEL_VA = "C004") |
| `taknkiki_model_cd` | Field | Home appliance model code — hardware model identifier for the VA device |
| `kiki_seizo_no` | Field | Equipment manufacturing serial number — unique hardware serial ID |
| `kiki_chg_no` | Field | Equipment change number — tracking ID for equipment replacement/upgrade events |
| `kokanBfKiki` | Field | Repair exchange before equipment map — contains replacement device data during repair/exchange (ANK-3238-00-00) |
| `takino_flg` | int | Multifunction router flag — 0 = no multifunc router, 9 = maintenance mode, other = has multifunc router |
| OLS | Acronym | OLS (Online Service) — Fujitsu's online service platform for broadband customers |
| ENUM | Term | ENUM (E.164 Number Mapping) — Internet naming service mapping phone numbers to IP addresses |
| SIP | Term | SIP (Session Initiation Protocol) — VoIP signaling protocol used by FLET's broadband phone |
| `ODR_NAIYO_CD_210` | Constant | Order content code 210 — OLS setting + phone number change |
| `ODR_NAIYO_CD_208` | Constant | Order content code 208 — OLS setting + phone number addition |
| `ODR_NAIYO_CD_409` | Constant | Order content code 409 — Multifunction router setting + phone number change |
| `ODR_NAIYO_CD_408` | Constant | Order content code 408 — Multifunction router setting + phone number addition |
| `ODR_NAIYO_CD_229` | Constant | Order content code 229 — SIP cancellation (de-registration) |
| `ODR_NAIYO_CD_230` | Constant | Order content code 230 — SIP deletion (full de-provisioning) |
| `ODR_NAIYO_CD_266` | Constant | Order content code 266 — ENUM setting/deletion |
| `ODR_NAIYO_CD_218` | Constant | Order content code 218 — SIP registration (provisioning) |
| `ODR_NAIYO_CD_223` | Constant | Order content code 223 — FLET's SIP temporary suspension |
| `ODR_NAIYO_CD_225` | Constant | Order content code 225 — Number info registration |
| `ODR_NAIYO_CD_265` | Constant | Order content code 265 — ENUM registration |
| `ODR_NAIYO_CD_252` | Constant | Order content code 252 — Emergency alert/deletion |
| `ODR_NAIYO_CD_211` | Constant | Order content code 211 — OLS setting + caller ID notification registration |
| `ODR_NAIYO_CD_212` | Constant | Order content code 212 — OLS setting + caller ID notification cancellation |
| `ODR_NAIYO_CD_219` | Constant | Order content code 219 — SIP optional service full registration |
| `ODR_NAIYO_CD_250` | Constant | Order content code 250 — Emergency alert registration |
| `ODR_NAIYO_CD_249` | Constant | Order content code 249 — Number change/cancellation (commented out, delegated to common processing) |
| `ODR_NAIYO_CD_248` | Constant | Order content code 248 — Number change registration (commented out, delegated to common processing) |
| `OP_SVC_CD_N050` | Constant | Optional service code "050" — portable number (MNP) service |
| `OP_SVC_CD_DSP_ME` | Constant | Optional service code for caller ID notification |
| `TEL_CHNG_DIV_HTEL_CHNG` | Constant | Mode "0" — FLET phone number change |
| `TEL_CHNG_DIV_BMP_ADD_MSKM` | Constant | Mode "1" — Number port addition order |
| `BMP_UM_ARI` | Constant | Number port exists = "1" |
| `BMP_UM_NASI` | Constant | Number port does not exist = "0" |
| `CD00001_1` | Constant | Value "1" — used in chafBmpUm comparison for FLET SIP suspension |
| `TELNO_JUDGE_001` | Constant | Phone number SOD judgment criterion 001 — for after-number judgment |
| `TELNO_JUDGE_004` | Constant | Phone number SOD judgment criterion 004 — for before-number judgment |
| `YOKYU_SBT_CD_DSL` | Constant | Recent service type code: deactivation |
| `YOKYU_SBT_CD_DEL` | Constant | Recent service type code: deletion |
| `ORDER_SBT_CD_TEL` | Constant | Order service type code: phone |
| `SVC_ORDER_CD_SIP` | Constant | Service order code: SIP |
| `FUNC_CODE_1` | Constant | Function code 1 — standard processing mode |
| `FUNC_CODE_2` | Constant | Function code 2 — pre-change contract resolution mode |
| `FUNC_CODE_4` | Constant | Function code 4 — EG switching fallback mode |
| KK_T_SVC_KEI | Table | Service contract master table |
| KK_T_SVC_KEI_UCWK | Table | Service contract detail table |
| KK_T_SVC_KEI_LINE | Table | Service line table |
| KK_T_VA_TAKNKIKI | Table | VA (home appliance) device table |
| KK_T_KKTK_SVC_KEI | Table | Device provision service contract table |
| KK_T_KIKI | Table | Equipment table |
| KK_T_OP_SVC_KEI | Table | Optional service contract table |
| KK_T_SVC_ORDER | Table | Service order table |
| KK_T_SOD_ODR | Table | SOD Order table — terminal entity for all SOD creation operations |
| `mskmDtlNo` | Field | Mask detail number — identifier matching optional service detail to phone number |
| `same_trn_no` | Field | Same transaction number — ensures batch processing consistency across SOD emissions |
| `isHakkoOlsTelnoChg` | Field | Boolean flag — indicates if OLS setting + phone change SOD was issued (OM-2014-0001919) |
| `existsHasinshaNoTchi` | Field | Boolean flag — caller ID notification order exists for after-number |
| `existsHasinshaNoTchiDsl` | Field | Boolean flag — caller ID notification order cancelled for after-number |
| `telOpUm` | Field | Optional service existence flag — true if any non-050 optional service was found |
| `can_skip_sip_ecs_delsod` | Field | Boolean flag — SIP/ENUM deletion SOD already issued (e.g., forced termination case, ANK-4494-00-00) |
| `iHave050no` | Field | Boolean flag — 050-number (portable number) optional service found |
