# Business Logic — JBSbatKKKjFinClDataInTrn.execute() [590 LOC]

| Field | Value |
|-------|-------|
| Fully Qualified Name | `eo.business.service.JBSbatKKKjFinClDataInTrn` |
| Layer | Service (Batch processing) |
| Module | `service` (Package: `eo.business.service`) |

## 1. Role

### JBSbatKKKjFinClDataInTrn.execute()

This method is the main processing entry point of a batch service that handles **customer change file data for telecommunications service contracts**. It processes two distinct service types depending on the service code and work result fields:

1. **Internet Service (FTTH) contract changes** — when `svcCd == "01"` (Internet Service) and `kojiRslt == "3"` (Work Cancelled / 工事取消), it processes fiber-optic (FTTH) service contract modifications including intermediate file updates for customer changes.

2. **TV Service contract changes** — when `svcCd == "03"` (TV Service) and `kojiRslt == "3"` (Work Cancelled), it processes television service contract modifications including settlement (cancellation) handling for sub-accounts.

The method implements a **routing/dispatch pattern**: after validating timestamp consistency on move reservations (異動予約), it branches based on service code to execute domain-specific processing chains. For each branch, it performs multi-step data validation (checking move reservations, service contract details, apparatus-provided service contracts), executes update operations with retry-safe idempotency checks, and finally registers a progress schema entry.

It serves as a **batch processing entry point** invoked by the batch scheduler framework, acting on data imported from customer change files (as evidenced by the `JBSbatKKIFM151` import field definition). The method coordinates with multiple database tables to ensure consistency across move reservation records, service contract details, apparatus-provided service contracts, and EO optical network/TV sub-accounts.

## 2. Processing Pattern (Detailed Business Logic)

