# Business Logic — JKKKikiDslAddCC.editInMsg_EKK1081D010CBS() [232 LOC]

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

## 1. Role

### JKKKikiDslAddCC.editInMsg_EKK1081D010CBS()

This method implements the **upper mapping** (上りマッピング — "upper-level data mapping") for the **Order Condition Registration** (オーダ発行条件登録) business process. Its primary responsibility is to construct the inbound `CAANMsg` message required by the `EKK1081D010CBS` Service Component, populating it with all necessary field values extracted from the incoming `IRequestParameterReadOnly` parameter. The method acts as a **data transformer** within the DSL (Domain-Specific Language) add component, bridging the gap between the caller's request object and the CBS's expected message envelope. It performs null-safe field-by-field mapping across 23 work map fields, setting values when available and marking fields as null when the source data is absent, empty, or the work map itself is missing. The method is exclusively used by `executeOdrHakkoJokenAdd()` which subsequently invokes the Order Condition Registration Service Component via `ServiceComponentRequestInvoker.run()`. As a shared utility method within the common component layer, it is duplicated across four closely related classes (`JKKKikiDslAddCC`, `JKKHakkoSODCC`, `JKKAdchgHakkoSODCC`, `JKKAdchgCancelHakkoSODCC`), indicating its role as a reusable mapping routine specific to the order condition registration use case.

## 2. Processing Pattern (Detailed Business Logic)

