# Business Logic — KKW02501SFLogic.setSbopsvckeiList() [81 LOC]

| Field | Value |
|-------|-------|
| Fully Qualified Name | `eo.web.webview.KKW02501SF.KKW02501SFLogic` |
| Layer | Service Logic (web view logic layer) |
| Module | `KKW02501SF` (Package: `eo.web.webview.KKW02501SF`) |

## 1. Role

### KKW02501SFLogic.setSbopsvckeiList()

This method constructs a sub-option service contract list (`SBOP_SVC_KEI_INFO`) that prepares updated sub-option service records for transmission to an update service component. It is an internal helper (private method) within the E-Mail Information Update screen logic (`KKW02501SF`), called by `setChgesrv()` during the change-service preparation phase.

The method operates as a **change-tracking mapper**: it reads per-service-type change flags from the request DataBean (E-Mail Alias change, Mail Box capacity change, Virus Check change), and for each type that has been modified (i.e., its flag is not `"0"`), it creates a new DataBean entry in a sub-option contract array and maps the relevant input values (service contract number, generation timestamp, sub-option service code, and update timestamp) to that entry.

The method uses a **dispatch-by-flag** design pattern — it does not branch on business type; instead it independently checks three independent boolean-like change flags and may add up to three separate sub-option service entries (one per service type) to the same array. This enables partial updates where only the modified services are sent downstream.

Its role in the larger system is a **pre-mapping transformer**: it runs before the actual update service call, assembling a clean list of sub-option service contract records that the caller's update SC will persist. It handles all three sub-option service types supported by the E-Mail Information Update screen: E-Mail Alias changes (`D01`), Mail Box capacity changes (`D02`), and Virus Check changes (`D03`).

If the sub-option contract list already contains an existing entry (re-display after a validation error, for example), the method clears the array first so that the list is rebuilt from the current screen state — ensuring the latest user input is reflected rather than stale pre-modified data.

## 2. Processing Pattern (Detailed Business Logic)

```mermaid
flowchart TD
    START(["setSbopsvckeiList begins"])
    START --> INIT["Extract paramBean 0 and SBOP_SVC_KEI_INFO array"]
    INIT --> GET_SUBBEAN["subbean = arraybean.getDataBean 0"]
    GET_SUBBEAN --> COND_SUBBEAN{subbean != null}
    COND_SUBBEAN -- true --> CLEAR_ARRAY["arraybean.clearArray"]
    COND_SUBBEAN -- false --> READ_FLAGS["Read change flags and alias"]
    CLEAR_ARRAY --> READ_FLAGS
    READ_FLAGS --> READ_ALIAS_CHG["alias_chg_flg = get ALIAS_CHG_FLG"]
    READ_ALIAS_CHG --> READ_MLAD_CHG["mlad_chg_flg = get MLAD_CHG_FLG"]
    READ_MLAD_CHG --> READ_CHGBF_ALIAS["chgbfAlias = get ALIAS"]
    READ_CHGBF_ALIAS --> COND_ALIAS{Alias change condition}
    COND_ALIAS -- true --> ADD_SUBBEAN_ALIAS["subbean = arraybean.addDataBean"]
    COND_ALIAS -- false --> READ_CAPA_CHG
    ADD_SUBBEAN_ALIAS --> SET_ALIAS_NO["Set SBOP_SVC_KEI_NO_03 from SBOP_SVC_KEI_NO_D01"]
    SET_ALIAS_NO --> SET_ALIAS_GENE["Set GENE_ADD_DTM_03 from KK0401_GENE_ADD_DTM_D01"]
    SET_ALIAS_GENE --> SET_ALIAS_CD["Set SBOP_SVC_CD_03 to D01"]
    SET_ALIAS_CD --> SET_ALIAS_UPD["Set UPD_DTM_03 from UPD_DTM_BF_D01"]
    SET_ALIAS_UPD --> READ_CAPA_CHG
    READ_CAPA_CHG --> COND_CAPA{capa_chg_flg != 0}
    COND_CAPA -- true --> ADD_SUBBEAN_CAPA["subbean = arraybean.addDataBean"]
    COND_CAPA -- false --> READ_VIRUS_CHG
    ADD_SUBBEAN_CAPA --> SET_CAPA_NO["Set SBOP_SVC_KEI_NO_03 from SBOP_SVC_KEI_NO_D02"]
    SET_CAPA_NO --> SET_CAPA_GENE["Set GENE_ADD_DTM_03 from KK0401_GENE_ADD_DTM_D02"]
    SET_CAPA_GENE --> SET_CAPA_CD["Set SBOP_SVC_CD_03 to D02"]
    SET_CAPA_CD --> SET_CAPA_UPD["Set UPD_DTM_03 from UPD_DTM_BF_D02"]
    SET_CAPA_UPD --> READ_VIRUS_CHG
    READ_VIRUS_CHG --> COND_VIRUS{virus_chk_chg_flg != 0}
    COND_VIRUS -- true --> ADD_SUBBEAN_VIRUS["subbean = arraybean.addDataBean"]
    COND_VIRUS -- false --> END_METHOD
    ADD_SUBBEAN_VIRUS --> SET_VIRUS_NO["Set SBOP_SVC_KEI_NO_03 from SBOP_SVC_KEI_NO_D03"]
    SET_VIRUS_NO --> SET_VIRUS_GENE["Set GENE_ADD_DTM_03 from KK0401_GENE_ADD_DTM_D03"]
    SET_VIRUS_GENE --> SET_VIRUS_CD["Set SBOP_SVC_CD_03 to D03"]
    SET_VIRUS_CD --> SET_VIRUS_UPD["Set UPD_DTM_03 from UPD_DTM_BF_D03"]
    SET_VIRUS_UPD --> END_METHOD
    END_METHOD(["Method completes"])
```

