# Business Logic - JBSbatKKAdHenkoHoyuDataUpd.execute() [1647 LOC]

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

## 1. Role

### JBSbatKKAdHenkoHoyuDataUpd.execute()

This method is the **main processing entry point for batch-driven address change synchronization** within the NTT K-Opticom customer base system. It reads records from the **Change Target Address Work Table** (`KK_T_CHG_AD_JGRTWK`), validates the address information against the master address table, and distributes the update to all 11 target business tables based on the schema type (`CHG_TG_SCHEMA_ID`) of each work record.

The method handles the following **service types and categories**: (1) Customer (CK0011 - Contractor Address, Designated Delivery Address, Content Address), (2) Customer Individual (CK0021), (3) Delivery (DK0011), (4) Service Contract Details - EO Hikari Phone (KK0191), (5) Service Contract Return Line Details (KK0251), (6) Equipment Provision Service Contract (KK0341), (7) Option Service Contract - TV (KK0381), (8) Billing Contract (KK0491), (9) Work Project / Construction Project (KU0011), (10) Phone Bill Application Content (TU0091). The "Hanko" (Tandem Office Transfer - TU0021) and "Banpo Koji" (Phone Company Work - TU0011) schemas are handled via skeleton branches after being removed in v47.00.00 (ANK-4494-00-00).

The method implements a **routing/dispatch pattern** based on the `CHG_TG_SCHEMA_ID` field. Each schema ID branch independently performs address lookup, validation, dedup checking via tracking lists (`sysIdList`, `svcKeiUcwkNoList`, etc.), and routes to either INSERT (for new/cancelled contract records) or UPDATE (for existing contract records). It maintains a **pending address processing status** (`AD_TOHAIGO_TRN_STAT_CD`) on the work table with codes: 4 (HENKO_ADD_CD_FUKA - Update not possible), 2 (HENKO_ADD_CD_CHU - Processing), 3 (HENKO_ADD_CD_YOU - Notification Required for Emergency SOD), and 9 (HENKO_ADD_CD_ZM - Complete). Each SYSID group is committed after all its records are processed.

## 2. Processing Pattern (Detailed Business Logic)

```mermaid
flowchart TD
    START(["Start: execute"])
    SELECT1["Select by SQL KK_SELECT_001"]
    CHECK_ROW{"Has row?"}
    GET_SYS_DATE["Get system date"]
    INIT_LISTS["Init tracking ArrayLists"]
    SET_FIELDS["Extract: CHG_AD_JGRTWK_NO, SKEMA_ID, ITEM_NAME, AD_CD"]
    AD_MATCH{"AD_CD = NEW_AD_CD?"}
    CACHE_AD{"AD_CD in adBfList?"}
    LOOKUP_AD["Lookup ZM_M_AD master"]
    CACHE_PUT["Cache adBfList.put(adCd, adMap)"]
    AD61_CHECK["ad61MojiChk validation"]
    AD61_VALID{"Valid?"}
    EXEMPT{"EXEMPT from work update?"}
    SET_FUKA["SET STAT_CD = FUKA (4)"]
    SET_FUKA_RSN["SET RSN_CD = ADOVER (01)"]
    SET_ZM["SET STAT_CD = ZM (9)"]
    UPDATE_WK["Update KK_T_CHG_AD_JGRTWK"]
    MAN_FLG{"Manual input flag?"}
    ADDR_DIFF{"Address differs?"}
    SPECIAL{"Special schema?"}
    SET_UNMATCH_RSN["SET RSN_CD = ADUNMATCH (05)"]
    SCHEMA_ROUTES{"Check CHG_TG_SCHEMA_ID"}
    COMMIT["Commit by SYSID"]
    NEXT_ROW{"More rows?"}
    END_RETURN(["Return null"])

    START --> SELECT1 --> CHECK_ROW
    CHECK_ROW -->|yes| GET_SYS_DATE --> INIT_LISTS --> SET_FIELDS
    SET_FIELDS --> AD_MATCH
    AD_MATCH -->|yes| CACHE_AD
    AD_MATCH -->|no| AD61_CHECK
    CACHE_AD -->|yes| AD61_CHECK
    CACHE_AD -->|no| LOOKUP_AD --> CACHE_PUT --> AD61_CHECK
    AD61_CHECK --> AD61_VALID
    AD61_VALID -->|no| EXEMPT
    AD61_VALID -->|yes| MAN_FLG
    EXEMPT -->|yes| SET_FUKA --> SET_FUKA_RSN --> UPDATE_WK --> NEXT_ROW
    EXEMPT -->|no| SET_ZM --> UPDATE_WK --> NEXT_ROW
    MAN_FLG -->|no| ADDR_DIFF
    MAN_FLG -->|yes| SCHEMA_ROUTES
    ADDR_DIFF -->|yes| SPECIAL
    ADDR_DIFF -->|no| SCHEMA_ROUTES
    SPECIAL -->|yes| SET_ZM --> UPDATE_WK --> NEXT_ROW
    SPECIAL -->|no| SET_FUKA --> SET_UNMATCH_RSN --> UPDATE_WK --> NEXT_ROW
    UPDATE_WK --> NEXT_ROW
    NEXT_ROW -->|yes| SET_FIELDS
    NEXT_ROW -->|no| COMMIT --> NEXT_OUTER
    COMMIT --> NEXT_OUTER{"More groups?"}
    NEXT_OUTER -->|yes| SET_FIELDS
    NEXT_OUTER -->|no| END_RETURN
```

### Key Processing Steps

1. **SQL-based row iteration**: Opens cursor `KK_SELECT_001` on `KK_T_CHG_AD_JGRTWK`, iterates row-by-row. Each SYSID group is collected, committed, then each row is processed individually.

2. **Address master lookup**: If `AD_CD = NEW_AD_CD`, looks up `ZM_M_AD` master table using `adBfList` cache.

3. **Address validation**: Calls `JPCAdCommonCheckUtil.ad61MojiChk()` for 61-character address format validation.

4. **Exempt update check**: Exempt combinations: `CK0011`/`CONT_AD_CD`, `DK0011`/`HISOS_AD_CD`, `KU0011`/`TENTAKU_SAKI_AD_CD`, `KU0011`/`KEISHA_AD_CD`, `KU0011`/`TENTAKU_BF_AD_CD`.

5. **Schema-based routing**: 12 schema ID branches, each performing schema-specific address update logic.

6. **Deduplication**: Each branch uses a tracking list. In v19.00.01, dedup expanded to `sysId + adCd + itemName`.

7. **Conditional INSERT vs UPDATE**: For EO Hikari Phone, Equipment Provision, Billing Contract: if reservation apply code is `2` and apply date <= batch date, INSERT; otherwise UPDATE.

8. **SYSID-level commit**: After all rows for a SYSID are processed.

## 3. Parameter Analysis

| No | Parameter Name | Type | Business Description |
|----|---------------|------|---------------------|
| - | (none) | - | Operates on internal state initialized by `initial(JBSbatCommonItem)` and SQL cursor from `KK_T_CHG_AD_JGRTWK` |

### Instance Fields / External State Read

