# Business Logic — JFUHakkoSODCC.editInMsg_EKK1081D011CBS() [233 LOC]

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

## 1. Role

### JFUHakkoSODCC.editInMsg_EKK1081D011CBS()

This method implements the **upstream data mapping** (上りマッピング) step for the **Order Issuance Condition Registration** (オーダ発行条件登録) service component `EKK1081D011CBS`. Its business purpose is to transform business request data carried inside the `IRequestParameterReadOnly` parameter into a `HashMap<String, Object>` structured payload that the `ServiceComponentRequestInvoker` can dispatch to the downstream `EKK1081D011CBS` service component for execution.

The method follows a **Builder + Routing** design pattern: it builds a `CAANMsg` template containing all fields required by the service component, maps control-level data (transaction ID, session user info) and business-level data (service contract numbers, order codes, equipment identifiers) from a work map, applies null-safe fallbacks for every field, and finally assembles the template array into the return parameter map.

In the larger system, this method is a shared utility called by `executeOdrHakkoJokenAdd()` within `JFUHakkoSODCC`. It serves as the sole "inbound message mapping" method for the EKK1081D011CBS service component — there are no conditional branches by service type; instead, the method maps a **fixed set of 20 fields** from the work map, each with the same null/empty safety pattern.

## 2. Processing Pattern (Detailed Business Logic)

```mermaid
flowchart TD
    START(["editInMsg_EKK1081D011CBS param"])

    START --> S1["S1: Set template_id = EKK1081D011"]
    S1 --> S2["S2: Create paramMap HashMap"]
    S2 --> S3["S3: Map SC Import Common Data
TRANZACTION_ID_KEY, USECASE_ID_KEY,
OPERATION_ID_KEY, CALL_TYPE_KEY"]
    S3 --> S4["S4: Map User Data
CLIENT_HOST_NAME_KEY, CLIENT_IP_ADDRESS_KEY,
INVOKE_GAMEN_ID_KEY, OPERATOR_ID_KEY"]
    S4 --> S5["S5: Create CAANMsg template
EKK1081D011CBSMsg"]
    S5 --> S6["S6: Set TEMPLATEID = EKK1081D011
Set FUNC_CODE = 1 (Register)"]
    S6 --> S7["S7: Call editBasicCmn param, template"]
    S7 --> S8["S8: Get inMap = HAKKOSODCCWORKMAP"]
    S8 --> COND1{inMap == null
or field == null
or field == empty?}

    COND1 -- yes --> NULLS["Null fields:
SVC_KEI_NO, SVC_KEI_UCWK_NO,
KKTK_SVC_KEI_NO, OP_SVC_KEI_NO,
SBOP_SVC_KEI_NO, SEIOPSVC_KEI_NO"]
    COND1 -- no --> SETS["Set fields from inMap:
SVC_KEI_NO, SVC_KEI_UCWK_NO,
KKTK_SVC_KEI_NO, OP_SVC_KEI_NO,
SBOP_SVC_KEI_NO, SEIOPSVC_KEI_NO,
ORDER_SBT_CD, SVC_ORDER_CD,
YOKYU_SBT_CD, ODR_HAKKO_JOKEN_CD,
SAME_TRN_NO, TAKNKIKI_MODEL_CD,
KIKI_SEIZO_NO, MLAD,
SPOT_LOGIN_SYSID, SEND_REQ_FIN_DTM,
SVC_KEI_KAISEN_UCWK_NO,
KEI_SVC_CTL_YOKYU_ODR_SKCD"]

    NULLS --> END_TEMPLATE["END_TEMPLATE"]
    SETS --> END_TEMPLATE

    END_TEMPLATE --> S9["S9: Build template array
set TEMPLATE_LIST_KEY"]
    S9 --> RETURN["Return paramMap"]
```

## 3. Parameter Analysis

| No | Parameter Name | Type | Business Description |
|----|---------------|------|---------------------|
| 1 | `param` | `IRequestParameterReadOnly` | The business data request carrier. It holds three categories of data: (a) Telegram/session identifiers (transaction ID, usecase ID, operation ID, call type), (b) Control map data (request hostname, client IP address, invoking screen ID, operator ID), and (c) The order issuance condition work map (`HAKKOSODCCWORKMAP`) containing service contract numbers, order codes, and equipment identifiers. |

