# Business Logic — JFUAddSvcKeiTelCC.editInEKK0111D010() [414 LOC]

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

## 1. Role

### JFUAddSvcKeiTelCC.editInEKK0111D010()

This method performs the **downstream mapping** (下りマッピング処理) for the "Service Contract <eo Light Phone> Registration" (サービス契約<eo光電話>登録) business process. In the Fujitsu Futurity telecom billing and service order system, "eo Light Phone" (eo光電話) is NTT's fiber-optic telephone service bundled with their internet offering. The method takes a request parameter containing a HashMap of input data (indexed by `fixedText`) and transforms it into a structured `CAANMsg` template object (`EKK0111D010CBSMsg`) that the downstream CBS (Central Business System) layer expects.

The method implements a **null-safe field-by-field mapping pattern**: for each of the 30+ service contract fields, it checks whether the value exists in the input HashMap. If the value is null or an empty string, it explicitly sets the template field to null via `template.setNull()`; otherwise, it copies the value with `template.set()`. This ensures downstream CBS consumers receive fully populated message objects with explicitly-set null semantics rather than uninitialized fields.

This method serves as a **shared utility** within the `JFUAddSvcKeiTelCC` component — a common component (CC) class used by multiple service addition entry points for telecom service contracts. It is called by `addTelTrk()` (telecom track addition) and `getInvokeCBS()` (CBS invocation orchestration). The method does not branch by service type; instead, it handles all service types through a single flat mapping path, with only minor fallback strategies for fields like `sysid`, `mskm_dtl_no`, and `seiky_kei_no` that may need to be sourced from work maps when the input map lacks them.

## 2. Processing Pattern (Detailed Business Logic)

```mermaid
flowchart TD
    START(["editInEKK0111D010(param, fixedText)"])

    START --> CREATE_TEMPLATE["Create CAANMsg template from EKK0111D010CBSMsg"]

    CREATE_TEMPLATE --> SET_HEADER["Set header: TEMPLATEID, FUNC_CODE, OPERATOR_ID, OPE_DATE, OPE_TIME"]

    SET_HEADER --> GET_INMAP["Get inMap = param.getData(fixedText)"]

    GET_INMAP --> FUNC_CODE_CHECK["Override FUNC_CODE from inMap if present"]

    FUNC_CODE_CHECK --> SVC_CD["Map svc_cd -> SVC_CD"]
    SVC_CD --> SYSID["Map sysid -> SYSID
(fallback: getKeishaWorkMapValue)"]
    SYSID --> MSKM_DTL["Map mskm_dtl_no -> MSKM_DTL_NO
(fallback: getMskmWorkMapValue)"]
    MSKM_DTL --> MENKAIHAT["Map menkaihat_anken_no -> MENKAIHAT_ANKEN_NO"]
    MENKAIHAT --> PRC_GRP["Map prc_grp_cd -> PRC_GRP_CD"]
    PRC_GRP --> PRCRS["Map pcrs_cd -> PCRSCD"]
    PRCRS --> PPLAN["Map pplan_cd -> PPLAN_CD"]
    PPLAN --> TKHOSHIKI["Map tk_hoshiki_kei_no -> TK_HOSHIKI_KEI_NO"]
    TKHOSHIKI --> SVCUSE["Map svc_use_sta_kibo_ymd -> SVC_USE_STA_KIBO_YMD"]
    SVCUSE --> RSVTS["Map rsv_tsta_kibo_ymd -> RSV_TSTA_KIBO_YMD"]
    RSVTS --> IDSOKHOSHO["Map id_sokhosho_output_yh -> ID_SOKHOSHO_OUTPUT_YH"]
    IDSOKHOSHO --> PAYWAY["Map payway_keizoku_flg -> PAYWAY_KEIZOKU_FLG"]
    PAYWAY --> FTRIALK["Map ftrial_kanyu_ymd -> FTRIAL_KANYU_YMD"]
    FTRIALK --> FTRIALP["Map ftrial_prd_endymd -> FTRIAL_PRD_ENDYMD"]
    FTRIALP --> HONKANYU["Map honkanyu_ymd -> HONKANYU_YMD"]
    HONKANYU --> HONKOIKO["Map honkanyu_iko_kigen_ymd -> HONKANYU_IKO_KIGEN_YMD"]
    HONKOIKO --> LTRDIV["Map letter_hasso_shiwake_div -> LETTER_HASSO_SHIWAKE_DIV"]
    LTRDIV --> THNXLTR["Map thnx_letter_shs_cd -> THNX_LETTER_SHS_CD"]
    THNXLTR --> WEBOPADD["Map web_op_add_fail_flg -> WEB_OP_ADD_FAIL_FLG"]
    WEBOPADD --> CHGEMTHOJIN["Map chge_mt_hojinsvkei_uk_no -> CHGE_MT_HOJINSVKEI_UK_NO"]
    CHGEMTHOJIN --> CHGEMTHOJINPT["Map chge_mt_hojinsvkei_uk_nopt -> CHGE_MT_HOJINSVKEI_UK_NOPT"]
    CHGEMTHOJINPT --> PNLTYHASSEI["Map pnlty_hassei_cd -> PNLTY_HASSEI_CD"]
    PNLTYHASSEI --> IDO_DIV["Map ido_div -> IDO_DIV"]
    IDO_DIV --> INTR_CD["Map intr_cd -> INTR_CD"]
    INTR_CD --> BIKO["Map work_rrk_biko -> WORK_RRK_BIKO"]
    BIKO --> AUTO_SHOSA["Map auto_shosa_tran_stat_cd -> AUTO_SHOSA_TRAN_STAT_CD"]
    AUTO_SHOSA --> SEIKY["Map seiky_kei_no -> SEIKY_KEI_NO
(fallback: getWorkMapValue)"]
    SEIKY --> PRC_KMK["Map prc_kmk_cd -> PRC_KMK_CD"]
    PRC_KMK --> RULE0059["Map rule0059_auto_aply -> RULE0059_AUTO_APLY"]
    RULE0059 --> RULE0079["Map rule0079_auto_aply -> RULE0079_AUTO_APLY"]
    RULE0079 --> MANS_SKBT["Map mans_skbt_cd -> MANS_SKBT_CD"]
    MANS_SKBT --> KKTK_SBT["Map kktk_sbt_cd -> KKTK_SBT_CD"]
    KKTK_SBT --> SVC_KEI_KAISEN["Map svc_kei_kaisen_ucwk_no -> SVC_KEI_KAISEN_UCWK_NO"]
    SVC_KEI_KAISEN --> RETURN_TEMPLATE["Return template"]
    RETURN_TEMPLATE --> END_NODE(["Return CAANMsg"])
```