| Field | Type | Business Description |
|-------|------|---------------------|
| `dbAccess` | `JBSbatSQLAccess` | Cursor for reading `KK_T_CHG_AD_JGRTWK` work table |
| `db_CHG_AD_JGRTWK` | `JBSbatSQLAccess` | SQL access for updating `KK_T_CHG_AD_JGRTWK` (status) |
| `db_CK_T_CUST` | `JBSbatSQLAccess` | SQL access for `CK_T_CUST` (Customer master) |
| `db_CK_T_CUST_KOJIN` | `JBSbatSQLAccess` | SQL access for `CK_T_CUST_KOJIN` (Customer Individual) |
| `db_CK_T_CUST_HOJIN` | `JBSbatSQLAccess` | SQL access for `CK_T_CUST_HOJIN` (Customer Corporate) |
| `db_DK_T_HAISO` | `JBSbatSQLAccess` | SQL access for `DK_T_HAISO` (Delivery) |
| `db_KK_T_SVKEIUW_EOH_TEL` | `JBSbatSQLAccess` | SQL access for `KK_T_SVKEIUW_EOH_TEL` (EO Hikari Phone) |
| `db_KK_T_SVC_KEI_UCWK` | `JBSbatSQLAccess` | SQL access for `KK_T_SVC_KEI_UCWK` (Service Contract Details) |
| `db_KK_T_SVKEI_KAISEN_UW` | `JBSbatSQLAccess` | SQL access for `KK_T_SVKEI_KAISEN_UW` (Return Line Details) |
| `db_KK_T_KKTK_SVC_KEI` | `JBSbatSQLAccess` | SQL access for `KK_T_KKTK_SVC_KEI` (Equipment Provision) |
| `db_KK_T_OP_SVC_KEI` | `JBSbatSQLAccess` | SQL access for `KK_T_OP_SVC_KEI` (Option Service Header) |
| `db_KK_T_OPSVKEI_TV` | `JBSbatSQLAccess` | SQL access for `KK_T_OPSVKEI_TV` (Option Service TV) |
| `db_KK_T_SEIKY_KEI` | `JBSbatSQLAccess` | SQL access for `KK_T_SEIKY_KEI` (Billing Contract) |
| `db_KU_T_KOJIAK` | `JBSbatSQLAccess` | SQL access for `KU_T_KOJIAK` (Work Project) |
| `db_TU_T_DNWACHOMSK_NYO` | `JBSbatSQLAccess` | SQL access for `TU_T_DNWACHOMSK_NYO` (Phone Bill Content) |
| `db_KK_T_PRG` | `JBSbatSQLAccess` | SQL access for progress tracking |
| `db_ZM_M_AD` | `JBSbatSQLAccess` | SQL access for address master lookup |
| `db_KK_T_SVKEIUW_EOH_TEL_KK_SELECT_050` | `JBSbatSQLAccess` | EO Hikari Phone record selection |
| `db_KK_T_ODR_SET` | `JBSbatSQLAccess` | Order settings check |
| `db_KK_T_KKTK_SVC_KEI_SEL` | `JBSbatSQLAccess` | Equipment Provision selection |
| `db_CK_T_CUST_SEL` | `JBSbatSQLAccess` | Customer record selection |
| `db_CK_T_CUST_KOJIN_SEL` | `JBSbatSQLAccess` | Customer Individual selection |
| `db_KK_T_SEIKY_KEI_SEL` | `JBSbatSQLAccess` | Billing Contract selection |
| `adBfList` | `HashMap` | Address master cache keyed by address code |
| `opeDate` | `String` | Batch operation date (from superclass) |
| `CUST_SKEMA_ID` | `String` | `"CK0011"` - Customer schema ID |
| `CUST_KOJIN_SKEMA_ID` | `String` | `"CK0021"` - Customer Individual |
| `HAISO_SKEMA_ID` | `String` | `"DK0011"` - Delivery |
| `SVKEIUW_EOH_TEL_SKEMA_ID` | `String` | `"KK0191"` - EO Hikari Phone |
| `SVKEI_KAISEN_UW_SKEMA_ID` | `String` | `"KK0251"` - Return Line Details |
| `KKTK_SVC_KEI_SKEMA_ID` | `String` | `"KK0341"` - Equipment Provision |
| `OPSVKEI_TV_SKEMA_ID` | `String` | `"KK0381"` - Option TV |
| `SEIKY_KEI_SKEMA_ID` | `String` | `"KK0491"` - Billing Contract |
| `KOJIAK_SKEMA_ID` | `String` | `"KU0011"` - Work Project |
| `BMP_KOJI_SKEMA_ID` | `String` | `"TU0011"` - Phone Company Work |
| `DOBANITEN_SKEMA_ID` | `String` | `"TU0021"` - Tandem Transfer |
| `DNWACHOMSK_NYO_SKEMA_ID` | `String` | `"TU0091"` - Phone Bill Content |
| `RSV_APLY_CD_2` | `String` | `"2"` - Reservation Applied code |

## 4. CRUD Operations / Called Services

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

| CRUD | SC / CBS | SC Code | Entity / DB | Operation Description |
|------|----------|---------|-------------|----------------------|
| R | `dbAccess.selectBySqlDefine` | - | `KK_T_CHG_AD_JGRTWK` | Reads work table records via KK_SELECT_001 |
| U | `db_CHG_AD_JGRTWK.executeBySqlDefine` | - | `KK_T_CHG_AD_JGRTWK` | Updates SYSID header via KK_UPDATE_001 |
| U | `db_CHG_AD_JGRTWK.updateByPrimaryKeys` | - | `KK_T_CHG_AD_JGRTWK` | Updates AD_TOHAIGO_TRN_STAT_CD |
| U | `db_CK_T_CUST.executeBySqlDefine` | - | `CK_T_CUST` | Updates customer address (KK_UPDATE_003/004/005) |
| U | `db_CK_T_CUST_HOJIN.executeBySqlDefine` | - | `CK_T_CUST_HOJIN` | Updates customer corporate address |
| U | `db_DK_T_HAISO.executeBySqlDefine` | - | `DK_T_HAISO` | Updates delivery address (KK_UPDATE_002) |
| U | `db_KK_T_SVKEIUW_EOH_TEL.executeBySqlDefine` | - | `KK_T_SVKEIUW_EOH_TEL` | Updates EO Hikari Phone address (KK_INSERT_005, KK_UPDATE_002) |
| U | `db_KK_T_SVC_KEI_UCWK.executeBySqlDefine` | - | `KK_T_SVC_KEI_UCWK` | Updates service contract header (KK_INSERT_006) |
| U | `db_KK_T_SVKEI_KAISEN_UW.executeBySqlDefine` | - | `KK_T_SVKEI_KAISEN_UW` | Updates return line details (KK_INSERT_002, KK_UPDATE_004) |
| U | `db_KK_T_KKTK_SVC_KEI.executeBySqlDefine` | - | `KK_T_KKTK_SVC_KEI` | Updates equipment provision address (KK_UPDATE_007/008) |
| U | `db_KK_T_OP_SVC_KEI.executeBySqlDefine` | - | `KK_T_OP_SVC_KEI` | Updates option service header (KK_INSERT_003) |
| U | `db_KK_T_OPSVKEI_TV.executeBySqlDefine` | - | `KK_T_OPSVKEI_TV` | Updates option service TV address (KK_INSERT_002, KK_UPDATE_002) |
| U | `db_KK_T_SEIKY_KEI.executeBySqlDefine` | - | `KK_T_SEIKY_KEI` | Updates billing contract address (KK_UPDATE_005) |
| U | `db_KU_T_KOJIAK.executeBySqlDefine` | - | `KU_T_KOJIAK` | Updates work project address (KK_UPDATE_001/002/003) |
| U | `db_TU_T_DNWACHOMSK_NYO.executeBySqlDefine` | - | `TU_T_DNWACHOMSK_NYO` | Updates phone bill content (KK_INSERT_001, KK_UPDATE_001/002) |
| R | `db_ZM_M_AD.selectNext` | - | `ZM_M_AD` | Reads address master table |
| R | `db_KK_T_ODR_SET.selectNext` | - | `KK_T_ODR_SET` | Reads order settings for SOD check |
| R | `db_CK_T_CUST_SEL.selectNext` | - | `CK_T_CUST` | Reads customer records |
| C | `executeKK_T_PRG_INSERT` | - | `KK_T_PRG` | Inserts progress tracking record |

