# Business Logic — JKKHakkoSODCC.addTakinoSOD() [429 LOC]

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

## 1. Role

### JKKHakkoSODCC.addTakinoSOD()

This method is the central order router for **Takino (multi-function router)** service operations within the K-Opticom customer backbone system (eo customer backbone system). It handles order registration for Takino-related service configurations, determining the correct set of order conditions and order information work records to create based on the incoming order content code (`orderNaiyoCd`).

The method implements a **conditional routing / dispatch pattern**: it examines the `orderNaiyoCd` parameter to classify the operation into one of several business scenarios covering Takino router setup, change, cancellation, deletion, and the special IPv6 variant, as well as Virtual Access (VA) function assignments, swaps, and cancellations. Each branch configures a distinct set of fields in a shared work map before delegating to two downstream services: `executeOdrHakkoJokenAdd` (order issuance condition registration) and `executeOdrInfoSakseiWkAdd` (order information creation work registration).

Key differentiating factors across branches include: (1) which service contract number to assign — the router function (`kkop_svc_kei_no_1`) or the VA function (`kkop_svc_kei_no_2`); (2) the request type code (`yokyu_sbt_cd`): New (02), Cancellation (03), Change (04), or Deletion (08); and (3) whether IPv6-specific optional service contract numbers are used.

The method is called from 15+ entry-point methods within `JKKHakkoSODCC`, making it a shared utility invoked during diverse customer contract operations including new net registration, order control, DSL order control, IPoE setup, number change, cancellation, and port forwarding scenarios.

## 2. Processing Pattern (Detailed Business Logic)

