# Business Logic — JBSbatKKRsvTokiHak.insertSvkeiuwEohTel() [111 LOC]

| Field | Value |
|-------|-------|
| Fully Qualified Name | `eo.business.service.JBSbatKKRsvTokiHak` |
| Layer | Service (Batch Service — EO Business Service Layer) |
| Module | `service` (Package: `eo.business.service`) |

## 1. Role

### JBSbatKKRsvTokiHak.insertSvkeiuwEohTel()

This method performs the **registration (insertion) of Service Contract Details for eo Light Phone** (サービス契約内訳＜eo光電話＞), which is a comprehensive data record encompassing all line-item details of an "eo Light" (eo光) fiber internet service bundled with a landline telephone. In the broader "eo Light Phone" (eo光電話) service domain, this method handles the full spectrum of phone-related contract information: primary and representative phone numbers, emergency notification address data (緊急通報用住所 — required by Japanese telecom regulations for disaster alerts), SIP user credentials (for VoIP calling), number inquiry and hello page publication preferences, NTT contractor address details (NTT契約者住所 — the carrier-level customer record), communication carrier codes (通信事業者コード), number portability and portability notification settings, feature phone (FOMA) usage options, and Voice Application (VA) device information including model codes and serial numbers. The method follows a **data preparation + delegation pattern**: it first enriches the input data by resolving operation-date-dependent fields through `getInsertTokiDataInfo()` (移転トーキ処理 — relocation/tokei processing), then assembles a 97-element parameter array containing every field of the `T_SVKEIUW_EOH_TEL` table, and delegates the actual database insert to `executeKK_T_SVKEIUW_EOH_TEL_PKINSERT()`. This method is called within the same class by `execute()`, serving as the terminal service method that converts service-layer maps into a concrete database row.

## 2. Processing Pattern (Detailed Business Logic)

```mermaid
flowchart TD
    START(["insertSvkeiuwEohTel call"])
    A["Create tokiDateInfoMap"]
    B["Call getInsertTokiDataInfo"]
    C{"SOD_HAK_SBT_CD equals STA"}
    D{"ITNTOKI_ADD_CD equals ITENS"}
    E["Set ITENS_OPAF_TOKI_STA_YMD to trnOpeDate"]
    F["Set DSL_PAUSE_TOKI_STA_YMD to trnOpeDate"]
    G{"SOD_HAK_SBT_CD equals END"}
    H["Set ITENS_OPAF_TOKI_END_YMD to trnOpeDate"]
    I["Set DSL_PAUSE_TOKI_END_YMD to trnOpeDate"]
    J{"SOD_HAK_SBT_CD equals NONE"}
    K["Set ITENS_OPAF_TOKI_STA_YMD to trnOpeDate"]
    L["Set ITENS_OPAF_TOKI_END_YMD to trnOpeDate"]
    M["Set DSL_PAUSE_TOKI_STA_YMD to trnOpeDate"]
    N["Set DSL_PAUSE_TOKI_END_YMD to trnOpeDate"]
    O["Return rtnDateInfoMap"]
    P["Build setParam array 97 fields"]
    Q["Call executeKK_T_SVKEIUW_EOH_TEL_PKINSERT"]
    R["DB insertByPrimaryKeys"]
    END(["Return Next"])

    START --> A
    A --> B
    B --> C
    C -- STA --> D
    D -- ITENS --> E
    E --> O
    D -- else --> F
    F --> O
    C -- else --> G
    G -- END --> H
    H --> O
    G -- else --> J
    J -- NONE --> K
    K --> L
    L --> O
    J -- else --> M
    M --> N
    N --> O
    O --> P
    P --> Q
    Q --> R
    R --> END
```

**Processing Description:**

1. **Date info enrichment**: The method invokes `getInsertTokiDataInfo(inMap, svkeiuwEohTelMap)`, which reads the SOD issuance type code (SOD_HAK_SBT_CD) and move registration code (ITNTOKI_ADD_CD) from the input maps, then determines which date fields should be overridden with the operational date (`trnOpeDate`). The SOD type code is resolved from constants defined in `JBSbatKKRsvTokiHak`:
   - `SOD_HAK_SBT_CD_STA = "1"` — Start SOD issuance (開始SOD発行) — indicates a new activation tokei (expected tokei processing)
   - `SOD_HAK_SBT_CD_END = "2"` — End SOD issuance (終了SOD発行) — indicates a cancellation/completion tokei
   - `SOD_HAK_SBT_CD_NONE = "0"` — No SOD issuance (SOD発行なし) — indicates a cancellation of expected tokei

2. **Conditional branch on SOD type and move registration**:
   - When `SOD_HAK_SBT_CD = "1"` (Start): Sets the tokei start date. If the move registration code is `"1"` (ITENS — 移転先登録によるトーキ / Tokei by destination-side registration), it sets the post-transfer activation start date. Otherwise, it sets the suspension/cancellation start date.
   - When `SOD_HAK_SBT_CD = "2"` (End): Sets the tokei end date using the same move registration sub-logic.
   - When `SOD_HAK_SBT_CD = "0"` (None — cancellation): Sets both start and end dates for either post-transfer or suspension/cancellation tokei.

3. **Parameter assembly**: A 97-element `String[]` array is constructed by extracting fields from `svkeiuwEohTelMap` via `getString()`. The fields cover: service contract number, system date, phone numbers, emergency notification addresses, SIP credentials, publication settings, NTT contractor addresses, carrier codes, tokei scheduling, portability settings, feature phone options, and VA device info. Audit fields (add/update/delete timestamps, operator accounts, invalid flag, operation IDs) are set to `null` since this is a fresh insert. Two date fields (`DSL_PAUSE_TOKI_STA_YMD`, `DSL_PAUSE_TOKI_END_YMD`, `ITENS_OPAF_TOKI_STA_YMD`, `ITENS_OPAF_TOKI_END_YMD`) are sourced from the enriched `tokiDateInfoMap` rather than directly from the input map.