### Method-level CRUD Classification

| CRUD | SC / CBS | SC Code | Entity / DB | Operation Description |
|------|----------|---------|-------------|----------------------|
| R | `executeCK_T_CUST_SELECT_KEISHA` | CK_T_CUST_SELECT | `CK_T_CUST` | Reads customer contractor address records |
| R | `executeCK_T_CUST_SELECT_CSSTI` | CK_T_CUST_SELECT | `CK_T_CUST` | Reads customer designated delivery address records |
| R | `executeCK_T_CUST_SELECT_CONT` | CK_T_CUST_SELECT | `CK_T_CUST` | Reads customer content address records |
| R | `executeKK_T_KKTK_SVC_KEI_SELECT_SOHUS` | KKTK_SVC_SELECT | `KK_T_KKTK_SVC_KEI` | Reads equipment provision delivery address records |
| R | `executeKK_T_KKTK_SVC_KEI_SELECT_STC` | KKTK_SVC_SELECT | `KK_T_KKTK_SVC_KEI` | Reads equipment provision installation address records |
| R | `executeKK_T_SEIKY_KEI_SELECT_SOHUS` | SEIKY_KEI_SELECT | `KK_T_SEIKY_KEI` | Reads billing contract delivery address records |
| R | `executeKK_T_ODR_SET_KK_SELECT_023` | ODR_SET_KK_SELECT | `KK_T_ODR_SET` | Reads order settings for emergency SOD check |
| R | `executeZM_M_AD_KK_SELECT_012` | ZM_M_AD_SELECT | `ZM_M_AD` | Reads address master table |
| C | `executeKK_T_PRG_INSERT` | KK_T_PRG_INSERT | `KK_T_PRG` | Inserts progress tracking record |
| C | `insertCustAddresData` | Insert | `CK_T_CUST` | Inserts customer address data (cancelled contracts) |
| C | `insertCustKojinAddresData` | Insert | `CK_T_CUST_KOJIN` | Inserts customer individual address |
| C | `insertCustHojinAddresData` | Insert | `CK_T_CUST_HOJIN` | Inserts customer corporate address |
| C | `insertKktkSvcKeiAddresData` | Insert | `KK_T_KKTK_SVC_KEI` | Inserts equipment provision address |
| C | `insertSeikyKeiAddresData` | Insert | `KK_T_SEIKY_KEI` | Inserts billing contract address |

## 5. Dependency Trace

This method is called by the batch processing framework via dynamic class instantiation. The class extends `JBSbatBusinessService` and is invoked by the batch execution engine. The related class `JBSbatKKAdHenkoHoyuDataUpdOtr` exists as a separate processing variant. No direct Java callers were found - invocation is through the batch framework.

| # | Caller (Screen/Batch) | Call Chain (Full Path to this Method) | Terminal (SC / CRUD / Entity) |
|---|----------------------|--------------------------------------|-------------------------------|
| 1 | Batch Framework | `JBSbatBusinessService.execute()` -> `JBSbatKKAdHenkoHoyuDataUpd.execute()` | `KK_T_CHG_AD_JGRTWK` (R), `CK_T_CUST` (U), `KK_T_SVKEIUW_EOH_TEL` (U), `KK_T_KKTK_SVC_KEI` (U), `KK_T_SEIKY_KEI` (U) |
| 2 | Batch Framework (Otr variant) | `JBSbatKKAdHenkoHoyuDataUpdOtr` -> `JBSbatKKAdHenkoHoyuDataUpd.execute()` | Same as above |

## 6. Per-Branch Detail Blocks

### Block 1 — FOR LOOP `(L274)`

> Outer loop: iterates over SYSID groups from `KK_T_CHG_AD_JGRTWK`. Each group is collected, committed, then rows processed individually.

| # | Type | Code |
|---|------|------|
| 1 | SET | `sysDate = JCCBatCommon.getSysDateTimeStamp()` |
| 2 | SET | `sysIdList = new ArrayList<>()` // Dedup: SYSID |
| 3 | SET | `svcKeiUcwkNoList = new ArrayList<>()` // Dedup: Service contract number |
| 4 | SET | `svcKeiKaisenUcwkNoList = new ArrayList<>()` // Dedup: Service return line |
| 5 | SET | `kktkSvcKeiNoList = new ArrayList<>()` // Dedup: Equipment provision number |
| 6 | SET | `opSvcKeiNoList = new ArrayList<>()` // Dedup: Option service number |
| 7 | SET | `seikyKeiNoList = new ArrayList<>()` // Dedup: Billing contract number |
| 8 | SET | `dnwachoMskmMap = new HashMap<>()` // Dedup: Phone bill content |
| 9 | SET | `commonDBInterfaceList = new ArrayList<>()` // Row collection |
| 10 | IF | `bFlgWK` // First iteration guard [-> Block 1.1] |
| 11 | EXEC | `dbAccess.selectBySqlDefine(...)` [-> KK_SELECT_001] |
| 12 | SET | `strSysId = wkMap.getString(JBSbatKK_T_CHG_AD_JGRTWK.SYSID)` |

#### Block 1.1 — IF `(bFlgWK)` (L292)

> First iteration guard: skips extra selectNext on the first row.

| # | Type | Code |
|---|------|------|
| 1 | IF | `bFlgWK` |
| 2 | EXEC | `wkMap = dbAccess.selectNext()` |
| 3 | IF | `null == wkMap` // End of data |

### Block 2 — FOR LOOP `(L298)`

> Inner loop: collects all rows for current SYSID, then processes each row.

| # | Type | Code |
|---|------|------|
| 1 | SET | `wkList.setValue(strSysId)` |
| 2 | EXEC | `db_CHG_AD_JGRTWK.executeBySqlDefine(wkList, "KK_UPDATE_001")` |
| 3 | EXEC | `super.commit()` // SYSID-level commit |
| 4 | ITER | `Iterator<JBSbatCommonDBInterface> it = commonDBInterfaceList.iterator()` |
| 5 | WHILE | `it.hasNext()` // Process each row |

#### Block 2.1 — WHILE `(L305)`

> Inner processing per row.

