# Business Logic — JFUHakkoSODCC.editInMsg_EKK1551D011CBS() [311 LOC]

| Field | Value |
|-------|-------|
| Fully Qualified Name | `com.fujitsu.futurity.bp.custom.common.JFUHakkoSODCC` |
| Layer | CC / Common Component (Service Order Data creation, `com.fujitsu.futurity.bp.custom.common`) |
| Module | `common` (Package: `com.fujitsu.futurity.bp.custom.common`) |

## 1. Role

### JFUHakkoSODCC.editInMsg_EKK1551D011CBS()

This method performs **upward data mapping** (Upward Mapping: Order Information Creation Work Registration) for the Order Information Creation Work Registration process. Its business purpose is to transform incoming request parameters -- which carry order creation work data from a screen or upstream service -- into the structured `CAANMsg` envelope expected by the downstream CBS (Central Business System) component `EKK1551D011CBS`.

The method implements a **builder pattern**: it creates a `CAANMsg` instance typed to `EKK1551D011CBSMsg`, populates it with system metadata (transaction ID, user session, host info, operator details), delegates common field population to the inherited `editBasicCmn` method, and then systematically extracts approximately 35 service-contract-related fields from the `HAKKOSODCCWORKMAP` work map embedded in the request parameter. Each field follows a null-safety check pattern: if the source data is missing, empty, or the work map is null, the template field is set to null; otherwise, the value is transferred as-is.

The method's **design pattern** is a routing/dispatch preparer -- it does not contain business logic or branching by service type. Instead, it serves as a shared data-mapping entry point called by `executeOdrInfoSakseiWkAdd` (the overridden abstract method that executes the full Order Information Creation Work Registration service). It maps core order data, primary service contract identifiers and timestamps, derivative contract numbers (equipment-provided, option, sub-option, billing option), and prior-change timestamps for all contract lines -- preparing the complete data bundle for the CBS execution that follows.

## 2. Processing Pattern (Detailed Business Logic)

