# Business Logic — JKKAdchgCancelHakkoSODCC.editInMsg_EKK1081D010CBS() [236 LOC]

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

## 1. Role

### JKKAdchgCancelHakkoSODCC.editInMsg_EKK1081D010CBS()

This method serves as an **upstream mapping (order issuance condition registration)** transformer, building a service component message (`CAANMsg`) for the `EKK1081D010CBS` service component before its execution. As documented in Japanese: "上りマッピング（オーダ発行条件登録）— Before executing the service component, map the necessary data to CAANMsg." It implements the **builder pattern** combined with a **routing/dispatch** approach: it first assembles common metadata, invokes the shared `editBasicCmn` setup method, and then iterates through a series of parallel conditional branches — each one extracting a single field from the inbound work map and mapping it to the outgoing CBS template with null-safety checks.

The method handles a **single service category**: Order Issuance Condition Registration (オーダ発行条件登録), which is a core telecom provisioning step where order conditions are prepared and sent to downstream service components. It reads from the work map (`HakkoSODCCWORK`) retrieved via the `IRequestParameterReadOnly` parameter — this map is populated by an upstream screen or batch process and carries customer service contract data (service contract numbers, order type codes, equipment model codes, email address, etc.).

It also implements **defensive null-handling** across all 17 field mappings: if the work map is null or a field is null/empty, it explicitly calls `template.setNull()` on the target CBS message field rather than passing null values directly, ensuring downstream CBS execution is not disrupted by missing data. The return type is a `HashMap<String, Object>` containing SC import common data and a list of `CAANMsg` templates — the format expected by the calling CBS orchestration layer.

## 2. Processing Pattern (Detailed Business Logic)

