# Business Logic - JBSbatKKDelRun.isSingleCheckKKIFM161_INF1() [447 LOC]

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

## 1. Role

### JBSbatKKDelRun.isSingleCheckKKIFM161_INF1()

This method performs **single-item (field-level) validation** on the "Deletion Target Data (After Eligibility Check)" - a dataset of 22 customer fields that have already passed a higher-level eligibility check and are queued for batch deletion. The business purpose is to ensure data integrity before the system proceeds to actually erase customer records. It validates each field against **byte count constraints** (e.g., 0-2 digits for deletion processing type, 0-256 characters for email) and **character attribute constraints** (e.g., date/time format, email format, phone format) using the shared `JBSbatCheckUtil.invoke()` utility. The method acts as the **final gate** in the eligibility-check phase of the deletion workflow: if any field fails validation, a business error is logged and the method returns `false` to halt the deletion pipeline; if all fields pass, it returns `true` so `execute()` can proceed to persistence-level checks and actual deletion execution. The validation pattern is **sequential short-circuit** - errors are returned on the first field that fails, with no aggregation of multiple validation failures in a single call.

## 2. Processing Pattern (Detailed Business Logic)

```mermaid
flowchart TD
    START(["isSingleCheckKKIFM161_INF1(rsMap, itemvalueMap)"])
    START --> CHECK_DEL_TRAN_SBT["Check DEL_TRAN_SBT<br/>Deletion Processing Type"]
    CHECK_DEL_TRAN_SBT --> DEL_TRAN_MAND["DEL_TRAN_SBT == null or empty?"]
    DEL_TRAN_MAND -->|Yes| ERR_DEL_TRAN_SBT_MAND["Log error EKKB0060TE for DEL_TRAN_SBT<br/>Return false"]
    DEL_TRAN_MAND -->|No| DEL_TRAN_LEN["JBSbatCheckUtil.invoke for byte count<br/>(ketasuu2, 0, 1)"]
    DEL_TRAN_LEN -->|Fail| ERR_DEL_TRAN_SBT_LEN["Log error EKKB0070TE for DEL_TRAN_SBT<br/>Return false"]
    DEL_TRAN_LEN -->|Pass| DEL_TRAN_ATTR["JBSbatCheckUtil.invoke for attributes<br/>(hannkakuesuuji1)"]
    DEL_TRAN_ATTR -->|Fail| ERR_DEL_TRAN_SBT_ATTR["Log error EKKB0080TE for DEL_TRAN_SBT<br/>Return false"]
    DEL_TRAN_ATTR -->|Pass| CHECK_DEL_TRGT_SBT["Check DEL_TRGT_SBT<br/>Deletion Target Type"]

    CHECK_DEL_TRGT_SBT --> DEL_TRGT_MAND["DEL_TRGT_SBT == null or empty?"]
    DEL_TRGT_MAND -->|Yes| ERR_DEL_TRGT_SBT_MAND["Log error EKKB0060TE for DEL_TRGT_SBT<br/>Return false"]
    DEL_TRGT_MAND -->|No| DEL_TRGT_LEN["JBSbatCheckUtil.invoke for byte count<br/>(ketasuu2, 0, 2)"]
    DEL_TRGT_LEN -->|Fail| ERR_DEL_TRGT_SBT_LEN["Log error EKKB0070TE for DEL_TRGT_SBT<br/>Return false"]
    DEL_TRGT_LEN -->|Pass| DEL_TRGT_ATTR["JBSbatCheckUtil.invoke for attributes<br/>(hannkakuesuuji1)"]
    DEL_TRGT_ATTR -->|Fail| ERR_DEL_TRGT_SBT_ATTR["Log error EKKB0080TE for DEL_TRGT_SBT<br/>Return false"]
    DEL_TRGT_ATTR -->|Pass| CHECK_SVKEI_NO["Check SVKEI_NO<br/>Service Contract Number"]

    CHECK_SVKEI_NO --> SVKEI_NO_LEN["JBSbatCheckUtil.invoke for byte count<br/>(ketasuu2, 0, 10)"]
    SVKEI_NO_LEN -->|Fail| ERR_SVKEI_NO_LEN["Log error EKKB0070TE for SVKEI_NO<br/>Return false"]
    SVKEI_NO_LEN -->|Pass| SVKEI_NO_ATTR["JBSbatCheckUtil.invoke for attributes<br/>(hannkakuesuuji1)"]
    SVKEI_NO_ATTR -->|Fail| ERR_SVKEI_NO_ATTR["Log error EKKB0080TE for SVKEI_NO<br/>Return false"]
    SVKEI_NO_ATTR -->|Pass| CHECK_SVKEI_GADTM["Check SVKEI_GADTM<br/>Service Contract Generation Registration"]

    CHECK_SVKEI_GADTM --> SVKEI_GADTM_LEN["JBSbatCheckUtil.invoke for byte count<br/>(ketasuu2, 0, 17)"]
    SVKEI_GADTM_LEN -->|Fail| ERR_SVKEI_GADTM_LEN["Log error EKKB0070TE for SVKEI_GADTM<br/>Return false"]
    SVKEI_GADTM_LEN -->|Pass| SVKEI_GADTM_ATTR["JBSbatCheckUtil.invoke for attributes<br/>(day_hour1)"]
    SVKEI_GADTM_ATTR -->|Fail| ERR_SVKEI_GADTM_ATTR["Log error EKKB0080TE for SVKEI_GADTM<br/>Return false"]
    SVKEI_GADTM_ATTR -->|Pass| CHECK_SVKEIUW_NO["Check SVKEIUW_NO<br/>Service Detail Contract Number"]

    CHECK_SVKEIUW_NO --> SVKEIUW_NO_LEN["JBSbatCheckUtil.invoke for byte count<br/>(ketasuu2, 0, 12)"]
    SVKEIUW_NO_LEN -->|Fail| ERR_SVKEIUW_NO_LEN["Log error EKKB0070TE for SVKEIUW_NO<br/>Return false"]
    SVKEIUW_NO_LEN -->|Pass| SVKEIUW_NO_ATTR["JBSbatCheckUtil.invoke for attributes<br/>(hannkakuesuuji1)"]
    SVKEIUW_NO_ATTR -->|Fail| ERR_SVKEIUW_NO_ATTR["Log error EKKB0080TE for SVKEIUW_NO<br/>Return false"]
    SVKEIUW_NO_ATTR -->|Pass| CHECK_SVKEIUW_GADTM["Check SVKEIUW_GADTM<br/>Service Detail Contract Generation Registration"]

    CHECK_SVKEIUW_GADTM --> SVKEIUW_GADTM_LEN["JBSbatCheckUtil.invoke for byte count<br/>(ketasuu2, 0, 17)"]
    SVKEIUW_GADTM_LEN -->|Fail| ERR_SVKEIUW_GADTM_LEN["Log error EKKB0070TE for SVKEIUW_GADTM<br/>Return false"]
    SVKEIUW_GADTM_LEN -->|Pass| SVKEIUW_GADTM_ATTR["JBSbatCheckUtil.invoke for attributes<br/>(day_hour1)"]
    SVKEIUW_GADTM_ATTR -->|Fail| ERR_SVKEIUW_GADTM_ATTR["Log error EKKB0080TE for SVKEIUW_GADTM<br/>Return false"]
    SVKEIUW_GADTM_ATTR -->|Pass| CHECK_OPSVKEI_NO["Check OPSVKEI_NO<br/>Optional Service Contract Number"]

    CHECK_OPSVKEI_NO --> OPSVKEI_NO_LEN["JBSbatCheckUtil.invoke for byte count<br/>(ketasuu2, 0, 12)"]
    OPSVKEI_NO_LEN -->|Fail| ERR_OPSVKEI_NO_LEN["Log error EKKB0070TE for OPSVKEI_NO<br/>Return false"]
    OPSVKEI_NO_LEN -->|Pass| OPSVKEI_NO_ATTR["JBSbatCheckUtil.invoke for attributes<br/>(hannkakuesuuji1)"]
    OPSVKEI_NO_ATTR -->|Fail| ERR_OPSVKEI_NO_ATTR["Log error EKKB0080TE for OPSVKEI_NO<br/>Return false"]
    OPSVKEI_NO_ATTR -->|Pass| CHECK_OPSVKEI_GADTM["Check OPSVKEI_GADTM<br/>Optional Service Contract Generation Registration"]

    CHECK_OPSVKEI_GADTM --> OPSVKEI_GADTM_LEN["JBSbatCheckUtil.invoke for byte count<br/>(ketasuu2, 0, 17)"]
    OPSVKEI_GADTM_LEN -->|Fail| ERR_OPSVKEI_GADTM_LEN["Log error EKKB0070TE for OPSVKEI_GADTM<br/>Return false"]
    OPSVKEI_GADTM_LEN -->|Pass| OPSVKEI_GADTM_ATTR["JBSbatCheckUtil.invoke for attributes<br/>(day_hour1)"]
    OPSVKEI_GADTM_ATTR -->|Fail| ERR_OPSVKEI_GADTM_ATTR["Log error EKKB0080TE for OPSVKEI_GADTM<br/>Return false"]
    OPSVKEI_GADTM_ATTR -->|Pass| CHECK_SYSID["Check SYSID<br/>System ID"]

    CHECK_SYSID --> SYSID_LEN["JBSbatCheckUtil.invoke for byte count<br/>(ketasuu2, 0, 10)"]
    SYSID_LEN -->|Fail| ERR_SYSID_LEN["Log error EKKB0070TE for SYSID<br/>Return false"]
    SYSID_LEN -->|Pass| SYSID_ATTR["JBSbatCheckUtil.invoke for attributes<br/>(hannkakuesuuji1)"]
    SYSID_ATTR -->|Fail| ERR_SYSID_ATTR["Log error EKKB0080TE for SYSID<br/>Return false"]
    SYSID_ATTR -->|Pass| CHECK_ISP_NINSHO_ID["Check ISP_NINSHO_ID<br/>ISP Authentication ID"]

    CHECK_ISP_NINSHO_ID --> ISP_NINSHO_ID_LEN["JBSbatCheckUtil.invoke for byte count<br/>(ketasuu2, 0, 64)"]
    ISP_NINSHO_ID_LEN -->|Fail| ERR_ISP_NINSHO_ID_LEN["Log error EKKB0070TE for ISP_NINSHO_ID<br/>Return false"]
    ISP_NINSHO_ID_LEN -->|Pass| ISP_NINSHO_ID_ATTR["JBSbatCheckUtil.invoke for attributes<br/>(hannkakuesuuji2)"]
    ISP_NINSHO_ID_ATTR -->|Fail| ERR_ISP_NINSHO_ID_ATTR["Log error EKKB0080TE for ISP_NINSHO_ID<br/>Return false"]
    ISP_NINSHO_ID_ATTR -->|Pass| CHECK_MLAD["Check MLAD<br/>Email Address"]

    CHECK_MLAD --> MLAD_LEN["JBSbatCheckUtil.invoke for byte count<br/>(ketasuu2, 0, 256)"]
    MLAD_LEN -->|Fail| ERR_MLAD_LEN["Log error EKKB0070TE for MLAD<br/>Return false"]
    MLAD_LEN -->|Pass| MLAD_ATTR["JBSbatCheckUtil.invoke for attributes<br/>(e-mail4)"]
    MLAD_ATTR -->|Fail| ERR_MLAD_ATTR["Log error EKKB0080TE for MLAD<br/>Return false"]
    MLAD_ATTR -->|Pass| CHECK_MAILALIAS["Check MAILALIAS<br/>Email Alias"]

    CHECK_MAILALIAS --> MAILALIAS_LEN["JBSbatCheckUtil.invoke for byte count<br/>(ketasuu2, 0, 36)"]
    MAILALIAS_LEN -->|Fail| ERR_MAILALIAS_LEN["Log error EKKB0070TE for MAILALIAS<br/>Return false"]
    MAILALIAS_LEN -->|Pass| MAILALIAS_ATTR["JBSbatCheckUtil.invoke for attributes<br/>(mailaccount)"]
    MAILALIAS_ATTR -->|Fail| ERR_MAILALIAS_ATTR["Log error EKKB0080TE for MAILALIAS<br/>Return false"]
    MAILALIAS_ATTR -->|Pass| CHECK_MLLIST_NM["Check MLLIST_NM<br/>Mailing List Name"]

    CHECK_MLLIST_NM --> MLLIST_NM_LEN["JBSbatCheckUtil.invoke for byte count<br/>(ketasuu2, 0, 144)"]
    MLLIST_NM_LEN -->|Fail| ERR_MLLIST_NM_LEN["Log error EKKB0070TE for MLLIST_NM<br/>Return false"]
    MLLIST_NM_LEN -->|Pass| CHECK_PPP_NINSHO_ID["Check PPP_NINSHO_ID<br/>PPP Authentication ID"]

    CHECK_PPP_NINSHO_ID --> PPP_NINSHO_ID_LEN["JBSbatCheckUtil.invoke for byte count<br/>(ketasuu2, 0, 14)"]
    PPP_NINSHO_ID_LEN -->|Fail| ERR_PPP_NINSHO_ID_LEN["Log error EKKB0070TE for PPP_NINSHO_ID<br/>Return false"]
    PPP_NINSHO_ID_LEN -->|Pass| PPP_NINSHO_ID_ATTR["JBSbatCheckUtil.invoke for attributes<br/>(hannkakuesuuji2)"]
    PPP_NINSHO_ID_ATTR -->|Fail| ERR_PPP_NINSHO_ID_ATTR["Log error EKKB0080TE for PPP_NINSHO_ID<br/>Return false"]
    PPP_NINSHO_ID_ATTR -->|Pass| CHECK_URL["Check URL<br/>URL"]

    CHECK_URL --> URL_LEN["JBSbatCheckUtil.invoke for byte count<br/>(ketasuu2, 0, 64)"]
    URL_LEN -->|Fail| ERR_URL_LEN["Log error EKKB0070TE for URL<br/>Return false"]
    URL_LEN -->|Pass| URL_ATTR["JBSbatCheckUtil.invoke for attributes<br/>(hannkakuesuuji2)"]
    URL_ATTR -->|Fail| ERR_URL_ATTR["Log error EKKB0080TE for URL<br/>Return false"]
    URL_ATTR -->|Pass| CHECK_FIXIPAD["Check FIXIPAD<br/>Fixed IP Address"]

    CHECK_FIXIPAD --> FIXIPAD_LEN["JBSbatCheckUtil.invoke for byte count<br/>(ketasuu2, 0, 19)"]
    FIXIPAD_LEN -->|Fail| ERR_FIXIPAD_LEN["Log error EKKB0070TE for FIXIPAD<br/>Return false"]
    FIXIPAD_LEN -->|Pass| FIXIPAD_ATTR["JBSbatCheckUtil.invoke for attributes<br/>(hannkakuesuuji2)"]
    FIXIPAD_ATTR -->|Fail| ERR_FIXIPAD_ATTR["Log error EKKB0080TE for FIXIPAD<br/>Return false"]
    FIXIPAD_ATTR -->|Pass| CHECK_OABJ_TELNO["Check OABJ_TELNO<br/>OABJ Phone Number"]

    CHECK_OABJ_TELNO --> OABJ_TELNO_LEN["JBSbatCheckUtil.invoke for byte count<br/>(ketasuu2, 0, 11)"]
    OABJ_TELNO_LEN -->|Fail| ERR_OABJ_TELNO_LEN["Log error EKKB0070TE for OABJ_TELNO<br/>Return false"]
    OABJ_TELNO_LEN -->|Pass| OABJ_TELNO_ATTR["JBSbatCheckUtil.invoke for attributes<br/>(tel2)"]
    OABJ_TELNO_ATTR -->|Fail| ERR_OABJ_TELNO_ATTR["Log error EKKB0080TE for OABJ_TELNO<br/>Return false"]
    OABJ_TELNO_ATTR -->|Pass| CHECK_TELNO_050["Check TELNO_050<br/>050 Phone Number"]

    CHECK_TELNO_050 --> TELNO_050_LEN["JBSbatCheckUtil.invoke for byte count<br/>(ketasuu2, 0, 11)"]
    TELNO_050_LEN -->|Fail| ERR_TELNO_050_LEN["Log error EKKB0070TE for TELNO_050<br/>Return false"]
    TELNO_050_LEN -->|Pass| TELNO_050_ATTR["JBSbatCheckUtil.invoke for attributes<br/>(tel2)"]
    TELNO_050_ATTR -->|Fail| ERR_TELNO_050_ATTR["Log error EKKB0080TE for TELNO_050<br/>Return false"]
    TELNO_050_ATTR -->|Pass| CHECK_EOID["Check EOID<br/>e.o ID"]

    CHECK_EOID --> EOID_LEN["JBSbatCheckUtil.invoke for byte count<br/>(ketasuu2, 0, 80)"]
    EOID_LEN -->|Fail| ERR_EOID_LEN["Log error EKKB0070TE for EOID<br/>Return false"]
    EOID_LEN -->|Pass| EOID_ATTR["JBSbatCheckUtil.invoke for attributes<br/>(hannkakuesuuji2)"]
    EOID_ATTR -->|Fail| ERR_EOID_ATTR["Log error EKKB0080TE for EOID<br/>Return false"]
    EOID_ATTR -->|Pass| CHECK_NKNAME["Check NKNAME<br/>Nickname"]

    CHECK_NKNAME --> NKNAME_LEN["JBSbatCheckUtil.invoke for byte count<br/>(ketasuu2, 0, 256)"]
    NKNAME_LEN -->|Fail| ERR_NKNAME_LEN["Log error EKKB0070TE for NKNAME<br/>Return false"]
    NKNAME_LEN -->|Pass| NKNAME_ATTR["JBSbatCheckUtil.invoke for attributes<br/>(mix2)"]
    NKNAME_ATTR -->|Fail| ERR_NKNAME_ATTR["Log error EKKB0080TE for NKNAME<br/>Return false"]
    NKNAME_ATTR -->|Pass| CHECK_AGING_NO["Check AGING_NO<br/>Aging Number"]

    CHECK_AGING_NO --> AGING_NO_LEN["JBSbatCheckUtil.invoke for byte count<br/>(ketasuu2, 0, 12)"]
    AGING_NO_LEN -->|Fail| ERR_AGING_NO_LEN["Log error EKKB0070TE for AGING_NO<br/>Return false"]
    AGING_NO_LEN -->|Pass| AGING_NO_ATTR["JBSbatCheckUtil.invoke for attributes<br/>(hannkakuesuuji1)"]
    AGING_NO_ATTR -->|Fail| ERR_AGING_NO_ATTR["Log error EKKB0080TE for AGING_NO<br/>Return false"]
    AGING_NO_ATTR -->|Pass| CHECK_WEB_ID["Check WEB_ID<br/>Web ID"]

    CHECK_WEB_ID --> WEB_ID_LEN["JBSbatCheckUtil.invoke for byte count<br/>(ketasuu2, 0, 10)"]
    WEB_ID_LEN -->|Fail| ERR_WEB_ID_LEN["Log error EKKB0070TE for WEB_ID<br/>Return false"]
    WEB_ID_LEN -->|Pass| WEB_ID_ATTR["JBSbatCheckUtil.invoke for attributes<br/>(hannkakuesuuji1)"]
    WEB_ID_ATTR -->|Fail| ERR_WEB_ID_ATTR["Log error EKKB0080TE for WEB_ID<br/>Return false"]
    WEB_ID_ATTR -->|Pass| CHECK_POP_ID["Check POP_ID<br/>POP ID"]

    CHECK_POP_ID --> POP_ID_LEN["JBSbatCheckUtil.invoke for byte count<br/>(ketasuu2, 0, 64)"]
    POP_ID_LEN -->|Fail| ERR_POP_ID_LEN["Log error EKKB0070TE for POP_ID<br/>Return false"]
    POP_ID_LEN -->|Pass| POP_ID_ATTR["JBSbatCheckUtil.invoke for attributes<br/>(hannkakuesuuji2)"]
    POP_ID_ATTR -->|Fail| ERR_POP_ID_ATTR["Log error EKKB0080TE for POP_ID<br/>Return false"]
    POP_ID_ATTR -->|Pass| CHECK_ADSL_NINSHO_ID["Check ADSL_NINSHO_ID<br/>ADSL Authentication ID"]

    CHECK_ADSL_NINSHO_ID --> ADSL_NINSHO_ID_LEN["JBSbatCheckUtil.invoke for byte count<br/>(ketasuu2, 0, 63)"]
    ADSL_NINSHO_ID_LEN -->|Fail| ERR_ADSL_NINSHO_ID_LEN["Log error EKKB0070TE for ADSL_NINSHO_ID<br/>Return false"]
    ADSL_NINSHO_ID_LEN -->|Pass| ADSL_NINSHO_ID_ATTR["JBSbatCheckUtil.invoke for attributes<br/>(hannkakuesuuji2)"]
    ADSL_NINSHO_ID_ATTR -->|Fail| ERR_ADSL_NINSHO_ID_ATTR["Log error EKKB0080TE for ADSL_NINSHO_ID<br/>Return false"]
    ADSL_NINSHO_ID_ATTR -->|Pass| CHECK_SIP_USER_ID["Check SIP_USER_ID<br/>SIP User ID"]

    CHECK_SIP_USER_ID --> SIP_USER_ID_LEN["JBSbatCheckUtil.invoke for byte count<br/>(ketasuu2, 0, 36)"]
    SIP_USER_ID_LEN -->|Fail| ERR_SIP_USER_ID_LEN["Log error EKKB0070TE for SIP_USER_ID<br/>Return false"]
    SIP_USER_ID_LEN -->|Pass| SIP_USER_ID_ATTR["JBSbatCheckUtil.invoke for attributes<br/>(hannkakuesuuji1)"]
    SIP_USER_ID_ATTR -->|Fail| ERR_SIP_USER_ID_ATTR["Log error EKKB0080TE for SIP_USER_ID<br/>Return false"]
    SIP_USER_ID_ATTR -->|Pass| RETURN_TRUE["Return true<br/>All checks passed"]

    ERR_DEL_TRAN_SBT_MAND --> END(["End"])
    ERR_DEL_TRAN_SBT_LEN --> END
    ERR_DEL_TRAN_SBT_ATTR --> END
    ERR_DEL_TRGT_SBT_MAND --> END
    ERR_DEL_TRGT_SBT_LEN --> END
    ERR_DEL_TRGT_SBT_ATTR --> END
    ERR_SVKEI_NO_LEN --> END
    ERR_SVKEI_NO_ATTR --> END
    ERR_SVKEI_GADTM_LEN --> END
    ERR_SVKEI_GADTM_ATTR --> END
    ERR_SVKEIUW_NO_LEN --> END
    ERR_SVKEIUW_NO_ATTR --> END
    ERR_SVKEIUW_GADTM_LEN --> END
    ERR_SVKEIUW_GADTM_ATTR --> END
    ERR_OPSVKEI_NO_LEN --> END
    ERR_OPSVKEI_NO_ATTR --> END
    ERR_OPSVKEI_GADTM_LEN --> END
    ERR_OPSVKEI_GADTM_ATTR --> END
    ERR_SYSID_LEN --> END
    ERR_SYSID_ATTR --> END
    ERR_ISP_NINSHO_ID_LEN --> END
    ERR_ISP_NINSHO_ID_ATTR --> END
    ERR_MLAD_LEN --> END
    ERR_MLAD_ATTR --> END
    ERR_MAILALIAS_LEN --> END
    ERR_MAILALIAS_ATTR --> END
    ERR_MLLIST_NM_LEN --> END
    ERR_PPP_NINSHO_ID_LEN --> END
    ERR_PPP_NINSHO_ID_ATTR --> END
    ERR_URL_LEN --> END
    ERR_URL_ATTR --> END
    ERR_FIXIPAD_LEN --> END
    ERR_FIXIPAD_ATTR --> END
    ERR_OABJ_TELNO_LEN --> END
    ERR_OABJ_TELNO_ATTR --> END
    ERR_TELNO_050_LEN --> END
    ERR_TELNO_050_ATTR --> END
    ERR_EOID_LEN --> END
    ERR_EOID_ATTR --> END
    ERR_NKNAME_LEN --> END
    ERR_NKNAME_ATTR --> END
    ERR_AGING_NO_LEN --> END
    ERR_AGING_NO_ATTR --> END
    ERR_WEB_ID_LEN --> END
    ERR_WEB_ID_ATTR --> END
    ERR_POP_ID_LEN --> END
    ERR_POP_ID_ATTR --> END
    ERR_ADSL_NINSHO_ID_LEN --> END
    ERR_ADSL_NINSHO_ID_ATTR --> END
    ERR_SIP_USER_ID_LEN --> END
    ERR_SIP_USER_ID_ATTR --> END
    RETURN_TRUE --> END

    style START fill:#e1f5fe
    style END fill:#ffebee
    style RETURN_TRUE fill:#e8f5e9
```