| # | Type | Code |
|---|------|------|
| 1 | SET | `inMap = it.next()` |
| 2 | SET | `strChgAdJgrtwkNo = inMap.getString(CHG_AD_JGRTWK_NO)` |
| 3 | SET | `strSkemaId = inMap.getString(CHG_TG_SCHEMA_ID)` |
| 4 | SET | `strItemName = inMap.getString(CHG_TG_KMK_NM_EINM).trim()` |
| 5 | SET | `strSvcKeiUcwkNo`, `strSvcKeiKaisenUcwkNo`, `strKktkSvcKeiNo`, `strOpSvcKeiNo`, `strSeikyKeiNo`, `strDnwachoMskmNo`, `strDnwachoMskmNaiyoNo`, `strAdCd`, `pcd`, `stateNm`, `cityNm`, `oaztsuNm`, `azchoNm`, `oldPcd`, `oldStateNm`, `oldCityNm`, `oldOaztsuNm`, `oldAzchoNm`, `newAdCd` // All address fields extracted |

### Block 3 — IF `(adCd.equals(newAdCd))` (L353) [OM-2019-0001393 ADD]

> If address code unchanged, look up master table for canonical address fields.

| # | Type | Code |
|---|------|------|
| 1 | IF | `adBfList.containsKey(adCd)` // Check cache |
| 2 | SET | `adMap = adBfList.get(adCd)` |
| 3 | ELSE | `executeZM_M_AD_KK_SELECT_012({adCd})` // Query ZM_M_AD |
| 4 | SET | `adMap = db_ZM_M_AD.selectNext()` |
| 5 | EXEC | `adBfList.put(adCd, adMap)` // Cache |
| 6 | IF | `adMap != null` |
| 7 | SET | `pcd`, `stateNm`, `cityNm`, `oaztsuNm`, `azchoNm` // Override with master values |

### Block 4 — ADDRESS VALIDATION (L385)

| # | Type | Code |
|---|------|------|
| 1 | SET | `ad61MojiChkMap = JPCAdCommonCheckUtil.ad61MojiChk(AD_CD, PCD, "0", STATE_NM, CITY_NM, OAZTSU_NM, AZCHO_NM, OLD_BNCHIGO, "", "")` |

### Block 5 — IF `(NOT ad61MojiChk)` (L393)

> Address validation failed: update work table with failure status.

#### Block 5.1 — EXEMPT CHECK (L394)

| # | Type | Code |
|---|------|------|
| 1 | IF | `!CUST_SKEMA_ID.equals(strSkemaId) && "CONT_AD_CD".equals(strItemName)` // Exempt: CK0011 + Content Address |
| 2 | IF | `!HAISO_SKEMA_ID.equals(strSkemaId) && "HISOS_AD_CD".equals(strItemName)` // Exempt: DK0011 + Delivery |
| 3 | IF | `!KOJIAK_SKEMA_ID.equals(strSkemaId) && "TENTAKU_SAKI_AD_CD".equals(strItemName)` // Exempt: KU0011 + Post-move |
| 4 | IF | `!KOJIAK_SKEMA_ID.equals(strSkemaId) && "KEISHA_AD_CD".equals(strItemName)` // Exempt: KU0011 + Contractor |
| 5 | IF | `!KOJIAK_SKEMA_ID.equals(strSkemaId) && "TENTAKU_BF_AD_CD".equals(strItemName)` // Exempt: KU0011 + Pre-move |
| 6 | SET (else branch) | `valueMap.setValue("AD_TOHAIGO_TRN_STAT_CD", HENKO_ADD_CD_FUKA [-> 4])` |
| 7 | SET | `valueMap.setValue("AD_TOHAIGO_UPD_FAIL_RSN_CD", UPD_FAIL_RSN_ADOVER [-> 01])` |
| 8 | EXEC | `db_CHG_AD_JGRTWK.updateByPrimaryKeys(whereMap, valueMap)` |
| 9 | ELSE | `SET AD_TOHAIGO_TRN_STAT_CD = HENKO_ADD_CD_ZM [-> 9]` |
| 10 | EXEC | `continue` // Skip to next row |

### Block 6 — IF `(NOT chkManInputFlg)` (L433) [ANK-3689-00-00 ADD]

> If no manual input needed, check address field mismatches.

| # | Type | Code |
|---|------|------|
| 1 | IF | `!pcd.equals(oldPcd) \|\| !stateNm.equals(oldStateNm) \|\| !cityNm.equals(oldCityNm) \|\| !oaztsuNm.equals(oldOaztsuNm) \|\| !azchoNm.equals(oldAzchoNm)` // Mismatch |
| 2 | IF | `!HAISO_SKEMA_ID.equals(strSkemaId) && "HISOS_AD_CD".equals(strItemName)` // Special delivery |
| 3 | IF | `!KOJIAK_SKEMA_ID.equals(strSkemaId) && "TENTAKU_BF_AD_CD".equals(strItemName)` // Pre-move |
| 4 | IF | `!KOJIAK_SKEMA_ID.equals(strSkemaId) && "TENTAKU_SAKI_AD_CD".equals(strItemName)` // Post-move |
| 5 | SET | `valueMap.setValue("AD_TOHAIGO_TRN_STAT_CD", HENKO_ADD_CD_FUKA [-> 4])` |
| 6 | SET | `valueMap.setValue("AD_TOHAIGO_UPD_FAIL_RSN_CD", UPD_FAIL_RSN_ADUNMATCH [-> 05])` |
| 7 | ELSE | `SET AD_TOHAIGO_TRN_STAT_CD = HENKO_ADD_CD_ZM [-> 9]` |
| 8 | EXEC | `continue` |

### Block 7 — CUST_ROUTE: CK0011 Customer (L474)

> Handles Contractor Address (KEISHA_AD_CD), Designated Delivery Address (CSSTI_SHS_AD_CD), Content Address (CONT_AD_CD).

| # | Type | Code |
|---|------|------|
| 1 | IF | `strSkemaId.equals(CUST_SKEMA_ID)` // CK0011 |
| 2 | IF | `!sysIdList.contains(strSysId)` // Not yet processed |
| 3 | EXEC | `executeKK_T_PRG_INSERT(inMap, PRG_STAT_CUST [-> E010], sysDate)` |
| 4 | IF | `!sysIdList.contains(strSysId + strAdCd + strItemName)` // v19.00.01 dedup |
| 5 | IF | `strItemName.equals("KEISHA_AD_CD")` // Contractor Address |
| 6 | SET | `param1 = {strSysId, adCd}` |
| 7 | EXEC | `executeCK_T_CUST_SELECT_KEISHA(param1)` |
| 8 | WHILE | `null != custMapKeisha` // For each matched record |
| 9 | SET | `dbList` from address fields (old or new AD_CD) + SYSID + GENE_ADD_DTM |
| 10 | SET | `rsvAplyYmd`, `rsvAplyCd` |
| 11 | IF | `!sysIdList.contains(strSysId) && RSV_APLY_CD_2.equals(rsvAplyCd) && apply date check` // Cancel record |
| 12 | EXEC | `insertCustAddresData(dbList, strItemName)` |
| 13 | IF | `!sysIdKojinList.contains(strSysId)` |
| 14 | EXEC | `insertCustKojinAddresData(dbList, strItemName)` |
| 15 | EXEC | `insertCustHojinAddresData(dbList)` |
| 16 | ELSE | `db_CK_T_CUST.executeBySqlDefine(dbList, "KK_UPDATE_003")` |
| 17 | IF | `strItemName.equals("CSSTI_SHS_AD_CD")` // Designated Delivery Address |
| 18 | SET | `param2 = {strSysId, adCd}` |
| 19 | EXEC | `executeCK_T_CUST_SELECT_CSSTI(param2)` |
| 20 | WHILE | `null != custMapCssti` |
| 21 | SET | `dbList` from address fields + SYSID + GENE_ADD_DTM |
| 22 | IF | Cancel record + applied condition |
| 23 | EXEC | `insertCustAddresData(dbList, strItemName)` + insertCustKojinAddresData + insertCustHojinAddresData |
| 24 | ELSE | `db_CK_T_CUST.executeBySqlDefine(dbList, "KK_UPDATE_004")` |
| 25 | IF | `strItemName.equals("CONT_AD_CD")` // Content Address |
| 26 | SET | `param3 = {strSysId, adCd}` |
| 27 | EXEC | `executeCK_T_CUST_SELECT_CONT(param3)` |
| 28 | WHILE | `null != custMapCont` |
| 29 | IF | Cancel record + applied condition |
| 30 | EXEC | `insertCustAddresData(dbList, strItemName)` + insertCustKojinAddresData + insertCustHojinAddresData |
| 31 | ELSE | `db_CK_T_CUST.executeBySqlDefine(dbList, "KK_UPDATE_005")` |
| 32 | EXEC | `sysIdList.add(strSysId + strAdCd + strItemName)` |
| 33 | EXEC | `sysIdList.add(strSysId)` |
| 34 | SET | `valueMap.setValue("AD_TOHAIGO_TRN_STAT_CD", HENKO_ADD_CD_ZM [-> 9])` |
| 35 | EXEC | `db_CHG_AD_JGRTWK.updateByPrimaryKeys(whereMap, valueMap)` |

