# Business Logic — KKW01601SF03DBean.typeModelData() [264 LOC]

| Field | Value |
|-------|-------|
| Fully Qualified Name | `eo.web.webview.KKA15301SF.KKW01601SF03DBean` |
| Layer | Web Controller / View Data Bean (webview package) |
| Module | `KKA15301SF` (Package: `eo.web.webview.KKA15301SF`) |

## 1. Role

### KKW01601SF03DBean.typeModelData()

This method serves as a **type-resolution dispatcher** for the web application's data binding layer. It is invoked by the X33V framework during view data loading to determine the Java `Class<?>` type for each property defined in the view form. The method maps a `key` (a human-readable field label such as "System ID", "Service Contract Number", or "Move Reason Code") and an optional `subkey` (either "value" or "state") to the appropriate Java type descriptor.

The method handles two categories of field types. **Simple string fields** (such as system ID, service contract number, address, and various status indicators) always return `String.class` for both "value" and "state" subkeys — these are scalar form fields whose data model is purely textual. **Indexed array fields** (Move Reason Code, Option Service Contract Number, Simultaneous Application Service Contract Number) support dynamic list rendering: when the key includes an index suffix (e.g., "異動理由コード/0"), the method parses the index, delegates to the corresponding `X33VDataTypeStringBean` element in the list, and returns that element's type model for the requested subkey. When the index suffix is the wildcard "*", it returns `Integer.class` to signal the framework that the list size should be queried.

This method implements a **routing/dispatch pattern** — a large switch-like structure using chained if/else-if conditions to route between multiple field-specific handlers. It has no direct database or service component interactions; all data comes from pre-populated instance fields (list beans and scalar string fields) that were populated earlier in the request lifecycle. Its role in the larger system is that of a **shared type introspection utility** — the X33V framework calls `typeModelData` for every field it needs to bind, making this method central to the view data lifecycle for the application screen.

## 2. Processing Pattern (Detailed Business Logic)

