# Business Logic — JKKSeikySakiHeigoCC.editInMsg_EKU0021C010() [2616 LOC]

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

## 1. Role

### JKKSeikySakiHeigoCC.editInMsg_EKU0021C010()

This method constructs an inbound message template (CAANMsg) for the **eo Light Network Construction Case Modifications** screen (EKU0021C010). It is the central message-building hub for the "工事案件<eo光ネット>諸変更" (Construction Case eo Light Network Miscellaneous Changes) business process. The method accepts raw form data from the `childMap` parameter and maps over 200 fields — covering construction case identifiers, service contract details, customer and contractor addresses, relocation information, scheduling data, optional service flags, and up to 20 sets of home device specification records — onto a structured `CAANMsg` template. It also initializes the work area detail number (MSKM_DTL_NO) by extracting it from the work mapping area. The method implements a **batch field-mapping pattern**: for each field, it checks whether the source value is an empty string; if so, it sets the template field to null (clearing it); otherwise it copies the value over. This ensures all template fields are deterministically populated regardless of whether the screen submitted data. The method is a shared common component utility called exclusively by `execEKU0021C010()`, acting as the inbound message preparation step before the CBS (business service) layer processes the modification request.

## 2. Processing Pattern (Detailed Business Logic)

```mermaid
flowchart TD
    START(["editInMsg_EKU0021C010(param, dataMap, childMap)"])
    START --> CALL_EDIT_IN_MSG["CALL editInMsg(param)"]
    CALL_EDIT_IN_MSG --> CREATE_TEMPLATE["CREATE CAANMsg template<br/>EKU0021C010CBSMsg"]
    CREATE_TEMPLATE --> SET_TEMPLATE_ID["SET TEMPLATE_ID_EKU0021C010<br/>SET FUNC_CODE = '1'"]
    SET_TEMPLATE_ID --> SET_OPERATOR_DATA["SET OPERATOR_ID, OPE_DATE, OPE_TIME<br/>from param.getControlMapData"]
    SET_OPERATOR_DATA --> GET_WORK_MAP["GET workMap from param.getMappingWorkArea()"]
    GET_WORK_MAP --> CHECK_WORK_MAP_NULL{workMap.get('KKSV054601SCWORK') == null?}
    CHECK_WORK_MAP_NULL -->|Yes| NULL_MSKM_DTL_1["SET MSKM_DTL_NO = null"]
    CHECK_WORK_MAP_NULL -->|No| GET_WORK_LIST["GET KKSV054601SCWORKLIST"]
    GET_WORK_LIST --> CHECK_WORK_LIST_EMPTY{workList == null OR size == 0?}
    CHECK_WORK_LIST_EMPTY -->|Yes| NULL_MSKM_DTL_2["SET MSKM_DTL_NO = null"]
    CHECK_WORK_LIST_EMPTY -->|No| GET_REMAP["GET first element of workList"]
    GET_REMAP --> CHECK_MEISAI_EMPTY{meisai == null OR empty?}
    CHECK_MEISAI_EMPTY -->|Yes| NULL_MSKM_DTL_3["SET MSKM_DTL_NO = null"]
    CHECK_MEISAI_EMPTY -->|No| SET_MEISAI["SET MSKM_DTL_NO = meisai"]
    NULL_MSKM_DTL_1 --> SET_FUNC_CODE_FROM_DATA["SET FUNC_CODE from dataMap"]
    NULL_MSKM_DTL_2 --> SET_FUNC_CODE_FROM_DATA
    NULL_MSKM_DTL_3 --> SET_FUNC_CODE_FROM_DATA
    SET_MEISAI --> SET_FUNC_CODE_FROM_DATA
    SET_FUNC_CODE_FROM_DATA --> PROCESS_FIELDS["PROCESS ~200 childMap fields"]

    PROCESS_FIELDS --> FIELD_1{Check childMap.get('svc_kei_no')}
    FIELD_1 -->|empty| NULL_1["SET SVC_KEI_NO = null"]
    FIELD_1 -->|has value| SET_1["SET SVC_KEI_NO = value"]
    NULL_1 --> FIELD_2{Check childMap.get('svc_kei_kaisen_ucwk_no')}
    SET_1 --> FIELD_2
    FIELD_2 -->|empty| NULL_2["SET SVC_KEI_KAISEN_UCWK_NO = null"]
    FIELD_2 -->|has value| SET_2["SET SVC_KEI_KAISEN_UCWK_NO = value"]
    NULL_2 --> FIELD_3{Check childMap.get('kojiak_no')}
    SET_2 --> FIELD_3
    FIELD_3 -->|empty| NULL_3["SET KOJIAK_NO = null"]
    FIELD_3 -->|has value| SET_3["SET KOJIAK_NO = value"]
    NULL_3 --> PROCESS_MORE["PROCESS remaining ~197 fields<br/>(same pattern: empty? setNull : setValue)"]
    SET_3 --> PROCESS_MORE
    SET_3 --> FIELD_4{...}
    SET_1 --> FIELD_4
    FIELD_4 -->|empty| NULL_4["SET field = null"]
    FIELD_4 -->|has value| SET_4["SET field = value"]
    NULL_4 --> PROCESS_MORE
    SET_4 --> PROCESS_MORE

    PROCESS_MORE --> FIELD_200{Check last field<br/>chgb_tk_sbt_cd_20}
    FIELD_200 -->|empty| NULL_200["SET CHGB_TK_SBT_CD_20 = null"]
    FIELD_200 -->|has value| SET_200["SET CHGB_TK_SBT_CD_20 = value"]
    NULL_200 --> NULL_EXTRA_FIELDS["SET null on extra fields:<br/>MSKMSHA_NM, KOJI_APO_RRKS_TELNO,<br/>TAKNKIKI_IDO_CD_1..20,<br/>KIKI_CHG_NO_1..20,<br/>MOTO_TCASE_NO_1..20"]
    SET_200 --> NULL_EXTRA_FIELDS
    NULL_EXTRA_FIELDS --> CREATE_TEMPLATE_ARRAY["CREATE CAANMsg[1] array<br/>templates[0] = template"]
    CREATE_TEMPLATE_ARRAY --> PUT_TEMPLATE["PUT templates in paramMap<br/>put TEMPLATE_LIST_KEY"]
    PUT_TEMPLATE --> RETURN["RETURN paramMap"]
    RETURN --> END(["end"])
```

