---

# Business Logic — JKKPopPwdShkkaRnkAddCC.hakkoSOD() [55 LOC]

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

## 1. Role

### JKKPopPwdShkkaRnkAddCC.hakkoSOD()

This method serves as the **SOD (Service Order Data) issuance preparation and dispatch** method for the POP Password initialisation integration flow (POPPW 초기화 연계). It is invoked as part of the process where a POP (Point of Presence) ID's POP Password is reset and a corresponding service order must be issued to the back-end billing/fulfillment system.

Specifically, the method implements a **data builder + delegation pattern**: it constructs a hierarchical `sodTrgtData` map that represents the complete SOD entity, populating all required sub-sections — SOD basic information (system ID, movement division, password processing flags), service contract details, service contract internal details, operation service contract information, and machine provision service contract information. Once the data structure is fully assembled, it delegates to `JKKHakkoSODCC.hakkoSOD()` to perform the actual SOD creation/registration.

This method is a **private shared utility** called from multiple screen integration contexts (telecom optimization service masking, global IP addition confirmation, operations service telephone inspection addition, and its own `mainProc()` entry point). It handles a single service scenario: POP password re-issuance (password first-time issuance, indicated by `SAIHAKKO_DIV_SHOKIKA`), where the customer's POP password needs to be reset and a service order must be generated to activate the new credentials. There are no conditional branches in this method — it follows a single linear path of data preparation followed by one delegation call.

## 2. Processing Pattern (Detailed Business Logic)

```mermaid
flowchart TD
    START(["hakkoSOD(params)"])
    START --> STEP1["Create sodTrgtData map"]
    STEP1 --> STEP2["Create trgtDataList, put into sodTrgtData"]
    STEP2 --> STEP3["Create sodMap, add to trgtDataList"]
    STEP3 --> STEP4["Build sodKihonInfo (SOD basic info)"]
    STEP4 --> STEP4A["Put INFO_SYSID from eKK0081A010.get(sysid)"]
    STEP4 --> STEP4B["Put INFO_IDO_DIV = 00052"]
    STEP4 --> STEP4C["Put INFO_PASSWORD_SHORI_DIV = SAIHAKKO_DIV_SHOKIKA"]
    STEP4 --> STEP4D["Put INFO_PASSWORD_SAIHAKKO_DIV = SHORI_DIV_POP"]
    STEP4D --> STEP5["Put sodKihonInfo into sodMap under SOD_KIHON_INFO"]
    STEP5 --> STEP6["Build svcKeiInfo (service contract info)"]
    STEP6 --> STEP6A["Put INFO_SVC_KEI_NO from eKK0081A010.get(svc_kei_no)"]
    STEP6A --> STEP7["Put svcKeiInfo into sodMap under SVC_KEI_INFO"]
    STEP7 --> STEP8["Build svcKeiUcwkInfo (service contract internal details info)"]
    STEP8 --> STEP8A["Put INFO_SVC_KEI_UCWK_NO = empty string"]
    STEP8 --> STEP8B["Put INFO_CHAF_SVC_KEI_UCWK_GENE_ADD_DTM = empty string"]
    STEP8B --> STEP9["Put svcKeiUcwkInfo into sodMap under SVC_KEI_UCWK_INFO"]
    STEP9 --> STEP10["Build opSvcKeiInfo (operation service contract info)"]
    STEP10 --> STEP10A["Put INFO_CHAF_OPSVKEI_NO from eKK0351A010Hash.get(op_svc_kei_no)"]
    STEP10 --> STEP10B["Put INFO_CHAF_OPSVKEI_GENE_ADD_DTM from eKK0351A010Hash.get(gene_add_dtm)"]
    STEP10B --> STEP11["Put opSvcKeiInfo into sodMap under OPSVKEI_INFO"]
    STEP11 --> STEP12["Build kktsvkeiInfo (machine provision service contract info)"]
    STEP12 --> STEP13["Put kktsvkeiInfo into sodMap under KKTSVKEI_INFO"]
    STEP13 --> STEP14["Instantiate JKKHakkoSODCC"]
    STEP14 --> STEP15["Put FUNC_CODE_KEY = FUNC_CODE_1 into sodTrgtData"]
    STEP15 --> STEP16["param.setData(sodTrgtData, sodTrgtData)"]
    STEP16 --> STEP17["hakkoSODCC.hakkoSOD(handle, param, sodTrgtData)"]
    STEP17 --> END_NODE(["Return void"])
```