**Instance fields / external state accessed:**
| Name | Type | Business Description |
|------|------|---------------------|
| `mapSC` | `Map<String, Object>` (inherited) | Session-scoped map cache — used by `editBasicCmn` |

## 4. CRUD Operations / Called Services

This method does **not** directly call any database-accessing service components. It only builds the input message payload for the downstream `EKK1081D011CBS` service component, which is invoked by the caller `executeOdrHakkoJokenAdd` via `ServiceComponentRequestInvoker.run()`.

| CRUD | SC / CBS | SC Code | Entity / DB | Operation Description |
|------|----------|---------|-------------|----------------------|
| U | `editBasicCmn` | EKK1081D011CBS | - | Maps basic common message fields (session, user ID, system info) onto the CAANMsg template. Shared CC utility used across all inbound message builders. |

## 5. Dependency Trace

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

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

| # | Caller (Screen/Batch) | Call Chain (Full Path to this Method) | Terminal (SC / CRUD / Entity) |
|---|----------------------|--------------------------------------|-------------------------------|
| 1 | CBS: JFUHakkoSODCC | `JFUHakkoSODCC.executeOdrHakkoJokenAdd` → `JFUHakkoSODCC.editInMsg_EKK1081D011CBS` | `ServiceComponentRequestInvoker.run [C/R/U/D] EKK1081D011CBS` |

**Full call chain description:**
1. `executeOdrHakkoJokenAdd(SessionHandle, IRequestParameterReadWrite)` at line 322 calls `editInMsg_EKK1081D011CBS(param)` to obtain the `paramMap`.
2. `editInMsg_EKK1081D011CBS` returns the `HashMap<String, Object>` payload.
3. `executeOdrHakkoJokenAdd` then creates a `ServiceComponentRequestInvoker`, calls `scCall.run(paramMap, handle)` to execute the `EKK1081D011CBS` service component.
4. `executeOdrHakkoJokenAdd` calls `editResultRP_EKK1081D011CBS(result, param)` to map results back.
5. `executeOdrHakkoJokenAdd` returns the updated `param`.

**Terminal operations reachable from this method:**
The method itself produces no terminal CRUD operations — it is purely a mapping/build method. The terminal SC invocation `EKK1081D011CBS` is reached indirectly via `ServiceComponentRequestInvoker.run()` in the caller.

## 6. Per-Branch Detail Blocks

### Block 1 — SET (L382-L383)

Initialize the template ID and parameter map container.

| # | Type | Code |
|---|------|------|
| 1 | SET | `template_id = "EKK1081D011"` // Service component template identifier |
| 2 | SET | `paramMap = new HashMap<String, Object>()` // Request payload container |

### Block 2 — EXEC (L386-L395): Map SC Import Common Data

Map four telecom message header fields from the parameter to the payload. This is the **電文ヘッダ (telegram header)** section.

| # | Type | Code | Business Description |
|---|------|------|---------------------|
| 1 | EXEC | `paramMap.put(JCMConstants.TRANZACTION_ID_KEY, param.getTelegramID())` | Map telegram ID — unique identifier for the electronic message |
| 2 | EXEC | `paramMap.put(JCMConstants.USECASE_ID_KEY, param.getUsecaseID())` | Map usecase ID — identifies the business use case |
| 3 | EXEC | `paramMap.put(JCMConstants.OPERATION_ID_KEY, param.getOperationID())` | Map operation ID — identifies the specific operation |
| 4 | EXEC | `paramMap.put(JCMConstants.CALL_TYPE_KEY, param.getCallType())` | Map service call type — distinguishes call type |

### Block 3 — EXEC (L398-L405): Map User Data from Control Map

Map four control-level user/terminal identification fields from the control map. This is the **ユーザエリア (user area)** section.