**Field Mapping Groups:** The method processes fields in these logical groups:
1. Work area detail number extraction (MSKM_DTL_NO)
2. Template meta-data (TEMPLATE_ID, FUNC_CODE, OPERATOR_ID, dates)
3. Construction case identifiers (svc_kei_no, svc_kei_kaisen_ucwk_no, kojiak_no, koji_uk_cd, koji_uk_dtail_cd, koji_uk_optnty_ido_dtm)
4. Service & pricing data (svc_cd, prc_grp_cd, pcrs_cd, pplan_cd, wrib_type_cd)
5. Schedule & fix dates (plan_chg_fix_ymd, ad_chg_fix_dtm)
6. Developer construction info (menkaihat_anken_no, mnkht_koji_cd)
7. Network identifiers (pon_skbt_cd, sysid)
8. Customer contact details (cust_nm, cust_kana, cust_home_tel_no, cust_ktai_tel_no, cust_rrks_tel_no, rrks_offc_nm)
9. Contractor address (keisha_ad_cd, keisha_pcd, keisha_state_nm, keisha_city_nm, keisha_oaztsu_nm, keisha_azcho_nm, keisha_ad_bnchigo, keisha_adrttm, keisha_adrrm)
10. Invoice & place info (seiky_kei_no, place_no)
11. Installation address (setplace_ad_cd through setplace_adrrm)
12. Pre/post move & location data (koji_saki_ad_mi_fix_flg, kaisen_place_telno, kepco_busioffice_no, lgtd, lttd, zahyo_hosei_um, ad_form_cd, nyukyo_flr_cnt_cd, kcku_flr_cnt_cd, direction_cd_1/2)
13. Relocation addresses (tentaku_bf_ad_cd through tentaku_bf_adrrm; tentaku_saki_ad_cd through tentaku_saki_adrrm)
14. Building & equipment flags (newconst_bukken_cd, hukkat_anken_flg, same_equip_re_mskm_cd, opsvkei_hktgi_flg)
15. Scope & scheduling (koji_scope_cd, isetsu_cd, various ymd dates, tel_rrk_kibo_time_cd, takcho/tnkj kibo apo kigen, koji_apo_rrks_shitei_cd)
16. Communication & remarks (rrk_way_cd, rrk_way_hoki, kojiak_biko/1/2)
17. Additional flags (dmpsank_sbt_cd, kepco_ctinfo_juju_doi_um, cust_sos_use_um, family_kei_flg, bmp_doji_kj_kibo_um)
18. Phone & portability data for up to 3 lines (bmp_um_1/2/3, eoh_tel_no_1/2/3, chgb_bmp_um_1/2/3, etc.)
19. Home device specs for items 1–20 (taknkiki_sbt_cd_N, kktk_svc_kei_no_N, taknkiki_model_cd_N, kkseizo_no_N, macad_N, router_kind_cd_N, tk_sbt_cd_N, chgb_taknikk_model_cd_N, chgb_kkseizo_no_N, chgb_macad_N, chgb_router_kind_cd_N, chgb_tk_sbt_cd_N)
20. Extra null-initialized fields (MSKMSHA_NM, KOJI_APO_RRKS_TELNO, TAKNKIKI_IDO_CD_1–20, KIKI_CHG_NO_1–20, MOTO_TCASE_NO_1–20)

## 3. Parameter Analysis