4. **Delegated insertion**: The assembled parameter array is passed to `executeKK_T_SVKEIUW_EOH_TEL_PKINSERT()`, which creates a `JBSbatCommonDBInterface` by mapping each array index to a named field, then executes `db_KK_T_SVKEIUW_EOH_TEL.insertByPrimaryKeys(setMap)`.

## 3. Parameter Analysis

| No | Parameter Name | Type | Business Description |
|----|---------------|------|---------------------|
| 1 | `svkeiuwEohTelMap` | `JBSbatCommonDBInterface` | The service contract details record for eo Light Phone (サービス契約内訳＜eo光電話＞マップ). Carries all field data to be inserted into the `T_SVKEIUW_EOH_TEL` table — phone numbers, emergency notification addresses, SIP user credentials, publication settings, NTT contractor information, carrier codes, tokei scheduling codes, feature phone options, VA device details, and reservation codes. This is the primary data source for all 90+ business fields. |
| 2 | `inMap` | `JBSbatServiceInterfaceMap` | The input electric message (入力電文) containing batch control fields, specifically the SOD issuance type code (SOD_HAK_SBT_CD) and move registration code (ITNTOKI_ADD_CD) used by `getInsertTokiDataInfo()` to determine which dates to override with the operational date. |
| 3 | `sysDate` | `String` | The system date (システム日付) used as the registration timestamp (世代登録年月日时分秒) for the `GENE_ADD_DTM` field — the date-time when this record was created in the database. |

**Read from external state:**
| No | Field | Type | Business Description |
|----|-------|------|---------------------|
| 1 | `trnOpeDate` | `String` | Instance field — the current operational date (from `super.onlineOpeDate`), used by `getInsertTokiDataInfo()` to override scheduled tokei start/end dates when the SOD type is Start, End, or None. This represents the actual batch processing date. |
| 2 | `db_KK_T_SVKEIUW_EOH_TEL` | Entity DAO | Instance field — the database access object for the `T_SVKEIUW_EOH_TEL` table, used to perform the primary-key-based insert operation. |

## 4. CRUD Operations / Called Services

| CRUD | SC / CBS | SC Code | Entity / DB | Operation Description |
|------|----------|---------|-------------|----------------------|
| R | `getInsertTokiDataInfo()` | (internal) | — | Reads SOD issuance type code, move registration code, and original date fields from `inMap` and `svkeiuwEohTelMap` to determine date overrides. |
| R | `svkeiuwEohTelMap.getString(...)` | — | — | Reads ~93 individual fields from the service contract details map (phone numbers, addresses, SIP credentials, codes, flags, VA device info). |
| R | `inMap.getString(JBSbatKKIFM112.SOD_HAK_SBT_CD)` | — | — | Reads the SOD issuance type code (start/end/none) from the input message. |
| R | `inMap.getString(JBSbatKKIFM112.ITNTOKI_ADD_CD)` | — | — | Reads the move registration code (destination-side registration vs. source-side cancellation/pause) from the input message. |
| R | `tokiDateInfoMap.get(...)` | — | — | Reads 4 enriched date fields from the date info map returned by `getInsertTokiDataInfo()`. |
| C | `executeKK_T_SVKEIUW_EOH_TEL_PKINSERT()` | (internal) | `T_SVKEIUW_EOH_TEL` | Creates a `JBSbatCommonDBInterface` from the 97-element parameter array and performs a primary-key-based insert into `T_SVKEIUW_EOH_TEL`. |
| C | `db_KK_T_SVKEIUW_EOH_TEL.insertByPrimaryKeys()` | (internal) | `T_SVKEIUW_EOH_TEL` | The actual database layer insert operation that writes the complete service contract detail row. |

## 5. Dependency Trace

| # | Caller (Screen/Batch) | Call Chain (Full Path to this Method) | Terminal (SC / CRUD / Entity) |
|---|----------------------|--------------------------------------|-------------------------------|
| 1 | Batch: `JBSbatKKRsvTokiHak.execute()` | `execute()` → `insertSvkeiuwEohTel()` → `getInsertTokiDataInfo()` + `svkeiuwEohTelMap.getString(n)` (93×) + `executeKK_T_SVKEIUW_EOH_TEL_PKINSERT()` → `db_KK_T_SVKEIUW_EOH_TEL.insertByPrimaryKeys()` | `insertByPrimaryKeys [C] T_SVKEIUW_EOH_TEL` |

**Note:** No screen/batch entry points (KKSV*) were found within 8 hops. This method is a terminal batch service method called directly from `execute()` within the same class.

## 6. Per-Branch Detail Blocks

**Block 1** — [SET] (L1658)

> Initializes the date info enrichment map.

| # | Type | Code |
|---|------|------|
| 1 | SET | `HashMap<String, String> tokiDateInfoMap = new HashMap<>()` |
| 2 | CALL | `tokiDateInfoMap = getInsertTokiDataInfo(inMap, svkeiuwEohTelMap)` // Enriches date fields based on SOD type and move registration codes [-> trnOpeDate instance field] |

**Block 2** — [SET — Parameter Array Assembly] (L1661)

> Constructs the 97-element parameter array. Fields are extracted from `svkeiuwEohTelMap` by key or sourced from `sysDate` / `tokiDateInfoMap`. The array maps positionally to field indices in `executeKK_T_SVKEIUW_EOH_TEL_PKINSERT`.