```mermaid
flowchart TD
    START(["editInMsg_EKK1081D010CBS starts"])
    
    START --> INIT["Initialize paramMap and template_id = EKK1081D010"]
    INIT --> SC_DATA["Map SC common data from param (TRANZACTION_ID_KEY, USECASE_ID_KEY, OPERATION_ID_KEY, CALL_TYPE_KEY)"]
    SC_DATA --> CTRL_DATA["Map control map data (CLIENT_HOST_NAME_KEY, CLIENT_IP_ADDRESS_KEY, INVOKE_GAMEN_ID_KEY, OPERATOR_ID_KEY)"]
    CTRL_DATA --> TEMPLATE["Create CAANMsg template = new CAANMsg(EKK1081D010CBSMsg.class.getName())"]
    TEMPLATE --> SET_META["Set template ID, function code (FUNC_CD_1 = Check/Registration), operator info, operate date/time"]
    SET_META --> GET_WORKMAP["Retrieve inMap = param.getData(HAKKOSODCCWORKMAP = HakkoSODCCWORK)"]
    GET_WORKMAP --> CHECK_NULL["Check if inMap is null or empty"]
    
    CHECK_NULL --> IF_SVC["svc_kei_no field"]
    IF_SVC --> SVC_NULL["template.setNull(SVC_KEI_NO)"]
    IF_SVC --> SVC_SET["template.set(SVC_KEI_NO, inMap.svc_kei_no)"]
    
    SVC_NULL --> IF_SVC_UCWK["svc_kei_ucwk_no field"]
    SVC_SET --> IF_SVC_UCWK
    
    IF_SVC_UCWK --> UCWK_NULL["template.setNull(SVC_KEI_UCWK_NO)"]
    IF_SVC_UCWK --> UCWK_SET["template.set(SVC_KEI_UCWK_NO, inMap.svc_kei_ucwk_no)"]
    
    UCWK_NULL --> IF_KKTK["kktk_svc_kei_no field"]
    UCWK_SET --> IF_KKTK
    
    IF_KKTK --> KKTK_NULL["template.setNull(KKTK_SVC_KEI_NO)"]
    IF_KKTK --> KKTK_SET["template.set(KKTK_SVC_KEI_NO, inMap.kktk_svc_kei_no)"]
    
    KKTK_NULL --> IF_OP["op_svc_kei_no field"]
    KKTK_SET --> IF_OP
    
    IF_OP --> OP_NULL["template.setNull(OP_SVC_KEI_NO)"]
    IF_OP --> OP_SET["template.set(OP_SVC_KEI_NO, inMap.op_svc_kei_no)"]
    
    OP_NULL --> IF_SBOP["sbop_svc_kei_no field"]
    OP_SET --> IF_SBOP
    
    IF_SBOP --> SBOP_NULL["template.setNull(SBOP_SVC_KEI_NO)"]
    IF_SBOP --> SBOP_SET["template.set(SBOP_SVC_KEI_NO, inMap.sbop_svc_kei_no)"]
    
    SBOP_NULL --> IF_SEIO["seiopsvc_kei_no field"]
    SBOP_SET --> IF_SEIO
    
    IF_SEIO --> SEIO_NULL["template.setNull(SEIOPSVC_KEI_NO)"]
    IF_SEIO --> SEIO_SET["template.set(SEIOPSVC_KEI_NO, inMap.seiopsvc_kei_no)"]
    
    SEIO_NULL --> IF_ORD["order_sbt_cd field"]
    SEIO_SET --> IF_ORD
    
    IF_ORD --> ORD_NULL["template.setNull(ORDER_SBT_CD)"]
    IF_ORD --> ORD_SET["template.set(ORDER_SBT_CD, inMap.order_sbt_cd)"]
    
    ORD_NULL --> IF_SVC_ORD["svc_order_cd field"]
    ORD_SET --> IF_SVC_ORD
    
    IF_SVC_ORD --> SvcOrd_NULL["template.setNull(SVC_ORDER_CD)"]
    IF_SVC_ORD --> SvcOrd_SET["template.set(SVC_ORDER_CD, inMap.svc_order_cd)"]
    
    SvcOrd_NULL --> IF_YOKYU["yokyu_sbt_cd field"]
    SvcOrd_SET --> IF_YOKYU
    
    IF_YOKYU --> Yokyu_NULL["template.setNull(YOKYU_SBT_CD)"]
    IF_YOKYU --> Yokyu_SET["template.set(YOKYU_SBT_CD, inMap.yokyu_sbt_cd)"]
    
    Yokyu_NULL --> IF_JOKEN["odr_hakko_joken_cd field"]
    Yokyu_SET --> IF_JOKEN
    
    IF_JOKEN --> Joken_NULL["template.setNull(ODR_HAKKO_JOKEN_CD)"]
    IF_JOKEN --> Joken_SET["template.set(ODR_HAKKO_JOKEN_CD, inMap.odr_hakko_joken_cd)"]
    
    Joken_NULL --> IF_SAME["same_trn_no field"]
    Joken_SET --> IF_SAME
    
    IF_SAME --> Same_NULL["template.setNull(SAME_TRN_NO)"]
    IF_SAME --> Same_SET["template.set(SAME_TRN_NO, inMap.same_trn_no)"]
    
    Same_NULL --> IF_MODEL["taknkiki_model_cd field"]
    Same_SET --> IF_MODEL
    
    IF_MODEL --> Model_NULL["template.setNull(TAKNKIKI_MODEL_CD)"]
    IF_MODEL --> Model_SET["template.set(TAKNKIKI_MODEL_CD, inMap.taknkiki_model_cd)"]
    
    Model_NULL --> IF_SEIZO["kiki_seizo_no field"]
    Model_SET --> IF_SEIZO
    
    IF_SEIZO --> Seizo_NULL["template.setNull(KIKI_SEIZO_NO)"]
    IF_SEIZO --> Seizo_SET["template.set(KIKI_SEIZO_NO, inMap.kiki_seizo_no)"]
    
    Seizo_NULL --> IF_MLAD["mlad field"]
    Seizo_SET --> IF_MLAD
    
    IF_MLAD --> Mlad_NULL["template.setNull(MLAD)"]
    IF_MLAD --> Mlad_SET["template.set(MLAD, inMap.mlad)"]
    
    Mlad_NULL --> IF_SPOT["spot_login_sysid field"]
    Mlad_SET --> IF_SPOT
    
    IF_SPOT --> Spot_NULL["template.setNull(SPOT_LOGIN_SYSID)"]
    IF_SPOT --> Spot_SET["template.set(SPOT_LOGIN_SYSID, inMap.spot_login_sysid)"]
    
    Spot_NULL --> IF_SEND["send_req_fin_dtm field"]
    Spot_SET --> IF_SEND
    
    IF_SEND --> Send_NULL["template.setNull(SEND_REQ_FIN_DTM)"]
    IF_SEND --> Send_SET["template.set(SEND_REQ_FIN_DTM, inMap.send_req_fin_dtm)"]
    
    Send_NULL --> IF_KAISEN["svc_kei_kaisen_ucwk field"]
    Send_SET --> IF_KAISEN
    
    IF_KAISEN --> Kaisen_NULL["template.setNull(SVC_KEI_KAISEN_UCWK_NO)"]
    IF_KAISEN --> Kaisen_SET["template.set(SVC_KEI_KAISEN_UCWK_NO, inMap.svc_kei_kaisen_ucwk)"]
    
    Kaisen_NULL --> FINALIZE["Finalize: create templates array, set TEMPLATE_LIST_KEY in paramMap, return paramMap"]
    Kaisen_SET --> FINALIZE
    FINALIZE --> END(["Return paramMap"])
```