**Control flow summary:** Every field follows the same 3-stage validation pipeline:
1. **Mandatory check** - verifies the field is not null or empty (only `DEL_TRAN_SBT` and `DEL_TRGT_SBT` have this check)
2. **Byte count check** - verifies the field length is within allowed range via `JBSbatCheckUtil.invoke(strValue, new String[]{"ketasuu2", "0", maxBytes})`
3. **Character attribute check** - verifies the content format via `JBSbatCheckUtil.invoke(strValue, new String[]{"attributeName"})`

If any check fails, an error is logged and `false` is returned immediately (short-circuit). Only if all 22 fields pass all their checks does the method return `true`.

## 3. Parameter Analysis

| No | Parameter Name | Type | Business Description |
|----|---------------|------|---------------------|
| 1 | `rsMap` | `HashMap` | Input data map containing deletion target fields (after eligibility check). Keys are field names like `DEL_TRAN_SBT`, `SVKEI_NO`, `MLAD`, etc. Values are String representations of the field data. Contains data from text files or DB, keyed by the TXT-KKIFM161-INF1 naming convention. |
| 2 | `itemvalueMap` | `HashMap<String, String>` | Error message context map containing display labels for validation error messages. Keys follow the pattern `TXT-KKIFM161-INF1.<FIELD_NAME>` (e.g., `TXT-KKIFM161-INF1.DEL_TRAN_SBT`). Values are human-readable labels displayed to the user when validation errors occur. |

