## 2. Processing Pattern (Detailed Business Logic)

```mermaid
flowchart TD
    START(["htelNoDslOdrCtrl call"])
    EXTRACT["Extract SOD base/service/ucwk maps from sodMap via JKKHakkoSODConstCC keys"]
    TRANSFORM["Apply shkkaMap to each of the 3 maps"]
    GET_FIELDS["Extract: sys_id, ido_div, svc_kei_no, svc_kei_ucwk_no, chaf_svc_kei_ucwk_gene_add_dtm"]
    ORIG_CHECK{"moto_svc_kei_ucwk_no set?"}
    USE_ORIG["Use moto_svc_kei_ucwk_no and moto_svc_kei_ucwk_gene_add_dtm"]
    USE_NEW["Use svc_kei_ucwk_no and chaf_svc_kei_ucwk_gene_add_dtm"]
    EARLY_RET{"svc_kei_ucwk_no blank OR telDslExe false?"}
    CHK_RADIUS{"isTelCancelSodIssued?"}
    SET_RADIUS["isRadiusZumi = true"]
    GET_TRN["getSame_trn_no - obtain common process number"]
    CALL_EKK0191["callEKK0191A010SC - VA port info acquisition<br/>Input: svc_kei_ucwk_no, gene_add_dtm"]
    CHK_ERR1{status != 0?}
    GET_EKK0191["Extract: vaPortNo, vaTaknkikiModelCd, vaKikiSeizoNo, vaKikiChgNo"]
    CALL_EKK0341["callEKK0341B008SC - Device provision svc contract list<br/>Input: svc_kei_no"]
    CHK_ERR2{status != 0?}
    GET_EKK0341["Extract: msgEKK0341B022SCList"]
    BUILD_LIST["Build newKikiList: VA list + MFR list + pre-move MFR list"]
    ITER_DEV{"Iterate newKikiList"}
    CHK_VA{"isRegalVaKiki(modelCd, ido_div, chgNo)?"}
    SET_VA["Set: kktkSvcKeiNo, kktkGeneAddDtm, vaKikiSeizoNo, tknkiki_sbt_cd"]
    CHK_MFR{"isRegalMfRouter + isJuhenBfUse + isJuhenBfUseKkop?"}
    RUN_EKK251["runEKK0251A010 - Get service line agreement"]
    SET_MFR["Set: kktkSvcKeiNo, MFR info + svc_kei_kaisen_ucwk_no/gadtm"]
    CHK_JVLA{"isJuhenVA?"}
    SET_JVA["Set: kktkSvcKeiNo, VA info (keep, no break)"]
    CHK_JMR{"isJuhenMfRouter + kktkSvcKeiNo empty?"}
    SET_JMR["Set: kktkSvcKeiNo, MFR info (keep, no break)"]
    NEXT_STEP1["Set instance fields (svc_kei_ucwk_no, kktk_svc_kei_no, etc.)"]
    CALL_EKK0251["getEKK0251B001SC - Service line details list<br/>Input: svc_kei_no"]
    DEV_INFO{"All 4 device fields non-blank?"}
    NEW_VA{"va_kiki new and !in va_kiki_list?"}
    PREV_GENE["setPrevGeneIfVaMod - capture previous VA generation"]
    RESET_VA["Reset va_kiki from instance fields"]
    CHK_RZ{"!isRadiusZumi?"}
    CHK_HGW{"!MFR OR HGW?"}
    CHK_DSL2{"isDslOrderExist2 for OLS?"}
    ADD215["addSOD ODR_NAIYO_CD_215='215' - OLS setup/cancellation"]
    ADD216["addSOD ODR_NAIYO_CD_216='216' - OLS setup/deletion"]
    ADD_LIST["va_kiki_list.add(va_kiki)"]
    RUN2811["runEKK2811B010 - Device operation svc contract list"]
    GET_KKOP{"ekk2811b010Map not null?"}
    SET_KKOP["Set kkop_svc_kei_va, kkop_svc_kei_router fields"]
    CHK_BBR{"isKkopSvcOnKiki (BBR service)?"}
    ADD417["addSOD ODR_NAIYO_CD_417='417' - MFR setup/change VA cancel"]
    CHK_MFR2{"isDslOrderExist2 for MFR?"}
    ADD421["addSOD ODR_NAIYO_CD_421='421' - MFR setup/cancellation"]
    ADD422["addSOD ODR_NAIYO_CD_422='422' - MFR setup/deletion"]
    ADD_LIST2["va_kiki_list.add(va_kiki)"]
    CALL_ENUM["callEKK0191A010SC - Service details for ENUM"]
    GET_BMP{"Extract: bmpUm, telno"}
    CHK_MONAI{"isMonaiBmp(telno, JISHA)?"}
    ADD266["addSOD ODR_NAIYO_CD_266='266' - ENUM setup/deletion"]
    TOKI_CHK{"checkTokiOrderExist?"}
    CHK_DIV{"odr_exec_div='3' (ODR_EXEC_DIV_NEW_END)?"}
    CHK_TEL{"isChgTel or isChgAddress?"}
    CHK_DSL3{"isDslOrderExist?"}
    IS_SIP["isSipDslSodHakko = true"]
    ADD229["addSOD ODR_NAIYO_CD_229='229' - SIP cancellation"]
    ADD230["addSOD ODR_NAIYO_CD_230='230' - SIP deletion"]
    CHK_TOKI{"itntokiKiboUm='1' AND itntokiAddCd='2'?"}
    CHK_DATES{"endRsymd future AND staYmd empty AND endYmd empty?"}
    UPD_TOKI["updItntokiInfo - update lock date"]
    ADD220["addSOD ODR_NAIYO_CD_220='220' - SIP lock registration"]
    IS_TOKI["isTokiOrdered = true"]
    CHK_TELOLD{"isSipDslSodHakko AND isMonaiBmp AND !isTokiOrdered?"}
    MAP_TEL["Set updJudgeTelNo and tgTelNo in result map"]
    ADD252["addSOD ODR_NAIYO_CD_252='252' - Emergency notification deletion"]
    CHK_RADIUS2{"!isRadiusZumi?"}
    ADD204["addSOD ODR_NAIYO_CD_204='204' - Radius auth/cancellation"]
    IS_DONE["isRadiusZumi = true"]
    END_RET["Return param"]

    START --> EXTRACT --> TRANSFORM --> GET_FIELDS --> ORIG_CHECK
    ORIG_CHECK -->|Yes| USE_ORIG
    ORIG_CHECK -->|No| USE_NEW
    USE_ORIG --> EARLY_RET
    USE_NEW --> EARLY_RET
    EARLY_RET -->|Yes| END_RET
    EARLY_RET -->|No| CHK_RADIUS
    CHK_RADIUS -->|Yes| SET_RADIUS --> GET_TRN
    CHK_RADIUS -->|No| GET_TRN
    GET_TRN --> CALL_EKK0191 --> CHK_ERR1
    CHK_ERR1 -->|Yes| THROW1
    THROW1 --> END_RET
    CHK_ERR1 -->|No| GET_EKK0191
    GET_EKK0191 --> CALL_EKK0341 --> CHK_ERR2
    CHK_ERR2 -->|Yes| THROW2
    THROW2 --> END_RET
    CHK_ERR2 -->|No| GET_EKK0341
    GET_EKK0341 --> BUILD_LIST --> ITER_DEV --> CHK_VA
    CHK_VA -->|Yes| SET_VA --> NEXT_STEP1
    CHK_VA -->|No| CHK_MFR
    CHK_MFR -->|Yes| RUN_EKK251 --> SET_MFR --> NEXT_STEP1
    CHK_MFR -->|No| CHK_JVLA
    CHK_JVLA -->|Yes| SET_JVA --> CHK_JMR
    CHK_JVLA -->|No| CHK_JMR
    CHK_JMR -->|Yes| SET_JMR --> NEXT_STEP1
    CHK_JMR -->|No| NEXT_STEP1
    NEXT_STEP1 --> CALL_EKK0251 --> DEV_INFO
    DEV_INFO -->|No| SKIP_DEV
    DEV_INFO -->|Yes| NEW_VA
    NEW_VA -->|Yes| PREV_GENE --> RESET_VA
    RESET_VA --> CHK_RZ
    NEW_VA -->|No| CHK_RZ
    CHK_RZ -->|No| SKIP_DEV
    CHK_RZ -->|Yes| CHK_HGW
    CHK_HGW -->|HGW| RUN2811
    CHK_HGW -->|Not MFR| CHK_DSL2
    CHK_DSL2 -->|No OLS| SKIP_OLS
    CHK_DSL2 -->|OLS exists| ADD215 --> ADD216 --> ADD_LIST --> NEXT_STEP2
    SKIP_OLS --> NEXT_STEP2
    RUN2811 --> GET_KKOP
    GET_KKOP -->|Null| NEXT_STEP2
    GET_KKOP -->|Not null| SET_KKOP --> CHK_BBR
    CHK_BBR -->|Has BBR| ADD417 --> NEXT_STEP2
    CHK_BBR -->|No BBR| CHK_MFR2
    CHK_MFR2 -->|No MFR order| ADD421 --> ADD422 --> ADD_LIST2 --> NEXT_STEP2
    CHK_MFR2 -->|MFR order| NEXT_STEP2
    NEXT_STEP2 --> CALL_ENUM --> GET_BMP --> CHK_MONAI
    CHK_MONAI -->|Yes| ADD266 --> NEXT_STEP3
    CHK_MONAI -->|No| NEXT_STEP3
    NEXT_STEP3 --> TOKI_CHK
    TOKI_CHK -->|No order| NEW_END_CHK
    TOKI_CHK -->|Order exists| NEXT_STEP4
    NEW_END_CHK -->|Yes| CHK_TEL
    NEW_END_CHK -->|No| IS_SIP --> ADD229 --> ADD230 --> ENUM_PROC
    CHK_TEL -->|Changed| IS_SIP
    CHK_TEL -->|No change| CHK_DSL3
    CHK_DSL3 -->|Has DSL| IS_SIP
    CHK_DSL3 -->|No DSL| NEXT_STEP4
    IS_SIP --> ADD229 --> ADD230 --> ENUM_PROC
    ENUM_PROC --> TOKI_PROC
    TOKI_PROC --> CHK_TOKI
    CHK_TOKI -->|No| TEL_UPD
    CHK_TOKI -->|Yes| CHK_DATES
    CHK_DATES -->|Valid| UPD_TOKI --> ADD220 --> IS_TOKI --> TEL_UPD
    CHK_DATES -->|Invalid| TEL_UPD
    IS_TOKI --> TEL_UPD
    TEL_UPD -->|Yes| MAP_TEL --> ADD252
    TEL_UPD -->|No| ADD252
    ADD252 --> CHK_RADIUS2
    CHK_RADIUS2 -->|No| END_RET
    CHK_RADIUS2 -->|Yes| ADD204 --> IS_DONE --> END_RET

    END_RET(["Return param"])
```