| # | Type | Code |
|---|------|------|
| 1 | SET | `svkeiuwEohTelMap.getString(JBSbatKK_T_SVKEIUW_EOH_TEL.SVC_KEI_UCWK_NO)` // Service contract work number [position 0] |
| 2 | SET | `sysDate` // System registration timestamp [position 1] |
| 3 | SET | `svkeiuwEohTelMap.getString(JBSbatKK_T_SVKEIUW_EOH_TEL.TELNO)` // Phone number [position 2] |
| 4 | SET | `svkeiuwEohTelMap.getString(JBSbatKK_T_SVKEIUW_EOH_TEL.DAIHYO_TELNO)` // Representative phone number [position 3] |
| 5 | SET | `svkeiuwEohTelMap.getString(JBSbatKK_T_SVKEIUW_EOH_TEL.TELNO_USE_PLACE_NO)` // Phone number usage location number [position 4] |
| 6 | SET | `svkeiuwEohTelMap.getString(JBSbatKK_T_SVKEIUW_EOH_TEL.EMG_AD_CD)` // Emergency notification address code [position 5] |
| 7 | SET | `svkeiuwEohTelMap.getString(JBSbatKK_T_SVKEIUW_EOH_TEL.EMG_HOSEI_PCD)` // Emergency notification correction postal code [position 6] |
| 8 | SET | `svkeiuwEohTelMap.getString(JBSbatKK_T_SVKEIUW_EOH_TEL.EMG_STATE_NM)` // Emergency notification prefecture name [position 7] |
| 9 | SET | `svkeiuwEohTelMap.getString(JBSbatKK_T_SVKEIUW_EOH_TEL.EMG_CITY_NM)` // Emergency notification city/town/village name [position 8] |
| 10 | SET | `svkeiuwEohTelMap.getString(JBSbatKK_T_SVKEIUW_EOH_TEL.EMG_OAZTSU_NM)` // Emergency notification oaza/street name [position 9] |
| 11 | SET | `svkeiuwEohTelMap.getString(JBSbatKK_T_SVKEIUW_EOH_TEL.EMG_AZCHO_NM)` // Emergency notification cho-block name [position 10] |
| 12 | SET | `svkeiuwEohTelMap.getString(JBSbatKK_T_SVKEIUW_EOH_TEL.EMG_BNCHIGO)` // Emergency notification land number [position 11] |
| 13 | SET | `svkeiuwEohTelMap.getString(JBSbatKK_T_SVKEIUW_EOH_TEL.EMG_ADRTTM)` // Emergency notification building name [position 12] |
| 14 | SET | `svkeiuwEohTelMap.getString(JBSbatKK_T_SVKEIUW_EOH_TEL.EMG_ADRRM)` // Emergency notification room number [position 13] |
| 15 | SET | `svkeiuwEohTelMap.getString(JBSbatKK_T_SVKEIUW_EOH_TEL.EMG_KSH_KSITEI_FLG)` // Emergency notification contractor individual designation flag [position 14] |
| 16 | SET | `svkeiuwEohTelMap.getString(JBSbatKK_T_SVKEIUW_EOH_TEL.EMG_KSH_NM)` // Emergency notification contractor name [position 15] |
| 17 | SET | `svkeiuwEohTelMap.getString(JBSbatKK_T_SVKEIUW_EOH_TEL.EMG_KSH_KANA)` // Emergency notification contractor katakana name [position 16] |
| 18 | SET | `svkeiuwEohTelMap.getString(JBSbatKK_T_SVKEIUW_EOH_TEL.SIP_USER_ID)` // SIP user ID [position 17] |
| 19 | SET | `svkeiuwEohTelMap.getString(JBSbatKK_T_SVKEIUW_EOH_TEL.SIP_USER_ID_PWD)` // SIP user ID password [position 18] |
| 20 | SET | `svkeiuwEohTelMap.getString(JBSbatKK_T_SVKEIUW_EOH_TEL.SIP_USER_ID_DEL_ZUMI_FLG)` // SIP user ID deletion completion flag [position 19] |
| 21 | SET | `svkeiuwEohTelMap.getString(JBSbatKK_T_SVKEIUW_EOH_TEL.FIRST_CDR_HASSEI_YMD)` // First CDR issuance date [position 20] |
| 22 | SET | `svkeiuwEohTelMap.getString(JBSbatKK_T_SVKEIUW_EOH_TEL.TELNO_JUN)` // Phone number sequence [position 21] |
| 23 | SET | `svkeiuwEohTelMap.getString(JBSbatKK_T_SVKEIUW_EOH_TEL.NTT_NO_GUIDE_UM)` // NTT number inquiry availability [position 22] |
| 24 | SET | `svkeiuwEohTelMap.getString(JBSbatKK_T_SVKEIUW_EOH_TEL.HELLOPAGE_KEISAI_UM)` // Hello page publication availability [position 23] |
| 25 | SET | `svkeiuwEohTelMap.getString(JBSbatKK_T_SVKEIUW_EOH_TEL.TUWA_DTL_KOKAI_YH)` // Call details publication flag [position 24] |
| 26 | SET | `svkeiuwEohTelMap.getString(JBSbatKK_T_SVKEIUW_EOH_TEL.TEL_NO_PRE_TCHI_CD)` // Phone number advance notification code [position 25] |
| 27 | SET | `svkeiuwEohTelMap.getString(JBSbatKK_T_SVKEIUW_EOH_TEL.NTT_KEISHA_AD_CD)` // NTT contractor address code [position 26] |
| 28 | SET | `svkeiuwEohTelMap.getString(JBSbatKK_T_SVKEIUW_EOH_TEL.NTT_KEISHA_PCD)` // NTT contractor postal code [position 27] |
| 29 | SET | `svkeiuwEohTelMap.getString(JBSbatKK_T_SVKEIUW_EOH_TEL.NTT_KEISHA_STATE_NM)` // NTT contractor prefecture name [position 28] |
| 30 | SET | `svkeiuwEohTelMap.getString(JBSbatKK_T_SVKEIUW_EOH_TEL.NTT_KEISHA_CITY_NM)` // NTT contractor city/town/village name [position 29] |
| 31 | SET | `svkeiuwEohTelMap.getString(JBSbatKK_T_SVKEIUW_EOH_TEL.NTT_KEISHA_OAZTSU_NM)` // NTT contractor oaza/street name [position 30] |
| 32 | SET | `svkeiuwEohTelMap.getString(JBSbatKK_T_SVKEIUW_EOH_TEL.NTT_KEISHA_AZCHO_NM)` // NTT contractor cho-block name [position 31] |
| 33 | SET | `svkeiuwEohTelMap.getString(JBSbatKK_T_SVKEIUW_EOH_TEL.NTT_KEISHA_BNCHIGO)` // NTT contractor land number [position 32] |
| 34 | SET | `svkeiuwEohTelMap.getString(JBSbatKK_T_SVKEIUW_EOH_TEL.NTT_KEISHA_ADRTTM)` // NTT contractor building name [position 33] |
| 35 | SET | `svkeiuwEohTelMap.getString(JBSbatKK_T_SVKEIUW_EOH_TEL.NTT_KEISHA_ADRRM)` // NTT contractor room number [position 34] |
| 36 | SET | `svkeiuwEohTelMap.getString(JBSbatKK_T_SVKEIUW_EOH_TEL.NKYS_AD_MAN_INPUT_FLG)` // NTT contractor address manual input flag [position 35] |
| 37 | SET | `svkeiuwEohTelMap.getString(JBSbatKK_T_SVKEIUW_EOH_TEL.NTT_KSH_KANA)` // NTT contractor katakana name [position 36] |
| 38 | SET | `svkeiuwEohTelMap.getString(JBSbatKK_T_SVKEIUW_EOH_TEL.NTT_KEISHA_NM)` // NTT contractor name [position 37] |
| 39 | SET | `svkeiuwEohTelMap.getString(JBSbatKK_T_SVKEIUW_EOH_TEL.NTT_KSH_AD_KSH_AD_SAI_FLG)` // NTT contractor address vs contractor address difference flag [position 38] |
| 40 | SET | `svkeiuwEohTelMap.getString(JBSbatKK_T_SVKEIUW_EOH_TEL.TSJGS_CD)` // Communication carrier code [position 39] |
| 41 | SET | `svkeiuwEohTelMap.getString(JBSbatKK_T_SVKEIUW_EOH_TEL.ITNM_TSJGS_KTN_CD)` // Pre-porting carrier hub code [position 40] |
| 42 | SET | `svkeiuwEohTelMap.getString(JBSbatKK_T_SVKEIUW_EOH_TEL.DOJI_OPEN_KIBO_CD)` // Simultaneous activation wish code [position 41] |
| 43 | SET | `svkeiuwEohTelMap.getString(JBSbatKK_T_SVKEIUW_EOH_TEL.TEL_TTDKI_MSKM_CD)` // Phone procedure application code [position 42] |
| 44 | SET | `svkeiuwEohTelMap.getString(JBSbatKK_T_SVKEIUW_EOH_TEL.MAN_SWITCH_RSV_DTM)` // Manual switch scheduled date-time [position 43] |
| 45 | SET | `svkeiuwEohTelMap.getString(JBSbatKK_T_SVKEIUW_EOH_TEL.SHK_TEL_OP_SETTE_RMTS_PWD)` // Initial phone option setup remote operation password [position 44] |
| 46 | SET | `svkeiuwEohTelMap.getString(JBSbatKK_T_SVKEIUW_EOH_TEL.TEL_OP_SETTE_RMTS_PWD)` // Phone option setup remote operation password [position 45] |
| 47 | SET | `svkeiuwEohTelMap.getString(JBSbatKK_T_SVKEIUW_EOH_TEL.DSL_PAUSE_TOKI_ADD_CD)` // Cancellation/pause tokei registration code [position 46] |
| 48 | SET | `svkeiuwEohTelMap.getString(JBSbatKK_T_SVKEIUW_EOH_TEL.DSL_PAUSE_TOKI_SBT_CD)` // Cancellation/pause tokei type code [position 47] |
| 49 | SET | `svkeiuwEohTelMap.getString(JBSbatKK_T_SVKEIUW_EOH_TEL.DSL_PAUSE_TOKI_KIBO_UM)` // Cancellation/pause tokei wish availability [position 48] |
| 50 | SET | `svkeiuwEohTelMap.getString(JBSbatKK_T_SVKEIUW_EOH_TEL.DSL_PAUSE_TOKI_STA_RSYMD)` // Cancellation/pause tokei start scheduled date [position 49] |
| 51 | SET | `tokiDateInfoMap.get(JBSbatKK_T_SVKEIUW_EOH_TEL.DSL_PAUSE_TOKI_STA_YMD)` // Cancellation/pause tokei start date (enriched) [position 50] |
| 52 | SET | `svkeiuwEohTelMap.getString(JBSbatKK_T_SVKEIUW_EOH_TEL.DSL_PAUSE_TOKI_END_RSYMD)` // Cancellation/pause tokei end scheduled date [position 51] |
| 53 | SET | `tokiDateInfoMap.get(JBSbatKK_T_SVKEIUW_EOH_TEL.DSL_PAUSE_TOKI_END_YMD)` // Cancellation/pause tokei end date (enriched) [position 52] |
| 54 | SET | `svkeiuwEohTelMap.getString(JBSbatKK_T_SVKEIUW_EOH_TEL.PAUSE_TOKI_END_SBT_CD)` // Pause tokei end type code [position 53] |
| 55 | SET | `svkeiuwEohTelMap.getString(JBSbatKK_T_SVKEIUW_EOH_TEL.DSL_PAUSE_TOKI_TSS_TLN)` // Cancellation/pause tokei destination phone number [position 54] |
| 56 | SET | `svkeiuwEohTelMap.getString(JBSbatKK_T_SVKEIUW_EOH_TEL.DSL_PAUSE_TOKI_TSS_SVKUWNO)` // Cancellation/pause tokei destination service contract detail number [position 55] |
| 57 | SET | `svkeiuwEohTelMap.getString(JBSbatKK_T_SVKEIUW_EOH_TEL.ITENS_OPAF_TOKI_ADD_CD)` // Post-transfer activation tokei registration code [position 56] |
| 58 | SET | `svkeiuwEohTelMap.getString(JBSbatKK_T_SVKEIUW_EOH_TEL.ITENS_OPAF_TOKI_SBT_CD)` // Post-transfer activation tokei type code [position 57] |
| 59 | SET | `svkeiuwEohTelMap.getString(JBSbatKK_T_SVKEIUW_EOH_TEL.ITENS_OPAF_TOKI_KIBO_UM)` // Post-transfer activation tokei wish availability [position 58] |
| 60 | SET | `svkeiuwEohTelMap.getString(JBSbatKK_T_SVKEIUW_EOH_TEL.ITENS_OPAF_TOKI_STA_RSYMD)` // Post-transfer activation tokei start scheduled date [position 59] |
| 61 | SET | `tokiDateInfoMap.get(JBSbatKK_T_SVKEIUW_EOH_TEL.ITENS_OPAF_TOKI_STA_YMD)` // Post-transfer activation tokei start date (enriched) [position 60] |
| 62 | SET | `svkeiuwEohTelMap.getString(JBSbatKK_T_SVKEIUW_EOH_TEL.ITENS_OPAF_TOKI_END_RSYMD)` // Post-transfer activation tokei end scheduled date [position 61] |
| 63 | SET | `tokiDateInfoMap.get(JBSbatKK_T_SVKEIUW_EOH_TEL.ITENS_OPAF_TOKI_END_YMD)` // Post-transfer activation tokei end date (enriched) [position 62] |
| 64 | SET | `svkeiuwEohTelMap.getString(JBSbatKK_T_SVKEIUW_EOH_TEL.ITNS_OPAF_TOKI_TSS_SVKUWNO)` // Post-transfer activation tokei destination service contract detail number [position 63] |
| 65 | SET | `svkeiuwEohTelMap.getString(JBSbatKK_T_SVKEIUW_EOH_TEL.TOWNPAGE_KEISAI_KANA)` // Town page publication katakana name [position 64] |
| 66 | SET | `svkeiuwEohTelMap.getString(JBSbatKK_T_SVKEIUW_EOH_TEL.TOWNPAGE_KEISAI_NM)` // Town page publication name [position 65] |
| 67 | SET | `svkeiuwEohTelMap.getString(JBSbatKK_T_SVKEIUW_EOH_TEL.BMP_UM)` // Feature phone availability [position 66] |
| 68 | SET | `svkeiuwEohTelMap.getString(JBSbatKK_T_SVKEIUW_EOH_TEL.BMP_AF_USE_PLACE_SBT_CD)` // Post-feature phone usage type code [position 67] |
| 69 | SET | `svkeiuwEohTelMap.getString(JBSbatKK_T_SVKEIUW_EOH_TEL.BMP_DOJI_KOJI_KIBO_UM)` // Feature phone simultaneous construction wish [position 68] |
| 70 | SET | `svkeiuwEohTelMap.getString(JBSbatKK_T_SVKEIUW_EOH_TEL.BMP_KOJI_KIBO_YMD)` // Feature phone simultaneous construction wish date [position 69] |
| 71 | SET | `svkeiuwEohTelMap.getString(JBSbatKK_T_SVKEIUW_EOH_TEL.BMPKJ_KIBO_TIME_CD)` // Feature phone construction wish time code [position 70] |
| 72 | SET | `svkeiuwEohTelMap.getString(JBSbatKK_T_SVKEIUW_EOH_TEL.BMP_DOJI_OPEN_YMD)` // Feature phone simultaneous activation date [position 71] |
| 73 | SET | `svkeiuwEohTelMap.getString(JBSbatKK_T_SVKEIUW_EOH_TEL.DOBANITEN_MSKM_UM)` // Same-number porting application availability [position 72] |
| 74 | SET | `svkeiuwEohTelMap.getString(JBSbatKK_T_SVKEIUW_EOH_TEL.DOBANITEN_REQ_CTRL_CD)` // Same-number porting request control code [position 73] |
| 75 | SET | `svkeiuwEohTelMap.getString(JBSbatKK_T_SVKEIUW_EOH_TEL.DOBANITEN_JDG_CD)` // Same-number porting judgment code [position 74] |
| 76 | SET | `svkeiuwEohTelMap.getString(JBSbatKK_T_SVKEIUW_EOH_TEL.DBANITEN_MSKMJIG_KIJIRAN_1)` // Same-number porting application carrier notice item 1 [position 75] |
| 77 | SET | `svkeiuwEohTelMap.getString(JBSbatKK_T_SVKEIUW_EOH_TEL.DBANITEN_MSKMJIG_KIJIRAN_2)` // Same-number porting application carrier notice item 2 [position 76] |
| 78 | SET | `svkeiuwEohTelMap.getString(JBSbatKK_T_SVKEIUW_EOH_TEL.DOBANITEN_NTT_KEISHA_NM)` // Same-number porting NTT contractor name [position 77] |
| 79 | SET | `svkeiuwEohTelMap.getString(JBSbatKK_T_SVKEIUW_EOH_TEL.DOBANITEN_NTT_KSH_KANA)` // Same-number porting NTT contractor katakana [position 78] |
| 80 | SET | `svkeiuwEohTelMap.getString(JBSbatKK_T_SVKEIUW_EOH_TEL.VA_TAKNKIKI_MODEL_CD)` // VA indoor device model code [position 79] |
| 81 | SET | `svkeiuwEohTelMap.getString(JBSbatKK_T_SVKEIUW_EOH_TEL.VA_KIKI_SEIZO_NO)` // VA device serial number [position 80] |
| 82 | SET | `svkeiuwEohTelMap.getString(JBSbatKK_T_SVKEIUW_EOH_TEL.VA_KIKI_CHG_NO)` // VA device change number [position 81] |
| 83 | SET | `svkeiuwEohTelMap.getString(JBSbatKK_T_SVKEIUW_EOH_TEL.VA_PORT_NO)` // VA port number [position 82] |
| 84 | SET | `svkeiuwEohTelMap.getString(JBSbatKK_T_SVKEIUW_EOH_TEL.RSV_APLY_CD)` // Reservation application code [position 83] |
| 85 | SET | `null` // Registration timestamp (set by DB) [position 84] |
| 86 | SET | `null` // Registration operator account [position 85] |
| 87 | SET | `null` // Update timestamp [position 86] |
| 88 | SET | `null` // Update operator account [position 87] |
| 89 | SET | `null` // Delete timestamp [position 88] |
| 90 | SET | `null` // Delete operator account [position 89] |
| 91 | SET | `null` // Invalid flag [position 90] |
| 92 | SET | `null` // Registration operation date [position 91] |
| 93 | SET | `null` // Registration processing ID [position 92] |
| 94 | SET | `null` // Update operation date [position 93] |
| 95 | SET | `null` // Update processing ID [position 94] |
| 96 | SET | `null` // Delete operation date [position 95] |
| 97 | SET | `null` // Delete processing ID [position 96] |