**CRITICAL — Constant Resolution:**
- `IDO_DIV_00052 = "00052"` — Movement division code indicating a specific type of service data transfer/movement [-> IDO_DIV_00052="00052" (JKKPopPwdShkkaRnkAddCC.java:125)]
- `FUNC_CODE_1 = "1"` — Function code for service order issuance [-> FUNC_CODE_1="1" (JKKPopPwdShkkaRnkAddCC.java:225)]
- `SAIHAKKO_DIV_SHOKIKA` — Password re-issuance division: first-time issuance [-> SAIHAKKO_DIV_SHOKIKA="01" (JKKHakkoSODConstCC.java, referenced at line 709)]
- `SHORI_DIV_POP` — Processing division: POP password handling [-> SHORI_DIV_POP (JKKHakkoSODConstCC.java, referenced at line 710)]

## 3. Parameter Analysis

| No | Parameter Name | Type | Business Description |
|----|---------------|------|---------------------|
| 1 | `param` | `IRequestParameterReadWrite` | Request parameter interface carrying data bidirectionally between the calling screen/controller and this component. Used to store the assembled `sodTrgtData` map via `setData()` for downstream consumption. |
| 2 | `handle` | `SessionHandle` | Session management handle containing transaction context (connection, security, locale) passed through to `JKKHakkoSODCC.hakkoSOD()` for the actual SOD creation operation. |
| 3 | `eKK0351A010Hash` | `HashMap<String, Object>` | Hash map carrying operation service contract data retrieved from screen EKK0351A010. Contains the operation service contract number (`op_svc_kei_no`) and generation addition timestamp (`gene_add_dtm`) used to populate the operation service contract info section of the SOD. |
| 4 | `eKK0081A010` | `HashMap<String, Object>` | Hash map carrying service contract agreement data retrieved from screen EKK0081A010. Contains the system ID (`sysid`) and service contract number (`svc_kei_no`) — the primary identifiers for the customer's active service contract being referenced in this SOD issuance. |

**Instance fields / external state read:**

| Field | Type | Business Description |
|-------|------|---------------------|
| `SYSID` | `static final String` | Key `"sysid"` — used to look up the system ID from `eKK0081A010` [-> SYSID="sysid" (JKKPopPwdShkkaRnkAddCC.java:106)] |
| `SVC_KEI_NO` | `static final String` | Key `"svc_kei_no"` — used to look up the service contract number from `eKK0081A010` [-> SVC_KEI_NO="svc_kei_no" (JKKPopPwdShkkaRnkAddCC.java:111)] |
| `OP_SVC_KEI_NO` | `static final String` | Key `"op_svc_kei_no"` — used to look up the operation service contract number from `eKK0351A010Hash` [-> OP_SVC_KEI_NO="op_svc_kei_no" (JKKPopPwdShkkaRnkAddCC.java:214)] |
| `GENE_ADD_DTM` | `static final String` | Key `"gene_add_dtm"` — used to look up the generation addition timestamp from `eKK0351A010Hash` [-> GENE_ADD_DTM="gene_add_dtm" (JKKPopPwdShkkaRnkAddCC.java:218)] |
| `IDO_DIV_00052` | `static final String` | Movement division code `"00052"` — indicates the specific type of data movement for this SOD context [-> IDO_DIV_00052="00052" (JKKPopPwdShkkaRnkAddCC.java:125)] |
| `FUNC_CODE_1` | `static final String` | Function code `"1"` — identifies this call as a service order issuance function [-> FUNC_CODE_1="1" (JKKPopPwdShkkaRnkAddCC.java:225)] |

## 4. CRUD Operations / Called Services

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

| CRUD | SC / CBS | SC Code | Entity / DB | Operation Description |
|------|----------|---------|-------------|----------------------|
| - | `JKKHakkoSODCC.hakkoSOD` | JKKHakkoSODCC | - | Calls `hakkoSOD` in `JKKHakkoSODCC` — delegates SOD issuance processing |

### Full method call analysis:

| CRUD | SC / CBS | SC Code | Entity / DB | Operation Description |
|------|----------|---------|-------------|----------------------|
| C | `JKKHakkoSODCC.hakkoSOD` | JKKHakkoSODCC | KK_T_OPSVKEI_ISP, KK_T_SVC_KEI, KK_T_SOD (inferred) | Creates a new Service Order Data record by passing the assembled `sodTrgtData` map to the SOD issuance SC. The SC internally handles all database insert operations for SOD-related tables including operation service contract info, service contract info, and SOD basic info records. |

**Note:** The `setData` calls on `param` are in-memory map operations (not DB operations) — they store the `sodTrgtData` structure into the request parameter for downstream consumption by the called `JKKHakkoSODCC.hakkoSOD()` method. The actual Create (C) operation against the database occurs within the called `JKKHakkoSODCC.hakkoSOD()` method's service component implementation, which is a separate method documented in its own DD.

## 5. Dependency Trace

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

No screen/batch entry points found within 8 hops. Direct callers found: 4 methods.
Terminal operations from this method: `hakkoSOD` [-], `setData` [-], `setData` [-], `setData` [-], `setData` [-], `setData` [-]

| # | Caller (Screen/Batch) | Call Chain (Full Path to this Method) | Terminal (SC / CRUD / Entity) |
|---|----------------------|--------------------------------------|-------------------------------|
| 1 | Screen:KKSV0115 | `KKSV011501CC` -> `JKKPopPwdShkkaRnkAddCC.mainProc()` -> `JKKPopPwdShkkaRnkAddCC.hakkoSOD()` | `hakkoSOD [C] KK_T_SOD` |
| 2 | Controller | `JFUTelOptSvcMskmCmpCC.setSaveData()` -> `JKKPopPwdShkkaRnkAddCC.hakkoSOD()` | `hakkoSOD [C] KK_T_SOD` |
| 3 | Controller | `JKKGlobalIpAddCfmCC.main()` -> `JKKPopPwdShkkaRnkAddCC.hakkoSOD()` | `hakkoSOD [C] KK_T_SOD` |
| 4 | Controller | `JKKOpsvkeiTelIktAddCC.mainProc()` -> `JKKPopPwdShkkaRnkAddCC.hakkoSOD()` | `hakkoSOD [C] KK_T_SOD` |
| 5 | Controller | `JKKPopPwdShkkaRnkAddCC.mainProc()` -> `JKKPopPwdShkkaRnkAddCC.hakkoSOD()` | `hakkoSOD [C] KK_T_SOD` |

**Instructions:**
- Row 1: `KKSV0115` is a screen (matches `KKSV\d{4}` pattern) — the POP Password initialisation screen that triggers the full flow.
- Rows 2–5: These are controller/common component classes that call `hakkoSOD()` directly as part of their own integration logic when handling POP-related operations.

## 6. Per-Branch Detail Blocks

**Block 1** — [SET] `(sodTrgtData creation)` (L697)

> SOD target data preparation — creates the root-level map that holds the complete SOD structure.

| # | Type | Code |
|---|------|------|
| 1 | SET | `HashMap<String, Object> sodTrgtData = new HashMap<String, Object>();` // SOD target data map (SOD対象データマップ) |
| 2 | SET | `ArrayList<HashMap<String, Object>> trgtDataList = new ArrayList<HashMap<String, Object>>();` // SOD target data list (SOD対象データリスト) |
| 3 | SET | `sodTrgtData.put(JKKHakkoSODConstCC.TRGT_DATA_LIST, trgtDataList);` // Put trgtDataList under TRGT_DATA_LIST key [-> TRGT_DATA_LIST="trgtDataList" (JKKHakkoSODConstCC.java)] |

**Block 2** — [SET] `(sodMap creation)` (L702)

> Creates the primary SOD map entry and adds it to the target data list.

| # | Type | Code |
|---|------|------|
| 1 | SET | `HashMap<String, Object> sodMap = new HashMap<String, Object>();` // SOD map |
| 2 | EXEC | `trgtDataList.add(sodMap);` // Add sodMap as first element of trgtDataList |

**Block 3** — [SET] `(SOD basic info — SOD基本情報)` (L705)

> Populates SOD basic information including system ID, movement division, and password processing flags. This block was extended by ST1-2012-0000989 (2012-12-18) to add password processing division and re-issuance division fields.