## 3. Parameter Analysis

| No | Parameter Name | Type | Business Description |
|----|---------------|------|---------------------|
| 1 | `param` | `IRequestParameterReadOnly` | The business data retrieval interface carrying both work map data (`HAKKOSODCCWORK` map containing 23 order condition registration fields) and control map data (hostname, IP address, screen ID, operator ID, operate date/time). This is the sole input that contains all information needed to populate the `EKK1081D010CBS` inbound message. |

**Instance fields / external state read:** None — this method is entirely self-contained and reads only from the parameter object.

## 4. CRUD Operations / Called Services

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

| CRUD | SC / CBS | SC Code | Entity / DB | Operation Description |
|------|----------|---------|-------------|----------------------|
| - | `EKK1081D010CBSMsg` constructor | EKK1081D010CBS | - | Creates a new `CAANMsg` instance using `EKK1081D010CBSMsg` schema — defines the inbound message envelope structure |

This method is a **pure data mapping (inbound mapping) method** with no direct CRUD operations or SC service invocations. It builds the `paramMap` and `CAANMsg` template and returns them to the caller (`executeOdrHakkoJokenAdd`), which is responsible for actually executing the Service Component via `ServiceComponentRequestInvoker.run(paramMap, handle)`. The downstream SC (`EKK1081D010CBS`) performs the actual database operations on the order condition registration tables.

### Downstream dependency through caller:

| # | Caller (Screen/Batch) | Call Chain (Full Path to this Method) | Terminal (SC / CRUD / Entity) |
|---|----------------------|--------------------------------------|-------------------------------|
| 1 | Class: JKKKikiDslAddCC | `executeOdrHakkoJokenAdd` -> `editInMsg_EKK1081D010CBS` | `ServiceComponentRequestInvoker.run [C] EKK1081D010CBS` |

## 5. Dependency Trace

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

Direct callers found: 1 method.
Terminal operations from this method: `set` (23x), `setNull` (23x), `put` (2x), `getTelegramID` (1x), `getUsecaseID` (1x), `getOperationID` (1x), `getCallType` (1x), `getControlMapData` (11x), `getData` (1x), `set` on CAANMsg (23x), `setNull` on CAANMsg (23x).

| # | Caller (Screen/Batch) | Call Chain (Full Path to this Method) | Terminal (SC / CRUD / Entity) |
|---|----------------------|--------------------------------------|-------------------------------|
| 1 | Class: JKKKikiDslAddCC | `executeOdrHakkoJokenAdd(handle, param)` -> `editInMsg_EKK1081D010CBS(param)` | `paramMap` returned, then passed to `ServiceComponentRequestInvoker.run` -> `EKK1081D010CBS` Service Component |

**Description:** This method is a **private utility** called exclusively by `executeOdrHakkoJokenAdd()` within `JKKKikiDslAddCC`. The caller builds the inbound message via this method, then uses `ServiceComponentRequestInvoker` to invoke the `EKK1081D010CBS` service component with the assembled parameter map. The SC Code is inferred from the message class name (`EKK1081D010CBSMsg`), indicating Service Component `EKK1081D010CBS` which handles Order Condition Registration. The entity/DB table is not directly accessed by this method — it is ultimately operated upon by the downstream CBS.

## 6. Per-Branch Detail Blocks

**Block 1** — [SET] `Initialize paramMap, template_id` (L830)

> Initialize the return container and set the template identifier constant.