**Block 3** — [CALL] (L1765)

> Delegates the database insert to the PK-based insert handler.

| # | Type | Code |
|---|------|------|
| 1 | CALL | `executeKK_T_SVKEIUW_EOH_TEL_PKINSERT(setParam)` // Maps array to JBSbatCommonDBInterface and calls db_KK_T_SVKEIUW_EOH_TEL.insertByPrimaryKeys() |

---

### Internal method: `getInsertTokiDataInfo()` detail (L2565–2645)

This private helper method resolves which date fields should be overridden with the operational date (`trnOpeDate`) based on the SOD issuance type code and the move registration code.

**Block 3.1** — [SET] (L2575)

> Reads the two control codes from the input maps.

| # | Type | Code |
|---|------|------|
| 1 | SET | `sodHakSbtCd = JBSbatInterface.trim(inMap.getString(JBSbatKKIFM112.SOD_HAK_SBT_CD))` // SOD issuance type code: "0"=None, "1"=Start, "2"=End |
| 2 | SET | `itntokiAddCd = JBSbatInterface.trim(inMap.getString(JBSbatKKIFM112.ITNTOKI_ADD_CD))` // Move registration code: "1"=ITENS (destination-side) |
| 3 | SET | `dslPauseTokiStaYmd = svkeiuwEohTelMap.getString(JBSbatKK_T_SVKEIUW_EOH_TEL.DSL_PAUSE_TOKI_STA_YMD)` // Original pause start date |
| 4 | SET | `dslPauseTokiEndYmd = svkeiuwEohTelMap.getString(JBSbatKK_T_SVKEIUW_EOH_TEL.DSL_PAUSE_TOKI_END_YMD)` // Original pause end date |
| 5 | SET | `itensOpafTokiStaYmd = svkeiuwEohTelMap.getString(JBSbatKK_T_SVKEIUW_EOH_TEL.ITENS_OPAF_TOKI_STA_YMD)` // Original post-transfer start date |
| 6 | SET | `itensOpafTokiEndYmd = svkeiuwEohTelMap.getString(JBSbatKK_T_SVKEIUW_EOH_TEL.ITENS_OPAF_TOKI_END_YMD)` // Original post-transfer end date |
| 7 | SET | `rtnDateInfoMap.put(DSL_PAUSE_TOKI_STA_YMD, dslPauseTokiStaYmd)` // Default: use original dates |
| 8 | SET | `rtnDateInfoMap.put(DSL_PAUSE_TOKI_END_YMD, dslPauseTokiEndYmd)` |
| 9 | SET | `rtnDateInfoMap.put(ITENS_OPAF_TOKI_STA_YMD, itensOpafTokiStaYmd)` |
| 10 | SET | `rtnDateInfoMap.put(ITENS_OPAF_TOKI_END_YMD, itensOpafTokiEndYmd)` |

