# Business Logic — JFUMkmInfoAddFrontiaPreTrnCC.getDatamap() [189 LOC]

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

## 1. Role

### JFUMkmInfoAddFrontiaPreTrnCC.getDatamap()

This method performs the **data mapping and preparation phase** for the Frontia (FTTH broadband) subscription registration process in K-Opticom's eo customer backbone system. It serves as the critical bridge between the web submission screen data and the downstream service component execution chain. The method first invokes the EFU0381A010 web submission temporary-save approval service (`execEFU0381A010Merge`) to retrieve and validate the submitted service content, then performs an extensive extraction and enrichment routine that populates the `workArea` (a `JFUMkmInfoAddFrontiaWorkArea` instance) with service contract numbers, submission details, and agreement information across three service dimensions: net (EO optical net), tel (EO optical phone), and tv (EO optical TV). It branches on service type (home, mezon, mansion — handled by `isTypeMTMZ`) to optionally pull mansion search result data, and on customer category (individual/corporate, `KEI_SBT_KOJINCD`/`KEI_SBT_HOJINCD`) to extract the correct SYSID from the corresponding personal or corporate data map. Finally, it conditionally dispatches to mino (mobile) setplan discount processing when a mino setplan key exists and EO optical net is active, before registering discount service mapping and eID input information via mapper calls. This method's overall role is that of a **centralized data enrichment and dispatch orchestrator** within the Frontia pre-registration screen flow, called by `FUSV0356Operation` as part of the FUSV0356 (general web service subscription) business process.

## 2. Processing Pattern (Detailed Business Logic)

```mermaid
flowchart TD
    START(["getDatamap(handle, param, fixedText)"])
    START --> GET_FUSV["Get FUSV035601CC from param"]

    GET_FUSV --> CREATE_INVOKER["Create ServiceComponentRequestInvoker scCall"]
    CREATE_INVOKER --> GET_MSKMSHO["Get mskmsho_no from FUSV035601CC"]

    GET_MSKMSHO --> MERGE_SVC["chkUtil.execEFU0381A010Merge"]
    MERGE_SVC --> GET_NAIYO["Get mskmNaiyo from CAANMsg"]
    GET_NAIYO --> JSON_TO_MAP["JFUMkmInfoAddUtil.jsonToMap"]

    JSON_TO_MAP --> SET_WORK["Set workArea with mskmsho_no and mapMskmNaiyo"]

    SET_WORK --> CHECK_TYPE{isTypeMTMZ<br>workArea}
    CHECK_TYPE -->|true| MANSON_SEARCH["Get RES_MANSION_SEARCH_LIST"]
    MANSON_SEARCH --> SEARCH_SIZE{size == 1?}
    SEARCH_SIZE -->|true| SET_BKN["chkUtil.setWorkAreaFromBknData"]
    SEARCH_SIZE -->|false| EXTRACT_SYSID[Extract sysid from personal/corporate map]
    SET_BKN --> EXTRACT_SYSID

    CHECK_TYPE -->|false| EXTRACT_SYSID
    EXTRACT_SYSID --> CHECK_CATEGORY{kei_sbt category}
    CHECK_CATEGORY -->|"KOJINCD = 1"| PERSONAL["childMap = ECK0021D010"]
    CHECK_CATEGORY -->|"HOJINCD = 2"| CORPORATE["childMap = ECK0031D010"]
    PERSONAL --> SET_SYSID["Set sysid to workArea and fusv035601ccMsg"]
    CORPORATE --> SET_SYSID

    SET_SYSID --> CHECK_EONET{workArea.getEonet?}
    CHECK_EONET -->|true| GET_NET["parentMap = EKK0091D010, extract svc_kei_no"]
    CHECK_EONET -->|false| CHECK_EOTEL
    GET_NET --> SET_NET["Set okid_net and svc_kei_no_net"]
    SET_NET --> CHECK_EOTEL{workArea.getEotel?}
    CHECK_EOTEL -->|true| GET_TEL["parentMap = EKK0111D010, extract svc_kei_no"]
    CHECK_EOTEL -->|false| CHECK_EOTV
    GET_TEL --> SET_TEL["Set okid_tel and svc_kei_no_tel"]
    SET_TEL --> CHECK_EOTV{workArea.getEotv?}
    CHECK_EOTV -->|true| GET_TV["parentMap = EKK0101D010, extract svc_kei_no"]
    CHECK_EOTV -->|false| SUBMIT_CHECK
    GET_TV --> SET_TV["Set okid_tv and svc_kei_no_tv"]
    SET_TV --> SUBMIT_CHECK

    SUBMIT_CHECK --> GET_SUBMIT["parentMap = FUSV035614SC"]
    GET_SUBMIT --> SET_SUBMIT["Set mskm_no and mskm_dtl_no_*"]

    SET_SUBMIT --> GET_SVC_NET["parentMap = EKK0171D010, set svc_kei_ucwk_no_net"]
    GET_SVC_NET --> GET_SVC_TEL["parentMap = EKK0191D010, iterate EKK0191D010List for tel"]
    GET_SVC_TEL --> GET_SVC_TV["parentMap = EKK0181D010, set svc_kei_ucwk_no_tv"]
    GET_SVC_TV --> GET_KAISEN["parentMap = EKK0251D010, set svc_kei_kaisen_ucwk_no"]
    GET_KAISEN --> GET_SEIKY["parentMap = EKK0491D010, set seiky_kei_no"]

    GET_SEIKY --> GET_TIMESTAMP["JCCBPCommon.getOpeDateTimeStamp"]
    GET_TIMESTAMP --> MAP_AUTOAPPLY["mapper.setJKKWrisvcAutoAplyCC"]
    MAP_AUTOAPPLY --> CHECK_MINO{mineo_setplan_kbn NOT null<br>AND eonet?}
    CHECK_MINO -->|true| CALL_MINO["callJFUMineoSetPlanWribCC"]
    CALL_MINO --> GET_MINO["Get parentMap JFUMineoSetPlanWribCC, set campaign info"]
    GET_MINO --> MAP_MINO_RENKEI["mapper.setJFUMineoSetPlanRenkeiCC"]
    CHECK_MINO -->|false| MAP_DISCOUNT
    MAP_MINO_RENKEI --> MAP_DISCOUNT
    MAP_DISCOUNT --> MAP_OID["mapper.setFUSV016046SC"]
    MAP_OID --> MAP_EOID["mapper.setJFUEoidInputInfoAddCC"]
    MAP_EOID --> RETURN_PARAM["Return param"]
```