```mermaid
flowchart TD
    START(["editInMsg_EKK1081D010CBS"])
    START --> INIT["Initialize paramMap and template_id"]
    INIT --> SC_DATA["SC Common Data: map TelegramID, UsecaseID, OperationID, CallType"]
    SC_DATA --> CTRL_DATA["Control Data: map Hostname, IP, ScreenID, OperatorID"]
    CTRL_DATA --> TEMPLATE["Create EKK1081D010CBSMsg template"]
    TEMPLATE --> FUNC_CODE["Set FUNC_CODE to 1 (Check/Registration)"]
    FUNC_CODE --> BASIC["Call editBasicCmn(param, template)"]
    BASIC --> WORKMAP["Extract work map: HAKKOSODCCWORK"]
    WORKMAP --> CHECK_WORKMAP{"Work map or svc_kei_no is null/empty?"}

    CHECK_WORKMAP -->|Yes| SET_SVC_NULL_1["template.setNull(SVC_KEI_NO)"]
    CHECK_WORKMAP -->|No| SET_SVC_VAL_1["template.set(SVC_KEI_NO from work map)"]

    SET_SVC_NULL_1 --> CHECK_2{"Work map or svc_kei_ucwk_no is null/empty?"}
    SET_SVC_VAL_1 --> CHECK_2

    CHECK_2 -->|Yes| SET_SVC_NULL_2["template.setNull(SVC_KEI_UCWK_NO)"]
    CHECK_2 -->|No| SET_SVC_VAL_2["template.set(SVC_KEI_UCWK_NO from work map)"]

    SET_SVC_NULL_2 --> CHECK_3{"Work map or kktk_svc_kei_no is null/empty?"}
    SET_SVC_VAL_2 --> CHECK_3

    CHECK_3 -->|Yes| SET_SVC_NULL_3["template.setNull(KKTK_SVC_KEI_NO)"]
    CHECK_3 -->|No| SET_SVC_VAL_3["template.set(KKTK_SVC_KEI_NO from work map)"]

    SET_SVC_NULL_3 --> CHECK_4{"Work map or op_svc_kei_no is null/empty?"}
    SET_SVC_VAL_3 --> CHECK_4

    CHECK_4 -->|Yes| SET_SVC_NULL_4["template.setNull(OP_SVC_KEI_NO)"]
    CHECK_4 -->|No| SET_SVC_VAL_4["template.set(OP_SVC_KEI_NO from work map)"]

    SET_SVC_NULL_4 --> CHECK_5{"Work map or sbop_svc_kei_no is null/empty?"}
    SET_SVC_VAL_4 --> CHECK_5

    CHECK_5 -->|Yes| SET_SVC_NULL_5["template.setNull(SBOP_SVC_KEI_NO)"]
    CHECK_5 -->|No| SET_SVC_VAL_5["template.set(SBOP_SVC_KEI_NO from work map)"]

    SET_SVC_NULL_5 --> CHECK_6{"Work map or seiopsvc_kei_no is null/empty?"}
    SET_SVC_VAL_5 --> CHECK_6

    CHECK_6 -->|Yes| SET_SVC_NULL_6["template.setNull(SEIOPSVC_KEI_NO)"]
    CHECK_6 -->|No| SET_SVC_VAL_6["template.set(SEIOPSVC_KEI_NO from work map)"]

    SET_SVC_NULL_6 --> CHECK_7{"Work map or order_sbt_cd is null/empty?"}
    SET_SVC_VAL_6 --> CHECK_7

    CHECK_7 -->|Yes| SET_SVC_NULL_7["template.setNull(ORDER_SBT_CD)"]
    CHECK_7 -->|No| SET_SVC_VAL_7["template.set(ORDER_SBT_CD from work map)"]

    SET_SVC_NULL_7 --> CHECK_8{"Work map or svc_order_cd is null/empty?"}
    SET_SVC_VAL_7 --> CHECK_8

    CHECK_8 -->|Yes| SET_SVC_NULL_8["template.setNull(SVC_ORDER_CD)"]
    CHECK_8 -->|No| SET_SVC_VAL_8["template.set(SVC_ORDER_CD from work map)"]

    SET_SVC_NULL_8 --> CHECK_9{"Work map or yokyu_sbt_cd is null/empty?"}
    SET_SVC_VAL_8 --> CHECK_9

    CHECK_9 -->|Yes| SET_SVC_NULL_9["template.setNull(YOKYU_SBT_CD)"]
    CHECK_9 -->|No| SET_SVC_VAL_9["template.set(YOKYU_SBT_CD from work map)"]

    SET_SVC_NULL_9 --> CHECK_10{"Work map or odr_hakko_joken_cd is null/empty?"}
    SET_SVC_VAL_9 --> CHECK_10

    CHECK_10 -->|Yes| SET_SVC_NULL_10["template.setNull(ODR_HAKKO_JOKEN_CD)"]
    CHECK_10 -->|No| SET_SVC_VAL_10["template.set(ODR_HAKKO_JOKEN_CD from work map)"]

    SET_SVC_NULL_10 --> CHECK_11{"Work map or same_trn_no is null/empty?"}
    SET_SVC_VAL_10 --> CHECK_11

    CHECK_11 -->|Yes| SET_SVC_NULL_11["template.setNull(SAME_TRN_NO)"]
    CHECK_11 -->|No| SET_SVC_VAL_11["template.set(SAME_TRN_NO from work map)"]

    SET_SVC_NULL_11 --> CHECK_12{"Work map or taknkiki_model_cd is null/empty?"}
    SET_SVC_VAL_11 --> CHECK_12

    CHECK_12 -->|Yes| SET_SVC_NULL_12["template.setNull(TAKNKIKI_MODEL_CD)"]
    CHECK_12 -->|No| SET_SVC_VAL_12["template.set(TAKNKIKI_MODEL_CD from work map)"]

    SET_SVC_NULL_12 --> CHECK_13{"Work map or kiki_seizo_no is null/empty?"}
    SET_SVC_VAL_12 --> CHECK_13

    CHECK_13 -->|Yes| SET_SVC_NULL_13["template.setNull(KIKI_SEIZO_NO)"]
    CHECK_13 -->|No| SET_SVC_VAL_13["template.set(KIKI_SEIZO_NO from work map)"]

    SET_SVC_NULL_13 --> CHECK_14{"Work map or mlad is null/empty?"}
    SET_SVC_VAL_13 --> CHECK_14

    CHECK_14 -->|Yes| SET_SVC_NULL_14["template.setNull(MLAD)"]
    CHECK_14 -->|No| SET_SVC_VAL_14["template.set(MLAD from work map)"]

    SET_SVC_NULL_14 --> CHECK_15{"Work map or spot_login_sysid is null/empty?"}
    SET_SVC_VAL_14 --> CHECK_15

    CHECK_15 -->|Yes| SET_SVC_NULL_15["template.setNull(SPOT_LOGIN_SYSID)"]
    CHECK_15 -->|No| SET_SVC_VAL_15["template.set(SPOT_LOGIN_SYSID from work map)"]

    SET_SVC_NULL_15 --> CHECK_16{"Work map or send_req_fin_dtm is null/empty?"}
    SET_SVC_VAL_15 --> CHECK_16

    CHECK_16 -->|Yes| SET_SVC_NULL_16["template.setNull(SEND_REQ_FIN_DTM)"]
    CHECK_16 -->|No| SET_SVC_VAL_16["template.set(SEND_REQ_FIN_DTM from work map)"]

    SET_SVC_NULL_16 --> CHECK_17{"Work map or svc_kei_kaisen_ucwk_no is null/empty?"}
    SET_SVC_VAL_16 --> CHECK_17

    CHECK_17 -->|Yes| SET_SVC_NULL_17["template.setNull(SVC_KEI_KAISEN_UCWK_NO)"]
    CHECK_17 -->|No| SET_SVC_VAL_17["template.set(SVC_KEI_KAISEN_UCWK_NO from work map)"]

    SET_SVC_NULL_17 --> CHECK_18{"Work map or kei_svc_ctl_yokyu_odr_skcd is null/empty?"}
    SET_SVC_VAL_17 --> CHECK_18

    CHECK_18 -->|Yes| SET_SVC_NULL_18["template.setNull(KEI_SVC_CTL_YOKYU_ODR_SKCD)"]
    CHECK_18 -->|No| SET_SVC_VAL_18["template.set(KEI_SVC_CTL_YOKYU_ODR_SKCD from work map)"]

    SET_SVC_NULL_18 --> ADD_MSG["Wrap template into CAANMsg array"]
    SET_SVC_VAL_18 --> ADD_MSG

    ADD_MSG --> RETURN["Return paramMap"]
    RETURN --> END(["Return paramMap"])
```

