# Business Logic — JKKHakkoSODCC.taiikiSeigenOdrCtrl() [474 LOC]

| Field | Value |
|-------|-------|
| Fully Qualified Name | `com.fujitsu.futurity.bp.custom.common.JKKHakkoSODCC` |
| Layer | Common Component / CC (Custom Component — Order Processing Control) |
| Module | `common` (Package: `com.fujitsu.futurity.bp.custom.common`) |

## 1. Role

### JKKHakkoSODCC.taiikiSeigenOdrCtrl()

This method is the **bandwidth restriction order control process** (`帯域制限設定・解除オーダ制御処理`) for FTTH (Fiber To The Home) broadband services. It orchestrates the generation of Service Order Data (SOD) records required to configure or remove bandwidth restrictions on a customer's internet service line. The method serves as a central dispatching hub that evaluates the current state of a service contract and determines which specific order operations must be issued.

The method handles **FTTH broadband service only** — it exits early if the service kind is not network/Internet (`SVC_KIND_NET = "1"`), excluding mail, telephone, mobile, and television services. For FTTH lines, it evaluates multiple operational dimensions: the service contract status (active, suspended, terminated), whether the customer has multi-session capability (`mltise_flg`), whether a fixed global IP address is provisioned (`fixipad_flg`), and whether an IP Address 8 Division (`KOTEI_IP_AD_8_DIV`) is registered via external SC call.

The method implements a **routing/dispatch design pattern**: it evaluates service attributes and conditionally emits SOD records with specific order content codes (`ODR_NAIYO_CD`) to instruct downstream fulfillment systems. Each emitted SOD record corresponds to a discrete business operation — FTTH authentication registration/deregistration/recovery, fixed IP address recovery, multi-session active/static registration/deregistration, or temporary suspension. The method delegates to `addSOD()` for each operation, building up a composite parameter object that carries all necessary SOD records to the order issuance flow.

This is a **shared utility method** called from `JKKHakkoSODCC.hakkoSOD()`, meaning it is invoked as part of the broader order issuance pipeline. It does not contain direct database access but acts as a business logic coordinator that reads service state, queries operational service details, and produces order directives.

## 2. Processing Pattern (Detailed Business Logic)

```mermaid
flowchart TD
    START(["taiikiSeigenOdrCtrl handle param sodMap"])
    EXTRACT["Extract SOD_KIHON_INFO SVC_KEI_INFO SVC_KEI_UCWK_INFO from sodMap"]
    NORMALIZE["Call shkkaMap on each map null-safe init"]
    JUDGE["Call jdgSvcKind Determine service kind"]
    D1{svc_kind equals SVC_KIND_NET 1}
    RETURN1["Return param unchanged non-FTTH"]
    CHECK_STAT["Check svc_kei_stat equals 910 and syori_div equals 011"]
    D2{Terminated and cancellation order}
    EARLY_RETURN["Return param unchanged terminated"]
    GET_LIST["Call getSvcKeiUtwkList"]
    EXTRACT_NO["Extract svc_kei_ucwk_no svc_kei_ucwk_gadtm"]
    GET_OP["Call getOpSvcKeiNotDslList"]
    EXTRACT_OP["Extract op_svc_kei_no_ms op_gadtm_mltise op_svc_kei_no_fixipad op_gadtm_fixipad"]
    GET_TRN["Call getSame_trn_no Get transaction number"]
    FTTH_AUTH_DSL["Call addSOD ODR_NAIYO_CD_103 FTTH Auth Deregistration"]
    FTTH_AUTH_RECOV["Call addSOD ODR_NAIYO_CD_105 FTTH Auth Recovery"]
    GET_KOTEI["Call callEKK0091A010_SC Get Fixed IP Address 8 Division"]
    FIXED_IP{fixipad_flg OR KOTEI_IP_AD_8_DIV not empty}
    FIXED_OP_SOD["Call addSOD ODR_NAIYO_CD_153 Fixed IP Recovery"]
    MULTI{mltise_flg AND NOT fixipad_flg}
    MULTI_DSL["Call addSOD ODR_NAIYO_CD_143 Multi-session active Deregistration"]
    MULTI_REG["Call addSOD ODR_NAIYO_CD_142 Multi-session active Registration"]
    MULTI_FIXIP{mltise_flg AND fixipad_flg}
    FIXIP_DSL["Call addSOD ODR_NAIYO_CD_145 Multi-session static Deregistration"]
    FIXIP_RECOV["Call addSOD ODR_NAIYO_CD_161 Multi-session static Recovery"]
    SUSP_CHECK{svc_kei_stat equals 210 or 220}
    TEMP_SUSP["Call addSOD ODR_NAIYO_CD_106 FTTH Auth Temporary Suspension"]
    COMBINED{svc_kei_stat equals 210 or 220 AND mltise AND fixipad}
    COMBINED_SOD["Call addSOD ODR_NAIYO_CD_170 Multi-session static Temp Suspension"]
    FINAL_RETURN["Return param"]

    START --> EXTRACT --> NORMALIZE --> JUDGE --> D1
    D1 -- No --> RETURN1
    D1 -- Yes --> CHECK_STAT
    D2 -- Yes --> EARLY_RETURN
    D2 -- No --> GET_LIST --> EXTRACT_NO --> GET_OP --> EXTRACT_OP --> GET_TRN --> FTTH_AUTH_DSL --> FTTH_AUTH_RECOV --> GET_KOTEI
    FIXED_IP -- Yes --> FIXED_OP_SOD --> MULTI
    FIXED_IP -- No --> MULTI
    MULTI -- Yes --> MULTI_DSL --> MULTI_REG --> MULTI_FIXIP
    MULTI -- No --> MULTI_FIXIP
    MULTI_FIXIP -- Yes --> FIXIP_DSL --> FIXIP_RECOV --> SUSP_CHECK
    MULTI_FIXIP -- No --> SUSP_CHECK
    SUSP_CHECK -- Yes --> TEMP_SUSP --> COMBINED
    SUSP_CHECK -- No --> COMBINED
    COMBINED -- Yes --> COMBINED_SOD --> FINAL_RETURN
    COMBINED -- No --> FINAL_RETURN
    RETURN1 --> END1([END])
    EARLY_RETURN --> END2([END])
    FINAL_RETURN --> END3([END])
```

