# Business Logic — JKKPopPwdShkkaRnkAddCC.mappingEKK0361C050InMsg() [313 LOC]

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

## 1. Role

### JKKPopPwdShkkaRnkAddCC.mappingEKK0361C050InMsg()

This method is an **inbound message mapper** for the SIF (Service Interface) communication contract `EKK0361C050` — the "ISP Active Subscription Email Listing" service interface. Its sole business responsibility is to populate a `CAANMsg` template with the field values required to invoke the downstream `EKK0361C050CBSMsg` service component. It acts as a **data transformation bridge** between the application's internal hash-based parameter representation (used by calling screens and CBS layers) and the structured SIF message format expected by the service bus.

The method draws data from three distinct source maps: `eKK0351A010Hash` (derived from `eKK0351A010HashLsit`, containing service-level contract and date information), `popIdSkkHashList` (reassigned to `eKK0361A010Hash`, containing ISP account and hosting configuration details), and `resultHash` (used to retrieve `EKK0011D020` message data for the detail number `MSKM_DTL_NO`). It performs no conditional branching — it is a pure, linear field-by-field mapper that copies 46+ fields from source hashes onto the target `CAANMsg` template.

As a **private helper method**, it is always invoked by its parent's orchestration method `callEKK0361C050SC`, which handles the SIF call lifecycle (request setup, service invocation, status checking, and result extraction). This separation of concerns follows a consistent pattern across the codebase where `mapping*InMsg` methods handle data preparation and `mapping*SCOutMsg` methods handle result deserialization.

## 2. Processing Pattern (Detailed Business Logic)

```mermaid
flowchart TD
    START(["mappingEKK0361C050InMsg called"])

    START --> S1["S1: Initialize local variables
(eKK0351A010Hash, eKK0361A010Hash, eKK0011D020Hash)"]
    S1 --> S2["S2: fillCAANMSGNullMapping
template + EKK0361C050CBSMsg contents
Set all fields to null defaults"]
    S2 --> S3["S3: template.set TEMPLATEID
= EKK0361C050
[-> TEMPLATE_ID_EKK0361C050=EKK0361C050 (JKKPopPwdShkkaRnkAddCC.java:157)]"]
    S3 --> S4["S4: template.set FUNC_CODE
= 1"]
    S4 --> S5["S5: eKK0351A010Hash
= eKK0351A010HashLsit"]
    S5 --> S6["S6: eKK0361A010Hash
= popIdSkkHashList"]
    S6 --> S7["S7: eKK0011D020Hash
= resultHash.get(EKK0011D020)
[-> TEMPLATE_ID_EKK0011D020=EKK0011D020 (JKKPopPwdShkkaRnkAddCC.java:139)]"]
    S7 --> S8["S8: eKK0011D020CBSMSG1LIST
= eKK0011D020Hash.get(EKK0011D020CBSMSG1LIST)"]
    S8 --> S9["S9: eKK0011D020CBSMSG
= eKK0011D020CBSMSG1LIST[0]"]
    S9 --> S10["S10: retHash
= eKK0011D020CBSMSG.getMsgData()"]

    S10 --> B1["B1: Set fields from eKK0351A010Hash
- OP_SVC_KEI_NO
- FTRIAL_KANYU_YMD
- HONKANYU_YMD
- HONKANYU_IKO_KIGEN_YMD
- PNLTY_HASSEI_CD
- UPD_DTM_BF
- DSP_SVCTK_STAYMD
- SVCTK_BUT_DEL_TRN_JSSI_DTM"]
    B1 --> B2["B2: Set MSKM_DTL_NO from retHash
(EKK0011D020 first message)
instead of eKK0011D020Hash"]
    B2 --> B3["B3: Set IDO_DIV = 00052
[-> IDO_DIV_00052=00052 (JKKPopPwdShkkaRnkAddCC.java:129)]"]
    B3 --> B4["B4: Set 40+ fields from eKK0361A010Hash
(Mail accounts, IP, hosting,
dial-up, VoIP, mail gateway,
service settings)"]
    B4 --> B5["B5: Set IPV6_AD_IFID from eKK0361A010Hash"]
    B5 --> B6["B6: Set DSP_SVCTK_STAYMD
SVCTK_BUT_DEL_TRN_JSSI_DTM
from eKK0351A010Hash"]
    B6 --> END(["Return void"])

    S1 --> S2
    S2 --> S3
    S3 --> S4
    S4 --> S5
    S5 --> S6
    S6 --> S7
    S7 --> S8
    S8 --> S9
    S9 --> S10
    S10 --> B1
    B1 --> B2
    B2 --> B3
    B3 --> B4
    B4 --> B5
    B5 --> B6
```

**Processing Flow Summary:**

1. **Null Mapping Initialization** — All fields in the template are set to null defaults using `fillCAANMSGNullMapping` with an empty `EKK0361C050CBSMsg` as the reference.
2. **Template Metadata** — The template ID and function code are set to identify this as a `EKK0361C050` request with function code `1` (check/register).
3. **Parameter Alias Setup** — The incoming `eKK0351A010HashLsit` and `popIdSkkHashList` parameters are assigned to local aliases `eKK0351A010Hash` and `eKK0361A010Hash` respectively for cleaner field access.
4. **Detail Number Extraction** — The `EKK0011D020` message data is retrieved from `resultHash`, extracted from the message list array, and the first element's `msgData` map is used as `retHash` for the `MSKM_DTL_NO` field.
5. **Field Population** — Individual `template.set()` calls copy values from the source hashes to the template fields in a linear sequence.