## 3. Parameter Analysis

| No | Parameter Name | Type | Business Description |
|----|---------------|------|---------------------|
| 1 | `handle` | `SessionHandle` | The database session handle providing the transactional context for service component calls and data access during the subscription registration flow. |
| 2 | `param` | `IRequestParameterReadWrite` | The request parameter object carrying the full submission data envelope — contains nested data maps keyed by CC/SC identifiers (e.g., `FUSV035601CC`, `EKK0091D010`, `EKK0111D010`, `EKK0101D010`, `FUSV035614SC`, `ECK0021D010`, `ECK0031D010`) that hold the submitted service data for network, phone, TV, submission, personal, and corporate dimensions. This is both read from (to extract existing data) and written to (to populate results from called services like `JFUMineoSetPlanWribCC`). |
| 3 | `fixedText` | `String` | Fixed text values passed to the temporary-save approval service (`execEFU0381A010Merge`) — used for display-related constant values in the web submission approval service interface. |

**Instance fields read by this method:**

| Field | Type | Business Description |
|-------|------|---------------------|
| `workArea` | `JFUMkmInfoAddFrontiaWorkArea` | The shared work area holding all enriched subscription data — receipt number, submission number, service contract numbers (net/tel/tv), SYSID, campaign info, mino setplan keys, and all work detail numbers. This is the primary output accumulator. |
| `chkUtil` | `JFUMkmInfoAddFrontiaUtil` | Utility object providing mansion merge check, work area population from search results, and service type classification. |
| `mapper` | `JFUMkmInfoAddFrontiaMapper` | Mapper object that orchestrates data mapping to downstream CCs (auto-apply, mino setplan linkage, discount service, eID input info). |

## 4. CRUD Operations / Called Services

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