| # | Type | Code |
|---|------|------|
| 1 | SET | `HashMap<String, Object> sodKihonInfo = new HashMap<String, Object>();` // SOD basic info (SOD基本情報) |
| 2 | SET | `sodKihonInfo.put(JKKHakkoSODConstCC.INFO_SYSID, (String)eKK0081A010.get(SYSID));` // System ID from eKK0081A010 [-> SYSID="sysid" (JKKPopPwdShkkaRnkAddCC.java:106)] |
| 3 | SET | `sodKihonInfo.put(JKKHakkoSODConstCC.INFO_IDO_DIV, IDO_DIV_00052);` // Movement division [-> IDO_DIV_00052="00052" (JKKPopPwdShkkaRnkAddCC.java:125)] |
| 4 | SET | `sodKihonInfo.put(JKKHakkoSODConstCC.INFO_PASSWORD_SHORI_DIV, JKKHakkoSODConstCC.SAIHAKKO_DIV_SHOKIKA);` // Password processing division: first-time issuance [-> SAIHAKKO_DIV_SHOKIKA (JKKHakkoSODConstCC.java), ST1-2012-0000989 2012-12-18 ADD] |
| 5 | SET | `sodKihonInfo.put(JKKHakkoSODConstCC.INFO_PASSWORD_SAIHAKKO_DIV, JKKHakkoSODConstCC.SHORI_DIV_POP);` // Password re-issuance division: POP [-> SHORI_DIV_POP (JKKHakkoSODConstCC.java), ST1-2012-0000989 2012-12-18 ADD] |
| 6 | SET | `sodMap.put(JKKHakkoSODConstCC.SOD_KIHON_INFO, sodKihonInfo);` // Store sodKihonInfo in sodMap under SOD_KIHON_INFO |

**Block 4** — [SET] `(Service contract info — サービス契約情報)` (L713)

> Populates the service contract number from the screen EKK0081A010 data.

| # | Type | Code |
|---|------|------|
| 1 | SET | `HashMap<String, Object> svcKeiInfo = new HashMap<String, Object>();` // Service contract info (サービス契約情報) |
| 2 | SET | `svcKeiInfo.put(JKKHakkoSODConstCC.INFO_SVC_KEI_NO, (String)eKK0081A010.get(SVC_KEI_NO));` // Service contract number from eKK0081A010 [-> SVC_KEI_NO="svc_kei_no" (JKKPopPwdShkkaRnkAddCC.java:111)] |
| 3 | SET | `sodMap.put(JKKHakkoSODConstCC.SVC_KEI_INFO, svcKeiInfo);` // Store svcKeiInfo in sodMap under SVC_KEI_INFO |

**Block 5** — [SET] `(Service contract internal details info — サービス契約内詳細情報)` (L717)

> Initializes service contract internal details with empty values — this is a placeholder section for future expansion or optional data not applicable to the POP password initialisation scenario.

| # | Type | Code |
|---|------|------|
| 1 | SET | `HashMap<String, Object> svcKeiUcwkInfo = new HashMap<String, Object>();` // Service contract internal details info (サービス契約内詳細情報) |
| 2 | SET | `svcKeiUcwkInfo.put(JKKHakkoSODConstCC.INFO_SVC_KEI_UCWK_NO, "");` // Service contract detail number — empty (サービス契約内訳番号) |
| 3 | SET | `svcKeiUcwkInfo.put(JKKHakkoSODConstCC.INFO_CHAF_SVC_KEI_UCWK_GENE_ADD_DTM, "");` // Generation addition timestamp — empty (生成追加日時) |
| 4 | SET | `sodMap.put(JKKHakkoSODConstCC.SVC_KEI_UCWK_INFO, svcKeiUcwkInfo);` // Store svcKeiUcwkInfo in sodMap under SVC_KEI_UCWK_INFO |

**Block 6** — [SET] `(Operation service contract info — オプションサービス契約情報)` (L721)

> Populates operation service contract info. The original code (DEL_START/DEL_END section, lines 723-724) used `INFO_CHBF_OPSVKEI_*` (before-change) keys with data from `eKK0351A010Hash`, but was replaced by `INFO_CHAF_OPSVKEI_*` (after-change) keys per ST1-2012-0000989 (2012-12-18).