### Block 8 — CUST_KOJIN_ROUTE: CK0021 Customer Individual (L804)

| # | Type | Code |
|---|------|------|
| 1 | IF | `strSkemaId.equals(CUST_KOJIN_SKEMA_ID)` // CK0021 |
| 2 | IF | `!sysIdKojinList.contains(strSysId)` |
| 3 | SET | `dbList` from address fields + HAISO_NO |
| 4 | EXEC | `db_DK_T_HAISO.executeBySqlDefine(dbList, "KK_UPDATE_002")` |
| 5 | SET | `valueMap.setValue("AD_TOHAIGO_TRN_STAT_CD", HENKO_ADD_CD_ZM [-> 9])` |
| 6 | EXEC | `db_CHG_AD_JGRTWK.updateByPrimaryKeys(whereMap, valueMap)` |

### Block 9 — EOH_TEL_ROUTE: KK0191 EO Hikari Phone (L857)

> Special logic: checks emergency SOD requirement. Sets status 3 (HENKO_ADD_CD_YOU) if SOD needed, 9 (HENKO_ADD_CD_ZM) otherwise.

| # | Type | Code |
|---|------|------|
| 1 | IF | `strSkemaId.equals(SVKEIUW_EOH_TEL_SKEMA_ID)` // KK0191 |
| 2 | SET | `isOrderHakko = false` // Emergency SOD flag |
| 3 | IF | `!svcKeiUcwkNoList.contains(strSvcKeiUcwkNo + strAdCd)` // v15.00.00 dedup |
| 4 | SET | `dbList3 = {SVC_KEI_UCWK_NO, AD_CD, opeDate, opeDate}` |
| 5 | EXEC | `db_KK_T_SVKEIUW_EOH_TEL_KK_SELECT_050.selectBySqlDefine(dbList3, KK_SELECT_050)` |
| 6 | WHILE | `null != mapKK0161` |
| 7 | SET | `geneAddDtmUpdateKey = mapKK0161.getString(GENE_ADD_DTM)` |
| 8 | IF | `0 <= opeDate.compareTo(rsvAplyYmd)` // Apply date check |
| 9 | SET | `selectParam = {SVC_KEI_UCWK_NO}` |
| 10 | EXEC | `executeKK_T_ODR_SET_KK_SELECT_023(selectParam)` |
| 11 | IF | `null != mapKK1041` // Emergency SOD needed |
| 12 | SET | `isOrderHakko = true` |
| 13 | SET | `geneAddDtmUpdateKey = sysDate` |
| 14 | EXEC | `db_KK_T_SVKEIUW_EOH_TEL.executeBySqlDefine(dbList, "KK_INSERT_005")` |
| 15 | EXEC | `db_KK_T_SVC_KEI_UCWK.executeBySqlDefine(dbList2, "KK_INSERT_006")` |
| 16 | EXEC | `executeKK_T_PRG_INSERT(inMap, PRG_STAT_EOH_TEL [-> E040], sysDate)` |
| 17 | IF | `strItemName.equals("EMG_AD_CD")` // Emergency contact address |
| 18 | SET | `dbList` from address fields + SVC_KEI_UCWK_NO + geneAddDtmUpdateKey |
| 19 | EXEC | `db_KK_T_SVKEIUW_EOH_TEL.executeBySqlDefine(dbList, "KK_UPDATE_002")` |
| 20 | SET | `svcKeiUcwkNoList.add(strSvcKeiUcwkNo + strAdCd)` |
| 21 | IF | `isOrderHakko` // Emergency SOD required |
| 22 | SET | `valueMap.setValue("AD_TOHAIGO_TRN_STAT_CD", HENKO_ADD_CD_YOU [-> 3])` |
| 23 | ELSE | `SET AD_TOHAIGO_TRN_STAT_CD = HENKO_ADD_CD_ZM [-> 9]` |
| 24 | EXEC | `db_CHG_AD_JGRTWK.updateByPrimaryKeys(whereMap, valueMap)` |

### Block 10 — KAISEN_ROUTE: KK0251 Service Contract Return Line (L1007)

| # | Type | Code |
|---|------|------|
| 1 | IF | `strSkemaId.equals(SVKEI_KAISEN_UW_SKEMA_ID)` // KK0251 |
| 2 | IF | `!svcKeiKaisenUcwkNoList.contains(strSvcKeiKaisenUcwkNo)` |
| 3 | EXEC | `db_KK_T_SVKEI_KAISEN_UW.executeBySqlDefine(dbList, "KK_INSERT_002")` |
| 4 | EXEC | `executeKK_T_PRG_INSERT(inMap, PRG_STAT_KAISEN [-> E020], sysDate)` |
| 5 | IF | `strItemName.equals("KAISEN_PLACE_AD_CD")` // Return line place address |
| 6 | SET | `dbList` from address fields + SVC_KEI_KAISEN_UCWK_NO + sysDate |
| 7 | EXEC | `db_KK_T_SVKEI_KAISEN_UW.executeBySqlDefine(dbList, "KK_UPDATE_004")` |
| 8 | EXEC | `svcKeiKaisenUcwkNoList.add(strSvcKeiKaisenUcwkNo)` |
| 9 | SET | `valueMap.setValue("AD_TOHAIGO_TRN_STAT_CD", HENKO_ADD_CD_ZM [-> 9])` |
| 10 | EXEC | `db_CHG_AD_JGRTWK.updateByPrimaryKeys(whereMap, valueMap)` |

### Block 11 — KKTK_ROUTE: KK0341 Equipment Provision Service Contract (L1054)

> Complex logic with two sub-addresses: delivery (KIKI_SOHUS_AD_CD) and installation (KIKI_STC_SAKI_AD_CD).