```mermaid
flowchart TD
    START(["addTakinoSOD"])
    
    CHECK_WORKMAP["inMap != null?"]
    FORMAT_MAP["formatInMap(inMap)"]
    
    CHECK_40X["ODR_NAIYO_CD_402/403/404/405"]
    MAP_40X_1["Map work fields with router as kkop_svc_kei_no_1"]
    MAP_40X_2["Call executeOdrHakkoJokenAdd"]
    MAP_40X_3["Map info creation with router as kkop_svc_kei_no_1"]
    MAP_40X_4["Call executeOdrInfoSakseiWkAdd"]
    
    CHECK_407X["ODR_NAIYO_CD_407-417, 425, 426"]
    MAP_407X_1["Map work fields with VA as kkop_svc_kei_no_2"]
    MAP_407X_2["Call executeOdrHakkoJokenAdd"]
    MAP_407X_3["Map info creation with VA as kkop_svc_kei_no_2"]
    MAP_407X_4["Call executeOdrInfoSakseiWkAdd"]
    
    CHECK_401_406["ODR_NAIYO_CD_401/406"]
    INNER_406["ODR_NAIYO_CD_406"]
    MAP_406_1["Map work with VA as kkop_svc_kei_no_2, YOKYU_SBT_CD_NEW"]
    MAP_406_2["Call executeOdrHakkoJokenAdd"]
    MAP_406_3["Map info creation with VA as kkop_svc_kei_no_2"]
    MAP_406_4["Call executeOdrInfoSakseiWkAdd"]
    INNER_401["ODR_NAIYO_CD_401"]
    MAP_401_1["Map work with router as kkop_svc_kei_no_1, YOKYU_SBT_CD_NEW"]
    MAP_401_2["Call executeOdrHakkoJokenAdd"]
    MAP_401_3["Map info creation with router as kkop_svc_kei_no_1"]
    MAP_401_4["Call executeOdrInfoSakseiWkAdd"]
    
    CHECK_419_420["ODR_NAIYO_CD_419/420"]
    INNER_419["ODR_NAIYO_CD_419"]
    MAP_419_1["Map work with router as kkop_svc_kei_no_1, DSL"]
    MAP_419_2["Call executeOdrHakkoJokenAdd"]
    MAP_419_3["Map info creation with router as kkop_svc_kei_no_1"]
    MAP_419_4["Call executeOdrInfoSakseiWkAdd"]
    INNER_420["ODR_NAIYO_CD_420"]
    MAP_420_1["Map work with router as kkop_svc_kei_no_1, DEL"]
    MAP_420_2["Call executeOdrHakkoJokenAdd"]
    MAP_420_3["Map info creation with router as kkop_svc_kei_no_1"]
    MAP_420_4["Call executeOdrInfoSakseiWkAdd"]
    
    CHECK_421_422["ODR_NAIYO_CD_421/422"]
    INNER_421["ODR_NAIYO_CD_421"]
    MAP_421_1["Map work with VA as kkop_svc_kei_no_2, DSL"]
    MAP_421_2["Call executeOdrHakkoJokenAdd"]
    MAP_421_3["Map info creation with VA as kkop_svc_kei_no_2"]
    MAP_421_4["Call executeOdrInfoSakseiWkAdd"]
    INNER_422["ODR_NAIYO_CD_422"]
    MAP_422_1["Map work with VA as kkop_svc_kei_no_2, DEL"]
    MAP_422_2["Call executeOdrHakkoJokenAdd"]
    MAP_422_3["Map info creation with VA as kkop_svc_kei_no_2"]
    MAP_422_4["Call executeOdrInfoSakseiWkAdd"]
    
    CHECK_418["ODR_NAIYO_CD_418"]
    MAP_418_1["Map work with router as kkop_svc_kei_no_1, CHG"]
    MAP_418_2["Call executeOdrHakkoJokenAdd"]
    MAP_418_3["Map info creation with router as kkop_svc_kei_no_1"]
    MAP_418_4["Call executeOdrInfoSakseiWkAdd"]
    
    CHECK_404_IPV6["ODR_NAIYO_CD_404_IPv6"]
    MAP_404_IPV6_1["Map work with router as kkop_svc_kei_no_1, CHG"]
    MAP_404_IPV6_2["Call executeOdrHakkoJokenAdd"]
    MAP_404_IPV6_3["Map info creation with router, IPv6 op_svc_kei_no"]
    MAP_404_IPV6_4["Call executeOdrInfoSakseiWkAdd"]
    
    RETURN_PARAM["Return param"]
    END_NODE(["END"])
    
    START --> CHECK_WORKMAP
    CHECK_WORKMAP -->|Yes| FORMAT_MAP
    FORMAT_MAP --> CHECK_40X
    CHECK_40X -->|Yes| MAP_40X_1
    MAP_40X_1 --> MAP_40X_2
    MAP_40X_2 --> MAP_40X_3
    MAP_40X_3 --> MAP_40X_4
    CHECK_40X -->|No| CHECK_407X
    CHECK_407X -->|Yes| MAP_407X_1
    MAP_407X_1 --> MAP_407X_2
    MAP_407X_2 --> MAP_407X_3
    MAP_407X_3 --> MAP_407X_4
    CHECK_407X -->|No| CHECK_401_406
    CHECK_401_406 -->|406| INNER_406
    INNER_406 --> MAP_406_1
    MAP_406_1 --> MAP_406_2
    MAP_406_2 --> MAP_406_3
    MAP_406_3 --> MAP_406_4
    INNER_406 -->|No| INNER_401
    INNER_401 --> MAP_401_1
    MAP_401_1 --> MAP_401_2
    MAP_401_2 --> MAP_401_3
    MAP_401_3 --> MAP_401_4
    CHECK_401_406 -->|No| CHECK_419_420
    CHECK_419_420 -->|419| INNER_419
    INNER_419 --> MAP_419_1
    MAP_419_1 --> MAP_419_2
    MAP_419_2 --> MAP_419_3
    MAP_419_3 --> MAP_419_4
    INNER_419 -->|No| INNER_420
    INNER_420 --> MAP_420_1
    MAP_420_1 --> MAP_420_2
    MAP_420_2 --> MAP_420_3
    MAP_420_3 --> MAP_420_4
    CHECK_419_420 -->|No| CHECK_421_422
    CHECK_421_422 -->|421| INNER_421
    INNER_421 --> MAP_421_1
    MAP_421_1 --> MAP_421_2
    MAP_421_2 --> MAP_421_3
    MAP_421_3 --> MAP_421_4
    INNER_421 -->|No| INNER_422
    INNER_422 --> MAP_422_1
    MAP_422_1 --> MAP_422_2
    MAP_422_2 --> MAP_422_3
    MAP_422_3 --> MAP_422_4
    CHECK_421_422 -->|No| CHECK_418
    CHECK_418 -->|Yes| MAP_418_1
    MAP_418_1 --> MAP_418_2
    MAP_418_2 --> MAP_418_3
    MAP_418_3 --> MAP_418_4
    CHECK_418 -->|No| CHECK_404_IPV6
    CHECK_404_IPV6 -->|Yes| MAP_404_IPV6_1
    MAP_404_IPV6_1 --> MAP_404_IPV6_2
    MAP_404_IPV6_2 --> MAP_404_IPV6_3
    MAP_404_IPV6_3 --> MAP_404_IPV6_4
    MAP_40X_4 --> RETURN_PARAM
    MAP_407X_4 --> RETURN_PARAM
    MAP_406_4 --> RETURN_PARAM
    MAP_401_4 --> RETURN_PARAM
    MAP_419_4 --> RETURN_PARAM
    MAP_420_4 --> RETURN_PARAM
    MAP_421_4 --> RETURN_PARAM
    MAP_422_4 --> RETURN_PARAM
    MAP_418_4 --> RETURN_PARAM
    MAP_404_IPV6_4 --> RETURN_PARAM
    RETURN_PARAM --> END_NODE
    CHECK_WORKMAP -->|No| END_NODE
```

## 3. Parameter Analysis

| No | Parameter Name | Type | Business Description |
|----|---------------|------|---------------------|
| 1 | `handle` | `SessionHandle` | Session management handle carrying session context (transaction, connection, and management information) passed to all downstream service calls. |
| 2 | `param` | `IRequestParameterReadWrite` | Request parameter object containing a work map (`HAKKOSODCCWORK`) used as the shared data carrier throughout the order registration pipeline. Holds service contract numbers, timestamps, device identifiers, and order configuration fields. |
| 3 | `orderNaiyoCd` | `String` | Order content code that determines the Takino operation type. Values include `402`-`405` (basic router setup/change), `407`-`417`, `425`-`426` (router + VA), `401`/`406` (router-to-VA swap), `419`-`420` (router cancellation/deletion), `421`-`422` (VA cancellation/deletion), `418` (router renewal), and `404_IPv6` (IPv6 router). |

### Instance fields read by this method