**Constant Resolution:**
- `HAKKOSODCCWORKMAP = "HakkoSODCCWORK"` (from `JKKHakkoSODConstCC.HAKKOSODCCWORKMAP`) — the work map key used to retrieve the order issuance condition registration working data from the request parameter.
- `FUNC_CD_1` (from `JPCModelConstant.FUNC_CD_1`) — set as the function code on the CBS template, representing "Check & Registration" mode.
- `template_id = "EKK1081D010"` — the service IF identifier for the Order Issuance Condition Registration SC.

The processing pattern is a **linear sequential pipeline** with 17 parallel if/else branches (each identical in structure: null-check then set value or set null). There are no branching conditional paths that alter the flow — every field mapping follows the same defensive null-handling pattern. The method processes fields in the following domain order: service contract numbers (5 variants) → order metadata codes (3 variants) → equipment identifiers (3 variants) → communication/contact data (2 variants) → post-processing tracking (2 variants).

## 3. Parameter Analysis

| No | Parameter Name | Type | Business Description |
|----|---------------|------|---------------------|
| 1 | `param` | `IRequestParameterReadOnly` | The inbound request parameter carrying business data from the calling screen or batch process. It contains work map data (`HakkoSODCCWORK`) with customer service contract details, control map data (hostname, IP, screen ID, operator ID), and transaction metadata (Telegram ID, Usecase ID, Operation ID, Call Type). |

**Instance fields / external state read:**

| No | Field/State | Business Description |
|----|------------|---------------------|
| 1 | `editBasicCmn(param, template)` | Calls the shared common-edit method on the same class, which configures additional basic/common fields on the CBS template (such as standard header data shared across all CBS methods). |

## 4. CRUD Operations / Called Services

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

| CRUD | SC / CBS | SC Code | Entity / DB | Operation Description |
|------|----------|---------|-------------|----------------------|
| U | `editBasicCmn` | EKK1081D010CBS | - | Calls `editBasicCmn` in `JKKAdchgCancelHakkoSODCC` to set shared basic/common template fields |
| - | `template.set` | EKK1081D010CBS | - | Sets a string field on the `EKK1081D010CBSMsg` CBS template with a non-null value from the work map |
| - | `template.setNull` | EKK1081D010CBS | - | Sets a field on the `EKK1081D010CBSMsg` CBS template to null when the work map value is missing |
| R | `param.getTelegramID` | - | - | Reads transaction ID from the request parameter |
| R | `param.getUsecaseID` | - | - | Reads use case ID from the request parameter |
| R | `param.getOperationID` | - | - | Reads operation ID from the request parameter |
| R | `param.getCallType` | - | - | Reads service call type classification from the request parameter |
| R | `param.getControlMapData` | - | - | Reads control map data (hostname, IP address, screen ID, operator ID) from the request parameter |
| R | `param.getData` | - | - | Retrieves the work map (`HakkoSODCCWORK`) from the request parameter containing service contract business data |
| - | `new CAANMsg(EKK1081D010CBSMsg.class.getName())` | EKK1081D010CBS | - | Creates a new CAAN message instance typed for the `EKK1081D010CBS` service component |
| - | `template.set(TEMPLATEID)` | EKK1081D010CBS | - | Sets the template ID "EKK1081D010" on the CBS message |
| - | `template.set(FUNC_CODE, FUNC_CD_1)` | EKK1081D010CBS | - | Sets function code 1 (Check & Registration) on the CBS message |