| # | Type | Code |
|---|------|------|
| 1 | SET | `HashMap<String, Object> opSvcKeiInfo = new HashMap<String, Object>();` // Operation service contract info (オプションサービス契約情報) |
| 2 | SET | `// opSvcKeiInfo.put(INFO_CHBF_OPSVKEI_NO, eKK0351A010Hash.get(OP_SVC_KEI_NO));` // DELETED per ST1-2012-0000989 2012-12-18 — was using before-change key |
| 3 | SET | `// opSvcKeiInfo.put(INFO_CHBF_OPSVKEI_GENE_ADD_DTM, eKK0351A010Hash.get(GENE_ADD_DTM));` // DELETED per ST1-2012-0000989 2012-12-18 — was using before-change key |
| 4 | SET | `opSvcKeiInfo.put(JKKHakkoSODConstCC.INFO_CHAF_OPSVKEI_NO, eKK0351A010Hash.get(OP_SVC_KEI_NO));` // After-change operation service contract number [-> OP_SVC_KEI_NO="op_svc_kei_no" (JKKPopPwdShkkaRnkAddCC.java:214)] |
| 5 | SET | `opSvcKeiInfo.put(JKKHakkoSODConstCC.INFO_CHAF_OPSVKEI_GENE_ADD_DTM, eKK0351A010Hash.get(GENE_ADD_DTM));` // After-change generation addition timestamp [-> GENE_ADD_DTM="gene_add_dtm" (JKKPopPwdShkkaRnkAddCC.java:218)] |
| 6 | SET | `sodMap.put(JKKHakkoSODConstCC.OPSVKEI_INFO, opSvcKeiInfo);` // Store opSvcKeiInfo in sodMap under OPSVKEI_INFO |

**Block 7** — [SET] `(Machine provision service contract info — 機器提供サービス契約情報)` (L728)

> Creates an empty map for machine provision service contract info. This section is initialized but left empty, as machine provision data is not applicable to the POP password initialisation scenario.

| # | Type | Code |
|---|------|------|
| 1 | SET | `HashMap<String, Object> kktsvkeiInfo = new HashMap<String, Object>();` // Machine provision service contract info (機器提供サービス契約情報) |
| 2 | SET | `sodMap.put(JKKHakkoSODConstCC.KKTSVKEI_INFO, kktsvkeiInfo);` // Store kktsvkeiInfo in sodMap under KKTSVKEI_INFO |

**Block 8** — [EXEC/CALL] `(SOD issuance dispatch — サービスオーダー発行CCを呼び出す)` (L732)

> Instantiates the SOD issuance component and dispatches the fully assembled `sodTrgtData` map to trigger the actual SOD creation. The function code `FUNC_CODE_1` is set to indicate this is a first-time issuance operation.

| # | Type | Code |
|---|------|------|
| 1 | SET | `JKKHakkoSODCC hakkoSODCC = new JKKHakkoSODCC();` // Instantiate SOD issuance component (サービスオーダー発行CC) |
| 2 | SET | `sodTrgtData.put(JCMConstants.FUNC_CODE_KEY, FUNC_CODE_1);` // Set function code [-> FUNC_CODE_1="1" (JKKPopPwdShkkaRnkAddCC.java:225), ST1-2012-0000989 2012-12-18 ADD] |
| 3 | EXEC | `param.setData("sodTrgtData", sodTrgtData);` // Store assembled SOD target data into request parameter |
| 4 | CALL | `hakkoSODCC.hakkoSOD(handle, param, "sodTrgtData");` // Call SOD issuance component to create the SOD (SOD発行CC呼出) |

## 7. Glossary