```mermaid
flowchart TD
    START(["execute(inMap)"])
    START --> LOG_START["printDebugLog execute_START"]
    LOG_START --> INIT_VARS["Initialize local variables and DB maps"]
    INIT_VARS --> EXTRACT_INPUT["Extract fields from inMap"]
    EXTRACT_INPUT --> CHECK_UcwK_FLG{UcwkFlg check}
    CHECK_UcwK_FLG -->|svcKeiUcwkNo1 empty| SET_UcwK_FLG_false["UcwkFlg = false"]
    CHECK_UcwK_FLG -->|svcKeiUcwkNo1 not empty| CHECK_LOG_LEVEL{logLevel DEBUG?}
    SET_UcwK_FLG_false --> CHECK_LOG_LEVEL
    CHECK_LOG_LEVEL -->|true| PRINT_DEBUG["Print debug fields"]
    CHECK_LOG_LEVEL -->|false| SEARCH_IDO_RSV
    PRINT_DEBUG --> SEARCH_IDO_RSV["searchIdoRsv(idoRsvNo_151)"]
    SEARCH_IDO_RSV --> TS_CHECK{idoTimeStampCheck}
    TS_CHECK -->|null| ERROR_TS["printBusinessErrorLog EKKB0360KE return null"]
    TS_CHECK -->|not null| SVC_CD_BRANCH{svcCd == 01 and kojiRslt == 3?}
    ERROR_TS --> END_NODE(["return null"])
    SVC_CD_BRANCH -->|true| FTTH_BRANCH["FTTH branch Internet Service + Work Cancelled"]
    SVC_CD_BRANCH -->|false| TV_BRANCH["TV branch TV Service + Work Cancelled"]
    FTTH_BRANCH --> CHECK_IDO_RSV_NO2{idoRsvNo2 empty?}
    CHECK_IDO_RSV_NO2 -->|not empty| TS_CHECK2{idoTimeStampCheck for idoRsvNo2}
    TS_CHECK2 -->|null| ERROR_TS2["printBusinessErrorLog return null"]
    TS_CHECK2 -->|not empty| SELECT_010["executeKK_T_IDO_RSV_KK_SELECT_010 selectNext"]
    SELECT_010 --> IDO_010_NULL{idoRsvMap_010 null?}
    IDO_010_NULL -->|yes| THROW_010["throw BusinessException"]
    IDO_010_NULL -->|no| UCWK_FLG_CHECK{UcwkFlg?}
    THROW_010 --> END_NODE
    UCWK_FLG_CHECK -->|true| SELECT_014["executeKK_T_IDO_RSV_KK_SELECT_014 selectNext"]
    UCWK_FLG_CHECK -->|false| SELECT_037
    SELECT_014 --> IDO_014_NULL{idoRsvMap_014 null?}
    IDO_014_NULL -->|yes| KK014_FLG_False["kkTIdoRsv014Flg = false"]
    IDO_014_NULL -->|no| KK014_FLG_True["kkTIdoRsv014Flg = true"]
    KK014_FLG_True --> PK_UCWK["KK_T_SVC_KEI_UCWK_PKSELECT"]
    KK014_FLG_False --> PK_UCWK
    PK_UCWK --> UCWK_NULL{ucwk1_map null?}
    UCWK_NULL -->|yes| THROW_UCWK["throw BusinessException"]
    UCWK_NULL -->|no| PK_EOH_NET["KK_T_SVKEIUW_EOH_NET_PKSELECT"]
    THROW_UCWK --> END_NODE
    PK_EOH_NET --> EOH_NET_NULL{svkeiUwEohNet_map null?}
    EOH_NET_NULL -->|yes| THROW_EOH["throw BusinessException"]
    EOH_NET_NULL -->|no| CHECK_UCWK2{svcKeiUcwkNo2 and geneAddDtm2 not empty?}
    THROW_EOH --> END_NODE
    CHECK_UCWK2 -->|true| SELECT_060["executeKK_T_SVC_KEI_UCWK_KK_SELECT_060 selectNext"]
    CHECK_UCWK2 -->|false| SELECT_037
    SELECT_060 --> SVC_060_NULL{svcKeiUwMap_060 null?}
    SVC_060_NULL -->|yes| THROW_060["throw BusinessException"]
    SVC_060_NULL -->|no| SELECT_037
    THROW_060 --> END_NODE
    SELECT_037["executeKK_T_KKTK_SVC_KEI_KK_SELECT_037 selectNext"]
    SELECT_037 --> KKTK_037_NULL{kktkSvcKeiMap_037 null?}
    KKTK_037_NULL -->|no| DEBUG_KKTK["printDebugLog service contract not found"]
    KKTK_037_NULL -->|yes| UPDATE_IDO_RSV
    DEBUG_KKTK --> UPDATE_IDO_RSV["updateIdoRsv"]
    UPDATE_IDO_RSV --> KK014_CHECK{kkTIdoRsv014Flg?}
    KK014_CHECK -->|true| UPDATE_IDO_RSV2["updateIdoRsv2"]
    KK014_CHECK -->|false| UCWK_UPDATE
    UPDATE_IDO_RSV2 --> UCWK_UPDATE{UcwkFlg?}
    UCWK_UPDATE -->|true| UPDATE_SVC_UCWK["updateSvcKeiUcwk + updateSvkeiUwEohNet"]
    UCWK_UPDATE -->|false| PROGRESS_INSERT
    UPDATE_SVC_UCWK --> CHECK_UCWK2_LOOP{svcKeiUcwkNo2 and geneAddDtm2 not empty?}
    CHECK_UCWK2_LOOP -->|true| WHILE_SVC_060["while svcKeiUwMap_060: update + next"]
    WHILE_SVC_060 --> CHECK_KKTK_037{kktkSvcKeiMap_037 not null?}
    WHILE_SVC_060 --> CHECK_KKTK_037
    CHECK_KKTK_037 -->|true| WHILE_KKTK_037["while kktkSvcKeiMap_037: updateKktkSvcKei + next"]
    CHECK_KKTK_037 -->|false| PROGRESS_INSERT
    WHILE_KKTK_037 --> PROGRESS_INSERT["insertPrg"]
    PROGRESS_INSERT --> END_FTTH
    END_FTTH --> END_NODE
    TV_BRANCH --> TV_SELECT_010["executeKK_T_IDO_RSV_KK_SELECT_010 selectNext"]
    TV_SELECT_010 --> TV_IDO_NULL{idoRsvMap_010 null?}
    TV_IDO_NULL -->|yes| THROW_TV_010["throw BusinessException"]
    TV_IDO_NULL -->|no| TV_SELECT_015["executeKK_T_IDO_RSV_KK_SELECT_015 selectNext"]
    THROW_TV_010 --> END_NODE
    TV_SELECT_015 --> TV_015_NULL{idoRsvMap_015 null?}
    TV_015_NULL -->|yes| KK015_FLG_False["kkTIdoRsv015Flg = false"]
    TV_015_NULL -->|no| KK015_FLG_True["kkTIdoRsv015Flg = true"]
    KK015_FLG_True --> TV_UPDATE_IDO["updateIdoRsv"]
    KK015_FLG_False --> TV_UPDATE_IDO
    TV_UPDATE_IDO --> KK015_CHECK{kkTIdoRsv015Flg?}
    KK015_CHECK -->|true| WHILE_015["while idoRsvMap_015"]
    KK015_CHECK -->|false| TV_SELECT_040
    WHILE_015 --> UPDATE_IDO_015["updateIdoRsv2"]
    UPDATE_IDO_015 --> CHECK_DTL_CD{ucwkNo not empty and idoRsvDtlCd == 007?}
    CHECK_DTL_CD -->|true| SELECT_061["executeKK_T_SVC_KEI_UCWK_KK_SELECT_061"]
    CHECK_DTL_CD -->|false| WHILE_015_NEXT
    SELECT_061 --> SVC_061_NULL{svcKeiUwMap_061 null?}
    SVC_061_NULL -->|yes| DEBUG_061["printDebugLog svcKeiUcwkNo not found"]
    SVC_061_NULL -->|no| WHILE_061["while svcKeiUwMap_061: update + selectKktkSvcKei146"]
    DEBUG_061 --> WHILE_015_NEXT
    WHILE_061 --> WHILE_KKTK_146["while outMap146: updateKktkSvcKeiDslTv + next"]
    WHILE_KKTK_146 --> WHILE_015_NEXT2["idoRsvMap_015 = selectNext"]
    WHILE_015_NEXT2 --> TV_SELECT_040["executeKK_T_SVC_KEI_UCWK_KK_SELECT_040"]
    TV_SELECT_040 --> SVC_040_NULL{svcKeiUcwkMap_040 null?}
    SVC_040_NULL -->|yes| DEBUG_040["printDebugLog svcKeiNo not found"]
    SVC_040_NULL -->|no| WHILE_040["while svcKeiUcwkMap_040"]
    DEBUG_040 --> PROGRESS_INSERT_TV
    WHILE_040 --> SELECT_038["executeKK_T_KKTK_SVC_KEI_KK_SELECT_038"]
    SELECT_038 --> KKTK_038_NULL{kktkSvcKeiMap_038 null?}
    KKTK_038_NULL -->|yes| THROW_038["throw BusinessException"]
    KKTK_038_NULL -->|no| WHILE_KKTK_038["while kktkSvcKeiMap_038: updateKktkSvcKei + next"]
    THROW_038 --> END_NODE
    WHILE_KKTK_038 --> UPDATE_SVC_UCWK_040["updateSvcKeiUcwk"]
    UPDATE_SVC_UCWK_040 --> PK_EOH_TV["KK_T_SVKEIUW_EOH_TV_PKSELECT"]
    PK_EOH_TV --> EOH_TV_NULL{svkeiUwEohTv_map null?}
    EOH_TV_NULL -->|yes| THROW_EOH_TV["throw BusinessException"]
    EOH_TV_NULL -->|no| UPDATE_EOH_TV["updateSvkeiUwEohTv"]
    THROW_EOH_TV --> END_NODE
    UPDATE_EOH_TV --> WHILE_040_NEXT["svcKeiUcwkMap_040 = selectNext"]
    WHILE_040_NEXT --> PROGRESS_INSERT_TV["insertPrg"]
    PROGRESS_INSERT_TV --> PRINT_END["printDebugLog execute_END"]
    PRINT_END --> RETURN_NULL["return null"]
    RETURN_NULL --> END_NODE

    style START fill:#90EE90
    style END_NODE fill:#FFB6C1
```

**Key branches:**

- **Condition: `svcCd == "01"` and `kojiRslt == "3"`** (L353) — FTTH (Internet Service) branch. Handles customer change file updates for internet service contracts with work cancellation.
- **Condition: `svcCd != "01"` and `kojiRslt != "3"`** (L353) — TV branch. Handles TV service contract modifications, specifically settlement (cancellation) processing for sub-accounts.

## 3. Parameter Analysis

| No | Parameter Name | Type | Business Description |
|----|---------------|------|---------------------|
| 1 | `inMap` | `JBSbatServiceInterfaceMap` | Input message map carrying customer change file data for service contract modifications. Contains service contract number, move reservation number, service code, work result, and related fields for both FTTH and TV service types. |

**Instance fields / external state read by this method:**