**Instance field accessed:**
| Field | Type | Business Description |
|-------|------|---------------------|
| `commonItem` | `JBSbatCommonItem` | Framework common item object providing access to logging (`getLogPrint()` returns a log printer for business error output). Defined in the parent class `JBSbatBusinessService`. |

## 4. CRUD Operations / Called Services

| CRUD | SC / CBS | SC Code | Entity / DB | Operation Description |
|------|----------|---------|-------------|----------------------|
| - | `JKKBatOneTimeLogWriter.printBusinessErrorLog` | - | - | Logs business error messages (EKKB0060TE, EKKB0070TE, EKKB0080TE) to the error log for deletion eligibility check failures |
| - | `JBSbatCheckUtil.invoke` | - | - | Shared field validation utility - validates byte counts and character attributes |

This method performs **no database operations**. It is a pure validation method that reads from the in-memory `rsMap` and writes error logs only. All called services are utility methods (`JBSbatCheckUtil.invoke`) and logging methods (`printBusinessErrorLog`).

## 5. Dependency Trace

| # | Caller (Screen/Batch) | Call Chain (Full Path to this Method) | Terminal (SC / CRUD / Entity) |
|---|----------------------|--------------------------------------|-------------------------------|
| 1 | Batch: `JBSbatKKDelRun.execute()` | `execute()` -> `isSingleCheckKKIFM161_INF1(rsMap, itemvalueMap)` | `printBusinessErrorLog` (logging only, no CRUD) |