```mermaid
flowchart TD
    START(["editInMsg_EKK1551D011CBS start"])
    INIT_TEMPLATE["Set template_id = EKK1551D011"]
    INIT_PARAM_MAP["Create paramMap HashMap"]
    SET_TRANZACTION_ID["paramMap.put TRANZACTION_ID_KEY param.getTelegramID"]
    SET_USECASE_ID["paramMap.put USECASE_ID_KEY param.getUsecaseID"]
    SET_OPERATION_ID["paramMap.put OPERATION_ID_KEY param.getOperationID"]
    SET_CALL_TYPE["paramMap.put CALL_TYPE_KEY param.getCallType"]
    SET_CLIENT_HOST["paramMap.put CLIENT_HOST_NAME_KEY param.getControlMapData REQ_HOSTNAME"]
    SET_CLIENT_IP["paramMap.put CLIENT_IP_ADDRESS_KEY param.getControlMapData REQ_HOSTIP"]
    SET_INVOKE_GAMEN["paramMap.put INVOKE_GAMEN_ID_KEY param.getControlMapData REQ_VIEWID"]
    SET_OPERATOR_ID["paramMap.put OPERATOR_ID_KEY param.getControlMapData OPERATOR_ID"]
    CREATE_CAANMSG["Create CAANMsg EKK1551D011CBSMsg"]
    SET_TEMPLATE_ID["template.set TEMPLATEID template_id"]
    SET_FUNC_CODE["template.set FUNC_CODE FUNC_CD_1"]
    CALL_EDIT_BASIC["editBasicCmn param template"]
    GET_IN_MAP["inMap = param.getData HAKKOSODCCWORKMAP"]

    CHECK_ODR_HAKKO["ODR_HAKKO_JOKEN_NO null or empty"]
    SET_ODR_HAKKO_NULL["template.setNull ODR_HAKKO_JOKEN_NO"]
    SET_ODR_HAKKO_VALUE["template.set ODR_HAKKO_JOKEN_NO inMap.odr_hakko_joken_no"]

    CHECK_ODR_NAIYO["ODR_NAIYO_CD null or empty"]
    SET_ODR_NAIYO_NULL["template.setNull ODR_NAIYO_CD"]
    SET_ODR_NAIYO_VALUE["template.set ODR_NAIYO_CD inMap.odr_naiyo_cd"]

    CHECK_SVC_KEI["SVC_KEI_NO null or empty"]
    SET_SVC_KEI_NULL["template.setNull SVC_KEI_NO"]
    SET_SVC_KEI_VALUE["template.set SVC_KEI_NO inMap.svc_kei_no"]

    CHECK_SVKEI_GADTM["SVKEI_GADTM null or empty"]
    SET_SVKEI_GADTM_NULL["template.setNull SVKEI_GADTM"]
    SET_SVKEI_GADTM_VALUE["template.set SVKEI_GADTM inMap.svkei_gadtm"]

    CHECK_SVC_KEI_UCWK["SVC_KEI_UCWK_NO null or empty"]
    SET_SVC_KEI_UCWK_NULL["template.setNull SVC_KEI_UCWK_NO"]
    SET_SVC_KEI_UCWK_VALUE["template.set SVC_KEI_UCWK_NO inMap.svc_kei_ucwk_no"]

    CHECK_SVKEIUW_GADTM["SVKEIUW_GADTM null or empty"]
    SET_SVKEIUW_GADTM_NULL["template.setNull SVKEIUW_GADTM"]
    SET_SVKEIUW_GADTM_VALUE["template.set SVKEIUW_GADTM inMap.svkeiuw_gadtm"]

    CHECK_KKTK_SVC["KKTK_SVC_KEI_NO null or empty"]
    SET_KKTK_NULL["template.setNull KKTK_SVC_KEI_NO"]
    SET_KKTK_VALUE["template.set KKTK_SVC_KEI_NO inMap.kktk_svc_kei_no"]

    CHECK_KKTSVKEI["KKTSVKEI_GADTM null or empty"]
    SET_KKTSVKEI_NULL["template.setNull KKTSVKEI_GADTM"]
    SET_KKTSVKEI_VALUE["template.set KKTSVKEI_GADTM inMap.kktsvkei_gadtm"]

    CHECK_OP_SVC["OP_SVC_KEI_NO null or empty"]
    SET_OP_SVC_NULL["template.setNull OP_SVC_KEI_NO"]
    SET_OP_SVC_VALUE["template.set OP_SVC_KEI_NO inMap.op_svc_kei_no"]

    CHECK_OPSVKEI["OPSVKEI_GADTM null or empty"]
    SET_OPSVKEI_NULL["template.setNull OPSVKEI_GADTM"]
    SET_OPSVKEI_VALUE["template.set OPSVKEI_GADTM inMap.opsvkei_gadtm"]

    CHECK_SBOP_SVC["SBOP_SVC_KEI_NO null or empty"]
    SET_SBOP_NULL["template.setNull SBOP_SVC_KEI_NO"]
    SET_SBOP_VALUE["template.set SBOP_SVC_KEI_NO inMap.sbop_svc_kei_no"]

    CHECK_SBOPSVKEI["SBOPSVKEI_GADTM null or empty"]
    SET_SBOPSVKEI_NULL["template.setNull SBOPSVKEI_GADTM"]
    SET_SBOPSVKEI_VALUE["template.set SBOPSVKEI_GADTM inMap.sbopsvkei_gadtm"]

    CHECK_SEIOPSVC["SEIOPSVC_KEI_NO null or empty"]
    SET_SEIOPSVC_NULL["template.setNull SEIOPSVC_KEI_NO"]
    SET_SEIOPSVC_VALUE["template.set SEIOPSVC_KEI_NO inMap.seiopsvc_kei_no"]

    CHECK_SEIOPSVKEI["SEIOPSVKEI_GADTM null or empty"]
    SET_SEIOPSVKEI_NULL["template.setNull SEIOPSVKEI_GADTM"]
    SET_SEIOPSVKEI_VALUE["template.set SEIOPSVKEI_GADTM inMap.seiopsvkei_gadtm"]

    CHECK_HUKA_INF["HUKA_INF_KEI_NO null or empty"]
    SET_HUKA_NULL["template.setNull HUKA_INF_KEI_NO"]
    SET_HUKA_VALUE["template.set HUKA_INF_KEI_NO inMap.huka_inf_kei_no"]

    CHECK_HUKA_GADTM["HUKA_INF_KEI_GADTM null or empty"]
    SET_HUKA_GADTM_NULL["template.setNull HUKA_INF_KEI_GADTM"]
    SET_HUKA_GADTM_VALUE["template.set HUKA_INF_KEI_GADTM inMap.huka_inf_kei_gadtm"]

    CHECK_CHBF_SVKEI["CHBF_SVKEI_GADTM null or empty"]
    SET_CHBF_SVKEI_NULL["template.setNull CHBF_SVKEI_GADTM"]
    SET_CHBF_SVKEI_VALUE["template.set CHBF_SVKEI_GADTM inMap.chbf_svkei_gadtm"]

    CHECK_CHBF_SVKEIUW["CHBF_SVKEIUW_GADTM null or empty"]
    SET_CHBF_SVKEIUW_NULL["template.setNull CHBF_SVKEIUW_GADTM"]
    SET_CHBF_SVKEIUW_VALUE["template.set CHBF_SVKEIUW_GADTM inMap.chbf_svkeiuw_gadtm"]

    CHECK_CHBF_KKTSVKEI["CHBF_KKTSVKEI_GADTM null or empty"]
    SET_CHBF_KKTSVKEI_NULL["template.setNull CHBF_KKTSVKEI_GADTM"]
    SET_CHBF_KKTSVKEI_VALUE["template.set CHBF_KKTSVKEI_GADTM inMap.chbf_kktsvkei_gadtm"]

    CHECK_CHBF_OPSVKEI["CHBF_OPSVKEI_GADTM null or empty"]
    SET_CHBF_OPSVKEI_NULL["template.setNull CHBF_OPSVKEI_GADTM"]
    SET_CHBF_OPSVKEI_VALUE["template.set CHBF_OPSVKEI_GADTM inMap.chbf_opsvkei_gadtm"]

    CHECK_CHBF_SBOP["CHBF_SBOPSVKEI_GADTM null or empty"]
    SET_CHBF_SBOP_NULL["template.setNull CHBF_SBOPSVKEI_GADTM"]
    SET_CHBF_SBOP_VALUE["template.set CHBF_SBOPSVKEI_GADTM inMap.chbf_sbopsvkei_gadtm"]

    CHECK_CHBF_SEIO["CHBF_SEIOPSVKEI_GADTM null or empty"]
    SET_CHBF_SEIO_NULL["template.setNull CHBF_SEIOPSVKEI_GADTM"]
    SET_CHBF_SEIO_VALUE["template.set CHBF_SEIOPSVKEI_GADTM inMap.chbf_seiopsvkei_gadtm"]

    CHECK_KKOP_1_SVC["KKOP_SVC_KEI_NO_1 null or empty"]
    SET_KKOP_1_NULL["template.setNull KKOP_SVC_KEI_NO_1"]
    SET_KKOP_1_VALUE["template.set KKOP_SVC_KEI_NO_1 inMap.kkop_svc_kei_no_1"]

    CHECK_KKOP_1_GADTM["KKOSVKEI_GADTM_1 null or empty"]
    SET_KKOP_1_GADTM_NULL["template.setNull KKOSVKEI_GADTM_1"]
    SET_KKOP_1_GADTM_VALUE["template.set KKOSVKEI_GADTM_1 inMap.kkosvkei_gadtm_1"]

    CHECK_KKOP_2_SVC["KKOP_SVC_KEI_NO_2 null or empty"]
    SET_KKOP_2_NULL["template.setNull KKOP_SVC_KEI_NO_2"]
    SET_KKOP_2_VALUE["template.set KKOP_SVC_KEI_NO_2 inMap.kkop_svc_kei_no_2"]

    CHECK_KKOP_2_GADTM["KKOSVKEI_GADTM_2 null or empty"]
    SET_KKOP_2_GADTM_NULL["template.setNull KKOSVKEI_GADTM_2"]
    SET_KKOP_2_GADTM_VALUE["template.set KKOSVKEI_GADTM_2 inMap.kkosvkei_gadtm_2"]

    WRAP_TEMPLATE["Create CAANMsg array templates with single template"]
    SET_TEMPLATE_LIST["paramMap.put TEMPLATE_LIST_KEY templates"]
    RETURN["Return paramMap"]

    START --> INIT_TEMPLATE --> INIT_PARAM_MAP
    INIT_PARAM_MAP --> SET_TRANZACTION_ID
    SET_TRANZACTION_ID --> SET_USECASE_ID
    SET_USECASE_ID --> SET_OPERATION_ID
    SET_OPERATION_ID --> SET_CALL_TYPE
    SET_CALL_TYPE --> SET_CLIENT_HOST
    SET_CLIENT_HOST --> SET_CLIENT_IP
    SET_CLIENT_IP --> SET_INVOKE_GAMEN
    SET_INVOKE_GAMEN --> SET_OPERATOR_ID
    SET_OPERATOR_ID --> CREATE_CAANMSG
    CREATE_CAANMSG --> SET_TEMPLATE_ID
    SET_TEMPLATE_ID --> SET_FUNC_CODE
    SET_FUNC_CODE --> CALL_EDIT_BASIC
    CALL_EDIT_BASIC --> GET_IN_MAP

    GET_IN_MAP --> CHECK_ODR_HAKKO
    CHECK_ODR_HAKKO -- null or empty --> SET_ODR_HAKKO_NULL
    CHECK_ODR_HAKKO -- has value --> SET_ODR_HAKKO_VALUE
    SET_ODR_HAKKO_VALUE --> CHECK_ODR_NAIYO
    SET_ODR_HAKKO_NULL --> CHECK_ODR_NAIYO
    CHECK_ODR_NAIYO -- null or empty --> SET_ODR_NAIYO_NULL
    CHECK_ODR_NAIYO -- has value --> SET_ODR_NAIYO_VALUE
    SET_ODR_NAIYO_VALUE --> CHECK_SVC_KEI
    SET_ODR_NAIYO_NULL --> CHECK_SVC_KEI
    CHECK_SVC_KEI -- null or empty --> SET_SVC_KEI_NULL
    CHECK_SVC_KEI -- has value --> SET_SVC_KEI_VALUE
    SET_SVC_KEI_VALUE --> CHECK_SVKEI_GADTM
    SET_SVC_KEI_NULL --> CHECK_SVKEI_GADTM
    CHECK_SVKEI_GADTM -- null or empty --> SET_SVKEI_GADTM_NULL
    CHECK_SVKEI_GADTM -- has value --> SET_SVKEI_GADTM_VALUE
    SET_SVKEI_GADTM_VALUE --> CHECK_SVC_KEI_UCWK
    SET_SVKEI_GADTM_NULL --> CHECK_SVC_KEI_UCWK
    CHECK_SVC_KEI_UCWK -- null or empty --> SET_SVC_KEI_UCWK_NULL
    CHECK_SVC_KEI_UCWK -- has value --> SET_SVC_KEI_UCWK_VALUE
    SET_SVC_KEI_UCWK_VALUE --> CHECK_SVKEIUW_GADTM
    SET_SVC_KEI_UCWK_NULL --> CHECK_SVKEIUW_GADTM
    CHECK_SVKEIUW_GADTM -- null or empty --> SET_SVKEIUW_GADTM_NULL
    CHECK_SVKEIUW_GADTM -- has value --> SET_SVKEIUW_GADTM_VALUE
    SET_SVKEIUW_GADTM_VALUE --> CHECK_KKTK_SVC
    SET_SVKEIUW_GADTM_NULL --> CHECK_KKTK_SVC
    CHECK_KKTK_SVC -- null or empty --> SET_KKTK_NULL
    CHECK_KKTK_SVC -- has value --> SET_KKTK_VALUE
    SET_KKTK_VALUE --> CHECK_KKTSVKEI
    SET_KKTK_NULL --> CHECK_KKTSVKEI
    CHECK_KKTSVKEI -- null or empty --> SET_KKTSVKEI_NULL
    CHECK_KKTSVKEI -- has value --> SET_KKTSVKEI_VALUE
    SET_KKTSVKEI_VALUE --> CHECK_OP_SVC
    SET_KKTSVKEI_NULL --> CHECK_OP_SVC
    CHECK_OP_SVC -- null or empty --> SET_OP_SVC_NULL
    CHECK_OP_SVC -- has value --> SET_OP_SVC_VALUE
    SET_OP_SVC_VALUE --> CHECK_OPSVKEI
    SET_OP_SVC_NULL --> CHECK_OPSVKEI
    CHECK_OPSVKEI -- null or empty --> SET_OPSVKEI_NULL
    CHECK_OPSVKEI -- has value --> SET_OPSVKEI_VALUE
    SET_OPSVKEI_VALUE --> CHECK_SBOP_SVC
    SET_OPSVKEI_NULL --> CHECK_SBOP_SVC
    CHECK_SBOP_SVC -- null or empty --> SET_SBOP_NULL
    CHECK_SBOP_SVC -- has value --> SET_SBOP_VALUE
    SET_SBOP_VALUE --> CHECK_SBOPSVKEI
    SET_SBOP_NULL --> CHECK_SBOPSVKEI
    CHECK_SBOPSVKEI -- null or empty --> SET_SBOPSVKEI_NULL
    CHECK_SBOPSVKEI -- has value --> SET_SBOPSVKEI_VALUE
    SET_SBOPSVKEI_VALUE --> CHECK_SEIOPSVC
    SET_SBOPSVKEI_NULL --> CHECK_SEIOPSVC
    CHECK_SEIOPSVC -- null or empty --> SET_SEIOPSVC_NULL
    CHECK_SEIOPSVC -- has value --> SET_SEIOPSVC_VALUE
    SET_SEIOPSVC_VALUE --> CHECK_SEIOPSVKEI
    SET_SEIOPSVC_NULL --> CHECK_SEIOPSVKEI
    CHECK_SEIOPSVKEI -- null or empty --> SET_SEIOPSVKEI_NULL
    CHECK_SEIOPSVKEI -- has value --> SET_SEIOPSVKEI_VALUE
    SET_SEIOPSVKEI_VALUE --> CHECK_HUKA_INF
    SET_SEIOPSVKEI_NULL --> CHECK_HUKA_INF
    CHECK_HUKA_INF -- null or empty --> SET_HUKA_NULL
    CHECK_HUKA_INF -- has value --> SET_HUKA_VALUE
    SET_HUKA_VALUE --> CHECK_HUKA_GADTM
    SET_HUKA_NULL --> CHECK_HUKA_GADTM
    CHECK_HUKA_GADTM -- null or empty --> SET_HUKA_GADTM_NULL
    CHECK_HUKA_GADTM -- has value --> SET_HUKA_GADTM_VALUE
    SET_HUKA_GADTM_VALUE --> CHECK_CHBF_SVKEI
    SET_HUKA_GADTM_NULL --> CHECK_CHBF_SVKEI
    CHECK_CHBF_SVKEI -- null or empty --> SET_CHBF_SVKEI_NULL
    CHECK_CHBF_SVKEI -- has value --> SET_CHBF_SVKEI_VALUE
    SET_CHBF_SVKEI_VALUE --> CHECK_CHBF_SVKEIUW
    SET_CHBF_SVKEI_NULL --> CHECK_CHBF_SVKEIUW
    CHECK_CHBF_SVKEIUW -- null or empty --> SET_CHBF_SVKEIUW_NULL
    CHECK_CHBF_SVKEIUW -- has value --> SET_CHBF_SVKEIUW_VALUE
    SET_CHBF_SVKEIUW_VALUE --> CHECK_CHBF_KKTSVKEI
    SET_CHBF_SVKEIUW_NULL --> CHECK_CHBF_KKTSVKEI
    CHECK_CHBF_KKTSVKEI -- null or empty --> SET_CHBF_KKTSVKEI_NULL
    CHECK_CHBF_KKTSVKEI -- has value --> SET_CHBF_KKTSVKEI_VALUE
    SET_CHBF_KKTSVKEI_VALUE --> CHECK_CHBF_OPSVKEI
    SET_CHBF_KKTSVKEI_NULL --> CHECK_CHBF_OPSVKEI
    CHECK_CHBF_OPSVKEI -- null or empty --> SET_CHBF_OPSVKEI_NULL
    CHECK_CHBF_OPSVKEI -- has value --> SET_CHBF_OPSVKEI_VALUE
    SET_CHBF_OPSVKEI_VALUE --> CHECK_CHBF_SBOP
    SET_CHBF_OPSVKEI_NULL --> CHECK_CHBF_SBOP
    CHECK_CHBF_SBOP -- null or empty --> SET_CHBF_SBOP_NULL
    CHECK_CHBF_SBOP -- has value --> SET_CHBF_SBOP_VALUE
    SET_CHBF_SBOP_VALUE --> CHECK_CHBF_SEIO
    SET_CHBF_SBOP_NULL --> CHECK_CHBF_SEIO
    CHECK_CHBF_SEIO -- null or empty --> SET_CHBF_SEIO_NULL
    CHECK_CHBF_SEIO -- has value --> SET_CHBF_SEIO_VALUE
    SET_CHBF_SEIO_VALUE --> CHECK_KKOP_1_SVC
    SET_CHBF_SEIO_NULL --> CHECK_KKOP_1_SVC
    CHECK_KKOP_1_SVC -- null or empty --> SET_KKOP_1_NULL
    CHECK_KKOP_1_SVC -- has value --> SET_KKOP_1_VALUE
    SET_KKOP_1_VALUE --> CHECK_KKOP_1_GADTM
    SET_KKOP_1_NULL --> CHECK_KKOP_1_GADTM
    CHECK_KKOP_1_GADTM -- null or empty --> SET_KKOP_1_GADTM_NULL
    CHECK_KKOP_1_GADTM -- has value --> SET_KKOP_1_GADTM_VALUE
    SET_KKOP_1_GADTM_VALUE --> CHECK_KKOP_2_SVC
    SET_KKOP_1_GADTM_NULL --> CHECK_KKOP_2_SVC
    CHECK_KKOP_2_SVC -- null or empty --> SET_KKOP_2_NULL
    CHECK_KKOP_2_SVC -- has value --> SET_KKOP_2_VALUE
    SET_KKOP_2_VALUE --> CHECK_KKOP_2_GADTM
    SET_KKOP_2_NULL --> CHECK_KKOP_2_GADTM
    CHECK_KKOP_2_GADTM -- null or empty --> SET_KKOP_2_GADTM_NULL
    CHECK_KKOP_2_GADTM -- has value --> SET_KKOP_2_GADTM_VALUE
    SET_KKOP_2_GADTM_VALUE --> WRAP_TEMPLATE
    SET_KKOP_2_GADTM_NULL --> WRAP_TEMPLATE
    WRAP_TEMPLATE --> SET_TEMPLATE_LIST
    SET_TEMPLATE_LIST --> RETURN
```