This method is a pure **data mapping layer** — it does not directly interact with databases or invoke service components itself. Instead, it constructs a `CAANMsg` template and wraps it inside a `HashMap` result for the CBS orchestration layer to execute the actual `EKK1081D010CBS` service component. The actual CRUD operations on database tables (e.g., `KK_T_ODR_HAKKO_JOKEN`) are performed by the downstream CBS, not within this method.

## 5. Dependency Trace

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

No screen/batch entry points found within 8 hops. Direct callers found: 4 methods.

| # | Caller (Screen/Batch) | Call Chain (Full Path to this Method) | Terminal (SC / CRUD / Entity) |
|---|----------------------|--------------------------------------|-------------------------------|
| 1 | CC: `JKKAdchgHakkoSODCC` | `JKKAdchgHakkoSODCC.[calling method at L18869]` → `editInMsg_EKK1081D010CBS` | `setNull` [-] (17 fields), `set` [-] (17 fields) |
| 2 | CC: `JKKHakkoSODCC` | `JKKHakkoSODCC.[calling method at L26672]` → `editInMsg_EKK1081D010CBS` | `setNull` [-] (17 fields), `set` [-] (17 fields) |
| 3 | CC: `JKKKikiDslAddCC` | `JKKKikiDslAddCC.[calling method at L741]` → `editInMsg_EKK1081D010CBS` | `setNull` [-] (17 fields), `set` [-] (17 fields) |
| 4 | CC: `JKKAdchgCancelHakkoSODCC` | `JKKAdchgCancelHakkoSODCC.[calling method at L16402]` → `editInMsg_EKK1081D010CBS` | `setNull` [-] (17 fields), `set` [-] (17 fields) |

All four callers are **Custom Component (CC) classes** in the same `com.fujitsu.futurity.bp.custom.common` package. They each invoke this method to build the inbound CBS message before calling the `EKK1081D010CBS` service component. The terminal operations from this method are all `set` and `setNull` calls on the `EKK1081D010CBSMsg` template fields — no direct database or entity operations occur within this method.

## 6. Per-Branch Detail Blocks

### Block 1 — SET `(template_id = "EKK1081D010")` (L11653)

> Initialize the template identifier for the CBS message type. This identifies the message schema as the "Order Issuance Condition Registration" service component.

| # | Type | Code |
|---|------|------|
| 1 | SET | `template_id = "EKK1081D010"` // Service IF ID for Order Issuance Condition Registration |
| 2 | SET | `paramMap = new HashMap<String, Object>()` // Build output message container |

### Block 2 — EXEC `(SC Common Data Mapping)` (L11660–11665)

> Map SC import common data from the request parameter's transaction metadata onto the paramMap. These fields are standard across all CBS invocations.

| # | Type | Code |
|---|------|------|
| 1 | SET | `paramMap.put(TRANZACTION_ID_KEY, param.getTelegramID())` // Transaction ID from request [-> TRANZACTION_ID_KEY] |
| 2 | SET | `paramMap.put(USECASE_ID_KEY, param.getUsecaseID())` // Use case ID from request [-> USECASE_ID_KEY] |
| 3 | SET | `paramMap.put(OPERATION_ID_KEY, param.getOperationID())` // Operation ID from request [-> OPERATION_ID_KEY] |
| 4 | SET | `paramMap.put(CALL_TYPE_KEY, param.getCallType())` // Service call type classification [-> CALL_TYPE_KEY] |

### Block 3 — EXEC `(Control Data Mapping)` (L11670–11679)

> Map control information from the control map data in the request parameter. These track the client environment and operator for audit and routing purposes.