## 3. Parameter Analysis

| No | Parameter Name | Type | Business Description |
|----|---------------|------|---------------------|
| 1 | `template` | `CAANMsg` | The SIF request message template to be populated. This is a newly created `CAANMsg` (type `EKK0361C050CBSMsg`) that will be sent to the service bus as the outbound request. Business meaning: the structured request envelope for the ISP Active Subscription Email Listing SIF call. |
| 2 | `inHash` | `HashMap<String, Object>` | Input condition hash passed from the caller screen. In this method, it is **not used** — it is accepted for API consistency with other `mapping*InMsg` methods but no fields are read from it. |
| 3 | `resultHash` | `HashMap<String, Object>` | Result hash containing previously retrieved data. Specifically used to look up the `EKK0011D020` template entry, which holds detail number (`MSKM_DTL_NO`) data from a prior service call. Business meaning: cross-references prior service results into this request. |
| 4 | `eKK0351A010HashLsit` | `HashMap<String, Object>` | Application-specific parameter hash containing ISP service contract header data — includes service detail number, trial/completion dates, penalty codes, last update timestamp, and service provision dates. Business meaning: the service contract context (customer, dates, and financial terms) for the email listing request. |
| 5 | `popIdSkkHashList` | `HashMap<String, Object>` | Application-specific parameter hash containing ISP account and hosting configuration — includes email accounts, IP settings, hosting mail parameters, dial-up credentials, VoIP IDs, mail gateway settings, and service-specific contact info. Business meaning: the complete ISP account profile and configuration details for the subscription. |
| 6 | `i` | `int` | An integer index parameter. In this method, it is **not used** — accepted for API consistency but has no effect on processing. |

**Local Variables (Derived State):**

| Variable | Type | Business Description |
|----------|------|---------------------|
| `eKK0351A010Hash` | `HashMap<String, Object>` | Alias for `eKK0351A010HashLsit` — source of service contract header fields |
| `eKK0361A010Hash` | `HashMap<String, Object>` | Alias for `popIdSkkHashList` — source of ISP account configuration fields |
| `eKK0011D020Hash` | `HashMap<String, Object>` | Retrieved from `resultHash` — contains prior `EKK0011D020` service results |
| `eKK0011D020CBSMSG1LIST` | `CAANMsg[]` | Message array from `EKK0011D020` results |
| `eKK0011D020CBSMSG` | `CAANMsg` | First element of the message array |
| `retHash` | `HashMap<String, Object>` | Message data map from the first `EKK0011D020` message — source of `MSKM_DTL_NO` |

## 4. CRUD Operations / Called Services

| CRUD | SC / CBS | SC Code | Entity / DB | Operation Description |
|------|----------|---------|-------------|----------------------|
| R | `JKKPopPwdShkkaRnkAddCC.fillCAANMSGNullMapping` | JKKPopPwdShkkaRnkAddCC | - | Calls `fillCAANMSGNullMapping` to initialize all template fields to null defaults using `EKK0361C050CBSMsg` structure as reference |
| R | `EKK0361C050CBSMsg.getContents` | EKK0361C050CBSMsg | - | Creates a new empty `EKK0361C050CBSMsg` instance and retrieves its contents as a map for null mapping reference |
| R | `CAANMsg.get(String)` | - | - | Reads `EKK0011D020` entry from `resultHash` map |
| R | `CAANMsg.get(String)` | - | - | Reads `EKK0011D020CBSMSG1LIST` from `eKK0011D020Hash` map |
| R | `CAANMsg.getMsgData()` | - | - | Extracts the underlying `HashMap<String, Object>` data from an `EKK0011D020` message element |

**Note:** This method is a **pure mapping/transformation** method — it performs no direct database operations. All data flows come from the input `HashMap` parameters which were previously populated by earlier service calls in the calling chain. The only external service invocation is `fillCAANMSGNullMapping` which sets default values on the template. The actual SIF call (`callSvcInter`) is performed by the caller method `callEKK0361C050SC`, not within this method.

## 5. Dependency Trace

| # | Caller (Screen/Batch) | Call Chain (Full Path to this Method) | Terminal (SC / CRUD / Entity) |
|---|----------------------|--------------------------------------|-------------------------------|
| 1 | CBS: `callEKK0361C050SC` | `callEKK0361C050SC` -> `mappingEKK0361C050InMsg` -> `fillCAANMSGNullMapping` | `fillCAANMSGNullMapping [-]` (no DB operation — template initialization only) |
| 2 | CBS: `callEKK0361C050SC` (cont.) | `callEKK0361C050SC` -> `mappingEKK0361C050InMsg` -> `EKK0361C050CBSMsg.getContents` | `getContents [-]` (no DB — returns empty message structure) |
| 3 | Upstream caller of `callEKK0361C050SC` | (screen/batch entry) -> `callEKK0361C050SC` -> `mappingEKK0361C050InMsg` | `callSvcInter` -> SIF call to downstream service EKK0361C050 |