| # | Type | Code | Business Description |
|---|------|------|---------------------|
| 1 | EXEC | `paramMap.put(JCMConstants.CLIENT_HOST_NAME_KEY, param.getControlMapData(SCControlMapKeys.REQ_HOSTNAME))` | Map requestor hostname — the client host that initiated the request |
| 2 | EXEC | `paramMap.put(JCMConstants.CLIENT_IP_ADDRESS_KEY, param.getControlMapData(SCControlMapKeys.REQ_HOSTIP))` | Map requestor IP address — the client IP of the requestor |
| 3 | EXEC | `paramMap.put(JCMConstants.INVOKE_GAMEN_ID_KEY, param.getControlMapData(SCControlMapKeys.REQ_VIEWID))` | Map invoking screen ID — the originating screen identifier |
| 4 | EXEC | `paramMap.put(JCMConstants.OPERATOR_ID_KEY, param.getControlMapData(SCControlMapKeys.OPERATOR_ID))` | Map operator ID — the user performing the operation |

### Block 4 — SET (L407-L408): Create CAANMsg Template

| # | Type | Code | Business Description |
|---|------|------|---------------------|
| 1 | SET | `template = new CAANMsg(EKK1081D011CBSMsg.class.getName())` // Create template for EKK1081D011CBS service component |
| 2 | SET | `inMap = null` // Initialize work map reference |

### Block 5 — SET (L411-L414): Set Template ID and Function Code

| # | Type | Code | Business Description |
|---|------|------|---------------------|
| 1 | EXEC | `template.set(EKK1081D011CBSMsg.TEMPLATEID, template_id)` // Set TEMPLATEID to EKK1081D011 |
| 2 | EXEC | `template.set(EKK1081D011CBSMsg.FUNC_CODE, JPCModelConstant.FUNC_CD_1)` // Set FUNC_CODE = 1 (Register function). FUNC_CD_1 represents the registration/creation function code [-> FUNC_CD_1] |

### Block 6 — CALL (L417): Call editBasicCmn

| # | Type | Code | Business Description |
|---|------|------|---------------------|
| 1 | CALL | `editBasicCmn(param, template)` // Map basic common fields onto the template — session context, user info, system settings. Shared CC utility method |

### Block 7 — EXEC (L420): Get Work Map

| # | Type | Code | Business Description |
|---|------|------|---------------------|
| 1 | EXEC | `inMap = (HashMap) param.getData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP)` // Retrieve the order issuance condition work map from the parameter. Contains all 20 business fields to be mapped |

### Block 8 — IF/ELSE (L423-L436): Map Service Contract Number (svc_kei_no)

> Order Issuance Condition Registration Map — Service Contract Number → Service Contract Number

| # | Type | Code | Business Description |
|---|------|------|---------------------|
| 1 | IF-COND | `inMap == null \|\| inMap.get("svc_kei_no") == null \|\| "".equals(inMap.get("svc_kei_no"))` | Check if the work map is null or the service contract number field is empty |
| 2 | SET (yes) | `template.setNull(EKK1081D011CBSMsg.SVC_KEI_NO)` // Set null on template [-> SVC_KEI_NO] |
| 3 | ELSE | - | Branch to SET |
| 4 | SET (no) | `template.set(EKK1081D011CBSMsg.SVC_KEI_NO, (String)inMap.get("svc_kei_no"))` // Map service contract number [-> SVC_KEI_NO] |

### Block 9 — IF/ELSE (L439-L452): Map Service Contract Internal Number (svc_kei_ucwk_no)

> Order Issuance Condition Registration Map — Service Contract Internal Number → Service Contract Internal Number

| # | Type | Code | Business Description |
|---|------|------|---------------------|
| 1 | IF-COND | `inMap == null \|\| inMap.get("svc_kei_ucwk_no") == null \|\| "".equals(inMap.get("svc_kei_ucwk_no"))` | Check if the work map is null or the service contract internal number field is empty |
| 2 | SET (yes) | `template.setNull(EKK1081D011CBSMsg.SVC_KEI_UCWK_NO)` // Set null on template [-> SVC_KEI_UCWK_NO] |
| 3 | ELSE | - | Branch to SET |
| 4 | SET (no) | `template.set(EKK1081D011CBSMsg.SVC_KEI_UCWK_NO, (String)inMap.get("svc_kei_ucwk_no"))` // Map service contract internal number [-> SVC_KEI_UCWK_NO] |