| # | Type | Code |
|---|------|------|
| 1 | SET | `template_id = "EKK1081D010"` // Service IF_ID template constant |
| 2 | SET | `paramMap = new HashMap<String, Object>()` // Return map container |

**Block 2** — [EXEC] `Map SC common data from param` (L837–847)

> Extract telemetry and routing data from the parameter object for cross-cutting SC infrastructure. These fields are standard across all service component invocations.

| # | Type | Code |
|---|------|------|
| 1 | SET | `paramMap.put(JCMConstants.TRANZACTION_ID_KEY, param.getTelegramID())` // Transaction ID — request identification |
| 2 | SET | `paramMap.put(JCMConstants.USECASE_ID_KEY, param.getUsecaseID())` // Use case ID — business context identifier |
| 3 | SET | `paramMap.put(JCMConstants.OPERATION_ID_KEY, param.getOperationID())` // Operation ID — operation classification |
| 4 | SET | `paramMap.put(JCMConstants.CALL_TYPE_KEY, param.getCallType())` // Service call type — routing discriminator |

**Block 3** — [EXEC] `Map control map data` (L850–860)

> Extract operational metadata from the control map: hostname, IP address, screen ID, and operator ID. These fields are used for audit logging and access control.

| # | Type | Code |
|---|------|------|
| 1 | SET | `paramMap.put(JCMConstants.CLIENT_HOST_NAME_KEY, param.getControlMapData(SCControlMapKeys.REQ_HOSTNAME))` // Requesting hostname |
| 2 | SET | `paramMap.put(JCMConstants.CLIENT_IP_ADDRESS_KEY, param.getControlMapData(SCControlMapKeys.REQ_HOSTIP))` // Requester IP address |
| 3 | SET | `paramMap.put(JCMConstants.INVOKE_GAMEN_ID_KEY, param.getControlMapData(SCControlMapKeys.REQ_VIEWID))` // Request screen ID (画面ID) |
| 4 | SET | `paramMap.put(JCMConstants.OPERATOR_ID_KEY, param.getControlMapData(SCControlMapKeys.OPERATOR_ID))` // Operator ID — user identity |

**Block 4** — [SET + EXEC] `Create CAANMsg template and set metadata` (L862–875)

> Initialize the message template with fixed fields. The function code `FUNC_CD_1` is a constant representing "Check & Registration" (チェック＆登録) functionality.

| # | Type | Code |
|---|------|------|
| 1 | SET | `template = new CAANMsg(EKK1081D010CBSMsg.class.getName())` // Create typed message envelope |
| 2 | SET | `inMap = null` // Work map holder (populated below) |
| 3 | SET | `template.set(EKK1081D010CBSMsg.TEMPLATEID, "EKK1081D010")` // Template ID field |
| 4 | SET | `template.set(EKK1081D010CBSMsg.FUNC_CODE, JPCModelConstant.FUNC_CD_1)` // Function code = FUNC_CD_1 (Check/Registration) [-> FUNC_CD_1] |
| 5 | SET | `operatorId = param.getControlMapData(SCControlMapKeys.OPERATOR_ID)` // Extract operator ID |
| 6 | SET | `template.set(JCMConstants.OPERATOR_ID_KEY, operatorId)` // Set operator ID on template |
| 7 | SET | `operateDate = param.getControlMapData(SCControlMapKeys.OPE_DATE)` // Extract operate date |
| 8 | SET | `template.set(JCMConstants.OPERATE_DATE_KEY, operateDate)` // Set operate date on template |
| 9 | SET | `operateDateTime = param.getControlMapData(SCControlMapKeys.OPE_TIME)` // Extract operate datetime |
| 10 | SET | `template.set(JCMConstants.OPERATE_DATETIME_KEY, operateDateTime)` // Set operate datetime on template |

**Block 5** — [EXEC] `Retrieve HAKKOSODCCWORKMAP` (L877)

> Extract the order/sod work data map from the request parameter. This map is populated by the caller with the 23 business fields to be mapped.

| # | Type | Code |
|---|------|------|
| 1 | SET | `inMap = (HashMap) param.getData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP)` // HAKKOSODCCWORKMAP = "HakkoSODCCWORK" — work data map |

**Block 6** — [IF] `svc_kei_no` (Service Contract Number) (L879)