| # | Type | Code |
|---|------|------|
| 1 | SET | `paramMap.put(CLIENT_HOST_NAME_KEY, param.getControlMapData(REQ_HOSTNAME))` // Requestor hostname [-> CLIENT_HOST_NAME_KEY, REQ_HOSTNAME] |
| 2 | SET | `paramMap.put(CLIENT_IP_ADDRESS_KEY, param.getControlMapData(REQ_HOSTIP))` // Requestor IP address [-> CLIENT_IP_ADDRESS_KEY, REQ_HOSTIP] |
| 3 | SET | `paramMap.put(INVOKE_GAMEN_ID_KEY, param.getControlMapData(REQ_VIEWID))` // Requestor screen ID [-> INVOKE_GAMEN_ID_KEY, REQ_VIEWID] |
| 4 | SET | `paramMap.put(OPERATOR_ID_KEY, param.getControlMapData(OPERATOR_ID))` // Operator ID [-> OPERATOR_ID_KEY, OPERATOR_ID] |

### Block 4 — SET `(Template Creation)` (L11682–11688)

> Create the `EKK1081D010CBSMsg` template and initialize core metadata fields. Then call the shared common-edit setup.

| # | Type | Code |
|---|------|------|
| 1 | SET | `inMap = null` // Initialize work map reference |
| 2 | SET | `template = new CAANMsg(EKK1081D010CBSMsg.class.getName())` // Create CBS message instance |
| 3 | SET | `template.set(TEMPLATEID, "EKK1081D010")` // Set template ID [-> template_id] |
| 4 | SET | `template.set(FUNC_CODE, FUNC_CD_1)` // Set function code to 1 (Check & Registration) [-> JPCModelConstant.FUNC_CD_1] |
| 5 | CALL | `editBasicCmn(param, template)` // Invoke shared common setup |

### Block 5 — EXEC `(Work Map Extraction)` (L11691)

> Extract the order issuance condition registration working data map from the request parameter. This map carries the core business data that will be mapped to the CBS template.

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `inMap = (HashMap)param.getData(HAKKOSODCCWORKMAP)` // Retrieve work map [-> JKKHakkoSODConstCC.HAKKOSODCCWORKMAP = "HakkoSODCCWORK"] |

### Block 6 through Block 22 (IF/ELSE) — `(Null-Safe Field Mapping for 17 fields)` (L11694–11870)

> For each of 17 business fields, the method checks whether the work map or the specific field value is null or empty, then either sets the field on the CBS template or sets it to null. The pattern is identical for all 17 blocks. Below are representative examples:

**Block 6 — IF/ELSE (svc_kei_no)** (L11694)

> Check and map: Service Contract Number (サービス契約番号)

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `inMap.get("svc_kei_no")` // Retrieve service contract number from work map |
| 2 | SET | `template.setNull(SVC_KEI_NO)` // Set null if work map or field is null/empty |
| 3 | SET | `template.set(SVC_KEI_NO, inMap.get("svc_kei_no"))` // Set value if available |

**Block 7 — IF/ELSE (svc_kei_ucwk_no)** (L11704)

> Check and map: Service Contract Detail Number (サービス契約内詳番号)

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `inMap.get("svc_kei_ucwk_no")` // Retrieve service contract detail number from work map |
| 2 | SET | `template.setNull(SVC_KEI_UCWK_NO)` // Set null if work map or field is null/empty |
| 3 | SET | `template.set(SVC_KEI_UCWK_NO, inMap.get("svc_kei_ucwk_no"))` // Set value if available |

**Block 8 — IF/ELSE (kktk_svc_kei_no)** (L11714)

> Check and map: Equipment Provisioning Service Contract Number (機器提供サービス契約番号)

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `inMap.get("kktk_svc_kei_no")` // Retrieve equipment provisioning service contract number |
| 2 | SET | `template.setNull(KKTK_SVC_KEI_NO)` // Set null if work map or field is null/empty |
| 3 | SET | `template.set(KKTK_SVC_KEI_NO, inMap.get("kktk_svc_kei_no"))` // Set value if available |

**Block 9 — IF/ELSE (op_svc_kei_no)** (L11724)

> Check and map: Option Service Contract Number (オプションサービス契約番号)

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `inMap.get("op_svc_kei_no")` // Retrieve option service contract number |
| 2 | SET | `template.setNull(OP_SVC_KEI_NO)` // Set null if work map or field is null/empty |
| 3 | SET | `template.set(OP_SVC_KEI_NO, inMap.get("op_svc_kei_no"))` // Set value if available |