| Field | Type | Business Description |
|-------|------|---------------------|
| `svc_kei_ucwk_no` | `String[]` | Service contract work number — internal tracking ID for the service contract line item. |
| `svc_kei_ucwk_gadtm` | `String[]` | Service contract work registration date/time — timestamp of the work record creation. |
| `takino_svc_kei_kaisen_ucwk_no` | `String` | Service contract extension work number — tracking ID for service contract line extensions (added via IT1-2013-0001710). |
| `takino_svc_kei_kaisen_ucwk_gadtm` | `String` | Service contract extension work registration date/time. |
| `takino_kktk_svc_kei_no` | `String` | Equipment-provided service contract number (multi-function router) — contract number for the Takino device. |
| `takino_kktk_svc_kei_gadtm` | `String` | Equipment-provided service contract registration date/time. |
| `taknkiki_model_cd_takino` | `String` | Home device model code — Takino multi-function router hardware model identifier. |
| `kiki_seizo_no_takino` | `String` | Device serial number — unique serial number of the Takino router. |
| `kkop_svc_kei_no` | `String` | Equipment optional service contract number — used as either router function (kkop_svc_kei_no_1) or VA function (kkop_svc_kei_no_2) contract number depending on the branch. |
| `kkop_svc_kei_gadtm` | `String` | Equipment optional service contract registration date/time. |
| `same_trn_no` | `String` | Same processing number — a unique transaction identifier for batch/consolidated processing. |
| `op_svc_kei_no_ipv6` | `String` | Optional service contract number for IPv6 — My Home Page contract number in the IPv6 branch. |
| `op_gadtm_ipv6` | `String` | Optional service contract registration date/time for IPv6. |

## 4. CRUD Operations / Called Services

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

| CRUD | SC / CBS | SC Code | Entity / DB | Operation Description |
|------|----------|---------|-------------|----------------------|
| C | `executeOdrHakkoJokenAdd` | JKKHakkoSODCC | KK_T_ODR_HAKKO_JOKEN | Creates order issuance condition registration — writes the order issuance criteria (instant issuance code, order subtype, service order code) to the order condition table. Called in every branch. |
| C | `executeOdrInfoSakseiWkAdd` | JKKHakkoSODCC | KK_T_ODR_INFO_SAKSEI_WK | Creates order information creation work records — writes the work record for order information assembly including service contract numbers, device model codes, serial numbers, and timestamps. Called in every branch. |
| R | `formatInMap` | JKKHakkoSODCC | - | Reads and resets the work map fields to prepare for new registration. Called at the start of each branch path when `inMap != null`. |

### Detailed breakdown:

| CRUD | SC / CBS | SC Code | Entity / DB | Operation Description |
|------|----------|---------|-------------|----------------------|
| R | `formatInMap` | JKKHakkoSODCC | - | Resets the HashMap work map (`HAKKOSODCCWORK`) by clearing and reinitializing all fields to a clean state before populating with new order data. |
| C | `executeOdrHakkoJokenAdd(handle, param)` | JKKHakkoSODCC | KK_T_ODR_HAKKO_JOKEN | Order issuance condition registration — inserts a new order issuance condition record with the configured fields: service contract work number, Takino contract number, device model code, serial number, order subtype code (TEL="2"), service order code (MRT="26" = multi-function router setup), request subtype code (varies by branch), and issuance condition code (SOKJI_HAKKO="01" = instant issuance). |
| C | `executeOdrInfoSakseiWkAdd(handle, param)` | JKKHakkoSODCC | KK_T_ODR_INFO_SAKSEI_WK | Order information creation work registration — creates a work record that assembles all order information fields for downstream processing: order content code, service contract work number with timestamp, Takino contract number with timestamp, equipment optional service contract number with timestamp (mapped to either kkop_svc_kei_no_1 or kkop_svc_kei_no_2 depending on branch), and additional information contract number (Takino extension work number). |

## 5. Dependency Trace

### Caller-to-method trace

