# Business Logic — JKKSeikyKeiBunkatsuCC.editInMsg_EKU0061C010() [2682 LOC]

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

## 1. Role

### JKKSeikyKeiBunkatsuCC.editInMsg_EKU0061C010()

This method builds the **input message (CAANMsg)** for the "Construction Project <eo Optical Net Mansion> Various Changes" service — a telecom service that handles modification requests for FTTH (Fiber To The Home) subscriptions in multi-unit residential buildings (mansions). It acts as a **message builder** following the Template + Data Copy pattern: it initializes a `CAANMsg` template using `EKU0061C010CBSMsg` constants, populates it with approximately 130 fields extracted from the `childMap` parameter, and returns the prepared `paramMap` for downstream CBS (Component Batch Service) invocation.

The method handles two distinct business contexts based on the **service contract status code** (`stateCd`): when the status is "010" (Received/Receipt), it uses the child map's detail number directly; otherwise, it resolves the detail number from a separate list stored in the data map. It also has special handling for **confirmation mode** (`funcCd = "2"`), where it overrides the settlement contract number from the child map to prevent IF item check failures. The method delegates common setup (operator info, dates, common header fields) to `editInMsg(param)` and then enriches the result with the domain-specific fields unique to the eo Optical Net Mansion changes screen.

## 2. Processing Pattern (Detailed Business Logic)

```mermaid
flowchart TD
    START(["editInMsg_EKU0061C010"])
    
    START --> INIT["Setup: editInMsg, CAANMsg template, operator info"]
    INIT --> WORK["Get workMap from param"]
    WORK --> SEIKY["Set SEIKY_KEI_NO from dataMap"]
    
    SEIKY --> STATE["Get stateCd from childMap"]
    STATE --> STATE_CHK{stateCd equals 010}
    
    STATE_CHK -->|Yes: Receipt| RECEIPT["Set MSKM_DTL_NO from childMap"]
    STATE_CHK -->|No| LIST_CHK{meisaiList null or empty}
    
    RECEIPT --> FUNC["Get funcCd from dataMap"]
    LIST_CHK -->|Yes| CLEAR_MSKM["Set MSKM_DTL_NO to null"]
    LIST_CHK -->|No| FIRST_ITEM["Get first item from meisaiList"]
    
    CLEAR_MSKM --> FUNC
    FIRST_ITEM --> MEISAI_CHK{meisai null or empty}
    
    MEISAI_CHK -->|Yes| CLEAR_MSKM2["Set MSKM_DTL_NO to null"]
    MEISAI_CHK -->|No| SET_MSKM["Set MSKM_DTL_NO from meisai"]
    
    SET_MSKM --> FUNC
    CLEAR_MSKM2 --> FUNC
    
    FUNC --> FUNC_CHK{funcCd equals 2}
    
    FUNC_CHK -->|Yes: Confirmation| CONFIRM_SET["Set SEIKY_KEI_NO from childMap"]
    FUNC_CHK -->|No| FUNC_NO_SET["Set SEIKY_KEI_NO from dataMap"]
    
    CONFIRM_SET --> FIELD_COPY
    FUNC_NO_SET --> FIELD_COPY
    
    FIELD_COPY["Copy ~130 fields: childMap to template"]
    FIELD_COPY --> CLEAR_HOT["Clear TAKNKIKI_IDO_CD 1-20"]
    CLEAR_HOT --> CLEAR_KIKI["Clear KIKI_CHG_NO 1-20"]
    CLEAR_KIKI --> CLEAR_TCASE["Clear MOTO_TCASE_NO 1-20"]
    CLEAR_TCASE --> FINAL["Put template into TEMPLATE_LIST_KEY"]
    FINAL --> RETURN(["return paramMap"])
```

## 3. Parameter Analysis

| No | Parameter Name | Type | Business Description |
|----|---------------|------|---------------------|
| 1 | `param` | `IRequestParameterReadWrite` | The request parameter holder carrying control map data (operator ID, operation date, operation time) and the work mapping area. It acts as the central data exchange object between the screen layer and the business logic layer. |
| 2 | `dataMap` | `Map<String, Object>` | The main request data map containing business-level data such as `ekk0491d010_seiky_kei_no_work` (settlement contract number work), `KKSV054601SCWORKLIST` (detail line items list for non-received status), and `FUNC_CODE_KEY` (function code determining screen mode — e.g., "2" for confirmation). |
| 3 | `childMap` | `HashMap<String, Object>` | The child/detail data map containing approximately 130+ domain-specific fields for the eo Optical Net Mansion changes request: service contract numbers, construction project info, pricing codes, customer contact details, addresses (contractor and installation), relocation addresses, and up to 20 indoor device records (model codes, serial numbers, MAC addresses, router codes). |