**Processing flow description:**

1. **Initialization phase**: Extract the first DataBean from `paramBean` and retrieve the sub-option service contract list array (`SBOP_SVC_KEI_INFO`) from it. Then attempt to get the first element (`getDataBean(0)`).

2. **Array refresh**: If an existing entry is present (`subbean != null`), the entire array is cleared (`clearArray`). This ensures the list is rebuilt from scratch with the latest screen values, preventing stale data from persisting across re-displays after validation errors.

3. **Change flag reading**: Read three change indicators from the DataBean:
   - `ALIAS_CHG_FLG` — E-Mail Alias change flag
   - `MLAD_CHG_FLG` — E-Mail Address change flag (added for IT1-2013-0001584)
   - `ALIAS` — the previous E-Mail Alias value (added for IT1-2013-0001584)

4. **Branch 1 — E-Mail Alias change**: Adds a sub-option service entry if either the alias change flag is not `"0"` (meaning some alias change occurred), OR if the previous alias was non-empty AND the E-Mail address change flag equals `"1"` (meaning a new E-Mail address was registered alongside the alias). This dual condition handles both pure alias changes and the case where a new E-Mail address was registered (which implicitly requires a corresponding alias contract update).

5. **Branch 2 — Mail Box capacity change**: Adds a sub-option service entry if the capacity change flag (`CAPA_CHG_FLG`) is not `"0"`. This independently tracks Mail Box capacity modifications.

6. **Branch 3 — Virus Check change**: Adds a sub-option service entry if the virus check change flag (`VIRUS_CHK_CHG_FLG`) is not `"0"`. This independently tracks Virus Check enable/disable modifications.

Each branch maps four fields onto the newly added DataBean: the sub-option service contract number (from screen-specific input fields), the generation timestamp, the sub-option service code (constant per branch), and the pre-update timestamp.

## 3. Parameter Analysis

| No | Parameter Name | Type | Business Description |
|----|---------------|------|---------------------|
| 1 | `paramBean` | `X31SDataBeanAccess[]` | Array of DataBean access objects carrying the E-Mail Information Update screen's input data. The first element (`paramBean[0]`) is the main form bean containing change flags (`ALIAS_CHG_FLG`, `MLAD_CHG_FLG`, `CAPA_CHG_FLG`, `VIRUS_CHK_CHG_FLG`), pre-change values (`ALIAS`, `SBOP_SVC_KEI_NO_D01/D02/D03`, `KK0401_GENE_ADD_DTM_D01/D02/D03`, `UPD_DTM_BF_D01/D02/D03`), and the target sub-option service contract list (`SBOP_SVC_KEI_INFO`). |