### Block 10 — IF/ELSE (L455-L468): Map Equipment Provider Service Contract Number (kktk_svc_kei_no)

> Order Issuance Condition Registration Map — Equipment Provider Service Contract Number → Equipment Provider Service Contract Number

| # | Type | Code | Business Description |
|---|------|------|---------------------|
| 1 | IF-COND | `inMap == null \|\| inMap.get("kktk_svc_kei_no") == null \|\| "".equals(inMap.get("kktk_svc_kei_no"))` | Check if the work map is null or the equipment provider service contract number field is empty |
| 2 | SET (yes) | `template.setNull(EKK1081D011CBSMsg.KKTK_SVC_KEI_NO)` // Set null on template [-> KKTK_SVC_KEI_NO] |
| 3 | ELSE | - | Branch to SET |
| 4 | SET (no) | `template.set(EKK1081D011CBSMsg.KKTK_SVC_KEI_NO, (String)inMap.get("kktk_svc_kei_no"))` // Map equipment provider service contract number [-> KKTK_SVC_KEI_NO] |

### Block 11 — IF/ELSE (L471-L484): Map Option Service Contract Number (op_svc_kei_no)

> Order Issuance Condition Registration Map — Option Service Contract Number → Option Service Contract Number

| # | Type | Code | Business Description |
|---|------|------|---------------------|
| 1 | IF-COND | `inMap == null \|\| inMap.get("op_svc_kei_no") == null \|\| "".equals(inMap.get("op_svc_kei_no"))` | Check if the work map is null or the option service contract number field is empty |
| 2 | SET (yes) | `template.setNull(EKK1081D011CBSMsg.OP_SVC_KEI_NO)` // Set null on template [-> OP_SVC_KEI_NO] |
| 3 | ELSE | - | Branch to SET |
| 4 | SET (no) | `template.set(EKK1081D011CBSMsg.OP_SVC_KEI_NO, (String)inMap.get("op_svc_kei_no"))` // Map option service contract number [-> OP_SVC_KEI_NO] |

### Block 12 — IF/ELSE (L487-L500): Map Sub-Option Service Contract Number (sbop_svc_kei_no)

> Order Issuance Condition Registration Map — Sub-Option Service Contract Number → Sub-Option Service Contract Number

| # | Type | Code | Business Description |
|---|------|------|---------------------|
| 1 | IF-COND | `inMap == null \|\| inMap.get("sbop_svc_kei_no") == null \|\| "".equals(inMap.get("sbop_svc_kei_no"))` | Check if the work map is null or the sub-option service contract number field is empty |
| 2 | SET (yes) | `template.setNull(EKK1081D011CBSMsg.SBOP_SVC_KEI_NO)` // Set null on template [-> SBOP_SVC_KEI_NO] |
| 3 | ELSE | - | Branch to SET |
| 4 | SET (no) | `template.set(EKK1081D011CBSMsg.SBOP_SVC_KEI_NO, (String)inMap.get("sbop_svc_kei_no"))` // Map sub-option service contract number [-> SBOP_SVC_KEI_NO] |

### Block 13 — IF/ELSE (L503-L516): Map Billing Option Service Contract Number (seiopsvc_kei_no)

> Order Issuance Condition Registration Map — Billing Option Service Contract Number → Billing Option Service Contract Number

| # | Type | Code | Business Description |
|---|------|------|---------------------|
| 1 | IF-COND | `inMap == null \|\| inMap.get("seiopsvc_kei_no") == null \|\| "".equals(inMap.get("seiopsvc_kei_no"))` | Check if the work map is null or the billing option service contract number field is empty |
| 2 | SET (yes) | `template.setNull(EKK1081D011CBSMsg.SEIOPSVC_KEI_NO)` // Set null on template [-> SEIOPSVC_KEI_NO] |
| 3 | ELSE | - | Branch to SET |
| 4 | SET (no) | `template.set(EKK1081D011CBSMsg.SEIOPSVC_KEI_NO, (String)inMap.get("seiopsvc_kei_no"))` // Map billing option service contract number [-> SEIOPSVC_KEI_NO] |