## 4. CRUD Operations / Called Services

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

| CRUD | SC / CBS | SC Code | Entity / DB | Operation Description |
|------|----------|---------|-------------|----------------------|
| U | `JKKSeikyKeiBunkatsuCC.editInMsg` | JKKSeikyKeiBunkatsuCC | - | Calls `editInMsg(param)` to set up common header fields (operator ID, operate date/time, functional code) in the parameter map |
| R | `SCW00701SFLogic.getName` | SCW00701SFLogic | - | Calls `getName` in `SCW00701SFLogic` |
| U | `JKKKapKeiInfoCancelCC.setNull` | JKKKapKeiInfoCancelCC | - | Calls `setNull` in `JKKKapKeiInfoCancelCC` |
| U | `JKKKikiModelKappuInfoCC.setNull` | JKKKikiModelKappuInfoCC | - | Calls `setNull` in `JKKKikiModelKappuInfoCC` |
| U | `JKKKisnUwHmdkAddCC.setNull` | JKKKisnUwHmdkAddCC | - | Calls `setNull` in `JKKKisnUwHmdkAddCC` |
| U | `JKKMvnoSvcKeiStaAddCC.setNull` | JKKMvnoSvcKeiStaAddCC | - | Calls `setNull` in `JKKMvnoSvcKeiStaAddCC` |

This method is primarily a **message builder (U - Update/Write)**. It populates a `CAANMsg` template with field values — each `template.set(...)` or `template.setNull(...)` is an update to the message structure. No direct entity-level Read/Insert operations occur within this method.

## 5. Dependency Trace

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

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

| # | Caller (Screen/Batch) | Call Chain (Full Path to this Method) | Terminal (SC / CRUD / Entity) |
|---|----------------------|--------------------------------------|-------------------------------|
| 1 | CBS: `JKKSeikyKeiBunkatsuCC` | `execEKU0061C010` -> `editInMsg_EKU0061C010` | `editInMsg [U] JKKSeikyKeiBunkatsuCC` |

**Caller Analysis:**
- `JKKSeikyKeiBunkatsuCC.execEKU0061C010(SessionHandle, param, scCall, dataMap, childMap)` — This is the CBS-level orchestrator method. It calls `editInMsg_EKU0061C010` to build the input message, then invokes `scCall.run(paramMap, handle)` (the actual CBS call for Service Agreement Consensus), and finally calls `editOutMsg_EKU0061C010` for output mapping and `jdgErrRslt` for result judgment.

## 6. Per-Branch Detail Blocks

**Block 1** — [EXEC] `editInMsg(param)` (L14362)

> Initializes the common domain setup by calling the shared editInMsg method, which sets standard header information into the paramMap.

| # | Type | Code |
|---|------|------|
| 1 | SET | `paramMap = editInMsg(param);` // Common domain initialization (共通領域の設定) |
| 2 | EXEC | `template = new CAANMsg(EKU0061C010CBSMsg.class.getName());` // Creates message template |
| 3 | SET | `template.set(EKU0061C010CBSMsg.TEMPLATEID, TEMPLATE_ID_EKU0061C010);` // Template ID (テンプレートID) |
| 4 | SET | `template.set(EKU0061C010CBSMsg.FUNC_CODE, "1");` // Default function code |
| 5 | SET | `operatorId = param.getControlMapData(SCControlMapKeys.OPERATOR_ID);` // Operator ID (オペレータID) |
| 6 | SET | `template.set(JCMConstants.OPERATOR_ID_KEY, operatorId);` |
| 7 | SET | `operateDate = param.getControlMapData(SCControlMapKeys.OPE_DATE);` // Operate date (運用日付) |
| 8 | SET | `template.set(JCMConstants.OPERATE_DATE_KEY, operateDate);` |
| 9 | SET | `operateDateTime = param.getControlMapData(SCControlMapKeys.OPE_TIME);` // Operate datetime (運用日時) |
| 10 | SET | `template.set(JCMConstants.OPERATE_DATETIME_KEY, operateDateTime);` |
| 11 | SET | `workMap = param.getMappingWorkArea();` // Work area (作業領域の取得) |
| 12 | SET | `meisai = "";` // Detail item info (作業項目情報) |