**Business-level flow summary:**

1. **Extract and normalize SOD maps** from the `sodMap` input: service basic info, service contract info, and service contract detail info. Each map is null-safe initialized via `shkkaMap()`.

2. **Determine service kind** via `jdgSvcKind()`. If the service is not FTTH/network (`SVC_KIND_NET = "1"`), exit immediately — bandwidth restriction orders only apply to internet services.

3. **Check for early-termination conditions**: If the service contract status is terminated (`SVC_KEI_STAT_910 = "910"`) AND the processing division indicates a cancellation order (`KEI_SVC_CTL_YOKYU_ODR_SKCD_011 = "011"`), exit immediately.

4. **Fetch service contract detail list** via `getSvcKeiUtwkList()` and extract the service contract detail number (`svcKeiUcwkNo`) and generation timestamp (`svcKeiUcwkGeneAddDtm`).

5. **Query active operational services** via `getOpSvcKeiNotDslList()`. This identifies multi-session (`B015`) and fixed global IP (`B004`) services and populates the instance fields `op_svc_kei_no_mltise`, `op_gadtm_mltise`, `op_svc_kei_no_fixipad`, `op_gadtm_fixipad`. The boolean flags `mltise_flg` and `fixipad_flg` are set as side effects.

6. **Get shared transaction number** via `getSame_trn_no()` for tracking concurrent processing.

7. **Always emit**: FTTH authentication deregistration (`ODR_NAIYO_CD_103 = "103"`) and FTTH authentication recovery (`ODR_NAIYO_CD_105 = "105"`) — these form the core bandwidth restriction on/off pair.

8. **Query Fixed IP Address 8 Division** via `callEKK0091A010_SC()` to determine if a fixed IP address registration exists beyond the legacy flag.

9. **Conditional: Fixed IP recovery** — If `fixipad_flg` is true OR `KOTEI_IP_AD_8_DIV` is not empty, emit fixed IP address recovery (`ODR_NAIYO_CD_153 = "153"`).

10. **Conditional: Multi-session (active)** — If `mltise_flg` is true AND `fixipad_flg` is false, emit multi-session active deregistration (`ODR_NAIYO_CD_143 = "143"`) followed by multi-session active registration (`ODR_NAIYO_CD_142 = "142"`).

11. **Conditional: Multi-session (static) with fixed IP** — If both `mltise_flg` and `fixipad_flg` are true, emit multi-session static deregistration (`ODR_NAIYO_CD_145 = "145"`) followed by multi-session static recovery (`ODR_NAIYO_CD_161 = "161"`).

12. **Conditional: Temporary suspension** — If service status is `SVC_KEI_STAT_210 = "210"` (suspended) or `SVC_KEI_STAT_220 = "220"` (suspended), emit FTTH authentication temporary suspension (`ODR_NAIYO_CD_106 = "106"`).

13. **Conditional: Combined suspension with multi-session and fixed IP** — If suspended AND both `mltise_flg` and `fixipad_flg` are true, emit multi-session static temporary suspension (`ODR_NAIYO_CD_170 = "170"`).

## 3. Parameter Analysis

| No | Parameter Name | Type | Business Description |
|----|---------------|------|---------------------|
| 1 | `handle` | `SessionHandle` | Session management handle containing the database session and transaction context. Provides the infrastructure for SC (Service Component) calls and database access during this method's processing. |
| 2 | `param` | `IRequestParameterReadWrite` | Business data read/write interface object that carries the model group and control map. It is progressively enriched with SOD records throughout the method via each `addSOD()` call and returned at the end. |
| 3 | `sodMap` | `HashMap<String, Object>` | Map containing SOD (Service Order Data) context data. Contains three sub-maps: `SOD_KIHON_INFO` (service basic info such as SYSID and processing division), `SVC_KEI_INFO` (service contract info including service contract number and status), and `SVC_KEI_UCWK_INFO` (service contract detail info). |

### Instance Fields Read