The method is called directly from `JBSbatKKDelRun.execute()`, which is the main batch processing entry point for the KKIFM161 deletion job. No external screens or CBS call this method directly - it is internal to the batch deletion flow.

## 6. Per-Branch Detail Blocks

**Block 1** — IF (mandatory check) `DEL_TRAN_SBT == null || empty` (L1466)

> Validates the Deletion Processing Type field is not empty. This is the only field (besides DEL_TRGT_SBT) with a mandatory (null/empty) check.

| # | Type | Code |
|---|------|------|
| 1 | SET | `strValue = (String)rsMap.get("DEL_TRAN_SBT")` // Retrieve deletion processing type |
| 2 | IF | `strValue == null || "".equals(strValue)` [EKKB0060TE - mandatory field error] |
| 3 | EXEC | `commonItem.getLogPrint().printBusinessErrorLog("EKKB0060TE", new String[]{itemvalueMap.get("TXT-KKIFM161-INF1.DEL_TRAN_SBT")})` // Log mandatory field missing |
| 4 | RETURN | `return false` // Field is mandatory and empty |

**Block 2** — IF (byte count check) `DEL_TRAN_SBT` max 1 digit (L1473)

| # | Type | Code |
|---|------|------|
| 1 | IF | `!JBSbatCheckUtil.invoke(strValue, new String[]{"ketasuu2", "0", "1"})` // Max 1 byte |
| 2 | EXEC | `commonItem.getLogPrint().printBusinessErrorLog("EKKB0070TE", ...)` // Log byte count error |
| 3 | RETURN | `return false` |