**Block 2** — [IF] `dataMap null or SEIKY_KEI_NO_WORK null or empty` (L14397)

> Sets the settlement contract number (請求契約番号) from dataMap.

| # | Type | Code |
|---|------|------|
| 1 | SET | `template.setNull(EKU0061C010CBSMsg.SEIKY_KEI_NO);` // Settlement contract number (請求契約番号) |
| 2 | SET | `template.set(EKU0061C010CBSMsg.SEIKY_KEI_NO, dataMap.get("ekk0491d010_seiky_kei_no_work"));` // Settlement contract number |

**Block 3** — [IF] `stateCd equals "010"` (L14413) — [CONSTANT: `stateCd = "010"` = "Received/Receipt" (受払済)]

> When the service contract status is "Received", retrieves the detail number directly from the childMap.

**Block 3.1** — [IF] `childMap.get("kksv040327_mskm_dtl_no")` is empty (L14416)

> Sets MSKM_DTL_NO (apply detail number: 申請明細番号) to null.

| # | Type | Code |
|---|------|------|
| 1 | SET | `template.setNull(EKU0061C010CBSMsg.MSKM_DTL_NO);` // Apply detail number (申請明細番号) |

**Block 3.2** — [ELSE] (L14418)

| # | Type | Code |
|---|------|------|
| 1 | SET | `template.set(EKU0061C010CBSMsg.MSKM_DTL_NO, childMap.get("kksv040327_mskm_dtl_no"));` // Apply detail number |

**Block 4** — [ELSE] (L14421)

> When stateCd is NOT "010" (not yet received), resolves the detail number from a list in dataMap.

**Block 4.1** — [IF] `meisaiList == null || isEmpty` (L14425)

| # | Type | Code |
|---|------|------|
| 1 | SET | `meisaiList = (ArrayList<HashMap<String,String>>) dataMap.get("KKSV054601SCWORKLIST");` // Detail list |
| 2 | SET | `template.setNull(EKU0061C010CBSMsg.MSKM_DTL_NO);` // Set to null if list empty |

**Block 4.2** — [ELSE] (L14430)

| # | Type | Code |
|---|------|------|
| 1 | SET | `workdMap = (HashMap) meisaiList.get(0);` // First item |
| 2 | SET | `meisai = (String) workdMap.get("ekk0011d020_mskm_dtl_no");` // Extract detail number |

**Block 4.3** — [IF] `meisai == null || isEmpty` (L14435)

| # | Type | Code |
|---|------|------|
| 1 | SET | `template.setNull(EKU0061C010CBSMsg.MSKM_DTL_NO);` // Apply detail number |

**Block 4.4** — [ELSE] (L14437)

| # | Type | Code |
|---|------|------|
| 1 | SET | `template.set(EKU0061C010CBSMsg.MSKM_DTL_NO, meisai);` // Apply detail number |

**Block 5** — [IF] `funcCd equals "2"` (L14445) — [CONSTANT: `funcCd = "2"` = "Confirmation" (確認の場合)]

> For confirmation mode, sets the settlement contract number from childMap to avoid IF item check failures. The original value from dataMap is cleared above; this block restores it from childMap for confirmation screens.

**Block 5.1** — [IF] (L14446)

| # | Type | Code |
|---|------|------|
| 1 | SET | `template.set(EKU0061C010CBSMsg.SEIKY_KEI_NO, childMap.get("kksv040327_seiky_kei_no"));` // Settlement contract number |

**Block 5.2** — [ELSE] (L14448)

| # | Type | Code |
|---|------|------|
| 1 | SET | `template.setNull(EKU0061C010CBSMsg.SEIKY_KEI_NO);` // or set from dataMap |
| 2 | SET | `template.set(EKU0061C010CBSMsg.SEIKY_KEI_NO, dataMap.get("ekk0491d010_seiky_kei_no_work"));` // Settlement contract number |

**Block 6** — [SET] `template.set(EKU0061C010CBSMsg.FUNC_CODE, funcCd);` (L14455)

> Overrides the default "1" function code with the actual value from dataMap.

| # | Type | Code |
|---|------|------|
| 1 | SET | `template.set(EKU0061C010CBSMsg.FUNC_CODE, funcCd);` // Function code (機能コード) |

**Block 7** — [IF chain] Field copy from childMap to template (L14457–~L16740)

> This is the core field-mapping section. Approximately 130 fields are copied from childMap to the template using a repeated pattern: check if the childMap value is empty, then call `template.setNull()` or `template.set()`. The fields fall into these categories:

**Block 7.1** — Service and contract identifiers (L14457–L14530)

| # | Type | Code | Business Meaning |
|---|------|------|------------------|
| 1 | SET | `template.set/setNull(EKU0061C010CBSMsg.SVC_KEI_NO, childMap.get("kksv040327_svc_kei_no"));` | Service contract number (サービス契約番号) |
| 2 | SET | `template.set/setNull(EKU0061C010CBSMsg.SVC_KEI_KAISEN_UCWK_NO, childMap.get("kksv040327_svc_kei_kaisen_ucwk_no"));` | Service contract revision work number (サービス契約回線内線番号) |
| 3 | SET | `template.set/setNull(EKU0061C010CBSMsg.KOJIAK_NO, childMap.get("kojiak_no"));` | Construction project number (工事案件番号) |
| 4 | SET | `template.set/setNull(EKU0061C010CBSMsg.KOJI_UK_CD, childMap.get("kksv040327_koji_uk_cd"));` | Construction receipt code (工事受払コード) |
| 5 | SET | `template.set/setNull(EKU0061C010CBSMsg.KOJI_UK_DTAIL_CD, childMap.get("kksv040327_koji_uk_dtail_cd"));` | Construction receipt detail code (工事受払詳細コード) |
| 6 | SET | `template.set/setNull(EKU0061C010CBSMsg.KOJI_UK_OPTNTY_IDO_DTM, childMap.get("kksv040327_koji_uk_optnty_ido_dtm"));` | Construction receipt equipment move datetime (工事受払契約異動年月日時分秒) |
| 7 | SET | `template.set/setNull(EKU0061C010CBSMsg.SVC_CD, childMap.get("kksv040327_svc_cd"));` | Service code (サービスコード) |
| 8 | SET | `template.set/setNull(EKU0061C010CBSMsg.PRC_GRP_CD, childMap.get("kksv040327_prc_grp_cd"));` | Price group code (料金グループコード) |
| 9 | SET | `template.set/setNull(EKU0061C010CBSMsg.PCRS_CD, childMap.get("pcrs_cd"));` | Price code (料金コースコード) |
| 10 | SET | `template.set/setNull(EKU0061C010CBSMsg.PPLAN_CD, childMap.get("pplan_cd"));` | Plan code (料金プランコード) |
| 11 | SET | `template.set/setNull(EKU0061C010CBSMsg.WRIB_TYPE_CD, childMap.get("wrib_type_cd"));` | Discount type code (割引タイプコード) |
| 12 | SET | `template.set/setNull(EKU0061C010CBSMsg.PLAN_CHG_FIX_YMD, childMap.get("plan_chg_fix_ymd"));` | Plan change fix date (プラン変更確定年月日) |
| 13 | SET | `template.set/setNull(EKU0061C010CBSMsg.AD_CHG_FIX_DTM, childMap.get("ad_chg_fix_dtm"));` | Address change fix datetime (住所変更完了年月日時分秒) |
| 14 | SET | `template.set/setNull(EKU0061C010CBSMsg.OWNR_KEI_NO, childMap.get("ownr_kei_no"));` | Owner contract number (オーナー契約番号) |
| 15 | SET | `template.set/setNull(EKU0061C010CBSMsg.IP_HRADSI_CD, childMap.get("ip_hradsi_cd"));` | IP assignment code (IP割り当てコード) |
| 16 | SET | `template.set/setNull(EKU0061C010CBSMsg.MANS_RM_TUSHIN_KIKI_SBT_CD, childMap.get("mans_rm_tushin_kiki_sbt_cd"));` | Mansion room terminal equipment type code (マンション部屋通信機器種別コード) |
| 17 | SET | `template.set/setNull(EKU0061C010CBSMsg.MANS_TUSHIN_EQUIP_CD, childMap.get("kksv040327_mans_tushin_equip_cd"));` | Mansion communication equipment code (マンション通信設備コード) |
| 18 | SET | `template.set/setNull(EKU0061C010CBSMsg.SYSID, childMap.get("kksv040327_sysid"));` | SYSID |

**Block 7.2** — Customer information (L14590–L14680)