| Field | Type | Business Description |
|-------|------|---------------------|
| `svc_kei_stat` | `String` | Service contract status code. Evaluated against `SVC_KEI_STAT_910`, `SVC_KEI_STAT_210`, `SVC_KEI_STAT_220` to determine if the service is terminated or suspended. |
| `syori_div` | `String` | Processing division code. Evaluated against `KEI_SVC_CTL_YOKYU_ODR_SKCD_011` to check if the processing type is a cancellation order. |
| `svc_kei_no1` | `String` | Service contract number. Passed to `getOldVrsbIdgSvcDtlCd()` and `callEKK0091A010_SC()` to identify the service. |
| `svc_kei_ucwk_no[]` | `String[]` | Service contract detail number — the internal tracking ID for service contract line items. Set before each `addSOD()` call. |
| `svc_kei_ucwk_gadtm[]` | `String[]` | Service contract generation/addition timestamp — the date/time when the service contract detail was created. Set before each `addSOD()` call. |
| `op_svc_kei_no_mltise` | `String` | Operational service contract number for multi-session service. Populated by `getOpSvcKeiNotDslList()` and used when emitting multi-session SOD records. |
| `op_gadtm_mltise` | `String` | Generation timestamp for the multi-session operational service. Used when emitting multi-session SOD records. |
| `op_svc_kei_no_fixipad` | `String` | Operational service contract number for fixed global IP address service. Populated by `getOpSvcKeiNotDslList()` and used when emitting fixed IP SOD records. |
| `op_gadtm_fixipad` | `String` | Generation timestamp for the fixed IP address operational service. Used when emitting fixed IP SOD records. |
| `same_trn_no` | `String` | Shared transaction number obtained from `getSame_trn_no()`. Used for tracking concurrent processing. |
| `old_vrsb_jdg_svc_dtl_cd` | `String` | Old VR (Virtual Router) identification judgment service detail code. Populated by `getOldVrsbIdgSvcDtlCd()` for legacy VR identification. |
| `pplan_cd` | `String` | Plan code — the service plan identifier. Passed to `getOldVrsbIdgSvcDtlCd()`. |
| `mltise_flg` | `boolean` | Multi-session flag. Set to `true` when an operational service of type multi-session (`B015`) is found via `getOpSvcKeiNotDslList()`. |
| `fixipad_flg` | `boolean` | Fixed global IP address flag. Set to `true` when an operational service of type fixed global IP address (`B004`) is found via `getOpSvcKeiNotDslList()`. |

## 4. CRUD Operations / Called Services

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

| CRUD | SC / CBS | SC Code | Entity / DB | Operation Description |
|------|----------|---------|-------------|----------------------|
| R | `JKKHakkoSODCC.getSvcKeiUtwkList` | - | - | Retrieves service contract detail list for the service line. Populates `svc_kei_ucwk_no` and `svc_kei_ucwk_gadtm` from the response. |
| R | `JKKHakkoSODCC.getOpSvcKeiNotDslList` | - | - | Retrieves operational service contract list excluding DSL services. Identifies multi-session (`B015`) and fixed global IP (`B004`) services, sets `mltise_flg` and `fixipad_flg`. Replaces previous `getOpSvcKeiList` (OM-2014-0003941). |
| R | `JKKHakkoSODCC.getSame_trn_no` | - | - | Retrieves a shared transaction number for tracking concurrent processing within the same operation batch. |
| R | `JKKHakkoSODCC.getOldVrsbIdgSvcDtlCd` | - | - | Retrieves old VR (Virtual Router) identification judgment service detail code for legacy VR identification purposes. ANK-2765-00-00. |
| R | `JKKHakkoSODCC.callEKK0091A010_SC` | EKK0091A010_SC | - | Calls service component to get the Fixed IP Address 8 Division code. Used to determine if a fixed IP address registration exists beyond the legacy `fixipad_flg`. ANK-3900-00-00. |
| C | `JKKHakkoSODCC.addSOD` | - | - | Creates and adds SOD (Service Order Data) records to the parameter. Each call with a different `ODR_NAIYO_CD` emits a distinct order operation for downstream fulfillment. The primary create operation. |
| - | `JKKHakkoSODCC.jdgSvcKind` | - | - | Determines the service kind (Network, Telephone, Mobile, etc.) by analyzing plan codes and service attributes. Returns `"1"` for FTTH/network. |
| - | `JKKHakkoSODCC.shkkaMap` | - | - | Null-safe HashMap initialization utility. Returns the input map if non-null, otherwise a new empty HashMap. Called three times on SOD context maps. |

### Detailed SOD Order Content Code Analysis

Each `addSOD()` call emits an SOD record with a specific order content code. The following codes are emitted by this method:

| Order Content Code | Value | Business Meaning | When Emitted |
|-------------------|-------|-----------------|--------------|
| `ODR_NAIYO_CD_103` | `"103"` | FTTH Authentication Deregistration — removes FTTH authentication binding | Always, at the start of processing |
| `ODR_NAIYO_CD_105` | `"105"` | FTTH Authentication Recovery — restores FTTH authentication binding | Always, immediately after deregistration |
| `ODR_NAIYO_CD_153` | `"153"` | Fixed IP Address Recovery — provisions or restores fixed global IP address access | When `fixipad_flg` is true OR `KOTEI_IP_AD_8_DIV` is not empty |
| `ODR_NAIYO_CD_143` | `"143"` | Multi-session (active) Deregistration — removes active multi-session binding | When `mltise_flg` is true AND `fixipad_flg` is false |
| `ODR_NAIYO_CD_142` | `"142"` | Multi-session (active) Registration — establishes active multi-session binding | When `mltise_flg` is true AND `fixipad_flg` is false (follows 143) |
| `ODR_NAIYO_CD_145` | `"145"` | Multi-session (static) Deregistration — removes static multi-session with fixed IP | When `mltise_flg` AND `fixipad_flg` are both true |
| `ODR_NAIYO_CD_161` | `"161"` | Multi-session (static) Recovery — restores static multi-session with fixed IP | When `mltise_flg` AND `fixipad_flg` are both true (follows 145) |
| `ODR_NAIYO_CD_106` | `"106"` | FTTH Authentication Temporary Suspension — temporarily suspends FTTH authentication | When `svc_kei_stat` is `210` or `220` |
| `ODR_NAIYO_CD_170` | `"170"` | Multi-session (static) Temporary Suspension — combines suspension with static multi-session | When `svc_kei_stat` is `210` or `220` AND `mltise_flg` AND `fixipad_flg` |

## 5. Dependency Trace

### Caller Chain

| # | Caller (Screen/Batch) | Call Chain (Full Path to this Method) | Terminal (SC / CRUD / Entity) |
|---|----------------------|--------------------------------------|-------------------------------|
| 1 | Method: `JKKHakkoSODCC.hakkoSOD` | `hakkoSOD()` -> `taiikiSeigenOdrCtrl()` | `addSOD` [C], `getOldVrsbIdgSvcDtlCd` [R], `getSame_trn_no` [R], `getOpSvcKeiNotDslList` [R], `getSvcKeiUtwkList` [R], `callEKK0091A010_SC` [R], `jdgSvcKind` [-] |

### Terminal Operations

| # | Terminal Operation | CRUD | Description |
|---|-------------------|------|-------------|
| 1 | `addSOD(handle, param, ODR_NAIYO_CD_103)` | C | FTTH Authentication Deregistration SOD record |
| 2 | `addSOD(handle, param, ODR_NAIYO_CD_105)` | C | FTTH Authentication Recovery SOD record |
| 3 | `addSOD(handle, param, ODR_NAIYO_CD_153)` | C | Fixed IP Address Recovery SOD record (conditional) |
| 4 | `addSOD(handle, param, ODR_NAIYO_CD_143)` | C | Multi-session (active) Deregistration SOD record (conditional) |
| 5 | `addSOD(handle, param, ODR_NAIYO_CD_142)` | C | Multi-session (active) Registration SOD record (conditional) |
| 6 | `addSOD(handle, param, ODR_NAIYO_CD_145)` | C | Multi-session (static) Deregistration SOD record (conditional) |
| 7 | `addSOD(handle, param, ODR_NAIYO_CD_161)` | C | Multi-session (static) Recovery SOD record (conditional) |
| 8 | `addSOD(handle, param, ODR_NAIYO_CD_106)` | C | FTTH Authentication Temporary Suspension SOD record (conditional) |
| 9 | `addSOD(handle, param, ODR_NAIYO_CD_170)` | C | Multi-session (static) Temporary Suspension SOD record (conditional) |
| 10 | `callEKK0091A010_SC(param, handle, svc_kei_no1, FUNC_CODE_2)` | R | Fixed IP Address 8 Division query (ANK-3900-00-00) |
| 11 | `getOldVrsbIdgSvcDtlCd(handle, param, svc_kei_no1, svc_kei_ucwk_no, pplan_cd)` | R | Old VR identification judgment code query (ANK-2765-00-00) |
| 12 | `getSame_trn_no(param, handle, null, sameTrnNo)` | R | Shared transaction number retrieval |
| 13 | `getOpSvcKeiNotDslList(handle, param, svcKeiUcwkNo)` | R | Operational service contract list (non-DSL) |
| 14 | `getSvcKeiUtwkList(handle, param)` | R | Service contract detail list |

## 6. Per-Branch Detail Blocks

### Block 1 — EXTRACT (SOD map extraction) (L31655)

> Extracts the three SOD sub-maps from the `sodMap` input and performs null-safe initialization via `shkkaMap()`.

| # | Type | Code | Business Description |
|---|------|------|---------------------|
| 1 | EXTRACT | `sod_kihon_info_Map = sodMap.get(SOD_KIHON_INFO)` | Extract SOD basic info map — contains service-level data like SYSID and processing division |
| 2 | EXTRACT | `svc_kei_info_Map = sodMap.get(SVC_KEI_INFO)` | Extract service contract info map — contains service contract number, status, and related data |
| 3 | EXTRACT | `svc_kei_ucwk_info_Map = sodMap.get(SVC_KEI_UCWK_INFO)` | Extract service contract detail info map — contains line-item level contract detail data |
| 4 | EXEC | `shkkaMap(sod_kihon_info_Map)` | Null-safe initialization of basic info map |
| 5 | EXEC | `shkkaMap(svc_kei_info_Map)` | Null-safe initialization of service contract info map |
| 6 | EXEC | `shkkaMap(svc_kei_ucwk_info_Map)` | Null-safe initialization of service contract detail info map |