| # | Caller (Screen/Batch) | Call Chain (Full Path to this Method) | Terminal (SC / CRUD / Entity) |
|---|----------------------|--------------------------------------|-------------------------------|
| 1 | CBS:JKKHakkoSODCC.dslOdrCtrl | `dslOdrCtrl` -> `addTakinoSOD` | `executeOdrHakkoJokenAdd [C] KK_T_ODR_HAKKO_JOKEN`, `executeOdrInfoSakseiWkAdd [C] KK_T_ODR_INFO_SAKSEI_WK` |
| 2 | CBS:JKKHakkoSODCC.hakkouIpv6 | `hakkouIpv6` -> `addTakinoSOD` | `executeOdrHakkoJokenAdd [C] KK_T_ODR_HAKKO_JOKEN`, `executeOdrInfoSakseiWkAdd [C] KK_T_ODR_INFO_SAKSEI_WK` |
| 3 | CBS:JKKHakkoSODCC.htelNoDslOdrCtrl | `htelNoDslOdrCtrl` -> `addTakinoSOD` | `executeOdrHakkoJokenAdd [C] KK_T_ODR_HAKKO_JOKEN`, `executeOdrInfoSakseiWkAdd [C] KK_T_ODR_INFO_SAKSEI_WK` |
| 4 | CBS:JKKHakkoSODCC.htelNoInfoChgeOdrCtrl | `htelNoInfoChgeOdrCtrl` -> `addTakinoSOD` | `executeOdrHakkoJokenAdd [C] KK_T_ODR_HAKKO_JOKEN`, `executeOdrInfoSakseiWkAdd [C] KK_T_ODR_INFO_SAKSEI_WK` |
| 5 | CBS:JKKHakkoSODCC.htelNoKaihkOdrCtrl | `htelNoKaihkOdrCtrl` -> `addTakinoSOD` | `executeOdrHakkoJokenAdd [C] KK_T_ODR_HAKKO_JOKEN`, `executeOdrInfoSakseiWkAdd [C] KK_T_ODR_INFO_SAKSEI_WK` |
| 6 | CBS:JKKHakkoSODCC.jdgOdr163 | `jdgOdr163` -> `addTakinoSOD` | `executeOdrHakkoJokenAdd [C] KK_T_ODR_HAKKO_JOKEN`, `executeOdrInfoSakseiWkAdd [C] KK_T_ODR_INFO_SAKSEI_WK` |
| 7 | CBS:JKKHakkoSODCC.kaihkOdrCtrl | `kaihkOdrCtrl` -> `addTakinoSOD` | `executeOdrHakkoJokenAdd [C] KK_T_ODR_HAKKO_JOKEN`, `executeOdrInfoSakseiWkAdd [C] KK_T_ODR_INFO_SAKSEI_WK` |
| 8 | CBS:JKKHakkoSODCC.newNet | `newNet` -> `addTakinoSOD` | `executeOdrHakkoJokenAdd [C] KK_T_ODR_HAKKO_JOKEN`, `executeOdrInfoSakseiWkAdd [C] KK_T_ODR_INFO_SAKSEI_WK` |
| 9 | CBS:JKKHakkoSODCC.opSetOdrCtrl | `opSetOdrCtrl` -> `addTakinoSOD` | `executeOdrHakkoJokenAdd [C] KK_T_ODR_HAKKO_JOKEN`, `executeOdrInfoSakseiWkAdd [C] KK_T_ODR_INFO_SAKSEI_WK` |
| 10 | CBS:JKKHakkoSODCC.rtOpChgDivOdrCtrl | `rtOpChgDivOdrCtrl` -> `addTakinoSOD` | `executeOdrHakkoJokenAdd [C] KK_T_ODR_HAKKO_JOKEN`, `executeOdrInfoSakseiWkAdd [C] KK_T_ODR_INFO_SAKSEI_WK` |
| 11 | CBS:JKKHakkoSODCC.setChgePWForRouterConInfo | `setChgePWForRouterConInfo` -> `addTakinoSOD` | `executeOdrHakkoJokenAdd [C] KK_T_ODR_HAKKO_JOKEN`, `executeOdrInfoSakseiWkAdd [C] KK_T_ODR_INFO_SAKSEI_WK` |
| 12 | CBS:JKKHakkoSODCC.telNoChge | `telNoChge` -> `addTakinoSOD` | `executeOdrHakkoJokenAdd [C] KK_T_ODR_HAKKO_JOKEN`, `executeOdrInfoSakseiWkAdd [C] KK_T_ODR_INFO_SAKSEI_WK` |
| 13 | CBS:JKKHakkoSODCC.vLanIdChgOdrCtrl | `vLanIdChgOdrCtrl` -> `addTakinoSOD` | `executeOdrHakkoJokenAdd [C] KK_T_ODR_HAKKO_JOKEN`, `executeOdrInfoSakseiWkAdd [C] KK_T_ODR_INFO_SAKSEI_WK` |
| 14 | CBS:JKKHakkoSODCC.vLanIdVaChangeOdrCtrl | `vLanIdVaChangeOdrCtrl` -> `addTakinoSOD` | `executeOdrHakkoJokenAdd [C] KK_T_ODR_HAKKO_JOKEN`, `executeOdrInfoSakseiWkAdd [C] KK_T_ODR_INFO_SAKSEI_WK` |
| 15 | CBS:JKKHakkoSODCC.wribInfoAddOdrCtrl | `wribInfoAddOdrCtrl` -> `addTakinoSOD` | `executeOdrHakkoJokenAdd [C] KK_T_ODR_HAKKO_JOKEN`, `executeOdrInfoSakseiWkAdd [C] KK_T_ODR_INFO_SAKSEI_WK` |

### Dependency diagram

```mermaid
flowchart LR
    CALLERS["Multiple callers:<br/>dslOdrCtrl, hakkouIpv6,<br/>htelNoDslOdrCtrl,<br/>htelNoInfoChgeOdrCtrl,<br/>kaihkOdrCtrl, newNet,<br/>opSetOdrCtrl, rtOpChgDivOdrCtrl,<br/>telNoChge, vLanIdChgOdrCtrl,<br/>wribInfoAddOdrCtrl, jdgOdr163,<br/>htelNoKaihkOdrCtrl,<br/>setChgePWForRouterConInfo,<br/>vLanIdVaChangeOdrCtrl"]
    
    ADDTAKINO["addTakinoSOD"]
    
    FORMAT["formatInMap"]
    EXECODR["executeOdrHakkoJokenAdd"]
    EXEWORK["executeOdrInfoSakseiWkAdd"]
    
    CALLERS --> ADDTAKINO
    ADDTAKINO --> FORMAT
    ADDTAKINO --> EXECODR
    ADDTAKINO --> EXEWORK
```

