# Business Logic — KKW00127SFLogic.getSvckeiCommonMap() [172 LOC]

| Field | Value |
|-------|-------|
| Fully Qualified Name | `eo.web.webview.KKW00127SF.KKW00127SFLogic` |
| Layer | Service / Logic Layer (web presentation business logic) |
| Module | `KKW00127SF` (Package: `eo.web.webview.KKW00127SF`) |

## 1. Role

### KKW00127SFLogic.getSvckeiCommonMap()

This method constructs a **service contract common map** (`svckeiCommonMap`) — a consolidated, single-purpose HashMap that aggregates all shared service contract header fields needed by the KKW00127 screen (service contract update/change screen). It implements the **aggregator** pattern, reading pre-loaded data from multiple source maps and parameter beans, then merging them into one unified output structure for display purposes.

The method draws from six distinct data sources: service contract info (SC: KKSV003602SC), displacement section info (SC: KKSV003622SC), special conditions (CC: KKSV003624CC), service contract agreement details (CBS: EKK0081A010CBS), service rank info (CC: KKSV003628CC), and fixed-rate service contract info (CC: KKSV003631CC). Each source contributes specific header-level fields such as customer name, address, service status, pricing group, and various optional flags.

The method is a **shared utility** called by multiple screen logic classes (KKA16601SF, KKA14701SF, KKA14201SF, KKA14901SF, KKA15801SF, KKW00127SF) — it is invoked from `initKKW00127()` during screen initialization to populate the common header area of the service contract update screen.

The method includes conditional branching for: speed tier detection (over 1G displays pairID instead of mansionID), pricing group classification (ADSL display flag), and optional data sections (rank info, fixed-rate service) that may or may not be present depending on the customer's service configuration.

## 2. Processing Pattern (Detailed Business Logic)