The method follows a single linear flow — there are no if/else branching paths that alter the control flow structure (except the inline null/empty checks per field). Each field undergoes the same null-check-then-map pattern. The processing is a **flat mapping pipeline** with no conditional service-type routing.

## 3. Parameter Analysis

| No | Parameter Name | Type | Business Description |
|----|---------------|------|---------------------|
| 1 | `param` | `IRequestParameterReadWrite` | The request parameter object carrying all input data for the service contract registration. It provides `getData(fixedText)` to retrieve the input HashMap keyed by the fixed text ID, and `getControlMapData(...)` to extract runtime control information such as operator ID, operation date, and operation time. |
| 2 | `fixedText` | `String` | The template identifier (TEMPLATEID) and the key used to retrieve the input data HashMap from `param.getData()`. It identifies which registration form/template the input data belongs to. |

**Instance fields and external state read:**

| No | Name | Type | Business Description |
|----|------|------|---------------------|
| 1 | `CC_WORK_AREA_NAME_SKK` | `static final String = "JFUAddSkkSCWork"` | The work area name constant used as the key to access the billing contract work map via `getWorkMapValue()`. This is the fallback source for `seiky_kei_no` when not present in the main input map. |

## 4. CRUD Operations / Called Services

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

| CRUD | SC / CBS | SC Code | Entity / DB | Operation Description |
|------|----------|---------|-------------|----------------------|
| - | `JFUAddSvcKeiTelCC.getKeishaWorkMapValue` | - | - | Calls `getKeishaWorkMapValue` — retrieves `sysid` from keisha (owner) work map as fallback when `inMap` lacks the value |
| - | `JFUAddSvcKeiTelCC.getMskmWorkMapValue` | - | - | Calls `getMskmWorkMapValue` — retrieves `mskm_dtl_no` (multiple contract detail number) from mskm work map as fallback |
| - | `JFUAddSvcKeiTelCC.getWorkMapValue` | - | - | Calls `getWorkMapValue` — retrieves `seiky_kei_no` (billing contract number) from the SKK work area as fallback |
| - | `template.set` | - | - | Sets message fields on the CAANMsg template (EKK0111D010CBSMsg) — internal object population |
| - | `template.setNull` | - | - | Sets message fields to null on the CAANMsg template — null-safe field initialization |

This method is **purely a data mapper**. It performs no database operations, no service component calls, and no create/read/update/delete actions. All operations are internal: reading from the `param` request object, retrieving fallback values from work maps, and populating the `CAANMsg` template. The terminal operations identified in the dependency trace (all `setNull` calls) confirm this is a non-persistent mapping method whose only side effect is the constructed `CAANMsg` return value.

## 5. Dependency Trace

| # | Caller (Screen/Batch) | Call Chain (Full Path to this Method) | Terminal (SC / CRUD / Entity) |
|---|----------------------|--------------------------------------|-------------------------------|
| 1 | `JFUAddSvcKeiTelCC.addTelTrk()` | `addTelTrk()` -> `editInEKK0111D010()` | `template.set/setNull [-]` |
| 2 | `JFUAddSvcKeiTelCC.getInvokeCBS()` | `getInvokeCBS()` -> `editInEKK0111D010()` | `template.set/setNull [-]` |