```mermaid
flowchart TD
    START(["typeModelData key, subkey"])

    START --> CHECK_NULL["Check: key or subkey is null?"]
    CHECK_NULL -->|yes| RET_NULL["return null"]
    CHECK_NULL -->|no| FIND_SEP["Find '/' index in key"]

    FIND_SEP --> SIMPLE_1["System ID key"]
    SIMPLE_1 --> S1_V{"subkey = 'value'?"}
    S1_V -->|yes| S1_RET1["return String.class"]
    S1_V -->|no| S1_S{"subkey = 'state'?"}
    S1_S -->|yes| S1_RET2["return String.class"]
    S1_S -->|no| SIMPLE_2["Service Contract No key"]

    SIMPLE_2 --> S2_V{"subkey = 'value'?"}
    S2_V -->|yes| S2_RET1["return String.class"]
    S2_V -->|no| S2_S{"subkey = 'state'?"}
    S2_S -->|yes| S2_RET2["return String.class"]
    S2_S -->|no| SIMPLE_3["Move Div key"]

    SIMPLE_3 --> S3_V{"subkey = 'value'?"}
    S3_V -->|yes| S3_RET1["return String.class"]
    S3_V -->|no| S3_S{"subkey = 'state'?"}
    S3_S -->|yes| S3_RET2["return String.class"]
    S3_S -->|no| SIMPLE_4["Remaining simple keys"]
    SIMPLE_4 --> SIMPLE_SUB{"subkey = 'value' or 'state'?"}
    SIMPLE_SUB -->|yes| SIMPLE_RET["return String.class"]
    SIMPLE_SUB -->|no| SIMPLE_FALL["no match, fall through"]

    SIMPLE_4 --> RET_NULL

    SIMPLE_1 --> RET_NULL
    SIMPLE_2 --> RET_NULL
    SIMPLE_3 --> RET_NULL

    FIND_SEP --> ARRAY_1["Move Reason Code key"]
    ARRAY_1 --> ARR1_SUB1["Extract index from key"]
    ARR1_SUB1 --> ARR1_STAR{"index = '*'?"}
    ARR1_STAR -->|yes| ARR1_RET["return Integer.class"]
    ARR1_STAR -->|no| ARR1_PARSE["Parse index to int"]
    ARR1_PARSE --> ARR1_BOUNDS{"valid range?"}
    ARR1_BOUNDS -->|no| ARR1_RET_NULL["return null"]
    ARR1_BOUNDS -->|yes| ARR1_DELEGATE["delegate: X33VDataTypeStringBean.get(index).typeModelData(subkey)"]
    ARR1_DELEGATE --> RET_END

    ARR1_STAR --> RET_NULL
    ARR1_RET_NULL --> RET_END

    FIND_SEP --> ARRAY_2["Option Service Contract No key"]
    ARRAY_2 --> ARR2_SUB1["Extract index from key"]
    ARR2_SUB1 --> ARR2_STAR{"index = '*'?"}
    ARR2_STAR -->|yes| ARR2_RET["return Integer.class"]
    ARR2_STAR -->|no| ARR2_PARSE["Parse index to int"]
    ARR2_PARSE --> ARR2_BOUNDS{"valid range?"}
    ARR2_BOUNDS -->|no| ARR2_RET_NULL["return null"]
    ARR2_BOUNDS -->|yes| ARR2_DELEGATE["delegate: X33VDataTypeStringBean.get(index).typeModelData(subkey)"]
    ARR2_DELEGATE --> RET_END

    ARR2_STAR --> RET_NULL
    ARR2_RET_NULL --> RET_END

    FIND_SEP --> ARRAY_3["Simultaneous Application Service Contract No key"]
    ARRAY_3 --> ARR3_SUB1["Extract index from key"]
    ARR3_SUB1 --> ARR3_STAR{"index = '*'?"}
    ARR3_STAR -->|yes| ARR3_RET["return Integer.class"]
    ARR3_STAR -->|no| ARR3_PARSE["Parse index to int"]
    ARR3_PARSE --> ARR3_BOUNDS{"valid range?"}
    ARR3_BOUNDS -->|no| ARR3_RET_NULL["return null"]
    ARR3_BOUNDS -->|yes| ARR3_DELEGATE["delegate: X33VDataTypeStringBean.get(index).typeModelData(subkey)"]
    ARR3_DELEGATE --> RET_END

    ARR3_STAR --> RET_NULL
    ARR3_RET_NULL --> RET_END

    RET_NULL --> END(["END"])
    S1_RET1 --> END
    S1_RET2 --> END
    S2_RET1 --> END
    S2_RET2 --> END
    S3_RET1 --> END
    S3_RET2 --> END
    SIMPLE_RET --> END
    S1_FALL --> END
    ARR1_RET --> END
    ARR1_DELEGATE --> END
    ARR2_RET --> END
    ARR2_DELEGATE --> END
    ARR3_RET --> END
    ARR3_DELEGATE --> END
    SIMPLE_FALL --> END

    RET_END --> END
```

## 3. Parameter Analysis

| No | Parameter Name | Type | Business Description |
|----|---------------|------|---------------------|
| 1 | `key` | `String` | A human-readable field label that identifies the form property whose type is being queried. Represents business data labels such as "System ID" (システムID), "Service Contract Number" (サービス契約番号), "Move Reason Code" (異動理由コード). For array-type fields, the key includes a "/" separator followed by an index or the wildcard "*" (e.g., "異動理由コード/0" or "異動理由コード/*"). |
| 2 | `subkey` | `String` | Identifies which facet of the field's data model is being queried. Takes two standard values: "value" (to retrieve the field's data type for its main value) or "state" (to retrieve the type for its UI state, such as enabled/disabled status). Comparison is case-insensitive. |

**Instance fields read by this method:**