| No | Parameter Name | Type | Business Description |
|----|---------------|------|---------------------|
| 1 | `param` | `IRequestParameterReadWrite` | The request parameter interface carrying the current screen context, control data (operator ID, operation date/time), and work mapping area. It provides access to the work area detail number and is the target for setting the result template list. |
| 2 | `dataMap` | `Map<String, Object>` | The data map holding screen-specific context values including the function code (FUNC_CODE_KEY) that determines which screen operation is being performed. |
| 3 | `childMap` | `HashMap<String, Object>` | The child data map containing all form field values submitted by the EKU0021C010 screen. Contains ~200 string fields for construction case info, customer data, addresses, scheduling, home devices, and optional service flags. Empty strings (`""`) indicate unfilled fields. |

**Instance fields / external state read:**
- `JCMConstants.TEMPLATE_LIST_KEY` — key for storing the template array in the result map
- `JCMConstants.FUNC_CODE_KEY` — key for retrieving the function code from dataMap
- `JCMConstants.OPERATOR_ID_KEY`, `JCMConstants.OPERATE_DATE_KEY`, `JCMConstants.OPERATE_DATETIME_KEY` — keys for operator and date metadata
- `SCControlMapKeys.OPERATOR_ID`, `SCControlMapKeys.OPE_DATE`, `SCControlMapKeys.OPE_TIME` — control map keys for extracting session data
- `EKU0021C010CBSMsg.*` — message field constants used as template column identifiers
- `TEMPLATE_ID_EKU0021C010` — template identifier constant for the EKU0021C010 message
- The `editInMsg(param)` method — called internally to initialize the paramMap

## 4. CRUD Operations / Called Services

This method performs **no direct database operations** or external service calls. It is a pure message-building (transformation) method. The only service/component method it calls is the parent `editInMsg()` to initialize the parameter map. All field population is done in-memory via `template.set()` / `template.setNull()`.

| CRUD | SC / CBS | SC Code | Entity / DB | Operation Description |
|------|----------|---------|-------------|----------------------|
| - | `editInMsg` | - | - | Calls `editInMsg(param)` to initialize the paramMap with common field settings (no I/O, pure initialization) |

**Note:** No C/R/U/D operations against database tables are performed by this method. The data flow is entirely in-memory: fields from `childMap` are read and written to the `CAANMsg` template.

## 5. Dependency Trace

| # | Caller (Screen/Batch) | Call Chain (Full Path to this Method) | Terminal (SC / CRUD / Entity) |
|---|----------------------|--------------------------------------|-------------------------------|
| 1 | Method: `JKKSeikySakiHeigoCC.execEKU0021C010()` | `execEKU0021C010()` → `editInMsg_EKU0021C010()` | `editInMsg [SET] paramMap` |

**Terminal operations from this method:** The method terminates by writing to the result `paramMap` via `map.put(JCMConstants.TEMPLATE_LIST_KEY, templates)`. All `set()` and `setNull()` calls operate on the in-memory `CAANMsg` template object. No external side effects.

## 6. Per-Branch Detail Blocks

**Block 1** — SET (common area initialization) (L2951)

The method begins by calling `editInMsg(param)` to create and initialize the parent `paramMap`, then creates the CAANMsg template with the EKU0021C010CBSMsg class and sets the template ID, function code, and operator/date metadata.

| # | Type | Code | Business Description |
|---|------|------|---------------------|
| 1 | CALL | `HashMap<String, Object> paramMap = editInMsg(param);` | Initialize paramMap with common field settings |
| 2 | SET | `CAANMsg template = new CAANMsg(EKU0021C010CBSMsg.class.getName());` | Create new message template for EKU0021C010CBSMsg |
| 3 | SET | `template.set(EKU0021C010CBSMsg.TEMPLATEID, TEMPLATE_ID_EKU0021C010);` | Set template identifier |
| 4 | SET | `template.set(EKU0021C010CBSMsg.FUNC_CODE, "1");` | Set default function code |
| 5 | EXEC | `Object operatorId = param.getControlMapData(SCControlMapKeys.OPERATOR_ID);` | Extract operator ID from control map |
| 6 | SET | `template.set(JCMConstants.OPERATOR_ID_KEY, operatorId);` | Set operator ID on template |
| 7 | EXEC | `Object operateDate = param.getControlMapData(SCControlMapKeys.OPE_DATE);` | Extract operation date |
| 8 | SET | `template.set(JCMConstants.OPERATE_DATE_KEY, operateDate);` | Set operation date on template |
| 9 | EXEC | `Object operateDateTime = param.getControlMapData(SCControlMapKeys.OPE_TIME);` | Extract operation datetime |
| 10 | SET | `template.set(JCMConstants.OPERATE_DATETIME_KEY, operateDateTime);` | Set operation datetime on template |

**Block 2** — IF/ELSE (work area detail number extraction) (L2966)

Extracts the work detail number (MSKM_DTL_NO) from the work mapping area `KKSV054601SCWORK`. This is the screen's work area tracking field.

| # | Type | Code | Business Description |
|---|------|------|---------------------|
| 1 | SET | `Map<Object, Object> workMap = param.getMappingWorkArea();` | Retrieve work mapping area |
| 2 | SET | `HashMap<String,ArrayList> map = (HashMap<String,ArrayList>)workMap.get("KKSV054601SCWORK");` | Get work area map by key |
| 3 | IF | `if(map == null)` | Check if work area map exists |