**CRITICAL - Constant Resolution:**

| Constant | Resolved Value | Business Meaning |
|----------|---------------|-----------------|
| `ODR_NAIYO_CD_215` | `"215"` | OLS setup/cancellation |
| `ODR_NAIYO_CD_216` | `"216"` | OLS setup/deletion |
| `ODR_NAIYO_CD_220` | `"220"` | SIP lock registration |
| `ODR_NAIYO_CD_229` | `"229"` | SIP cancellation |
| `ODR_NAIYO_CD_230` | `"230"` | SIP deletion |
| `ODR_NAIYO_CD_252` | `"252"` | Emergency notification deletion |
| `ODR_NAIYO_CD_204` | `"204"` | Radius authentication/cancellation |
| `ODR_NAIYO_CD_265` | `"265"` | ENUM setup/registration |
| `ODR_NAIYO_CD_266` | `"266"` | ENUM setup/deletion |
| `ODR_NAIYO_CD_417` | `"417"` | MFR setup/change (VA function cancellation) |
| `ODR_NAIYO_CD_421` | `"421"` | MFR setup/cancellation |
| `ODR_NAIYO_CD_422` | `"422"` | MFR setup/deletion |
| `ODR_EXEC_DIV_NEW_END` | `"3"` | Order issuance trigger: New Completion |
| `ITNTOKI_KIBO_UM_ARI` | `"1"` | Transfer lock desired: Yes |
| `ITNTOKI_ADD_CD_DSL` | `"2"` | Transfer lock registration code: DSL |
| `KKOP_SVC_CD_VA` | `"G02"` | Device operation service code: VA |
| `TAKNKIKI_SBT_CD_MFR` | `"R0"` | Home device subtype code: Multi-Function Router |
| `TAKNKIKI_SBT_CD_HGW` | `"R0"` | Home device subtype code: HGW (Home Gateway) |
| `CD00189_JISHA` | (from JKKStrConst) | Own company (self) designation code |