### Block 2 — SERVICE KIND DETERMINATION (L31668)

> Determines if the service is an FTTH/network service. Non-FTTH services exit early.

| # | Type | Code | Business Description |
|---|------|------|---------------------|
| 1 | CALL | `jdgSvcKind()` | Determines service kind. Changed from `jdgSvcKind_PcrsCd()` per IT2-2016-0000004 (2016/02/16) |
| 2 | SET | `svc_kind = result` | Service kind code — `"1"` indicates network/FTTH service |

**Block 2.1** — IF `!SVC_KIND_NET.equals(svc_kind)` (Early Exit — Non-FTTH) (L31670)

> Exits immediately if the service is not FTTH/network. Bandwidth restriction orders only apply to internet services.

| # | Type | Code | Business Description |
|---|------|------|---------------------|
| 1 | RETURN | `return param` | Return param unchanged — bandwidth restriction not applicable to non-FTTH services |

**Block 2.2** — ELSE (FTTH path) (L31672)

> Continues processing for FTTH services.

### Block 3 — TERMINATED SERVICE CHECK (L31676)

> Checks if the service contract is in terminated status and the processing division indicates a cancellation order.

| # | Type | Code | Business Description |
|---|------|------|---------------------|
| 1 | CHECK | `svc_kei_stat == SVC_KEI_STAT_910 == "910"` | Service contract terminated status |
| 2 | CHECK | `syori_div == KEI_SVC_CTL_YOKYU_ODR_SKCD_011 == "011"` | Processing division = cancellation order (Yokyu) |

**Block 3.1** — IF both conditions true (Early Exit — Terminated) (L31676)

| # | Type | Code | Business Description |
|---|------|------|---------------------|
| 1 | RETURN | `return param` | Return param unchanged — no bandwidth restriction on terminated service lines with cancellation orders |

### Block 4 — SERVICE CONTRACT DETAIL LIST (L31686)

> Retrieves the list of service contract detail items for the service line.

| # | Type | Code | Business Description |
|---|------|------|---------------------|
| 1 | CALL | `getSvcKeiUtwkList(handle, param)` | Retrieves service contract detail list (L: サービス契約内訳一覧照会) |
| 2 | EXTRACT | `svcKeiUcwkNo = this.svc_kei_ucwk_no[0]` | Extract service contract detail number |
| 3 | EXTRACT | `svcKeiUcwkGeneAddDtm = this.svc_kei_ucwk_gadtm[0]` | Extract service contract detail generation timestamp |

### Block 5 — OPERATIONAL SERVICE QUERY (L31719)

> Queries operational services excluding DSL, identifying multi-session and fixed global IP services.

| # | Type | Code | Business Description |
|---|------|------|---------------------|
| 1 | CALL | `getOpSvcKeiNotDslList(handle, param, svcKeiUcwkNo)` | Retrieves operational service contract list (L: 利用中オプションの確認). Replaces `getOpSvcKeiList` per OM-2014-0003941 |
| 2 | EXTRACT | `opSvcKeiNo_ms = this.op_svc_kei_no_mltise` | Multi-session operational service contract number |
| 3 | EXTRACT | `opGeneAddDtm_ms = this.op_gadtm_mltise` | Multi-session generation timestamp |
| 4 | EXTRACT | `opSvcKeiNo_ip = this.op_svc_kei_no_fixipad` | Fixed global IP address operational service contract number |
| 5 | EXTRACT | `opGeneAddDtm_ip = this.op_gadtm_fixipad` | Fixed global IP address generation timestamp |

**Note:** The commented-out code (ANK-2188-00-00 DEL) previously handled course change mid-processing scenarios, including calls to `callEKK1681B001SC`, `callEKK0161B004SC`, `callEKK0161B011SC`, and `getYykOpSvcKeiList`. This was removed because the new authentication ID target during course changes does not trigger bandwidth restriction settings/removal, and the S-IF call location became unnecessary.

### Block 6 — TRANSACTION NUMBER ACQUISITION (L31769)

> Obtains a shared transaction number for concurrent processing tracking.

| # | Type | Code | Business Description |
|---|------|------|---------------------|
| 1 | SET | `sameTrnNo = new String[1]` | Prepare result array for same transaction number |
| 2 | CALL | `getSame_trn_no(param, handle, null, sameTrnNo)` | Get shared transaction number (L: 同一処理番号の取得) |
| 3 | SET | `this.same_trn_no = sameTrnNo[0]` | Store in instance field |

### Block 7 — FTTH AUTHENTICATION DEREGISTRATION (L31779)

> Always emits: FTTH Authentication Deregistration order (L: FTTH認証・解除).

