# Business Logic — JFUAddKktSvcKeiCC.editOutEKK0341D01002() [263 LOC]

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

## 1. Role

### JFUAddKktSvcKeiCC.editOutEKK0341D01002()

This method performs **outbound mapping** for equipment-provided service contract registration (`機器提供サービス契約登録の下りマッピング処理` — downward mapping processing for equipment-provided service contract registration). It takes raw service contract data returned from a Service Component (SC) call — encoded as a `CAANMsg` template inside the `msgList` — and maps each field into the application's internal working structures (child data maps and service contract group lists) so the UI screen can display the data.

The method implements a **builder and routing pattern**: it first builds a nested data hierarchy (`dataMap -> dataList -> childMap`) indexed by the given `fixedText` key and `index`, then populates that leaf-level `childMap` with 15 individual service contract fields from the SC response. It also handles a secondary data structure (`svcKeiListMap`) for the discount service auto-apply feature (割引サービス自動適用対応, added in 2012/4/24), which constructs filter criteria for downstream service listing.

Its role in the larger system is as a **shared data-transformer utility** called by `addKktSvcKei()` within the same class during the service contract registration flow. It is not a screen entry point; it operates as a common component (CC) that bridges the SC response layer to the request parameter layer (`IRequestParameterReadWrite`), effectively normalizing SC schema output into a format the presentation layer expects.

The method processes data sequentially — no branching by service type — but uses null-coalescing for all 15 template field extractions, mapping empty strings when the source field is null.

## 2. Processing Pattern (Detailed Business Logic)

```mermaid
flowchart TD
    START["editOutEKK0341D01002 entry"]
    GET_TEMPLATES["Extract CAANMsg from msgList"]
    GET_RET_CD["Get returnCode from msgList"]
    INIT["Initialize dataMap, dataList, childMap"]
    MAP_FIELDS["Map 15 template fields to childMap"]
    SVC_AUTO["Discount service auto-apply processing"]
    BUILD_MAP["Build svcKeiListMap with filter values"]
    CALL_ERR["Call editErrInfoEKK0341D01002"]
    SET_ERROR["Set ERROR_INFO on param"]
    RETURN_PARAM["return param"]

    START --> GET_TEMPLATES
    GET_TEMPLATES --> GET_RET_CD
    GET_RET_CD --> INIT
    INIT --> MAP_FIELDS
    MAP_FIELDS --> SVC_AUTO
    SVC_AUTO --> BUILD_MAP
    BUILD_MAP --> CALL_ERR
    CALL_ERR --> SET_ERROR
    SET_ERROR --> RETURN_PARAM
```

**Step-by-step processing description:**

1. **Template extraction**: Retrieves the CAANMsg array from `msgList` using the key `TEMPLATE_LIST_KEY`, then extracts `templates[0]` as the working template.

2. **Return code retrieval**: Extracts the return code from `msgList` using `RET_CD_INT_KEY` for later error handling.

3. **Data hierarchy initialization**: Ensures a working area map exists on `param`, then retrieves or creates a data map keyed by `fixedText`. Within that data map, retrieves or creates an `ArrayList` keyed by `"EKK0341D010TelList"`. Within that list, retrieves or creates a `HashMap` at position `index` — this `childMap` is the target for field mapping.

4. **Field mapping (15 fields)**: For each of 15 SC response fields, checks if the template value is null. If null, sets an empty string `""` in `childMap`. If not null, extracts the string value from the template and stores it. For `KKTK_SVC_KEI_NO` (equipment-provided service contract number), the value is also mirrored into `svcKeiListMap` for the discount service auto-apply structure.

5. **Discount service auto-apply processing**: Extracts service group list information from `wriSvcAutoAplyMap`, retrieves the service list from the group map, and attempts to populate `sysid` and `mskm_no` (application number) from work area maps if not already set.