**Block 2.1** — ELSE (work area map exists) (L2969)

| # | Type | Code | Business Description |
|---|------|------|---------------------|
| 1 | SET | `ArrayList<HashMap<String,String>> workList = (ArrayList<HashMap<String,String>>)map.get("KKSV054601SCWORKLIST");` | Get the work list from map |
| 2 | IF | `if(workList != null && workList.size() != 0)` | Check if work list has entries |

**Block 2.1.1** — ELSE IF (work list is non-empty) (L2975)

| # | Type | Code | Business Description |
|---|------|------|---------------------|
| 1 | SET | `HashMap reMap = (HashMap)workList.get(0);` | Get first work list entry |
| 2 | SET | `meisai = (String)reMap.get("mskm_dtl_no");` | Extract detail number |
| 3 | IF | `if (meisai == null || "".equals(meisai))` | Check if detail number is empty |

**Block 2.1.1.1** — ELSE IF (detail number is empty)

| # | Type | Code | Business Description |
|---|------|------|---------------------|
| 1 | SET | `template.setNull(EKU0021C010CBSMsg.MSKM_DTL_NO);` | Set detail number to null |

**Block 2.1.1.2** — ELSE (detail number has value)

| # | Type | Code | Business Description |
|---|------|------|---------------------|
| 1 | SET | `template.set(EKU0021C010CBSMsg.MSKM_DTL_NO, meisai);` | Set detail number value |

**Block 2.1.2** — ELSE (work list is empty or null)

| # | Type | Code | Business Description |
|---|------|------|---------------------|
| 1 | SET | `template.setNull(EKU0021C010CBSMsg.MSKM_DTL_NO);` | Set detail number to null |

**Block 2.2** — ELSE (work area map is null)

| # | Type | Code | Business Description |
|---|------|------|---------------------|
| 1 | SET | `template.setNull(EKU0021C010CBSMsg.MSKM_DTL_NO);` | Set detail number to null |

**Block 3** — SET (function code override) (L2990)

Overrides the previously set function code with the value from dataMap.

| # | Type | Code | Business Description |
|---|------|------|---------------------|
| 1 | SET | `template.set(EKU0021C010CBSMsg.FUNC_CODE, dataMap.get(JCMConstants.FUNC_CODE_KEY));` | Override function code from dataMap |

**Block 4** — IF/ELSE (200+ field mappings from childMap to template) (L2993–L5528)

This is the core of the method. Every field follows the identical pattern: check if the childMap value equals `""` (empty string); if empty, call `template.setNull(field)`, otherwise call `template.set(field, value)`. The fields are processed in these logical groups:

| # | Type | Code | Business Description |
|---|------|------|---------------------|
| 1 | IF/ELSE | `if ("".equals(childMap.get("svc_kei_no")))` | Service contract number — check empty then set or null |
| 2 | IF/ELSE | `if ("".equals(childMap.get("svc_kei_kaisen_ucwk_no")))` | Service contract modification detail work number |
| 3 | IF/ELSE | `if ("".equals(childMap.get("kojiak_no")))` | Construction case number |
| 4 | IF/ELSE | `if ("".equals(childMap.get("koji_uk_cd")))` | Construction assignment code |
| 5 | IF/ELSE | `if ("".equals(childMap.get("koji_uk_dtail_cd")))` | Construction assignment detail code |
| 6 | IF/ELSE | `if ("".equals(childMap.get("koji_uk_optnty_ido_dtm")))` | Construction assignment contract change datetime |
| 7 | IF/ELSE | `if ("".equals(childMap.get("svc_cd")))` | Service code |
| 8 | IF/ELSE | `if ("".equals(childMap.get("prc_grp_cd")))` | Price group code |
| 9 | IF/ELSE | `if ("".equals(childMap.get("pcrs_cd")))` | Price course code |
| 10 | IF/ELSE | `if ("".equals(childMap.get("pplan_cd")))` | Price plan code |
| 11 | IF/ELSE | `if ("".equals(childMap.get("wrib_type_cd")))` | Discount type code |
| 12 | IF/ELSE | `if ("".equals(childMap.get("plan_chg_fix_ymd")))` | Plan change fix date |
| 13 | IF/ELSE | `if ("".equals(childMap.get("ad_chg_fix_dtm")))` | Address change completion datetime |
| 14 | IF/ELSE | `if ("".equals(childMap.get("menkaihat_anken_no")))` | Developer construction case number |
| 15 | IF/ELSE | `if ("".equals(childMap.get("mnkht_koji_cd")))` | Developer construction code |
| 16 | IF/ELSE | `if ("".equals(childMap.get("pon_skbt_cd")))` | PON identification code |
| 17 | IF/ELSE | `if ("".equals(childMap.get("sysid")))` | SYSID |
| 18 | IF/ELSE | `if ("".equals(childMap.get("cust_nm")))` | Customer name |
| 19 | IF/ELSE | `if ("".equals(childMap.get("cust_kana")))` | Customer kana name |
| 20 | IF/ELSE | `if ("".equals(childMap.get("cust_home_tel_no")))` | Customer home phone number |
| 21 | IF/ELSE | `if ("".equals(childMap.get("cust_ktai_tel_no")))` | Customer mobile phone number |
| 22 | IF/ELSE | `if ("".equals(childMap.get("cust_rrks_tel_no")))` | Customer contact phone number |
| 23 | IF/ELSE | `if ("".equals(childMap.get("rrks_offc_nm")))` | Contact business name |
| 24 | IF/ELSE | `if ("".equals(childMap.get("keisha_ad_cd")))` | Contractor address code |
| 25 | IF/ELSE | `if ("".equals(childMap.get("keisha_pcd")))` | Contractor postal code |
| 26 | IF/ELSE | `if ("".equals(childMap.get("keisha_state_nm")))` | Contractor prefecture name |
| 27 | IF/ELSE | `if ("".equals(childMap.get("keisha_city_nm")))` | Contractor city/town/village name |
| 28 | IF/ELSE | `if ("".equals(childMap.get("keisha_oaztsu_nm")))` | Contractor district/main street name |
| 29 | IF/ELSE | `if ("".equals(childMap.get("keisha_azcho_nm")))` | Contractor block/chome name |
| 30 | IF/ELSE | `if ("".equals(childMap.get("keisha_ad_bnchigo")))` | Contractor address lot number |
| 31 | IF/ELSE | `if ("".equals(childMap.get("keisha_adrttm")))` | Contractor address supplement building name |
| 32 | IF/ELSE | `if ("".equals(childMap.get("keisha_adrrm")))` | Contractor address supplement room number |
| 33 | IF/ELSE | `if ("".equals(childMap.get("seiky_kei_no")))` | Invoice contract number |
| 34 | IF/ELSE | `if ("".equals(childMap.get("place_no")))` | Place number |
| 35 | IF/ELSE | `if ("".equals(childMap.get("setplace_ad_cd")))` | Installation address code |
| 36 | IF/ELSE | `if ("".equals(childMap.get("setplace_pcd")))` | Installation postal code |
| 37 | IF/ELSE | `if ("".equals(childMap.get("setplace_state_nm")))` | Installation prefecture name |
| 38 | IF/ELSE | `if ("".equals(childMap.get("setplace_city_nm")))` | Installation city/town/village name |
| 39 | IF/ELSE | `if ("".equals(childMap.get("setplace_oaztsu_nm")))` | Installation district/main street name |
| 40 | IF/ELSE | `if ("".equals(childMap.get("setplace_azcho_nm")))` | Installation block/chome name |
| 41 | IF/ELSE | `if ("".equals(childMap.get("setplace_ad_bnchigo")))` | Installation address lot number |
| 42 | IF/ELSE | `if ("".equals(childMap.get("setplace_adrttm")))` | Installation address supplement building name |
| 43 | IF/ELSE | `if ("".equals(childMap.get("setplace_adrrm")))` | Installation address supplement room number |
| 44 | IF/ELSE | `if ("".equals(childMap.get("koji_saki_ad_mi_fix_flg")))` | Pre-move address unconfirmed flag |
| 45 | IF/ELSE | `if ("".equals(childMap.get("kaisen_place_telno")))` | Modification place phone number |
| 46 | IF/ELSE | `if ("".equals(childMap.get("kepco_busioffice_no")))` | KEPCO business office number |
| 47 | IF/ELSE | `if ("".equals(childMap.get("lgtd")))` | Longitude |
| 48 | IF/ELSE | `if ("".equals(childMap.get("lttd")))` | Latitude |
| 49 | IF/ELSE | `if ("".equals(childMap.get("zahyo_hosei_um")))` | Coordinate correction flag |
| 50 | IF/ELSE | `if ("".equals(childMap.get("ad_form_cd")))` | Address form code |
| 51 | IF/ELSE | `if ("".equals(childMap.get("nyukyo_flr_cnt_cd")))` | Move-in floor count code |
| 52 | IF/ELSE | `if ("".equals(childMap.get("kcku_flr_cnt_cd")))` | Building floor count code |
| 53 | IF/ELSE | `if ("".equals(childMap.get("direction_cd_1")))` | Direction code 1 |
| 54 | IF/ELSE | `if ("".equals(childMap.get("direction_cd_2")))` | Direction code 2 |
| 55–76 | IF/ELSE | (22 relocation address fields) | Before-relocation and after-relocation addresses (each with 11 sub-fields: ad_cd, pcd, state_nm, city_nm, oaztsu_nm, azcho_nm, ad_bnchigo, adrttm, adrrm) |
| 77 | IF/ELSE | `if ("".equals(childMap.get("newconst_bukken_cd")))` | New construction case code |
| 78 | IF/ELSE | `if ("".equals(childMap.get("hukkat_anken_flg")))` | Reactivation case flag |
| 79 | IF/ELSE | `if ("".equals(childMap.get("same_equip_re_mskm_cd")))` | Same equipment re-order code |
| 80 | IF/ELSE | `if ("".equals(childMap.get("opsvkei_hktgi_flg")))` | Optional service contract succession flag |
| 81 | IF/ELSE | `if ("".equals(childMap.get("koji_scope_cd")))` | Construction scope code |
| 82 | IF/ELSE | `if ("".equals(childMap.get("isetsu_cd")))` | Relocation code |
| 83–95 | IF/ELSE | (13 scheduling date fields) | Construction desired date, cancellation desired date, completion scheduled date, move-in scheduled date, handover scheduled date, power supply scheduled date, contact desired date/time |
| 96–97 | IF/ELSE | (2 in-home inspection fields) | In-home inspection desired application deadline, in-home work desired application deadline |
| 98 | IF/ELSE | `if ("".equals(childMap.get("koji_apo_rrks_shitei_cd")))` | Construction application contact designation code |
| 99–100 | IF/ELSE | (2 communication method fields) | Communication method code, communication method supplement |
| 101–103 | IF/ELSE | (3 remarks fields) | Construction case remarks, remarks 1, remarks 2 |
| 104 | IF/ELSE | `if ("".equals(childMap.get("dmpsank_sbt_cd")))` | Radio interference case type code |
| 105 | IF/ELSE | `if ("".equals(childMap.get("kepco_ctinfo_juju_doi_um")))` | KEPCO customer data acceptance consent flag |
| 106 | IF/ELSE | `if ("".equals(childMap.get("cust_sos_use_um")))` | Customer SOS usage flag |
| 107 | IF/ELSE | `if ("".equals(childMap.get("family_kei_flg")))` | Family contract flag |
| 108 | IF/ELSE | `if ("".equals(childMap.get("bmp_doji_kj_kibo_um")))` | Port simultaneous construction desired flag |
| 109–165 | IF/ELSE | (57 portability/phone fields across 3 lines) | Portability flag, eo light phone number, port scheduled date, original carrier code, pre-change portability flag, pre-change phone number, pre-change port scheduled date, pre-change original carrier code — repeated for lines 1, 2, and 3 |
| 166–476 | IF/ELSE | (311 home device fields across 20 items) | For each home device item 1–20: device type code, device service contract number, device model code, device serial number, MAC address, router type code, provider type code, pre-change device model code, pre-change serial number, pre-change MAC address, pre-change router type code, pre-change provider type code |