This method has no screen or batch entry points within 8 hops. It is called exclusively by two internal CBS methods within the same class (`JFUAddSvcKeiTelCC`), both of which are downstream CBS orchestration methods. The method itself has no database or external service terminal operations — all terminal operations are internal `set`/`setNull` calls on the `CAANMsg` template object.

## 6. Per-Branch Detail Blocks

**Block 1** — [SET] Template header initialization (L436)

The method begins by creating the message template and setting header fields.

| # | Type | Code |
|---|------|------|
| 1 | SET | `template = new CAANMsg(EKK0111D010CBSMsg.class.getName())` |
| 2 | SET | `inMap = (HashMap)param.getData(fixedText)` |
| 3 | EXEC | `template.set(EKK0111D010CBSMsg.TEMPLATEID, fixedText)` // Set template ID |
| 4 | EXEC | `template.set(EKK0111D010CBSMsg.FUNC_CODE, "1")` // Function code (default: 1) |
| 5 | EXEC | `template.set(JCMConstants.OPERATOR_ID_KEY, param.getControlMapData(SCControlMapKeys.OPERATOR_ID))` // Operator ID |
| 6 | EXEC | `template.set(JCMConstants.OPERATE_DATE_KEY, param.getControlMapData(SCControlMapKeys.OPE_DATE))` // Operation date |
| 7 | EXEC | `template.set(JCMConstants.OPERATE_DATETIME_KEY, param.getControlMapData(SCControlMapKeys.OPE_TIME))` // Operation time |

**Block 2** — [IF] Override FUNC_CODE from inMap (L463)

| # | Type | Code |
|---|------|------|
| 1 | IF | `inMap.get(JCMConstants.FUNC_CODE_KEY) != null` |
| 1.1 | EXEC | `template.set(EKK0111D010CBSMsg.FUNC_CODE, inMap.get(...))` // Override default FUNC_CODE |

**Block 3** — [IF/ELSE] svc_cd mapping (L470)
- Input: `svc_cd` from inMap
- Output: `EKK0111D010CBSMsg.SVC_CD`

| # | Type | Code |
|---|------|------|
| 1 | IF | `inMap == null \|\| inMap.get("svc_cd") == null \|\| "".equals(inMap.get("svc_cd"))` |
| 1.1 | EXEC | `template.setNull(EKK0111D010CBSMsg.SVC_CD)` |
| 1.2 | ELSE | |
| 1.3 | EXEC | `template.set(EKK0111D010CBSMsg.SVC_CD, (String)inMap.get("svc_cd"))` |

**Block 4** — [IF/ELSE] sysid mapping (L478)
- Input: `sysid` from inMap
- Fallback: `getKeishaWorkMapValue(param, "sysid")` — retrieves from keisha (owner) work map
- Output: `EKK0111D010CBSMsg.SYSID`
- Note: v1.00.00 added fallback — commented out original `setNull` in the else branch, replaced with work map retrieval

| # | Type | Code |
|---|------|------|
| 1 | IF | `inMap == null \|\| inMap.get("sysid") == null \|\| "".equals(inMap.get("sysid"))` |
| 1.1 | SET | `sysid = getKeishaWorkMapValue(param, "sysid")` // Fallback to keisha work map [v1.00.00 added] |
| 1.2 | IF | `sysid == null` |
| 1.2.1 | EXEC | `template.setNull(EKK0111D010CBSMsg.SYSID)` |
| 1.2.2 | ELSE | |
| 1.2.3 | EXEC | `template.set(EKK0111D010CBSMsg.SYSID, sysid)` |
| 1.3 | ELSE (inMap had sysid) | |
| 1.4 | EXEC | `template.set(EKK0111D010CBSMsg.SYSID, (String)inMap.get("sysid"))` |

**Block 5** — [IF/ELSE] mskm_dtl_no mapping (L501)
- Input: `mskm_dtl_no` from inMap
- Fallback: `getMskmWorkMapValue(param, "ekk0111_mskm_dtl_no")`
- Output: `EKK0111D010CBSMsg.MSKM_DTL_NO`
- Note: v1.00.00 added fallback retrieval

| # | Type | Code |
|---|------|------|
| 1 | IF | `inMap == null \|\| inMap.get("mskm_dtl_no") == null \|\| "".equals(inMap.get("mskm_dtl_no"))` |
| 1.1 | SET | `mskm_dtl_no = getMskmWorkMapValue(param, "ekk0111_mskm_dtl_no")` // Fallback [v1.00.00 added] |
| 1.2 | IF | `mskm_dtl_no == null` |
| 1.2.1 | EXEC | `template.setNull(EKK0111D010CBSMsg.MSKM_DTL_NO)` |
| 1.2.2 | ELSE | |
| 1.2.3 | EXEC | `template.set(EKK0111D010CBSMsg.MSKM_DTL_NO, mskm_dtl_no)` |
| 1.3 | ELSE | |
| 1.4 | EXEC | `template.set(EKK0111D010CBSMsg.MSKM_DTL_NO, (String)inMap.get("mskm_dtl_no"))` |