| Field | Type | Business Description |
|-------|------|---------------------|
| `super.opeDate` | `String` | Batch operation date — the date used for processing (from parent class) |
| `super.logPrint` | `JBSbatLogPrint` | Logging facility for debug and business error log output |
| `db_KK_T_IDO_RSV` | DB handler | Database accessor for move reservation table (KK_T_IDO_RSV) |
| `db_KK_T_IDO_RSV_014` | DB handler | Secondary DB accessor for move reservation table (SELECT_014 query) |
| `db_KK_T_IDO_RSV_015` | DB handler | Tertiary DB accessor for move reservation table (SELECT_015 query) |
| `db_KK_T_KKTK_SVC_KEI` | DB handler | DB accessor for apparatus-provided service contract table |
| `db_KK_T_KKTK_SVC_KEI_038` | DB handler | DB accessor for apparatus-provided service contract (SELECT_038 query) |
| `db_KK_T_SVC_KEI_UCWK` | DB handler | DB accessor for service contract details table |
| `db_KK_T_SVC_KEI_UCWK_060` | DB handler | DB accessor for service contract details (SELECT_060 query) |
| `db_KK_T_SVC_KEI_UCWK_061` | DB handler | DB accessor for service contract details (SELECT_061 query) |
| `db_KK_T_KKTK_SVC_KEI_146` | DB handler | DB accessor for apparatus-provided service contract (SELECT_0146 query) |

## 4. CRUD Operations / Called Services

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

| CRUD | SC / CBS | SC Code | Entity / DB | Operation Description |
|------|----------|---------|-------------|----------------------|
| R | `executeKK_T_IDO_RSV_KK_SELECT_010` | - | `KK_T_IDO_RSV` | Queries move reservation record by reservation number and service contract number (both FTTH and TV branches) |
| R | `executeKK_T_IDO_RSV_KK_SELECT_014` | - | `KK_T_IDO_RSV` | Queries move reservation record 2 for FTTH branch (used when UcwkFlg is true and inner contract number 2 exists) |
| R | `executeKK_T_IDO_RSV_KK_SELECT_015` | - | `KK_T_IDO_RSV` | Queries move reservation by application detail number for TV branch |
| R | `executeKK_T_SVC_KEI_UCWK_PKSELECT` | - | `KK_T_SVC_KEI_UCWK` | Primary key lookup for service contract details (new registration) in FTTH branch |
| R | `executeKK_T_SVC_KEI_UCWK_KK_SELECT_060` | - | `KK_T_SVC_KEI_UCWK` | Queries service contract details for cancellation (FTTH branch, second inner contract) |
| R | `executeKK_T_SVC_KEI_UCWK_KK_SELECT_061` | - | `KK_T_SVC_KEI_UCWK` | Queries service contract details for settlement/cancellation in TV branch (idoRsvDtlCd == "007") |
| R | `executeKK_T_SVC_KEI_UCWK_KK_SELECT_040` | - | `KK_T_SVC_KEI_UCWK` | Queries service contract details by service contract number and application detail number in TV branch |
| R | `executeKK_T_KKTK_SVC_KEI_KK_SELECT_037` | - | `KK_T_KKTK_SVC_KEI` | Queries apparatus-provided service contract in FTTH branch by service contract number, detail number, and operation date |
| R | `executeKK_T_KKTK_SVC_KEI_KK_SELECT_038` | - | `KK_T_KKTK_SVC_KEI` | Queries apparatus-provided service contract in TV branch by service contract detail number |
| R | `executeKK_T_SVKEIUW_EOH_NET_PKSELECT` | - | `KK_T_SVKEIUW_EOH_NET` | Primary key lookup for EO optical net service contract details (new registration) in FTTH branch |
| R | `executeKK_T_SVKEIUW_EOH_TV_PKSELECT` | - | `KK_T_SVKEIUW_EOH_TV` | Primary key lookup for EO optical TV service contract details (new registration) in TV branch |
| R | `searchIdoRsv` | - | `KK_T_IDO_RSV` | Retrieves move reservation record and its update timestamp for timestamp validation |
| R | `selectKktkSvcKei146` | - | `KK_T_KKTK_SVC_KEI` | Queries apparatus-provided service contract for cancellation detail number in TV branch |
| U | `updateIdoRsv` | - | `KK_T_IDO_RSV` | Updates move reservation record in both FTTH and TV branches |
| U | `updateIdoRsv2` | - | `KK_T_IDO_RSV` | Updates move reservation record 2 (secondary reservation) |
| U | `updateSvcKeiUcwk` | - | `KK_T_SVC_KEI_UCWK` | Updates service contract details (new registration) in both branches |
| U | `updateSvcKeiUcwk2` | - | `KK_T_SVC_KEI_UCWK` | Updates service contract details for cancellation (FTTH) and settlement (TV) |
| U | `updateSvkeiUwEohNet` | - | `KK_T_SVKEIUW_EOH_NET` | Updates EO optical net service contract details (FTTH branch, new registration) |
| U | `updateSvkeiUwEohNet2` | - | `KK_T_SVKEIUW_EOH_NET` | Updates EO optical net service contract for cancellation (FTTH branch) |
| U | `updateSvkeiUwEohTv` | - | `KK_T_SVKEIUW_EOH_TV` | Updates EO optical TV service contract details (TV branch, new registration) |
| U | `updateSvkeiUwEohTv2` | - | `KK_T_SVKEIUW_EOH_TV` | Updates EO optical TV service contract for settlement (TV branch) |
| U | `updateKktkSvcKei` | - | `KK_T_KKTK_SVC_KEI` | Updates apparatus-provided service contract with plan start date and plan charge start date |
| U | `updateKktkSvcKeiDslTv` | - | `KK_T_KKTK_SVC_KEI` | Updates apparatus-provided service contract for DSL TV cancellation (TV branch) |
| C | `insertPrg` | - | Progress table (進捗スキマ) | Registers a progress schema entry to track batch processing advancement |
| - | `idoTimeStampCheck` | - | - | Validates timestamp consistency between input and DB for optimistic locking |
| - | `JBSbatStringUtil.Rtrim` | - | - | Trims trailing whitespace from strings during field extraction |
| - | `printDebugLog` | - | - | Outputs debug logs (various debug levels and message types) |
| - | `printBusinessErrorLog` | - | - | Outputs business error logs for error conditions |

## 5. Dependency Trace

This method has **no direct callers found** in the codebase. It is a batch service entry point class extending `JBSbatBusinessService`, which is invoked by the batch scheduler framework at runtime (not via direct Java method calls).

| # | Caller (Screen/Batch) | Call Chain (Full Path to this Method) | Terminal (SC / CRUD / Entity) |
|---|----------------------|--------------------------------------|-------------------------------|
| 1 | Batch: JBSbatKKKjFinClDataInTrn (framework) | BatchScheduler -> JBSbatBusinessService.execute -> JBSbatKKKjFinClDataInTrn.execute | `searchIdoRsv [R] KK_T_IDO_RSV`, `updateIdoRsv [U] KK_T_IDO_RSV`, `updateSvcKeiUcwk [U] KK_T_SVC_KEI_UCWK`, `insertPrg [C] Progress`, `updateKktkSvcKei [U] KK_T_KKTK_SVC_KEI` |