**Block 10 — IF/ELSE (sbop_svc_kei_no)** (L11734)

> Check and map: Sub-Option Service Contract Number (サブオプションサービス契約番号)

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `inMap.get("sbop_svc_kei_no")` // Retrieve sub-option service contract number |
| 2 | SET | `template.setNull(SBOP_SVC_KEI_NO)` // Set null if work map or field is null/empty |
| 3 | SET | `template.set(SBOP_SVC_KEI_NO, inMap.get("sbop_svc_kei_no"))` // Set value if available |

**Block 11 — IF/ELSE (seiopsvc_kei_no)** (L11744)

> Check and map: Billing Option Service Contract Number (請求オプションサービス契約番号)

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `inMap.get("seiopsvc_kei_no")` // Retrieve billing option service contract number |
| 2 | SET | `template.setNull(SEIOPSVC_KEI_NO)` // Set null if work map or field is null/empty |
| 3 | SET | `template.set(SEIOPSVC_KEI_NO, inMap.get("seiopsvc_kei_no"))` // Set value if available |

**Block 12 — IF/ELSE (order_sbt_cd)** (L11754)

> Check and map: Order Type Code (オーダ種類コード)

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `inMap.get("order_sbt_cd")` // Retrieve order type code |
| 2 | SET | `template.setNull(ORDER_SBT_CD)` // Set null if work map or field is null/empty |
| 3 | SET | `template.set(ORDER_SBT_CD, inMap.get("order_sbt_cd"))` // Set value if available |

**Block 13 — IF/ELSE (svc_order_cd)** (L11764)

> Check and map: Service Order Code (サービスオーダコード)

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `inMap.get("svc_order_cd")` // Retrieve service order code |
| 2 | SET | `template.setNull(SVC_ORDER_CD)` // Set null if work map or field is null/empty |
| 3 | SET | `template.set(SVC_ORDER_CD, inMap.get("svc_order_cd"))` // Set value if available |

**Block 14 — IF/ELSE (yokyu_sbt_cd)** (L11774)

> Check and map: Request Type Code (要求種類コード)

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `inMap.get("yokyu_sbt_cd")` // Retrieve request type code |
| 2 | SET | `template.setNull(YOKYU_SBT_CD)` // Set null if work map or field is null/empty |
| 3 | SET | `template.set(YOKYU_SBT_CD, inMap.get("yokyu_sbt_cd"))` // Set value if available |

**Block 15 — IF/ELSE (odr_hakko_joken_cd)** (L11784)

> Check and map: Order Issuance Condition Code (オーダ発行条件コード)

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `inMap.get("odr_hakko_joken_cd")` // Retrieve order issuance condition code |
| 2 | SET | `template.setNull(ODR_HAKKO_JOKEN_CD)` // Set null if work map or field is null/empty |
| 3 | SET | `template.set(ODR_HAKKO_JOKEN_CD, inMap.get("odr_hakko_joken_cd"))` // Set value if available |

**Block 16 — IF/ELSE (same_trn_no)** (L11794)

> Check and map: Same Process Number (同一処理番号) — used for grouping related transactions.

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `inMap.get("same_trn_no")` // Retrieve same process number |
| 2 | SET | `template.setNull(SAME_TRN_NO)` // Set null if work map or field is null/empty |
| 3 | SET | `template.set(SAME_TRN_NO, inMap.get("same_trn_no"))` // Set value if available |

**Block 17 — IF/ELSE (taknkiki_model_cd)** (L11804)

> Check and map: Home Equipment Model Code (home 機器型式コード)

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `inMap.get("taknkiki_model_cd")` // Retrieve home equipment model code |
| 2 | SET | `template.setNull(TAKNKIKI_MODEL_CD)` // Set null if work map or field is null/empty |
| 3 | SET | `template.set(TAKNKIKI_MODEL_CD, inMap.get("taknkiki_model_cd"))` // Set value if available |

**Block 18 — IF/ELSE (kiki_seizo_no)** (L11814)

> Check and map: Equipment Serial Number (機器製造番号)

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `inMap.get("kiki_seizo_no")` // Retrieve equipment serial number |
| 2 | SET | `template.setNull(KIKI_SEIZO_NO)` // Set null if work map or field is null/empty |
| 3 | SET | `template.set(KIKI_SEIZO_NO, inMap.get("kiki_seizo_no"))` // Set value if available |