**Instance fields / external state read:**

| Field | Source | Business Description |
|-------|--------|---------------------|
| `SBOP_SVC_CD_ALIAS` | `KKW02501SFLogic` class constant | Sub-option service code for E-Mail Alias changes — value `"D01"` |
| `SBOP_SVC_CD_MAIL_CAPA` | `KKW02501SFLogic` class constant | Sub-option service code for Mail Box capacity changes — value `"D02"` |
| `SBOP_SVC_CD_VCHK` | `KKW02501SFLogic` class constant | Sub-option service code for Virus Check changes — value `"D03"` |
| `CHG_TYPE_NOCHG` | `KKW02501SFLogic` class constant | Change status code for "no change" — value `"0"` |
| `CHG_TYPE1` | `KKW02501SFLogic` class constant | Change status code for "registered or modified" — value `"1"` |

## 4. CRUD Operations / Called Services

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

| CRUD | SC / CBS | SC Code | Entity / DB | Operation Description |
|------|----------|---------|-------------|----------------------|
| R | `X31SDataBeanAccess.getDataBeanArray` | OneStopDataBeanAccess | - | Retrieves the sub-option service contract list array (`SBOP_SVC_KEI_INFO`) from the main form DataBean |
| R | `X31SDataBeanAccessArray.getDataBean` | OneStopDataBeanAccess | - | Gets the first element (index 0) of the sub-option contract list to check for existing entries |
| R | `X31SDataBeanAccess.sendMessageString` | OneStopDataBeanAccess | - | Reads change flags (`ALIAS_CHG_FLG`, `MLAD_CHG_FLG`, `CAPA_CHG_FLG`, `VIRUS_CHK_CHG_FLG`) and input values from the main form DataBean |
| C | `X31SDataBeanAccessArray.clearArray` | OneStopDataBeanAccess | - | Clears all entries in the sub-option contract list array to rebuild from current screen state |
| C | `X31SDataBeanAccessArray.addDataBean` | OneStopDataBeanAccess | - | Creates a new entry in the sub-option contract list array for each modified service type |
| C | `X31SDataBeanAccess.sendMessageString` (set) | OneStopDataBeanAccess | - | Sets sub-option service contract fields on the new entry: service number (`SBOP_SVC_KEI_NO_03`), generation timestamp (`GENE_ADD_DTM_03`), service code (`SBOP_SVC_CD_03`), and update timestamp (`UPD_DTM_03`) |

**How to classify:**
- All operations here are DataBean-level (in-memory DataBean manipulation), not direct database access. The actual persistence happens upstream in `setChgesrv()`, which calls the update SC after `setSbopsvckeiList` returns.
- **R** (Read): Methods with `getDataBeanArray`, `getDataBean`, and `sendMessageString(..., DATABEAN_GET_VALUE, ...)`
- **C** (Create): Methods with `clearArray` followed by `addDataBean` (rebuild pattern), and `sendMessageString(..., DATABEAN_SET_VALUE, ...)` (field assignment on DataBean)
- No U (Update) or D (Delete) at the DB level — this method assembles data, it does not persist it.

## 5. Dependency Trace

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

No screen/batch entry points found within 8 hops. Direct callers found: 1 method.
Terminal operations from this method: `sendMessageString` [-] (read flags), `addDataBean` [C], `sendMessageString` [-] (set fields), `clearArray` [-], `sendMessageString` [-] (read values), `getDataBeanArray` [R], `getDataBean` [R]

Trace who calls this method and what this method ultimately calls.

| # | Caller (Screen/Batch) | Call Chain (Full Path to this Method) | Terminal (SC / CRUD / Entity) |
|---|----------------------|--------------------------------------|-------------------------------|
| 1 | Method: KKW02501SFLogic.setChgesrv | `setChgesrv` -> `setSbopsvckeiList` | `addDataBean [C] SBOP_SVC_KEI_INFO`, `sendMessageString [-]` (field mapping) |