**Block 3.2** — [IF/ELSE-IF/ELSE] (L2593)

> Conditional branch on SOD_HAK_SBT_CD — determines tokei (expected tokei) processing path.

**Block 3.2.1** — [IF] `SOD_HAK_SBT_CD_STA = "1"` (Start SOD issuance) (L2594)

> The SOD type is "Start" — a new activation tokei is being processed.

**Block 3.2.1.1** — [IF] `JKKBatConst.ITNTOKI_ADD_CD_ITENS = "1"` (Tokei by destination-side registration) (L2596)

**Block 3.2.1.1.1** — [SET] (L2598)

> Sets the post-transfer activation start date to the operational date.

| # | Type | Code |
|---|------|------|
| 1 | SET | `rtnDateInfoMap.put(ITENS_OPAF_TOKI_STA_YMD, trnOpeDate)` // Override with actual processing date |

**Block 3.2.1.2** — [ELSE] (L2601)

> Move registration code is NOT ITENS — this is tokei by source-side cancellation or pause.

**Block 3.2.1.2.1** — [SET] (L2603)

> Sets the suspension/cancellation tokei start date to the operational date.

| # | Type | Code |
|---|------|------|
| 1 | SET | `rtnDateInfoMap.put(DSL_PAUSE_TOKI_STA_YMD, trnOpeDate)` // Override with actual processing date |