| Field Name | Type | Business Description |
|-----------|------|---------------------|
| `hktgi_ido_rsn_cd_list` | `X33VDataTypeList` | List of Move Reason Code items — used when resolving indexed array access for "Move Reason Code" key |
| `hktgi_op_svc_kei_no_list` | `X33VDataTypeList` | List of Option Service Contract Number items — used when resolving indexed array access for "Option Service Contract Number" key |
| `hktgi_mskm_svc_kei_no_list` | `X33VDataTypeList` | List of Simultaneous Application Service Contract Number items — used when resolving indexed array access for "Simultaneous Application Service Contract Number" key |

## 4. CRUD Operations / Called Services

| CRUD | SC / CBS | SC Code | Entity / DB | Operation Description |
|------|----------|---------|-------------|----------------------|
| - | `X33VDataTypeStringBean.typeModelData` | X33VDataTypeStringBean | - | Delegates to the nested bean's `typeModelData` method for indexed array fields to resolve the subkey's type. Called on `X33VDataTypeStringBean` instances retrieved from list beans (framework class, not a custom SC). |
| - | `KKW01601SF03DBean.typeModelData` | KKW01601SF03DBean | - | Self-referencing call — `typeModelData` calls itself on nested bean elements from the list |

No database CRUD operations are performed by this method. It operates entirely in memory, reading from pre-populated instance fields and delegating type resolution to framework bean classes.

## 5. Dependency Trace

| # | Caller (Screen/Batch) | Call Chain (Full Path to this Method) | Terminal (SC / CRUD / Entity) |
|---|----------------------|--------------------------------------|-------------------------------|
| 1 | Self | `KKW01601SF03DBean.typeModelData` (nested list bean delegate) | X33VDataTypeStringBean.typeModelData (framework, no DB) |

No external callers were found in the codebase. The pre-computed code graph shows only a self-reference — the method is called recursively on nested `X33VDataTypeStringBean` elements within list beans. The actual entry point for this method from the screen layer is the X33V framework's data binding mechanism, which invokes `typeModelData` automatically when building the view data model for the associated web screen.

## 6. Per-Branch Detail Blocks

**Block 1** — IF (null check) `(key == null || subkey == null)` (L1183)

> Guard clause: if either parameter is null, return null immediately. This prevents NPE during string operations.

| # | Type | Code |
|---|------|------|
| 1 | RETURN | `return null;` // if key or subkey is null, return null immediately |

**Block 2** — EXEC (separator position) `(key.indexOf("/"))` (L1189)

| # | Type | Code |
|---|------|------|
| 1 | SET | `int separaterPoint = key.indexOf("/");` // find the position of '/' separator in key |

**Block 3** — IF-ELSE-IF chain — Simple string fields

### Block 3.1 — IF `(key.equals("システムID"))` [システムID = "System ID"] (L1191)

> Field: System ID (hktgi_sysid) — a simple scalar String field. Returns String.class for both "value" and "state" subkeys.

| # | Type | Code |
|---|------|------|
| 1 | IF | `if(subkey.equalsIgnoreCase("value"))` |
| 2 | RETURN | `return String.class;` |
| 3 | ELSE_IF | `else if(subkey.equalsIgnoreCase("state"))` |
| 4 | RETURN | `return String.class;` | // if subkey is "state", return status type |

### Block 3.2 — ELSE-IF `(key.equals("サービス契約番号"))` [サービス契約番号 = "Service Contract Number"] (L1199)

> Field: Service Contract Number (hktgi_svc_kei_no) — a simple scalar String field. Same pattern as Block 3.1.

| # | Type | Code |
|---|------|------|
| 1 | IF | `if(subkey.equalsIgnoreCase("value"))` |
| 2 | RETURN | `return String.class;` |
| 3 | ELSE_IF | `else if(subkey.equalsIgnoreCase("state"))` |
| 4 | RETURN | `return String.class;` |

### Block 3.3 — ELSE-IF `(key.equals("異動区分"))` [異動区分 = "Move Classification"] (L1207)