```mermaid
flowchart TD
    START(["getSvckeiCommonMap outputMap, paramBean"])
    CREATE_MAP["Create svckeiCommonMap HashMap"]
    GET_SVC_KEI_MAP["Get svcKeiMap from outputMap[KKSV003602SC]"]
    CHECK_SVC_KEI_NULL["svcKeiMap != null?"]
    GET_SVC_KEI_CHILD["Get EKK0081B010CBSMsg1List from svcKeiMap"]
    CHECK_SVC_KEI_CHILD["svcKeiChildList != null and size > 0?"]
    GET_FIRST_CHILD["Get first element as svcKeiChildMap"]
    PUT_SVC_STAT["Put SVC_KEI_STAT from svc_kei_stat_nm"]
    GET_PCRS_SPEED["Get pcrs_speed_cd from svcKeiChildMap"]
    CHECK_OVER1G["CD00688_OVER1G_LIST.contains(pcrsSpeedCd)?"]
    PUT_PAIRID["Put MANSION_ID from pairID"]
    PUT_MANSION_ID["Put MANSION_ID from mansion_id"]
    PUT_MANSION_NM["Put MANSION_NM from kisnusekei_bkn_nm"]
    PUT_CUST_NM["Put KEISHA_NM from cust_nm"]
    PUT_TELNO["Put TELNO from keisha_telno"]
    BUILD_ADDRESS["Build keishaAd: trim state+city+oaztsu+azcho+bnchigo+adrttm+adrrm"]
    PUT_ADDR["Put KEISHA_AD"]
    PUT_SVC_KEI_NO["Put SVC_KEI_NO"]
    PUT_SEIKY_KEI_NO["Put SEIKY_KEI_NO"]
    PUT_SYSID["Put SYSID"]
    PUT_EOID["Put eoID"]
    PUT_PRC_GRP["Put PRC_GRP from prc_grp_nm"]
    PUT_PCRS["Put PCRS from pplan_nm"]
    PUT_PID["Put P_ID"]
    PUT_CATID["Put CAT_ID"]
    PUT_RSV_JOKYO["Put RSV_JOKYO"]
    PUT_ORSJGS_NM["Put ORSJGS_NM"]
    PUT_SCM_TYPE_NM["Put SCM_TYPE_NM"]
    PUT_SCM_JGS_NM["Put SCM_JGS_NM"]
    GET_IDO_MAP["Get idoMapMap from outputMap[KKSV003622SC]"]
    GET_IDO_LIST["Get EZM0171A010CBSMsg1List from idoMapMap"]
    CHECK_IDO_LIST["idoList != null and size > 0?"]
    GET_FIRST_IDO["Get first element as idoListElement"]
    PUT_IDO_DIV["Put IDO_DIV from cd_div_nm"]
    GET_TOKUSOKU_MAP["Get tokusokuMap from outputMap[KKSV003624CC]"]
    GET_FAMILY_PACK["Get family_pack_um"]
    PUT_FAMILY_PACK["Put FAMILY_PACK_UM"]
    GET_TOKUSOKU_STAT["Get tokusoku_stat_nm"]
    PUT_TOKUSOKU_STAT["Put TOKUSOKU_STAT"]
    GET_ROUTER_SBT["Get router_sbt_nm"]
    PUT_ROUTER_SBT["Put ROUTER_SBT"]
    GET_SVC_DATA_BEAN["paramBean[0].getDataBeanArray(EKK0081A010CBSMSG1LIST)"]
    GET_PRG_CD["getDataBean(0).sendMessageString(PRC_GRP_CD_02, GET_VALUE)"]
    CHECK_PRC_GRP["prc_grp_cd equals 05 or 06?"]
    PUT_ADSL_FLG_1["Put ADSL_DSP_FLG = 1"]
    PUT_ADSL_FLG_0["Put ADSL_DSP_FLG = 0"]
    PUT_NEXT_TAB["Put NEXT_TAB = Tab1"]
    GET_RANK_MAP["Get rankMap from outputMap[KKSV003628CC]"]
    CHECK_RANK_NULL["rankMap != null?"]
    GET_RANK_CHILD["Get EKKA0050001CBSMsg1List"]
    CHECK_RANK_CHILD["rankChildList != null and size > 0?"]
    GET_FIRST_RANK["Get first element as rankChildMap"]
    PUT_RANK_NM["Put RNK_NM from rnk_nm"]
    PUT_TIC_NUM["Put TIC_NUM from total_hoyu_pt_su"]
    GET_TE_GAK_MAP["Get tegakSvcMap from outputMap[KKSV003631CC]"]
    CHECK_TE_GAK_NULL["tegakSvcMap != null?"]
    GET_TE_GAK_CHILD["Get tegak_svc_list"]
    CHECK_TE_GAK_CHILD["tegakSvcChildList != null and size > 0?"]
    GET_FIRST_TE_GAK["Get first element as tegakSvcChildMap"]
    PUT_TE_GAK_SVC["Put TEGAK_SVC_UM from tegak_svc_um"]
    RETURN_MAP["Return svckeiCommonMap"]

    START --> CREATE_MAP --> GET_SVC_KEI_MAP
    GET_SVC_KEI_MAP --> CHECK_SVC_KEI_NULL
    CHECK_SVC_KEI_NULL -- Yes --> GET_SVC_KEI_CHILD
    CHECK_SVC_KEI_NULL -- No --> GET_IDO_MAP
    GET_SVC_KEI_CHILD --> CHECK_SVC_KEI_CHILD
    CHECK_SVC_KEI_CHILD -- Yes --> GET_FIRST_CHILD
    CHECK_SVC_KEI_CHILD -- No --> GET_IDO_MAP
    GET_FIRST_CHILD --> PUT_SVC_STAT
    PUT_SVC_STAT --> GET_PCRS_SPEED
    GET_PCRS_SPEED --> CHECK_OVER1G
    CHECK_OVER1G -- Over 1G --> PUT_PAIRID
    CHECK_OVER1G -- Otherwise --> PUT_MANSION_ID
    PUT_PAIRID --> PUT_MANSION_NM
    PUT_MANSION_ID --> PUT_MANSION_NM
    PUT_MANSION_NM --> PUT_CUST_NM
    PUT_CUST_NM --> PUT_TELNO
    PUT_TELNO --> BUILD_ADDRESS
    BUILD_ADDRESS --> PUT_ADDR
    PUT_ADDR --> PUT_SVC_KEI_NO
    PUT_SVC_KEI_NO --> PUT_SEIKY_KEI_NO
    PUT_SEIKY_KEI_NO --> PUT_SYSID
    PUT_SYSID --> PUT_EOID
    PUT_EOID --> PUT_PRC_GRP
    PUT_PRC_GRP --> PUT_PCRS
    PUT_PCRS --> PUT_PID
    PUT_PID --> PUT_CATID
    PUT_CATID --> PUT_RSV_JOKYO
    PUT_RSV_JOKYO --> PUT_ORSJGS_NM
    PUT_ORSJGS_NM --> PUT_SCM_TYPE_NM
    PUT_SCM_TYPE_NM --> PUT_SCM_JGS_NM
    PUT_SCM_JGS_NM --> GET_IDO_MAP
    GET_IDO_MAP --> GET_IDO_LIST
    GET_IDO_LIST --> CHECK_IDO_LIST
    CHECK_IDO_LIST -- Yes --> GET_FIRST_IDO
    CHECK_IDO_LIST -- No --> GET_TOKUSOKU_MAP
    GET_FIRST_IDO --> PUT_IDO_DIV
    PUT_IDO_DIV --> GET_TOKUSOKU_MAP
    GET_TOKUSOKU_MAP --> GET_FAMILY_PACK
    GET_FAMILY_PACK --> PUT_FAMILY_PACK
    PUT_FAMILY_PACK --> GET_TOKUSOKU_STAT
    GET_TOKUSOKU_STAT --> PUT_ROUTER_SBT
    GET_ROUTER_SBT --> PUT_ROUTER_SBT
    PUT_ROUTER_SBT --> GET_SVC_DATA_BEAN
    GET_SVC_DATA_BEAN --> GET_PRG_CD
    GET_PRG_CD --> CHECK_PRC_GRP
    CHECK_PRC_GRP -- 05 or 06 --> PUT_ADSL_FLG_1
    CHECK_PRC_GRP -- Otherwise --> PUT_ADSL_FLG_0
    PUT_ADSL_FLG_1 --> PUT_NEXT_TAB
    PUT_ADSL_FLG_0 --> PUT_NEXT_TAB
    PUT_NEXT_TAB --> GET_RANK_MAP
    GET_RANK_MAP --> CHECK_RANK_NULL
    CHECK_RANK_NULL -- Yes --> GET_RANK_CHILD
    CHECK_RANK_NULL -- No --> GET_TE_GAK_MAP
    GET_RANK_CHILD --> CHECK_RANK_CHILD
    CHECK_RANK_CHILD -- Yes --> GET_FIRST_RANK
    CHECK_RANK_CHILD -- No --> GET_TE_GAK_MAP
    GET_FIRST_RANK --> PUT_RANK_NM
    PUT_RANK_NM --> PUT_TIC_NUM
    PUT_TIC_NUM --> GET_TE_GAK_MAP
    GET_TE_GAK_MAP --> CHECK_TE_GAK_NULL
    CHECK_TE_GAK_NULL -- Yes --> GET_TE_GAK_CHILD
    CHECK_TE_GAK_NULL -- No --> RETURN_MAP
    GET_TE_GAK_CHILD --> CHECK_TE_GAK_CHILD
    CHECK_TE_GAK_CHILD -- Yes --> GET_FIRST_TE_GAK
    CHECK_TE_GAK_CHILD -- No --> RETURN_MAP
    GET_FIRST_TE_GAK --> PUT_TE_GAK_SVC
    PUT_TE_GAK_SVC --> RETURN_MAP
```