**Upstream Context:** The method is always invoked within the `callEKK0361C050SC` method, which:
1. Sets up common SIF request information via `editInMsgCmn`
2. Creates the template via `new CAANMsg(EKK0361C050CBSMsg.class.getName())`
3. Populates it by calling `mappingEKK0361C050InMsg`
4. Applies basic settings via `editBasicCmn`
5. Sends the SIF request via `callSvcInter`
6. Extracts status and results if successful

## 6. Per-Branch Detail Blocks

This method has **no conditional branches** (no if/else, no switch, no loops). It is a strictly linear field-mapping sequence. The blocks below represent logical groupings of sequential `template.set()` operations.

**Block 1** — [VARIABLE INITIALIZATION] (L1717)

> Initializes three local hash variables to null. These will be assigned to parameter aliases and extracted data sources in subsequent steps.

| # | Type | Code |
|---|------|------|
| 1 | SET | `eKK0351A010Hash = null` |
| 2 | SET | `eKK0361A010Hash = null` |
| 3 | SET | `eKK0011D020Hash = null` |

**Block 2** — [NULL MAPPING] (L1720)

> Initializes all fields of the template to null defaults. This ensures no stale data from the CBSMsg class persists in the template before new values are set. Comment: "まずは大条件のNullマッピング" (First, null-map all conditions).

| # | Type | Code |
|---|------|------|
| 1 | CALL | `fillCAANMSGNullMapping(template, new EKK0361C050CBSMsg().getContents())` |

**Block 3** — [TEMPLATE ID SETUP] (L1723)

> Sets the SIF template ID to identify this as an EKK0361C050 request.

| # | Type | Code |
|---|------|------|
| 1 | SET | `template.set(EKK0361C050CBSMsg.TEMPLATEID, TEMPLATE_ID_EKK0361C050)` [-> TEMPLATE_ID_EKK0361C050="EKK0361C050" (JKKPopPwdShkkaRnkAddCC.java:157)] |

**Block 4** — [FUNCTION CODE SETUP] (L1726)

> Sets the function code to "1" (check/register). Comment: "機能コード" (Function code).

| # | Type | Code |
|---|------|------|
| 1 | SET | `template.set(EKK0361C050CBSMsg.FUNC_CODE, "1")` |

**Block 5** — [PARAMETER ALIAS ASSIGNMENT] (L1729–L1730)

> Assigns incoming parameters to local aliases for cleaner field access throughout the remaining mapping logic.

| # | Type | Code |
|---|------|------|
| 1 | SET | `eKK0351A010Hash = eKK0351A010HashLsit` |
| 2 | SET | `eKK0361A010Hash = popIdSkkHashList` |

**Block 6** — [EKK0011D020 DATA EXTRACTION] (L1736–L1743)

> Extracts detail number data from a prior service result. The EKK0011D020 message data is retrieved from the resultHash, the message array is obtained, the first element is selected, and its msgData map is used as the source for MSKM_DTL_NO. Comments: "2012-3-14 ST1-2012-0000012 ADD_START/END" indicating a version-controlled enhancement.

| # | Type | Code |
|---|------|------|
| 1 | SET | `eKK0011D020CBSMSG1LIST = null` |
| 2 | SET | `eKK0011D020CBSMSG = null` |
| 3 | SET | `retHash = null` |
| 4 | SET | `eKK0011D020Hash = (HashMap<String, Object>) resultHash.get(TEMPLATE_ID_EKK0011D020)` [-> TEMPLATE_ID_EKK0011D020="EKK0011D020" (JKKPopPwdShkkaRnkAddCC.java:139)] |
| 5 | SET | `eKK0011D020CBSMSG1LIST = (CAANMsg[]) eKK0011D020Hash.get(EKK0011D020CBSMsg.EKK0011D020CBSMSG1LIST)` |
| 6 | SET | `eKK0011D020CBSMSG = eKK0011D020CBSMSG1LIST[0]` |
| 7 | SET | `retHash = eKK0011D020CBSMSG.getMsgData()` |

**Block 7** — [SET OP_SVC_KEI_NO FROM eKK0351A010Hash] (L1746–L1748)

> Sets the option service detail number. Comment: "オプションサービス契約番号" (Option service contract number).

| # | Type | Code |
|---|------|------|
| 1 | SET | `template.set(EKK0361C050CBSMsg.OP_SVC_KEI_NO, eKK0351A010Hash.get(EKK0351A010CBSMsg1List.OP_SVC_KEI_NO))` |

**Block 8** — [SET MSKM_DTL_NO FROM retHash] (L1750–L1757)

> Sets the application detail number. Comment: "申請明細番号" (Application detail number). This value is sourced from `retHash` (EKK0011D020 first message) rather than from `eKK0011D020Hash`, as modified by version ST1-2012-0000012 (EDIT_START/EDIT_END comment block). The original source `eKK0011D020Hash.get(EKK0011D020CBSMsg1List.MSKM_DTL_NO)` is commented out.