**Block 6** — [IF/ELSE] menkaihat_anken_no mapping (L518)

| # | Type | Code |
|---|------|------|
| 1 | IF | `inMap == null \|\| inMap.get("menkaihat_anken_no") == null \|\| "".equals(...)` |
| 1.1 | EXEC | `template.setNull(EKK0111D010CBSMsg.MENKAIHAT_ANKEN_NO)` |
| 1.2 | ELSE | |
| 1.3 | EXEC | `template.set(EKK0111D010CBSMsg.MENKAIHAT_ANKEN_NO, (String)inMap.get("menkaihat_anken_no"))` |

**Block 7** — [IF/ELSE] prc_grp_cd mapping (L528)

| # | Type | Code |
|---|------|------|
| 1 | IF | `inMap == null \|\| inMap.get("prc_grp_cd") == null \|\| "".equals(...)` |
| 1.1 | EXEC | `template.setNull(EKK0111D010CBSMsg.PRC_GRP_CD)` |
| 1.2 | ELSE | |
| 1.3 | EXEC | `template.set(EKK0111D010CBSMsg.PRC_GRP_CD, (String)inMap.get("prc_grp_cd"))` |

**Block 8** — [IF/ELSE] pcrs_cd mapping (L537)

| # | Type | Code |
|---|------|------|
| 1 | IF | `inMap == null \|\| inMap.get("pcrs_cd") == null \|\| "".equals(...)` |
| 1.1 | EXEC | `template.setNull(EKK0111D010CBSMsg.PCRS_CD)` |
| 1.2 | ELSE | |
| 1.3 | EXEC | `template.set(EKK0111D010CBSMsg.PCRS_CD, (String)inMap.get("pcrs_cd"))` |

**Block 9** — [IF/ELSE] pplan_cd mapping (L546)

| # | Type | Code |
|---|------|------|
| 1 | IF | `inMap == null \|\| inMap.get("pplan_cd") == null \|\| "".equals(...)` |
| 1.1 | EXEC | `template.setNull(EKK0111D010CBSMsg.PPLAN_CD)` |
| 1.2 | ELSE | |
| 1.3 | EXEC | `template.set(EKK0111D010CBSMsg.PPLAN_CD, (String)inMap.get("pplan_cd"))` |

**Block 10** — [IF/ELSE] tk_hoshiki_kei_no mapping (L555)

| # | Type | Code |
|---|------|------|
| 1 | IF | `inMap == null \|\| inMap.get("tk_hoshiki_kei_no") == null \|\| "".equals(...)` |
| 1.1 | EXEC | `template.setNull(EKK0111D010CBSMsg.TK_HOSHIKI_KEI_NO)` |
| 1.2 | ELSE | |
| 1.3 | EXEC | `template.set(EKK0111D010CBSMsg.TK_HOSHIKI_KEI_NO, (String)inMap.get("tk_hoshiki_kei_no"))` |

**Block 11** — [IF/ELSE] svc_use_sta_kibo_ymd mapping (L564)

| # | Type | Code |
|---|------|------|
| 1 | IF | `inMap == null \|\| inMap.get("svc_use_sta_kibo_ymd") == null \|\| "".equals(...)` |
| 1.1 | EXEC | `template.setNull(EKK0111D010CBSMsg.SVC_USE_STA_KIBO_YMD)` |
| 1.2 | ELSE | |
| 1.3 | EXEC | `template.set(EKK0111D010CBSMsg.SVC_USE_STA_KIBO_YMD, (String)inMap.get("svc_use_sta_kibo_ymd"))` |

**Block 12** — [IF/ELSE] rsv_tsta_kibo_ymd mapping (L573)

| # | Type | Code |
|---|------|------|
| 1 | IF | `inMap == null \|\| inMap.get("rsv_tsta_kibo_ymd") == null \|\| "".equals(...)` |
| 1.1 | EXEC | `template.setNull(EKK0111D010CBSMsg.RSV_TSTA_KIBO_YMD)` |
| 1.2 | ELSE | |
| 1.3 | EXEC | `template.set(EKK0111D010CBSMsg.RSV_TSTA_KIBO_YMD, (String)inMap.get("rsv_tsta_kibo_ymd"))` |

**Block 13** — [IF/ELSE] id_sokhosho_output_yh mapping (L582)

| # | Type | Code |
|---|------|------|
| 1 | IF | `inMap == null \|\| inMap.get("id_sokhosho_output_yh") == null \|\| "".equals(...)` |
| 1.1 | EXEC | `template.setNull(EKK0111D010CBSMsg.ID_SOKHOSHO_OUTPUT_YH)` |
| 1.2 | ELSE | |
| 1.3 | EXEC | `template.set(EKK0111D010CBSMsg.ID_SOKHOSHO_OUTPUT_YH, (String)inMap.get("id_sokhosho_output_yh"))` |

**Block 14** — [IF/ELSE] payway_keizoku_flg mapping (L591)