| # | Type | Code |
|---|------|------|
| 1 | IF | `strSkemaId.equals(KKTK_SVC_KEI_SKEMA_ID)` // KK0341 |
| 2 | IF | `!kktkSvcKeiNoList.contains(strKktkSvcKeiNo + strAdCd + strItemName)` // v15.00.02 dedup |
| 3 | IF | `!kktkSvcKeiNoList.contains(strKktkSvcKeiNo)` |
| 4 | EXEC | `executeKK_T_PRG_INSERT(inMap, PRG_STAT_KKTK [-> E030], sysDate)` |
| 5 | IF | `strItemName.equals("KIKI_SOHUS_AD_CD")` // Delivery address |
| 6 | SET | `param1 = {strKktkSvcKeiNo, adCd}` |
| 7 | EXEC | `executeKK_T_KKTK_SVC_KEI_SELECT_SOHUS(param1)` |
| 8 | WHILE | `null != kktkSvKeiMap_Sohus` |
| 9 | SET | `dbList` from address fields + KKTK_SVC_KEI_NO + GENE_ADD_DTM |
| 10 | EXEC | `db_KK_T_KKTK_SVC_KEI.executeBySqlDefine(dbList, "KK_UPDATE_007")` |
| 11 | IF | `strItemName.equals("KIKI_STC_SAKI_AD_CD")` // Installation address |
| 12 | SET | `param2 = {strKktkSvcKeiNo, adCd}` |
| 13 | EXEC | `executeKK_T_KKTK_SVC_KEI_SELECT_STC(param2)` |
| 14 | WHILE | `null != kktkSvKeiMap_Stc` |
| 15 | SET | `dbList` from address fields + KKTK_SVC_KEI_NO + GENE_ADD_DTM |
| 16 | SET | `rsvAplyYmd`, `rsvAplyCd` |
| 17 | IF | `RSV_APLY_CD_2.equals(rsvAplyCd) && apply date check` // Cancel record |
| 18 | EXEC | `insertKktkSvcKeiAddresData(dbList)` |
| 19 | ELSE | `db_KK_T_KKTK_SVC_KEI.executeBySqlDefine(dbList, "KK_UPDATE_008")` |
| 20 | EXEC | `kktkSvcKeiNoList.add(strKktkSvcKeiNo + strAdCd + strItemName)` |
| 21 | EXEC | `kktkSvcKeiNoList.add(strKktkSvcKeiNo)` |
| 22 | SET | `valueMap.setValue("AD_TOHAIGO_TRN_STAT_CD", HENKO_ADD_CD_ZM [-> 9])` |
| 23 | EXEC | `db_CHG_AD_JGRTWK.updateByPrimaryKeys(whereMap, valueMap)` |

### Block 12 — OPSVKEI_ROUTE: KK0381 Option Service Contract TV (L1263)

| # | Type | Code |
|---|------|------|
| 1 | IF | `strSkemaId.equals(OPSVKEI_TV_SKEMA_ID)` // KK0381 |
| 2 | IF | `!opSvcKeiNoList.contains(strOpSvcKeiNo)` |
| 3 | EXEC | `db_KK_T_OPSVKEI_TV.executeBySqlDefine(dbList, "KK_INSERT_002")` |
| 4 | EXEC | `db_KK_T_OP_SVC_KEI.executeBySqlDefine(dbList2, "KK_INSERT_003")` |
| 5 | IF | `strItemName.equals("GUIDEMG_SOHUS_AD_CD")` // Guide delivery address |
| 6 | SET | `dbList` from address fields + OP_SVC_KEI_NO + sysDate |
| 7 | EXEC | `db_KK_T_OPSVKEI_TV.executeBySqlDefine(dbList, "KK_UPDATE_002")` |
| 8 | EXEC | `opSvcKeiNoList.add(strOpSvcKeiNo)` |
| 9 | SET | `valueMap.setValue("AD_TOHAIGO_TRN_STAT_CD", HENKO_ADD_CD_ZM [-> 9])` |
| 10 | EXEC | `db_CHG_AD_JGRTWK.updateByPrimaryKeys(whereMap, valueMap)` |

### Block 13 — SEIKY_ROUTE: KK0491 Billing Contract (L1319)

| # | Type | Code |
|---|------|------|
| 1 | IF | `strSkemaId.equals(SEIKY_KEI_SKEMA_ID)` // KK0491 |
| 2 | IF | `!seikyKeiNoList.contains(strSeikyKeiNo)` |
| 3 | EXEC | `executeKK_T_PRG_INSERT(inMap, PRG_STAT_SEIKY [-> E050], sysDate)` |
| 4 | IF | `!seikyKeiNoList.contains(strSeikyKeiNo + strAdCd + strItemName)` // v19.00.01 dedup |
| 5 | IF | `strItemName.equals("SOHUS_AD_CD")` // Delivery address |
| 6 | SET | `param = {strSeikyKeiNo, adCd}` |
| 7 | EXEC | `executeKK_T_SEIKY_KEI_SELECT_SOHUS(param)` |
| 8 | WHILE | `null != seikykeiMap` |
| 9 | SET | `dbList` from address fields + SEIKY_KEI_NO + GENE_ADD_DTM |
| 10 | SET | `rsvAplyYmd`, `rsvAplyCd` |
| 11 | IF | `RSV_APLY_CD_2.equals(rsvAplyCd) && apply date check` // Cancel record |
| 12 | SET | `dbList.setValue(sysDate)` |
| 13 | EXEC | `insertSeikyKeiAddresData(dbList)` |
| 14 | ELSE | `db_KK_T_SEIKY_KEI.executeBySqlDefine(dbList, "KK_UPDATE_005")` |
| 15 | EXEC | `seikyKeiNoList.add(strSeikyKeiNo + strAdCd + strItemName)` |
| 16 | EXEC | `seikyKeiNoList.add(strSeikyKeiNo)` |
| 17 | SET | `valueMap.setValue("AD_TOHAIGO_TRN_STAT_CD", HENKO_ADD_CD_ZM [-> 9])` |
| 18 | EXEC | `db_CHG_AD_JGRTWK.updateByPrimaryKeys(whereMap, valueMap)` |

### Block 14 — KOJIAK_ROUTE: KU0011 Work Project (L1431)

> Direct UPDATE to `KU_T_KOJIAK` for post-move, contractor, and pre-move addresses.

| # | Type | Code |
|---|------|------|
| 1 | IF | `strSkemaId.equals(KOJIAK_SKEMA_ID)` // KU0011 |
| 2 | SET | `dbList` from address fields + KOJIAK_NO |
| 3 | IF | `strItemName.equals("TENTAKU_SAKI_AD_CD")` // Post-move |
| 4 | EXEC | `db_KU_T_KOJIAK.executeBySqlDefine(dbList, "KK_UPDATE_001")` |
| 5 | IF | `strItemName.equals("KEISHA_AD_CD")` // Contractor |
| 6 | EXEC | `db_KU_T_KOJIAK.executeBySqlDefine(dbList, "KK_UPDATE_002")` |
| 7 | IF | `strItemName.equals("TENTAKU_BF_AD_CD")` // Pre-move |
| 8 | EXEC | `db_KU_T_KOJIAK.executeBySqlDefine(dbList, "KK_UPDATE_003")` |
| 9 | SET | `valueMap.setValue("AD_TOHAIGO_TRN_STAT_CD", HENKO_ADD_CD_ZM [-> 9])` |
| 10 | EXEC | `db_CHG_AD_JGRTWK.updateByPrimaryKeys(whereMap, valueMap)` |