| # | Type | Code |
|---|------|------|
| 1 | SET | `template.set(EKK0361C050CBSMsg.MSKM_DTL_NO, retHash.get(EKK0011D020CBSMsg1List.MSKM_DTL_NO))` |

**Block 9** — [SET DATE/TIME FIELDS FROM eKK0351A010Hash] (L1759–L1773)

> Sets trial and actual installation dates and the penalty occurrence code. Comments: "試用加成年月日" (Trial installation date), "本加成年月日" (Actual installation date), "本加入移行期限年月日" (Actual installation migration deadline date), "違約金発生コード" (Penalty occurrence code).

| # | Type | Code |
|---|------|------|
| 1 | SET | `template.set(EKK0361C050CBSMsg.FTRIAL_KANYU_YMD, eKK0351A010Hash.get(EKK0351A010CBSMsg1List.FTRIAL_KANYU_YMD))` |
| 2 | SET | `template.set(EKK0361C050CBSMsg.HONKANYU_YMD, eKK0351A010Hash.get(EKK0351A010CBSMsg1List.HONKANYU_YMD))` |
| 3 | SET | `template.set(EKK0361C050CBSMsg.HONKANYU_IKO_KIGEN_YMD, eKK0351A010Hash.get(EKK0351A010CBSMsg1List.HONKANYU_IKO_KIGEN_YMD))` |
| 4 | SET | `template.set(EKK0361C050CBSMsg.PNLTY_HASSEI_CD, eKK0351A010Hash.get(EKK0351A010CBSMsg1List.PNLTY_HASSEI_CD))` |

**Block 10** — [SET IDO_DIV] (L1775–L1778)

> Sets the movement division code to the hardcoded value `00052`. Comment: "異動区分" (Movement division). The constant `IDO_DIV_00052` is defined at JKKPopPwdShkkaRnkAddCC.java:129.

| # | Type | Code |
|---|------|------|
| 1 | SET | `template.set(EKK0361C050CBSMsg.IDO_DIV, IDO_DIV_00052)` [-> IDO_DIV_00052="00052" (JKKPopPwdShkkaRnkAddCC.java:129)] |

**Block 11** — [SET MAIL ACCOUNT FIELDS FROM eKK0361A010Hash] (L1780–L1786)

> Sets three desired email account fields. Comment: "希望メールアカウント1/2/3" (Desired mail account 1/2/3).

| # | Type | Code |
|---|------|------|
| 1 | SET | `template.set(EKK0361C050CBSMsg.KIBO_ML_ACCOUNT_1, eKK0361A010Hash.get(EKK0361A010CBSMsg1List.KIBO_ML_ACCOUNT_1))` |
| 2 | SET | `template.set(EKK0361C050CBSMsg.KIBO_ML_ACCOUNT_2, eKK0361A010Hash.get(EKK0361A010CBSMsg1List.KIBO_ML_ACCOUNT_2))` |
| 3 | SET | `template.set(EKK0361C050CBSMsg.KIBO_ML_ACCOUNT_3, eKK0361A010Hash.get(EKK0361A010CBSMsg1List.KIBO_ML_ACCOUNT_3))` |

**Block 12** — [SET IP NETWORK FIELDS FROM eKK0361A010Hash] (L1788–L1796)

> Sets fixed IP address, netmask, and email address. Comments: "固定IPアドレス" (Fixed IP address), "ネットマスク" (Netmask), "メールアドレス" (Email address).

| # | Type | Code |
|---|------|------|
| 1 | SET | `template.set(EKK0361C050CBSMsg.KOTEI_IP_AD, eKK0361A010Hash.get(EKK0361A010CBSMsg1List.KOTEI_IP_AD))` |
| 2 | SET | `template.set(EKK0361C050CBSMsg.NETMASK, eKK0361A010Hash.get(EKK0361A010CBSMsg1List.NETMASK))` |
| 3 | SET | `template.set(EKK0361C050CBSMsg.MLAD, eKK0361A010Hash.get(EKK0361A010CBSMsg1List.MLAD))` |

**Block 13** — [SET CAPACITY AND URL FIELDS FROM eKK0361A010Hash] (L1798–L1812)

> Sets capacity, URL domain, and URL account. Comments: "容量" (Capacity), "URL(ドメイン)" (URL (domain)), "URL(アカウント)" (URL (account)).

| # | Type | Code |
|---|------|------|
| 1 | SET | `template.set(EKK0361C050CBSMsg.CAPA, eKK0361A010Hash.get(EKK0361A010CBSMsg1List.CAPA))` |
| 2 | SET | `template.set(EKK0361C050CBSMsg.URL_DOMAIN, eKK0361A010Hash.get(EKK0361A010CBSMsg1List.URL_DOMAIN))` |
| 3 | SET | `template.set(EKK0361C050CBSMsg.URL_ACCOUNT, eKK0361A010Hash.get(EKK0361A010CBSMsg1List.URL_ACCOUNT))` |

**Block 14** — [SET MAILING LIST FIELDS FROM eKK0361A010Hash] (L1814–L1838)