| # | Type | Code |
|---|------|------|
| 1 | IF | `inMap == null \|\| inMap.get("payway_keizoku_flg") == null \|\| "".equals(...)` |
| 1.1 | EXEC | `template.setNull(EKK0111D010CBSMsg.PAYWAY_KEIZOKU_FLG)` |
| 1.2 | ELSE | |
| 1.3 | EXEC | `template.set(EKK0111D010CBSMsg.PAYWAY_KEIZOKU_FLG, (String)inMap.get("payway_keizoku_flg"))` |

**Block 15** — [IF/ELSE] ftrial_kanyu_ymd mapping (L600)

| # | Type | Code |
|---|------|------|
| 1 | IF | `inMap == null \|\| inMap.get("ftrial_kanyu_ymd") == null \|\| "".equals(...)` |
| 1.1 | EXEC | `template.setNull(EKK0111D010CBSMsg.FTRIAL_KANYU_YMD)` |
| 1.2 | ELSE | |
| 1.3 | EXEC | `template.set(EKK0111D010CBSMsg.FTRIAL_KANYU_YMD, (String)inMap.get("ftrial_kanyu_ymd"))` |

**Block 16** — [IF/ELSE] ftrial_prd_endymd mapping (L609)

| # | Type | Code |
|---|------|------|
| 1 | IF | `inMap == null \|\| inMap.get("ftrial_prd_endymd") == null \|\| "".equals(...)` |
| 1.1 | EXEC | `template.setNull(EKK0111D010CBSMsg.FTRIAL_PRD_ENDYMD)` |
| 1.2 | ELSE | |
| 1.3 | EXEC | `template.set(EKK0111D010CBSMsg.FTRIAL_PRD_ENDYMD, (String)inMap.get("ftrial_prd_endymd"))` |

**Block 17** — [IF/ELSE] honkanyu_ymd mapping (L618)

| # | Type | Code |
|---|------|------|
| 1 | IF | `inMap == null \|\| inMap.get("honkanyu_ymd") == null \|\| "".equals(...)` |
| 1.1 | EXEC | `template.setNull(EKK0111D010CBSMsg.HONKANYU_YMD)` |
| 1.2 | ELSE | |
| 1.3 | EXEC | `template.set(EKK0111D010CBSMsg.HONKANYU_YMD, (String)inMap.get("honkanyu_ymd"))` |

**Block 18** — [IF/ELSE] honkanyu_iko_kigen_ymd mapping (L627)

| # | Type | Code |
|---|------|------|
| 1 | IF | `inMap == null \|\| inMap.get("honkanyu_iko_kigen_ymd") == null \|\| "".equals(...)` |
| 1.1 | EXEC | `template.setNull(EKK0111D010CBSMsg.HONKANYU_IKO_KIGEN_YMD)` |
| 1.2 | ELSE | |
| 1.3 | EXEC | `template.set(EKK0111D010CBSMsg.HONKANYU_IKO_KIGEN_YMD, (String)inMap.get("honkanyu_iko_kigen_ymd"))` |

**Block 19** — [IF/ELSE] letter_hasso_shiwake_div mapping (L636)

| # | Type | Code |
|---|------|------|
| 1 | IF | `inMap == null \|\| inMap.get("letter_hasso_shiwake_div") == null \|\| "".equals(...)` |
| 1.1 | EXEC | `template.setNull(EKK0111D010CBSMsg.LETTER_HASSO_SHIWAKE_DIV)` |
| 1.2 | ELSE | |
| 1.3 | EXEC | `template.set(EKK0111D010CBSMsg.LETTER_HASSO_SHIWAKE_DIV, (String)inMap.get("letter_hasso_shiwake_div"))` |

**Block 20** — [IF/ELSE] thnx_letter_shs_cd mapping (L645)

| # | Type | Code |
|---|------|------|
| 1 | IF | `inMap == null \|\| inMap.get("thnx_letter_shs_cd") == null \|\| "".equals(...)` |
| 1.1 | EXEC | `template.setNull(EKK0111D010CBSMsg.THNX_LETTER_SHS_CD)` |
| 1.2 | ELSE | |
| 1.3 | EXEC | `template.set(EKK0111D010CBSMsg.THNX_LETTER_SHS_CD, (String)inMap.get("thnx_letter_shs_cd"))` |

**Block 21** — [IF/ELSE] web_op_add_fail_flg mapping (L654)

| # | Type | Code |
|---|------|------|
| 1 | IF | `inMap == null \|\| inMap.get("web_op_add_fail_flg") == null \|\| "".equals(...)` |
| 1.1 | EXEC | `template.setNull(EKK0111D010CBSMsg.WEB_OP_ADD_FAIL_FLG)` |
| 1.2 | ELSE | |
| 1.3 | EXEC | `template.set(EKK0111D010CBSMsg.WEB_OP_ADD_FAIL_FLG, (String)inMap.get("web_op_add_fail_flg"))` |

**Block 22** — [IF/ELSE] chge_mt_hojinsvkei_uk_no mapping (L663)