### Block 14 — IF/ELSE (L519-L532): Map Order Type Code (order_sbt_cd)

> Order Issuance Condition Registration Map — Order Type Code → Order Type Code

| # | Type | Code | Business Description |
|---|------|------|---------------------|
| 1 | IF-COND | `inMap == null \|\| inMap.get("order_sbt_cd") == null \|\| "".equals(inMap.get("order_sbt_cd"))` | Check if the work map is null or the order type code field is empty |
| 2 | SET (yes) | `template.setNull(EKK1081D011CBSMsg.ORDER_SBT_CD)` // Set null on template [-> ORDER_SBT_CD] |
| 3 | ELSE | - | Branch to SET |
| 4 | SET (no) | `template.set(EKK1081D011CBSMsg.ORDER_SBT_CD, (String)inMap.get("order_sbt_cd"))` // Map order type code [-> ORDER_SBT_CD] |

### Block 15 — IF/ELSE (L535-L548): Map Service Order Code (svc_order_cd)

> Order Issuance Condition Registration Map — Service Order Code → Service Order Code

| # | Type | Code | Business Description |
|---|------|------|---------------------|
| 1 | IF-COND | `inMap == null \|\| inMap.get("svc_order_cd") == null \|\| "".equals(inMap.get("svc_order_cd"))` | Check if the work map is null or the service order code field is empty |
| 2 | SET (yes) | `template.setNull(EKK1081D011CBSMsg.SVC_ORDER_CD)` // Set null on template [-> SVC_ORDER_CD] |
| 3 | ELSE | - | Branch to SET |
| 4 | SET (no) | `template.set(EKK1081D011CBSMsg.SVC_ORDER_CD, (String)inMap.get("svc_order_cd"))` // Map service order code [-> SVC_ORDER_CD] |

### Block 16 — IF/ELSE (L551-L564): Map Request Type Code (yokyu_sbt_cd)

> Order Issuance Condition Registration Map — Request Type Code → Request Type Code

| # | Type | Code | Business Description |
|---|------|------|---------------------|
| 1 | IF-COND | `inMap == null \|\| inMap.get("yokyu_sbt_cd") == null \|\| "".equals(inMap.get("yokyu_sbt_cd"))` | Check if the work map is null or the request type code field is empty |
| 2 | SET (yes) | `template.setNull(EKK1081D011CBSMsg.YOKYU_SBT_CD)` // Set null on template [-> YOKYU_SBT_CD] |
| 3 | ELSE | - | Branch to SET |
| 4 | SET (no) | `template.set(EKK1081D011CBSMsg.YOKYU_SBT_CD, (String)inMap.get("yokyu_sbt_cd"))` // Map request type code [-> YOKYU_SBT_CD] |

### Block 17 — IF/ELSE (L567-L580): Map Order Issuance Condition Code (odr_hakko_joken_cd)

> Order Issuance Condition Registration Map — Order Issuance Condition Code → Order Issuance Condition Code

| # | Type | Code | Business Description |
|---|------|------|---------------------|
| 1 | IF-COND | `inMap == null \|\| inMap.get("odr_hakko_joken_cd") == null \|\| "".equals(inMap.get("odr_hakko_joken_cd"))` | Check if the work map is null or the order issuance condition code field is empty |
| 2 | SET (yes) | `template.setNull(EKK1081D011CBSMsg.ODR_HAKKO_JOKEN_CD)` // Set null on template [-> ODR_HAKKO_JOKEN_CD] |
| 3 | ELSE | - | Branch to SET |
| 4 | SET (no) | `template.set(EKK1081D011CBSMsg.ODR_HAKKO_JOKEN_CD, (String)inMap.get("odr_hakko_joken_cd"))` // Map order issuance condition code [-> ODR_HAKKO_JOKEN_CD] |

### Block 18 — IF/ELSE (L583-L596): Map Same Transaction Number (same_trn_no)

> Order Issuance Condition Registration Map — Same Transaction Number → Same Transaction Number