> Sets mailing list name, display name, public flag, max users, admin email address. Comments: "メーリングリスト名" (Mailing list name), "メーリングリスト呼称" (Mailing list display name), "メーリングリスト公開要否" (Mailing list public yes/no), "メーリングリスト最大ユーザー数" (Mailing list max user count), "メーリングリスト管理者メールアドレス" (Mailing list admin email address).

| # | Type | Code |
|---|------|------|
| 1 | SET | `template.set(EKK0361C050CBSMsg.MLLIST_NM, eKK0361A010Hash.get(EKK0361A010CBSMsg1List.MLLIST_NM))` |
| 2 | SET | `template.set(EKK0361C050CBSMsg.MLLIST_KOSHO, eKK0361A010Hash.get(EKK0361A010CBSMsg1List.MLLIST_KOSHO))` |
| 3 | SET | `template.set(EKK0361C050CBSMsg.MLLIST_KOKAI_YH, eKK0361A010Hash.get(EKK0361A010CBSMsg1List.MLLIST_KOKAI_YH))` |
| 4 | SET | `template.set(EKK0361C050CBSMsg.MLLIST_MAX_USER_CNT, eKK0361A010Hash.get(EKK0361A010CBSMsg1List.MLLIST_MAX_USER_CNT))` |
| 5 | SET | `template.set(EKK0361C050CBSMsg.MLLIST_KRISHA_MLAD, eKK0361A010Hash.get(EKK0361A010CBSMsg1List.MLLIST_KRISHA_MLAD))` |

**Block 15** — [SET CUSTOM DOMAIN AND HOSTING FIELDS FROM eKK0361A010Hash] (L1840–L1868)

> Sets custom domain name, hosting mail account count, hosting mailbox capacity, hosting admin ID, hosting admin initial password, hosting admin POP ID, hosting admin POP ID initial password, hosting admin mail address, hosting admin mailbox capacity. Comments: "独自ドメイン名" (Custom domain name), "ホスティングメールアカウント数" (Hosting mail account count), "ホスティングメールボックス総容量" (Hosting mailbox total capacity), "ホスティングメール管理者ID" (Hosting mail admin ID), "ホスティングメール管理者POPID" (Hosting mail admin POP ID), etc.

| # | Type | Code |
|---|------|------|
| 1 | SET | `template.set(EKK0361C050CBSMsg.DOKUJI_DOMAIN_NM, eKK0361A010Hash.get(EKK0361A010CBSMsg1List.DOKUJI_DOMAIN_NM))` |
| 2 | SET | `template.set(EKK0361C050CBSMsg.HOSML_ACCOUNT_CNT, eKK0361A010Hash.get(EKK0361A010CBSMsg1List.HOSML_ACCOUNT_CNT))` |
| 3 | SET | `template.set(EKK0361C050CBSMsg.HOSML_BOX_CAPA, eKK0361A010Hash.get(EKK0361A010CBSMsg1List.HOSML_BOX_CAPA))` |
| 4 | SET | `template.set(EKK0361C050CBSMsg.HOSML_KRISHA_ID, eKK0361A010Hash.get(EKK0361A010CBSMsg1List.HOSML_KRISHA_ID))` |
| 5 | SET | `template.set(EKK0361C050CBSMsg.HOSTING_SHKM_KRISHA_ID_PWD, eKK0361A010Hash.get(EKK0361A010CBSMsg1List.HOSTING_SHKM_KRISHA_ID_PWD))` |
| 6 | SET | `template.set(EKK0361C050CBSMsg.HOSML_KRISHA_POP_ID, eKK0361A010Hash.get(EKK0361A010CBSMsg1List.HOSML_KRISHA_POP_ID))` |
| 7 | SET | `template.set(EKK0361C050CBSMsg.HOS_SHKM_KRISHA_POP_ID_PWD, eKK0361A010Hash.get(EKK0361A010CBSMsg1List.HOS_SHKM_KRISHA_POP_ID_PWD))` |
| 8 | SET | `template.set(EKK0361C050CBSMsg.HOSML_KRISHA_MLAD, eKK0361A010Hash.get(EKK0361A010CBSMsg1List.HOSML_KRISHA_MLAD))` |
| 9 | SET | `template.set(EKK0361C050CBSMsg.HOSML_KRISHA_MAIL_BOX_CAPA, eKK0361A010Hash.get(EKK0361A010CBSMsg1List.HOSML_KRISHA_MAIL_BOX_CAPA))` |

**Block 16** — [SET DIAL-UP PADDLE CREDENTIAL FIELDS FROM eKK0361A010Hash] (L1870–L1894)

> Sets dial-up paddle ID, ISP ID, MAP ID, PIN, mail address, and public flag. Comments: "ダイヤルパッドID" (Dial paddle ID), "ダイヤルパッドISPID" (Dial paddle ISP ID), "ダイヤルパッドMAPID" (Dial paddle MAP ID), "ダイヤルパッドPIN" (Dial paddle PIN), "ダイヤルパッドメールアドレス" (Dial paddle email address), "ダイヤルパッドID公開要否" (Dial paddle ID public yes/no).