| CRUD | SC / CBS | SC Code | Entity / DB | Operation Description |
|------|----------|---------|-------------|----------------------|
| - | `chkUtil.execEFU0381A010Merge` | EFU0381A010 | Web submission content (EFU0381A010CBSMsg) | Calls merge approval service that performs web submission temporary-save validation |
| - | `JFUMkmInfoAddUtil.jsonToMap` | Util | - | Converts JSON string submission content to Map for work area population |
| R | `workArea.getEonet` | WorkArea | - | Reads whether EO optical net service is active |
| R | `workArea.getEotel` | WorkArea | - | Reads whether EO optical phone service is active |
| R | `workArea.getEotv` | WorkArea | - | Reads whether EO optical TV service is active |
| R | `workArea.getKei_sbt` | WorkArea | - | Reads service category (individual "1" or corporation "2") |
| R | `workArea.getSysid` | WorkArea | - | Reads the extracted SYSID identifier |
| R | `workArea.getMineo_setplan_kbn` | WorkArea | - | Reads mino (mobile) setplan key code for discount eligibility |
| - | `workArea.setMskmsho_no` | WorkArea | - | Sets receipt number into work area |
| - | `workArea.setSysid` | WorkArea | - | Sets SYSID into work area |
| - | `workArea.setSvc_kei_no_net` | WorkArea | - | Sets EO optical net service contract number |
| - | `workArea.setSvc_kei_no_tel` | WorkArea | - | Sets EO optical phone service contract number |
| - | `workArea.setSvc_kei_no_tv` | WorkArea | - | Sets EO optical TV service contract number |
| - | `workArea.setMskm_no` | WorkArea | - | Sets submission number |
| - | `workArea.setMskm_dtl_no_net` | WorkArea | - | Sets submission detail number for net service |
| - | `workArea.setMskm_dtl_no_tel` | WorkArea | - | Sets submission detail number for phone service |
| - | `workArea.setMskm_dtl_no_tv` | WorkArea | - | Sets submission detail number for TV service |
| - | `workArea.setSvc_kei_ucwk_no_net` | WorkArea | - | Sets work detail number for net service agreement |
| - | `workArea.setSvc_kei_ucwk_no_tel1` | WorkArea | - | Sets 1st work detail number for phone service agreement |
| - | `workArea.setSvc_kei_ucwk_no_tel2` | WorkArea | - | Sets 2nd work detail number for phone service agreement |
| - | `workArea.setSvc_kei_ucwk_no_tv` | WorkArea | - | Sets work detail number for TV service agreement |
| - | `workArea.setSvc_kei_kaisen_ucwk_no` | WorkArea | - | Sets circuit work detail number |
| - | `workArea.setSeiky_kei_no` | WorkArea | - | Sets billing contract number |
| - | `workArea.setMineoSetCampaign_cd` | WorkArea | - | Sets mino set campaign code |
| - | `workArea.setMineoSetCampaign_end_ymd` | WorkArea | - | Sets mino set campaign end date/time |
| R | `JCCBPCommon.getOpeDateTimeStamp` | JCCBPCommon | - | Retrieves operation date-time stamp for processing timestamp |
| - | `mapper.setJKKWrisvcAutoAplyCC` | JFUMkmInfoAddFrontiaMapper | - | Maps data for discount service auto-application CC |
| - | `mapper.setJFUEoidInputInfoAddCC` | JFUMkmInfoAddFrontiaMapper | - | Maps data for eID input information registration CC (upward mapping) |
| - | `mapper.setFUSV016046SC` | JFUMkmInfoAddFrontiaMapper | - | Maps data for discount service registration SC |
| - | `mapper.setJFUMineoSetPlanRenkeiCC` | JFUMkmInfoAddFrontiaMapper | - | Maps data for mino setplan linkage CC |
| - | `callJFUMineoSetPlanWribCC` | JFUMineoSetPlanWribCC | - | Calls mino set discount information acquisition CC |
| - | `chkUtil.setWorkArea` | JFUMkmInfoAddFrontia | - | Populates work area from submission content map |
| - | `chkUtil.setWorkAreaFromBknData` | JFUMkmInfoAddFrontia | - | Populates work area from search result data |
| R | `JFUMkmInfoAddFrontiaWorkArea.getEonet` | WorkArea | - | Reads EO optical net flag |
| R | `JFUMkmInfoAddFrontiaWorkArea.getEotel` | WorkArea | - | Reads EO optical phone flag |
| R | `JFUMkmInfoAddFrontiaWorkArea.getEotv` | WorkArea | - | Reads EO optical TV flag |
| R | `JFUMkmInfoAddFrontiaWorkArea.getKei_sbt` | WorkArea | - | Reads service type category |
| R | `JFUMkmInfoAddFrontiaWorkArea.getMineo_setplan_kbn` | WorkArea | - | Reads mino setplan key code |
| R | `JFUMkmInfoAddFrontiaWorkArea.getSysid` | WorkArea | - | Reads SYSID value |

**CRUD Classification Summary:**

| CRUD | SC / CBS | SC Code | Entity / DB | Operation Description |
|------|----------|---------|-------------|----------------------|
| R | `execEFU0381A010Merge` | EFU0381A010CBS | EFU0381A010 (Web submission temporary-save approval service) | Reads and validates web submission content for Frontia registration |
| R | `workArea` getters | - | WorkArea (in-memory work data) | Reads service flags, contract numbers, submission details from work area |
| C | `callJFUMineoSetPlanWribCC` | JFUMineoSetPlanWribCC | MinSetPlan (minimo mobile setplan discount data) | Acquires mino set discount information (campaign code, end date) |
| C | `setJKKWrisvcAutoAplyCC` | JKKWrisvcAutoAply | JK KW Service auto-application | Registers discount service auto-application settings |
| C | `setJFUMineoSetPlanRenkeiCC` | JFUMineoSetPlanRenkei | MinSetPlan linkage | Registers mino setplan linkage/discount eligibility |
| C | `setFUSV016046SC` | FUSV016046SC | Discount service registration SC | Registers contents (discount service) registration SC |
| C | `setJFUEoidInputInfoAddCC` | JFUEoidInputInfoAdd | eoID input information | Registers eoID input information (upward mapping) |