## 6. Per-Branch Detail Blocks

### Block 1 — IF [inMap != null] (L5339)

> Validates that the work map exists in the request parameters. If null, the method skips all processing and returns `param` unchanged. This acts as a guard clause.

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `inMap = (HashMap) param.getData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP)` |
| 2 | SET | `if (inMap != null)` |

### Block 1.1 — IF [inMap != null == true] — Map Initialization (L5347)

> Resets and reinitializes the work map before populating it with new order data. This ensures no stale data from a prior operation contaminates the current registration.

| # | Type | Code |
|---|------|------|
| 1 | CALL | `inMap = formatInMap(inMap)` |
| 2 | SET | Branch on `orderNaiyoCd` (see sub-blocks below) |

### Block 1.2 — IF-ELSE-IF [orderNaiyoCd == 402/403/404/405] — Basic Router Setup/Change [ODR_NAIYO_CD_402="402", ODR_NAIYO_CD_403="403", ODR_NAIYO_CD_404="404", ODR_NAIYO_CD_405="405"] (L5350)

> Handles basic Takino multi-function router setup or change operations. The router function is assigned to `kkop_svc_kei_no_1` (router function slot), while the VA function slot (`kkop_svc_kei_no_2`) is left empty. Request subtype is Change (04).

#### Block 1.2.1 — executeOdrHakkoJokenAdd (L5353-5378)

| # | Type | Code | Business Description |
|---|------|------|---------------------|
| 1 | SET | `inMap.put("svc_kei_ucwk_no", svc_kei_ucwk_no[0])` | Service contract work number |
| 2 | SET | `inMap.put("op_svc_kei_no", "")` | Optional service contract number (My Home Page) — empty |
| 3 | SET | `inMap.put("sbop_svc_kei_no", "")` | Sub-optional service contract number (Mail Address) — empty |
| 4 | SET | `inMap.put("svc_kei_kaisen_ucwk_no", takino_svc_kei_kaisen_ucwk_no)` | Service contract extension work number (IT1-2013-0001710) |
| 5 | SET | `inMap.put("kktk_svc_kei_no", takino_kktk_svc_kei_no)` | Equipment-provided service contract number (multi-function router) |
| 6 | SET | `inMap.put("taknkiki_model_cd", taknkiki_model_cd_takino)` | Home device model code |
| 7 | SET | `inMap.put("kiki_seizo_no", kiki_seizo_no_takino)` | Device serial number |
| 8 | SET | `inMap.put("mlad", "")` | Mail address — empty |
| 9 | SET | `inMap.put("order_sbt_cd", ORDER_SBT_CD_TEL = "2")` [-> ORDER_SBT_CD_TEL] | Order subtype code — Telephone |
| 10 | SET | `inMap.put("svc_order_cd", SVC_ORDER_CD_MRT = "26")` [-> SVC_ORDER_CD_MRT] | Service order code — Multi-function router setup |
| 11 | SET | `inMap.put("yokyu_sbt_cd", YOKYU_SBT_CD_CHG = "04")` [-> YOKYU_SBT_CD_CHG] | Request subtype code — Change |
| 12 | SET | `inMap.put("odr_hakko_joken_cd", ODR_HAKKO_JOKEN_CD_SOKJI_HAKKO = "01")` [-> ODR_HAKKO_JOKEN_CD_SOKJI_HAKKO] | Order issuance condition code — Instant issuance |
| 13 | SET | `inMap.put("same_trn_no", same_trn_no)` | Same processing number |
| 14 | SET | `inMap.put("kkop_svc_kei_no_1", kkop_svc_kei_no)` | Equipment optional service contract number 1 (router function) |
| 15 | SET | `inMap.put("kkop_svc_kei_no_2", "")` | Equipment optional service contract number 2 (VA function) — empty |
| 16 | EXEC | `param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap)` | Write work map back to param |
| 17 | CALL | `param = executeOdrHakkoJokenAdd(handle, param)` | Register order issuance conditions |

#### Block 1.2.2 — executeOdrInfoSakseiWkAdd (L5383-5410)

| # | Type | Code | Business Description |
|---|------|------|---------------------|
| 1 | SET | `inMap.put("odr_naiyo_cd", orderNaiyoCd)` | Order content code — passed through from parameter |
| 2 | SET | `inMap.put("svc_kei_ucwk_no", svc_kei_ucwk_no[0])` | Service contract work number |
| 3 | SET | `inMap.put("svkeiuw_gadtm", svc_kei_ucwk_gadtm[0])` | Service contract work registration date/time |
| 4 | SET | `inMap.put("op_svc_kei_no", "")` | Optional service contract number (My Home Page) — empty |
| 5 | SET | `inMap.put("opsvkei_gadtm", "")` | Optional service contract registration date/time — empty |
| 6 | SET | `inMap.put("sbop_svc_kei_no", "")` | Sub-optional service contract number (Mail Address) — empty |
| 7 | SET | `inMap.put("sbopsvkei_gadtm", "")` | Sub-optional service contract registration date/time — empty |
| 8 | SET | `inMap.put("kktk_svc_kei_no", takino_kktk_svc_kei_no)` | Equipment-provided service contract number |
| 9 | SET | `inMap.put("kktsvkei_gadtm", takino_kktk_svc_kei_gadtm)` | Equipment-provided service contract registration date/time |
| 10 | SET | `inMap.put("kkop_svc_kei_no_1", kkop_svc_kei_no)` | Equipment optional service contract number 1 (router function) |
| 11 | SET | `inMap.put("kkosvkei_gadtm_1", kkop_svc_kei_gadtm)` | Equipment optional service contract registration date/time 1 |
| 12 | SET | `inMap.put("kkop_svc_kei_no_2", "")` | Equipment optional service contract number 2 (VA function) — empty |
| 13 | SET | `inMap.put("kkosvkei_gadtm_2", "")` | Equipment optional service contract registration date/time 2 — empty |
| 14 | SET | `inMap.put("huka_inf_kei_no", takino_svc_kei_kaisen_ucwk_no)` | Additional information contract number (service contract extension work number) |
| 15 | SET | `inMap.put("huka_inf_kei_gadtm", takino_svc_kei_kaisen_ucwk_gadtm)` | Additional information contract registration date/time |
| 16 | EXEC | `param.setData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP, inMap)` | Write work map back to param |
| 17 | CALL | `param = executeOdrInfoSakseiWkAdd(handle, param)` | Register order information creation work |