| # | Type | Code |
|---|------|------|
| 1 | SET | `template.set(EKK0361C050CBSMsg.DPAD_ID, eKK0361A010Hash.get(EKK0361A010CBSMsg1List.DPAD_ID))` |
| 2 | SET | `template.set(EKK0361C050CBSMsg.DPAD_ISP_ID, eKK0361A010Hash.get(EKK0361A010CBSMsg1List.DPAD_ISP_ID))` |
| 3 | SET | `template.set(EKK0361C050CBSMsg.DPAD_MAPID, eKK0361A010Hash.get(EKK0361A010CBSMsg1List.DPAD_MAPID))` |
| 4 | SET | `template.set(EKK0361C050CBSMsg.DPAD_PIN, eKK0361A010Hash.get(EKK0361A010CBSMsg1List.DPAD_PIN))` |
| 5 | SET | `template.set(EKK0361C050CBSMsg.DPAD_MLAD, eKK0361A010Hash.get(EKK0361A010CBSMsg1List.DPAD_MLAD))` |
| 6 | SET | `template.set(EKK0361C050CBSMsg.DPAD_ID_KOKAI_YH, eKK0361A010Hash.get(EKK0361A010CBSMsg1List.DPAD_ID_KOKAI_YH))` |

**Block 17** — [SET VOIP AND DNS FIELDS FROM eKK0361A010Hash] (L1896–L1904)

> Sets VoIP user ID and DNS setup code. Comments: "VoIPユーザーID" (VoIP user ID), "DNS設定コード" (DNS setup code).

| # | Type | Code |
|---|------|------|
| 1 | SET | `template.set(EKK0361C050CBSMsg.VOIP_USER_ID, eKK0361A010Hash.get(EKK0361A010CBSMsg1List.VOIP_USER_ID))` |
| 2 | SET | `template.set(EKK0361C050CBSMsg.DNS_SETTE_CD, eKK0361A010Hash.get(EKK0361A010CBSMsg1List.DNS_SETTE_CD))` |

**Block 18** — [SET MAIL GATEWAY FIELDS FROM eKK0361A010Hash] (L1906–L1928)

> Sets mail gateway admin ID, admin password, admin mail address, receive server IP, send server IP, and account count. Comments: "メールゲートウェイ管理者ID" (Mail gateway admin ID), "メールゲートウェイ管理者IDパスワード" (Mail gateway admin ID password), "メールゲートウェイ管理者メールアドレス" (Mail gateway admin email address), "メールゲートウェイ受信メールサーバーIPアドレス" (Mail gateway receive server IP address), "メールゲートウェイ送信メールサーバーIPアドレス" (Mail gateway send server IP address), "メールゲートウェイアカウント数" (Mail gateway account count).

| # | Type | Code |
|---|------|------|
| 1 | SET | `template.set(EKK0361C050CBSMsg.MAIL_GW_KRISHA_ID, eKK0361A010Hash.get(EKK0361A010CBSMsg1List.MAIL_GW_KRISHA_ID))` |
| 2 | SET | `template.set(EKK0361C050CBSMsg.MAIL_GW_KRISHA_ID_PWD, eKK0361A010Hash.get(EKK0361A010CBSMsg1List.SPOT_YGSITEBLCK_TRGT_SYSID))` |
| 3 | SET | `template.set(EKK0361C050CBSMsg.MAIL_GW_KRISHA_MLAD, eKK0361A010Hash.get(EKK0361A010CBSMsg1List.MAIL_GW_KRISHA_MLAD))` |
| 4 | SET | `template.set(EKK0361C050CBSMsg.MAIL_GW_RCV_MSERVER_IP_AD, eKK0361A010Hash.get(EKK0361A010CBSMsg1List.MAIL_GW_RCV_MSERVER_IP_AD))` |
| 5 | SET | `template.set(EKK0361C050CBSMsg.MAIL_GW_SEND_MSERVER_IP_AD, eKK0361A010Hash.get(EKK0361A010CBSMsg1List.MAIL_GW_SEND_MSERVER_IP_AD))` |
| 6 | SET | `template.set(EKK0361C050CBSMsg.ML_GW_ACCOUNT_CNT, eKK0361A010Hash.get(EKK0361A010CBSMsg1List.ML_GW_ACCOUNT_CNT))` |

**Block 19** — [SET SERVICE SETTINGS FIELDS FROM eKK0361A010Hash] (L1930–L1938)

> Sets service-specific contact email address and call detail public flag. Comments: "サービス個別設定連絡先メールアドレス" (Service individual setting contact email address), "電話明細公開要否" (Call detail public yes/no).

| # | Type | Code |
|---|------|------|
| 1 | SET | `template.set(EKK0361C050CBSMsg.SVC_KBT_SET_RRKS_MLAD, eKK0361A010Hash.get(EKK0361A010CBSMsg1List.SVC_KBT_SET_RRKS_MLAD))` |
| 2 | SET | `template.set(EKK0361C050CBSMsg.TUWA_DTL_KOKAI_YH, eKK0361A010Hash.get(EKK0361A010CBSMsg1List.TUWA_DTL_KOKAI_YH))` |

**Block 20** — [SET UPDATE TIMESTAMP FROM eKK0351A010Hash] (L1782–L1807, effective L1802–L1805)