6. **Service list filter map construction**: Builds a `svcKeiListMap` with filter criteria: target contract type code `"06"`, service contract status `"010"` (accepted/completed), and price-related codes (pcrs_cd, pplan_cd, kktk_svc_cd, kktk_sbt_cd) copied from `childMap`. Adds this filter map to the service list.

7. **Error info processing**: Delegates error info creation to `editErrInfoEKK0341D01002`, then wraps error data using `TemplateErrorUtil.getErrorInfo` and sets it on the control map.

8. **Return**: Returns the modified `param` object, now containing all mapped service contract data and error information.

## 3. Parameter Analysis

| No | Parameter Name | Type | Business Description |
|----|---------------|------|---------------------|
| 1 | `msgList` | `Map<?, ?>` | The message list returned from the SC (Service Component) call, containing the `CAANMsg` template array (`TEMPLATE_LIST_KEY`) with raw service contract field data, and the return code (`RET_CD_INT_KEY`) for error determination. |
| 2 | `param` | `IRequestParameterReadWrite` | The request parameter object used to pass data between layers. This method reads/writes its work area, data maps, and control map to build the outbound data structure for the UI layer. |
| 3 | `fixedText` | `String` | The data key used to identify which service contract data block within `param` this method should populate. Typically corresponds to a screen-defined section identifier (e.g., a row key or field group name). |
| 4 | `index` | `int` | The position within the `EKK0341D010TelList` ArrayList where the child data map for this specific service contract record should be stored. Used to handle multiple service contract entries. |

**External state / instance fields read:**

| Field | Description |
|-------|-------------|
| None | This method does not directly read any instance fields from `JFUAddKktSvcKeiCC`. All state is derived from parameters. |

## 4. CRUD Operations / Called Services

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

| CRUD | SC / CBS | SC Code | Entity / DB | Operation Description |
|------|----------|---------|-------------|----------------------|
| U | `JFUAddKktSvcKeiCC.editErrInfoEKK0341D01002` | EKK0341D010CBS | Error info | Calls `editErrInfoEKK0341D01002` in `JFUAddKktSvcKeiCC` to set error information on the template and return code |
| R | `TemplateErrorUtil.getErrorInfo` | EKK0341D010CBS | Error data | Calls `getErrorInfo` to extract error info from `msgList` and `errList` for wrapping in control map |
| R | `JACBatCommon.isNull` | - | - | Calls `isNull` in `JACBatCommon` — null-check utility |
| R | `JACbatRknBusinessUtil.isNull` | - | - | Calls `isNull` in `JACbatRknBusinessUtil` — null-check utility |
| R | `JCHbatSeikyKaknoBusinessUtil.isNull` | - | - | Calls `isNull` in `JCHbatSeikyKaknoBusinessUtil` — null-check utility |

**Note:** This method does not perform any direct database create/read/update/delete operations. It is a pure data-mapping method that transforms SC response data (`CAANMsg`) into application parameter structures. All CRUD operations in the service contract registration flow are handled by other service components called upstream (e.g., the SC that returned the data in `msgList`).

The primary business operation here is:
- **U (Update)**: `editErrInfoEKK0341D01002` — updates error info on the template object and return code, used for downstream error display.

## 5. Dependency Trace

| # | Caller (Screen/Batch) | Call Chain (Full Path to this Method) | Terminal (SC / CRUD / Entity) |
|---|----------------------|--------------------------------------|-------------------------------|
| 1 | Class: JFUAddKktSvcKeiCC | `addKktSvcKei` -> `editOutEKK0341D01002` | `getErrorInfo [R]`, `isNull [-]`, `editErrInfoEKK0341D01002 [U]` |

**Call chain description:**

The method is called privately by `addKktSvcKei()` within the same `JFUAddKktSvcKeiCC` class. The full flow is:

1. `addKktSvcKei()` invokes the SC (Service Component) to register/create a service contract.
2. The SC returns a `msgList` containing `CAANMsg` templates with the service contract data.
3. `addKktSvcKei()` calls `editOutEKK0341D01002(msgList, param, fixedText, index)` to map the SC response into the parameter structure.
4. `editOutEKK0341D01002` delegates to `editErrInfoEKK0341D01002` for error handling.
5. Terminal operations include `getErrorInfo` (read error data from msgList) and various `isNull` utility calls (null-check helpers).

No direct screen (KKSV*) or batch (KKBV*) entry points were found within 8 hops. This method is a low-level common component utility, not reachable from screens directly.

## 6. Per-Branch Detail Blocks

### Block 1 — IF [null-check template array] (L4600)

> Extracts the CAANMsg[] templates array from msgList and gets the first element.

| # | Type | Code |
|---|------|------|
| 1 | SET | `templates = (CAANMsg[])msgList.get(JCMConstants.TEMPLATE_LIST_KEY)` |
| 2 | SET | `template = templates[0]` |

### Block 2 — IF [null-check return code] (L4603)

> Retrieves the return code from the message list for later error determination.

| # | Type | Code |
|---|------|------|
| 1 | SET | `returnCode = msgList.get(JCMConstants.RET_CD_INT_KEY)` |

### Block 3 — IF [workMap null check] (L4606)

> Gets the mapping work area from param; creates it if null.
> (作業領域の取得 — obtaining the work area)

| # | Type | Code |
|---|------|------|
| 1 | SET | `workMap = param.getMappingWorkArea()` |
| 2 | IF | `workMap == null` [L4607] |
| 3 | SET | `workMap = new HashMap()` |
| 4 | EXEC | `param.setMappingWorkArea(workMap)` |

### Block 4 — IF [dataMap null check] (L4613)

> Gets the data map from param using fixedText key; creates it if null.
> (結果を詰めるマップを取得 — obtain the map to hold results)

| # | Type | Code |
|---|------|------|
| 1 | SET | `dataMap = (HashMap)param.getData(fixedText)` |
| 2 | IF | `dataMap == null` [L4614] |
| 3 | SET | `dataMap = new HashMap()` |
| 4 | EXEC | `param.setData(fixedText, dataMap)` |

### Block 5 — IF [dataList null check, v1.00.00 addition] (L4619)

> Retrieves or creates the "EKK0341D010TelList" ArrayList within dataMap.
> (業務データ設定 — business data setup)

| # | Type | Code |
|---|------|------|
| 1 | SET | `dataList = (ArrayList)dataMap.get("EKK0341D010TelList")` |
| 2 | IF | `dataList == null` [L4620] |
| 3 | SET | `dataList = new ArrayList()` |
| 4 | EXEC | `dataMap.put("EKK0341D010TelList", dataList)` |

### Block 6 — IF [childMap null check] (L4625)

> Retrieves or creates a child HashMap at the given index within dataList.

| # | Type | Code |
|---|------|------|
| 1 | SET | `childMap = (HashMap)dataList.get(index)` |
| 2 | IF | `childMap == null` [L4626] |
| 3 | SET | `childMap = new HashMap()` |
| 4 | EXEC | `dataList.add(index, childMap)` |

### Block 7 — INIT [work map initialization] (L4631-L4646)

> Initializes work maps for discount service auto-apply processing.
> (割引サービス自動適用対応 — discount service auto-apply対応)

| # | Type | Code |
|---|------|------|
| 1 | SET | `sysId = ""` |
| 2 | SET | `mskmNo = ""` |
| 3 | SET | `addKeishaServiceCCWorkMap = (HashMap)workMap.get(CC_WORK_AREA_NAME_KEISHA)` |
| 4 | SET | `addMskmSCWork = (HashMap)workMap.get(CC_WORK_AREA_NAME_MSKM)` |
| 5 | SET | `wriSvcAutoAplyMap = (HashMap)param.getData(CC_WRI_SVC_AUTO_APLY_MAP)` |
| 6 | SET | `svcKeiGrpListMap = new HashMap()` |
| 7 | SET | `svcKeiGrpList = (ArrayList)wriSvcAutoAplyMap.get(SVC_KEI_GRP_LIST)` |
| 8 | SET | `svcKeiListMap = new HashMap()` |
| 9 | SET | `svcKeiList = new ArrayList()` |