## 5. Dependency Trace

| # | Caller (Screen/Batch) | Call Chain (Full Path to this Method) | Terminal (SC / CRUD / Entity) |
|---|----------------------|--------------------------------------|-------------------------------|
| 1 | Screen:FUSV0356 (FUSV0356Operation) | `FUSV0356Operation.execute` -> CCRequestBroker `target57` -> `JFUMkmInfoAddFrontiaPreTrnCC.getDatamap` | `execEFU0381A010Merge [R] EFU0381A010CBS`, `callJFUMineoSetPlanWribCC [C] MinSetPlan`, `setJKKWrisvcAutoAplyCC [C] JKKWrisvcAutoApply`, `setJFUMineoSetPlanRenkeiCC [C] MinSetPlanRenkei`, `setFUSV016046SC [C] FUSV016046SC`, `setJFUEoidInputInfoAddCC [C] JFUEoidInputInfoAdd` |

## 6. Per-Branch Detail Blocks

**Block 1** — [SET] Initialize data envelope (L731)

> Extracts the FUSV035601CC message map from param and creates the service component request invoker.

| # | Type | Code |
|---|------|------|
| 1 | SET | `fusv035601ccMsg = (Map)param.getData("FUSV035601CC")` // Extract CC message map from param [-> "FUSV035601CC"] |
| 2 | SET | `scCall = new ServiceComponentRequestInvoker()` // Create SC invocation utility [-> Instantiates invoker instance] |

**Block 2** — [SET] Web submission temporary-save approval service call (L737-L741)

> Calls the EFU0381A010 merge approval service to validate the submitted content, retrieves the receipt number (`mskmsho_no`), extracts the submission content string (`mskmNaiyo`), and converts it from JSON to a Map for further processing.

| # | Type | Code |
|---|------|------|
| 1 | SET | `mskmsho_no = (String)fusv035601ccMsg.get(JFUMkmInfoAddFrontiaConstCC.MSKMSHO_NO)` [-> `mskmsho_no` = "mskmsho_no"] |
| 2 | CALL | `efu0381a010Msg = chkUtil.execEFU0381A010Merge(handle, scCall, param, fixedText, mskmsho_no)` // Web submission temporary-save approval service IF |
| 3 | SET | `mskmNaiyo = efu0381a010Msg.getString(EFU0381A010CBSMsg1List.MSKM_NAIYO)` [-> Extract submission content string] |
| 4 | CALL | `mapMskmNaiyo = JFUMkmInfoAddUtil.jsonToMap(mskmNaiyo)` // Convert JSON string to Map |

**Block 3** — [SET] Populate work area (L743-L745)

> Sets the receipt number and the parsed submission content into the work area.

| # | Type | Code |
|---|------|------|
| 1 | SET | `workArea.setMskmsho_no(mskmsho_no)` |
| 2 | SET | `chkUtil.setWorkArea(workArea, mapMskmNaiyo)` |

**Block 4** — [IF] Mansion/non-home type processing branch (L747)

> If the service type is mansion (MT) or mezon (MZ) — i.e., not home type — then attempt to pull additional property data from the mansion search results.

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `JFUMkmInfoAddFrontiaUtil.isTypeMTMZ(workArea)` [-> Condition: service type is mezon or mansion] |

**Block 4.1** — [IF] Mansion search result list exists and has exactly one entry (L751)

> If the search returned exactly one mansion result, populate the work area with that search result's data.

| # | Type | Code |
|---|------|------|
| 1 | SET | `resultList = (List)fusv035601ccMsg.get(JFUEohDnBknSearchBaseCC.RES_MANSION_SEARCH_LIST)` [-> Extract mansion search list] |
| 2 | IF | `resultList != null && resultList.size() == 1` |

**Block 4.1.1** — [SET] Single mansion result — populate from search data (L754)

| # | Type | Code |
|---|------|------|
| 1 | SET | `chkUtil.setWorkAreaFromBknData(workArea, resultList.get(0))` // Set work area from search result data |

**Block 4.2** — [SET] SYSID extraction from customer category map (L760-L772)

> Regardless of service type, extract SYSID from either the individual (KOJIN) or corporation (HOJIN) data map based on the service category.

| # | Type | Code |
|---|------|------|
| 1 | SET | `parentMap = new HashMap<>()` |
| 2 | SET | `childMap = new HashMap<>()` |
| 3 | SET | `kei_sbt = workArea.getKei_sbt()` // Read service category |
| 4 | SET | `parentMap = (HashMap)param.getData("FUSV015201CC")` |