> Field: Move Classification (hktgi_ido_div) — indicates the type of account move/change. Same simple pattern.

| # | Type | Code |
|---|------|------|
| 1 | IF | `if(subkey.equalsIgnoreCase("value"))` |
| 2 | RETURN | `return String.class;` |
| 3 | ELSE_IF | `else if(subkey.equalsIgnoreCase("state"))` |
| 4 | RETURN | `return String.class;` |

**Block 4** — IF-ELSE-IF chain — Indexed array field: Move Reason Code

### Block 4.1 — IF `(key.equals("異動理由コード"))` [異動理由コード = "Move Reason Code"] (L1215)

> Field: Move Reason Code (hktgi_ido_rsn_cd) — an indexed array field stored in `hktgi_ido_rsn_cd_list`. The key includes a "/" separator with an index. Handles three cases: wildcard "*" (returns Integer.class for list size), valid integer index (delegates to the list element), or invalid input (returns null).

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `key = key.substring(separaterPoint + 1);` // extract the index portion after '/' |
| 2 | IF | `if(key.equals("*"))` |
| 3 | RETURN | `return Integer.class;` // if wildcard "*" is specified, return Integer.class for list size |
| 4 | TRY | `tmpIndexInt = Integer.valueOf(key);` // parse the index string to Integer |
| 5 | CATCH | `catch(NumberFormatException e) { return null; }` // if index is not a numeric string, return null |
| 6 | IF | `if(tmpIndexInt == null) { return null; }` |
| 7 | SET | `int tmpIndex = tmpIndexInt.intValue();` |
| 8 | IF | `if(tmpIndex < 0 || tmpIndex >= hktgi_ido_rsn_cd_list.size())` // if index out of bounds, return null |
| 9 | RETURN | `return null;` |
| 10 | RETURN | `return ((X33VDataTypeStringBean)hktgi_ido_rsn_cd_list.get(tmpIndex)).typeModelData(subkey);` // delegate to the list element's typeModelData |

**Block 5** — IF-ELSE-IF chain — Remaining simple string fields

### Block 5.1 — ELSE-IF `(key.equals("異動理由メモ"))` [異動理由メモ = "Move Reason Memo"] (L1238)

> Field: Move Reason Memo (hktgi_ido_rsn_memo) — free-text memo field for move reason.

| # | Type | Code |
|---|------|------|
| 1 | IF | `if(subkey.equalsIgnoreCase("value"))` |
| 2 | RETURN | `return String.class;` |
| 3 | ELSE_IF | `else if(subkey.equalsIgnoreCase("state"))` |
| 4 | RETURN | `return String.class;` |

### Block 5.2 — ELSE-IF `(key.equals("オプションサービス契約番号"))` [オプションサービス契約番号 = "Option Service Contract Number"] (L1246)

> Field: Option Service Contract Number (hktgi_op_svc_kei_no) — indexed array field stored in `hktgi_op_svc_kei_no_list`. Same pattern as Block 4.1.

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `key = key.substring(separaterPoint + 1);` // extract the index portion after '/' |
| 2 | IF | `if(key.equals("*"))` |
| 3 | RETURN | `return Integer.class;` |
| 4 | TRY | `tmpIndexInt = Integer.valueOf(key);` |
| 5 | CATCH | `catch(NumberFormatException e) { return null; }` |
| 6 | IF | `if(tmpIndexInt == null) { return null; }` |
| 7 | SET | `int tmpIndex = tmpIndexInt.intValue();` |
| 8 | IF | `if(tmpIndex < 0 || tmpIndex >= hktgi_op_svc_kei_no_list.size())` |
| 9 | RETURN | `return null;` |
| 10 | RETURN | `return ((X33VDataTypeStringBean)hktgi_op_svc_kei_no_list.get(tmpIndex)).typeModelData(subkey);` |

### Block 5.3 — ELSE-IF `(key.equals("処理区分"))` [処理区分 = "Processing Classification"] (L1270)