**Block 5** — SET (extra null-initialized fields) (L5523–L5557)

After all childMap fields are processed, several additional fields are explicitly set to null. These fields are not populated from the screen input.

| # | Type | Code | Business Description |
|---|------|------|---------------------|
| 1 | SET | `template.setNull(EKU0021C010CBSMsg.MSKMSHA_NM);` | Applicant name (null) |
| 2 | SET | `template.setNull(EKU0021C010CBSMsg.KOJI_APO_RRKS_TELNO);` | Construction application contact phone number (null) |
| 3 | SET | `template.setNull(EKU0021C010CBSMsg.TAKNKIKI_IDO_CD_1..20);` | Home device change codes 1–20 (null) |
| 4 | SET | `template.setNull(EKU0021C010CBSMsg.KIKI_CHG_NO_1..20);` | Device change numbers 1–20 (null) |
| 5 | SET | `template.setNull(EKU0021C010CBSMsg.MOTO_TCASE_NO_1..20);` | Original temporary case numbers 1–20 (null) |

**Block 6** — RETURN (L5556)

| # | Type | Code | Business Description |
|---|------|------|---------------------|
| 1 | SET | `CAANMsg[] templates = new CAANMsg[1];` | Create template array |
| 2 | SET | `templates[0] = template;` | Assign template to array |
| 3 | SET | `paramMap.put(JCMConstants.TEMPLATE_LIST_KEY, templates);` | Store template list in paramMap |
| 4 | RETURN | `return paramMap;` | Return the complete paramMap with template |

## 7. Glossary