### Block 8 — IF [kktk_svc_kei_no field mapping] (L4649-L4659)

> Maps the equipment-provided service contract number from template.
> (機器提供サービス契約番号 — equipment-provided service contract number)

| # | Type | Code |
|---|------|------|
| 1 | IF | `template.isNull(EKK0341D010CBSMsg.KKTK_SVC_KEI_NO)` [L4649] |
| 2 | SET | `childMap.put("kktk_svc_kei_no", "")` |
| 3 | SET | `svcKeiListMap.put("kktk_svc_kei_no", "")` |
| 4 | ELSE | [L4655] |
| 5 | SET | `childMap.put("kktk_svc_kei_no", template.getString(EKK0341D010CBSMsg.KKTK_SVC_KEI_NO))` |
| 6 | SET | `svcKeiListMap.put("kktk_svc_kei_no", template.getString(EKK0341D010CBSMsg.KKTK_SVC_KEI_NO))` |

### Block 9 — IF [gene_add_dtm field mapping] (L4660-L4667)

> Maps the generation/addition date-time stamp.
> (世代登録年月日时分秒 — generation registration date/time)

| # | Type | Code |
|---|------|------|
| 1 | IF | `template.isNull(EKK0341D010CBSMsg.GENE_ADD_DTM)` [L4660] |
| 2 | SET | `childMap.put("gene_add_dtm", "")` |
| 3 | ELSE | [L4664] |
| 4 | SET | `childMap.put("gene_add_dtm", template.getString(EKK0341D010CBSMsg.GENE_ADD_DTM))` |

### Block 10 — IF [kktk_svc_kei_stat field mapping] (L4668-L4675)

> Maps the equipment-provided service contract status.
> (機器提供サービス契約ステータス — equipment-provided service contract status)

| # | Type | Code |
|---|------|------|
| 1 | IF | `template.isNull(EKK0341D010CBSMsg.KKTK_SVC_KEI_STAT)` [L4668] |
| 2 | SET | `childMap.put("kktk_svc_kei_stat", "")` |
| 3 | ELSE | [L4672] |
| 4 | SET | `childMap.put("kktk_svc_kei_stat", template.getString(EKK0341D010CBSMsg.KKTK_SVC_KEI_STAT))` |

### Block 11 — IF [ftrial_prd_endymd field mapping] (L4676-L4683)

> Maps the trial period end date.
> (試訳期間終了年月日 — trial period end date)

| # | Type | Code |
|---|------|------|
| 1 | IF | `template.isNull(EKK0341D010CBSMsg.FTRIAL_PRD_ENDYMD)` [L4676] |
| 2 | SET | `childMap.put("ftrial_prd_endymd", "")` |
| 3 | ELSE | [L4680] |
| 4 | SET | `childMap.put("ftrial_prd_endymd", template.getString(EKK0341D010CBSMsg.FTRIAL_PRD_ENDYMD))` |

### Block 12 — IF [hosho_end_ymd field mapping] (L4684-L4691)

> Maps the guarantee end date.
> (保証終了年月日 — guarantee end date)

| # | Type | Code |
|---|------|------|
| 1 | IF | `template.isNull(EKK0341D010CBSMsg.HOSHO_END_YMD)` [L4684] |
| 2 | SET | `childMap.put("hosho_end_ymd", "")` |
| 3 | ELSE | [L4688] |
| 4 | SET | `childMap.put("hosho_end_ymd", template.getString(EKK0341D010CBSMsg.HOSHO_END_YMD))` |

### Block 13 — IF [rsv_aply_ymd field mapping] (L4692-L4699)

> Maps the reservation application date.
> (予約適用年月日 — reservation application date)