> Field: Processing Classification (hktgi_tran_div) — indicates the processing type/category.

| # | Type | Code |
|---|------|------|
| 1 | IF | `if(subkey.equalsIgnoreCase("value"))` |
| 2 | RETURN | `return String.class;` |
| 3 | ELSE_IF | `else if(subkey.equalsIgnoreCase("state"))` |
| 4 | RETURN | `return String.class;` |

### Block 5.4 — ELSE-IF `(key.equals("申請番号"))` [申請番号 = "Application Number"] (L1278)

> Field: Application Number (hktgi_mskm_no) — the application/tracking number for the request.

| # | Type | Code |
|---|------|------|
| 1 | IF | `if(subkey.equalsIgnoreCase("value"))` |
| 2 | RETURN | `return String.class;` |
| 3 | ELSE_IF | `else if(subkey.equalsIgnoreCase("state"))` |
| 4 | RETURN | `return String.class;` |

### Block 5.5 — ELSE-IF `(key.equals("申請明細番号"))` [申請明細番号 = "Application Detail Number"] (L1286)

> Field: Application Detail Number (hktgi_mskm_dtl_no) — line-item detail number within an application.

| # | Type | Code |
|---|------|------|
| 1 | IF | `if(subkey.equalsIgnoreCase("value"))` |
| 2 | RETURN | `return String.class;` |
| 3 | ELSE_IF | `else if(subkey.equalsIgnoreCase("state"))` |
| 4 | RETURN | `return String.class;` |

### Block 5.6 — ELSE-IF `(key.equals("特定ID項目名"))` [特定ID項目名 = "Specific ID Item Name"] (L1294)

> Field: Specific ID Item Name (hktgi_tokutei_id_kmk_nm) — name of a specific ID attribute field.

| # | Type | Code |
|---|------|------|
| 1 | IF | `if(subkey.equalsIgnoreCase("value"))` |
| 2 | RETURN | `return String.class;` |
| 3 | ELSE_IF | `else if(subkey.equalsIgnoreCase("state"))` |
| 4 | RETURN | `return String.class;` |

### Block 5.7 — ELSE-IF `(key.equals("特定ID項目値"))` [特定ID項目値 = "Specific ID Item Value"] (L1302)

> Field: Specific ID Item Value (hktgi_tokutei_id_kmk_value) — the value of a specific ID attribute field.

| # | Type | Code |
|---|------|------|
| 1 | IF | `if(subkey.equalsIgnoreCase("value"))` |
| 2 | RETURN | `return String.class;` |
| 3 | ELSE_IF | `else if(subkey.equalsIgnoreCase("state"))` |
| 4 | RETURN | `return String.class;` |

### Block 5.8 — ELSE-IF `(key.equals("ポップアップモード"))` [ポップアップモード = "Popup Mode"] (L1310)

> Field: Popup Mode (hktgi_popup_mode) — indicates the current popup display mode.

| # | Type | Code |
|---|------|------|
| 1 | IF | `if(subkey.equalsIgnoreCase("value"))` |
| 2 | RETURN | `return String.class;` |
| 3 | ELSE_IF | `else if(subkey.equalsIgnoreCase("state"))` |
| 4 | RETURN | `return String.class;` |

### Block 5.9 — ELSE-IF `(key.equals("同時申請サービス契約番号"))` [同時申請サービス契約番号 = "Simultaneous Application Service Contract Number"] (L1318)