| # | Type | Code |
|---|------|------|
| 1 | IF | `inMap == null \|\| inMap.get("chge_mt_hojinsvkei_uk_no") == null \|\| "".equals(...)` |
| 1.1 | EXEC | `template.setNull(EKK0111D010CBSMsg.CHGE_MT_HOJINSVKEI_UK_NO)` |
| 1.2 | ELSE | |
| 1.3 | EXEC | `template.set(EKK0111D010CBSMsg.CHGE_MT_HOJINSVKEI_UK_NO, (String)inMap.get("chge_mt_hojinsvkei_uk_no"))` |

**Block 23** — [IF/ELSE] chge_mt_hojinsvkei_uk_nopt mapping (L672)

| # | Type | Code |
|---|------|------|
| 1 | IF | `inMap == null \|\| inMap.get("chge_mt_hojinsvkei_uk_nopt") == null \|\| "".equals(...)` |
| 1.1 | EXEC | `template.setNull(EKK0111D010CBSMsg.CHGE_MT_HOJINSVKEI_UK_NOPT)` |
| 1.2 | ELSE | |
| 1.3 | EXEC | `template.set(EKK0111D010CBSMsg.CHGE_MT_HOJINSVKEI_UK_NOPT, (String)inMap.get("chge_mt_hojinsvkei_uk_nopt"))` |

**Block 24** — [IF/ELSE] pnlty_hassei_cd mapping (L681)

| # | Type | Code |
|---|------|------|
| 1 | IF | `inMap == null \|\| inMap.get("pnlty_hassei_cd") == null \|\| "".equals(...)` |
| 1.1 | EXEC | `template.setNull(EKK0111D010CBSMsg.PNLTY_HASSEI_CD)` |
| 1.2 | ELSE | |
| 1.3 | EXEC | `template.set(EKK0111D010CBSMsg.PNLTY_HASSEI_CD, (String)inMap.get("pnlty_hassei_cd"))` |

**Block 25** — [IF/ELSE] ido_div mapping (L690)

| # | Type | Code |
|---|------|------|
| 1 | IF | `inMap == null \|\| inMap.get("ido_div") == null \|\| "".equals(...)` |
| 1.1 | EXEC | `template.setNull(EKK0111D010CBSMsg.IDO_DIV)` |
| 1.2 | ELSE | |
| 1.3 | EXEC | `template.set(EKK0111D010CBSMsg.IDO_DIV, (String)inMap.get("ido_div"))` |

**Block 26** — [IF/ELSE] intr_cd mapping (L699)

| # | Type | Code |
|---|------|------|
| 1 | IF | `inMap == null \|\| inMap.get("intr_cd") == null \|\| "".equals(...)` |
| 1.1 | EXEC | `template.setNull(EKK0111D010CBSMsg.INTR_CD)` |
| 1.2 | ELSE | |
| 1.3 | EXEC | `template.set(EKK0111D010CBSMsg.INTR_CD, (String)inMap.get("intr_cd"))` |

**Block 27** — [IF/ELSE] biko (work_rrk_biko) mapping (L708)
- Input key: `work_rrk_biko` (note: comment says "biko" but code uses `work_rrk_biko`)

| # | Type | Code |
|---|------|------|
| 1 | IF | `inMap == null \|\| inMap.get("work_rrk_biko") == null \|\| "".equals(...)` |
| 1.1 | EXEC | `template.setNull(EKK0111D010CBSMsg.WORK_RRK_BIKO)` |
| 1.2 | ELSE | |
| 1.3 | EXEC | `template.set(EKK0111D010CBSMsg.WORK_RRK_BIKO, (String)inMap.get("work_rrk_biko"))` |

**Block 28** — [IF/ELSE] auto_shosa_tran_stat_cd mapping (L717)

| # | Type | Code |
|---|------|------|
| 1 | IF | `inMap == null \|\| inMap.get("auto_shosa_tran_stat_cd") == null \|\| "".equals(...)` |
| 1.1 | EXEC | `template.setNull(EKK0111D010CBSMsg.AUTO_SHOSA_TRAN_STAT_CD)` |
| 1.2 | ELSE | |
| 1.3 | EXEC | `template.set(EKK0111D010CBSMsg.AUTO_SHOSA_TRAN_STAT_CD, (String)inMap.get("auto_shosa_tran_stat_cd"))` |

**Block 29** — [IF/ELSE] seiky_kei_no mapping (L726)
- Input: `seiky_kei_no` from inMap
- Fallback: `getWorkMapValue(param, "seiky_kei_no", CC_WORK_AREA_NAME_SKK)` — retrieves from SKK work area [v1.00.00 added]
- Output: `EKK0111D010CBSMsg.SEIKY_KEI_NO`