## 3. Parameter Analysis

| No | Parameter Name | Type | Business Description |
|----|---------------|------|---------------------|
| 1 | `handle` | `SessionHandle` | Session manager handle carrying connection/context state; used for DB access and SC calls throughout the method. |
| 2 | `param` | `IRequestParameterReadWrite` | Parameter object containing the model group data map and control map; accumulates SOD creations via `addSOD` and carries result data maps (e.g., `result_updJudgeTelNo`). |
| 3 | `fixedText` | `String` | User-arbitrary string used as a key to retrieve user data from `param.getData(fixedText)`; maps to business context data areas. |
| 4 | `sodMap` | `HashMap<String, Object>` | Service Order Data map containing nested sub-maps: `SOD_KIHON_INFO` (SOD base info), `SVC_KEI_INFO` (service contract info), `SVC_KEI_UCWK_INFO` (service contract details). Also carries `"adchg_no"` (address change number) for pre-move device queries. |
| 5 | `odr_exec_div` | `String` | Order issuance trigger classification - determines processing flow. Values: `"3"` (`ODR_EXEC_DIV_NEW_END`, New Completion) triggers conditional SIP/SOD flag determination; any other value (e.g., `"2"` for withdrawal completion) sets `isSipDslSodHakko = true` directly. |

**Instance fields read/written by this method:**

| Field | Operation | Business Meaning |
|-------|-----------|-----------------|
| `same_trn_no` | SET | Common process number shared across related orders |
| `svc_kei_ucwk_no` | SET | Service contract details number |
| `svc_kei_ucwk_gadtm` | SET | Changed service contract details generation registration date-time |
| `kktk_svc_kei_no` | SET | Device provision service contract number |
| `kktk_svc_kei_gadtm` | SET | Device provision service contract generation registration date-time |
| `taknkiki_model_cd` | SET | Home device model code |
| `kiki_seizo_no` | SET | Device manufacturing number |
| `chbf_kktk_svc_kei_gadtm` | SET | Pre-change device provision service contract generation registration date-time |
| `svc_kei_kaisen_ucwk_no` | SET | Service line details number |
| `svc_kei_kaisen_ucwk_gadtm` | SET | Service line details generation registration date-time |
| `kkop_svc_kei_router[0]` | SET | Device operation service contract number (router) |
| `kkop_svc_kei_router_gadtm[0]` | SET | Device operation service contract generation registration date-time |
| `kkop_svc_kei_va[0]` | SET | Device operation service contract number (VA) |
| `kkop_svc_kei_va_gadtm[0]` | SET | Device operation service contract (VA) generation registration date-time |