**Block 19 — IF/ELSE (mlad)** (L11824)

> Check and map: Email Address (メールアドレス)

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `inMap.get("mlad")` // Retrieve email address |
| 2 | SET | `template.setNull(MLAD)` // Set null if work map or field is null/empty |
| 3 | SET | `template.set(MLAD, inMap.get("mlad"))` // Set value if available |

**Block 20 — IF/ELSE (spot_login_sysid)** (L11834)

> Check and map: Spot Login System ID (スポットログインSYSID) — system identifier for spot login authentication.

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `inMap.get("spot_login_sysid")` // Retrieve spot login system ID |
| 2 | SET | `template.setNull(SPOT_LOGIN_SYSID)` // Set null if work map or field is null/empty |
| 3 | SET | `template.set(SPOT_LOGIN_SYSID, inMap.get("spot_login_sysid"))` // Set value if available |

**Block 21 — IF/ELSE (send_req_fin_dtm)** (L11845)

> Check and map: Transmission Request Completion Datetime (送信依頼完了年月日時分秒)

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `inMap.get("send_req_fin_dtm")` // Retrieve transmission request completion datetime |
| 2 | SET | `template.setNull(SEND_REQ_FIN_DTM)` // Set null if work map or field is null/empty |
| 3 | SET | `template.set(SEND_REQ_FIN_DTM, inMap.get("send_req_fin_dtm"))` // Set value if available |

**Block 22 — IF/ELSE (svc_kei_kaisen_ucwk_no)** (L11850–11858)

> Check and map: Service Contract Circuit Detail Number (サービス契約回線内詳番号) — added via change OM-2014-0002802 on 2014/10/11 by Hoshino.

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `inMap.get("svc_kei_kaisen_ucwk_no")` // Retrieve service contract circuit detail number |
| 2 | SET | `template.setNull(SVC_KEI_KAISEN_UCWK_NO)` // Set null if work map or field is null/empty |
| 3 | SET | `template.set(SVC_KEI_KAISEN_UCWK_NO, inMap.get("svc_kei_kaisen_ucwk_no"))` // Set value if available |
| 4 | COMMENT | `// OM-2014-0002802対応 20141011 星野 ADD` |

**Block 23 — IF/ELSE (kei_svc_ctl_yokyu_odr_skcd)** (L11860–11868)

> Check and map: Contract Service Control Request Order Identification Code (契約サービス制御要求オーダ識別コード) — added via change ANK-0099-00-00 on 2012/05/25 by Kitatani.

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `inMap.get("kei_svc_ctl_yokyu_odr_skcd")` // Retrieve contract service control request order ID code |
| 2 | SET | `template.setNull(KEI_SVC_CTL_YOKYU_ODR_SKCD)` // Set null if work map or field is null/empty |
| 3 | SET | `template.set(KEI_SVC_CTL_YOKYU_ODR_SKCD, inMap.get("kei_svc_ctl_yokyu_odr_skcd"))` // Set value if available |
| 4 | COMMENT | `// ANK-0099-00-00 2012/05/25 kitatani start/end` |

### Block 24 — SET `(Template Array Assembly)` (L11872–11874)

> Wrap the constructed template into a `CAANMsg` array and attach it to the paramMap under the template list key, completing the message assembly.

| # | Type | Code |
|---|------|------|
| 1 | SET | `templates = new CAANMsg[1]` // Create single-element template array |
| 2 | SET | `templates[0] = template` // Place the populated template in the array |
| 3 | SET | `paramMap.put(TEMPLATE_LIST_KEY, templates)` // Attach template list [-> JCMConstants.TEMPLATE_LIST_KEY] |

### Block 25 — RETURN `(Return paramMap)` (L11876)

> Return the fully assembled paramMap containing SC import common data and the list of CBS templates. This HashMap is consumed by the calling CBS orchestration code, which will pass it to the `EKK1081D010CBS` service component for execution.

| # | Type | Code |
|---|------|------|
| 1 | RETURN | `return paramMap` // Return the complete CBS inbound message |

## 7. Glossary