> Map the service contract number (サービス契約番号) — the primary contract identifier for the order.

| # | Type | Code |
|---|------|------|
| 1 | IF | `null == inMap \|\| null == inMap.get("svc_kei_no") \|\| "".equals(inMap.get("svc_kei_no"))` // Null or empty check |
| 1.1 | SET | `template.setNull(EKK1081D010CBSMsg.SVC_KEI_NO)` // [Null branch] Set null |
| 1.2 | SET | `template.set(EKK1081D010CBSMsg.SVC_KEI_NO, (String) inMap.get("svc_kei_no"))` // [Value branch] Set value |

**Block 7** — [IF] `svc_kei_ucwk_no` (Service Contract Internal Work Number) (L888)

> Map the service contract internal work number (サービス契約内訳番号) — internal breakdown ID within the contract.

| # | Type | Code |
|---|------|------|
| 1 | IF | `null == inMap \|\| null == inMap.get("svc_kei_ucwk_no") \|\| "".equals(inMap.get("svc_kei_ucwk_no"))` // Null or empty check |
| 1.1 | SET | `template.setNull(EKK1081D010CBSMsg.SVC_KEI_UCWK_NO)` // [Null branch] |
| 1.2 | SET | `template.set(EKK1081D010CBSMsg.SVC_KEI_UCWK_NO, (String) inMap.get("svc_kei_ucwk_no"))` // [Value branch] |

**Block 8** — [IF] `kktk_svc_kei_no` (Equipment Provisioning Service Contract Number) (L897)

> Map the equipment provisioning service contract number (機器提供サービス契約番号) — contract number for equipment provisioning services.

| # | Type | Code |
|---|------|------|
| 1 | IF | `null == inMap \|\| null == inMap.get("kktk_svc_kei_no") \|\| "".equals(inMap.get("kktk_svc_kei_no"))` |
| 1.1 | SET | `template.setNull(EKK1081D010CBSMsg.KKTK_SVC_KEI_NO)` |
| 1.2 | SET | `template.set(EKK1081D010CBSMsg.KKTK_SVC_KEI_NO, (String) inMap.get("kktk_svc_kei_no"))` |

**Block 9** — [IF] `op_svc_kei_no` (Option Service Contract Number) (L906)

> Map the option service contract number (オプションサービス契約番号) — contract number for optional services.

| # | Type | Code |
|---|------|------|
| 1 | IF | `null == inMap \|\| null == inMap.get("op_svc_kei_no") \|\| "".equals(inMap.get("op_svc_kei_no"))` |
| 1.1 | SET | `template.setNull(EKK1081D010CBSMsg.OP_SVC_KEI_NO)` |
| 1.2 | SET | `template.set(EKK1081D010CBSMsg.OP_SVC_KEI_NO, (String) inMap.get("op_svc_kei_no"))` |

**Block 10** — [IF] `sbop_svc_kei_no` (Sub-Option Service Contract Number) (L915)

> Map the sub-option service contract number (サブオプションサービス契約番号) — contract number for sub-option services.

| # | Type | Code |
|---|------|------|
| 1 | IF | `null == inMap \|\| null == inMap.get("sbop_svc_kei_no") \|\| "".equals(inMap.get("sbop_svc_kei_no"))` |
| 1.1 | SET | `template.setNull(EKK1081D010CBSMsg.SBOP_SVC_KEI_NO)` |
| 1.2 | SET | `template.set(EKK1081D010CBSMsg.SBOP_SVC_KEI_NO, (String) inMap.get("sbop_svc_kei_no"))` |

**Block 11** — [IF] `seiopsvc_kei_no` (Billing Option Service Contract Number) (L924)

> Map the billing option service contract number (請求オプションサービス契約番号) — contract number for billing-related option services.

| # | Type | Code |
|---|------|------|
| 1 | IF | `null == inMap \|\| null == inMap.get("seiopsvc_kei_no") \|\| "".equals(inMap.get("seiopsvc_kei_no"))` |
| 1.1 | SET | `template.setNull(EKK1081D010CBSMsg.SEIOPSVC_KEI_NO)` |
| 1.2 | SET | `template.set(EKK1081D010CBSMsg.SEIOPSVC_KEI_NO, (String) inMap.get("seiopsvc_kei_no"))` |