**Notes:**
- This method is private (`private void`), so it is only called internally within `KKW02501SFLogic`.
- The sole known caller is `setChgesrv()` which prepares the change-service data for the update SC.
- No direct screen or batch entry points route through this method; it is a sub-routine of the change-service preparation flow.
- Terminal operations are all DataBean operations (`addDataBean`, `sendMessageString` for set/get, `clearArray`, `getDataBean`, `getDataBeanArray`). The actual DB persistence is performed by the caller's subsequent SC invocation.

## 6. Per-Branch Detail Blocks

**Block 1** — SET (L1563)

> Initialize local variables for the sub-option array and temporary bean reference.

| # | Type | Code |
|---|------|------|
| 1 | SET | `arraybean = null` |
| 2 | SET | `beanTemp = null` |

**Block 2** — SET (L1567)

> Extract the main form DataBean from the paramBean array and retrieve the sub-option service contract list.

| # | Type | Code |
|---|------|------|
| 1 | SET | `beanTemp = paramBean[0]` // Get the main form DataBean from the input array |
| 2 | SET | `arraybean = beanTemp.getDataBeanArray(KKW02501SFConst.SBOP_SVC_KEI_INFO)` // Retrieve the sub-option service contract list array (const: "サブオプションサービス契約リスト") |
| 3 | SET | `subbean = arraybean.getDataBean(0)` // Get the first entry, if any, to check for pre-existing data |

**Block 3** — IF (condition: `subbean != null`) [CONSTANT_NAME="clear existing entries"] (L1569)

> If the sub-option list already has an entry (e.g., re-display after a validation error), clear the entire array so it can be rebuilt from the latest screen content. Japanese comment: "いったんリストをクリア（更新確認の度に最新の画面内容を設定するため）" — "Clear the list once (to set the latest screen content each time the update is confirmed)."

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `arraybean.clearArray()` // Clear all existing sub-option entries to rebuild from current screen state |

**Block 4** — SET (L1574)

> Read the E-Mail Alias change flag from the main form DataBean.

| # | Type | Code |
|---|------|------|
| 1 | SET | `alias_chg_flg = beanTemp.sendMessageString(KKW02501SFConst.ALIAS_CHG_FLG, X31CWebConst.DATABEAN_GET_VALUE)` // Read E-Mail Alias change flag (const: "メールエイリアス変更状態") |

**Block 5** — SET (L1577)

> Read E-Mail Address change flag and the previous Alias value. Added for IT1-2013-0001584 (E-Mail Alias deregistration/cancellation support when E-Mail address changes).

| # | Type | Code |
|---|------|------|
| 1 | SET | `mlad_chg_flg = paramBean[0].sendMessageString(KKW02501SFConst.MLAD_CHG_FLG, X31CWebConst.DATABEAN_GET_VALUE)` // Read E-Mail Address change flag (const: "メールアドレス変更状態") |
| 2 | SET | `chgbfAlias = paramBean[0].sendMessageString(KKW02501SFConst.ALIAS, X31CWebConst.DATABEAN_GET_VALUE)` // Read previous E-Mail Alias value (const: "メールエイリアス") |

**Block 6** — IF (condition: `!(CHG_TYPE_NOCHG.equals(alias_chg_flg)) || (null != chgbfAlias && !("".equals(chgbfAlias)) && CHG_TYPE1.equals(mlad_chg_flg))`) [CHG_TYPE_NOCHG="0"] [CHG_TYPE1="1"] (L1580)