## 3. Parameter Analysis

| No | Parameter Name | Type | Business Description |
|----|---------------|------|---------------------|
| 1 | `param` | `IRequestParameterReadOnly` | Request parameter interface carrying business data including: telegram ID, use case ID, operation ID, call type, control map data (hostname, IP address, screen ID, operator ID), and the `HAKKOSODCCWORKMAP` HashMap containing order creation work registration data (order release condition number, order content code, service contract numbers and timestamps, option contract identifiers, etc.) |

No additional instance fields are read directly by this method. The method delegates to `editBasicCmn` (inherited from `JKKHakkoSODCC`) which handles common data population.

## 4. CRUD Operations / Called Services

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

| CRUD | SC / CBS | SC Code | Entity / DB | Operation Description |
|------|----------|---------|-------------|----------------------|
| U | `editBasicCmn` | - | - | Calls `editBasicCmn` in parent class `JKKHakkoSODCC` to set common fields (operator ID, operate date, control group code, function code) |
| R | `param.getData` | - | - | Reads `HAKKOSODCCWORKMAP` HashMap from request parameter containing order creation work registration data |
| C | `EKK1551D011CBS` | `EKK1551D011CBS` | Order Information Creation Work Registration (Order SOD work) | Called downstream via `ServiceComponentRequestInvoker.run(paramMap, handle)` -- creates order information work registration record for CMP |