### Block 15 — BMP_ROUTE: TU0011 Phone Company Work (L1475)

> Skeleton branch (removed in v47.00.00 - ANK-4494-00-00). Only status update.

| # | Type | Code |
|---|------|------|
| 1 | IF | `strSkemaId.equals(BMP_KOJI_SKEMA_ID)` // TU0011 |
| 2 | SET | `valueMap.setValue("AD_TOHAIGO_TRN_STAT_CD", HENKO_ADD_CD_ZM [-> 9])` |
| 3 | EXEC | `db_CHG_AD_JGRTWK.updateByPrimaryKeys(whereMap, valueMap)` |

### Block 16 — DOBAN_ROUTE: TU0021 Tandem Office Transfer (L1567)

> Skeleton branch (removed in v47.00.00 - ANK-4494-00-00). Only status update.

| # | Type | Code |
|---|------|------|
| 1 | IF | `strSkemaId.equals(DOBANITEN_SKEMA_ID)` // TU0021 |
| 2 | SET | `valueMap.setValue("AD_TOHAIGO_TRN_STAT_CD", HENKO_ADD_CD_ZM [-> 9])` |
| 3 | EXEC | `db_CHG_AD_JGRTWK.updateByPrimaryKeys(whereMap, valueMap)` |

### Block 17 — DNWACHO_ROUTE: TU0091 Phone Bill Application Content (L1623)

| # | Type | Code |
|---|------|------|
| 1 | IF | `strSkemaId.equals(DNWACHOMSK_NYO_SKEMA_ID)` // TU0091 |
| 2 | IF | `!strDnwachoMskmNaiyoNo.equals(dnwachoMskmMap.get(strDnwachoMskmNo))` // Changed |
| 3 | SET | `dbList = {sysDate, DNWACHO_MSKM_NO, DNWACHO_MSKM_NAIYO_NO}` |
| 4 | EXEC | `db_TU_T_DNWACHOMSK_NYO.executeBySqlDefine(dbList, "KK_INSERT_001")` |
| 5 | SET | `dbList` from address fields + DNWACHO_MSKM_NO + DNWACHO_MSKM_NAIYO_NO |
| 6 | IF | `strItemName.equals("KEISAI_AD_CD")` // Publication address |
| 7 | EXEC | `db_TU_T_DNWACHOMSK_NYO.executeBySqlDefine(dbList, "KK_UPDATE_001")` |
| 8 | IF | `strItemName.equals("SETPLACE_AD_CD")` // Installation address |
| 9 | EXEC | `db_TU_T_DNWACHOMSK_NYO.executeBySqlDefine(dbList, "KK_UPDATE_002")` |
| 10 | EXEC | `dnwachoMskmMap.put(strDnwachoMskmNo, strDnwachoMskmNaiyoNo)` |
| 11 | SET | `valueMap.setValue("AD_TOHAIGO_TRN_STAT_CD", HENKO_ADD_CD_ZM [-> 9])` |
| 12 | EXEC | `db_CHG_AD_JGRTWK.updateByPrimaryKeys(whereMap, valueMap)` |

### Block 18 — FINAL COMMIT (L1688)

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `super.commit()` |

### Block 19 — RETURN (L1693)

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

## 7. Glossary

### Field Names (Japanese -> English)

| Term | Type | Business Meaning |
|------|------|------------------|
| `CHG_AD_JGRTWK_NO` | Field | Change Target Address Work Number — unique work record key |
| `CHG_TG_SCHEMA_ID` | Field | Change Target Schema ID — identifies target business table |
| `CHG_TG_KMK_NM_EINM` | Field | Change Target Item Name — specific address field being updated |
| `AD_CD` | Field | Address Code (住所コード) — 61-character Japanese postal address |
| `NEW_AD_CD` | Field | New Address Code — updated address code |
| `PCD` | Field | Postal Code (郵便番号) |
| `STATE_NM` | Field | Prefecture Name (都道府県名) |
| `CITY_NM` | Field | City Name (市区町村名) |
| `OAZTSU_NM` | Field | District Name (大字通名) |
| `AZCHO_NM` | Field | Zone Name (字丁目名) |
| `SVC_KEI_UCWK_NO` | Field | Service Contract Details Number (サービス細目未処理作業番号) |
| `SVC_KEI_KAISEN_UCWK_NO` | Field | Service Contract Return Line Number (サービス細目回線番号) |
| `KKTK_SVC_KEI_NO` | Field | Equipment Provision Service Number (機器提供サービス番号) |
| `OP_SVC_KEI_NO` | Field | Option Service Contract Number (オプションサービス契約番号) |
| `SEIKY_KEI_NO` | Field | Billing Contract Number (請求細目番号) |
| `KOJIAK_NO` | Field | Work Project Number (工事案外番号) |
| `DNWACHO_MSKM_NO` | Field | Phone Directory Application Number (電話帳募集番号) |
| `DNWACHO_MSKM_NAIYO_NO` | Field | Phone Directory Content Number (電話帳内容番号) |
| `HAISO_NO` | Field | Delivery Number (配送番号) |
| `GENE_ADD_DTM` | Field | Generation Addition Date-Time (生成追加日時) |
| `RSV_APLY_YMD` | Field | Reservation Application Date (予約適用年月日) |
| `RSV_APLY_CD` | Field | Reservation Application Code (予約適用コード) — "1"=In Progress, "2"=Applied, "3"=Cancelled |
| `AD_TOHAIGO_TRN_STAT_CD` | Field | Address Pending Processing Transaction Status Code |
| `AD_TOHAIGO_UPD_FAIL_RSN_CD` | Field | Address Pending Update Failure Reason Code |
| `KEISHA_AD_CD` | Field | Contractor Address Code (契約者住所コード) |
| `CSSTI_SHS_AD_CD` | Field | Designated Delivery Address Code (指定先住所コード) |
| `CONT_AD_CD` | Field | Content Address Code (コンテンツ住所コード) |
| `HISOS_AD_CD` | Field | Delivery Address Code (配送住所コード) |
| `TENTAKU_SAKI_AD_CD` | Field | Post-Move Address Code (引越先住所コード) |
| `TENTAKU_BF_AD_CD` | Field | Pre-Move Address Code (引越前住所コード) |
| `EMG_AD_CD` | Field | Emergency Contact Address Code (緊急連絡住所コード) |
| `KAISEN_PLACE_AD_CD` | Field | Return Line Place Address Code (回線場所住所コード) |
| `KIKI_SOHUS_AD_CD` | Field | Equipment Delivery Address Code (機器送付先住所コード) |
| `KIKI_STC_SAKI_AD_CD` | Field | Equipment Installation Address Code (機器設置先住所コード) |
| `GUIDEMG_SOHUS_AD_CD` | Field | Guide Manual Delivery Address Code (説明書送付先住所コード) |
| `SOHUS_AD_CD` | Field | Delivery Address Code (送付先住所コード) |
| `KEISAI_AD_CD` | Field | Publication Address Code (掲載住所コード) |
| `SETPLACE_AD_CD` | Field | Installation Place Address Code (設置場所住所コード) |