> E-Mail Alias change detection block. A sub-option service entry is added if EITHER:
> - The alias change flag is not "0" (a pure alias change was made), OR
> - The previous alias was non-null and non-empty AND the E-Mail address change flag is "1" (a new E-Mail address was registered, which triggers an implicit alias deregistration via IT1-2013-0001584).

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `subbean = arraybean.addDataBean()` // Create a new sub-option service contract entry |
| 2 | EXEC | `subbean.sendMessageString(KKW02501SFConst.SBOP_SVC_KEI_NO_03, DATABEAN_SET_VALUE, beanTemp.sendMessageString(KKW02501SFConst.SBOP_SVC_KEI_NO_D01, DATABEAN_GET_VALUE))` // Set sub-option service contract number (D01 variant) from screen input. Comment: "サブオプションサービス契約番号（初期表示で「エイリアス」が存在しない場合は空白のままでもよい）」" — "Sub-option service contract number (blank is acceptable during initial display if alias does not exist)" |
| 3 | EXEC | `subbean.sendMessageString(KKW02501SFConst.GENE_ADD_DTM_03, DATABEAN_SET_VALUE, beanTemp.sendMessageString(KKW02501SFConst.KK0401_GENE_ADD_DTM_D01, DATABEAN_GET_VALUE))` // Set generation timestamp (D01 variant). Comment: "世代登録年月日时分秒（初期表示で「エイリアス」が存在しない場合は空白のままでもよい）」" — "Generation registration date/time (blank is acceptable during initial display if alias does not exist)" |
| 4 | EXEC | `subbean.sendMessageString(KKW02501SFConst.SBOP_SVC_CD_03, DATABEAN_SET_VALUE, SBOP_SVC_CD_ALIAS)` // Set sub-option service code to "D01" (E-Mail Alias). Comment: "サブオプションサービスコード（何らかの変更があれば必ず設定する）」" — "Sub-option service code (must be set whenever any change exists)" |
| 5 | EXEC | `subbean.sendMessageString(KKW02501SFConst.UPD_DTM_03, DATABEAN_SET_VALUE, beanTemp.sendMessageString(KKW02501SFConst.UPD_DTM_BF_D01, DATABEAN_GET_VALUE))` // Set pre-update timestamp (D01 variant). Comment: "更新年月日时分秒（初期表示で「エイリアス」が存在しない場合は空白のままでもよい）」" — "Update date/time (blank is acceptable during initial display if alias does not exist)" |

**Block 7** — SET (L1592)

> Read the Mail Box capacity change flag.

| # | Type | Code |
|---|------|------|
| 1 | SET | `capa_chg_flg = beanTemp.sendMessageString(KKW02501SFConst.CAPA_CHG_FLG, X31CWebConst.DATABEAN_GET_VALUE)` // Read Mail Box capacity change flag (const: "メール容量変更状態") |

**Block 8** — IF (condition: `!(CHG_TYPE_NOCHG.equals(capa_chg_flg))`) [CHG_TYPE_NOCHG="0"] (L1594)

> Mail Box capacity change detection block. A sub-option service entry is added whenever the capacity change flag is not "0" (meaning any capacity modification was made).

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `subbean = arraybean.addDataBean()` // Create a new sub-option service contract entry |
| 2 | EXEC | `subbean.sendMessageString(KKW02501SFConst.SBOP_SVC_KEI_NO_03, DATABEAN_SET_VALUE, beanTemp.sendMessageString(KKW02501SFConst.SBOP_SVC_KEI_NO_D02, DATABEAN_GET_VALUE))` // Set sub-option service contract number (D02 variant, for Mail Box capacity). Comment: "サブオプションサービス契約番号（初期表示で「追加容量」が存在しない場合は空白のままでもよい）」" — "Sub-option service contract number (blank is acceptable during initial display if additional capacity does not exist)" |
| 3 | EXEC | `subbean.sendMessageString(KKW02501SFConst.GENE_ADD_DTM_03, DATABEAN_SET_VALUE, beanTemp.sendMessageString(KKW02501SFConst.KK0401_GENE_ADD_DTM_D02, DATABEAN_GET_VALUE))` // Set generation timestamp (D02 variant). Comment: "世代登録年月日时分秒（初期表示で「追加容量」が存在しない場合は空白のままでもよい）」" — "Generation registration date/time (blank is acceptable during initial display if additional capacity does not exist)" |
| 4 | EXEC | `subbean.sendMessageString(KKW02501SFConst.SBOP_SVC_CD_03, DATABEAN_SET_VALUE, SBOP_SVC_CD_MAIL_CAPA)` // Set sub-option service code to "D02" (Mail Box capacity). Comment: "サブオプションサービスコード（何らかの変更があれば必ず設定する）」" — "Sub-option service code (must be set whenever any change exists)" |
| 5 | EXEC | `subbean.sendMessageString(KKW02501SFConst.UPD_DTM_03, DATABEAN_SET_VALUE, beanTemp.sendMessageString(KKW02501SFConst.UPD_DTM_BF_D02, DATABEAN_GET_VALUE))` // Set pre-update timestamp (D02 variant). Comment: "更新年月日时分秒（初期表示で「追加容量」が存在しない場合は空白のままでもよい）」" — "Update date/time (blank is acceptable during initial display if additional capacity does not exist)" |