**Block 3.2.2** — [ELSE-IF] `SOD_HAK_SBT_CD_END = "2"` (End SOD issuance) (L2609)

> The SOD type is "End" — a tokei completion/cancellation is being processed.

**Block 3.2.2.1** — [IF] `JKKBatConst.ITNTOKI_ADD_CD_ITENS = "1"` (Tokei by destination-side registration) (L2611)

**Block 3.2.2.1.1** — [SET] (L2613)

> Sets the post-transfer activation end date to the operational date.

| # | Type | Code |
|---|------|------|
| 1 | SET | `rtnDateInfoMap.put(ITENS_OPAF_TOKI_END_YMD, trnOpeDate)` |

**Block 3.2.2.2** — [ELSE] (L2617)

> Tokei by source-side cancellation or pause.

**Block 3.2.2.2.1** — [SET] (L2619)

> Sets the suspension/cancellation tokei end date to the operational date.

| # | Type | Code |
|---|------|------|
| 1 | SET | `rtnDateInfoMap.put(DSL_PAUSE_TOKI_END_YMD, trnOpeDate)` |

**Block 3.2.3** — [ELSE-IF] `SOD_HAK_SBT_CD_NONE = "0"` (No SOD issuance — cancellation of expected tokei) (L2626)

> The SOD type is "None" — the expected tokei is being cancelled. Both start and end dates are set.