> Sets the pre-update timestamp. Comment: "更新年月日时分秒(更新前)" (Update date/time/seconds (before update)). This was modified on 2013-09-10 by commercial order OM-2013-0001876 ("複数eo光ネット同一SYSIDの場合にシステムエラー") to eliminate a conditional check and always read directly from `eKK0351A010Hash` to prevent system errors when multiple eo Hikari Net services share the same SYSID. The original code had an if/else that checked whether `opLastUpdDtm` was empty.

| # | Type | Code |
|---|------|------|
| 1 | SET | `template.set(EKK0361C050CBSMsg.UPD_DTM_BF, eKK0351A010Hash.get(EKK0351A010CBSMsg1List.LAST_UPD_DTM))` |

**Block 21** — [SET IPV6 ADDRESS FIELD FROM eKK0361A010Hash] (L1812–L1815)

> Sets IPv6 address interface ID. Comment: "IPv6アドレス(インターフェイスID)" (IPv6 address (interface ID)). Added on 2013-09-10 by commercial order OM-2013-0001876.

| # | Type | Code |
|---|------|------|
| 1 | SET | `template.set(EKK0361C050CBSMsg.IPV6_AD_IFID, eKK0361A010Hash.get(EKK0361A010CBSMsg1List.IPV6_AD_IFID))` |

**Block 22** — [SET SERVICE PROVISION DATE/TIME FIELDS FROM eKK0351A010Hash] (L1818–L1829)

> Sets display service provision start date and service provision cessation processing execution date/time. Comments: "表示用サービス提供開始年月日" (Display service provision start date), "サービス提供物消去処理実施年月日时分秒" (Service provision data deletion processing execution date/time). Added on 2013-09-10 by commercial order OM-2013-0001876.

| # | Type | Code |
|---|------|------|
| 1 | SET | `template.set(EKK0361C050CBSMsg.DSP_SVCTK_STAYMD, eKK0351A010Hash.get(EKK0351A010CBSMsg1List.DSP_SVCTK_STAYMD))` |
| 2 | SET | `template.set(EKK0361C050CBSMsg.SVCTK_BUT_DEL_TRN_JSSI_DTM, eKK0351A010Hash.get(EKK0351A010CBSMsg1List.SVCTK_BUT_DEL_TRN_JSSI_DTM))` |

**Block 23** — [RETURN] (L1830)

> Method returns void — no explicit return statement. The populated `template` object is modified in place and used by the caller `callEKK0361C050SC`.

| # | Type | Code |
|---|------|------|
| 1 | RETURN | (implicit — void method, no return expression) |

## 7. Glossary