| # | Type | Code | Business Description |
|---|------|------|---------------------|
| 1 | SET | `this.svc_kei_ucwk_no[0] = svcKeiUcwkNo` | Set service contract detail number |
| 2 | SET | `this.svc_kei_ucwk_gadtm[0] = svcKeiUcwkGeneAddDtm` | Set generation timestamp |
| 3 | CALL | `addSOD(handle, param, ODR_NAIYO_CD_103 = "103")` | FTTH Authentication Deregistration order content |

### Block 8 — FTTH AUTHENTICATION RECOVERY (L31784)

> Always emits: FTTH Authentication Recovery order (L: FTTH認証・復帰).

| # | Type | Code | Business Description |
|---|------|------|---------------------|
| 1 | SET | `this.svc_kei_ucwk_no[0] = svcKeiUcwkNo` | Set service contract detail number |
| 2 | SET | `this.svc_kei_ucwk_gadtm[0] = svcKeiUcwkGeneAddDtm` | Set generation timestamp |
| 3 | SET | `this.op_svc_kei_no_fixipad = ""` | Clear fixed IP operational service number |
| 4 | SET | `this.op_gadtm_fixipad = ""` | Clear fixed IP generation timestamp |
| 5 | CALL | `getOldVrsbIdgSvcDtlCd(handle, param, svc_kei_no1, svc_kei_ucwk_no[0], pplan_cd)` | Get old VR identification judgment service detail code (ANK-2765-00-00) |
| 6 | SET | `this.old_vrsb_jdg_svc_dtl_cd = result` | Store old VR identification code |
| 7 | CALL | `addSOD(handle, param, ODR_NAIYO_CD_105 = "105")` | FTTH Authentication Recovery order content |

### Block 9 — FIXED IP ADDRESS 8 DIVISION QUERY (L31803)

> Queries external SC to get Fixed IP Address 8 Division code. ANK-3900-00-00.

| # | Type | Code | Business Description |
|---|------|------|---------------------|
| 1 | CALL | `callEKK0091A010_SC(param, handle, svc_kei_no1, FUNC_CODE_2)` | Get Fixed IP Address 8 Division code (L: 固定IPアドレス8を取得) |
| 2 | SET | `KOTEI_IP_AD_8_DIV = result` | Store fixed IP address 8 division code |

### Block 10 — FIXED IP RECOVERY (Conditional) (L31808)

> Conditionally emits: Fixed IP Address Recovery order (L: IPv6かつ固定グローバルIPアドレス取得).

| # | Type | Code | Business Description |
|---|------|------|---------------------|
| 1 | CHECK | `fixipad_flg` | Legacy fixed global IP flag |
| 2 | CHECK | `KOTEI_IP_AD_8_DIV != ""` | New fixed IP address 8 division code from SC call |

**Block 10.1** — IF `fixipad_flg || !KOTEI_IP_AD_8_DIV.isEmpty()`

| # | Type | Code | Business Description |
|---|------|------|---------------------|
| 1 | SET | `this.svc_kei_ucwk_no[0] = svcKeiUcwkNo` | Set service contract detail number |
| 2 | SET | `this.svc_kei_ucwk_gadtm[0] = svcKeiUcwkGeneAddDtm` | Set generation timestamp |
| 3 | SET | `this.op_svc_kei_no_fixipad = opSvcKeiNo_ip` | Set fixed IP operational service number |
| 4 | SET | `this.op_gadtm_fixipad = opGeneAddDtm_ip` | Set fixed IP generation timestamp |
| 5 | CALL | `addSOD(handle, param, ODR_NAIYO_CD_153 = "153")` | Fixed IP Address Recovery order content |

### Block 11 — MULTI-SESSION (ACTIVE) (Conditional) (L31827)

> Conditionally emits: Multi-session (active) deregistration and registration orders (L: IPv6かつ固定グローバルIPアドレスなし).

| # | Type | Code | Business Description |
|---|------|------|---------------------|
| 1 | CHECK | `mltise_flg` | Multi-session flag is true |
| 2 | CHECK | `!fixipad_flg` | No fixed global IP address |

**Block 11.1** — IF `mltise_flg && !fixipad_flg`

| # | Type | Code | Business Description |
|---|------|------|---------------------|
| 1 | SET | `this.svc_kei_ucwk_no[0] = svcKeiUcwkNo` | Set service contract detail number |
| 2 | SET | `this.svc_kei_ucwk_gadtm[0] = svcKeiUcwkGeneAddDtm` | Set generation timestamp |
| 3 | SET | `this.op_svc_kei_no_mltise = opSvcKeiNo_ms` | Set multi-session operational service number |
| 4 | SET | `this.op_gadtm_mltise = opGeneAddDtm_ms` | Set multi-session generation timestamp |
| 5 | CALL | `addSOD(handle, param, ODR_NAIYO_CD_143 = "143")` | Multi-session (active) Deregistration (OM-2016-0000600 — previously deregistration only) |
| 6 | CALL | `addSOD(handle, param, ODR_NAIYO_CD_142 = "142")` | Multi-session (active) Registration |

### Block 12 — MULTI-SESSION (STATIC) WITH FIXED IP (Conditional) (L31847)

> Conditionally emits: Multi-session (static) deregistration and recovery orders (L: IPv6かつ固定グローバルIPあり).