| # | Type | Code | Business Description |
|---|------|------|---------------------|
| 1 | IF-COND | `inMap == null \|\| inMap.get("same_trn_no") == null \|\| "".equals(inMap.get("same_trn_no"))` | Check if the work map is null or the same transaction number field is empty |
| 2 | SET (yes) | `template.setNull(EKK1081D011CBSMsg.SAME_TRN_NO)` // Set null on template [-> SAME_TRN_NO] |
| 3 | ELSE | - | Branch to SET |
| 4 | SET (no) | `template.set(EKK1081D011CBSMsg.SAME_TRN_NO, (String)inMap.get("same_trn_no"))` // Map same transaction number [-> SAME_TRN_NO] |

### Block 19 — IF/ELSE (L599-L612): Map Home Equipment Model Code (taknkiki_model_cd)

> Order Issuance Condition Registration Map — Home Equipment Model Code → Home Equipment Model Code

| # | Type | Code | Business Description |
|---|------|------|---------------------|
| 1 | IF-COND | `inMap == null \|\| inMap.get("taknkiki_model_cd") == null \|\| "".equals(inMap.get("taknkiki_model_cd"))` | Check if the work map is null or the home equipment model code field is empty |
| 2 | SET (yes) | `template.setNull(EKK1081D011CBSMsg.TAKNKIKI_MODEL_CD)` // Set null on template [-> TAKNKIKI_MODEL_CD] |
| 3 | ELSE | - | Branch to SET |
| 4 | SET (no) | `template.set(EKK1081D011CBSMsg.TAKNKIKI_MODEL_CD, (String)inMap.get("taknkiki_model_cd"))` // Map home equipment model code [-> TAKNKIKI_MODEL_CD] |

### Block 20 — IF/ELSE (L615-L628): Map Equipment Serial Number (kiki_seizo_no)

> Order Issuance Condition Registration Map — Equipment Serial Number → Equipment Serial Number

| # | Type | Code | Business Description |
|---|------|------|---------------------|
| 1 | IF-COND | `inMap == null \|\| inMap.get("kiki_seizo_no") == null \|\| "".equals(inMap.get("kiki_seizo_no"))` | Check if the work map is null or the equipment serial number field is empty |
| 2 | SET (yes) | `template.setNull(EKK1081D011CBSMsg.KIKI_SEIZO_NO)` // Set null on template [-> KIKI_SEIZO_NO] |
| 3 | ELSE | - | Branch to SET |
| 4 | SET (no) | `template.set(EKK1081D011CBSMsg.KIKI_SEIZO_NO, (String)inMap.get("kiki_seizo_no"))` // Map equipment serial number [-> KIKI_SEIZO_NO] |

### Block 21 — IF/ELSE (L631-L644): Map Email Address (mlad)

> Order Issuance Condition Registration Map — Email Address → Email Address

| # | Type | Code | Business Description |
|---|------|------|---------------------|
| 1 | IF-COND | `inMap == null \|\| inMap.get("mlad") == null \|\| "".equals(inMap.get("mlad"))` | Check if the work map is null or the email address field is empty |
| 2 | SET (yes) | `template.setNull(EKK1081D011CBSMsg.MLAD)` // Set null on template [-> MLAD] |
| 3 | ELSE | - | Branch to SET |
| 4 | SET (no) | `template.set(EKK1081D011CBSMsg.MLAD, (String)inMap.get("mlad"))` // Map email address [-> MLAD] |

### Block 22 — IF/ELSE (L647-L660): Map Spot Login System ID (spot_login_sysid)

> Order Issuance Condition Registration Map — Spot Login System ID → Spot Login System ID

| # | Type | Code | Business Description |
|---|------|------|---------------------|
| 1 | IF-COND | `inMap == null \|\| inMap.get("spot_login_sysid") == null \|\| "".equals(inMap.get("spot_login_sysid"))` | Check if the work map is null or the spot login system ID field is empty |
| 2 | SET (yes) | `template.setNull(EKK1081D011CBSMsg.SPOT_LOGIN_SYSID)` // Set null on template [-> SPOT_LOGIN_SYSID] |
| 3 | ELSE | - | Branch to SET |
| 4 | SET (no) | `template.set(EKK1081D011CBSMsg.SPOT_LOGIN_SYSID, (String)inMap.get("spot_login_sysid"))` // Map spot login system ID [-> SPOT_LOGIN_SYSID] |