| Term | Type | Business Meaning |
|------|------|------------------|
| `OP_SVC_KEI_NO` | Field | Option service detail number — internal tracking ID for the option service contract line item |
| `MSKM_DTL_NO` | Field | Application detail number — unique detail number for the service application |
| `FTRIAL_KANYU_YMD` | Field | Trial installation date — date when the trial service period begins |
| `HONKANYU_YMD` | Field | Actual installation date — date when the full (non-trial) service starts |
| `HONKANYU_IKO_KIGEN_YMD` | Field | Actual installation migration deadline date — deadline for transitioning from trial to full service |
| `PNLTY_HASSEI_CD` | Field | Penalty occurrence code — code indicating whether and how a contractual penalty applies |
| `IDO_DIV` | Field | Movement division — classification code for account movement type; `00052` indicates ISP subscription change operations |
| `IDO_DIV_00052` | Constant | Movement division code value "00052" — hardcoded classification for ISP active subscription email listing |
| `KIBO_ML_ACCOUNT_1/2/3` | Field | Desired mail account 1/2/3 — customer's preferred email account addresses |
| `KOTEI_IP_AD` | Field | Fixed IP address — the customer's static IP address assignment |
| `NETMASK` | Field | Netmask — network subnet mask for the fixed IP configuration |
| `MLAD` | Field | Mail address — the customer's primary email address |
| `CAPA` | Field | Capacity — allocated service capacity (e.g., storage or bandwidth) |
| `URL_DOMAIN` | Field | URL domain — the domain portion of the customer's URL service |
| `URL_ACCOUNT` | Field | URL account — the account name for the URL service |
| `MLLIST_NM` | Field | Mailing list name — internal name for the mailing list |
| `MLLIST_KOSHO` | Field | Mailing list display name — human-readable name for the mailing list |
| `MLLIST_KOKAI_YH` | Field | Mailing list public yes/no — flag indicating whether the mailing list is publicly visible |
| `MLLIST_MAX_USER_CNT` | Field | Mailing list max user count — maximum number of subscribers allowed |
| `MLLIST_KRISHA_MLAD` | Field | Mailing list admin email address — email of the mailing list administrator |
| `DOKUJI_DOMAIN_NM` | Field | Custom domain name — the customer's own branded domain for hosting services |
| `HOSML_ACCOUNT_CNT` | Field | Hosting mail account count — number of email accounts in the hosting package |
| `HOSML_BOX_CAPA` | Field | Hosting mailbox total capacity — total storage capacity for all hosting mailboxes |
| `HOSML_KRISHA_ID` | Field | Hosting mail admin ID — administrator login ID for the hosting mail service |
| `HOSTING_SHKM_KRISHA_ID_PWD` | Field | Hosting initial mail admin ID password — initial password for the hosting mail admin ID |
| `HOSML_KRISHA_POP_ID` | Field | Hosting mail admin POP ID — POP3 login ID for hosting mail admin |
| `HOS_SHKM_KRISHA_POP_ID_PWD` | Field | Hosting initial mail admin POP ID password — initial password for the hosting mail admin POP ID |
| `HOSML_KRISHA_MLAD` | Field | Hosting mail admin email address — admin email for the hosting mail service |
| `HOSML_KRISHA_MAIL_BOX_CAPA` | Field | Hosting mail admin mailbox capacity — individual mailbox capacity for the hosting admin |
| `DPAD_ID` | Field | Dial paddle ID — login ID for the dial-up paddle service |
| `DPAD_ISP_ID` | Field | Dial paddle ISP ID — ISP identifier for the dial-up paddle |
| `DPAD_MAPID` | Field | Dial paddle MAP ID — mapping ID for the dial-up paddle service |
| `DPAD_PIN` | Field | Dial paddle PIN — personal identification number for dial-up paddle authentication |
| `DPAD_MLAD` | Field | Dial paddle mail address — email address for the dial-up paddle service |
| `DPAD_ID_KOKAI_YH` | Field | Dial paddle ID public yes/no — flag for public display of the dial paddle ID |
| `VOIP_USER_ID` | Field | VoIP user ID — login identifier for Voice over IP service |
| `DNS_SETTE_CD` | Field | DNS setup code — code specifying DNS configuration settings |
| `MAIL_GW_KRISHA_ID` | Field | Mail gateway admin ID — administrator login ID for the mail gateway service |
| `MAIL_GW_KRISHA_ID_PWD` | Field | Mail gateway admin ID password — password for the mail gateway admin ID |
| `MAIL_GW_KRISHA_MLAD` | Field | Mail gateway admin email address — admin email for the mail gateway |
| `MAIL_GW_RCV_MSERVER_IP_AD` | Field | Mail gateway receive server IP address — IP of the SMTP/POP receive server |
| `MAIL_GW_SEND_MSERVER_IP_AD` | Field | Mail gateway send server IP address — IP of the SMTP send server |
| `ML_GW_ACCOUNT_CNT` | Field | Mail gateway account count — number of mail gateway accounts |
| `SVC_KBT_SET_RRKS_MLAD` | Field | Service individual setting contact email address — contact email for service-specific settings |
| `TUWA_DTL_KOKAI_YH` | Field | Call detail public yes/no — flag for public display of call details |
| `UPD_DTM_BF` | Field | Update date/time before — timestamp of the last update before the current operation (pre-update snapshot) |
| `LAST_UPD_DTM` | Field | Last update date/time — timestamp of the most recent update from the service contract data |
| `IPV6_AD_IFID` | Field | IPv6 address interface ID — interface identifier for the customer's IPv6 address assignment |
| `DSP_SVCTK_STAYMD` | Field | Display service provision start date — date for display purposes indicating when the service provision starts |
| `SVCTK_BUT_DEL_TRN_JSSI_DTM` | Field | Service provision data deletion processing execution date/time — timestamp for executing data deletion when the service is discontinued |
| `TEMPLATE_ID_EKK0361C050` | Constant | Template ID "EKK0361C050" — identifies this SIF message as the ISP Active Subscription Email Listing request |
| `TEMPLATE_ID_EKK0011D020` | Constant | Template ID "EKK0011D020" — identifies the prior service result template for detail number extraction |
| `CAANMsg` | Technical | Communication message wrapper — Fujitsu's standard message class used for SIF (Service Interface) data exchange |
| `SIF` | Acronym | Service Interface Framework — the middleware layer for service-to-service communication in the platform |
| `CBS` | Acronym | CBS (Call Business Service) — the service component layer that executes business operations |
| `SC` | Acronym | Service Component — a module that encapsulates business logic and data access (e.g., EKK0361C050SC) |
| `EKK0361C050` | Domain | ISP Active Subscription Email Listing SIF — the service interface that returns email configuration details for an active ISP subscription |
| `EKK0011D020` | Domain | Prior service result — an EKK service result message containing detail number data |
| `EKK0351A010` | Domain | ISP service contract header — the service data containing contract dates, IDs, and financial terms |
| `eKK0361A010` | Domain | ISP account configuration — the account and hosting profile data for the ISP subscription |
| `fillCAANMSGNullMapping` | Method | Null mapping utility — initializes all fields of a CAANMsg template to null/default values |
| `callEKK0361C050SC` | Method | Calling parent — the CBS method that creates the template, calls this mapper, and executes the SIF invocation |
| `TEMPLATEID` | Field | SIF template ID — identifies the type of SIF message in the service bus routing |
| `FUNC_CODE` | Field | Function code — operational mode identifier; value "1" denotes check/register operations |
| `STATUS_INT_KEY` | Technical | Status key in JCMConstants — the message field that holds the SIF response status code |
| `JCMConstants` | Technical | Common constants utility class — shared constant definitions for the JCM (Joint Customer Management) framework |