**Block 3.2.3.1** — [IF] `JKKBatConst.ITNTOKI_ADD_CD_ITENS = "1"` (L2628)

**Block 3.2.3.1.1** — [SET] (L2630–2632)

> Sets both post-transfer activation start and end dates to the operational date.

| # | Type | Code |
|---|------|------|
| 1 | SET | `rtnDateInfoMap.put(ITENS_OPAF_TOKI_STA_YMD, trnOpeDate)` |
| 2 | SET | `rtnDateInfoMap.put(ITENS_OPAF_TOKI_END_YMD, trnOpeDate)` |

**Block 3.2.3.2** — [ELSE] (L2629)

> Tokei by source-side cancellation or pause.

**Block 3.2.3.2.1** — [SET] (L2631–2633)

> Sets both suspension/cancellation start and end dates.

| # | Type | Code |
|---|------|------|
| 1 | SET | `rtnDateInfoMap.put(DSL_PAUSE_TOKI_STA_YMD, trnOpeDate)` |
| 2 | SET | `rtnDateInfoMap.put(DSL_PAUSE_TOKI_END_YMD, trnOpeDate)` |

**Block 3.2.4** — [ELSE] (L2636)

> Catch-all for unhandled SOD types — no processing performed (comment: "nothing to do (no SOD types beyond the above are expected)").

**Block 3.3** — [RETURN] (L2642)

> Returns the enriched date info map.

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

---

### Internal method: `executeKK_T_SVKEIUW_EOH_TEL_PKINSERT()` detail (L828–953)

**Block 4.1** — [SET] (L831–950)

> Maps each of the 97 array elements to a named field in a `JBSbatCommonDBInterface`. This creates a key-value mapping where field names are database column identifiers.

| # | Type | Code |
|---|------|------|
| 1 | SET | `JBSbatCommonDBInterface setMap = new JBSbatCommonDBInterface()` |
| 2 | SET | `setMap.setValue("SVC_KEI_UCWK_NO", setParam[0])` // Service contract work number |
| 3 | SET | `setMap.setValue("GENE_ADD_DTM", setParam[1])` // Generation registration timestamp |
| 4 | SET | `setMap.setValue("TELNO", setParam[2])` // Phone number |
| ... | SET | `...` (continues for all 97 positions) |
| 94 | SET | `setMap.setValue("DEL_TRN_ID", setParam[96])` // Delete processing ID |

**Block 4.2** — [CALL] (L951)

> Executes the database insert.

| # | Type | Code |
|---|------|------|
| 1 | CALL | `db_KK_T_SVKEIUW_EOH_TEL.insertByPrimaryKeys(setMap)` // Writes the complete row to T_SVKEIUW_EOH_TEL |

## 7. Glossary