**How to classify:**
- `editBasicCmn` is classified as **U (Update)** because it sets/populates fields on the template message object.
- `param.getData` is classified as **R (Read)** because it retrieves data from the request parameter.
- `EKK1551D011CBS` is classified as **C (Create)** because it is a CBS (Central Business System) component invoked to create order information work registration records. The CBS handles the actual database insert into the order information creation work registration table.

**How to find SC Code:**
- The SC Code `EKK1551D011CBS` is derived from the class name `EKK1551D011CBSMsg` (the message schema class) and the CBS invocation pattern. The CBS name pattern follows the convention `[A-Z]{3}\d{4}[A-Z]\d{3}CBS`.

**How to find Entity/DB tables:**
- The CBS `EKK1551D011CBS` handles Order Information Creation Work Registration (<Order Information Creation Work Registration>). The specific database table is not directly referenced in this mapping method -- it is managed within the CBS implementation. The work map data flows through the `CAANMsg` envelope to the CBS layer.

## 5. Dependency Trace

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

Caller found: `JFUHakkoSODCC.executeOdrInfoSakseiWkAdd` (1 method).
Terminal operations from this method: `template.setNull` (35 fields), `template.set` (35 fields), `editBasicCmn`, `param.getData`.

Trace who calls this method and what this method ultimately calls.

| # | Caller (Screen/Batch) | Call Chain (Full Path to this Method) | Terminal (SC / CRUD / Entity) |
|---|----------------------|--------------------------------------|-------------------------------|
| 1 | CBS: `JFUHakkoSODCC` | `executeOdrInfoSakseiWkAdd` -> `editInMsg_EKK1551D011CBS` | `editBasicCmn [U] Common template fields` |
| | | | `param.getData [R] HAKKOSODCCWORKMAP` |
| | | | `ServiceComponentRequestInvoker.run [C] EKK1551D011CBS Order SOD Work Registration` |

**Call chain explanation:**
1. `executeOdrInfoSakseiWkAdd` (overridden abstract method in `JFUHakkoSODCC`, line ~355) calls `editInMsg_EKK1551D011CBS(param)` for upward mapping, then invokes the CBS via `ServiceComponentRequestInvoker.run(paramMap, handle)` for execution, then calls `editResultRP_EKK1551D011CBS` for downward mapping.