### Block 23 — IF/ELSE (L663-L676): Map Send Request Complete DateTime (send_req_fin_dtm)

> Order Issuance Condition Registration Map — Send Request Complete DateTime → Send Request Complete DateTime

| # | Type | Code | Business Description |
|---|------|------|---------------------|
| 1 | IF-COND | `inMap == null \|\| inMap.get("send_req_fin_dtm") == null \|\| "".equals(inMap.get("send_req_fin_dtm"))` | Check if the work map is null or the send request complete date-time field is empty |
| 2 | SET (yes) | `template.setNull(EKK1081D011CBSMsg.SEND_REQ_FIN_DTM)` // Set null on template [-> SEND_REQ_FIN_DTM] |
| 3 | ELSE | - | Branch to SET |
| 4 | SET (no) | `template.set(EKK1081D011CBSMsg.SEND_REQ_FIN_DTM, (String)inMap.get("send_req_fin_dtm"))` // Map send request complete date-time [-> SEND_REQ_FIN_DTM] |

### Block 24 — IF/ELSE (L680-L693): Map Service Contract Line Internal Number (svc_kei_kaisen_ucwk_no)

> Service Contract Line Internal Number — maps service contract line internal tracking number for line revisions/upgrades

| # | Type | Code | Business Description |
|---|------|------|---------------------|
| 1 | IF-COND | `inMap == null \|\| inMap.get("svc_kei_kaisen_ucwk_no") == null \|\| "".equals(inMap.get("svc_kei_kaisen_ucwk_no"))` | Check if the work map is null or the service contract line internal number field is empty |
| 2 | SET (yes) | `template.setNull(EKK1081D011CBSMsg.SVC_KEI_KAISEN_UCWK_NO)` // Set null on template [-> SVC_KEI_KAISEN_UCWK_NO] |
| 3 | ELSE | - | Branch to SET |
| 4 | SET (no) | `template.set(EKK1081D011CBSMsg.SVC_KEI_KAISEN_UCWK_NO, (String)inMap.get("svc_kei_kaisen_ucwk_no"))` // Map service contract line internal number [-> SVC_KEI_KAISEN_UCWK_NO] |

### Block 25 — IF/ELSE (L696-L709): Map Contract Service Control Request Order Sub-code (kei_svc_ctl_yokyu_odr_skcd)

> Contract Service Control Request Order Sub-code — maps the sub-code for contract service control requests

| # | Type | Code | Business Description |
|---|------|------|---------------------|
| 1 | IF-COND | `inMap == null \|\| inMap.get("kei_svc_ctl_yokyu_odr_skcd") == null \|\| "".equals(inMap.get("kei_svc_ctl_yokyu_odr_skcd"))` | Check if the work map is null or the contract service control request order sub-code field is empty |
| 2 | SET (yes) | `template.setNull(EKK1081D011CBSMsg.KEI_SVC_CTL_YOKYU_ODR_SKCD)` // Set null on template [-> KEI_SVC_CTL_YOKYU_ODR_SKCD] |
| 3 | ELSE | - | Branch to SET |
| 4 | SET (no) | `template.set(EKK1081D011CBSMsg.KEI_SVC_CTL_YOKYU_ODR_SKCD, (String)inMap.get("kei_svc_ctl_yokyu_odr_skcd"))` // Map contract service control request order sub-code [-> KEI_SVC_CTL_YOKYU_ODR_SKCD] |

### Block 26 — SET (L712-L715): Build Template Array and Set TEMPLATE_LIST_KEY

| # | Type | Code | Business Description |
|---|------|------|---------------------|
| 1 | SET | `templates = new CAANMsg[1]` // Create template array of size 1 |
| 2 | SET | `templates[0] = template` // Place single template in array |
| 3 | EXEC | `paramMap.put(JCMConstants.TEMPLATE_LIST_KEY, templates)` // Set template list in return map [-> TEMPLATE_LIST_KEY] |

### Block 27 — RETURN (L717): Return paramMap

| # | Type | Code | Business Description |
|---|------|------|---------------------|
| 1 | RETURN | `return paramMap` // Return the completed parameter map containing transaction ID, usecase ID, operation ID, call type, hostname, IP, screen ID, operator ID, and the template array |