**Block 4.2.1** — [IF-ELSE] Customer category branch (L764-L769)

> Branch on the service category constant to select the correct data map for SYSID extraction. `KEI_SBT_KOJINCD = "1"` for individual customers, `KEI_SBT_HOJINCD = "2"` for corporation customers.

| # | Type | Code |
|---|------|------|
| 1 | IF | `JFUStrConst.KEI_SBT_KOJINCD.equals(kei_sbt)` [-> `"1"` = individual] |

**Block 4.2.1.1** — [SET] Individual customer map (L766)

| # | Type | Code |
|---|------|------|
| 1 | SET | `childMap = (HashMap)param.getData("ECK0021D010")` [-> Personal/corporate individual data map] |

**Block 4.2.2** — [ELSE-IF] Corporation customer map (L768)

| # | Type | Code |
|---|------|------|
| 1 | SET | `childMap = (HashMap)param.getData("ECK0031D010")` [-> Corporation data map] |

**Block 4.2.3** — [SET] Finalize SYSID (L770-L771)

| # | Type | Code |
|---|------|------|
| 1 | SET | `workArea.setSysid((String)childMap.get("sysid"))` |
| 2 | SET | `fusv035601ccMsg.put("sysid", workArea.getSysid())` |

**Block 5** — [IF] EO optical net service contract number extraction (L774-L782)

> If EO optical net is active, extract the service contract number (`svc_kei_no`) from the net service data map and store it.

| # | Type | Code |
|---|------|------|
| 1 | SET | `okid_net = ""` // Initialize net contract number |
| 2 | IF | `workArea.getEonet()` [-> Condition: EO optical net flag] |

**Block 5.1** — [SET] Net contract number from EKK0091D010 (L776-L779)

| # | Type | Code |
|---|------|------|
| 1 | SET | `parentMap = (HashMap)param.getData("EKK0091D010")` |
| 2 | SET | `okid_net = (String)parentMap.get("svc_kei_no")` |
| 3 | SET | `workArea.setSvc_kei_no_net(okid_net)` |

**Block 6** — [IF] EO optical phone service contract number extraction (L783-L791)

> If EO optical phone is active, extract the service contract number from the phone service data map.

| # | Type | Code |
|---|------|------|
| 1 | SET | `okid_tel = ""` // Initialize phone contract number |
| 2 | IF | `workArea.getEotel()` [-> Condition: EO optical phone flag] |

**Block 6.1** — [SET] Phone contract number from EKK0111D010 (L785-L788)

| # | Type | Code |
|---|------|------|
| 1 | SET | `parentMap = (HashMap)param.getData("EKK0111D010")` |
| 2 | SET | `okid_tel = (String)parentMap.get("svc_kei_no")` |
| 3 | SET | `workArea.setSvc_kei_no_tel(okid_tel)` |

**Block 7** — [IF] EO optical TV service contract number extraction (L792-L800)

> If EO optical TV is active, extract the service contract number from the TV service data map.

| # | Type | Code |
|---|------|------|
| 1 | SET | `okid_tv = ""` // Initialize TV contract number |
| 2 | IF | `workArea.getEotv()` [-> Condition: EO optical TV flag] |

**Block 7.1** — [SET] TV contract number from EKK0101D010 (L794-L797)

| # | Type | Code |
|---|------|------|
| 1 | SET | `parentMap = (HashMap)param.getData("EKK0101D010")` |
| 2 | SET | `okid_tv = (String)parentMap.get("svc_kei_no")` |
| 3 | SET | `workArea.setSvc_kei_no_tv(okid_tv)` |

**Block 8** — [SET] Put contract numbers into FUSV035601CC message (L803-L807)

> Store the three extracted contract numbers into the FUSV035601CC message map for downstream use.

| # | Type | Code |
|---|------|------|
| 1 | SET | `fusv035601ccMsg.put("okid_net", okid_net)` |
| 2 | SET | `fusv035601ccMsg.put("okid_tel", okid_tel)` |
| 3 | SET | `fusv035601ccMsg.put("okid_tv", okid_tv)` |

**Block 9** — [IF] Submission number and detail number extraction (L810-L818)

> Extract submission number and per-service submission detail numbers from the FUSV035614SC data map.

| # | Type | Code |
|---|------|------|
| 1 | SET | `parentMap = (HashMap)param.getData("FUSV035614SC")` |
| 2 | IF | `parentMap != null` |

**Block 9.1** — [SET] Submission detail data (L813-L817)