**Block 3** — IF (attribute check) `DEL_TRAN_SBT` hannkakuesuuji1 (L1481)

| # | Type | Code |
|---|------|------|
| 1 | IF | `!JBSbatCheckUtil.invoke(strValue, new String[]{"hannkakuesuuji1"})` // Attribute validation |
| 2 | EXEC | `commonItem.getLogPrint().printBusinessErrorLog("EKKB0080TE", ...)` // Log attribute error |
| 3 | RETURN | `return false` |

**Block 4** — IF (mandatory check) `DEL_TRGT_SBT` empty (L1490)

> Validates the Deletion Target Type field is not empty.

| # | Type | Code |
|---|------|------|
| 1 | SET | `strValue = (String)rsMap.get("DEL_TRGT_SBT")` // Retrieve deletion target type |
| 2 | IF | `strValue == null || "".equals(strValue)` [EKKB0060TE - mandatory field error] |
| 3 | EXEC | `commonItem.getLogPrint().printBusinessErrorLog("EKKB0060TE", new String[]{itemvalueMap.get("TXT-KKIFM161-INF1.DEL_TRGT_SBT")})` |
| 4 | RETURN | `return false` |

**Block 5** — IF (byte count check) `DEL_TRGT_SBT` max 2 digits (L1497)

| # | Type | Code |
|---|------|------|
| 1 | IF | `!JBSbatCheckUtil.invoke(strValue, new String[]{"ketasuu2", "0", "2"})` // Max 2 bytes |
| 2 | EXEC | `commonItem.getLogPrint().printBusinessErrorLog("EKKB0070TE", ...)` |
| 3 | RETURN | `return false` |

**Block 6** — IF (attribute check) `DEL_TRGT_SBT` hannkakuesuuji1 (L1505)

| # | Type | Code |
|---|------|------|
| 1 | IF | `!JBSbatCheckUtil.invoke(strValue, new String[]{"hannkakuesuuji1"})` |
| 2 | EXEC | `commonItem.getLogPrint().printBusinessErrorLog("EKKB0080TE", ...)` |
| 3 | RETURN | `return false` |

**Block 7** — IF (byte count check) `SVKEI_NO` max 10 digits (L1514)

> Service Contract Number - no mandatory check (optional field).

| # | Type | Code |
|---|------|------|
| 1 | SET | `strValue = (String)rsMap.get("SVKEI_NO")` // Retrieve service contract number |
| 2 | IF | `!JBSbatCheckUtil.invoke(strValue, new String[]{"ketasuu2", "0", "10"})` // Max 10 bytes |
| 3 | EXEC | `commonItem.getLogPrint().printBusinessErrorLog("EKKB0070TE", new String[]{itemvalueMap.get("TXT-KKIFM161-INF1.SVKEI_NO")})` |
| 4 | RETURN | `return false` |
| 5 | IF | `!JBSbatCheckUtil.invoke(strValue, new String[]{"hannkakuesuuji1"})` // Attribute check |
| 6 | EXEC | `commonItem.getLogPrint().printBusinessErrorLog("EKKB0080TE", ...)` |
| 7 | RETURN | `return false` |

**Block 8** — IF (byte count check) `SVKEI_GADTM` max 17 digits (L1529)

> Service Contract Generation Registration - datetime field. No mandatory check.

| # | Type | Code |
|---|------|------|
| 1 | SET | `strValue = (String)rsMap.get("SVKEI_GADTM")` // Retrieve service contract generation registration |
| 2 | IF | `!JBSbatCheckUtil.invoke(strValue, new String[]{"ketasuu2", "0", "17"})` // Max 17 bytes |
| 3 | EXEC | `commonItem.getLogPrint().printBusinessErrorLog("EKKB0070TE", ...)` |
| 4 | RETURN | `return false` |
| 5 | IF | `!JBSbatCheckUtil.invoke(strValue, new String[]{"day_hour1"})` // Date/time attribute validation |
| 6 | EXEC | `commonItem.getLogPrint().printBusinessErrorLog("EKKB0080TE", ...)` |
| 7 | RETURN | `return false` |

**Block 9** — IF (byte count check) `SVKEIUW_NO` max 12 digits (L1544)

> Service Detail Contract Number. No mandatory check.

| # | Type | Code |
|---|------|------|
| 1 | SET | `strValue = (String)rsMap.get("SVKEIUW_NO")` // Retrieve service detail contract number |
| 2 | IF | `!JBSbatCheckUtil.invoke(strValue, new String[]{"ketasuu2", "0", "12"})` // Max 12 bytes |
| 3 | EXEC | `commonItem.getLogPrint().printBusinessErrorLog("EKKB0070TE", ...)` |
| 4 | RETURN | `return false` |
| 5 | IF | `!JBSbatCheckUtil.invoke(strValue, new String[]{"hannkakuesuuji1"})` // Attribute check |
| 6 | EXEC | `commonItem.getLogPrint().printBusinessErrorLog("EKKB0080TE", ...)` |
| 7 | RETURN | `return false` |

**Block 10** — IF (byte count check) `SVKEIUW_GADTM` max 17 digits (L1559)

> Service Detail Contract Generation Registration - datetime field. No mandatory check.

| # | Type | Code |
|---|------|------|
| 1 | SET | `strValue = (String)rsMap.get("SVKEIUW_GADTM")` // Retrieve service detail generation registration |
| 2 | IF | `!JBSbatCheckUtil.invoke(strValue, new String[]{"ketasuu2", "0", "17"})` // Max 17 bytes |
| 3 | EXEC | `commonItem.getLogPrint().printBusinessErrorLog("EKKB0070TE", ...)` |
| 4 | RETURN | `return false` |
| 5 | IF | `!JBSbatCheckUtil.invoke(strValue, new String[]{"day_hour1"})` // Date/time attribute |
| 6 | EXEC | `commonItem.getLogPrint().printBusinessErrorLog("EKKB0080TE", ...)` |
| 7 | RETURN | `return false` |

**Block 11** — IF (byte count check) `OPSVKEI_NO` max 12 digits (L1574)

> Optional Service Contract Number. No mandatory check.

| # | Type | Code |
|---|------|------|
| 1 | SET | `strValue = (String)rsMap.get("OPSVKEI_NO")` // Retrieve optional service contract number |
| 2 | IF | `!JBSbatCheckUtil.invoke(strValue, new String[]{"ketasuu2", "0", "12"})` // Max 12 bytes |
| 3 | EXEC | `commonItem.getLogPrint().printBusinessErrorLog("EKKB0070TE", ...)` |
| 4 | RETURN | `return false` |
| 5 | IF | `!JBSbatCheckUtil.invoke(strValue, new String[]{"hannkakuesuuji1"})` // Attribute check |
| 6 | EXEC | `commonItem.getLogPrint().printBusinessErrorLog("EKKB0080TE", ...)` |
| 7 | RETURN | `return false` |

**Block 12** — IF (byte count check) `OPSVKEI_GADTM` max 17 digits (L1589)

> Optional Service Contract Generation Registration - datetime field. No mandatory check.