| # | Type | Code |
|---|------|------|
| 1 | IF | `inMap == null \|\| inMap.get("seiky_kei_no") == null \|\| "".equals(...)` |
| 1.1 | SET | `seiky_kei_no = getWorkMapValue(param, "seiky_kei_no", CC_WORK_AREA_NAME_SKK)` // Fallback from SKK work area [v1.00.00 added] |
| 1.2 | IF | `seiky_kei_no == null` |
| 1.2.1 | EXEC | `template.setNull(EKK0111D010CBSMsg.SEIKY_KEI_NO)` |
| 1.2.2 | ELSE | |
| 1.2.3 | EXEC | `template.set(EKK0111D010CBSMsg.SEIKY_KEI_NO, seiky_kei_no)` |
| 1.3 | ELSE | |
| 1.4 | EXEC | `template.set(EKK0111D010CBSMsg.SEIKY_KEI_NO, (String)inMap.get("seiky_kei_no"))` |

**Block 30** — [IF/ELSE] prc_kmk_cd mapping (L743)

| # | Type | Code |
|---|------|------|
| 1 | IF | `inMap == null \|\| inMap.get("prc_kmk_cd") == null \|\| "".equals(...)` |
| 1.1 | EXEC | `template.setNull(EKK0111D010CBSMsg.PRC_KMK_CD)` |
| 1.2 | ELSE | |
| 1.3 | EXEC | `template.set(EKK0111D010CBSMsg.PRC_KMK_CD, (String)inMap.get("prc_kmk_cd"))` |

**Block 31** — [IF/ELSE] rule0059_auto_aply mapping (L753)
- IT material countermeasure, added 2011/12/20 by h.iwamoto

| # | Type | Code |
|---|------|------|
| 1 | IF | `inMap == null \|\| inMap.get("rule0059_auto_aply") == null \|\| "".equals(...)` |
| 1.1 | EXEC | `template.setNull(EKK0111D010CBSMsg.RULE0059_AUTO_APLY)` |
| 1.2 | ELSE | |
| 1.3 | EXEC | `template.set(EKK0111D010CBSMsg.RULE0059_AUTO_APLY, (String)inMap.get("rule0059_auto_aply"))` |

**Block 32** — [IF/ELSE] rule0079_auto_aply mapping (L763)
- IT material countermeasure, added 2011/12/20 by h.iwamoto

| # | Type | Code |
|---|------|------|
| 1 | IF | `inMap == null \|\| inMap.get("rule0079_auto_aply") == null \|\| "".equals(...)` |
| 1.1 | EXEC | `template.setNull(EKK0111D010CBSMsg.RULE0079_AUTO_APLY)` |
| 1.2 | ELSE | |
| 1.3 | EXEC | `template.set(EKK0111D010CBSMsg.RULE0079_AUTO_APLY, (String)inMap.get("rule0079_auto_aply"))` |

**Block 33** — [IF/ELSE] mans_skbt_cd mapping (L773)
- Added 2013/03/18 by Fujiwara

| # | Type | Code |
|---|------|------|
| 1 | IF | `inMap == null \|\| inMap.get("mans_skbt_cd") == null \|\| "".equals(...)` |
| 1.1 | EXEC | `template.setNull(EKK0111D010CBSMsg.MANS_SKBT_CD)` |
| 1.2 | ELSE | |
| 1.3 | EXEC | `template.set(EKK0111D010CBSMsg.MANS_SKBT_CD, (String)inMap.get("mans_skbt_cd"))` |

**Block 34** — [IF/ELSE] kktk_sbt_cd mapping (L783)
- I/F change for EKK0091D010/EKK0111D010 (ST2-2013-0001613)

| # | Type | Code |
|---|------|------|
| 1 | IF | `inMap == null \|\| inMap.get("kktk_sbt_cd") == null \|\| "".equals(...)` |
| 1.1 | EXEC | `template.setNull(EKK0111D010CBSMsg.KKTK_SBT_CD)` |
| 1.2 | ELSE | |
| 1.3 | EXEC | `template.set(EKK0111D010CBSMsg.KKTK_SBT_CD, (String)inMap.get("kktk_sbt_cd"))` |

**Block 35** — [IF/ELSE] svc_kei_kaisen_ucwk_no mapping (L793)
- I/F change for EKK0091D010/EKK0111D010 (ST2-2013-0001613)

| # | Type | Code |
|---|------|------|
| 1 | IF | `inMap == null \|\| inMap.get("svc_kei_kaisen_ucwk_no") == null \|\| "".equals(...)` |
| 1.1 | EXEC | `template.setNull(EKK0111D010CBSMsg.SVC_KEI_KAISEN_UCWK_NO)` |
| 1.2 | ELSE | |
| 1.3 | EXEC | `template.set(EKK0111D010CBSMsg.SVC_KEI_KAISEN_UCWK_NO, (String)inMap.get("svc_kei_kaisen_ucwk_no"))` |

**Block 36** — [RETURN] Method exit (L846)

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

## 7. Glossary