### Block 1.3 — IF-ELSE-IF [orderNaiyoCd == 407-417, 425, 426] — Router + VA Setup/Change [ODR_NAIYO_CD_407="407", ODR_NAIYO_CD_408="408", ..., ODR_NAIYO_CD_417="417", ODR_NAIYO_CD_425="425", ODR_NAIYO_CD_426="426"] (L5415)

> Handles Takino setup/change operations that involve both the router function and the VA (Virtual Access) function. The VA function is assigned to `kkop_svc_kei_no_2` (VA slot), while the router function slot (`kkop_svc_kei_no_1`) is left empty. Request subtype is Change (04).

#### Block 1.3.1 — executeOdrHakkoJokenAdd (L5422-5447)

| # | Type | Code | Business Description |
|---|------|------|---------------------|
| 1 | SET | Same 17 steps as Block 1.2.1, except: |
| 14 | SET | `inMap.put("kkop_svc_kei_no_1", "")` | Router function slot — empty |
| 15 | SET | `inMap.put("kkop_svc_kei_no_2", kkop_svc_kei_no)` | VA function slot — uses kkop_svc_kei_no |

#### Block 1.3.2 — executeOdrInfoSakseiWkAdd (L5452-5479)

| # | Type | Code | Business Description |
|---|------|------|---------------------|
| 1-15 | SET | Same structure as Block 1.2.2, except: |
| 10 | SET | `inMap.put("kkop_svc_kei_no_1", "")` | Router function slot — empty |
| 11 | SET | `inMap.put("kkosvkei_gadtm_1", "")` | Router registration date/time — empty |
| 12 | SET | `inMap.put("kkop_svc_kei_no_2", kkop_svc_kei_no)` | VA function slot — uses kkop_svc_kei_no |
| 13 | SET | `inMap.put("kkosvkei_gadtm_2", kkop_svc_kei_gadtm)` | VA registration date/time — uses kkop_svc_kei_gadtm |

### Block 1.4 — IF-ELSE-IF [orderNaiyoCd == 401/406] — Router-to-VA Swap [ODR_NAIYO_CD_401="401", ODR_NAIYO_CD_406="406"] (L5483)

> **ANK-2768-00-00**: Handles swap operations between router function and VA function. Split into two sub-branches with distinct behavior.

#### Block 1.4.1 — IF [orderNaiyoCd == 406] — Router to VA Swap with New Registration [ODR_NAIYO_CD_406="406"] (L5488)

> Swaps from router function to VA function with New (02) request type. VA is assigned to `kkop_svc_kei_no_2`.

| # | Type | Code | Business Description |
|---|------|------|---------------------|
| 1-15 | SET | Same structure as Block 1.3.1, except: |
| 11 | SET | `inMap.put("yokyu_sbt_cd", YOKYU_SBT_CD_NEW = "02")` [-> YOKYU_SBT_CD_NEW] | Request subtype code — New |

#### Block 1.4.2 — IF-ELSE-IF [orderNaiyoCd == 401] — Router-to-VA Swap (VA to Router) with New Registration [ODR_NAIYO_CD_401="401"] (L5528)

> Swaps from VA function to router function with New (02) request type. Router is assigned to `kkop_svc_kei_no_1`.

| # | Type | Code | Business Description |
|---|------|------|---------------------|
| 1-15 | SET | Same structure as Block 1.2.1, except: |
| 11 | SET | `inMap.put("yokyu_sbt_cd", YOKYU_SBT_CD_NEW = "02")` [-> YOKYU_SBT_CD_NEW] | Request subtype code — New |
| 14 | SET | `inMap.put("kkop_svc_kei_no_1", kkop_svc_kei_no)` | Router function slot — uses kkop_svc_kei_no |
| 15 | SET | `inMap.put("kkop_svc_kei_no_2", "")` | VA function slot — empty |

### Block 1.5 — IF-ELSE-IF [orderNaiyoCd == 419/420] — Router Cancellation/Deletion [ODR_NAIYO_CD_419="419", ODR_NAIYO_CD_420="420"] (L5571)

> Handles router function cancellation or deletion operations. Router is assigned to `kkop_svc_kei_no_1`.