## 3. Parameter Analysis

| No | Parameter Name | Type | Business Description |
|----|---------------|------|---------------------|
| 1 | `outputMap` | `HashMap<String, Object>` | Data map containing pre-fetched service contract information from various Service Component (SC) and Cross-Component (CC) layers. Keys include `KKSV003602SC` (service contract info), `KKSV003622SC` (displacement section), `KKSV003624CC` (special conditions), `KKSV003628CC` (service rank), and `KKSV003631CC` (fixed-rate service). Acts as the primary input carrying all header-level display data. |
| 2 | `paramBean` | `X31SDataBeanAccess[]` | Array of data bean access objects containing service contract agreement details (EKK0081A010CBSMsg1List). Used to retrieve the processing group code (`prc_grp_cd`) for ADSL display flag determination. The first element at index 0 is used for all bean operations. |

**Instance/External State:**
None. This method is purely stateless — it reads only from the provided parameters and writes to a local HashMap.

## 4. CRUD Operations / Called Services

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

| CRUD | SC / CBS | SC Code | Entity / DB | Operation Description |
|------|----------|---------|-------------|----------------------|
| - | `JBSbatInterface.trim` | JBSbatInterface | - | Calls `trim` in `JBSbatInterface` for null-safe string trimming |
| - | `JZMBatCommon.trim` | JZMBatCommon | - | Calls `trim` in `JZMBatCommon` for null-safe string trimming |
| - | `JBSbatKKBmpKaihkPrdChokNoDel.trim` | JBSbatKKBmpKaihkPrdChokNoDel | - | Calls `trim` in `JBSbatKKBmpKaihkPrdChokNoDel` for null-safe string trimming |
| - | `JBSbatKKSodSendReqBase.trim` | JBSbatKKSodSendReqBase | - | Calls `trim` in `JBSbatKKSodSendReqBase` for null-safe string trimming |
| - | `JBSbatKKTchishoDelete.trim` | JBSbatKKTchishoDelete | - | Calls `trim` in `JBSbatKKTchishoDelete` for null-safe string trimming |
| R | `OneStopDataBeanAccessArray.getDataBean` | OneStopDataBeanAccessArray | - | Reads data bean at index 0 from service contract agreement details array |
| R | `OneStopDataBeanAccess.getDataBeanArray` | OneStopDataBeanAccess | - | Reads array of service contract agreement data beans by key |
| - | `OneStopDataBeanAccess.sendMessageString` | OneStopDataBeanAccess | - | Gets/sets string value from/to a data bean field |
| R | `JPCUtilCommon.trim` | JPCUtilCommon | - | Null-safe string trimming utility called 7 times to build address string |