The method uses fields from `JBSbatKKIFM151` (customer change file input definition) as the primary input message structure. Other batch classes in the codebase reference `JBSbatKKIFM151` constants for building similar input maps (e.g., `JBSbatKKCourseChgeTstaDayChsht`, `JBSbatKKKjClDataInTrn`, `JBSbatKKKjFinDataInTrn`, `JBSbatKKCourseChgFileBnkt`).

## 6. Per-Branch Detail Blocks

**Block 1** — [SET] variable initialization (L216)

| # | Type | Code |
|---|------|------|
| 1 | SET | `svcKeiNo_151 = ""` — Service contract number (customer change file intermediate) |
| 2 | SET | `idoRsvNo_151 = ""` — Move reservation number (customer change file intermediate) |
| 3 | SET | `updDtm1_151 = ""` — Update timestamp 1 (customer change file intermediate) |
| 4 | SET | `svcCd_151 = ""` — Service code (customer change file intermediate) |
| 5 | SET | `svcKeiUcwkNo1_151 = ""` — Service contract detail number 1 (customer change file intermediate) |
| 6 | SET | `geneAddDtm1_151 = ""` — Generation registration date 1 (customer change file intermediate) |
| 7 | SET | `svcKeiUcwkNo2_151 = ""` — Service contract detail number 2 (customer change file intermediate) |
| 8 | SET | `geneAddDtm2_151 = ""` — Generation registration date 2 (customer change file intermediate) |
| 9 | SET | `idoRsvNo2_151 = ""` — Move reservation number 2 (customer change file intermediate) |
| 10 | SET | `updDtm2_151 = ""` — Update timestamp 2 (customer change file intermediate) |
| 11 | SET | `kojiRslt_151 = ""` — Work result (customer change file intermediate) |
| 12 | SET | `mskmDtlNo_151 = ""` — Application detail number (customer change file intermediate) |
| 13 | SET | `idoDiv_151 = ""` — Move division (customer change file intermediate) |
| 14 | SET | `kojiakNo_151 = ""` — Work case number (customer change file intermediate) |
| 15 | SET | `opt_date = ""` — Operation date |
| 16 | SET | `planStaymd_svcKeiUw = ""` — Plan start date (service contract details) |
| 17 | SET | `planChrgStaymd_svcKeiUw = ""` — Plan charge start date (service contract details) |

**Block 2** — [SET] v20.00.01 additional variable (L237)

| # | Type | Code |
|---|------|------|
| 1 | SET | `lastUpdDtmBf = ""` — Update timestamp before (customer change file intermediate) |

**Block 3** — [SET] DB map creation (L241–259)

| # | Type | Code |
|---|------|------|
| 1 | SET | `idoRsvMap_010 = new JBSbatCommonDBInterface()` — SQL execution result map (move reservation skima fetch) |
| 2 | SET | `idoRsvMap_014 = new JBSbatCommonDBInterface()` — SQL execution result map (move reservation skima fetch) |
| 3 | SET | `idoRsvMap_015 = new JBSbatCommonDBInterface()` — SQL execution result map (move reservation skima fetch) |
| 4 | SET | `kktkSvcKeiMap_037 = new JBSbatCommonDBInterface()` — SQL execution result map (apparatus-provided service contract skima fetch) |
| 5 | SET | `svcKeiUcwkMap_040 = new JBSbatCommonDBInterface()` — SQL execution result map (service contract details skima fetch) |
| 6 | SET | `svcKeiUwMap_060 = new JBSbatCommonDBInterface()` — SQL execution result map (service contract details skima fetch) |
| 7 | SET | `svcKeiUwMap_061 = new JBSbatCommonDBInterface()` — SQL execution result map (service contract details skima fetch) |
| 8 | SET | `kktkSvcKeiMap_038 = new JBSbatCommonDBInterface()` — SQL execution result map (apparatus-provided service contract skima fetch) |

**Block 4** — [EXEC] Extract fields from inMap (L261–285)

| # | Type | Code |
|---|------|------|
| 1 | SET | `svcKeiNo_151 = inMap.getString(JBSbatKKIFM151.SVC_KEI_NO)` — Service contract number |
| 2 | SET | `lastUpdDtmBf = inMap.getString(JBSbatKKIFM151.UPD_DTM)` — Update timestamp |
| 3 | SET | `idoRsvNo_151 = inMap.getString(JBSbatKKIFM151.IDO_RSV_NO)` — Move reservation number |
| 4 | SET | `updDtm1_151 = inMap.getString(JBSbatKKIFM151.UPD_DTM1)` — Update timestamp 1 |
| 5 | SET | `svcCd_151 = inMap.getString(JBSbatKKIFM151.SVC_CD)` — Service code |
| 6 | SET | `svcKeiUcwkNo1_151 = inMap.getString(JBSbatKKIFM151.SVC_KEI_UCWK_NO1)` — Service contract detail number 1 |
| 7 | SET | `geneAddDtm1_151 = inMap.getString(JBSbatKKIFM151.GENE_ADD_DTM1)` — Generation registration date 1 |
| 8 | SET | `svcKeiUcwkNo2_151 = inMap.getString(JBSbatKKIFM151.SVC_KEI_UCWK_NO2)` — Service contract detail number 2 |
| 9 | SET | `geneAddDtm2_151 = inMap.getString(JBSbatKKIFM151.GENE_ADD_DTM2)` — Generation registration date 2 |
| 10 | SET | `idoRsvNo2_151 = inMap.getString(JBSbatKKIFM151.IDO_RSV_NO2)` — Move reservation number 2 |
| 11 | SET | `updDtm2_151 = inMap.getString(JBSbatKKIFM151.UPD_DTM2)` — Update timestamp 2 |
| 12 | SET | `kojiRslt_151 = inMap.getString(JBSbatKKIFM151.KOJI_RSLT)` — Work result |
| 13 | SET | `mskmDtlNo_151 = inMap.getString(JBSbatKKIFM151.MSKM_DTL_NO)` — Application detail number |
| 14 | SET | `idoDiv_151 = inMap.getString(JBSbatKKIFM151.IDO_DIV)` — Move division |
| 15 | SET | `kojiakNo_151 = inMap.getString(JBSbatKKIFM151.KOJIAK_NO)` — Work case number |
| 16 | SET | `opt_date = super.opeDate` — Batch operation date |