#### Block 1.5.1 — Nested IF [orderNaiyoCd == 419] — Router Cancellation [ODR_NAIYO_CD_419="419"] (L5594)

| # | Type | Code | Business Description |
|---|------|------|---------------------|
| 11 | SET | `inMap.put("yokyu_sbt_cd", YOKYU_SBT_CD_DSL = "03")` [-> YOKYU_SBT_CD_DSL] | Request subtype code — Cancellation (DSL) |

#### Block 1.5.2 — Nested ELSE [orderNaiyoCd == 420] — Router Deletion [ODR_NAIYO_CD_420="420"] (L5597)

| # | Type | Code | Business Description |
|---|------|------|---------------------|
| 11 | SET | `inMap.put("yokyu_sbt_cd", YOKYU_SBT_CD_DEL = "08")` [-> YOKYU_SBT_CD_DEL] | Request subtype code — Deletion |

### Block 1.6 — IF-ELSE-IF [orderNaiyoCd == 421/422] — VA Cancellation/Deletion [ODR_NAIYO_CD_421="421", ODR_NAIYO_CD_422="422"] (L5619)

> Handles VA function cancellation or deletion operations. VA is assigned to `kkop_svc_kei_no_2`.

#### Block 1.6.1 — Nested IF [orderNaiyoCd == 421] — VA Cancellation [ODR_NAIYO_CD_421="421"] (L5643)

| # | Type | Code | Business Description |
|---|------|------|---------------------|
| 11 | SET | `inMap.put("yokyu_sbt_cd", YOKYU_SBT_CD_DSL = "03")` [-> YOKYU_SBT_CD_DSL] | Request subtype code — Cancellation (DSL) |

#### Block 1.6.2 — Nested ELSE [orderNaiyoCd == 422] — VA Deletion [ODR_NAIYO_CD_422="422"] (L5646)

| # | Type | Code | Business Description |
|---|------|------|---------------------|
| 11 | SET | `inMap.put("yokyu_sbt_cd", YOKYU_SBT_CD_DEL = "08")` [-> YOKYU_SBT_CD_DEL] | Request subtype code — Deletion |

### Block 1.7 — IF-ELSE-IF [orderNaiyoCd == 418] — Router Renewal [ODR_NAIYO_CD_418="418"] (L5667)

> Handles router renewal (change) operations. Router is assigned to `kkop_svc_kei_no_1`. Request subtype is Change (04).

| # | Type | Code | Business Description |
|---|------|------|---------------------|
| 1-15 | SET | Same structure as Block 1.2.1 (basic router setup/change) |
| 11 | SET | `inMap.put("yokyu_sbt_cd", YOKYU_SBT_CD_CHG = "04")` [-> YOKYU_SBT_CD_CHG] | Request subtype code — Change |

### Block 1.8 — IF-ELSE-IF [orderNaiyoCd == 404_IPv6] — IPv6 Router Setup/Change [ODR_NAIYO_CD_404_IPv6="404_IPv6"] (L5691)

> Handles IPv6-specific router setup/change operations. Uses the same router-based configuration as Block 1.2, but with IPv6-specific optional service contract numbers (`op_svc_kei_no_ipv6` and `op_gadtm_ipv6`) instead of empty strings. Also, in the info creation step, the `odr_naiyo_cd` is overridden to `ODR_NAIYO_CD_404 = "404"` (non-IPv6 variant) to ensure consistent downstream processing.

#### Block 1.8.1 — executeOdrHakkoJokenAdd (L5694-5719)

| # | Type | Code | Business Description |
|---|------|------|---------------------|
| 1-15 | SET | Same structure as Block 1.2.1 (basic router setup/change) |

#### Block 1.8.2 — executeOdrInfoSakseiWkAdd (L5724-5751)

| # | Type | Code | Business Description |
|---|------|------|---------------------|
| 1 | SET | `inMap.put("odr_naiyo_cd", ODR_NAIYO_CD_404 = "404")` [-> ODR_NAIYO_CD_404] | Order content code — overridden from IPv6 variant to standard variant |
| 4 | SET | `inMap.put("op_svc_kei_no", op_svc_kei_no_ipv6)` | Optional service contract number — IPv6 value |
| 5 | SET | `inMap.put("opsvkei_gadtm", op_gadtm_ipv6)` | Optional service contract registration date/time — IPv6 value |

### Block 2 — RETURN (L5757)

> After all conditional branches complete, returns the updated `param` object with the work map populated and the two downstream service calls executed.

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

## 7. Glossary