| # | Type | Code |
|---|------|------|
| 1 | SET | `workArea.setMskm_no((String)parentMap.get("mskm_no"))` |
| 2 | SET | `workArea.setMskm_dtl_no_net((String)parentMap.get("ekk0091_mskm_dtl_no"))` |
| 3 | SET | `workArea.setMskm_dtl_no_tel((String)parentMap.get("ekk0111_mskm_dtl_no"))` |
| 4 | SET | `workArea.setMskm_dtl_no_tv((String)parentMap.get("ekk0101_mskm_dtl_no"))` |

**Block 10** — [IF] Service agreement work detail — net (L822-L825)

> Extract service agreement work detail number for net from EKK0171D010.

| # | Type | Code |
|---|------|------|
| 1 | SET | `parentMap = (HashMap)param.getData("EKK0171D010")` |
| 2 | IF | `parentMap != null` |

**Block 10.1** — [SET] Net work detail number (L823)

| # | Type | Code |
|---|------|------|
| 1 | SET | `workArea.setSvc_kei_ucwk_no_net((String)parentMap.get("svc_kei_ucwk_no"))` |

**Block 11** — [IF-ELSE] Service agreement work detail — phone (L827-L840)

> Extract service agreement work detail numbers for phone from EKK0191D010. The phone service supports up to 2 lines, stored as tel1 (first) and tel2 (second).

| # | Type | Code |
|---|------|------|
| 1 | SET | `parentMap = (HashMap)param.getData("EKK0191D010")` |
| 2 | SET | `cntAry = 0` |
| 3 | SET | `childMap = new HashMap()` |
| 4 | IF | `parentMap != null` |

**Block 11.1** — [WHILE] Iterate phone service agreement list (L831-L838)

> Loop through the EKK0191D010List array — first iteration sets tel1, subsequent iterations set tel2.

| # | Type | Code |
|---|------|------|
| 1 | SET | `cntAry = ((ArrayList)parentMap.get("EKK0191D010List")).size()` |
| 2 | FOR | `i = 0; i < cntAry; i++` |

**Block 11.1.1** — [SET] Get list item (L833)

| # | Type | Code |
|---|------|------|
| 1 | SET | `childMap = (HashMap)((ArrayList)parentMap.get("EKK0191D010List")).get(i)` |

**Block 11.1.2** — [IF] First iteration — tel1 (L834-L836)

| # | Type | Code |
|---|------|------|
| 1 | IF | `i == 0` [-> First phone line] |

**Block 11.1.2.1** — [SET] Set tel1 (L835)

| # | Type | Code |
|---|------|------|
| 1 | SET | `workArea.setSvc_kei_ucwk_no_tel1((String)childMap.get("svc_kei_ucwk_no"))` |

**Block 11.1.3** — [ELSE] Subsequent iterations — tel2 (L837)

| # | Type | Code |
|---|------|------|
| 1 | SET | `workArea.setSvc_kei_ucwk_no_tel2((String)childMap.get("svc_kei_ucwk_no"))` |

**Block 12** — [IF] Service agreement work detail — TV (L841-L847)

> Extract service agreement work detail number for TV from EKK0181D010. Only takes the first element (single line TV).

| # | Type | Code |
|---|------|------|
| 1 | SET | `parentMap = (HashMap)param.getData("EKK0181D010")` |
| 2 | IF | `parentMap != null` |

**Block 12.1** — [SET] TV work detail number (L844-L846)

| # | Type | Code |
|---|------|------|
| 1 | SET | `childMap = new HashMap()` |
| 2 | SET | `childMap = (HashMap)((ArrayList)parentMap.get("EKK0181D010List")).get(0)` |
| 3 | SET | `workArea.setSvc_kei_ucwk_no_tv((String)childMap.get("svc_kei_ucwk_no"))` |

**Block 13** — [IF] Circuit work detail number (L850-L857)

> Extract circuit work detail number from EKK0251D010. Only the first element is used — the comment notes this does not support multiple lines.

| # | Type | Code |
|---|------|------|
| 1 | SET | `parentMap = (HashMap)param.getData("EKK0251D010")` |
| 2 | IF | `parentMap != null` |

**Block 13.1** — [SET] Circuit work detail number (L853-L856)

> 1 line only corresponds — 1st unacquired (comment: "1回線しか対応しないので1番目の未取得" = "Only supports 1 line, so 1st unacquired")

| # | Type | Code |
|---|------|------|
| 1 | SET | `childMap = new HashMap()` |
| 2 | SET | `childMap = (HashMap)((ArrayList)parentMap.get("EKK0251D010List")).get(0)` |
| 3 | SET | `workArea.setSvc_kei_kaisen_ucwk_no((String)childMap.get("svc_kei_kaisen_ucwk_no"))` |

**Block 14** — [IF] Billing contract number (L860-L864)

> Extract billing contract number from EKK0491D010.