**Block 9** — SET (L1606)

> Read the Virus Check change flag.

| # | Type | Code |
|---|------|------|
| 1 | SET | `virus_chk_chg_flg = beanTemp.sendMessageString(KKW02501SFConst.VIRUS_CHK_CHG_FLG, X31CWebConst.DATABEAN_GET_VALUE)` // Read Virus Check change flag (const: "ウイルスチェック変更状態") |

**Block 10** — IF (condition: `!(CHG_TYPE_NOCHG.equals(virus_chk_chg_flg))`) [CHG_TYPE_NOCHG="0"] (L1608)

> Virus Check change detection block. A sub-option service entry is added whenever the Virus Check change flag is not "0" (meaning Virus Check enable/disable was modified). Introduced in v4.00 (ANK-0364: Virus Check non-billing registration support).

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `subbean = arraybean.addDataBean()` // Create a new sub-option service contract entry |
| 2 | EXEC | `subbean.sendMessageString(KKW02501SFConst.SBOP_SVC_KEI_NO_03, DATABEAN_SET_VALUE, beanTemp.sendMessageString(KKW02501SFConst.SBOP_SVC_KEI_NO_D03, DATABEAN_GET_VALUE))` // Set sub-option service contract number (D03 variant, for Virus Check). Comment: "サブオプションサービス契約番号（初期表示で「ウイルスチエック」の場合は空白のままでもよい）」" — "Sub-option service contract number (blank is acceptable during initial display if Virus Check)" |
| 3 | EXEC | `subbean.sendMessageString(KKW02501SFConst.GENE_ADD_DTM_03, DATABEAN_SET_VALUE, beanTemp.sendMessageString(KKW02501SFConst.KK0401_GENE_ADD_DTM_D03, DATABEAN_GET_VALUE))` // Set generation timestamp (D03 variant). Comment: "世代登録年月日时分秒（初期表示で「ウイルスチエック」の場合は空白のままでもよい）」" — "Generation registration date/time (blank is acceptable during initial display if Virus Check)" |
| 4 | EXEC | `subbean.sendMessageString(KKW02501SFConst.SBOP_SVC_CD_03, DATABEAN_SET_VALUE, SBOP_SVC_CD_VCHK)` // Set sub-option service code to "D03" (Virus Check). Comment: "サブオプションサービスコード（何らかの変更があれば必ず設定する）」" — "Sub-option service code (must be set whenever any change exists)" |
| 5 | EXEC | `subbean.sendMessageString(KKW02501SFConst.UPD_DTM_03, DATABEAN_SET_VALUE, beanTemp.sendMessageString(KKW02501SFConst.UPD_DTM_BF_D03, DATABEAN_GET_VALUE))` // Set pre-update timestamp (D03 variant). Comment: "更新年月日时分秒（初期表示で「ウイルスチエック」の場合は空白のままでもよい）」" — "Update date/time (blank is acceptable during initial display if Virus Check)" |

**Block 11** — RETURN (L1620)

> Method completes with void return. The modified `arraybean` remains in `paramBean[0]` and will be used by the caller (`setChgesrv`) for subsequent update service processing.

| # | Type | Code |
|---|------|------|
| 1 | RETURN | `return;` // void method — completes silently |

## 7. Glossary