| # | Type | Code |
|---|------|------|
| 1 | SET | `strValue = (String)rsMap.get("OPSVKEI_GADTM")` // Retrieve optional service generation registration |
| 2 | IF | `!JBSbatCheckUtil.invoke(strValue, new String[]{"ketasuu2", "0", "17"})` // Max 17 bytes |
| 3 | EXEC | `commonItem.getLogPrint().printBusinessErrorLog("EKKB0070TE", ...)` |
| 4 | RETURN | `return false` |
| 5 | IF | `!JBSbatCheckUtil.invoke(strValue, new String[]{"day_hour1"})` // Date/time attribute |
| 6 | EXEC | `commonItem.getLogPrint().printBusinessErrorLog("EKKB0080TE", ...)` |
| 7 | RETURN | `return false` |

**Block 13** — IF (byte count check) `SYSID` max 10 digits (L1604)

> System ID. No mandatory check.

| # | Type | Code |
|---|------|------|
| 1 | SET | `strValue = (String)rsMap.get("SYSID")` // Retrieve system ID |
| 2 | IF | `!JBSbatCheckUtil.invoke(strValue, new String[]{"ketasuu2", "0", "10"})` // Max 10 bytes |
| 3 | EXEC | `commonItem.getLogPrint().printBusinessErrorLog("EKKB0070TE", ...)` |
| 4 | RETURN | `return false` |
| 5 | IF | `!JBSbatCheckUtil.invoke(strValue, new String[]{"hannkakuesuuji1"})` // Attribute check |
| 6 | EXEC | `commonItem.getLogPrint().printBusinessErrorLog("EKKB0080TE", ...)` |
| 7 | RETURN | `return false` |

**Block 14** — IF (byte count check) `ISP_NINSHO_ID` max 64 digits (L1619)

> ISP Authentication ID. No mandatory check.

| # | Type | Code |
|---|------|------|
| 1 | SET | `strValue = (String)rsMap.get("ISP_NINSHO_ID")` // Retrieve ISP authentication ID |
| 2 | IF | `!JBSbatCheckUtil.invoke(strValue, new String[]{"ketasuu2", "0", "64"})` // Max 64 bytes |
| 3 | EXEC | `commonItem.getLogPrint().printBusinessErrorLog("EKKB0070TE", ...)` |
| 4 | RETURN | `return false` |
| 5 | IF | `!JBSbatCheckUtil.invoke(strValue, new String[]{"hannkakuesuuji2"})` // Attribute check (type 2) |
| 6 | EXEC | `commonItem.getLogPrint().printBusinessErrorLog("EKKB0080TE", ...)` |
| 7 | RETURN | `return false` |

**Block 15** — IF (byte count check) `MLAD` max 256 digits (L1634)

> Email Address. No mandatory check.

| # | Type | Code |
|---|------|------|
| 1 | SET | `strValue = (String)rsMap.get("MLAD")` // Retrieve email address |
| 2 | IF | `!JBSbatCheckUtil.invoke(strValue, new String[]{"ketasuu2", "0", "256"})` // Max 256 bytes |
| 3 | EXEC | `commonItem.getLogPrint().printBusinessErrorLog("EKKB0070TE", ...)` |
| 4 | RETURN | `return false` |
| 5 | IF | `!JBSbatCheckUtil.invoke(strValue, new String[]{"e-mail4"})` // Email format validation |
| 6 | EXEC | `commonItem.getLogPrint().printBusinessErrorLog("EKKB0080TE", ...)` |
| 7 | RETURN | `return false` |

**Block 16** — IF (byte count check) `MAILALIAS` max 36 digits (L1649)

> Email Alias. No mandatory check.

| # | Type | Code |
|---|------|------|
| 1 | SET | `strValue = (String)rsMap.get("MAILALIAS")` // Retrieve email alias |
| 2 | IF | `!JBSbatCheckUtil.invoke(strValue, new String[]{"ketasuu2", "0", "36"})` // Max 36 bytes |
| 3 | EXEC | `commonItem.getLogPrint().printBusinessErrorLog("EKKB0070TE", ...)` |
| 4 | RETURN | `return false` |
| 5 | IF | `!JBSbatCheckUtil.invoke(strValue, new String[]{"mailaccount"})` // Mail account attribute validation |
| 6 | EXEC | `commonItem.getLogPrint().printBusinessErrorLog("EKKB0080TE", ...)` |
| 7 | RETURN | `return false` |

**Block 17** — IF (byte count check) `MLLIST_NM` max 144 digits (L1664)

> Mailing List Name. No mandatory check. No attribute check (only byte count).

| # | Type | Code |
|---|------|------|
| 1 | SET | `strValue = (String)rsMap.get("MLLIST_NM")` // Retrieve mailing list name |
| 2 | IF | `!JBSbatCheckUtil.invoke(strValue, new String[]{"ketasuu2", "0", "144"})` // Max 144 bytes |
| 3 | EXEC | `commonItem.getLogPrint().printBusinessErrorLog("EKKB0070TE", ...)` |
| 4 | RETURN | `return false` |

**Block 18** — IF (byte count check) `PPP_NINSHO_ID` max 14 digits (L1673)

> PPP Authentication ID. No mandatory check.

| # | Type | Code |
|---|------|------|
| 1 | SET | `strValue = (String)rsMap.get("PPP_NINSHO_ID")` // Retrieve PPP authentication ID |
| 2 | IF | `!JBSbatCheckUtil.invoke(strValue, new String[]{"ketasuu2", "0", "14"})` // Max 14 bytes |
| 3 | EXEC | `commonItem.getLogPrint().printBusinessErrorLog("EKKB0070TE", ...)` |
| 4 | RETURN | `return false` |
| 5 | IF | `!JBSbatCheckUtil.invoke(strValue, new String[]{"hannkakuesuuji2"})` // Attribute check (type 2) |
| 6 | EXEC | `commonItem.getLogPrint().printBusinessErrorLog("EKKB0080TE", ...)` |
| 7 | RETURN | `return false` |

**Block 19** — IF (byte count check) `URL` max 64 digits (L1688)

> URL. No mandatory check.

| # | Type | Code |
|---|------|------|
| 1 | SET | `strValue = (String)rsMap.get("URL")` // Retrieve URL |
| 2 | IF | `!JBSbatCheckUtil.invoke(strValue, new String[]{"ketasuu2", "0", "64"})` // Max 64 bytes |
| 3 | EXEC | `commonItem.getLogPrint().printBusinessErrorLog("EKKB0070TE", ...)` |
| 4 | RETURN | `return false` |
| 5 | IF | `!JBSbatCheckUtil.invoke(strValue, new String[]{"hannkakuesuuji2"})` // Attribute check (type 2) |
| 6 | EXEC | `commonItem.getLogPrint().printBusinessErrorLog("EKKB0080TE", ...)` |
| 7 | RETURN | `return false` |

**Block 20** — IF (byte count check) `FIXIPAD` max 19 digits (L1703)

> Fixed IP Address. No mandatory check.

| # | Type | Code |
|---|------|------|
| 1 | SET | `strValue = (String)rsMap.get("FIXIPAD")` // Retrieve fixed IP address |
| 2 | IF | `!JBSbatCheckUtil.invoke(strValue, new String[]{"ketasuu2", "0", "19"})` // Max 19 bytes |
| 3 | EXEC | `commonItem.getLogPrint().printBusinessErrorLog("EKKB0070TE", ...)` |
| 4 | RETURN | `return false` |
| 5 | IF | `!JBSbatCheckUtil.invoke(strValue, new String[]{"hannkakuesuuji2"})` // Attribute check (type 2) |
| 6 | EXEC | `commonItem.getLogPrint().printBusinessErrorLog("EKKB0080TE", ...)` |
| 7 | RETURN | `return false` |