**Block 5** — [SET] Flag initialization (L287–292)

| # | Type | Code |
|---|------|------|
| 1 | SET | `kkTIdoRsv014Flg = false` — Move reservation search flag (KK_T_IDO_RSV_KK_SELECT_014) |
| 2 | SET | `kkTIdoRsv015Flg = false` — Move reservation search flag (KK_T_IDO_RSV_KK_SELECT_015) |
| 3 | SET | `UcwkFlg = true` — Inner contract flag (inner contract number present) |

**Block 6** — [IF] Check if svcKeiUcwkNo1 is empty (L295) `[svcKeiUcwkNo1 empty]` (L295)

> If the service contract detail number 1 is empty, set UcwkFlg to false to skip inner contract processing.

| # | Type | Code |
|---|------|------|
| 1 | SET | `UcwkFlg = false` |

**Block 7** — [IF] Debug log level check (L301) `[logLevel DEBUG]` (L301)

> Output all field values to debug log when debug mode is enabled.

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `super.logPrint.chkLogLevel(JBSbatLogUtil.MODE_DEBUG)` |
| 2 | EXEC | `super.logPrint.printDebugLog("service code: " + svcCd_151)` |
| 3 | EXEC | `super.logPrint.printDebugLog("work result: " + kojiRslt_151)` |
| 4 | EXEC | `super.logPrint.printDebugLog("move reservation number: " + idoRsvNo_151)` |
| 5 | EXEC | `super.logPrint.printDebugLog("service contract number: " + svcKeiNo_151)` |
| 6 | EXEC | `super.logPrint.printDebugLog("update timestamp: " + lastUpdDtmBf)` |
| 7 | EXEC | `super.logPrint.printDebugLog("application detail number: " + mskmDtlNo_151)` |
| 8 | EXEC | `super.logPrint.printDebugLog("work case number: " + kojiakNo_151)` |
| 9 | EXEC | `super.logPrint.printDebugLog("batch operation date: " + opt_date)` |
| 10 | EXEC | `super.logPrint.printDebugLog("inner contract flag: " + UcwkFlg)` |

**Block 8** — [CALL] Retrieve update timestamp from move reservation (L313)

| # | Type | Code |
|---|------|------|
| 1 | SET | `idoLastUpdDtmAf = searchIdoRsv(idoRsvNo_151)` — Get latest update timestamp from move reservation table |

**Block 9** — [IF] Timestamp consistency check (L315) `[idoTimeStampCheck returns null]` (L315)

> Validates that the timestamp from input matches the timestamp in the database. Returns null if mismatched, indicating concurrent modification or non-existent record.

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `idoTimeStampCheck(idoRsvNo_151, updDtm1_151, idoLastUpdDtmAf)` |
| 2 | SET | `null == idoTimeStampCheck(...)` — condition |
| 3 | EXEC | `super.logPrint.printBusinessErrorLog("EKKB0360KE", ["move reservation TBL", idoRsvNo_151])` |
| 4 | EXEC | `super.logPrint.printDebugLog("Move reservation table does not have reservation number: " + idoRsvNo_151 + "}")` |
| 5 | RETURN | `return null` |

**Block 10** — [IF] Service code branch: Internet Service FTTH (L353) `[SVC_CD_IN_SVC="01"]` and `[KKIFM151_KOJI_RSLT_3="3"]`

> FTTH (Internet Service) branch. Processes customer change file updates for internet service contracts when work result is "3" (work cancelled). This is the primary path for FTTH service modifications.

**Block 10.1** — [IF] Move reservation number 2 check (L358) `[idoRsvNo2 not empty]` (L358)

> If move reservation number 2 is provided (inner contract cancellation), validate its timestamp too.

| # | Type | Code |
|---|------|------|
| 1 | SET | `!"".equals(idoRsvNo2_151)` — condition |
| 2 | EXEC | `idoLastUpdDtmAf2 = searchIdoRsv(idoRsvNo2_151)` — Get update timestamp for move reservation 2 |
| 3 | EXEC | `idoTimeStampCheck(idoRsvNo2_151, updDtm2_151, idoLastUpdDtmAf2)` |
| 4 | IF (nested) | `null == idoTimeStampCheck(...)` — timestamp mismatch |
| 5 | EXEC | `super.logPrint.printBusinessErrorLog("EKKB0360KE", ["move reservation TBL", idoRsvNo2_151])` |
| 6 | RETURN | `return null` |

**Block 10.2** — [CALL] Move reservation query (L372) `KK_T_IDO_RSV_KK_SELECT_010`

| # | Type | Code |
|---|------|------|
| 1 | SET | `whereParam = {idoRsvNo_151, svcKeiNo_151}` |
| 2 | EXEC | `executeKK_T_IDO_RSV_KK_SELECT_010(whereParam)` |
| 3 | SET | `idoRsvMap_010 = db_KK_T_IDO_RSV.selectNext()` |
| 4 | IF | `idoRsvMap_010 == null` |
| 5 | EXEC | `throw new JBSbatBusinessException(EKKB0210CE, ["move reservation", "move reservation number: " + idoRsvNo_151])` |

**Block 10.3** — [IF] Inner contract flag check (L382) `[UcwkFlg=true]`

> When service contract detail number 1 is present, process inner contract data.

**Block 10.3.1** — [IF] Inner contract detail number 2 check (L387) `[UcwkFlg=true]`

| # | Type | Code |
|---|------|------|
| 1 | SET | `whereIdoParam = {idoRsvNo2_151, svcKeiUcwkNo2_151}` |
| 2 | EXEC | `executeKK_T_IDO_RSV_KK_SELECT_014(whereIdoParam)` |
| 3 | SET | `idoRsvMap_014 = db_KK_T_IDO_RSV_014.selectNext()` |
| 4 | IF | `idoRsvMap_014 == null` |
| 5 | EXEC | `super.logPrint.printBusinessErrorLog(EKKB0010CW, ["move reservation search: no SELECT_014 result. Move reservation number 2: " + idoRsvNo2_151 + " Service contract detail number 2: " + svcKeiUcwkNo2_151])` |
| 6 | SET | `kkTIdoRsv014Flg = false` |
| 7 | ELSE | `kkTIdoRsv014Flg = true` |

**Block 10.3.2** — [CALL] Service contract details primary key lookup (L405)

| # | Type | Code |
|---|------|------|
| 1 | SET | `ucwk1_param = {svcKeiUcwkNo1_151, geneAddDtm1_151}` |
| 2 | EXEC | `ucwk1_map = executeKK_T_SVC_KEI_UCWK_PKSELECT(ucwk1_param)` |
| 3 | IF | `ucwk1_map == null` |
| 4 | EXEC | `throw new JBSbatBusinessException(EKKB0210CE, ["service contract details", "service contract detail number 1: " + svcKeiUcwkNo1_151])` |