**Note:** This method does **not** perform any database reads or writes (no C/R/U/D operations). It is a purely in-memory data transformation/aggregation layer that merges pre-fetched data from the `outputMap` (populated by prior SC/CBS calls) and `paramBean` objects into a single display-oriented HashMap. All "reads" are HashMap/ArrayList operations on already-loaded data.

## 5. Dependency Trace

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

No screen/batch entry points found within 8 hops. Direct callers found: 1 method.
Terminal operations from this method: `trim` [-], `sendMessageString` [-], `sendMessageString` [-], `getDataBean` [R], `getDataBean` [R], `getDataBeanArray` [R], `trim` [-], `trim` [-], `trim` [-], `trim` [-], `trim` [-], `trim` [-], `trim` [-], `trim` [-], `trim` [-], `trim` [-]

| # | Caller (Screen/Batch) | Call Chain (Full Path to this Method) | Terminal (SC / CRUD / Entity) |
|---|----------------------|--------------------------------------|-------------------------------|
| 1 | Logic:KKW00127SF | `initKKW00127(commoninfoBean)` -> `getSvckeiCommonMap(outputMap, paramBean)` | `trim` [-], `sendMessageString` [-], `getDataBean` [R], `getDataBeanArray` [R] |

**Additional callers (same-signature variant in other logic classes):**
The method signature also exists in KKA16601SFLogic, KKA14701SFLogic, KKA14201SFLogic, KKA14901SFLogic, and KKA15801SFLogic — these are screen-specific variants of the same aggregator pattern, each called from their respective `init*()` initialization methods during screen load.

## 6. Per-Branch Detail Blocks

**Block 1** — [SET] `Create svckeiCommonMap` (L3868)

> Creates the return HashMap that will hold all service contract common header fields.

| # | Type | Code |
|---|------|------|
| 1 | SET | `svckeiCommonMap = new HashMap<String, Object>()` |

**Block 2** — [IF] `svcKeiMap != null` (SC: KKSV003602SC — Service Contract Info) (L3871)

> Reads the service contract information block from the output map. If present, extracts the first child record and populates 15+ common header fields.

| # | Type | Code |
|---|------|------|
| 1 | SET | `svcKeiMap = (HashMap<String, ArrayList<HashMap<String, String>>>)outputMap.get("KKSV003602SC")` // SC: KKSV003602SC - Service contract information [JBC] |
| 2 | CALL | (entire child block) |

**Block 2.1** — [IF] `svcKeiChildList != null && size > 0` (L3873)

> Validates that the service contract child list has at least one record before accessing it.

| # | Type | Code |
|---|------|------|
| 1 | SET | `svcKeiChildList = (ArrayList<HashMap<String, String>>)svcKeiMap.get("EKK0081B010CBSMsg1List")` // Service contract agreement meeting details list [JBC] |
| 2 | CALL | (entire child block) |

**Block 2.1.1** — [IF] — First child record processing (L3875)

> The first element of the service contract child list is extracted as a map, then 16 fields are populated into svckeiCommonMap.