## 6. Per-Branch Detail Blocks

**Block 1** -- [SET] `Set template_id` (L892)

> Sets the template ID for the CBS message.

| # | Type | Code |
|---|------|------|
| 1 | SET | `template_id = "EKK1551D011"` // Template ID for the CBS |

**Block 2** -- [SET] `Create paramMap HashMap` (L894)

> Initializes the parameter map that will carry all data to the CBS.

| # | Type | Code |
|---|------|------|
| 1 | SET | `paramMap = new HashMap<String, Object>()` // Parameter map for CBS invocation |

**Block 3** -- [SET] `SC Input Common Data - System/Telegram Info` (L898-901)

> Populates system-level metadata: telegram ID, use case ID, operation ID, and call type from the request parameter.

| # | Type | Code |
|---|------|------|
| 1 | SET | `paramMap.put(JCMConstants.TRANZACTION_ID_KEY, param.getTelegramID())` // Telegram ID |
| 2 | SET | `paramMap.put(JCMConstants.USECASE_ID_KEY, param.getUsecaseID())` // Use case ID |
| 3 | SET | `paramMap.put(JCMConstants.OPERATION_ID_KEY, param.getOperationID())` // Operation ID |
| 4 | SET | `paramMap.put(JCMConstants.CALL_TYPE_KEY, param.getCallType())` // Service call type division |

**Block 4** -- [SET] `SC Input Common Data - User/Host Info` (L907-912)

> Populates host and operator context data from the control map.

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

**Block 5** -- [SET + EXEC] `Create CAANMsg template` (L915-916)

> Instantiates the message envelope typed to the CBS message schema and sets basic fields.

| # | Type | Code |
|---|------|------|
| 1 | SET | `template = new CAANMsg(EKK1551D011CBSMsg.class.getName())` // CAANMsg typed to EKK1551D011CBSMsg |
| 2 | SET | `inMap = null` // Work map (initialized as null, assigned below) |
| 3 | SET | `template.set(EKK1551D011CBSMsg.TEMPLATEID, template_id)` // Set template ID |
| 4 | SET | `template.set(EKK1551D011CBSMsg.FUNC_CODE, JPCModelConstant.FUNC_CD_1)` // Function code = 1 (Check and Register) [-> JPCModelConstant.FUNC_CD_1] |

**Block 6** -- [CALL] `editBasicCmn` (L919)

> Delegates to the parent class method to populate common fields (operator ID, operate date, control group code) on the template.

| # | Type | Code |
|---|------|------|
| 1 | CALL | `editBasicCmn(param, template)` // Inherited from JKKHakkoSODCC - sets common CBS fields |

**Block 7** -- [SET] `Get HAKKOSODCCWORKMAP` (L922)

> Extracts the work map containing all order creation work registration data from the request parameter.

| # | Type | Code |
|---|------|------|
| 1 | SET | `inMap = (HashMap) param.getData(JKKHakkoSODConstCC.HAKKOSODCCWORKMAP)` // Order Info Creation Work Reg. data [-> JKKHakkoSODConstCC.HAKKOSODCCWORKMAP] |

**Block 8** -- [IF] `ODR_HAKKO_JOKEN_NO mapping` (L925)

> Maps the Order Release Condition Number. If the work map or value is null/empty, sets null in template.

| # | Type | Code |
|---|------|------|
| 1 | SET | `if (inMap == null || inMap.get("odr_hakko_joken_no") == null || "".equals(inMap.get("odr_hakko_joken_no")))` // Null-safety check |
| 2 | EXEC | `template.setNull(EKK1551D011CBSMsg.ODR_HAKKO_JOKEN_NO)` // Set null if missing |
| 3 | EXEC | `template.set(EKK1551D011CBSMsg.ODR_HAKKO_JOKEN_NO, (String)inMap.get("odr_hakko_joken_no"))` // Set value from work map |

**Block 9** -- [IF] `ODR_NAIYO_CD mapping` (L933)

> Maps the Order Content Code. Same null-safety pattern.

| # | Type | Code |
|---|------|------|
| 1 | SET | `if (inMap == null || inMap.get("odr_naiyo_cd") == null || "".equals(inMap.get("odr_naiyo_cd")))` // Null-safety check |
| 2 | EXEC | `template.setNull(EKK1551D011CBSMsg.ODR_NAIYO_CD)` // Set null if missing |
| 3 | EXEC | `template.set(EKK1551D011CBSMsg.ODR_NAIYO_CD, (String)inMap.get("odr_naiyo_cd"))` // Set value |

**Block 10** -- [IF] `SVC_KEI_NO mapping` (L941)

> Maps the Service Contract Number.

| # | Type | Code |
|---|------|------|
| 1 | SET | `if (inMap == null || inMap.get("svc_kei_no") == null || "".equals(inMap.get("svc_kei_no")))` // Null-safety check |
| 2 | EXEC | `template.setNull(EKK1551D011CBSMsg.SVC_KEI_NO)` // Set null if missing |
| 3 | EXEC | `template.set(EKK1551D011CBSMsg.SVC_KEI_NO, (String)inMap.get("svc_kei_no"))` // Set value |

**Block 11** -- [IF] `SVKEI_GADTM mapping` (L949)

> Maps the Service Contract Registration Timestamp.

| # | Type | Code |
|---|------|------|
| 1 | SET | `if (inMap == null || inMap.get("svkei_gadtm") == null || "".equals(inMap.get("svkei_gadtm")))` // Null-safety check |
| 2 | EXEC | `template.setNull(EKK1551D011CBSMsg.SVKEI_GADTM)` // Set null if missing |
| 3 | EXEC | `template.set(EKK1551D011CBSMsg.SVKEI_GADTM, (String)inMap.get("svkei_gadtm"))` // Set value |

**Block 12** -- [IF] `SVC_KEI_UCWK_NO mapping` (L957)

> Maps the Service Contract Subcontract Number.

| # | Type | Code |
|---|------|------|
| 1 | SET | `if (inMap == null || inMap.get("svc_kei_ucwk_no") == null || "".equals(inMap.get("svc_kei_ucwk_no")))` // Null-safety check |
| 2 | EXEC | `template.setNull(EKK1551D011CBSMsg.SVC_KEI_UCWK_NO)` // Set null if missing |
| 3 | EXEC | `template.set(EKK1551D011CBSMsg.SVC_KEI_UCWK_NO, (String)inMap.get("svc_kei_ucwk_no"))` // Set value |

**Block 13** -- [IF] `SVKEIUW_GADTM mapping` (L965)

> Maps the Service Contract Subcontract Registration Timestamp.