| Term | Type | Business Meaning |
|------|------|------------------|
| `SBOP_SVC_KEI_INFO` | Constant | Sub-option service contract list — in-memory list array holding per-sub-option service contract records to be sent to the update SC |
| `SBOP_SVC_KEI_NO_03` | Field | Sub-option service contract number (output field index 03) — the contract identifier for the sub-option service line item being mapped |
| `SBOP_SVC_KEI_NO_D01` | Field | Sub-option service contract number for E-Mail Alias — input field containing the contract number when the alias service type is being updated |
| `SBOP_SVC_KEI_NO_D02` | Field | Sub-option service contract number for Mail Box capacity — input field containing the contract number when the capacity service type is being updated |
| `SBOP_SVC_KEI_NO_D03` | Field | Sub-option service contract number for Virus Check — input field containing the contract number when the Virus Check service type is being updated |
| `GENE_ADD_DTM_03` | Field | Generation registration date/time (output field index 03) — timestamp when the sub-option service contract entry was created/registered |
| `KK0401_GENE_ADD_DTM_D01` | Field | Generation registration date/time for E-Mail Alias (input) — pre-computed timestamp for the alias contract entry |
| `KK0401_GENE_ADD_DTM_D02` | Field | Generation registration date/time for Mail Box capacity (input) — pre-computed timestamp for the capacity contract entry |
| `KK0401_GENE_ADD_DTM_D03` | Field | Generation registration date/time for Virus Check (input) — pre-computed timestamp for the Virus Check contract entry |
| `SBOP_SVC_CD_03` | Field | Sub-option service code (output field index 03) — identifies which sub-option service type the entry represents |
| `UPD_DTM_03` | Field | Update date/time (output field index 03) — timestamp of the pre-change state, used for update confirmation |
| `UPD_DTM_BF_D01` | Field | Pre-update date/time for E-Mail Alias (input) — timestamp before the alias change |
| `UPD_DTM_BF_D02` | Field | Pre-update date/time for Mail Box capacity (input) — timestamp before the capacity change |
| `UPD_DTM_BF_D03` | Field | Pre-update date/time for Virus Check (input) — timestamp before the Virus Check change |
| `ALIAS_CHG_FLG` | Field | E-Mail Alias change flag — indicates whether the E-Mail Alias has been modified (`"0"` = no change, other = changed) |
| `MLAD_CHG_FLG` | Field | E-Mail Address change flag — indicates whether the E-Mail Address has been modified (`"1"` = new address registered, added for IT1-2013-0001584) |
| `CAPA_CHG_FLG` | Field | Mail Box capacity change flag — indicates whether the Mail Box capacity has been modified |
| `VIRUS_CHK_CHG_FLG` | Field | Virus Check change flag — indicates whether the Virus Check setting has been enabled or disabled |
| `ALIAS` | Field | E-Mail Alias — the customer's E-Mail alias address value (e.g., `user@mail.example.com`) |
| `SBOP_SVC_CD_ALIAS` | Constant | Sub-option service code for E-Mail Alias — value `"D01"`, identifies alias-type sub-option service entries |
| `SBOP_SVC_CD_MAIL_CAPA` | Constant | Sub-option service code for Mail Box capacity — value `"D02"`, identifies capacity-type sub-option service entries |
| `SBOP_SVC_CD_VCHK` | Constant | Sub-option service code for Virus Check — value `"D03"`, identifies Virus Check-type sub-option service entries |
| `CHG_TYPE_NOCHG` | Constant | Change status code meaning "no change" — value `"0"`, used as the baseline to detect when a field has been modified |
| `CHG_TYPE1` | Constant | Change status code meaning "registered or modified" — value `"1"`, used to detect when a new E-Mail address has been registered |
| `SOD` | Acronym | Sub-option Service Order / Sub-option Service — refers to additional services attached to a primary ISP contract (alias, capacity, virus check) |
| E-Mail Alias | Business term | An alternative E-Mail address that forwards mail to the customer's primary E-Mail address, part of the K-Opticom E-Mail service |
| Mail Box capacity | Business term | The storage quota allocated for the customer's E-Mail Box (MailBOX), which can be increased or decreased |
| Virus Check | Business term | Anti-virus scanning service for E-Mail messages, can be enabled or disabled as a sub-option service; non-billing registration introduced in v4.00 (ANK-0364) |
| DataBean | Technical term | K-Opticom's data transfer object pattern — an object that holds screen input/output data and provides typed accessors via `sendMessageString` (key-value based) |
| X31SDataBeanAccess | Technical class | X31 framework class providing DataBean access for server-side processing |
| X31SDataBeanAccessArray | Technical class | X31 framework class providing array-based DataBean list management (add, clear, get) |
| `DATABEAN_GET_VALUE` | Technical constant | X31CWebConst flag indicating a DataBean getter operation |
| `DATABEAN_SET_VALUE` | Technical constant | X31CWebConst flag indicating a DataBean setter operation |