| # | Type | Code |
|---|------|------|
| 1 | SET | `svcKeiChildMap = (HashMap<String, String>)svcKeiChildList.get(0)` // First service contract child record [JBC] |
| 2 | SET | `svckeiCommonMap.put(JKKCommonConst.SVCKEICOMMON_ID_SVC_KEI_STAT, (String)svcKeiChildMap.get("svc_kei_stat_nm"))` // Service contract status name [-> "SVC_KEI_STAT"] |
| 3 | EXEC | (mansion_id assignment skipped — commented out, OM-2014-0000091) |
| 4 | SET | `pcrsSpeedCd = (String)svcKeiChildMap.get("pcrs_speed_cd")` // Pricing code speed code — determines speed tier category [JBC] |
| 5 | CALL | (speed tier branching block) |
| 6 | SET | `svckeiCommonMap.put(JKKCommonConst.SVCKEICOMMON_ID_MANSION_NM, (String)svcKeiChildMap.get("kisnusekei_bkn_nm"))` // Line usage contract item name — replaces mansion_nm since KAD-2012-0000331 [-> "MANSION_NM"] |
| 7 | SET | `svckeiCommonMap.put(JKKCommonConst.SVCKEICOMMON_ID_KEISHA_NM, (String)svcKeiChildMap.get("cust_nm"))` // Contractor name [-> "KEISHA_NM"] |
| 8 | SET | `svckeiCommonMap.put(JKKCommonConst.SVCKEICOMMON_ID_TELNO, (String)svcKeiChildMap.get("keisha_telno"))` // Telephone number [-> "TELNO"] |
| 9 | SET | `keishaAd = JPCUtilCommon.trim(state) + trim(city) + trim(oaztsu) + trim(azcho) + trim(bnchigo) + trim(adrttm) + trim(adrrm)` // Concatenated address with null-safe trimming [-> "KEISHA_AD"] |
| 10 | SET | `svckeiCommonMap.put(JKKCommonConst.SVCKEICOMMON_ID_KEISHA_AD, keishaAd)` |
| 11 | SET | `svckeiCommonMap.put(JKKCommonConst.SVCKEICOMMON_ID_SVC_KEI_NO, (String)svcKeiChildMap.get("svc_kei_no"))` // Service contract number [-> "SVC_KEI_NO"] |
| 12 | SET | `svckeiCommonMap.put(JKKCommonConst.SVCKEICOMMON_ID_SEIKY_KEI_NO, (String)svcKeiChildMap.get("seiky_kei_no"))` // Billing contract number [-> "SEIKY_KEI_NO"] |
| 13 | SET | `svckeiCommonMap.put(JKKCommonConst.SVCKEICOMMON_ID_SYSID, (String)svcKeiChildMap.get("sysid"))` // System ID [-> "SYSID"] |
| 14 | SET | `svckeiCommonMap.put(JKKCommonConst.SVCKEICOMMON_ID_EOID, (String)svcKeiChildMap.get("eoid"))` // eoID (NTT East customer ID) [-> "eoID"] |
| 15 | SET | `svckeiCommonMap.put(JKKCommonConst.SVCKEICOMMON_ID_PRC_GRP, (String)svcKeiChildMap.get("prc_grp_nm"))` // Pricing group name [-> "PRC_GRP"] |
| 16 | SET | `svckeiCommonMap.put(JKKCommonConst.SVCKEICOMMON_ID_PCRS, (String)svcKeiChildMap.get("pplan_nm"))` // Plan name — changed from pcrs_nm since ST2-2012-00001357 [-> "PCRS"] |
| 17 | SET | `svckeiCommonMap.put(JKKCommonConst.SVCKEICOMMON_ID_P_ID, (String)svcKeiChildMap.get("pid"))` // P-ID added since KAD-2012-0000331 [-> "P_ID"] |
| 18 | SET | `svckeiCommonMap.put(JKKCommonConst.SVCKEICOMMON_ID_CAT_ID, (String)svcKeiChildMap.get("catid"))` // Category ID added since KAD-2012-0000331 [-> "CAT_ID"] |
| 19 | SET | `svckeiCommonMap.put(JKKCommonConst.SVCKEICOMMON_ID_RSV_JOKYO, (String)svcKeiChildMap.get("rsv_jokyo"))` // Reservation status added since IT1-2012-0002413 [-> "RSV_JOKYO"] |
| 20 | SET | `svckeiCommonMap.put(JKKCommonConst.SVCKEICOMMON_ID_ORSJGS_NM, (String)svcKeiChildMap.get("orsjgs_nm"))` // Downstream service provider name added since ANK-3366-00-00 [-> "ORSJGS_NM"] |
| 21 | SET | `svckeiCommonMap.put(JKKCommonConst.SVCKEICOMMON_ID_SCM_TYPE_NM, (String)svcKeiChildMap.get("scm_type_nm"))` // Skym type name added since ANK-4075-00-00 [-> "SCM_TYPE_NM"] |
| 22 | SET | `svckeiCommonMap.put(JKKCommonConst.SVCKEICOMMON_ID_SCM_JGS_NM, (String)svcKeiChildMap.get("scm_jgs_nm"))` // Skym service provider name added since ANK-4075-00-00 [-> "SCM_JGS_NM"] |

**Block 2.1.1.1** — [IF/ELSE] `CD00688_OVER1G_LIST.contains(pcrsSpeedCd)` — Speed tier detection (L3883)

> Conditional branch: If the pricing code speed code is in the over-1G list (1G, 5G, or 10G), display the pairID; otherwise, display the mansionID. [IT1-2025-0000002: Changed from single CD00688_1G check to list-based CD00688_OVER1G_LIST.contains()]

| # | Type | Code |
|---|------|------|
| 1 | SET | `svckeiCommonMap.put(JKKCommonConst.SVCKEICOMMON_ID_MANSION_ID, (String)svcKeiChildMap.get("pairid"))` // IF over 1G: use pairID (pair ID for high-speed lines) [-> "MANSION_ID"] |
| 2 | ELSE | (entire child block) |

**Block 2.1.1.1.1** — [ELSE] `otherwise` (L3892)

> Speed is NOT over 1G, so display the standard mansionID.

| # | Type | Code |
|---|------|------|
| 1 | SET | `svckeiCommonMap.put(JKKCommonConst.SVCKEICOMMON_ID_MANSION_ID, (String)svcKeiChildMap.get("mansion_id"))` // IF not over 1G: use mansionID [-> "MANSION_ID"] |

**Block 3** — [IF] `idoMapMap` — Displacement Section (L3914)

> Reads the displacement section classification (ID) from the output map. Non-null check omitted for idoMapMap (potential NPE risk); directly accesses the list.