| # | Type | Code | Business Meaning |
|---|------|------|------------------|
| 1 | SET | `template.set/setNull(..., childMap.get("mskmsha_nm"));` | Applicant name (申請者名) |
| 2 | SET | `template.set/setNull(..., childMap.get("cust_nm"));` | Customer name (お客様名) |
| 3 | SET | `template.set/setNull(..., childMap.get("cust_kana"));` | Customer kana name (お客様カナ名) |
| 4 | SET | `template.set/setNull(..., childMap.get("cust_home_tel_no"));` | Customer home phone number (お客様自宅電話番号) |
| 5 | SET | `template.set/setNull(..., childMap.get("cust_ktai_tel_no"));` | Customer mobile phone number (お客様携帯電話番号) |
| 6 | SET | `template.set/setNull(..., childMap.get("cust_rrks_tel_no"));` | Customer contact phone number (お客様連絡先電話番号) |
| 7 | SET | `template.set/setNull(..., childMap.get("rrks_offc_nm"));` | Contact business name (連絡先勤務先名) |

**Block 7.3** — Contractor address (L14695–L14750)

| # | Type | Code | Business Meaning |
|---|------|------|------------------|
| 1 | SET | `template.set/setNull(..., childMap.get("keisha_ad_cd"));` | Contractor address code (契約者住所コード) |
| 2 | SET | `template.set/setNull(..., childMap.get("keisha_pcd"));` | Contractor postal code (契約者郵便番号) |
| 3 | SET | `template.set/setNull(..., childMap.get("keisha_state_nm"));` | Contractor prefecture name (契約者都道府県名) |
| 4 | SET | `template.set/setNull(..., childMap.get("keisha_city_nm"));` | Contractor city/town/village name (契約者市区町村名) |
| 5 | SET | `template.set/setNull(..., childMap.get("keisha_oaztsu_nm"));` | Contractor district/block name (契約者大字通称名) |
| 6 | SET | `template.set/setNull(..., childMap.get("keisha_azcho_nm"));` | Contractor street name (契約者字丁目名) |
| 7 | SET | `template.set/setNull(..., childMap.get("keisha_ad_bnchigo"));` | Contractor address number (契約者住所番地号) |
| 8 | SET | `template.set/setNull(..., childMap.get("keisha_adrttm"));` | Contractor building name (契約者住所補記・建物名) |
| 9 | SET | `template.set/setNull(..., childMap.get("keisha_adrrm"));` | Contractor room number (契約者住所補記・部屋番号) |

**Block 7.4** — Installation address (L14770–L14825)

| # | Type | Code | Business Meaning |
|---|------|------|------------------|
| 1 | SET | `template.set/setNull(..., childMap.get("place_no"));` | Place number (場所番号) |
| 2-9 | SET | Same pattern for `setplace_*` fields | Installation address code, postal code, prefecture, city, district, street, number, building, room (設置住所) |

**Block 7.5** — Pre-relocation address (転宅前住所) (L14920–~L15045)

| # | Type | Code | Business Meaning |
|---|------|------|------------------|
| 1 | SET | `template.set/setNull(..., childMap.get("tentaku_bf_ad_cd"));` | Pre-relocation address code (転宅前住所コード) |
| 2 | SET | `template.set/setNull(..., childMap.get("tentaku_bf_pcd"));` | Pre-relocation postal code (転宅前郵便番号) |
| 3-9 | SET | Same pattern for `tentaku_bf_*` fields | Full address breakdown (prefecture, city, district, street, number, building, room) |

**Block 7.6** — Post-relocation address (転宅後住所) (L15060–~L15185)

| # | Type | Code | Business Meaning |
|---|------|------|------------------|
| 1-9 | SET | Same pattern for `tentaku_saki_*` fields | Post-relocation address (転宅後住所) — same breakdown as pre-relocation |

**Block 7.7** — GPS and location data (L14795–~L14860)

| # | Type | Code | Business Meaning |
|---|------|------|------------------|
| 1 | SET | `template.set/setNull(..., childMap.get("koji_saki_ad_mi_fix_flg"));` | Pre-construction address undecided flag (工事先住所未決定フラグ) |
| 2 | SET | `template.set/setNull(..., childMap.get("kaisen_place_telno"));` | Line installation place phone number (回線設置電話番号) |
| 3 | SET | `template.set/setNull(..., childMap.get("kepco_busioffice_no"));` | Power company business office number (関電営業所番号) |
| 4 | SET | `template.set/setNull(..., childMap.get("lgtd"));` | Longitude (経度) |
| 5 | SET | `template.set/setNull(..., childMap.get("lttd"));` | Latitude (緯度) |
| 6 | SET | `template.set/setNull(..., childMap.get("zahyo_hosei_um"));` | Coordinate correction presence/absence (座標補正有無) |
| 7 | SET | `template.set/setNull(..., childMap.get("ad_form_cd"));` | Housing type code (住居形態コード) |
| 8 | SET | `template.set/setNull(..., childMap.get("nyukyo_flr_cnt_cd"));` | Move-in floor count code (入居階数コード) |
| 9 | SET | `template.set/setNull(..., childMap.get("kcku_flr_cnt_cd"));` | Building floor count code (建築階数コード) |
| 10 | SET | `template.set/setNull(..., childMap.get("direction_cd_1"));` | Direction code 1 (方角コード1) |
| 11 | SET | `template.set/setNull(..., childMap.get("direction_cd_2"));` | Direction code 2 (方角コード2) |