**Block 12** — [IF] `order_sbt_cd` (Order Type Code) (L933)

> Map the order type code (オーダ種別コード) — classification of the order type.

| # | Type | Code |
|---|------|------|
| 1 | IF | `null == inMap \|\| null == inMap.get("order_sbt_cd") \|\| "".equals(inMap.get("order_sbt_cd"))` |
| 1.1 | SET | `template.setNull(EKK1081D010CBSMsg.ORDER_SBT_CD)` |
| 1.2 | SET | `template.set(EKK1081D010CBSMsg.ORDER_SBT_CD, (String) inMap.get("order_sbt_cd"))` |

**Block 13** — [IF] `svc_order_cd` (Service Order Code) (L942)

> Map the service order code (サービスオーダコード) — code identifying the service order.

| # | Type | Code |
|---|------|------|
| 1 | IF | `null == inMap \|\| null == inMap.get("svc_order_cd") \|\| "".equals(inMap.get("svc_order_cd"))` |
| 1.1 | SET | `template.setNull(EKK1081D010CBSMsg.SVC_ORDER_CD)` |
| 1.2 | SET | `template.set(EKK1081D010CBSMsg.SVC_ORDER_CD, (String) inMap.get("svc_order_cd"))` |

**Block 14** — [IF] `yokyu_sbt_cd` (Request Type Code) (L951)

> Map the request type code (要求種別コード) — code classifying the type of request (e.g., new installation, change, cancellation).

| # | Type | Code |
|---|------|------|
| 1 | IF | `null == inMap \|\| null == inMap.get("yokyu_sbt_cd") \|\| "".equals(inMap.get("yokyu_sbt_cd"))` |
| 1.1 | SET | `template.setNull(EKK1081D010CBSMsg.YOKYU_SBT_CD)` |
| 1.2 | SET | `template.set(EKK1081D010CBSMsg.YOKYU_SBT_CD, (String) inMap.get("yokyu_sbt_cd"))` |

**Block 15** — [IF] `odr_hakko_joken_cd` (Order Issuance Condition Code) (L960)

> Map the order issuance condition code (オーダ発行条件コード) — code that determines the conditions under which the order is issued.

| # | Type | Code |
|---|------|------|
| 1 | IF | `null == inMap \|\| null == inMap.get("odr_hakko_joken_cd") \|\| "".equals(inMap.get("odr_hakko_joken_cd"))` |
| 1.1 | SET | `template.setNull(EKK1081D010CBSMsg.ODR_HAKKO_JOKEN_CD)` |
| 1.2 | SET | `template.set(EKK1081D010CBSMsg.ODR_HAKKO_JOKEN_CD, (String) inMap.get("odr_hakko_joken_cd"))` |

**Block 16** — [IF] `same_trn_no` (Same Processing Number) (L969)

> Map the same processing number (同一処理番号) — identifier for grouping related processing transactions.

| # | Type | Code |
|---|------|------|
| 1 | IF | `null == inMap \|\| null == inMap.get("same_trn_no") \|\| "".equals(inMap.get("same_trn_no"))` |
| 1.1 | SET | `template.setNull(EKK1081D010CBSMsg.SAME_TRN_NO)` |
| 1.2 | SET | `template.set(EKK1081D010CBSMsg.SAME_TRN_NO, (String) inMap.get("same_trn_no"))` |

**Block 17** — [IF] `taknkiki_model_cd` (Indoor Equipment Model Code) (L978)

> Map the indoor equipment model code (宅内機器型式コード) — equipment model identifier for indoor terminal devices.

| # | Type | Code |
|---|------|------|
| 1 | IF | `null == inMap \|\| null == inMap.get("taknkiki_model_cd") \|\| "".equals(inMap.get("taknkiki_model_cd"))` |
| 1.1 | SET | `template.setNull(EKK1081D010CBSMsg.TAKNKIKI_MODEL_CD)` |
| 1.2 | SET | `template.set(EKK1081D010CBSMsg.TAKNKIKI_MODEL_CD, (String) inMap.get("taknkiki_model_cd"))` |

**Block 18** — [IF] `kiki_seizo_no` (Equipment Manufacturing Number) (L987)