| # | Type | Code |
|---|------|------|
| 1 | SET | `idoMapMap = (HashMap<String, ArrayList<HashMap<String, String>>>)outputMap.get("KKSV003622SC")` // Displacement section information [JBC] |
| 2 | SET | `idoList = idoMapMap.get("EZM0171A010CBSMsg1List")` // Code name management agreement details — from SC: KKSV003622SC |
| 3 | IF | (entire child block) |

**Block 3.1** — [IF] `idoList != null && size > 0` (L3915)

> If displacement section list has records, extract the first and populate the IDO_DIV field.

| # | Type | Code |
|---|------|------|
| 1 | SET | `idoListElement = idoList.get(0)` |
| 2 | SET | `svckeiCommonMap.put(JKKCommonConst.SVCKEICOMMON_ID_IDO_DIV, idoListElement.get("cd_div_nm"))` // Displacement section classification name [-> "IDO_DIV"] |

**Block 4** — [SET] Special Conditions (KKSV003624CC) (L3937)

> Reads special conditions from the CC (Cross-Component) layer, which was changed from a commented-out SC-based conditional logic (wribSvcKeiMap) to a direct map lookup since IT1-2012-0001795.

| # | Type | Code |
|---|------|------|
| 1 | SET | `tokusokuMap = (HashMap<?, ?>)outputMap.get("KKSV003624CC")` // Special conditions [JBC] |
| 2 | SET | `family_pack_um = (String)tokusokuMap.get("family_pack_um")` // Family pack presence (Yes/No) |
| 3 | SET | `svckeiCommonMap.put(JKKCommonConst.SVCKEICOMMON_ID_FAMILY_PACK_UM, family_pack_um)` // Family pack presence flag [-> "FAMILY_PACK_UM"] |
| 4 | SET | `tokusoku_stat_nm = (String)tokusokuMap.get("tokusoku_stat_nm")` // Special conditions status name [ST2-2012-0000326] |
| 5 | SET | `svckeiCommonMap.put(JKKCommonConst.SVCKEICOMMON_ID_TOKUSOKU_STAT, tokusoku_stat_nm)` // Special conditions status [-> "TOKUSOKU_STAT"] |
| 6 | SET | `routerSbt = (String)tokusokuMap.get("router_sbt_nm")` // Router type name [2012-04-18 addition] |
| 7 | SET | `svckeiCommonMap.put(JKKCommonConst.SVCKEICOMMON_ID_ROUTER_SBT, routerSbt)` // Router type [-> "ROUTER_SBT"] |

**Block 5** — [SET] Service Contract Agreement Details — ADSL Display Flag (L3943)

> Reads the processing group code from the parameter bean to determine whether ADSL should be displayed.

| # | Type | Code |
|---|------|------|
| 1 | SET | `svc_kei_Info = paramBean[0].getDataBeanArray(KKW00127SFConst.EKK0081A010CBSMSG1LIST)` // Service contract agreement meeting details [-> "サービス契約同意照会明細"] |
| 2 | SET | `prc_grp_cd = svc_kei_Info.getDataBean(0).sendMessageString(KKW00127SFConst.PRC_GRP_CD_02, X31CWebConst.DATABEAN_GET_VALUE)` // Processing group code — field "02" (PRC_GRP_CD_02) |
| 3 | IF | (ADSL display flag branching) |

**Block 5.1** — [IF/ELSE] `prc_grp_cd.equals("05") || prc_grp_cd.equals("06")` — ADSL display flag (L3945)

> If the processing group code is "05" (Group withdrawal completion) or "06" (STB removal month registration completion), set ADSL display flag to 1; otherwise set to 0.

| # | Type | Code |
|---|------|------|
| 1 | SET | `svckeiCommonMap.put(JKKCommonConst.SVCKEICOMMON_ID_ADSL_DSP_FLG, "1")` // IF prc_grp_cd is 05 or 06: set ADSL display flag to ON [-> "ADSL_DSP_FLG"] |
| 2 | ELSE | (entire child block) |

**Block 5.1.1** — [ELSE] (L3948)

> Processing group code is neither 05 nor 06 — set ADSL display flag to OFF.

| # | Type | Code |
|---|------|------|
| 1 | SET | `svckeiCommonMap.put(JKKCommonConst.SVCKEICOMMON_ID_ADSL_DSP_FLG, "0")` // ADSL display flag OFF [-> "ADSL_DSP_FLG"] |

**Block 6** — [SET] Next Tab (L3951)

> Sets the default tab for the next screen transition.

| # | Type | Code |
|---|------|------|
| 1 | SET | `svckeiCommonMap.put(JKKCommonConst.SVCKEICOMMON_ID_NEXT_TAB, "Tab1")` // Next tab specification — defaults to Tab1 [-> "NEXT_TAB"] |