| # | Type | Code | Business Description |
|---|------|------|---------------------|
| 1 | CHECK | `mltise_flg` | Multi-session flag is true |
| 2 | CHECK | `fixipad_flg` | Fixed global IP address flag is true |

**Block 12.1** — IF `mltise_flg && fixipad_flg`

| # | Type | Code | Business Description |
|---|------|------|---------------------|
| 1 | SET | `this.svc_kei_ucwk_no[0] = svcKeiUcwkNo` | Set service contract detail number |
| 2 | SET | `this.svc_kei_ucwk_gadtm[0] = svcKeiUcwkGeneAddDtm` | Set generation timestamp |
| 3 | SET | `this.op_svc_kei_no_mltise = opSvcKeiNo_ms` | Set multi-session operational service number |
| 4 | SET | `this.op_gadtm_mltise = opGeneAddDtm_ms` | Set multi-session generation timestamp |
| 5 | CALL | `addSOD(handle, param, ODR_NAIYO_CD_145 = "145")` | Multi-session (static) Deregistration |
| 6 | CALL | `addSOD(handle, param, ODR_NAIYO_CD_161 = "161")` | Multi-session (static) Recovery |

### Block 13 — TEMPORARY SUSPENSION (Conditional) (L31861)

> Conditionally emits: FTTH Authentication Temporary Suspension order (L: FTTH認証一時停止).

| # | Type | Code | Business Description |
|---|------|------|---------------------|
| 1 | CHECK | `svc_kei_stat == SVC_KEI_STAT_210 == "210"` | Service contract status = suspended |
| 2 | CHECK | `svc_kei_stat == SVC_KEI_STAT_220 == "220"` | Service contract status = suspended (alt.) |

**Block 13.1** — IF `svc_kei_stat == "210" || svc_kei_stat == "220"`

| # | Type | Code | Business Description |
|---|------|------|---------------------|
| 1 | SET | `this.svc_kei_ucwk_no[0] = svcKeiUcwkNo` | Set service contract detail number |
| 2 | SET | `this.svc_kei_ucwk_gadtm[0] = svcKeiUcwkGeneAddDtm` | Set generation timestamp |
| 3 | SET | `this.op_svc_kei_no_mltise = ""` | Clear multi-session operational service number |
| 4 | SET | `this.op_gadtm_mltise = ""` | Clear multi-session generation timestamp |
| 5 | CALL | `addSOD(handle, param, ODR_NAIYO_CD_106 = "106")` | FTTH Authentication Temporary Suspension order content |

### Block 14 — COMBINED SUSPENSION WITH MULTI-SESSION AND FIXED IP (Conditional) (L31878)

> Conditionally emits: Multi-session (static) Temporary Suspension order (L: FTTH認証一時停止かつ固定IPなしかつマルチセッション). IT1-2012-0001922.

| # | Type | Code | Business Description |
|---|------|------|---------------------|
| 1 | CHECK | `svc_kei_stat == "210" || svc_kei_stat == "220"` | Service contract status = suspended |
| 2 | CHECK | `mltise_flg` | Multi-session flag is true |
| 3 | CHECK | `fixipad_flg` | Fixed global IP address flag is true |

**Block 14.1** — IF all three conditions true

| # | Type | Code | Business Description |
|---|------|------|---------------------|
| 1 | SET | `this.svc_kei_ucwk_no[0] = svcKeiUcwkNo` | Set service contract detail number |
| 2 | SET | `this.svc_kei_ucwk_gadtm[0] = svcKeiUcwkGeneAddDtm` | Set generation timestamp |
| 3 | SET | `this.op_svc_kei_no_mltise = opSvcKeiNo_ms` | Set multi-session operational service number |
| 4 | SET | `this.op_gadtm_mltise = opGeneAddDtm_ms` | Set multi-session generation timestamp |
| 5 | CALL | `addSOD(handle, param, ODR_NAIYO_CD_170 = "170")` | Multi-session (static) Temporary Suspension order content |

## 7. Glossary