**Block 7.8** — Indoor device records (宅内機器) No. 1–20 (L15200–~L16740)

> Each record has the same structure: 9 fields per device, for devices 1 through 20. This results in 180 individual if/set/setNull blocks.

| # | Type | Code | Business Meaning (per device N, where N = 1..20) |
|---|------|------|--------------------------------------------------|
| 1 | SET | `template.set/setNull(..., childMap.get("taknkiki_sbt_cd_N"));` | Indoor equipment type code (宅内機器種別コード) |
| 2 | SET | `template.set/setNull(..., childMap.get("kktk_svc_kei_no_N"));` | Device-provided service contract number (機器提供サービス契約番号) |
| 3 | SET | `template.set/setNull(..., childMap.get("taknkiki_model_cd_N"));` | Indoor equipment model code (宅内機器型式コード) |
| 4 | SET | `template.set/setNull(..., childMap.get("kkseizo_no_N"));` | Equipment serial number (機器製造番号) |
| 5 | SET | `template.set/setNull(..., childMap.get("macad_N"));` | MAC address (MACアドレス) |
| 6 | SET | `template.set/setNull(..., childMap.get("router_kind_cd_N"));` | Router type code (ルーター種類コード) |
| 7 | SET | `template.set/setNull(..., childMap.get("tk_sbt_cd_N"));` | Provision type code (提供種別コード) |
| 8 | SET | `template.set/setNull(..., childMap.get("chgb_taknikk_model_cd_N"));` | Pre-change indoor equipment model code (変更前宅内機器型式コード) |
| 9 | SET | `template.set/setNull(..., childMap.get("chgb_kkseizo_no_N"));` | Pre-change equipment serial number (変更前機器製造番号) |
| 10 | SET | `template.set/setNull(..., childMap.get("chgb_macad_N"));` | Pre-change MAC address (変更前MACアドレス) |
| 11 | SET | `template.set/setNull(..., childMap.get("chgb_router_kind_cd_N"));` | Pre-change router type code (変更前ルーター種類コード) |
| 12 | SET | `template.set/setNull(..., childMap.get("chgb_tk_sbt_cd_N"));` | Pre-change provision type code (変更前提供種別コード) |

**Block 8** — [EXEC] Clear device move/change/case numbers (L16750–~L16990)

> Sets 3 sets of 20-item arrays to null. These are cleared unconditionally as they are not part of the input message construction — they likely represent device move/change state that is managed separately.

| # | Type | Code | Business Meaning |
|---|------|------|------------------|
| 1 | SET | `template.setNull(EKU0061C010CBSMsg.TAKNKIKI_IDO_CD_N);` for N=1..20 | Indoor equipment move code (宅内機器異動コード) 1-20 |
| 2 | SET | `template.setNull(EKU0061C010CBSMsg.KIKI_CHG_NO_N);` for N=1..20 | Equipment change number (機器変更番号) 1-20 |
| 3 | SET | `template.setNull(EKU0061C010CBSMsg.MOTO_TCASE_NO_N);` for N=1..20 | Original terminal case number (元トムソンケース番号) 1-20 |

**Block 9** — [EXEC] Finalize and return (L16996–L17000)

> Packages the single template into a CAANMsg array and puts it into the paramMap under `JCMConstants.TEMPLATE_LIST_KEY`, then returns.

| # | Type | Code |
|---|------|------|
| 1 | SET | `templates = new CAANMsg[1];` // Create single-element array |
| 2 | SET | `templates[0] = template;` // Assign template to array |
| 3 | SET | `paramMap.put(JCMConstants.TEMPLATE_LIST_KEY, templates);` // Set template list |
| 4 | RETURN | `return paramMap;` |

## 7. Glossary