**Block 10.3.3** — [CALL] EO optical net primary key lookup (L426)

| # | Type | Code |
|---|------|------|
| 1 | SET | `svkeiUwEohNet_param = {svcKeiUcwkNo1_151, geneAddDtm1_151}` |
| 2 | EXEC | `svkeiUwEohNet_map = executeKK_T_SVKEIUW_EOH_NET_PKSELECT(svkeiUwEohNet_param)` |
| 3 | IF | `svkeiUwEohNet_map == null` |
| 4 | EXEC | `throw new JBSbatBusinessException(EKKB0210CE, ["service contract details <EO optical net>", "service contract detail number 1: " + svcKeiUcwkNo1_151])` |

**Block 10.3.4** — [IF] Service contract detail number 2 check (L438) `[svcKeiUcwkNo2 not empty and geneAddDtm2 not empty]` (L438)

| # | Type | Code |
|---|------|------|
| 1 | SET | `svcKeiUcwk_whereParam = {svcKeiUcwkNo2_151}` |
| 2 | EXEC | `executeKK_T_SVC_KEI_UCWK_KK_SELECT_060(svcKeiUcwk_whereParam)` |
| 3 | SET | `svcKeiUwMap_060 = db_KK_T_SVC_KEI_UCWK_060.selectNext()` |
| 4 | IF | `svcKeiUwMap_060 == null` |
| 5 | EXEC | `throw new JBSbatBusinessException(EKKB0210CE, ["service contract details", "service contract detail number 2: " + svcKeiUcwkNo2_151])` |

**Block 10.4** — [CALL] Apparatus-provided service contract query (L455) `KK_T_KKTK_SVC_KEI_KK_SELECT_037`

| # | Type | Code |
|---|------|------|
| 1 | SET | `kktkSvcKei_whereParam = {svcKeiNo_151, mskmDtlNo_151, opt_date}` |
| 2 | EXEC | `executeKK_T_KKTK_SVC_KEI_KK_SELECT_037(kktkSvcKei_whereParam)` |
| 3 | SET | `kktkSvcKeiMap_037 = db_KK_T_KKTK_SVC_KEI.selectNext()` |
| 4 | IF | `kktkSvcKeiMap_037 == null` |
| 5 | EXEC | `super.logPrint.printDebugLog("Apparatus-provided service contract table does not have service contract number: " + svcKeiNo_151)` |

**Block 10.5** — [CALL] Move reservation update (L470)

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `updateIdoRsv(idoRsvNo_151)` |

**Block 10.6** — [IF] Secondary move reservation update (L473) `[kkTIdoRsv014Flg=true]` (L473)

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `updateIdoRsv2(idoRsvNo2_151)` |

**Block 10.7** — [IF] Inner contract updates (L479) `[UcwkFlg=true]` (L479)

> Update service contract details, EO optical net, and apparatus-provided service contract.

**Block 10.7.1** — [CALL] Update service contract details + EO optical net (L482)

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `updateSvcKeiUcwk(svcKeiUcwkNo1_151, geneAddDtm1_151)` |
| 2 | EXEC | `updateSvkeiUwEohNet(svcKeiUcwkNo1_151, geneAddDtm1_151)` |

**Block 10.7.2** — [IF] Cancellation service contract number check (L486) `[svcKeiUcwkNo2 not empty and geneAddDtm2 not empty]` (L486)

> Process cancellation for second inner contract using a while loop to iterate through multiple records.

| # | Type | Code |
|---|------|------|
| 1 | WHILE | `while (svcKeiUwMap_060 != null)` |
| 2 | SET | `svcKeiUcwkNo = Rtrim(svcKeiUwMap_060.getString(JBSbatKK_T_SVC_KEI_UCWK.SVC_KEI_UCWK_NO))` |
| 3 | SET | `geneAddDtm = Rtrim(svcKeiUwMap_060.getString(JBSbatKK_T_SVC_KEI_UCWK.GENE_ADD_DTM))` |
| 4 | EXEC | `printDebugLog("Service contract detail number (net cancellation): " + svcKeiUcwkNo)` |
| 5 | EXEC | `printDebugLog("Generation registration timestamp (net cancellation): " + geneAddDtm)` |
| 6 | SET | `svkeiUwEohNet2_param = {svcKeiUcwkNo, geneAddDtm}` |
| 7 | EXEC | `svkeiUwEohNet2_map = executeKK_T_SVKEIUW_EOH_NET_PKSELECT(svkeiUwEohNet2_param)` |
| 8 | IF | `svkeiUwEohNet2_map == null` |
| 9 | EXEC | `throw new JBSbatBusinessException(EKKB0210CE, ["service contract details <EO optical net>", "service contract detail number 2: " + svcKeiUcwkNo])` |
| 10 | EXEC | `updateSvcKeiUcwk2(svcKeiUcwkNo, geneAddDtm)` |
| 11 | EXEC | `updateSvkeiUwEohNet2(svcKeiUcwkNo, geneAddDtm)` |
| 12 | SET | `svcKeiUwMap_060 = db_KK_T_SVC_KEI_UCWK_060.selectNext()` |

**Block 10.8** — [IF] Apparatus-provided service contract exists (L528) `[kktkSvcKeiMap_037 != null]` (L528)

> Update apparatus-provided service contract with plan start date and plan charge start date.

| # | Type | Code |
|---|------|------|
| 1 | WHILE | `while (kktkSvcKeiMap_037 != null)` |
| 2 | SET | `planStaymd_svcKeiUw = Rtrim(ucwk1_map.getString(JBSbatKK_T_SVC_KEI_UCWK.PLAN_STAYMD))` |
| 3 | SET | `planChrgStaymd_svcKeiUw = Rtrim(ucwk1_map.getString(JBSbatKK_T_SVC_KEI_UCWK.PLAN_CHRG_STAYMD))` |
| 4 | EXEC | `updateKktkSvcKei(planStaymd_svcKeiUw, planChrgStaymd_svcKeiUw, kktkSvcKeiMap_037)` |
| 5 | SET | `kktkSvcKeiMap_037 = db_KK_T_KKTK_SVC_KEI.selectNext()` |

**Block 10.9** — [CALL] Register progress schema (L549)

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `insertPrg(mskmDtlNo_151, svcKeiNo_151, idoDiv_151)` |

---

**Block 11** — [IF] TV service branch (L554)

> TV (television service) branch. Processes TV service contract modifications including settlement (cancellation) handling for DSL TV sub-accounts.

**Block 11.1** — [CALL] Move reservation query (L558) `KK_T_IDO_RSV_KK_SELECT_010`