| Term | Type | Business Meaning |
|------|------|------------------|
| `taiikiSeigenOdrCtrl` | Method | Bandwidth Restriction Order Control Process — orchestrates SOD emission for FTTH bandwidth restriction configuration |
| SOD | Acronym | Service Order Data — telecom order fulfillment entity representing a service order request for downstream processing |
| FTTH | Business term | Fiber To The Home — fiber-optic broadband internet service delivered to residential customers |
| `svc_kind` | Field | Service kind code — classifies the service type; `"1"` indicates network/FTTH broadband |
| `svc_kei_stat` | Field | Service contract status code — indicates the current state of the service line |
| `SVC_KEI_STAT_910` | Constant | `"910"` — Service contract terminated status |
| `SVC_KEI_STAT_210` | Constant | `"210"` — Service contract suspended status |
| `SVC_KEI_STAT_220` | Constant | `"220"` — Service contract suspended status (alternative code) |
| `syori_div` | Field | Processing division code — indicates the type of processing being performed |
| `KEI_SVC_CTL_YOKYU_ODR_SKCD_011` | Constant | `"011"` — Cancellation order (Yokyu) processing division |
| `SVC_KIND_NET` | Constant | `"1"` — Network/Internet service kind classification |
| `svc_kei_ucwk_no` | Field | Service contract detail number — internal tracking ID for a specific service line item within a service contract |
| `svc_kei_ucwk_gadtm` | Field | Service contract detail generation/addition timestamp — when the service contract detail record was created |
| `svc_kei_no1` | Field | Service contract number — the top-level contract identifier for a customer's service |
| `op_svc_kei_no_mltise` | Field | Operational service contract number for multi-session service |
| `op_gadtm_mltise` | Field | Generation timestamp for the multi-session operational service |
| `op_svc_kei_no_fixipad` | Field | Operational service contract number for fixed global IP address service |
| `op_gadtm_fixipad` | Field | Generation timestamp for the fixed IP address operational service |
| `mltise_flg` | Field | Multi-session boolean flag — `true` when the service has an active multi-session operational service (code `B015`) |
| `fixipad_flg` | Field | Fixed global IP address boolean flag — `true` when the service has a fixed global IP address operational service (code `B004`) |
| `same_trn_no` | Field | Shared transaction number — used for tracking concurrent processing within the same operation batch |
| `old_vrsb_jdg_svc_dtl_cd` | Field | Old VR (Virtual Router) identification judgment service detail code — used for legacy VR identification purposes |
| `pplan_cd` | Field | Plan code — the service plan identifier associated with the service contract |
| `KOTEI_IP_AD_8_DIV` | Variable | Fixed IP Address 8 Division code — obtained from external SC call `callEKK0091A010_SC` |
| `ODR_NAIYO_CD_103` | Constant | `"103"` — FTTH Authentication Deregistration order content |
| `ODR_NAIYO_CD_105` | Constant | `"105"` — FTTH Authentication Recovery order content |
| `ODR_NAIYO_CD_153` | Constant | `"153"` — Fixed IP Address Recovery order content |
| `ODR_NAIYO_CD_142` | Constant | `"142"` — Multi-session (active) Registration order content |
| `ODR_NAIYO_CD_143` | Constant | `"143"` — Multi-session (active) Deregistration order content |
| `ODR_NAIYO_CD_145` | Constant | `"145"` — Multi-session (static) Deregistration order content |
| `ODR_NAIYO_CD_161` | Constant | `"161"` — Multi-session (static) Recovery order content |
| `ODR_NAIYO_CD_106` | Constant | `"106"` — FTTH Authentication Temporary Suspension order content |
| `ODR_NAIYO_CD_170` | Constant | `"170"` — Multi-session (static) Temporary Suspension order content |
| Multi-session | Business term | A feature allowing multiple concurrent sessions/connections on a single broadband service line |
| Multi-session (active) | Business term | Dynamic multi-session configuration — sessions are established on demand |
| Multi-session (static) | Business term | Static multi-session configuration — sessions are permanently provisioned, typically combined with fixed IP |
| Fixed Global IP Address | Business term | A permanently assigned public IP address provisioned on the broadband service line |
| `FUNC_CODE_2` | Constant | Function code `2` — used in `callEKK0091A010_SC` to request Fixed IP Address 8 Division lookup |
| `getOpSvcKeiNotDslList` | Method | Retrieves operational service contract list excluding DSL services (replaced `getOpSvcKeiList` per OM-2014-0003941) |
| `callEKK0091A010_SC` | Method | Service component call to retrieve Fixed IP Address 8 Division code (fixed IP address query) |
| `getOldVrsbIdgSvcDtlCd` | Method | Retrieves old VR (Virtual Router) identification judgment service detail code for legacy VR identification (ANK-2765-00-00) |
| `getSame_trn_no` | Method | Retrieves shared transaction number for concurrent processing tracking |
| `shkkaMap` | Method | Null-safe HashMap initialization utility — returns input map or new empty HashMap |
| `jdgSvcKind` | Method | Determines service kind by analyzing plan codes and service attributes (replaced `jdgSvcKind_PcrsCd` per IT2-2016-0000004) |
| `OP_SVC_CD_MLTISE` | Constant | `"B015"` — Operational service code for multi-session |
| `OP_SVC_CD_FIXIPAD` | Constant | `"B004"` — Operational service code for fixed global IP address |
| SC | Acronym | Service Component — a service layer component that handles database-level operations |
| BS | Acronym | Business Service — higher-level business logic component that coordinates SC calls |
| CBS | Acronym | Component Business Service — a business service component for order processing |
| `getSvcKeiUtwkList` | Method | Retrieves the list of service contract detail items (L: サービス契約内訳一覧照会) |
| `addSOD` | Method | Creates and appends an SOD record to the parameter object with the specified order content code |
| `hakkoSOD` | Method | Parent order issuance method that calls `taiikiSeigenOdrCtrl` as part of its processing flow |
| ANK | Acronym | Internal change request/project identifier prefix (e.g., ANK-2188, ANK-2765, ANK-3900) |
| OM | Acronym | Order modification/change request identifier prefix |
| IT | Acronym | Internal ticket/change request identifier prefix |
| ST2 | Acronym | Internal version/fix identifier prefix |