| Term | Type | Business Meaning |
|------|------|------------------|
| `addTakinoSOD` | Method | Adds order data for Takino (multi-function router) service operations |
| `orderNaiyoCd` | Field | Order content code — classifies the type of Takino operation (setup, change, cancellation, deletion, swap, IPv6) |
| `svc_kei_ucwk_no` | Field | Service contract work number — internal tracking ID for the service contract line item |
| `svc_kei_ucwk_gadtm` | Field | Service contract work registration date/time — timestamp when the work record was created |
| `takino_svc_kei_kaisen_ucwk_no` | Field | Service contract extension work number — tracking ID for service contract line extensions |
| `takino_svc_kei_kaisen_ucwk_gadtm` | Field | Service contract extension work registration date/time |
| `takino_kktk_svc_kei_no` | Field | Equipment-provided service contract number — contract number for the Takino multi-function router device |
| `takino_kktk_svc_kei_gadtm` | Field | Equipment-provided service contract registration date/time |
| `taknkiki_model_cd_takino` | Field | Home device model code — Takino multi-function router hardware model identifier |
| `kiki_seizo_no_takino` | Field | Device serial number — unique serial number of the Takino router |
| `kkop_svc_kei_no` | Field | Equipment optional service contract number — used as router function (slot 1) or VA function (slot 2) contract number |
| `kkop_svc_kei_gadtm` | Field | Equipment optional service contract registration date/time |
| `kkop_svc_kei_no_1` | Field | Equipment optional service contract number 1 — the router function slot |
| `kkop_svc_kei_no_2` | Field | Equipment optional service contract number 2 — the VA (Virtual Access) function slot |
| `kkosvkei_gadtm_1` | Field | Equipment optional service contract registration date/time 1 — router function |
| `kkosvkei_gadtm_2` | Field | Equipment optional service contract registration date/time 2 — VA function |
| `op_svc_kei_no` | Field | Optional service contract number — My Home Page contract number |
| `op_svc_kei_no_ipv6` | Field | Optional service contract number — IPv6-specific My Home Page contract number |
| `opsvkei_gadtm` | Field | Optional service contract registration date/time — My Home Page timestamp |
| `sbop_svc_kei_no` | Field | Sub-optional service contract number — Mail Address contract number |
| `sbopsvkei_gadtm` | Field | Sub-optional service contract registration date/time — Mail Address timestamp |
| `huka_inf_kei_no` | Field | Additional information contract number — service contract extension work number |
| `huka_inf_kei_gadtm` | Field | Additional information contract registration date/time |
| `mlad` | Field | Mail address — customer email address (set to empty for Takino SOD) |
| `same_trn_no` | Field | Same processing number — unique transaction identifier for batch/consolidated processing |
| `ORDER_SBT_CD_TEL` | Constant | Order subtype code = "2" — Telephone |
| `SVC_ORDER_CD_MRT` | Constant | Service order code = "26" — Multi-function router setup |
| `YOKYU_SBT_CD_NEW` | Constant | Request subtype code = "02" — New registration |
| `YOKYU_SBT_CD_DSL` | Constant | Request subtype code = "03" — Cancellation (DSL) |
| `YOKYU_SBT_CD_CHG` | Constant | Request subtype code = "04" — Change |
| `YOKYU_SBT_CD_DEL` | Constant | Request subtype code = "08" — Deletion |
| `ODR_HAKKO_JOKEN_CD_SOKJI_HAKKO` | Constant | Order issuance condition code = "01" — Instant issuance |
| `ODR_NAIYO_CD_401` | Constant | Order content code = "401" — Router-to-VA swap (VA to router, New) |
| `ODR_NAIYO_CD_402` | Constant | Order content code = "402" — Basic router setup |
| `ODR_NAIYO_CD_403` | Constant | Order content code = "403" — Basic router change |
| `ODR_NAIYO_CD_404` | Constant | Order content code = "404" — Basic router change (used as override in IPv6 branch) |
| `ODR_NAIYO_CD_404_IPv6` | Constant | Order content code = "404_IPv6" — IPv6 router setup/change |
| `ODR_NAIYO_CD_405` | Constant | Order content code = "405" — Basic router setup |
| `ODR_NAIYO_CD_406` | Constant | Order content code = "406" — Router-to-VA swap (router to VA, New) |
| `ODR_NAIYO_CD_407-417` | Constant | Order content codes = "407"-"417" — Router + VA setup/change (VA function) |
| `ODR_NAIYO_CD_418` | Constant | Order content code = "418" — Router renewal (Change) |
| `ODR_NAIYO_CD_419` | Constant | Order content code = "419" — Router cancellation (DSL) |
| `ODR_NAIYO_CD_420` | Constant | Order content code = "420" — Router deletion |
| `ODR_NAIYO_CD_421` | Constant | Order content code = "421" — VA cancellation (DSL) |
| `ODR_NAIYO_CD_422` | Constant | Order content code = "422" — VA deletion |
| `ODR_NAIYO_CD_425` | Constant | Order content code = "425" — Router + VA setup/change (ANK-3754-00-00) |
| `ODR_NAIYO_CD_426` | Constant | Order content code = "426" — Router + VA setup/change (ANK-3754-00-00) |
| SOD | Acronym | Service Order Data — telecom order fulfillment records generated for downstream systems |
| VA | Business term | Virtual Access — additional access service capability attached to a main telephone contract |
| Takino | Product name | Takino — Fujitsu's multi-function router appliance (combines router, Wi-Fi, and VoIP capabilities) |
| kkop | Abbreviation | Equipment optional provider — equipment optional service contract (router or VA function) |
| kktk | Abbreviation | Equipment provided — equipment-provided service contract (Takino device contract) |
| SOKJI_HAKKO | Abbreviation | 即時発行 (instant issuance) — order issuance condition for immediate processing |
| KK_T_ODR_HAKKO_JOKEN | Table | Order issuance condition table — stores order issuance criteria and conditions |
| KK_T_ODR_INFO_SAKSEI_WK | Table | Order information creation work table — stores work records for order information assembly |
| HAKKOSODCCWORKMAP | Constant | Work map key — HashMap key used to store/retrieve order registration work data in param |