| Term | Type | Business Meaning |
|------|------|------------------|
| `svc_kei_ucwk_no` | Field | Service contract detail work number — internal tracking ID for a service contract line item |
| `telno` | Field | Phone number — the primary telephone number assigned to this eo Light Phone line |
| `daihyo_telno` | Field | Representative phone number — the main/primary phone number for the service contract |
| `telno_use_place_no` | Field | Phone number usage location number — identifies where the phone number is in use |
| `emg_ad_cd` | Field | Emergency notification address code — code for the address used for emergency alerts (required by Japanese telecom regulations) |
| `emg_hosei_pcd` | Field | Emergency notification correction postal code — corrected postal code for emergency notifications |
| `emg_state_nm` / `emg_city_nm` / `emg_oaztsu_nm` / `emg_azcho_nm` | Field | Emergency notification prefecture / city / oaza / cho-block names — Japanese address components |
| `emg_bnchigo` | Field | Emergency notification land number — lot/parcel number for emergency addresses |
| `emg_adrttm` / `emg_adrrm` | Field | Emergency notification building name / room number |
| `emg_ksh_ksitei_flg` | Field | Emergency notification contractor individual designation flag — whether the contractor is individually specified |
| `emg_ksh_nm` / `emg_ksh_kana` | Field | Emergency notification contractor name / katakana name |
| `sip_user_id` / `sip_user_id_pwd` | Field | SIP user ID and password — VoIP credentials for IP telephone service |
| `sip_user_id_del_zumi_flg` | Field | SIP user ID deletion completion flag — indicates whether the SIP ID has been deactivated |
| `first_cdr_hassei_ymd` | Field | First CDR (Call Detail Record) issuance date — date when the first call record was generated |
| `telno_jun` | Field | Phone number sequence/order — ordering number for multiple phone numbers |
| `ntt_no_guide_um` | Field | NTT number inquiry availability — whether the number is listed in the NTT directory |
| `hellopage_keisai_um` | Field | Hello page publication availability — whether the number appears on the NTT Hello Page |
| `tuwa_dtl_kokai_yh` | Field | Call details publication flag — whether call records are publicly disclosed |
| `tel_no_pre_tchi_cd` | Field | Phone number advance notification code — code for pre-notification of phone number changes |
| `ntt_keisha_ad_cd` / `ntt_keisha_pcd` | Field | NTT contractor address code / postal code — the carrier-level customer address |
| `ntt_keisha_nm` / `ntt_ksh_kana` | Field | NTT contractor name / katakana name — carrier-recorded customer name |
| `ntt_ksh_ad_ksh_ad_sai_flg` | Field | NTT contractor address vs contractor address difference flag — indicates whether the NTT contractor address differs from the service contractor address |
| `nkys_ad_man_input_flg` | Field | NTT contractor address manual input flag — whether the address was manually entered |
| `tsjgs_cd` | Field | Communication carrier code — identifies the telecommunications carrier |
| `itnm_tsjgs_ktn_cd` | Field | Pre-porting carrier hub code — the carrier code before number portability |
| `doji_open_kibo_cd` | Field | Simultaneous activation wish code — whether the customer wishes for simultaneous activation of services |
| `tel_ttdki_msKM_cd` | Field | Phone procedure application code — code for the phone service application procedure |
| `man_switch_rsv_dtm` | Field | Manual switch scheduled date-time — when the manual line switch is scheduled |
| `shk_tel_op_sette_rmts_pwd` / `tel_op_sette_rmts_pwd` | Field | Initial phone option setup remote password / Phone option setup remote password — remote operation credentials for phone settings |
| `dsl_pause_toki_add_cd` | Field | Cancellation/pause tokei registration code — code for registration of service cancellation or pause tokei |
| `dsl_pause_toki_sbt_cd` | Field | Cancellation/pause tokei type code — type of tokei (cancellation or pause) |
| `dsl_pause_toki_kibo_um` | Field | Cancellation/pause tokei wish availability — whether the customer wishes for tokei |
| `dsl_pause_toki_sta_rsymd` / `dsl_pause_toki_end_rsymd` | Field | Cancellation/pause tokei start/end scheduled date (with time) |
| `dsl_pause_toki_sta_ymd` / `dsl_pause_toki_end_ymd` | Field | Cancellation/pause tokei start/end date (date only) — overridden by `trnOpeDate` during processing |
| `pause_toki_end_sbt_cd` | Field | Pause tokei end type code — type of pause tokei completion |
| `dsl_pause_toki_tss_tln` | Field | Cancellation/pause tokei destination phone number — target phone number for line transfer |
| `dsl_pause_toki_tss_svkuwno` | Field | Cancellation/pause tokei destination service contract detail number |
| `itens_opaf_toki_add_cd` / `itens_opaf_toki_sbt_cd` | Field | Post-transfer activation tokei registration/type codes |
| `itens_opaf_toki_kibo_um` | Field | Post-transfer activation tokei wish availability |
| `itens_opaf_toki_sta_ymd` / `itens_opaf_toki_end_ymd` | Field | Post-transfer activation tokei start/end dates — overridden by `trnOpeDate` |
| `itns_opaf_toki_tss_svkuwno` | Field | Post-transfer activation tokei destination service contract detail number |
| `townpage_keisai_kana` / `townpage_keisai_nm` | Field | Town page publication katakana/name — directory listing name |
| `bmp_um` | Field | Feature phone (FOMA/BMP) availability — whether feature phone service is active |
| `bmp_af_use_place_sbt_cd` | Field | Post-feature phone usage type code |
| `bmp_doji_koji_kibo_um` | Field | Feature phone simultaneous construction wish — whether to install simultaneously with other work |
| `bmp_koji_kibo_ymd` / `bmpkj_kibo_time_cd` | Field | Feature phone construction wish date / time code |
| `bmp_doji_open_ymd` | Field | Feature phone simultaneous activation date |
| `dobaniten_msKM_um` / `dobaniten_req_ctrl_cd` / `dobaniten_jdg_cd` | Field | Same-number porting application availability / request control code / judgment code |
| `dbaniten_msKMjig_kijiran_1` / `dbaniten_msKMjig_kijiran_2` | Field | Same-number porting application carrier notice items 1 and 2 |
| `dobaniten_ntt_keisha_nm` / `dobaniten_ntt_ksh_kana` | Field | Same-number porting NTT contractor name / katakana |
| `va_taknkiki_model_cd` | Field | VA (Voice Application) indoor device model code |
| `va_kiki_seizo_no` | Field | VA device serial number |
| `va_kiki_chg_no` | Field | VA device change number — tracks device replacement (added by change KT1-2013-0000590) |
| `va_port_no` | Field | VA port number |
| `rsv_aply_cd` | Field | Reservation application code — code for the reservation application |
| `sod_hak_sbt_cd` | Field | SOD issuance type code — "1"=Start (開始SOD発行), "2"=End (終了SOD発行), "0"=None (SOD発行なし) |
| `itntoki_add_cd` | Field | Move registration code — "1"=ITENS (移転先登録によるトーキ / Tokei by destination-side registration) |
| `trnOpeDate` | Instance field | Operational date — the current batch processing date from `super.onlineOpeDate` |
| `T_SVKEIUW_EOH_TEL` | Table | Service contract details ＜eo Light Phone＞ — the database table storing all phone line contract information |
| SOD | Acronym | Service Order Data — telecom order fulfillment entity; SOD_HAK_SBT_CD determines issuance type |
| FTTH | Business term | Fiber To The Home — fiber-optic broadband service (eo Light) |
| SIP | Acronym | Session Initiation Protocol — VoIP signaling protocol for IP telephone service |
| CDR | Acronym | Call Detail Record — record of telephone call activity |
| NTT | Business term | Nippon Telegraph and Telephone — Japan's incumbent telecommunications carrier; NTT contractor records are carrier-level customer data |
| VA | Acronym | Voice Application — Fujitsu's IP telephone device/platform for eo Light Phone |
| Tokei (トーキ) | Business term | Scheduled activation/completion processing — pre-scheduled service activation or termination |
| ICS | Acronym | Interface Control System — the ICS-side processing that produces intermediate files |
| eo Light (eo光) | Business term | NTT East's fiber optic broadband service brand |
| eo Light Phone (eo光電話) | Business term | Bundle of eo Light (fiber internet) with landline telephone service |
| FLG_ON / FLG_OFF | Constants | Flag constants — "1" for ON, "0" for OFF (used in other methods of the class) |
| GENE_ADD_DTM | Field | Generation registration date-time — the timestamp when this record was initially created in the database |
| ADD_DTM / ADD_OPEACNT / ADD_TRN_ID | Fields | Add timestamp / Add operator account / Add transaction ID — audit fields for record creation |
| UPD_DTM / UPD_OPEACNT / UPD_TRN_ID | Fields | Update timestamp / Update operator account / Update transaction ID — audit fields for record modification |
| DEL_DTM / DEL_OPEACNT / DEL_TRN_ID | Fields | Delete timestamp / Delete operator account / Delete transaction ID — audit fields for record deletion |
| MK_FLG | Field | Valid/invalid flag — indicates whether the record is active |
| ADD_UNYO_YMD / UPD_UNYO_YMD / DEL_UNYO_YMD | Fields | Add/Update/Delete operation dates — operational date stamps for audit trail |