### Schema IDs

| Term | Value | Business Meaning |
|------|-------|------------------|
| `CK0011` | Schema ID | Customer (NTT Contractor) table |
| `CK0021` | Schema ID | Customer Individual table |
| `DK0011` | Schema ID | Delivery table |
| `KK0191` | Schema ID | Service Contract Details - EO Hikari Phone |
| `KK0251` | Schema ID | Service Contract Return Line Details |
| `KK0341` | Schema ID | Equipment Provision Service Contract |
| `KK0381` | Schema ID | Option Service Contract (TV) |
| `KK0491` | Schema ID | Billing Contract |
| `KU0011` | Schema ID | Work Project / Construction Project |
| `TU0011` | Schema ID | Phone Company Work (removed in v47.00.00) |
| `TU0021` | Schema ID | Tandem Office Transfer (removed in v47.00.00) |
| `TU0091` | Schema ID | Phone Bill Application Content |

### Processing Status Codes (HENKO_ADD_CD_*)

| Term | Value | Business Meaning |
|------|-------|------------------|
| `HENKO_ADD_CD_MI` | "0" | Not yet processed |
| `HENKO_ADD_CD_CHU` | "2" | Processing in progress |
| `HENKO_ADD_CD_YOU` | "3" | Notification required (Emergency SOD) |
| `HENKO_ADD_CD_FUKA` | "4" | Update not possible (failed) |
| `HENKO_ADD_CD_ZM` | "9" | Processing complete |

### Failure Reason Codes (UPD_FAIL_RSN_*)

| Term | Value | Business Meaning |
|------|-------|------------------|
| `UPD_FAIL_RSN_ADOVER` | "01" | Address overwrite failure |
| `UPD_FAIL_RSN_PCDUN` | "02" | Postal code mismatch |
| `UPD_FAIL_RSN_MANINPFLG` | "03" | Manual input flag error |
| `UPD_FAIL_RSN_DOUBANITENFLG` | "04" | Tandem office transfer flag error |
| `UPD_FAIL_RSN_ADUNMATCH` | "05" | Address mismatch |

### Program Status Codes (PRG_STAT_*)

| Term | Value | Business Meaning |
|------|-------|------------------|
| `PRG_STAT_CUST` | "E010" | Customer processing |
| `PRG_STAT_KAISEN` | "E020" | Service contract return line processing |
| `PRG_STAT_KKTK` | "E030" | Equipment provision service processing |
| `PRG_STAT_EOH_TEL` | "E040" | EO Hikari Phone service processing |
| `PRG_STAT_SEIKY` | "E050" | Billing contract processing |

### Table Names

| Term | Table | Business Meaning |
|------|-------|------------------|
| `KK_T_CHG_AD_JGRTWK` | Change Target Address Work Table | Intermediate work table for address changes |
| `CK_T_CUST` | Customer (Contractor) master table |
| `CK_T_CUST_KOJIN` | Customer Individual master table |
| `CK_T_CUST_HOJIN` | Customer Corporate (Hojin) master table |
| `DK_T_HAISO` | Delivery master table |
| `KK_T_SVKEIUW_EOH_TEL` | EO Hikari Phone Service Contract Details table |
| `KK_T_SVC_KEI_UCWK` | Service Contract Details table |
| `KK_T_SVKEI_KAISEN_UW` | Service Contract Return Line Details table |
| `KK_T_KKTK_SVC_KEI` | Equipment Provision Service Contract table |
| `KK_T_OP_SVC_KEI` | Option Service Contract Header table |
| `KK_T_OPSVKEI_TV` | Option Service Contract (TV) table |
| `KK_T_SEIKY_KEI` | Billing Contract table |
| `KK_T_PRG` | Program progress tracking table |
| `ZM_M_AD` | Address Master table |
| `KK_T_ODR_SET` | Order Settings table |
| `KU_T_KOJIAK` | Work Project (Construction Project) table |
| `TU_T_DNWACHOMSK_NYO` | Phone Bill Application Content table |

### Acronyms and Business Terms

| Term | Type | Business Meaning |
|------|------|------------------|
| SOD | Acronym | Service Order Data — order data for emergency notifications and service provisioning |
| EO | Business term | Hikari EO — NTT K-Opticom fiber-optic internet service brand |
| HENKO | Japanese | 変更 (Henko) — Change |
| TOHAIGO | Japanese | 追加工 (Tohaigo) — Additional work / pending work |
| SVC_KEI | Abbreviation | サービス細目 (Service Detail) — service line item |
| UCWK | Abbreviation | 未処理作業 (Unprocessed Work) |
| KAISEN | Japanese | 回線 (Kaisen) — Line (telecom line) |
| KKTK | Abbreviation | K-Opticom Toolkit (機機通信) |
| OPSVKEI | Abbreviation | オプションサービス (Option Service) |
| SEIKY_KEI | Abbreviation | 請求細目 (Billing Detail) |
| KOJIAK | Japanese | 工事案外 (Koji Gai) — Construction Project |
| DOBANITEN | Japanese | 同番移転 (Doban Iten) — Tandem Office Transfer |
| DNWACHOMSK | Abbreviation | 電話帳募集 (Phone Directory Application) |
| ad61MojiChk | Method | 61-character address validation utility |
| CHG_TG | Abbreviation | 変更対象 (Change Target) |
| KMK_NM_EINM | Abbreviation | 変更対象項目名 (Change Target Item Name) |
| KEISHA | Japanese | 契約者 (Keishasha) — Contractor |
| TENTAKU | Japanese | 引取 (Hikituki) — Pickup/Delivery destination |
| SOHUS | Abbreviation | 送付先 (Soohusaki) — Delivery Destination |
| STC | Abbreviation | 設置 (Setchi) — Installation |
| RSV | Abbreviation | 予約 (Yoyaku) — Reservation |
| APLY | Abbreviation | 適用 (Tekiyou) — Application |
| GUIDEMG | Abbreviation | 説明書 (Setsumeisho) — Guide Manual |
| EMG | Abbreviation | Emergency (緊急) |
| KK_SELECT_050 | SQL Key | KK_SELECT_050 — EO Hikari Phone record selection SQL |
| KK_SELECT_023 | SQL Key | KK_SELECT_023 — Order settings check SQL |
| KK_SELECT_012 | SQL Key | KK_SELECT_012 — Address master lookup SQL |
| KK_SELECT_216 | SQL Key | KK_SELECT_216 — Equipment Provision selection SQL |
| KK_SELECT_217 | SQL Key | KK_SELECT_217 — Equipment Provision selection SQL |
| KK_UPDATE_001 | SQL Key | KK_UPDATE_001 — SYSID header update SQL |
| KK_UPDATE_003 | SQL Key | KK_UPDATE_003 — Customer contractor address update SQL |
| KK_UPDATE_004 | SQL Key | KK_UPDATE_004 — Customer designated delivery address update SQL |
| KK_UPDATE_005 | SQL Key | KK_UPDATE_005 — Customer content address / Billing contract update SQL |
| KK_INSERT_005 | SQL Key | KK_INSERT_005 — EO Hikari Phone insert SQL |
| KK_INSERT_006 | SQL Key | KK_INSERT_006 — Service contract details insert SQL |
| KK_SELECT_001 | SQL Key | KK_SELECT_001 — Work table read SQL |