| # | Type | Code |
|---|------|------|
| 1 | IF | `template.isNull(EKK0341D010CBSMsg.RSV_APLY_YMD)` [L4692] |
| 2 | SET | `childMap.put("rsv_aply_ymd", "")` |
| 3 | ELSE | [L4696] |
| 4 | SET | `childMap.put("rsv_aply_ymd", template.getString(EKK0341D010CBSMsg.RSV_APLY_YMD))` |

### Block 14 — IF [rsv_aply_cd field mapping] (L4700-L4707)

> Maps the reservation application code.
> (予約適用コード — reservation application code)

| # | Type | Code |
|---|------|------|
| 1 | IF | `template.isNull(EKK0341D010CBSMsg.RSV_APLY_CD)` [L4700] |
| 2 | SET | `childMap.put("rsv_aply_cd", "")` |
| 3 | ELSE | [L4704] |
| 4 | SET | `childMap.put("rsv_aply_cd", template.getString(EKK0341D010CBSMsg.RSV_APLY_CD))` |

### Block 15 — IF [add_dtm field mapping] (L4710-L4717)

> Maps the registration date-time stamp.
> (登録年月日时分秒 — registration date/time)

| # | Type | Code |
|---|------|------|
| 1 | IF | `template.isNull(EKK0341D010CBSMsg.ADD_DTM)` [L4710] |
| 2 | SET | `childMap.put("add_dtm", "")` |
| 3 | ELSE | [L4714] |
| 4 | SET | `childMap.put("add_dtm", template.getString(EKK0341D010CBSMsg.ADD_DTM))` |

### Block 16 — IF [add_opeacnt field mapping] (L4718-L4725)

> Maps the registration operator account.
> (登録オペレーターアカウント — registration operator account)

| # | Type | Code |
|---|------|------|
| 1 | IF | `template.isNull(EKK0341D010CBSMsg.ADD_OPEACNT)` [L4718] |
| 2 | SET | `childMap.put("add_opeacnt", "")` |
| 3 | ELSE | [L4722] |
| 4 | SET | `childMap.put("add_opeacnt", template.getString(EKK0341D010CBSMsg.ADD_OPEACNT))` |

### Block 17 — IF [upd_dtm field mapping] (L4726-L4733)

> Maps the update date-time stamp.
> (更新年月日时分秒 — update date/time)

| # | Type | Code |
|---|------|------|
| 1 | IF | `template.isNull(EKK0341D010CBSMsg.UPD_DTM)` [L4726] |
| 2 | SET | `childMap.put("upd_dtm", "")` |
| 3 | ELSE | [L4730] |
| 4 | SET | `childMap.put("upd_dtm", template.getString(EKK0341D010CBSMsg.UPD_DTM))` |

### Block 18 — IF [upd_opeacnt field mapping] (L4734-L4741)

> Maps the update operator account.
> (更新オペレーターアカウント — update operator account)

| # | Type | Code |
|---|------|------|
| 1 | IF | `template.isNull(EKK0341D010CBSMsg.UPD_OPEACNT)` [L4734] |
| 2 | SET | `childMap.put("upd_opeacnt", "")` |
| 3 | ELSE | [L4738] |
| 4 | SET | `childMap.put("upd_opeacnt", template.getString(EKK0341D010CBSMsg.UPD_OPEACNT))` |

### Block 19 — IF [mk_flg field mapping] (L4742-L4749)

> Maps the invalidation flag.
> (無効フラグ — invalidation flag)

| # | Type | Code |
|---|------|------|
| 1 | IF | `template.isNull(EKK0341D010CBSMsg.MK_FLG)` [L4742] |
| 2 | SET | `childMap.put("mk_flg", "")` |
| 3 | ELSE | [L4746] |
| 4 | SET | `childMap.put("mk_flg", template.getString(EKK0341D010CBSMsg.MK_FLG))` |

### Block 20 — SVC_AUTO [discount service auto-apply] (L4752-L4780)