**Block 21** — IF (byte count check) `OABJ_TELNO` max 11 digits (L1718)

> OABJ Phone Number. No mandatory check.

| # | Type | Code |
|---|------|------|
| 1 | SET | `strValue = (String)rsMap.get("OABJ_TELNO")` // Retrieve OABJ phone number |
| 2 | IF | `!JBSbatCheckUtil.invoke(strValue, new String[]{"ketasuu2", "0", "11"})` // Max 11 bytes |
| 3 | EXEC | `commonItem.getLogPrint().printBusinessErrorLog("EKKB0070TE", ...)` |
| 4 | RETURN | `return false` |
| 5 | IF | `!JBSbatCheckUtil.invoke(strValue, new String[]{"tel2"})` // Phone format validation |
| 6 | EXEC | `commonItem.getLogPrint().printBusinessErrorLog("EKKB0080TE", ...)` |
| 7 | RETURN | `return false` |

**Block 22** — IF (byte count check) `TELNO_050` max 11 digits (L1733)

> 050 Phone Number (VoIP). No mandatory check.

| # | Type | Code |
|---|------|------|
| 1 | SET | `strValue = (String)rsMap.get("TELNO_050")` // Retrieve 050 phone number |
| 2 | IF | `!JBSbatCheckUtil.invoke(strValue, new String[]{"ketasuu2", "0", "11"})` // Max 11 bytes |
| 3 | EXEC | `commonItem.getLogPrint().printBusinessErrorLog("EKKB0070TE", ...)` |
| 4 | RETURN | `return false` |
| 5 | IF | `!JBSbatCheckUtil.invoke(strValue, new String[]{"tel2"})` // Phone format validation |
| 6 | EXEC | `commonItem.getLogPrint().printBusinessErrorLog("EKKB0080TE", ...)` |
| 7 | RETURN | `return false` |

**Block 23** — IF (byte count check) `EOID` max 80 digits (L1748)

> e.o ID. No mandatory check.

| # | Type | Code |
|---|------|------|
| 1 | SET | `strValue = (String)rsMap.get("EOID")` // Retrieve e.o ID |
| 2 | IF | `!JBSbatCheckUtil.invoke(strValue, new String[]{"ketasuu2", "0", "80"})` // Max 80 bytes |
| 3 | EXEC | `commonItem.getLogPrint().printBusinessErrorLog("EKKB0070TE", ...)` |
| 4 | RETURN | `return false` |
| 5 | IF | `!JBSbatCheckUtil.invoke(strValue, new String[]{"hannkakuesuuji2"})` // Attribute check (type 2) |
| 6 | EXEC | `commonItem.getLogPrint().printBusinessErrorLog("EKKB0080TE", ...)` |
| 7 | RETURN | `return false` |

**Block 24** — IF (byte count check) `NKNAME` max 256 digits (L1763)

> Nickname. No mandatory check. Attribute check uses `mix2` (changed from `mix` per ANK-1528-00-00 enhancement on 2013/06/07).

| # | Type | Code |
|---|------|------|
| 1 | SET | `strValue = (String)rsMap.get("NKNAME")` // Retrieve nickname |
| 2 | IF | `!JBSbatCheckUtil.invoke(strValue, new String[]{"ketasuu2", "0", "256"})` // Max 256 bytes |
| 3 | EXEC | `commonItem.getLogPrint().printBusinessErrorLog("EKKB0070TE", ...)` |
| 4 | RETURN | `return false` |
| 5 | IF | `!JBSbatCheckUtil.invoke(strValue, new String[]{"mix2"})` // Attribute check (mix2 - changed from mix per ANK-1528) |
| 6 | EXEC | `commonItem.getLogPrint().printBusinessErrorLog("EKKB0080TE", ...)` |
| 7 | RETURN | `return false` |

**Block 25** — IF (byte count check) `AGING_NO` max 12 digits (L1781)

> Aging Number. No mandatory check.

| # | Type | Code |
|---|------|------|
| 1 | SET | `strValue = (String)rsMap.get("AGING_NO")` // Retrieve aging number |
| 2 | IF | `!JBSbatCheckUtil.invoke(strValue, new String[]{"ketasuu2", "0", "12"})` // Max 12 bytes |
| 3 | EXEC | `commonItem.getLogPrint().printBusinessErrorLog("EKKB0070TE", ...)` |
| 4 | RETURN | `return false` |
| 5 | IF | `!JBSbatCheckUtil.invoke(strValue, new String[]{"hannkakuesuuji1"})` // Attribute check |
| 6 | EXEC | `commonItem.getLogPrint().printBusinessErrorLog("EKKB0080TE", ...)` |
| 7 | RETURN | `return false` |

**Block 26** — IF (byte count check) `WEB_ID` max 10 digits (L1796)

> Web ID. Added per IT1-2013-0000285 enhancement. No mandatory check.

| # | Type | Code |
|---|------|------|
| 1 | SET | `strValue = (String)rsMap.get("WEB_ID")` // Retrieve Web ID |
| 2 | IF | `!JBSbatCheckUtil.invoke(strValue, new String[]{"ketasuu2", "0", "10"})` // Max 10 bytes |
| 3 | EXEC | `commonItem.getLogPrint().printBusinessErrorLog("EKKB0070TE", ...)` |
| 4 | RETURN | `return false` |
| 5 | IF | `!JBSbatCheckUtil.invoke(strValue, new String[]{"hannkakuesuuji1"})` // Attribute check |
| 6 | EXEC | `commonItem.getLogPrint().printBusinessErrorLog("EKKB0080TE", ...)` |
| 7 | RETURN | `return false` |

**Block 27** — IF (byte count check) `POP_ID` max 64 digits (L1811)

> POP ID. Added per IT1-2013-0000285. No mandatory check.

| # | Type | Code |
|---|------|------|
| 1 | SET | `strValue = (String)rsMap.get("POP_ID")` // Retrieve POP ID |
| 2 | IF | `!JBSbatCheckUtil.invoke(strValue, new String[]{"ketasuu2", "0", "64"})` // Max 64 bytes |
| 3 | EXEC | `commonItem.getLogPrint().printBusinessErrorLog("EKKB0070TE", ...)` |
| 4 | RETURN | `return false` |
| 5 | IF | `!JBSbatCheckUtil.invoke(strValue, new String[]{"hannkakuesuuji2"})` // Attribute check (type 2) |
| 6 | EXEC | `commonItem.getLogPrint().printBusinessErrorLog("EKKB0080TE", ...)` |
| 7 | RETURN | `return false` |

**Block 28** — IF (byte count check) `ADSL_NINSHO_ID` max 63 digits (L1826)

> ADSL Authentication ID. Added per IT1-2013-0000285. Attribute check uses `hannkakuesuuji2` (changed from `hannkakuesuuji1` per IKK-2013-0000754 on 2013/04/02 to prevent false validation errors during deletion eligibility check).