**Block 7** — [IF] `rankMap != null` — Service Rank Info (ANK-2687-00-00) (L3955)

> Reads service rank information from KKSV003628CC. Added since ANK-2687-00-00 (2016/06/03).

| # | Type | Code |
|---|------|------|
| 1 | SET | `rankMap = (HashMap<String, ArrayList<HashMap<String, String>>>)outputMap.get("KKSV003628CC")` // Service rank information [JBC] |
| 2 | IF | (entire child block) |

**Block 7.1** — [IF] `rankChildList != null && size > 0` (L3959)

> If rank child list has records, extract rank name and ticket count.

| # | Type | Code |
|---|------|------|
| 1 | SET | `rankChildList = (ArrayList<HashMap<String, String>>)rankMap.get("EKKA0050001CBSMsg1List")` // Rank agreement details list [JBC] |
| 2 | CALL | (entire child block) |

**Block 7.1.1** — [IF] (L3961)

> Extract first rank record and populate rank name and ticket count. [ANK-4307-00-00: Changed from tic_num (ticket remaining count) to total_hoyu_pt_su (保有eoポイント数 / total保有 eo points)]

| # | Type | Code |
|---|------|------|
| 1 | SET | `rankChildMap = (HashMap<String, String>)rankChildList.get(0)` |
| 2 | SET | `svckeiCommonMap.put(JKKCommonConst.SVCKEICOMMON_ID_RANK_NM, (String)rankChildMap.get("rnk_nm"))` // Rank name [-> "RNK_NM"] |
| 3 | SET | `svckeiCommonMap.put(JKKCommonConst.SVCKEICOMMON_ID_TIC_NUM, (String)rankChildMap.get("total_hoyu_pt_su"))` // Total保有 eo points — changed from tic_num since ANK-4307-00-00 [-> "TIC_NUM"] |

**Block 8** — [IF] `tegakSvcMap != null` — Fixed-Rate Service Contract (ANK-3840-00-00) (L3970)

> Reads fixed-rate service contract info from KKSV003631CC. Added since ANK-3840-00-00.

| # | Type | Code |
|---|------|------|
| 1 | SET | `tegakSvcMap = (HashMap<String, ArrayList<HashMap<String, String>>>)outputMap.get("KKSV003631CC")` // Fixed-rate service contract information [JBC] |
| 2 | IF | (entire child block) |

**Block 8.1** — [IF] `tegakSvcChildList != null && size > 0` (L3974)

> If fixed-rate service child list has records, extract the tegak_svc_um flag.

| # | Type | Code |
|---|------|------|
| 1 | SET | `tegakSvcChildList = (ArrayList<HashMap<String, String>>)tegakSvcMap.get("tegak_svc_list")` // Fixed-rate service list [JBC] |
| 2 | CALL | (entire child block) |

**Block 8.1.1** — [IF] (L3976)

> Extract first fixed-rate service record and populate TEGAK_SVC_UM.

| # | Type | Code |
|---|------|------|
| 1 | SET | `tegakSvcChildMap = (HashMap<String, String>)tegakSvcChildList.get(0)` |
| 2 | SET | `svckeiCommonMap.put(JKKCommonConst.SVCKEICOMMON_ID_TEGAK_SVC_UM, (String)tegakSvcChildMap.get("tegak_svc_um"))` // Fixed-rate service contract presence [-> "TEGAK_SVC_UM"] |

**Block 9** — [RETURN] (L3981)

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

## 7. Glossary