| # | Type | Code |
|---|------|------|
| 1 | SET | `parentMap = (HashMap)param.getData("EKK0491D010")` |
| 2 | IF | `parentMap != null` |

**Block 14.1** — [SET] Billing contract number (L862)

| # | Type | Code |
|---|------|------|
| 1 | SET | `workArea.setSeiky_kei_no((String)parentMap.get("seiky_kei_no"))` |

**Block 15** — [SET] Operation date-time stamp (L868)

> Generate the operation date-time stamp used as a reference timestamp for downstream processing.

| # | Type | Code |
|---|------|------|
| 1 | SET | `opeDateTimeStamp = JCCBPCommon.getOpeDateTimeStamp(null)` |

**Block 16** — [SET] Discount service auto-application mapping (L871)

> Map work area data to the JKKWrisvcAutoAplyCC for automatic discount service application.

| # | Type | Code |
|---|------|------|
| 1 | SET | `mapper.setJKKWrisvcAutoAplyCC(workArea, param)` |

**Block 17** — [IF] Minimo setplan discount processing branch (L872-L887)

> If the mino setplan key exists AND EO optical net is active, acquire mino set discount information and register the mino setplan linkage.

| # | Type | Code |
|---|------|------|
| 1 | IF | `!JFUBPCommon.isNull(workArea.getMineo_setplan_kbn) && workArea.getEonet()` |

**Block 17.1** — [SET] Acquire mino set discount information (L876-L882)

> Call the mino set discount information acquisition CC and extract campaign code and end date from the result.

| # | Type | Code |
|---|------|------|
| 1 | SET | `parentMap = new HashMap<>()` |
| 2 | CALL | `callJFUMineoSetPlanWribCC(handle, param)` // Minimo set discount information acquisition CC |
| 3 | SET | `parentMap = (HashMap)param.getData("JFUMineoSetPlanWribCC")` |
| 4 | IF | `parentMap != null` |

**Block 17.1.1** — [SET] Campaign info from mino set result (L878-L881)

| # | Type | Code |
|---|------|------|
| 1 | SET | `dsp_campaign_cd = (String)parentMap.get("dsp_campaign_cd")` |
| 2 | SET | `workArea.setMineoSetCampaign_cd(dsp_campaign_cd)` |
| 3 | SET | `uk_end_ymdhm = (String)parentMap.get("uk_end_ymdhm")` |
| 4 | SET | `workArea.setMineoSetCampaign_end_ymd(uk_end_ymdhm)` |

**Block 17.2** — [SET] Minimo setplan linkage registration (L885)

| # | Type | Code |
|---|------|------|
| 1 | SET | `mapper.setJFUMineoSetPlanRenkeiCC(workArea, param, mskmsho_no, opeDateTimeStamp)` |

**Block 18** — [SET] Discount service registration (L888)

> Register the discount service (contents registration) via the FUSV016046SC mapping.

| # | Type | Code |
|---|------|------|
| 1 | SET | `mapper.setFUSV016046SC(workArea, param)` |

**Block 19** — [SET] eoID input information registration (L890-L891)

> Register the eoID input information via upward mapping.

| # | Type | Code |
|---|------|------|
| 1 | SET | `mapper.setJFUEoidInputInfoAddCC(workArea, param)` |

**Block 20** — [RETURN] Return (L893)

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

## 7. Glossary