> Map the equipment manufacturing number (機器製造番号) — serial number or manufacturing ID of the equipment.

| # | Type | Code |
|---|------|------|
| 1 | IF | `null == inMap \|\| null == inMap.get("kiki_seizo_no") \|\| "".equals(inMap.get("kiki_seizo_no"))` |
| 1.1 | SET | `template.setNull(EKK1081D010CBSMsg.KIKI_SEIZO_NO)` |
| 1.2 | SET | `template.set(EKK1081D010CBSMsg.KIKI_SEIZO_NO, (String) inMap.get("kiki_seizo_no"))` |

**Block 19** — [IF] `mlad` (Mail Address) (L996)

> Map the mail address (メールアドレス) — customer email address.

| # | Type | Code |
|---|------|------|
| 1 | IF | `null == inMap \|\| null == inMap.get("mlad") \|\| "".equals(inMap.get("mlad"))` |
| 1.1 | SET | `template.setNull(EKK1081D010CBSMsg.MLAD)` |
| 1.2 | SET | `template.set(EKK1081D010CBSMsg.MLAD, (String) inMap.get("mlad"))` |

**Block 20** — [IF] `spot_login_sysid` (Spot Login System ID) (L1005)

> Map the spot login system ID (スポットログインSYSID) — system identifier for spot login authentication.

| # | Type | Code |
|---|------|------|
| 1 | IF | `null == inMap \|\| null == inMap.get("spot_login_sysid") \|\| "".equals(inMap.get("spot_login_sysid"))` |
| 1.1 | SET | `template.setNull(EKK1081D010CBSMsg.SPOT_LOGIN_SYSID)` |
| 1.2 | SET | `template.set(EKK1081D010CBSMsg.SPOT_LOGIN_SYSID, (String) inMap.get("spot_login_sysid"))` |

**Block 21** — [IF] `send_req_fin_dtm` (Send Request Completion Date-Time) (L1014)

> Map the send request completion date-time (送信依頼完了年月日時分秒) — timestamp when the send request was completed.

| # | Type | Code |
|---|------|------|
| 1 | IF | `null == inMap \|\| null == inMap.get("send_req_fin_dtm") \|\| "".equals(inMap.get("send_req_fin_dtm"))` |
| 1.1 | SET | `template.setNull(EKK1081D010CBSMsg.SEND_REQ_FIN_DTM)` |
| 1.2 | SET | `template.set(EKK1081D010CBSMsg.SEND_REQ_FIN_DTM, (String) inMap.get("send_req_fin_dtm"))` |

**Block 22** — [IF] `svc_kei_kaisen_ucwk` (Service Contract Line Breakdown Number) (L1023)

> Map the service contract line breakdown number (サービス契約回線内訳番号) — internal breakdown number for service contract lines.

| # | Type | Code |
|---|------|------|
| 1 | IF | `null == inMap \|\| null == inMap.get("svc_kei_kaisen_ucwk") \|\| "".equals(inMap.get("svc_kei_kaisen_ucwk"))` |
| 1.1 | SET | `template.setNull(EKK1081D010CBSMsg.SVC_KEI_KAISEN_UCWK_NO)` |
| 1.2 | SET | `template.set(EKK1081D010CBSMsg.SVC_KEI_KAISEN_UCWK_NO, (String) inMap.get("svc_kei_kaisen_ucwk"))` |

**Block 23** — [SET + EXEC] `Finalize: templates array and return` (L1027–1031)

> Wrap the single template in an array, place it in the parameter map under `TEMPLATE_LIST_KEY`, and return the complete map.

| # | Type | Code |
|---|------|------|
| 1 | SET | `templates = new CAANMsg[1]` // Array of 1 template |
| 2 | SET | `templates[0] = template` |
| 3 | SET | `paramMap.put(JCMConstants.TEMPLATE_LIST_KEY, templates)` // Set template list in paramMap |
| 4 | RETURN | `return paramMap` |

## 7. Glossary