> Field: Simultaneous Application Service Contract Number (hktgi_mskm_svc_kei_no) — indexed array field stored in `hktgi_mskm_svc_kei_no_list. Same pattern as Block 4.1 and Block 5.2.

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `key = key.substring(separaterPoint + 1);` // extract the index portion after '/' |
| 2 | IF | `if(key.equals("*"))` |
| 3 | RETURN | `return Integer.class;` |
| 4 | TRY | `tmpIndexInt = Integer.valueOf(key);` |
| 5 | CATCH | `catch(NumberFormatException e) { return null; }` |
| 6 | IF | `if(tmpIndexInt == null) { return null; }` |
| 7 | SET | `int tmpIndex = tmpIndexInt.intValue();` |
| 8 | IF | `if(tmpIndex < 0 || tmpIndex >= hktgi_mskm_svc_kei_no_list.size())` |
| 9 | RETURN | `return null;` |
| 10 | RETURN | `return ((X33VDataTypeStringBean)hktgi_mskm_svc_kei_no_list.get(tmpIndex)).typeModelData(subkey);` |

### Block 5.10 — ELSE-IF `(key.equals("マンション名"))` [マンション名 = "Building Name"] (L1343)

> Field: Building Name (hktgi_mans_nm) — name of a condominium/apartment building.

| # | Type | Code |
|---|------|------|
| 1 | IF | `if(subkey.equalsIgnoreCase("value"))` |
| 2 | RETURN | `return String.class;` |
| 3 | ELSE_IF | `else if(subkey.equalsIgnoreCase("state"))` |
| 4 | RETURN | `return String.class;` |

### Block 5.11 — ELSE-IF `(key.equals("住所"))` [住所 = "Address"] (L1351)

> Field: Address (hktgi_mans_ad_nm) — residential address of the customer.

| # | Type | Code |
|---|------|------|
| 1 | IF | `if(subkey.equalsIgnoreCase("value"))` |
| 2 | RETURN | `return String.class;` |
| 3 | ELSE_IF | `else if(subkey.equalsIgnoreCase("state"))` |
| 4 | RETURN | `return String.class;` |

### Block 5.12 — ELSE-IF `(key.equals("異動区分選択画面遷移パターン"))` [異動区分選択画面遷移パターン = "Move Classification Selection Screen Transition Pattern"] (L1359)

> Field: Move Classification Selection Screen Transition Pattern (hktgi_ido_div_seni_ptn) — determines which screen to navigate to based on move classification.

| # | Type | Code |
|---|------|------|
| 1 | IF | `if(subkey.equalsIgnoreCase("value"))` |
| 2 | RETURN | `return String.class;` |
| 3 | ELSE_IF | `else if(subkey.equalsIgnoreCase("state"))` |
| 4 | RETURN | `return String.class;` |

### Block 5.13 — ELSE-IF `(key.equals("H-ID"))` [H-ID = "H-ID"] (L1367)

> Field: H-ID (hktgi_pid) — a customer/home identifier (likely "Home ID" or "Holder ID").

| # | Type | Code |
|---|------|------|
| 1 | IF | `if(subkey.equalsIgnoreCase("value"))` |
| 2 | RETURN | `return String.class;` |
| 3 | ELSE_IF | `else if(subkey.equalsIgnoreCase("state"))` |
| 4 | RETURN | `return String.class;` |

### Block 5.14 — ELSE-IF `(key.equals("M-ID"))` [M-ID = "M-ID"] (L1375)

> Field: M-ID (hktgi_mans_id) — a customer/tenant identifier (likely "Member ID" or "Mansion ID").

| # | Type | Code |
|---|------|------|
| 1 | IF | `if(subkey.equalsIgnoreCase("value"))` |
| 2 | RETURN | `return String.class;` |
| 3 | ELSE_IF | `else if(subkey.equalsIgnoreCase("state"))` |
| 4 | RETURN | `return String.class;` |

### Block 5.15 — ELSE-IF `(key.equals("C-ID"))` [C-ID = "C-ID"] (L1383)

> Field: C-ID (hktgi_catid) — a customer/account identifier (likely "Contractor ID" or "Category ID").

| # | Type | Code |
|---|------|------|
| 1 | IF | `if(subkey.equalsIgnoreCase("value"))` |
| 2 | RETURN | `return String.class;` |
| 3 | ELSE_IF | `else if(subkey.equalsIgnoreCase("state"))` |
| 4 | RETURN | `return String.class;` |

### Block 5.16 — ELSE-IF `(key.equals("外部システムコード"))` [外部システムコード = "External System Code"] (L1391)

> Field: External System Code (hktgi_syscd) — code identifying an external/integrated system.

| # | Type | Code |
|---|------|------|
| 1 | IF | `if(subkey.equalsIgnoreCase("value"))` |
| 2 | RETURN | `return String.class;` |
| 3 | ELSE_IF | `else if(subkey.equalsIgnoreCase("state"))` |
| 4 | RETURN | `return String.class;` |

**Block 6** — RETURN (no match fallback) `(default return)` (L1399)

> If no field key matches any of the 20 defined conditions, return null. This handles unknown or unrecognized field keys gracefully.

| # | Type | Code |
|---|------|------|
| 1 | RETURN | `return null;` // if no matching property exists, return null |

## 7. Glossary

| Term | Type | Business Meaning |
|------|------|------------------|
| `hktgi_sysid` | Field | System ID — internal system identifier for the telecom service platform |
| `hktgi_svc_kei_no` | Field | Service Contract Number — the primary service contract tracking number |
| `hktgi_ido_div` | Field | Move Classification — classifies the type of account migration or change (e.g., transfer, cancellation, modification) |
| `hktgi_ido_rsn_cd` | Field | Move Reason Code — a coded reason for an account move/change; stored as an indexed list |
| `hktgi_ido_rsn_memo` | Field | Move Reason Memo — free-text memo explaining the move reason |
| `hktgi_op_svc_kei_no` | Field | Option Service Contract Number — contract number for optional/add-on services; stored as an indexed list |
| `hktgi_tran_div` | Field | Processing Classification — indicates the processing type/category for the request |
| `hktgi_mskm_no` | Field | Application Number — the tracking number for a service application/request |
| `hktgi_mskm_dtl_no` | Field | Application Detail Number — line-item detail number within an application |
| `hktgi_tokutei_id_kmk_nm` | Field | Specific ID Item Name — name of a specific ID attribute field in the form |
| `hktgi_tokutei_id_kmk_value` | Field | Specific ID Item Value — the value of a specific ID attribute field |
| `hktgi_popup_mode` | Field | Popup Mode — indicates the current popup display mode for the form |
| `hktgi_mskm_svc_kei_no` | Field | Simultaneous Application Service Contract Number — service contract numbers applied simultaneously; stored as an indexed list |
| `hktgi_mans_nm` | Field | Building Name — name of a condominium or apartment building |
| `hktgi_mans_ad_nm` | Field | Address — residential address of the customer |
| `hktgi_ido_div_seni_ptn` | Field | Move Classification Selection Screen Transition Pattern — determines which screen to navigate to based on move classification |
| `hktgi_pid` | Field | H-ID — home/holder identifier for the customer |
| `hktgi_mans_id` | Field | M-ID — member/mansion identifier for the customer |
| `hktgi_catid` | Field | C-ID — contractor/category identifier for the customer |
| `hktgi_syscd` | Field | External System Code — code identifying an external/integrated system |
| `X33VDataTypeList` | Framework | X33V framework list container — holds a list of typed data beans for repeatable form fields |
| `X33VDataTypeStringBean` | Framework | X33V framework string-type data bean — represents a typed string field within a list, used for delegating type resolution in indexed array fields |
| `X33V` | Acronym | Fujitsu's Web Client framework (X33 View) — the view data binding framework used throughout the application |
| `key` | Parameter | Business field label — human-readable name used to identify which form field's type is being queried |
| `subkey` | Parameter | Data facet specifier — indicates whether "value" (data content type) or "state" (UI state type) is being queried |
| `String.class` | Type | Java class descriptor for string data — returned for all simple scalar fields |
| `Integer.class` | Type | Java class descriptor for integer data — returned for list size queries on array fields (wildcard "*") |
| Screen | UI Component | The web application screen associated with module KKA15301SF, handling service contract and move management |