| Term | Type | Business Meaning |
|------|------|------------------|
| `svc_kei_no` | Field | Service contract number — the primary identifier for a service contract line item |
| `svc_kei_kaisen_ucwk_no` | Field | Service contract modification detail work number — internal tracking ID for service contract changes |
| `kojiak_no` | Field | Construction case number — unique identifier for the construction case record |
| `koji_uk_cd` | Field | Construction assignment code — classifies the type of construction assignment |
| `koji_uk_dtail_cd` | Field | Construction assignment detail code — further classifies the assignment type |
| `koji_uk_optnty_ido_dtm` | Field | Construction assignment contract change datetime — timestamp of contract change |
| `svc_cd` | Field | Service code — identifies the service type (e.g., eo Light Network / FTTH) |
| `prc_grp_cd` | Field | Price group code — pricing category for the service |
| `pcrs_cd` | Field | Price course code — price plan/course identifier |
| `pplan_cd` | Field | Price plan code — specific pricing plan |
| `wrib_type_cd` | Field | Discount type code — type of discount applied |
| `plan_chg_fix_ymd` | Field | Plan change fix date — date when plan changes take effect |
| `ad_chg_fix_dtm` | Field | Address change completion datetime — datetime when address change is finalized |
| `menkaihat_anken_no` | Field | Developer construction case number — identifier for developer bulk construction cases |
| `mnkht_koji_cd` | Field | Developer construction code — type of developer construction work |
| `pon_skbt_cd` | Field | PON identification code — Passive Optical Network identifier |
| `cust_nm` | Field | Customer name — the customer's legal or registered name |
| `cust_kana` | Field | Customer kana name — phonetic name in Japanese Kana script |
| `cust_home_tel_no` | Field | Customer home phone number |
| `cust_ktai_tel_no` | Field | Customer mobile phone number (ktai = 携帯電話) |
| `cust_rrks_tel_no` | Field | Customer contact phone number (rrks = 連絡) |
| `keisha_*` | Field group | Contractor information fields (keisha = 契約者) — address, postal code, prefecture, city, district, block, lot, building, room |
| `seiky_kei_no` | Field | Invoice contract number — contract number on the invoice |
| `setplace_*` | Field group | Installation address fields — address details at the installation location |
| `koji_saki_ad_mi_fix_flg` | Field | Pre-move address unconfirmed flag — indicates if the pre-move address is not yet finalized |
| `lgtd` | Field | Longitude (経度) — geographic longitude coordinate |
| `lttd` | Field | Latitude (緯度) — geographic latitude coordinate |
| `zahyo_hosei_um` | Field | Coordinate correction flag — whether coordinates have been corrected |
| `ad_form_cd` | Field | Address form code — type of address format |
| `nyukyo_flr_cnt_cd` | Field | Move-in floor count code — number of floors at move-in location |
| `kcku_flr_cnt_cd` | Field | Building floor count code — total floors in the building |
| `direction_cd_1/2` | Field | Direction code 1/2 — compass direction codes |
| `tentaku_bf_*` / `tentaku_saki_*` | Field groups | Before-relocation (tentaku_bf) and after-relocation (tentaku_saki) address fields — tentaku = 転居 (relocation) |
| `newconst_bukken_cd` | Field | New construction case code — indicates new building construction |
| `hukkat_anken_flg` | Field | Reactivation case flag — whether this is a service reactivation case (hukkatu = 復活) |
| `same_equip_re_mskm_cd` | Field | Same equipment re-order code — reuse of same equipment code |
| `opsvkei_hktgi_flg` | Field | Optional service contract succession flag — whether optional service contracts are carried over |
| `koji_scope_cd` | Field | Construction scope code — scope of construction work |
| `isetsu_cd` | Field | Relocation code — type of relocation (isetsu = 移設) |
| `koji_kibo_ymd` | Field | Construction desired date — requested construction date |
| `dsl_kibo_ymd` | Field | Cancellation desired date (dsl = dissolution/cancellation) |
| `shunko_rsv_ymd` | Field | Completion scheduled date (shunko = 竣工) |
| `nyukyo_rsv_ymd` | Field | Move-in scheduled date (nyukyo = 入居) |
| `hikiwatashi_rsv_ymd` | Field | Handover scheduled date (hikiwatashi = 引渡し) |
| `epower_soden_rsv_ymd` | Field | Power supply scheduled date (soden = 送電) |
| `tel_rrk_kibo_ymd` | Field | Contact desired date (rrk = 連絡) |
| `tel_rrk_kibo_time_cd` | Field | Contact desired time slot code |
| `takcho_kibo_apo_kigen_ymd` | Field | In-home inspection desired application deadline (takcho = 宅調, apo = 申請, kigen = 期限) |
| `tnkj_kibo_apo_kigen_ymd` | Field | In-home work desired application deadline (tnkj = 住宅工事) |
| `koji_apo_rrks_shitei_cd` | Field | Construction application contact designation code |
| `rrk_way_cd` | Field | Communication method code (rrk = 連絡) |
| `rrk_way_hoki` | Field | Communication method supplement |
| `kojiak_biko[12]` | Field | Construction case remarks (biko = 備考) |
| `dmpsank_sbt_cd` | Field | Radio interference case type code (dmpsank = 電波障害) |
| `kepco_ctinfo_juju_doi_um` | Field | KEPCO customer data acceptance consent flag (kepco = 関西電力) |
| `cust_sos_use_um` | Field | Customer SOS usage flag |
| `family_kei_flg` | Field | Family contract flag (kei = 計) |
| `bmp_doji_kj_kibo_um` | Field | Port simultaneous construction desired flag (bmp = 番ポ = 番号同時工事) |
| `bmp_um_N` | Field | Portability flag for line N (bmp = 番ポ, um = 有无) |
| `eoh_tel_no_N` | Field | eo Light phone number for line N (eoh = eo光) |
| `bmp_rsv_ymd_N` | Field | Port reservation date for line N |
| `bmp_moto_tushin_jgs_cd_N` | Field | Original carrier code for portability on line N (moto = 元, tushin = 通信, jgs = 事業者) |
| `chgb_bmp_um_N` | Field | Pre-change portability flag for line N (chgb = 変更前) |
| `chgb_eoh_tel_no_N` | Field | Pre-change eo Light phone number for line N |
| `chgb_bmp_rsv_ymd_N` | Field | Pre-change port reservation date for line N |
| `chgb_bmp_moto_tushin_jgs_cd_N` | Field | Pre-change original carrier code for line N |
| `taknkiki_sbt_cd_N` | Field | Home device type code for item N (taknkiki = 宅内機器) |
| `kktk_svc_kei_no_N` | Field | Device service contract number for item N (kktk = 機器提供) |
| `taknkiki_model_cd_N` | Field | Home device model code for item N |
| `kkseizo_no_N` | Field | Device serial/manufacturing number for item N (kkseizo = 機器製造) |
| `macad_N` | Field | MAC address for item N |
| `router_kind_cd_N` | Field | Router type code for item N |
| `tk_sbt_cd_N` | Field | Provider type code for item N (tk = 提供) |
| `chgb_taknikk_model_cd_N` | Field | Pre-change home device model code for item N |
| `chgb_kkseizo_no_N` | Field | Pre-change device serial number for item N |
| `chgb_macad_N` | Field | Pre-change MAC address for item N |
| `chgb_router_kind_cd_N` | Field | Pre-change router type code for item N |
| `chgb_tk_sbt_cd_N` | Field | Pre-change provider type code for item N |
| `MSKM_DTL_NO` | Field | Work detail number — internal work area tracking detail number (mskm = 作業項目) |
| `MSKMSHA_NM` | Field | Applicant name (musksha = 申述者) |
| `KOJI_APO_RRKS_TELNO` | Field | Construction application contact phone number |
| `TAKNKIKI_IDO_CD_N` | Field | Home device change code for item N (ido = 異動) |
| `KIKI_CHG_NO_N` | Field | Device change number for item N |
| `MOTO_TCASE_NO_N` | Field | Original temporary case number for item N (moto = 元, tcase = 仮ケース) |
| CAANMsg | Class | Message template class used for structuring inbound/outbound data between screens and CBS layers |
| EKU0021C010 | Screen Code | eo Light Network Construction Case Modifications screen |
| eo光ネット (eo Light Network) | Business term | NTT West's fiber-optic broadband service brand (FTTH service) |
| FTTH | Business term | Fiber To The Home — fiber-optic broadband connection technology |
| PON | Business term | Passive Optical Network — fiber-to-the-home architecture using unpowered splitters |
| KEPCO | Business term | Kansai Electric Power Company (関西電力) — regional utility company in western Japan |
| CBS | Acronym | Central Business System — enterprise business processing system |
| SC | Acronym | Service Component — a service component class that encapsulates business logic |
| CC | Acronym | Common Component — shared component classes in the framework |
| MAP | Acronym | Maintenance And Program (in screen code naming) |
| 工事案件 (Koji Anketsu) | Japanese | Construction case / work order — a work order for physical construction/installation work |
| 諸変更 (Morohenkou) | Japanese | Miscellaneous changes — a category of contract modifications |
| 作業項目 (Sagyou Itemu) | Japanese | Work item / work area detail — tracking detail for work area operations |
| 工事項番 | Japanese | Construction case number — the case ID for construction orders |
| 工事受払 | Japanese | Construction assignment — assignment of construction work to contractors |
| 転居 (Tenkyo) | Japanese | Relocation — moving from one address to another |
| 転居前/後 | Japanese | Before/after relocation addresses |
| 工事範囲 | Japanese | Construction scope — defines the boundaries of construction work |
| 移設 (Isetsu) | Japanese | Relocation of equipment — moving existing equipment to a new location |
| 竣工 | Japanese | Completion — construction work completion |
| 入居 | Japanese | Move-in — customer occupation of the premises |
| 引渡し | Japanese | Handover — delivery of completed construction to the customer |
| 送電 | Japanese | Power supply — electrical power activation |
| 宅内機器 | Japanese | Home interior equipment — devices installed inside the customer premises (e.g., routers, ONTs) |
| 機器提供 | Japanese | Device provision/service — equipment provided as part of a service contract |
| 変更前 (Henkou Mae) | Japanese | Pre-change — the state of a field before modification |
| 電波障害 (Denpa Shougai) | Japanese | Radio interference — issues related to wireless signal interference |
| 番ポ (Banpo) | Abbr. | Number portability — keeping the same phone number when changing carriers |
| 契約者 (Keishasha) | Japanese | Contractor / contracting party — the person who signed the service contract |
| 申述者 (Shoutsusha) | Japanese | Applicant — the person who submitted the request |
| 備考 (Biko) | Japanese | Remarks / notes |
| 番号同時工事 | Japanese | Simultaneous number portability construction — construction performed at the same time as number portability |
| 復活案件 | Japanese | Reactivation case — re-activating a previously terminated service |