> Discount service auto-apply processing. The service contract group list is extracted, sysid and mskm_no are conditionally populated from work area maps.

| # | Type | Code |
|---|------|------|
| 1 | SET | `svcKeiGrpListMap = (HashMap)svcKeiGrpList.get(0)` |
| 2 | IF | `svcKeiGrpListMap.containsKey(SVC_KEI_LIST)` [L4757] |
| 3 | SET | `svcKeiList = (ArrayList)svcKeiGrpListMap.get(SVC_KEI_LIST)` |
| 4 | IF | `wriSvcAutoAplyMap.containsKey("sysid")` [L4762] |
| 5 | SET | `sysId = (String)wriSvcAutoAplyMap.get("sysid")` |
| 6 | IF | `"".equals(sysId)` [L4765] |
| 7 | EXEC | `wriSvcAutoAplyMap.put("sysid", (String)addKeishaServiceCCWorkMap.get("sysid"))` |
| 8 | IF | `wriSvcAutoAplyMap.containsKey("mskm_no")` [L4770] |
| 9 | SET | `mskmNo = (String)wriSvcAutoAplyMap.get("mskm_no")` |
| 10 | IF | `"".equals(mskmNo)` [L4773] |
| 11 | EXEC | `wriSvcAutoAplyMap.put("mskm_no", (String)addMskmSCWork.get("mskm_no"))` |

### Block 21 — SET [build svcKeiListMap filter values] (L4778-L4795)

> Constructs the service contract list filter map with hardcoded and dynamic values.

| # | Type | Code |
|---|------|------|
| 1 | SET | `svcKeiListMap.put("tg_kei_skbt_cd", "06")` // target contract subtype code |
| 2 | SET | `svcKeiListMap.put("kktk_svc_kei_stat", "010")` // service contract status "010": accepted/completed |
| 3 | SET | `svcKeiListMap.put("pcrs_cd", childMap.get("pcrs_cd"))` // price code |
| 4 | SET | `svcKeiListMap.put("pplan_cd", childMap.get("pplan_cd"))` // plan code |
| 5 | SET | `svcKeiListMap.put("kktk_svc_cd", childMap.get("kktk_svc_cd"))` // equipment-provided service code |
| 6 | SET | `svcKeiListMap.put("kktk_sbt_cd", childMap.get("kktk_sbt_cd"))` // equipment-provided subtype code |

### Block 22 — EXEC [add filter map to service list] (L4798)

> (サービス契約リストにサービス契約リストマップを格納 — store service contract list map into service contract list)

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `svcKeiList.add(svcKeiListMap)` |

### Block 23 — IF [add to group map if missing] (L4803-L4806)

> If the service list does not exist in the group map, adds it.

| # | Type | Code |
|---|------|------|
| 1 | IF | `!svcKeiGrpListMap.containsKey(SVC_KEI_LIST)` [L4803] |
| 2 | EXEC | `svcKeiGrpListMap.put(SVC_KEI_LIST, svcKeiList)` |

### Block 24 — CALL [error info processing] (L4809-L4815)

> Sets error information via delegate method and wraps error data for the control map.

| # | Type | Code |
|---|------|------|
| 1 | CALL | `editErrInfoEKK0341D01002(param, template, (Integer)returnCode, fixedText)` |
| 2 | SET | `errList = (ArrayList<Object>)param.getControlMapData(SCControlMapKeys.ERROR_INFO)` |
| 3 | IF | `errList == null` [L4812] |
| 4 | SET | `errList = new ArrayList<Object>()` |
| 5 | EXEC | `param.setControlMapData(SCControlMapKeys.ERROR_INFO, TemplateErrorUtil.getErrorInfo(msgList, errList))` |

### Block 25 — RETURN (L4817)

> Returns the fully populated parameter object.

| # | Type | Code |
|---|------|------|
| 1 | RETURN | `return param` |

## 7. Glossary