| Term | Type | Business Meaning |
|------|------|------------------|
| `svc_kei_no` | Field | Service Contract Number (サービス契約番号) — the primary contract identifier for a customer service line |
| `svc_kei_ucwk_no` | Field | Service Contract Detail Number (サービス契約内詳番号) — internal tracking ID for service contract line items |
| `kktk_svc_kei_no` | Field | Equipment Provisioning Service Contract Number (機器提供サービス契約番号) — contract number associated with hardware provisioning |
| `op_svc_kei_no` | Field | Option Service Contract Number (オプションサービス契約番号) — contract number for optional add-on services |
| `sbop_svc_kei_no` | Field | Sub-Option Service Contract Number (サブオプションサービス契約番号) — contract number for sub-option services (tiered add-ons) |
| `seiopsvc_kei_no` | Field | Billing Option Service Contract Number (請求オプションサービス契約番号) — contract number for billing-related optional services |
| `order_sbt_cd` | Field | Order Type Code (オーダ種類コード) — classifies the type of order being issued |
| `svc_order_cd` | Field | Service Order Code (サービスオーダコード) — identifies the specific service order type |
| `yokyu_sbt_cd` | Field | Request Type Code (要求種類コード) — classifies the type of business request |
| `odr_hakko_joken_cd` | Field | Order Issuance Condition Code (オーダ発行条件コード) — determines conditions under which an order is issued to downstream systems |
| `same_trn_no` | Field | Same Process Number (同一処理番号) — grouping identifier for related/linked transactions |
| `taknkiki_model_cd` | Field | Home Equipment Model Code (home 機器型式コード) — model code for customer premises equipment (CPE) |
| `kiki_seizo_no` | Field | Equipment Serial Number (機器製造番号) — unique serial number of installed equipment |
| `mlad` | Field | Email Address (メールアドレス) — customer email contact address |
| `spot_login_sysid` | Field | Spot Login System ID (スポットログインSYSID) — system identifier for spot login (on-demand authentication) |
| `send_req_fin_dtm` | Field | Transmission Request Completion Datetime (送信依頼完了年月日時分秒) — timestamp when transmission request was completed |
| `svc_kei_kaisen_ucwk_no` | Field | Service Contract Circuit Detail Number (サービス契約回線内詳番号) — detail number for service contract circuit modifications |
| `kei_svc_ctl_yokyu_odr_skcd` | Field | Contract Service Control Request Order Identification Code (契約サービス制御要求オーダ識別コード) — identifies service control requests in contract management |
| `HAKKOSODCCWORK` | Constant | Work Map Key — key used to retrieve the order issuance condition registration working data map from the request parameter (defined in `JKKHakkoSODConstCC.HAKKOSODCCWORKMAP`) |
| SOD | Acronym | Service Order Data — the telecom order fulfillment data entity; the CC (Custom Component) deals with SOD creation/mapping |
| SODCC | Acronym | SOD Custom Component — a custom component class responsible for SOD-related operations |
| CBS | Acronym | Component-Based Service — Fujitsu's service component architecture; the method builds a message for an EKK-prefixed CBS |
| CAANMsg | Class | CAAN Message — Fujitsu's message envelope class used for SC (Service Component) communication; extends `CAANSchemaInfo` |
| FUNC_CD_1 | Constant | Function Code 1 — represents "Check & Registration" mode in the CBS function code classification |
| EKK1081D010CBS | Service Component | Order Issuance Condition Registration CBS — the downstream CBS that processes order issuance conditions for telecom provisioning |
| EKK1081D010CBSMsg | Message Class | CBS Message schema for Order Issuance Condition Registration — defines all field constants for the CBS message envelope |
| JKKAdchgCancelHakkoSODCC | Class | SOD Cancellation/Modification Custom Component — custom component class handling order issuance conditions for service changes and cancellations |
| `editBasicCmn` | Method | Shared common-edit method that configures basic/template fields across CBS methods |
| SC | Acronym | Service Component — the backend business logic module invoked by CBS orchestration |
| JPCModelConstant | Class | JPC Model Constants — class containing system-wide constant definitions including `FUNC_CD_1` |
| JCMConstants | Class | JCM Constants — class containing SC import common data keys (TRANZACTION_ID_KEY, USECASE_ID_KEY, etc.) |
| SCControlMapKeys | Class | SC Control Map Keys — class containing control map data keys (REQ_HOSTNAME, REQ_HOSTIP, REQ_VIEWID, OPERATOR_ID) |
| IRequestParameterReadOnly | Interface | Request Parameter Read-Only Interface — the interface for reading business data and control data from incoming requests |