| # | Type | Code |
|---|------|------|
| 1 | SET | `whereParam = {idoRsvNo_151, svcKeiNo_151}` |
| 2 | EXEC | `executeKK_T_IDO_RSV_KK_SELECT_010(whereParam)` |
| 3 | SET | `idoRsvMap_010 = db_KK_T_IDO_RSV.selectNext()` |
| 4 | IF | `idoRsvMap_010 == null` |
| 5 | EXEC | `throw new JBSbatBusinessException(EKKB0210CE, ["move reservation", "move reservation number: " + idoRsvNo_151])` |

**Block 11.2** — [CALL] Move reservation detail query (L572) `KK_T_IDO_RSV_KK_SELECT_015`

| # | Type | Code |
|---|------|------|
| 1 | SET | `whereIdoParam = {mskmDtlNo_151}` |
| 2 | EXEC | `executeKK_T_IDO_RSV_KK_SELECT_015(whereIdoParam)` |
| 3 | SET | `idoRsvMap_015 = db_KK_T_IDO_RSV_015.selectNext()` |
| 4 | IF | `idoRsvMap_015 == null` |
| 5 | EXEC | `super.logPrint.printDebugLog("Move reservation table does not have application detail number: " + mskmDtlNo_151)` |
| 6 | SET | `kkTIdoRsv015Flg = false` |
| 7 | ELSE | `kkTIdoRsv015Flg = true` |

**Block 11.3** — [CALL] Move reservation update (L590)

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `updateIdoRsv(idoRsvNo_151)` |

**Block 11.4** — [IF] Move reservation 015 search flag (L594) `[kkTIdoRsv015Flg=true]` (L594)

> Iterate through all move reservation detail records and process settlement for service cancellation (idoRsvDtlCd == "007").

| # | Type | Code |
|---|------|------|
| 1 | WHILE | `while (idoRsvMap_015 != null)` |
| 2 | EXEC | `updateIdoRsv2(idoRsvMap_015.getString(JBSbatKK_T_IDO_RSV.IDO_RSV_NO))` |
| 3 | SET | `ucwkNo = Rtrim(idoRsvMap_015.getString(JBSbatKK_T_IDO_RSV.SVC_KEI_UCWK_NO))` |
| 4 | SET | `idoRsvDtlCd_015 = Rtrim(idoRsvMap_015.getString(JBSbatKK_T_IDO_RSV.IDO_RSV_DTL_CD))` |

**Block 11.4.1** — [IF] Service cancellation detail code check (L635) `[idoRsvDtlCd_015 == "007"]` `[CD01167_IDO_RSV_DTL_CD_007="007"]`

> Process settlement (cancellation) for sub-accounts when move reservation detail code is "007" (Service Cancellation / サービス解約).

| # | Type | Code |
|---|------|------|
| 1 | SET | `!"".equals(ucwkNo) && JBSbatKKConst.CD01167_IDO_RSV_DTL_CD_007.equals(idoRsvDtlCd_015)` |
| 2 | SET | `svcKeiUcwk_whereParam2 = {ucwkNo}` |
| 3 | EXEC | `executeKK_T_SVC_KEI_UCWK_KK_SELECT_061(svcKeiUcwk_whereParam2)` |
| 4 | SET | `svcKeiUwMap_061 = db_KK_T_SVC_KEI_UCWK_061.selectNext()` |
| 5 | IF | `svcKeiUwMap_061 == null` |
| 6 | EXEC | `super.logPrint.printDebugLog("Service contract details table does not have service contract detail number: " + ucwkNo)` |
| 7 | WHILE | `while (svcKeiUwMap_061 != null)` |
| 8 | SET | `svcKeiUcwkNo = Rtrim(svcKeiUwMap_061.getString(JBSbatKK_T_SVC_KEI_UCWK.SVC_KEI_UCWK_NO))` |
| 9 | SET | `geneAddDtm = Rtrim(svcKeiUwMap_061.getString(JBSbatKK_T_SVC_KEI_UCWK.GENE_ADD_DTM))` |
| 10 | EXEC | `updateSvcKeiUcwk2(svcKeiUcwkNo, geneAddDtm)` |
| 11 | EXEC | `updateSvkeiUwEohTv2(svcKeiUcwkNo, geneAddDtm)` |
| 12 | EXEC | `outMap146 = selectKktkSvcKei146(svcKeiUcwkNo)` |
| 13 | WHILE | `while (outMap146 != null)` |
| 14 | SET | `kktkSvcKeiNo146 = Rtrim(outMap146.getString(JBSbatKK_T_KKTK_SVC_KEI.KKTK_SVC_KEI_NO))` |
| 15 | SET | `geneAddDtm146 = Rtrim(outMap146.getString(JBSbatKK_T_KKTK_SVC_KEI.GENE_ADD_DTM))` |
| 16 | EXEC | `updateKktkSvcKeiDslTv(kktkSvcKeiNo146, geneAddDtm146)` |
| 17 | SET | `outMap146 = db_KK_T_KKTK_SVC_KEI_146.selectNext()` |
| 18 | SET | `svcKeiUwMap_061 = db_KK_T_SVC_KEI_UCWK_061.selectNext()` |
| 19 | SET | `idoRsvMap_015 = db_KK_T_IDO_RSV_015.selectNext()` |

**Block 11.5** — [CALL] Service contract details query (L664) `KK_T_SVC_KEI_UCWK_KK_SELECT_040`

| # | Type | Code |
|---|------|------|
| 1 | SET | `kktkSvcKeiUcwk_whereParam = {svcKeiNo_151, mskmDtlNo_151, opt_date}` |
| 2 | EXEC | `executeKK_T_SVC_KEI_UCWK_KK_SELECT_040(kktkSvcKeiUcwk_whereParam)` |
| 3 | SET | `svcKeiUcwkMap_040 = db_KK_T_SVC_KEI_UCWK.selectNext()` |
| 4 | IF | `svcKeiUcwkMap_040 == null` |
| 5 | EXEC | `super.logPrint.printDebugLog("Service contract details table does not have service contract number: " + svcKeiNo_151)` |

**Block 11.6** — [IF] Service contract details found (L681) `[svcKeiUcwkMap_040 != null]` (L681)

> Update service contract details, EO optical TV, and apparatus-provided service contract.