| Term | Type | Business Meaning |
|------|------|------------------|
| `svc_cd` | Field | Service code — identifies the service type (e.g., eo Light Phone) |
| `sysid` | Field | System ID — unique identifier for the customer/account system |
| `mskm_dtl_no` | Field | Multiple contract detail number — internal detail number for multi-contract line items |
| `ekk0111_mskm_dtl_no` | Field | Work area key for mskm_dtl_no fallback retrieval |
| `menkaihat_anken_no` | Field | Transfer/new opening case number — the reference case number for service transfers or new openings |
| `prc_grp_cd` | Field | Price group code — categorizes the pricing tier/group for the service |
| `pcrs_cd` | Field | Price course code — identifies the specific pricing course/plan |
| `pplan_cd` | Field | Price plan code — the detailed pricing plan identifier |
| `tk_hoshiki_kei_no` | Field | Provision method contract number — the contract number for the service provision method |
| `svc_use_sta_kibo_ymd` | Field | Service use start desired date (year-month-day) — customer's desired service activation date |
| `rsv_tsta_kibo_ymd` | Field | Reservation application start desired date (year-month-day) — desired date for reservation application |
| `id_sokhosho_output_yh` | Field | ID notice output yes/no flag — whether to issue an ID notification letter |
| `payway_keizoku_flg` | Field | Payment method continuation flag — whether to continue the existing payment method |
| `ftrial_kanyu_ymd` | Field | Free trial entry date (year-month-day) — start date of the free trial period |
| `ftrial_prd_endymd` | Field | Free trial period end date (year-month-day) — end date of the free trial period |
| `honkanyu_ymd` | Field | Full entry date (year-month-day) — the actual service activation/enrollment date |
| `honkanyu_iko_kigen_ymd` | Field | Full entry migration deadline (year-month-day) — the deadline for migrating from trial to full service |
| `letter_hasso_shiwake_div` | Field | Letter sending division — categorization of letter sending method |
| `thnx_letter_shs_cd` | Field | Thank-you letter shipping code — identifies the thank-you letter shipping destination/method |
| `web_op_add_fail_flg` | Field | Web option addition failure flag — indicates whether web option addition failed |
| `chge_mt_hojinsvkei_uk_no` | Field | Change-source corporation service contract receipt number — the contract number of the original service being changed |
| `chge_mt_hojinsvkei_uk_nopt` | Field | Change-source corporation service contract receipt number sub — the sub-number of the original contract |
| `pnlty_hassei_cd` | Field | Penalty occurrence code — code indicating penalty charges apply (e.g., early termination) |
| `ido_div` | Field | Migration division — the type/category of service migration (e.g., port-in, port-out) |
| `intr_cd` | Field | Referral code — identifies the referral source/chanel for the service contract |
| `work_rrk_biko` | Field | Work reference notes — free-form business notes for the service contract work item |
| `auto_shosa_tran_stat_cd` | Field | Auto review processing status code — status of automated review/verification processing |
| `seiky_kei_no` | Field | Billing contract number — the invoice/billing contract identifier |
| `prc_kmk_cd` | Field | Price item code — identifies the specific price charge item |
| `rule0059_auto_aply` | Field | Rule 0059 automatic application flag — IT material countermeasure for automatic document application |
| `rule0079_auto_aply` | Field | Rule 0079 automatic application flag — IT material countermeasure for construction cost automatic application |
| `mans_skbt_cd` | Field | Manshon service type code — apartment building type service classification |
| `kktk_sbt_cd` | Field | Equipment provision type code — type of equipment being provided (ST2-2013-0001613) |
| `svc_kei_kaisen_ucwk_no` | Field | Service contract line work detail work number — internal tracking ID for service contract line modifications (ST2-2013-0001613) |
| `CC_WORK_AREA_NAME_SKK` | Constant | Work area name "JFUAddSkkSCWork" — the work area key for billing contract data |
| `fixedText` | Parameter | Template identifier — used to index the input data HashMap and set as TEMPLATEID |
| `template` | Object | CAANMsg — the message template object of type EKK0111D010CBSMsg carrying the mapped output |
| CAANMsg | Class | Common Application Abstraction Notification Message — the message envelope used for CBS communication |
| EKK0111D010CBSMsg | Class | CBS Message class — schema definition for the eo Light Phone service contract registration message |
| EO Light Phone (eo光電話) | Business term | NTT's fiber-optic bundled telephone service — the telecom service being registered |
| CBSC / CBS | Acronym | Central Business System — the core billing/accounting backend system |
| CC | Acronym | Common Component — shared utility classes used across multiple CBS screens |
| FUNC_CODE | Field | Function code — operational mode indicator (default: "1") |
| OPERATOR_ID_KEY | Field | Operator ID — the user ID performing the operation |
| OPE_DATE | Field | Operation date — the date of the business operation |
| OPE_TIME | Field | Operation time — the time of the business operation |
| TEMPLATEID | Field | Template ID — identifies which registration template/form is being used |
| `getKeishaWorkMapValue` | Method | Retrieves a value from the keisha (owner/account) work map |
| `getMskmWorkMapValue` | Method | Retrieves a value from the mskm (multiple contract) work map |
| `getWorkMapValue` | Method | Retrieves a value from a named work area map |