| Term | Type | Business Meaning |
|------|------|------------------|
| `svc_kei_no` | Field | Service contract number — the unique identifier for a customer's service contract line |
| `svc_kei_stat_cd` | Field | Service contract status code — indicates the current state of the contract (e.g., "010" = Received/Receipt) |
| `seiky_kei_no` | Field | Settlement contract number (請求契約番号) — billing identifier for the service contract |
| `seiky_kei_no_work` | Field | Settlement contract number work area — intermediate storage for settlement contract number in dataMap |
| `mskm_dtl_no` | Field | Apply detail number (申請明細番号) — detail line identifier for the change application |
| `kojiak_no` | Field | Construction project number (工事案件番号) — unique ID for the construction/engineering project |
| `koji_uk_cd` | Field | Construction receipt code (工事受払コード) — code indicating construction receipt state |
| `koji_uk_dtail_cd` | Field | Construction receipt detail code (工事受払詳細コード) — detailed sub-code for construction receipt |
| `koji_uk_optnty_ido_dtm` | Field | Construction receipt equipment move datetime (工事受払契約異動年月日時分秒) — timestamp of equipment move contract |
| `svc_cd` | Field | Service code (サービスコード) — identifies the type of telecom service (e.g., FTTH, Mail) |
| `prc_grp_cd` | Field | Price group code (料金グループコード) — pricing tier group identifier |
| `pcrs_cd` | Field | Price code (料金コースコード) — specific pricing plan/course |
| `pplan_cd` | Field | Plan code (料金プランコード) — billing plan identifier |
| `wrib_type_cd` | Field | Discount type code (割引タイプコード) — type of discount applied |
| `plan_chg_fix_ymd` | Field | Plan change fix date (プラン変更確定年月日) — effective date of plan change |
| `ad_chg_fix_dtm` | Field | Address change fix datetime (住所変更完了年月日時分秒) — timestamp when address change was finalized |
| `ownr_kei_no` | Field | Owner contract number (オーナー契約番号) — contract number for the building/property owner |
| `ip_hradsi_cd` | Field | IP assignment code (IP割り当てコード) — how IP address is assigned to the connection |
| `mans_rm_tushin_kiki_sbt_cd` | Field | Mansion room terminal equipment type code (マンション部屋通信機器種別コード) — type of terminal equipment in each room |
| `mans_tushin_equip_cd` | Field | Mansion communication equipment code (マンション通信設備コード) — communication infrastructure equipment type |
| `sysid` | Field | SYSID — system identifier for the service instance |
| `cust_nm` | Field | Customer name (お客様名) — primary customer name |
| `cust_kana` | Field | Customer kana name (お客様カナ名) — customer name in katakana/hiragana |
| `cust_home_tel_no` | Field | Customer home phone number (お客様自宅電話番号) |
| `cust_ktai_tel_no` | Field | Customer mobile phone number (お客様携帯電話番号) |
| `cust_rrks_tel_no` | Field | Customer contact phone number (お客様連絡先電話番号) |
| `rrks_offc_nm` | Field | Contact business name (連絡先勤務先名) — business name of the contact person |
| `keisha_ad_cd` | Field | Contractor address code (契約者住所コード) — address code for the contract holder |
| `keisha_pcd` | Field | Contractor postal code (契約者郵便番号) |
| `keisha_state_nm` | Field | Contractor prefecture name (契約者都道府県名) — e.g., Tokyo, Osaka |
| `keisha_city_nm` | Field | Contractor city/town/village name (契約者市区町村名) |
| `keisha_oaztsu_nm` | Field | Contractor district/block name (契約者大字通称名) |
| `keisha_azcho_nm` | Field | Contractor street name (契約者字丁目名) |
| `keisha_ad_bnchigo` | Field | Contractor address number (契約者住所番地号) |
| `keisha_adrttm` | Field | Contractor building name (契約者住所補記・建物名) — building/apt name |
| `keisha_adrrm` | Field | Contractor room number (契約者住所補記・部屋番号) — room/unit number |
| `setplace_ad_cd` | Field | Installation address code (設置場所住所コード) — where the equipment is installed |
| `setplace_pcd` | Field | Installation address postal code (設置場所郵便番号) |
| `tentaku_bf_ad_cd` | Field | Pre-relocation address code (転宅前住所コード) — address before moving |
| `tentaku_saki_ad_cd` | Field | Post-relocation address code (転宅後住所コード) — address after moving |
| `koji_saki_ad_mi_fix_flg` | Field | Pre-construction address undecided flag (工事先住所未決定フラグ) — whether the installation address is not yet confirmed |
| `kaisen_place_telno` | Field | Line installation place phone number (回線設置電話番号) — phone at installation site |
| `kepco_busioffice_no` | Field | Power company business office number (関電営業所番号) — regional power company office |
| `lgtd` | Field | Longitude (経度) — GPS coordinate |
| `lttd` | Field | Latitude (緯度) — GPS coordinate |
| `zahyo_hosei_um` | Field | Coordinate correction presence/absence (座標補正有無) — whether GPS coordinates were corrected |
| `ad_form_cd` | Field | Housing type code (住居形態コード) — type of housing (apartment, mansion, house, etc.) |
| `nyukyo_flr_cnt_cd` | Field | Move-in floor count code (入居階数コード) — which floor the customer is on |
| `kcku_flr_cnt_cd` | Field | Building floor count code (建築階数コード) — total number of floors in the building |
| `direction_cd_1` | Field | Direction code 1 (方角コード1) — facing direction of the residence |
| `direction_cd_2` | Field | Direction code 2 (方角コード2) — secondary facing direction |
| `taknkiki_sbt_cd` | Field | Indoor equipment type code (宅内機器種別コード) — type of indoor terminal equipment |
| `kktk_svc_kei_no` | Field | Device-provided service contract number (機器提供サービス契約番号) — contract number associated with the device |
| `taknkiki_model_cd` | Field | Indoor equipment model code (宅内機器型式コード) — model number of the indoor equipment |
| `kkseizo_no` | Field | Equipment serial number (機器製造番号) — manufacturer serial number of the equipment |
| `macad` | Field | MAC address (MACアドレス) — hardware address of the network interface |
| `router_kind_cd` | Field | Router type code (ルーター種類コード) — type/model of the router |
| `tk_sbt_cd` | Field | Provision type code (提供種別コード) — how the device was provided (sold, rented, bundled) |
| `chgb_taknikk_model_cd` | Field | Pre-change indoor equipment model code (変更前宅内機器型式コード) — old model before equipment change |
| `chgb_kkseizo_no` | Field | Pre-change equipment serial number (変更前機器製造番号) — old serial number |
| `chgb_macad` | Field | Pre-change MAC address (変更前MACアドレス) — old MAC address |
| `chgb_router_kind_cd` | Field | Pre-change router type code (変更前ルーター種類コード) — old router type |
| `chgb_tk_sbt_cd` | Field | Pre-change provision type code (変更前提供種別コード) — old provision type |
| `taknkiki_ido_cd` | Field | Indoor equipment move code (宅内機器異動コード) — indicates if indoor equipment was moved |
| `kiki_chg_no` | Field | Equipment change number (機器変更番号) — sequential number for equipment change records |
| `moto_tcase_no` | Field | Original terminal case number (元トムソンケース番号) — original Thomson terminal case identifier |
| `func_cd` | Field | Function code (機能コード) — determines the screen mode (e.g., "1" = data entry, "2" = confirmation) |
| `stateCd = "010"` | Constant | Service contract status = "Received" (受払済) — indicates the contract has been received/confirmed |
| `KKSV054601SCWORKLIST` | Data key | List of detail work items — used to resolve MSKM_DTL_NO when stateCd is not "010" |
| `ekk0491d010_seiky_kei_no_work` | Data key | Settlement contract number work field — intermediate data field |
| CAANMsg | Type | Fujitsu message template class — carries structured message data for CBS invocation |
| TEMPLATE_ID_EKU0061C010 | Constant | Template identifier constant for the EO0061C010 CBS message type |
| EKU0061C010CBSMsg | Type | Message constant definitions class — holds field name constants for the EO0061C010 CBS message |
| EO0061C010 | Screen Code | Construction Project <eo Optical Net Mansion> Various Changes — the screen/function code for FTTH mansion modification |
| FTTH | Business term | Fiber To The Home — fiber-optic broadband connection service |
| CBS | Acronym | Component Batch Service — server-side batch/component processing unit in the Futurity framework |
| SC | Acronym | Service Component — a reusable service component in the Fujitsu architecture |
| KKSV | Acronym | Screen class naming prefix — `KKSV0004` etc. for screen controllers |
| param | Variable | IRequestParameterReadWrite — the request parameter carrier passed throughout the processing pipeline |
| dataMap | Variable | Map<String, Object> — main business data map holding high-level fields |
| childMap | Variable | HashMap<String, Object> — detailed field map with all individual screen fields |