| # | Type | Code |
|---|------|------|
| 1 | WHILE | `while (svcKeiUcwkMap_040 != null)` |
| 2 | SET | `svcKeiUcwkNoStr = Rtrim(svcKeiUcwkMap_040.getString(JBSbatKK_T_SVC_KEI_UCWK.SVC_KEI_UCWK_NO))` |
| 3 | SET | `geneAddDtmStr = Rtrim(svcKeiUcwkMap_040.getString(JBSbatKK_T_SVC_KEI_UCWK.GENE_ADD_DTM))` |
| 4 | SET | `planStaymd_svcKeiUw = Rtrim(svcKeiUcwkMap_040.getString(JBSbatKK_T_SVC_KEI_UCWK.PLAN_STAYMD))` |
| 5 | SET | `planChrgStaymd_svcKeiUw = Rtrim(svcKeiUcwkMap_040.getString(JBSbatKK_T_SVC_KEI_UCWK.PLAN_CHRG_STAYMD))` |
| 6 | SET | `kktkSvcKei_whereParam = {svcKeiUcwkNoStr, mskmDtlNo_151, opt_date, mskmDtlNo_151, opt_date}` |
| 7 | EXEC | `executeKK_T_KKTK_SVC_KEI_KK_SELECT_038(kktkSvcKei_whereParam)` |
| 8 | SET | `kktkSvcKeiMap_038 = db_KK_T_KKTK_SVC_KEI_038.selectNext()` |
| 9 | IF | `kktkSvcKeiMap_038 == null` |
| 10 | EXEC | `throw new JBSbatBusinessException(EKKB0210CE, ["apparatus-provided service contract", "service contract detail number: " + svcKeiUcwkNoStr])` |
| 11 | WHILE | `while (kktkSvcKeiMap_038 != null)` |
| 12 | EXEC | `updateKktkSvcKei(planStaymd_svcKeiUw, planChrgStaymd_svcKeiUw, kktkSvcKeiMap_038)` |
| 13 | SET | `kktkSvcKeiMap_038 = db_KK_T_KKTK_SVC_KEI_038.selectNext()` |
| 14 | EXEC | `updateSvcKeiUcwk(svcKeiUcwkNoStr, geneAddDtmStr)` |
| 15 | SET | `svkeiUwEohTv_param = {svcKeiUcwkNoStr, geneAddDtmStr}` |
| 16 | EXEC | `svkeiUwEohTv_map = executeKK_T_SVKEIUW_EOH_TV_PKSELECT(svkeiUwEohTv_param)` |
| 17 | IF | `svkeiUwEohTv_map == null` |
| 18 | EXEC | `throw new JBSbatBusinessException(EKKB0210CE, ["service contract details <EO optical TV>", "service contract detail number: " + svcKeiUcwkNoStr])` |
| 19 | EXEC | `updateSvkeiUwEohTv(svcKeiUcwkNoStr, geneAddDtmStr)` |
| 20 | SET | `svcKeiUcwkMap_040 = db_KK_T_SVC_KEI_UCWK.selectNext()` |

**Block 11.7** — [CALL] Register progress schema (L752)

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `insertPrg(mskmDtlNo_151, svcKeiNo_151, idoDiv_151)` |

**Block 12** — [EXEC] End logging (L756)

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `super.logPrint.printDebugLog("execute_END")` |

**Block 13** — [RETURN] Return (L757)

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

## 7. Glossary

| Term | Type | Business Meaning |
|------|------|------------------|
| `svc_kei_no` | Field | Service contract number — unique identifier for a telecom service contract |
| `svc_cd` | Field | Service code — classifies the service type (01 = Internet Service / FTTH, 03 = TV Service) |
| `koji_rslt` | Field | Work result — indicates the work order status (3 = Work Cancelled / 工事取消) |
| `ido_rsv_no` | Field | Move reservation number — internal reservation ID for customer migration records |
| `ido_rsv_no2` | Field | Move reservation number 2 — secondary move reservation (inner contract cancellation) |
| `ido_div` | Field | Move division — classifies the type of move/migration operation |
| `svc_kei_ucwk_no1` | Field | Service contract detail number 1 — internal tracking ID for the primary service contract line item (customer change file intermediate) |
| `svc_kei_ucwk_no2` | Field | Service contract detail number 2 — secondary service contract detail number for cancellation (customer change file intermediate) |
| `gene_add_dtm1` | Field | Generation registration date 1 — timestamp when the service contract detail was generated (customer change file intermediate) |
| `gene_add_dtm2` | Field | Generation registration date 2 — secondary generation registration timestamp (customer change file intermediate) |
| `upd_dtm` | Field | Update timestamp — used for optimistic locking / timestamp validation |
| `upd_dtm1` | Field | Update timestamp 1 — input-side timestamp for move reservation |
| `upd_dtm2` | Field | Update timestamp 2 — secondary input-side timestamp |
| `kojiak_no` | Field | Work case number — internal case reference for work orders |
| `mskm_dtl_no` | Field | Application detail number — detail-level reference for billing/applications |
| `plan_staymd` | Field | Plan start date — the date when the service plan becomes active |
| `plan_chrg_staymd` | Field | Plan charge start date — the date when billing starts |
| `ucwk_flg` | Field | Inner contract flag — indicates whether service contract detail number 1 is present (true = present, false = not present) |
| `kkTIdoRsv014Flg` | Field | Move reservation search flag for SELECT_014 — indicates whether move reservation query returned a result |
| `kkTIdoRsv015Flg` | Field | Move reservation search flag for SELECT_015 — indicates whether move reservation query returned a result |
| SOD | Acronym | Service Order Data — telecom order fulfillment entity |
| FTTH | Business term | Fiber To The Home — fiber-optic internet service (service code "01") |
| EO optical net | Business term | EO光ネット — NTT East's fiber-optic internet brand |
| EO optical TV | Business term | EO光TV — NTT East's television service brand |
| IDO_RSV_DTL_CD_007 | Field | Move reservation detail code "007" — indicates service cancellation (サービス解約) |
| KK_T_IDO_RSV | DB Table | Move reservation table — stores customer migration/reservation records |
| KK_T_SVC_KEI_UCWK | DB Table | Service contract details table — stores service contract line item records |
| KK_T_KKTK_SVC_KEI | DB Table | Apparatus-provided service contract table — stores contracts provided by equipment suppliers |
| KK_T_SVKEIUW_EOH_NET | DB Table | EO optical net service contract details table |
| KK_T_SVKEIUW_EOH_TV | DB Table | EO optical TV service contract details table |
| 進捗スキマ | Japanese term | Progress gap/skima — a progress tracking table entry inserted at the end of batch processing to mark completion status |
| コース変更適用日更新 | Japanese term | Course change application date update — intermediate file update for customer change processing |
| JBSbatKKConst | Class | Constants class for KK batch processing — holds all business constant values (e.g., SVC_CD_IN_SVC, KKIFM151_KOJI_RSLT_3, CD01167_IDO_RSV_DTL_CD_007) |