| Term | Type | Business Meaning |
|------|------|------------------|
| `svckei` | Abbreviation | Service Contract (サービス契約) — core business entity for NTT East telecommunications service agreements |
| `svckeiCommonMap` | Field | Service contract common map — aggregated HashMap of all shared header-level fields for the service contract update screen |
| `svc_kei_stat_nm` | Field | Service contract status name — current lifecycle status of the service contract (active, cancelled, etc.) |
| `pcrs_speed_cd` | Field | Pricing code speed code — speed tier classification code (e.g., 1G, 5G, 10G) |
| `pairid` | Field | Pair ID — physical line pair identifier used for high-speed connections (>1G) as an alternative to mansion_id |
| `mansion_id` | Field | Mansion (building) ID — identifies the apartment building or multi-tenant facility where the service is delivered |
| `kisnusekei_bkn_nm` | Field | Line usage contract item name — the specific line usage contract product name, used in place of mansion_nm since KAD-2012-0000331 |
| `cust_nm` | Field | Customer/contractor name (契約者名) — the name of the person or entity holding the service contract |
| `keisha_telno` | Field | Contractor telephone number |
| `keisha_state_nm`, `keisha_city_nm`, `keisha_oaztsu_nm`, `keisha_azcho_nm`, `keisha_bnchigo`, `keisha_adrttm`, `keisha_adrrm` | Field | Address components (prefecture, city, town/area, block/lot, building name, floor/room) — concatenated to form the full address |
| `svc_kei_no` | Field | Service contract number (サービス契約番号) — unique identifier for the service contract |
| `seiky_kei_no` | Field | Billing contract number (請求契約番号) — the contract number associated with billing/invoicing |
| `sysid` | Field | System ID — the system identifier in the NTT East service management system |
| `eoid` | Field | eoID — NTT East customer ID for the "eo" brand telecommunications services |
| `prc_grp_nm` | Field | Pricing group name — the pricing category group name for the service |
| `pplan_nm` | Field | Plan name — the service plan name (replaced `pcrs_nm` since ST2-2012-00001357) |
| `pid` | Field | P-ID — service product identifier added since KAD-2012-0000331 |
| `catid` | Field | Category ID — service category identifier added since KAD-2012-0000331 |
| `rsv_jokyo` | Field | Reservation status (予約状況) — current reservation state of the service |
| `orsjgs_nm` | Field | Downstream service provider name (卸事業者名) — the wholesale/second-tier service provider name, added since ANK-3366-00-00 |
| `scm_type_nm` | Field | Skym type name (スカイムタイプ名) — the "Skym" (SKYM) branded service type name, added since ANK-4075-00-00 |
| `scm_jgs_nm` | Field | Skym service provider name (スカイム事業者名) — the Skym service provider, added since ANK-4075-00-00 |
| `cd_div_nm` | Field | Code division name — the classification name for a code (used for displacement section) |
| `family_pack_um` | Field | Family pack presence (ファミリーパック有無) — whether the customer has a family pack bundle service (Yes/No) |
| `tokusoku_stat_nm` | Field | Special conditions status (特約状況) — status of special contract conditions/additions |
| `router_sbt_nm` | Field | Router type name (ルータ種類) — the type/model of router associated with the service |
| `rnk_nm` | Field | Rank name (ランク名称) — the customer/service rank classification name, added since ANK-2687-00-00 |
| `total_hoyu_pt_su` | Field | Total保有 eo points count (保有eoポイント数) — the customer's total accumulated eo loyalty points, used in place of tic_num since ANK-4307-00-00 |
| `tegak_svc_um` | Field | Fixed-rate service contract presence (定額サービス契約有無) — whether a fixed-rate/pricing contract is active, added since ANK-3840-00-00 |
| `prc_grp_cd` | Field | Processing group code — indicates the processing status group of the service contract |
| `ADSL_DSP_FLG` | Field | ADSL display flag — 1 if the customer has/had ADSL service (group withdrawal or STB removal), 0 otherwise |
| `NEXT_TAB` | Field | Next tab specification — controls which tab is displayed by default on the subsequent screen |
| CD00688_OVER1G_LIST | Constant | List of speed codes for connections over 1G: contains CD00688_1G, CD00688_5G, CD00688_10G — used to determine if pairID should be shown instead of mansion_id |
| PRC_GRP_CD_05 | Constant | "05" — Group withdrawal completion (グループ割取消完了) |
| PRC_GRP_CD_06 | Constant | "06" — STB removal month registration completion (STB撤去年月日登録完了) |
| KKSV003602SC | SC ID | Service contract information Service Component — provides the main service contract header data |
| KKSV003622SC | SC ID | Displacement section Service Component — provides displacement/section classification information |
| KKSV003624CC | CC ID | Special conditions Cross-Component — provides special conditions (tokusoku) data including family pack and router info |
| KKSV003628CC | CC ID | Service rank Cross-Component — provides service rank/customer tier information |
| KKSV003631CC | CC ID | Fixed-rate service Cross-Component — provides fixed-rate service contract presence information |
| EKK0081A010CBSMSG1LIST | Constant | "サービス契約同意照会明細" (Service Contract Agreement Details) — key for accessing service contract agreement data bean array |
| EKK0081B010CBSMsg1List | Key | Service contract agreement meeting details list — child data list within KKSV003602SC |
| EZM0171A010CBSMsg1List | Key | Code name management agreement details list — displacement section data list within KKSV003622SC |
| EKKA0050001CBSMsg1List | Key | Rank agreement details list — service rank data list within KKSV003628CC |
| eo | Business term | "eo" — NTT East's consumer broadband and telecom service brand (eoヒカリエ, eo光, eoエンターネット) |
| FTTH | Business term | Fiber To The Home — fiber-optic broadband service offered by NTT East |
| SKYM (スカイム) | Business term | NTT East's premium broadband service brand, targeting high-speed multi-tenant buildings |
| SC | Abbreviation | Service Component — enterprise service layer component handling business logic and data access |
| CC | Abbreviation | Cross-Component — shared component layer providing common business functions across multiple screens |
| CBS | Abbreviation | Common Business Service — shared service component for standardized business operations |
| JBC | Abbreviation | Java Business Component — the framework component type used in this codebase |