| Term | Type | Business Meaning |
|------|------|------------------|
| `svc_kei_no` | Field | Service contract number (サービス契約番号) — primary identifier for a service contract line item |
| `svc_kei_ucwk_no` | Field | Service contract internal work number (サービス契約内訳番号) — internal breakdown ID within the service contract |
| `kktk_svc_kei_no` | Field | Equipment provisioning service contract number (機器提供サービス契約番号) — contract number for equipment provisioning |
| `op_svc_kei_no` | Field | Option service contract number (オプションサービス契約番号) — contract number for optional services |
| `sbop_svc_kei_no` | Field | Sub-option service contract number (サブオプションサービス契約番号) — contract number for sub-option services |
| `seiopsvc_kei_no` | Field | Billing option service contract number (請求オプションサービス契約番号) — contract number for billing-related option services |
| `order_sbt_cd` | Field | Order type code (オーダ種別コード) — classification code for the type of order |
| `svc_order_cd` | Field | Service order code (サービスオーダコード) — code identifying a specific service order |
| `yokyu_sbt_cd` | Field | Request type code (要求種別コード) — classifies the type of request (new installation, change, cancellation, etc.) |
| `odr_hakko_joken_cd` | Field | Order issuance condition code (オーダ発行条件コード) — determines conditions under which the order is issued |
| `same_trn_no` | Field | Same processing number (同一処理番号) — groups related processing transactions together |
| `taknkiki_model_cd` | Field | Indoor equipment model code (宅内機器型式コード) — model identifier for indoor terminal equipment |
| `kiki_seizo_no` | Field | Equipment manufacturing number (機器製造番号) — serial/manufacturing number of the equipment |
| `mlad` | Field | Mail address (メールアドレス) — customer email address |
| `spot_login_sysid` | Field | Spot login system ID (スポットログインSYSID) — system ID for spot login authentication |
| `send_req_fin_dtm` | Field | Send request completion date-time (送信依頼完了年月日時分秒) — timestamp when send request was completed |
| `svc_kei_kaisen_ucwk` | Field | Service contract line breakdown number (サービス契約回線内訳番号) — internal breakdown number for service contract lines |
| HAKKOSODCCWORKMAP | Constant | Work data map key ("HakkoSODCCWORK") — key used to retrieve the order/SOD work data map from the request parameter |
| FUNC_CD_1 | Constant | Function code 1 — represents "Check and Registration" (チェック＆登録) functionality type |
| EKK1081D010CBS | SC Code | Order Condition Registration Service Component — the downstream CBS that receives the mapped message and performs actual order condition registration operations |
| EKK1081D010CBSMsg | Message class | Schema class for the EKK1081D010CBS service component message — defines the message envelope with 60+ fields including data fields, error fields, and audit fields |
| CAANMsg | Type | Fujitsu CAAN (Composite Application Architecture) message class — the messaging envelope used for service component communication |
| HAKKOSODCCWORK | Constant | Work data map name — the map key used to store order/SOD (Service Order Data) work data in the request parameter |
| ODR_NAIYO_CD_149 | Constant | Order content code 149 — "Router connection information / Termination" (ルーター向け接続情報・解約), used in order information creation workflow |
| ODR_NAIYO_CD_150 | Constant | Order content code 150 — "Router connection information / Cancellation" (ルーター向け接続情報・消去), used in order information creation workflow |
| FTTH | Business term | Fiber To The Home — fiber-optic internet broadband service (the domain context for this telecom order system) |
| SOD | Acronym | Service Order Data — business entity representing service order information |
| CBS | Acronym | Common Business Service — Fujitsu's service component architecture for business logic |
| SC | Acronym | Service Component — a deployed business logic unit invoked via the service component request invoker |
| DSL | Acronym | Domain-Specific Language — the custom DSL add component pattern used for telecom service order processing |
| 上りマッピング | Business term | Upper mapping — the process of mapping data from the request/upper layer into the service component inbound message format |
| 下りマッピング | Business term | Lower mapping — the reverse process of mapping data from the service component outbound message back to the request format (handled by separate methods like `editResultRP_EKK1081D010CBS`) |
| 発行条件登録 | Business term | Order issuance condition registration — the business process of registering conditions that determine when and how orders are issued |
| `template_id` | Local variable | Template identifier constant "EKK1081D010" — identifies the service IF (Interface) for this operation |
| JPCModelConstant.FUNC_CD_1 | Constant | Function code constant 1 — represents the "check and registration" operation type in the Fujitsu model |