| Term | Type | Business Meaning |
|------|------|------------------|
| `kktk_svc_kei_no` | Field | Equipment-provided service contract number — the unique identifier for a service contract line item returned from the SC |
| `gene_add_dtm` | Field | Generation registration date/time — timestamp when the service contract record was originally created |
| `kktk_svc_kei_stat` | Field | Equipment-provided service contract status — current state of the contract (e.g., "010" = accepted/completed) |
| `ftrial_prd_endymd` | Field | Trial period end date — the date when any free trial period for the service ends |
| `hosho_end_ymd` | Field | Guarantee end date — the date when the contract's guarantee/warranty period expires |
| `rsv_aply_ymd` | Field | Reservation application date — date when a reservation application was processed for this service |
| `rsv_aply_cd` | Field | Reservation application code — code indicating the type of reservation application |
| `add_dtm` | Field | Registration date/time — timestamp of the most recent registration/update action |
| `add_opeacnt` | Field | Registration operator account — the operator who performed the last registration |
| `upd_dtm` | Field | Update date/time — timestamp of the most recent update action |
| `upd_opeacnt` | Field | Update operator account — the operator who performed the last update |
| `mk_flg` | Field | Invalidation flag — flag indicating whether the service contract record is marked as invalid |
| `tg_kei_skbt_cd` | Field | Target contract subtype code — filter code for contract types (e.g., "06") |
| `pcrs_cd` | Field | Price code — pricing tier code for the service contract |
| `pplan_cd` | Field | Plan code — service plan code for the contract |
| `kktk_svc_cd` | Field | Equipment-provided service code — code identifying the type of equipment-provided service |
| `kktk_sbt_cd` | Field | Equipment-provided subtype code — sub-category code for the equipment-provided service |
| `mskm_no` | Field | Application number — the customer application/order number (申込番号) |
| `sysid` | Field | System ID — system identifier used for discount service auto-apply routing |
| `TEMPLATE_LIST_KEY` | Constant | Key constant for retrieving the CAANMsg template array from the message list |
| `RET_CD_INT_KEY` | Constant | Key constant for retrieving the integer return code from the message list |
| `CC_WORK_AREA_NAME_KEISHA` | Constant | Key for the customer/keisha work area map in the mapping work area |
| `CC_WORK_AREA_NAME_MSKM` | Constant | Key for the application/mskm work area map |
| `CC_WRI_SVC_AUTO_APLY_MAP` | Constant | Key for the write service auto-apply map parameter data |
| `SVC_KEI_GRP_LIST` | Constant | Key for the service contract group list within the auto-apply map |
| `SVC_KEI_LIST` | Constant | Key for the service contract list within a group map |
| CAANMsg | Class | Fujitsu's message/schema class used to hold SC response data with typed getter methods (getString, isNull) |
| IRequestParameterReadWrite | Interface | Interface for parameter objects used to pass data between controller, service component, and presentation layers |
| SC | Acronym | Service Component — the backend component that performs business data operations (database CRUD) |
| CC | Acronym | Common Component — shared reusable business logic component in the K-Opticom framework |
| CBS | Acronym | Component-Based System — the overall system architecture terminology used in the codebase |
| K-Opticom | Business term | Japan-based telecommunications service provider; this system supports customer base operations |
| 機器提供サービス | Business term | Equipment-provided service — telecom services where the provider supplies the terminal equipment (e.g., fiber routers) |
| 下りマッピング処理 | Business term | Downward/outbound mapping processing — transforming SC response data into UI-ready data structures |
| 割引サービス自動適用 | Business term | Discount service auto-apply — a feature (added 2012/4/24) that automatically applies discount services to contracts based on filter criteria |
| 受付済 | Business term | Accepted/completed — status code "010" indicating the service contract has been accepted |
| TemplateErrorUtil | Class | Utility class that wraps error information from SC responses into a standard error list format |
| SCControlMapKeys | Class | Constants class for control map keys (e.g., ERROR_INFO) used to store UI control data |