## 7. Glossary

| Term | Type | Business Meaning |
|------|------|------------------|
| `svc_kei_no` | Field | Service contract number — the primary identifier for a service contract line item |
| `svc_kei_ucwk_no` | Field | Service contract internal number — internal tracking number for service contract processing |
| `kktk_svc_kei_no` | Field | Equipment provider service contract number — service contract number assigned by the equipment provider |
| `op_svc_kei_no` | Field | Option service contract number — service contract number for optional/add-on services |
| `sbop_svc_kei_no` | Field | Sub-option service contract number — service contract number for sub-option tier services |
| `seiopsvc_kei_no` | Field | Billing option service contract number — service contract number for billing-related optional services |
| `order_sbt_cd` | Field | Order type code — classifies the type of order (e.g., new registration, change, cancellation) |
| `svc_order_cd` | Field | Service order code — code identifying the service order category |
| `yokyu_sbt_cd` | Field | Request type code — classifies the type of request being made (new, change, etc.) |
| `odr_hakko_joken_cd` | Field | Order issuance condition code — code specifying conditions under which an order is issued |
| `same_trn_no` | Field | Same transaction number — identifier for grouping related transactions |
| `taknkiki_model_cd` | Field | Home equipment model code — code identifying the model of customer-owned equipment |
| `kiki_seizo_no` | Field | Equipment serial number — unique manufacturing serial number of the equipment |
| `mlad` | Field | Mail address (email) — customer email address for notifications |
| `spot_login_sysid` | Field | Spot login System ID — identifier for the spot login system used during service activation |
| `send_req_fin_dtm` | Field | Send request complete date-time — timestamp when the send request was completed |
| `svc_kei_kaisen_ucwk_no` | Field | Service contract line internal number — internal tracking ID for service contract line revisions/upgrades |
| `kei_svc_ctl_yokyu_odr_skcd` | Field | Contract service control request order sub-code — sub-code for contract service control requests |
| HAKKOSODCCWORKMAP | Field | Order issuance condition work map — the internal HashMap stored in the request parameter that carries all business fields for order issuance condition registration |
| CAANMsg | Class | Communication message object — Fujitsu message carrier class used to pass structured data between service components |
| SC | Acronym | Service Component — a reusable business logic component in the CAAN architecture |
| CBS | Acronym | CBS (Common Business Service) — a composite service that orchestrates one or more SCs |
| SOD | Acronym | Service Order Data — order fulfillment entity in the telecom BSS domain |
| JOKEN | Acronym (Japanese) | Conditions — refers to order issuance conditions (発行条件) |
| CC | Acronym | Common Component — shared utility components used across multiple CBS/screen modules |
| FUNC_CD_1 | Constant | Function code = 1 — represents the registration/creation function type |
| EKK1081D011CBS | CBS | Order Issuance Condition Registration service component — the downstream CBS invoked by this mapping method |
| TRANZACTION_ID_KEY | Constant | Telegram header key for the electronic message identifier |
| USECASE_ID_KEY | Constant | Telegram header key for the business use case identifier |
| OPERATION_ID_KEY | Constant | Telegram header key for the operation identifier |
| CALL_TYPE_KEY | Constant | Telegram header key for the service call type |
| CLIENT_HOST_NAME_KEY | Constant | User area key for the requestor hostname |
| CLIENT_IP_ADDRESS_KEY | Constant | User area key for the requestor IP address |
| INVOKE_GAMEN_ID_KEY | Constant | User area key for the invoking screen ID |
| OPERATOR_ID_KEY | Constant | User area key for the operator ID |
| TEMPLATE_LIST_KEY | Constant | Key for the array of CAANMsg templates in the parameter map |
| REQ_HOSTNAME | Constant | Control map key for the request hostname |
| REQ_HOSTIP | Constant | Control map key for the request host IP address |
| REQ_VIEWID | Constant | Control map key for the request view/screen ID |
| OPERATOR_ID | Constant | Control map key for the operator ID |
| JPCModelConstant.FUNC_CD_1 | Constant | Registration function code — value 1 indicates a create/register operation |