| Term | Type | Business Meaning |
|------|------|------------------|
| `mskmsho_no` | Field | Receipt number — the acknowledgment/receipt number assigned when web submission content is temporarily saved and approved |
| `mskmNaiyo` | Field | Submission content — the JSON-formatted service content submitted via the web |
| `mskm_no` | Field | Submission number — the formal submission ID assigned to the registration request |
| `mskm_dtl_no_*` | Field | Submission detail number — per-service (net/tel/tv) submission line item IDs |
| `svc_kei_no` | Field | Service contract number — the unique identifier for a service contract line (net, phone, or TV) |
| `svc_kei_ucwk_no` | Field | Service work detail number — internal work processing ID for a service agreement line item |
| `svc_kei_kaisen_ucwk_no` | Field | Circuit work detail number — work ID for the physical circuit installation line item |
| `seiky_kei_no` | Field | Billing contract number — the contract number associated with billing/invoicing |
| `sysid` | Field | System ID — the unique identifier for the customer account (individual or corporate) |
| `kei_sbt` | Field | Service category — classifies the customer type: "1" for individual (KOJIN), "2" for corporation (HOJIN) |
| `mineo_setplan_kbn` | Field | Minimo setplan key code — identifies a mobile (minimo) bundle plan key for discount eligibility |
| `dsp_campaign_cd` | Field | Display campaign code — the promotional campaign code for mino set discounts |
| `uk_end_ymdhm` | Field | Usage cut end date/time — the deadline for the mino set campaign discount |
| `okid_net` | Field | EO optical net contract number — shorthand alias for the net service contract number |
| `okid_tel` | Field | EO optical phone contract number — shorthand alias for the phone service contract number |
| `okid_tv` | Field | EO optical TV contract number — shorthand alias for the TV service contract number |
| `eonet` | Field | EO optical net flag — boolean indicating whether EO optical net broadband service is included |
| `eotel` | Field | EO optical phone flag — boolean indicating whether EO optical phone service is included |
| `eotv` | Field | EO optical TV flag — boolean indicating whether EO optical TV service is included |
| `FUSV035601CC` | CC Name | Web submission initial save CC — the primary CC message envelope for the FUSV0356 (general web service subscription) screen |
| `FUSV035614SC` | SC Code | Submission data SC — service component handling submission number data |
| `EKK0091D010` | SC Code | EO optical net service contract data — data structure for net service contract numbers |
| `EKK0111D010` | SC Code | EO optical phone service contract data — data structure for phone service contract numbers |
| `EKK0101D010` | SC Code | EO optical TV service contract data — data structure for TV service contract numbers |
| `EKK0171D010` | SC Code | Service agreement work detail (net) |
| `EKK0191D010` | SC Code | Service agreement work detail (phone) — supports multi-line (up to 2) |
| `EKK0181D010` | SC Code | Service agreement work detail (TV) |
| `EKK0251D010` | SC Code | Circuit work detail — physical circuit installation tracking |
| `EKK0491D010` | SC Code | Billing contract number data |
| `ECK0021D010` | SC Code | Individual (KOJIN) customer data map |
| `ECK0031D010` | SC Code | Corporation (HOJIN) customer data map |
| `EFU0381A010CBS` | CBS | Web submission temporary-save approval CBS — service that validates and approves web submission content |
| `JFUMineoSetPlanWribCC` | CC Name | Minimo set discount information acquisition CC — retrieves mobile set plan discount campaign data |
| `JFUMineoSetPlanRenkeiCC` | CC Name | Minimo setplan linkage CC — registers mobile setplan discount eligibility linkage |
| `JKKWrisvcAutoAplyCC` | CC Name | Discount service auto-application CC — configures automatic discount service application |
| `FUSV016046SC` | SC Code | Discount service (contents) registration SC |
| `JFUEoidInputInfoAddCC` | CC Name | eoID input information registration CC — registers customer eoID data |
| `JFUMkmInfoAddFrontiaPreTrnCC` | CC Name | Frontia subscription registration pre-processing CC — the class containing this method |
| `JFUMkmInfoAddFrontiaWorkArea` | WorkArea | Shared in-memory work data area holding all subscription processing state |
| FTTH | Business term | Fiber To The Home — fiber-optic broadband internet service (referred to as "Frontia" in the system) |
| 受付番号 (uketsuke-bangou) | Japanese | Receipt/acknowledgment number — generated when web form data is temporarily saved |
| 申込み内容 (moushikomi-naiyo) | Japanese | Submission content — the actual service content data submitted by the customer |
| 契約番号 (keiyaku-bangou) | Japanese | Contract number — the service contract identifier |
| 内訳番号 (uchiwake-bangou) | Japanese | Work detail number — internal breakdown ID for a service agreement line item |
| 回線 (kaisen) | Japanese | Circuit — the physical telecommunications line |
| 請求契約 (seikyuu-keiyaku) | Japanese | Billing contract — the contract associated with invoicing |
| メゾン (mezon) | Japanese | Mezon — a building-type housing unit (non-home, non-mansion category) |
| マンション (manshon) | Japanese | Mansion — an apartment building type housing unit |
| ホーム (hoomu) | Japanese | Home — a standalone house housing type |
| 個人 (kojin) | Japanese | Individual — individual customer category |
| 法人 (houjin) | Japanese | Corporation — corporate/customer entity category |
| 割引 (waribiki) | Japanese | Discount — promotional/service discount processing |
| 引受 (hikiuke) | Japanese | Submission/acceptance — the act of submitting and accepting a service request |
| 予約 (yoyaku) | Japanese | Reservation — typically refers to scheduled work appointment |
| MINIMO | Business term | K-Opticom's mobile phone service brand — often bundled with fixed-line broadband services |
| eo光 (eo hikari) | Business term | eo Optical — K-Opticom's fiber-optic broadband and communication service suite (net, phone, TV) |
| ServiceComponentRequestInvoker | Technical | Framework utility class for invoking Service Component (SC) and CBS (Business Service) calls |
| CCRequestBroker | Technical | Framework orchestrator that manages CC (Common Component) execution and exception handling in BPM workflows |