| Term | Type | Business Meaning |
|------|------|------------------|
| SOD | Acronym | Service Order Data — the central telecom order fulfillment entity representing a service order to be provisioned in the back-end system |
| POPPW | Acronym | POP Password — Point of Presence customer password used for self-service portal authentication |
| hakkoSOD | Field/Method | Issuance/dispatch of SOD (発行 = hakkou = issue/emit) |
| POPIP | Acronym | Point of Presence ID — customer identifier for the self-service portal |
| KOPTICOM | Business term | K-Opticom — the telecommunications brand/operator whose system this code belongs to |
| eo顧客基幹システム | Business term | eo Customer Core System — the customer management and service fulfillment platform |
| INFO_SYSID | Field | System ID — the unique identifier for the telecom system context |
| INFO_IDO_DIV | Field | Movement division — classifies the type of data movement/transfer (00052 indicates POP password re-issuance context) |
| INFO_PASSWORD_SHORI_DIV | Field | Password processing division — indicates how password handling is performed (SAIHAKKO_DIV_SHOKIKA = first-time issuance) |
| INFO_PASSWORD_SAIHAKKO_DIV | Field | Password re-issuance division — specifies the password re-issuance processing type (POP = POP password handling) |
| SAIHAKKO_DIV_SHOKIKA | Field | Re-issuance division: first-time (再発行区分 初回) — indicates this is the initial password issuance, not a replacement |
| SHORI_DIV_POP | Field | Processing division: POP (処理区分 POP) — indicates POP-specific password processing |
| SVC_KEI_NO | Field | Service contract number (サービス契約番号) — unique identifier for a customer's service contract line |
| OP_SVC_KEI_NO | Field | Operation service contract number (オプションサービス契約番号) — identifier for an optional/added service contract |
| GENE_ADD_DTM | Field | Generation addition date-time (生成追加年月日時刻) — timestamp when the service contract record was generated/added |
| INFO_SVC_KEI_UCWK_NO | Field | Service contract detail number (サービス契約内訳番号) — internal breakdown number for service contract line items |
| INFO_CHAF_SVC_KEI_UCWK_GENE_ADD_DTM | Field | After-change service contract detail generation addition date-time (変更後サービス契約内訳生成追加日時) |
| INFO_CHAF_OPSVKEI_NO | Field | After-change operation service contract number (変更後オプションサービス契約番号) |
| INFO_CHAF_OPSVKEI_GENE_ADD_DTM | Field | After-change operation service contract generation addition date-time (変更後オプションサービス契約生成追加日時) |
| INFO_CHBF_OPSVKEI_NO | Field | Before-change operation service contract number (変更前オプションサービス契約番号) — deprecated, replaced by CHAF_ variants |
| TRGT_DATA_LIST | Field | Target data list key — map key for the list of SOD target data entries |
| SOD_KIHON_INFO | Field | SOD basic information (SOD基本情報) — top-level key for SOD header data |
| SVC_KEI_INFO | Field | Service contract information (サービス契約情報) — key for service contract details in SOD |
| SVC_KEI_UCWK_INFO | Field | Service contract internal details information (サービス契約内詳細情報) — key for service contract breakdown details |
| OPSVKEI_INFO | Field | Operation service contract information (オプションサービス契約情報) — key for optional service contract data |
| KKTSVKEI_INFO | Field | Machine provision service contract information (機器提供サービス契約情報) — key for hardware/device provision data |
| FUNC_CODE_1 | Field | Function code "1" — identifies this call as a service order issuance function (機能コード 1) |
| FUNC_CODE_KEY | Field | Function code map key — constant key used to store the function code in the data map |
| PRG_STAT_5301 | Field | Progress state: customer password initialisation (進捗状態 お客様パスワード初期化) — state code 5301 |
| IDO_DIV_00052 | Field | Movement division code "00052" — indicates specific movement type for this SOD context |
| KKSV011501CC | Field | Screen integration constant key for POP Password initialisation screen (POPPW初期化連携) |
| EKK0351A010 | CBS | Operation service contract agreement inquiry — CBS for retrieving operation service contract data (オプションサービス契約一覧照会) |
| EKK0081A010 | CBS | Service contract agreement inquiry (サービス契約一覧照会) — CBS for retrieving service contract data by SYSID |
| JKKHakkoSODCC | Class | SOD issuance common component (SOD発行CC) — the component responsible for creating SOD records |
| JKKPopPwdShkkaRnkAddCC | Class | POP Password initialisation integration common component (POPPW初期化連携) — the component this method belongs to |

---

## 6. Summary

`hakkoSOD()` is a **data assembly and delegation** method within the POP Password initialisation integration flow. It takes service contract and operation service contract data from two input hash maps (`eKK0081A010` and `eKK0351A010Hash`), assembles them into a hierarchical SOD target data structure, and delegates to `JKKHakkoSODCC.hakkoSOD()` to persist the SOD record. The method has no conditional branches — it always constructs the same SOD data shape, always indicates a first-time password issuance (`FUNC_CODE_1` = "1"), and always uses the POP password processing division. The main evolution tracked in the source is ST1-2012-0000989 (2012-12-18), which added password processing division fields and changed the operation service contract info from "before-change" (`CHBF_`) to "after-change" (`CHAF_`) keys.

---