| # | Type | Code |
|---|------|------|
| 1 | SET | `if (inMap == null || inMap.get("svkeiuw_gadtm") == null || "".equals(inMap.get("svkeiuw_gadtm")))` // Null-safety check |
| 2 | EXEC | `template.setNull(EKK1551D011CBSMsg.SVKEIUW_GADTM)` // Set null if missing |
| 3 | EXEC | `template.set(EKK1551D011CBSMsg.SVKEIUW_GADTM, (String)inMap.get("svkeiuw_gadtm"))` // Set value |

**Block 14** -- [IF] `KKTK_SVC_KEI_NO mapping` (L973)

> Maps the Equipment-Provided Service Contract Number.

| # | Type | Code |
|---|------|------|
| 1 | SET | `if (inMap == null || inMap.get("kktk_svc_kei_no") == null || "".equals(inMap.get("kktk_svc_kei_no")))` // Null-safety check |
| 2 | EXEC | `template.setNull(EKK1551D011CBSMsg.KKTK_SVC_KEI_NO)` // Set null if missing |
| 3 | EXEC | `template.set(EKK1551D011CBSMsg.KKTK_SVC_KEI_NO, (String)inMap.get("kktk_svc_kei_no"))` // Set value |

**Block 15** -- [IF] `KKTSVKEI_GADTM mapping` (L981)

> Maps the Equipment-Provided Service Contract Registration Timestamp.

| # | Type | Code |
|---|------|------|
| 1 | SET | `if (inMap == null || inMap.get("kktsvkei_gadtm") == null || "".equals(inMap.get("kktsvkei_gadtm")))` // Null-safety check |
| 2 | EXEC | `template.setNull(EKK1551D011CBSMsg.KKTSVKEI_GADTM)` // Set null if missing |
| 3 | EXEC | `template.set(EKK1551D011CBSMsg.KKTSVKEI_GADTM, (String)inMap.get("kktsvkei_gadtm"))` // Set value |

**Block 16** -- [IF] `OP_SVC_KEI_NO mapping` (L989)

> Maps the Option Service Contract Number.

| # | Type | Code |
|---|------|------|
| 1 | SET | `if (inMap == null || inMap.get("op_svc_kei_no") == null || "".equals(inMap.get("op_svc_kei_no")))` // Null-safety check |
| 2 | EXEC | `template.setNull(EKK1551D011CBSMsg.OP_SVC_KEI_NO)` // Set null if missing |
| 3 | EXEC | `template.set(EKK1551D011CBSMsg.OP_SVC_KEI_NO, (String)inMap.get("op_svc_kei_no"))` // Set value |

**Block 17** -- [IF] `OPSVKEI_GADTM mapping` (L997)

> Maps the Option Service Contract Registration Timestamp.

| # | Type | Code |
|---|------|------|
| 1 | SET | `if (inMap == null || inMap.get("opsvkei_gadtm") == null || "".equals(inMap.get("opsvkei_gadtm")))` // Null-safety check |
| 2 | EXEC | `template.setNull(EKK1551D011CBSMsg.OPSVKEI_GADTM)` // Set null if missing |
| 3 | EXEC | `template.set(EKK1551D011CBSMsg.OPSVKEI_GADTM, (String)inMap.get("opsvkei_gadtm"))` // Set value |

**Block 18** -- [IF] `SBOP_SVC_KEI_NO mapping` (L1005)

> Maps the Sub-Option Service Contract Number.

| # | Type | Code |
|---|------|------|
| 1 | SET | `if (inMap == null || inMap.get("sbop_svc_kei_no") == null || "".equals(inMap.get("sbop_svc_kei_no")))` // Null-safety check |
| 2 | EXEC | `template.setNull(EKK1551D011CBSMsg.SBOP_SVC_KEI_NO)` // Set null if missing |
| 3 | EXEC | `template.set(EKK1551D011CBSMsg.SBOP_SVC_KEI_NO, (String)inMap.get("sbop_svc_kei_no"))` // Set value |

**Block 19** -- [IF] `SBOPSVKEI_GADTM mapping` (L1013)

> Maps the Sub-Option Service Contract Registration Timestamp.

| # | Type | Code |
|---|------|------|
| 1 | SET | `if (inMap == null || inMap.get("sbopsvkei_gadtm") == null || "".equals(inMap.get("sbopsvkei_gadtm")))` // Null-safety check |
| 2 | EXEC | `template.setNull(EKK1551D011CBSMsg.SBOPSVKEI_GADTM)` // Set null if missing |
| 3 | EXEC | `template.set(EKK1551D011CBSMsg.SBOPSVKEI_GADTM, (String)inMap.get("sbopsvkei_gadtm"))` // Set value |

**Block 20** -- [IF] `SEIOPSVC_KEI_NO mapping` (L1021)

> Maps the Billing Option Service Contract Number.

| # | Type | Code |
|---|------|------|
| 1 | SET | `if (inMap == null || inMap.get("seiopsvc_kei_no") == null || "".equals(inMap.get("seiopsvc_kei_no")))` // Null-safety check |
| 2 | EXEC | `template.setNull(EKK1551D011CBSMsg.SEIOPSVC_KEI_NO)` // Set null if missing |
| 3 | EXEC | `template.set(EKK1551D011CBSMsg.SEIOPSVC_KEI_NO, (String)inMap.get("seiopsvc_kei_no"))` // Set value |

**Block 21** -- [IF] `SEIOPSVKEI_GADTM mapping` (L1029)

> Maps the Billing Option Service Contract Registration Timestamp.

| # | Type | Code |
|---|------|------|
| 1 | SET | `if (inMap == null || inMap.get("seiopsvkei_gadtm") == null || "".equals(inMap.get("seiopsvkei_gadtm")))` // Null-safety check |
| 2 | EXEC | `template.setNull(EKK1551D011CBSMsg.SEIOPSVKEI_GADTM)` // Set null if missing |
| 3 | EXEC | `template.set(EKK1551D011CBSMsg.SEIOPSVKEI_GADTM, (String)inMap.get("seiopsvkei_gadtm"))` // Set value |

**Block 22** -- [IF] `HUKA_INF_KEI_NO mapping` (L1037)

> Maps the Additional Information Contract Number.

| # | Type | Code |
|---|------|------|
| 1 | SET | `if (inMap == null || inMap.get("huka_inf_kei_no") == null || "".equals(inMap.get("huka_inf_kei_no")))` // Null-safety check |
| 2 | EXEC | `template.setNull(EKK1551D011CBSMsg.HUKA_INF_KEI_NO)` // Set null if missing |
| 3 | EXEC | `template.set(EKK1551D011CBSMsg.HUKA_INF_KEI_NO, (String)inMap.get("huka_inf_kei_no"))` // Set value |

**Block 23** -- [IF] `HUKA_INF_KEI_GADTM mapping` (L1045)

> Maps the Additional Information Contract Registration Timestamp.