| # | Type | Code |
|---|------|------|
| 1 | SET | `strValue = (String)rsMap.get("ADSL_NINSHO_ID")` // Retrieve ADSL authentication ID |
| 2 | IF | `!JBSbatCheckUtil.invoke(strValue, new String[]{"ketasuu2", "0", "63"})` // Max 63 bytes |
| 3 | EXEC | `commonItem.getLogPrint().printBusinessErrorLog("EKKB0070TE", ...)` |
| 4 | RETURN | `return false` |
| 5 | IF | `!JBSbatCheckUtil.invoke(strValue, new String[]{"hannkakuesuuji2"})` // Attribute check (changed to hannkakuesuuji2 per IKK-2013-0000754) |
| 6 | EXEC | `commonItem.getLogPrint().printBusinessErrorLog("EKKB0080TE", ...)` |
| 7 | RETURN | `return false` |

**Block 29** — IF (byte count check) `SIP_USER_ID` max 36 digits (L1845)

> SIP User ID. Added per IT1-2013-0000285. No mandatory check.

| # | Type | Code |
|---|------|------|
| 1 | SET | `strValue = (String)rsMap.get("SIP_USER_ID")` // Retrieve SIP user ID |
| 2 | IF | `!JBSbatCheckUtil.invoke(strValue, new String[]{"ketasuu2", "0", "36"})` // Max 36 bytes |
| 3 | EXEC | `commonItem.getLogPrint().printBusinessErrorLog("EKKB0070TE", ...)` |
| 4 | RETURN | `return false` |
| 5 | IF | `!JBSbatCheckUtil.invoke(strValue, new String[]{"hannkakuesuuji1"})` // Attribute check |
| 6 | EXEC | `commonItem.getLogPrint().printBusinessErrorLog("EKKB0080TE", ...)` |
| 7 | RETURN | `return false` |

**Block 30** — RETURN (success) `return true` (L1853)

> All 22 fields passed all validation checks.

| # | Type | Code |
|---|------|------|
| 1 | RETURN | `return true` // All field validations passed - no errors |

## 7. Glossary

| Term | Type | Business Meaning |
|------|------|------------------|
| `DEL_TRAN_SBT` | Field | Deletion Processing Type - classifies the type of deletion operation (e.g., individual deletion, batch deletion). 1-digit numeric field. Mandatory. |
| `DEL_TRGT_SBT` | Field | Deletion Target Type - classifies what category of data is being deleted. 2-digit numeric field. Mandatory. |
| `SVKEI_NO` | Field | Service Contract Number - internal tracking identifier for a customer's service contract. Max 10 digits. |
| `SVKEI_GADTM` | Field | Service Contract Generation Registration - timestamp when a service contract version was registered. 17-character datetime field. |
| `SVKEIUW_NO` | Field | Service Detail Contract Number - identifier for a specific line item within a service contract. Max 12 digits. |
| `SVKEIUW_GADTM` | Field | Service Detail Contract Generation Registration - timestamp when a service contract line item version was registered. 17-character datetime field. |
| `OPSVKEI_NO` | Field | Optional Service Contract Number - identifier for an optional/add-on service contract. Max 12 digits. |
| `OPSVKEI_GADTM` | Field | Optional Service Contract Generation Registration - timestamp when an optional service contract was registered. 17-character datetime field. |
| `SYSID` | Field | System ID - identifier for the system instance processing this record. Max 10 digits. |
| `ISP_NINSHO_ID` | Field | ISP Authentication ID - authentication identifier for Internet Service Provider login. Max 64 bytes. |
| `MLAD` | Field | Email Address - customer's primary email address. Max 256 bytes. Validated against email format (`e-mail4`). |
| `MAILALIAS` | Field | Email Alias - alternate email address for the customer. Max 36 bytes. |
| `MLLIST_NM` | Field | Mailing List Name - name of a mailing list the customer subscribes to. Max 144 bytes. |
| `PPP_NINSHO_ID` | Field | PPP Authentication ID - Point-to-Point Protocol authentication identifier. Max 14 bytes. |
| `URL` | Field | URL - web address associated with the customer record. Max 64 bytes. |
| `FIXIPAD` | Field | Fixed IP Address - static IP address assigned to the customer. Max 19 bytes. |
| `OABJ_TELNO` | Field | OABJ Phone Number - office/business phone number for the customer. Max 11 digits. Validated against phone format (`tel2`). |
| `TELNO_050` | Field | 050 Phone Number - VoIP phone number using the 050 country code prefix. Max 11 digits. |
| `EOID` | Field | e.o ID - the customer's K-Opticom account identifier (e.g., "e012345678..."). Max 80 bytes. |
| `NKNAME` | Field | Nickname - customer's display name or alias. Max 256 bytes. |
| `AGING_NO` | Field | Aging Number - aging/deferred processing tracking identifier. Max 12 digits. |
| `WEB_ID` | Field | Web ID - customer's web portal login identifier. Added per IT1-2013-0000285. Max 10 bytes. |
| `POP_ID` | Field | POP ID - Point of Presence identifier for dial-up/remote access. Added per IT1-2013-0000285. Max 64 bytes. |
| `ADSL_NINSHO_ID` | Field | ADSL Authentication ID - authentication identifier for ADSL broadband connections. Added per IT1-2013-0000285. Max 63 bytes. |
| `SIP_USER_ID` | Field | SIP User ID - Session Initiation Protocol user identifier for VoIP services. Added per IT1-2013-0000285. Max 36 bytes. |
| `JKIFM161_INF1` | Business term | KKIFM161 Input File 1 - the first input file/format for the batch deletion job KKIFM161, handling "Deletion Target Data (After Eligibility Check)". |
| `EKKB0060TE` | Error code | Mandatory field missing error template - logged when a required field is null or empty. |
| `EKKB0070TE` | Error code | Byte count validation error template - logged when a field exceeds the maximum allowed byte length. |
| `EKKB0080TE` | Error code | Character attribute validation error template - logged when a field fails format/attribute checks. |
| `JBSbatCheckUtil.invoke()` | Utility | Shared field validation utility that checks byte counts (parameter `ketasuu2`) and character attributes (parameter names like `hannkakuesuuji1`, `day_hour1`, `e-mail4`, `tel2`, `mailaccount`, `mix2`). |
| `hannkakuesuuji1` | Attribute | Character attribute pattern - full-width/standard alphanumeric check. |
| `hannkakuesuuji2` | Attribute | Character attribute pattern - variant allowing different character set than `hannkakuesuuji1`. |
| `day_hour1` | Attribute | Character attribute pattern - date/time format validation. |
| `e-mail4` | Attribute | Character attribute pattern - email address format validation. |
| `mailaccount` | Attribute | Character attribute pattern - mail account (email alias) format validation. |
| `tel2` | Attribute | Character attribute pattern - phone number format validation. |
| `mix2` | Attribute | Character attribute pattern - mixed character set validation (changed from `mix` per ANK-1528). |
| `ketasuu2` | Parameter | Byte count validation mode - checks if the byte length of the value is between min (0) and max bytes specified. |
| `KKIFM161` | Batch ID | Batch deletion job that processes customer record deletion after eligibility verification. The INF1 suffix indicates the input format for "Deletion Target Data (After Eligibility Check)". |
| `JBSbatKKDelRun` | Class | Batch deletion processing service class. Handles execution of customer data deletion operations. Extends `JBSbatBusinessService`. |
| `K-Opticom` | Business | The telecommunications service provider. "eo" is one of its brand names. |