| # | Type | Code |
|---|------|------|
| 1 | SET | `if (inMap == null || inMap.get("huka_inf_kei_gadtm") == null || "".equals(inMap.get("huka_inf_kei_gadtm")))` // Null-safety check |
| 2 | EXEC | `template.setNull(EKK1551D011CBSMsg.HUKA_INF_KEI_GADTM)` // Set null if missing |
| 3 | EXEC | `template.set(EKK1551D011CBSMsg.HUKA_INF_KEI_GADTM, (String)inMap.get("huka_inf_kei_gadtm"))` // Set value |

**Block 24** -- [IF] `CHBF_SVKEI_GADTM mapping` (L1053)

> Maps the Pre-Change Service Contract Registration Timestamp (before-service-contract-level change timestamp).

| # | Type | Code |
|---|------|------|
| 1 | SET | `if (inMap == null || inMap.get("chbf_svkei_gadtm") == null || "".equals(inMap.get("chbf_svkei_gadtm")))` // Null-safety check |
| 2 | EXEC | `template.setNull(EKK1551D011CBSMsg.CHBF_SVKEI_GADTM)` // Set null if missing |
| 3 | EXEC | `template.set(EKK1551D011CBSMsg.CHBF_SVKEI_GADTM, (String)inMap.get("chbf_svkei_gadtm"))` // Set value |

**Block 25** -- [IF] `CHBF_SVKEIUW_GADTM mapping` (L1061)

> Maps the Pre-Change Service Contract Subcontract Registration Timestamp.

| # | Type | Code |
|---|------|------|
| 1 | SET | `if (inMap == null || inMap.get("chbf_svkeiuw_gadtm") == null || "".equals(inMap.get("chbf_svkeiuw_gadtm")))` // Null-safety check |
| 2 | EXEC | `template.setNull(EKK1551D011CBSMsg.CHBF_SVKEIUW_GADTM)` // Set null if missing |
| 3 | EXEC | `template.set(EKK1551D011CBSMsg.CHBF_SVKEIUW_GADTM, (String)inMap.get("chbf_svkeiuw_gadtm"))` // Set value |

**Block 26** -- [IF] `CHBF_KKTSVKEI_GADTM mapping` (L1069)

> Maps the Pre-Change Equipment-Provided Service Contract Registration Timestamp.

| # | Type | Code |
|---|------|------|
| 1 | SET | `if (inMap == null || inMap.get("chbf_kktsvkei_gadtm") == null || "".equals(inMap.get("chbf_kktsvkei_gadtm")))` // Null-safety check |
| 2 | EXEC | `template.setNull(EKK1551D011CBSMsg.CHBF_KKTSVKEI_GADTM)` // Set null if missing |
| 3 | EXEC | `template.set(EKK1551D011CBSMsg.CHBF_KKTSVKEI_GADTM, (String)inMap.get("chbf_kktsvkei_gadtm"))` // Set value |

**Block 27** -- [IF] `CHBF_OPSVKEI_GADTM mapping` (L1077)

> Maps the Pre-Change Option Service Contract Registration Timestamp.

| # | Type | Code |
|---|------|------|
| 1 | SET | `if (inMap == null || inMap.get("chbf_opsvkei_gadtm") == null || "".equals(inMap.get("chbf_opsvkei_gadtm")))` // Null-safety check |
| 2 | EXEC | `template.setNull(EKK1551D011CBSMsg.CHBF_OPSVKEI_GADTM)` // Set null if missing |
| 3 | EXEC | `template.set(EKK1551D011CBSMsg.CHBF_OPSVKEI_GADTM, (String)inMap.get("chbf_opsvkei_gadtm"))` // Set value |

**Block 28** -- [IF] `CHBF_SBOPSVKEI_GADTM mapping` (L1085)

> Maps the Pre-Change Sub-Option Contract Registration Timestamp.

| # | Type | Code |
|---|------|------|
| 1 | SET | `if (inMap == null || inMap.get("chbf_sbopsvkei_gadtm") == null || "".equals(inMap.get("chbf_sbopsvkei_gadtm")))` // Null-safety check |
| 2 | EXEC | `template.setNull(EKK1551D011CBSMsg.CHBF_SBOPSVKEI_GADTM)` // Set null if missing |
| 3 | EXEC | `template.set(EKK1551D011CBSMsg.CHBF_SBOPSVKEI_GADTM, (String)inMap.get("chbf_sbopsvkei_gadtm"))` // Set value |

**Block 29** -- [IF] `CHBF_SEIOPSVKEI_GADTM mapping` (L1093)

> Maps the Pre-Change Billing Option Contract Registration Timestamp.

| # | Type | Code |
|---|------|------|
| 1 | SET | `if (inMap == null || inMap.get("chbf_seiopsvkei_gadtm") == null || "".equals(inMap.get("chbf_seiopsvkei_gadtm")))` // Null-safety check |
| 2 | EXEC | `template.setNull(EKK1551D011CBSMsg.CHBF_SEIOPSVKEI_GADTM)` // Set null if missing |
| 3 | EXEC | `template.set(EKK1551D011CBSMsg.CHBF_SEIOPSVKEI_GADTM, (String)inMap.get("chbf_seiopsvkei_gadtm"))` // Set value |

**Block 30** -- [IF] `KKOP_SVC_KEI_NO_1 mapping` (L1101)

> Maps the Equipment Option Service Contract Number 1.

| # | Type | Code |
|---|------|------|
| 1 | SET | `if (inMap == null || inMap.get("kkop_svc_kei_no_1") == null || "".equals(inMap.get("kkop_svc_kei_no_1")))` // Null-safety check |
| 2 | EXEC | `template.setNull(EKK1551D011CBSMsg.KKOP_SVC_KEI_NO_1)` // Set null if missing |
| 3 | EXEC | `template.set(EKK1551D011CBSMsg.KKOP_SVC_KEI_NO_1, (String)inMap.get("kkop_svc_kei_no_1"))` // Set value |

**Block 31** -- [IF] `KKOSVKEI_GADTM_1 mapping` (L1108)

> Maps the Equipment Option Service Contract Registration Timestamp 1.

| # | Type | Code |
|---|------|------|
| 1 | SET | `if (inMap == null || inMap.get("kkosvkei_gadtm_1") == null || "".equals(inMap.get("kkosvkei_gadtm_1")))` // Null-safety check |
| 2 | EXEC | `template.setNull(EKK1551D011CBSMsg.KKOSVKEI_GADTM_1)` // Set null if missing |
| 3 | EXEC | `template.set(EKK1551D011CBSMsg.KKOSVKEI_GADTM_1, (String)inMap.get("kkosvkei_gadtm_1"))` // Set value |

**Block 32** -- [IF] `KKOP_SVC_KEI_NO_2 mapping` (L1115)

> Maps the Equipment Option Service Contract Number 2.

| # | Type | Code |
|---|------|------|
| 1 | SET | `if (inMap == null || inMap.get("kkop_svc_kei_no_2") == null || "".equals(inMap.get("kkop_svc_kei_no_2")))` // Null-safety check |
| 2 | EXEC | `template.setNull(EKK1551D011CBSMsg.KKOP_SVC_KEI_NO_2)` // Set null if missing |
| 3 | EXEC | `template.set(EKK1551D011CBSMsg.KKOP_SVC_KEI_NO_2, (String)inMap.get("kkop_svc_kei_no_2"))` // Set value |

**Block 33** -- [IF] `KKOSVKEI_GADTM_2 mapping` (L1122)

> Maps the Equipment Option Service Contract Registration Timestamp 2.

| # | Type | Code |
|---|------|------|
| 1 | SET | `if (inMap == null || inMap.get("kkosvkei_gadtm_2") == null || "".equals(inMap.get("kkosvkei_gadtm_2")))` // Null-safety check |
| 2 | EXEC | `template.setNull(EKK1551D011CBSMsg.KKOSVKEI_GADTM_2)` // Set null if missing |
| 3 | EXEC | `template.set(EKK1551D011CBSMsg.KKOSVKEI_GADTM_2, (String)inMap.get("kkosvkei_gadtm_2"))` // Set value |

**Block 34** -- [SET] `Wrap template in array and set on paramMap` (L1128-1130)

> Wraps the single template in a `CAANMsg` array and puts it in the parameter map under the template list key.

| # | Type | Code |
|---|------|------|
| 1 | SET | `templates = new CAANMsg[1]` // CAANMsg array with capacity 1 |
| 2 | SET | `templates[0] = template` // Assign the populated template to the array |
| 3 | SET | `paramMap.put(JCMConstants.TEMPLATE_LIST_KEY, templates)` // Set template list in paramMap |

**Block 35** -- [RETURN] `Return paramMap` (L1132)

> Returns the fully populated parameter map to the caller.

| # | Type | Code |
|---|------|------|
| 1 | RETURN | `return paramMap` // Returns paramMap with template list and system metadata |

## 7. Glossary

| Term | Type | Business Meaning |
|------|------|------------------|
| `HAKKOSODCCWORKMAP` | Field | Work Map for Order SOD Creation CC -- a HashMap carried in the request parameter containing all order creation work registration data fields |
| `odr_hakko_joken_no` | Field | Order Release Condition Number -- the condition number that governs whether an order can be issued/released |
| `odr_naiyo_cd` | Field | Order Content Code -- classifies the type of order content (e.g., FTTH registration, Mail change, ENUM change, etc.) |
| `svc_kei_no` | Field | Service Contract Number -- the primary service contract identifier (e.g., optical phone service line contract) |
| `svkei_gadtm` | Field | Service Contract Registration Date-Time (Timestamp) -- when the service contract was originally registered |
| `svc_kei_ucwk_no` | Field | Service Contract Subcontract Number -- the subcontract/sub-details number within the service contract |
| `svkeiuw_gadtm` | Field | Service Contract Subcontract Registration Date-Time -- when the service contract subcontract was registered |
| `kktk_svc_kei_no` | Field | Equipment-Provided Service Contract Number -- the service contract number for equipment leasing/provision |
| `kktsvkei_gadtm` | Field | Equipment-Provided Service Contract Registration Date-Time |
| `op_svc_kei_no` | Field | Option Service Contract Number -- the service contract number for optional services added to the main service |
| `opsvkei_gadtm` | Field | Option Service Contract Registration Date-Time |
| `sbop_svc_kei_no` | Field | Sub-Option Service Contract Number -- a sub-level optional service contract |
| `sbopsvkei_gadtm` | Field | Sub-Option Service Contract Registration Date-Time |
| `seiopsvc_kei_no` | Field | Billing Option Service Contract Number -- the service contract number for billing-related optional services |
| `seiopsvkei_gadtm` | Field | Billing Option Service Contract Registration Date-Time |
| `huka_inf_kei_no` | Field | Additional Information Contract Number -- contract number for supplementary/additional information services |
| `huka_inf_kei_gadtm` | Field | Additional Information Contract Registration Date-Time |
| `chbf_svkei_gadtm` | Field | Pre-Change Service Contract Registration Date-Time -- timestamp of the service contract before a change operation |
| `chbf_svkeiuw_gadtm` | Field | Pre-Change Service Contract Subcontract Registration Date-Time |
| `chbf_kktsvkei_gadtm` | Field | Pre-Change Equipment-Provided Service Contract Registration Date-Time |
| `chbf_opsvkei_gadtm` | Field | Pre-Change Option Service Contract Registration Date-Time |
| `chbf_sbopsvkei_gadtm` | Field | Pre-Change Sub-Option Contract Registration Date-Time |
| `chbf_seiopsvkei_gadtm` | Field | Pre-Change Billing Option Contract Registration Date-Time |
| `kkop_svc_kei_no_1` | Field | Equipment Option Service Contract Number 1 -- first equipment option contract for multi-equipment scenarios |
| `kkosvkei_gadtm_1` | Field | Equipment Option Service Contract Registration Date-Time 1 |
| `kkop_svc_kei_no_2` | Field | Equipment Option Service Contract Number 2 -- second equipment option contract for multi-equipment scenarios |
| `kkosvkei_gadtm_2` | Field | Equipment Option Service Contract Registration Date-Time 2 |
| FUNC_CD_1 | Constant | Function code "1" represents "Check and Register" mode in the CBS framework [-> JPCModelConstant.FUNC_CD_1] |
| HAKKOSODCCWORKMAP | Constant | Key for the work map HashMap carrying order creation work registration data [-> JKKHakkoSODConstCC.HAKKOSODCCWORKMAP] |
| CAANMsg | Class | Communication Abstract Application ANdler -- Fujitsu's message envelope class used for CBS communication |
| CBS | Acronym | Central Business System -- the backend service component layer in the Fujitsu framework |
| SOD | Acronym | Service Order Data -- order fulfillment data for telecom services |
| CC | Acronym | Common Component -- the component layer containing shared business logic classes (pattern: J*CC) |
| CMP | Acronym | Customer Management Platform -- the customer-facing web application layer |
| SC | Acronym | Service Component -- individual backend business components (e.g., EKK0191A010SC) |
| REQ_HOSTNAME | Field | Control map key for the requestor's hostname |
| REQ_HOSTIP | Field | Control map key for the requestor's IP address |
| REQ_VIEWID | Field | Control map key for the requesting screen ID |
| OPERATOR_ID | Field | Control map key for the operator ID |
| template_id | Variable | Template ID string "EKK1551D011" identifying this CBS service |
