# Business Logic — KKA14201SFLogic.setDataUpd() [208 LOC]

| Field | Value |
|-------|-------|
| Fully Qualified Name | `eo.web.webview.KKA14201SF.KKA14201SFLogic` |
| Layer | Web Logic (Controller) |
| Module | `KKA14201SF` (Package: `eo.web.webview.KKA14201SF`) |

## 1. Role

### KKA14201SFLogic.setDataUpd()

This method is the **update-mode DataBean configuration handler** for the My Home Page information change screen (KKW02504SF). It is invoked exclusively when the processing section discriminator (`trandiv`) indicates a "change" (変更) operation within the `actionUpdMyHPInfo()` flow. Its primary business responsibility is to **compare the user's new My HP capacity and access analysis selections against the pre-update stored values**, and if any differences are detected, to populate the screen DataBean with all fields required for downstream service contract processing (submission code, timestamps, capacity, validation values, aging targets, and progress memo).

The method implements a **detect-then-construct** pattern: first it performs a change detection pass by comparing the selected My HP capacity code and access analysis name against their before-update counterparts, and also checks whether the URL change discriminator signals a modification. If no change is found, it short-circuits and returns `false` (with no DataBean fields written), allowing the caller to display a "no changes" notification. If changes are detected, it proceeds to fully configure the DataBean with operational metadata — service start/end dates, cancellation reason codes (always set to "installed" since this is a modification flow), validated capacity values, and aging/target indicators — then returns `true` to signal that the DataBean is ready for the subsequent service invocation.

Design patterns used include: early-exit guard (null-safe index access with default value 1 for accsSelIndex), delegation to helper methods for change-type classification (`getUpd_kind_hp`, `getUpd_kind_accs`, `getUpd_kind_url`), and a builder-like accumulation of DataBean setter calls.

## 2. Processing Pattern (Detailed Business Logic)

```mermaid
flowchart TD
    START(["setDataUpd()"])
    START --> GET_BEAN["Get ServiceFormBean"]
    GET_BEAN --> GET_SYS_DATE["Get sysDateDtms from JCCWebCommon.getSysDateTimeStamp"]
    GET_SYS_DATE --> GET_OPE_DATE["Get opeDate from JCCWebCommon.getOpeDate"]
    GET_OPE_DATE --> GET_OPE_DTMS["Get opeDateDtms from JCCWebCommon.getOpeDateTimeStamp"]
    GET_OPE_DTMS --> GET_HP_CAPA["Get hpCapaSelIndex from HP_CAPA_INFO DataBean"]
    GET_HP_CAPA --> GET_HP_CODE["Get hp_capa_sel code from CD_DIV_LIST_01"]
    GET_HP_CODE --> SET_HP_CAPA_CD["Set HP_CAPA_CD in bean"]
    SET_HP_CAPA_CD --> PARSE_HP_CAPA["Parse hp_capa_sel to int hp_capa_sel_val"]
    PARSE_HP_CAPA --> GET_HP_NAME["Get hp_capa_nm_sel name from CD_DIV_NM_LIST_01"]
    GET_HP_NAME --> SET_HP_CAPA_NM["Set HP_CAPA_NM in bean"]
    SET_HP_CAPA_NM --> GET_ACCSS_LIST["Get accsSelIndex from ACCSS_BNSK_INFO DataBean"]
    GET_ACCSS_LIST --> GET_ACCSS_CODE["Get accss_bnsk_sel code from CD_DIV_LIST_01"]
    GET_ACCSS_CODE --> SET_ACCSS_CD["Set ACCSS_BNSK_CD in bean"]
    SET_ACCSS_CD --> GET_ACCSS_NM["Get accss_bnsk_nm_sel name from CD_DIV_NM_LIST_01"]
    GET_ACCSS_NM --> SET_ACCSS_NM["Set ACCSS_BNSK_NM in bean"]
    SET_ACCSS_NM --> CALL_GET_UPD_URL["Call getUpd_kind_url"]
    CALL_GET_UPD_URL --> SET_UPD_URL["Set UPD_KIND_URL in bean"]
    SET_UPD_URL --> GET_HP_BF["Get hp_capa_bf pre-update value from bean"]
    GET_HP_BF --> PARSE_HP_BF["Parse hp_capa_bf to int hp_capa_bf_val"]
    PARSE_HP_BF --> GET_ACCS_BF["Get accss_bnsk_nm_bf pre-update name from bean"]
    GET_ACCS_BF --> INIT_SAME_FLG["same_flg = false"]
    INIT_SAME_FLG --> COND_HP_CAPA{hp_capa_bf_val != hp_capa_sel_val}
    COND_HP_CAPA -->|true| SET_SAME_TRUE1["same_flg = true"]
    SET_SAME_TRUE1 --> COND_ACCS_NM{same_flg == false AND accss_bnsk_nm_bf changed}
    COND_HP_CAPA -->|false| COND_ACCS_NM
    COND_ACCS_NM -->|true| SET_SAME_TRUE2["same_flg = true"]
    SET_SAME_TRUE2 --> COND_URL{same_flg == false AND UPD_URL_U == upd_kind_url}
    COND_ACCS_NM -->|false| COND_URL
    COND_URL -->|true| SET_SAME_TRUE3["same_flg = true"]
    SET_SAME_TRUE3 --> EARLY_EXIT{same_flg == false}
    COND_URL -->|false| EARLY_EXIT
    SET_SAME_TRUE1 --> EARLY_EXIT
    SET_SAME_TRUE2 --> EARLY_EXIT
    SET_SAME_TRUE3 --> EARLY_EXIT
    EARLY_EXIT -->|true| RETURN_FALSE["Return false - no changes"]
    EARLY_EXIT -->|false| CALL_GET_UPD_HP["Call getUpd_kind_hp with old and new capacity"]
    CALL_GET_UPD_HP --> SET_UPD_HP["Set UPD_KIND_HP in bean"]
    SET_UPD_HP --> CALL_GET_UPD_ACCS["Call getUpd_kind_accs with selected access analysis"]
    CALL_GET_UPD_ACCS --> SET_UPD_ACCS["Set UPD_KIND_ACCS in bean"]
    SET_UPD_ACCS --> SET_MSSB["Set MSKM_SBT_CD to application code"]
    SET_MSSB --> SET_MSMDTM["Set MSKM_UK_DTM to opeDateDtms"]
    SET_MSMDTM --> SET_MSSYMD["Set MSKM_YMD to opeDate"]
    SET_MSSYMD --> SET_SKBT["Set CONSMBSN_MSKM_STAT_SKBT_CD to approved"]
    SET_SKBT --> SET_KZKW["Set KZKWRK_REQYMD to opeDate"]
    SET_KZKW --> SET_CAPA["Set CAPA to hp_capa_sel_val"]
    SET_CAPA --> CALC_ADD_CAPA["Calc add_capa_val = hp_capa_sel_val - hp_capa_mryo_val"]
    CALC_ADD_CAPA --> COND_ADD_CAPA{add_capa_val < 0}
    COND_ADD_CAPA -->|true| SET_ZERO["add_capa_val = 0 for free capacity"]
    SET_ZERO --> SET_ADD_CAPA["Set ADD_CAPA in bean"]
    COND_ADD_CAPA -->|false| SET_ADD_CAPA
    SET_ADD_CAPA --> SET_SVC_STAYMD["Set SVC_STAYMD to opeDate"]
    SET_SVC_STAYMD --> SET_SVC_ENDYMD["Set SVC_ENDYMD to opeDate"]
    SET_SVC_ENDYMD --> SET_SVC_DLRE["Set SVC_DLRE_CD to installed"]
    SET_SVC_DLRE --> SET_VALS["Set validation values for HP types"]
    SET_VALS --> SET_AGING["Set AGING_SBT_CD_URL for URL"]
    SET_AGING --> GET_DOMAIN["Get domain and account from CHG_HPAD_*"]
    GET_DOMAIN --> SET_AGING_TG["Set AGING_TG_VALUE_URL to domain plus account"]
    SET_AGING_TG --> GET_DOMAIN_DSL["Get old domain and account from HPAD_*"]
    GET_DOMAIN_DSL --> SET_AGING_DSL["Set AGING_TG_VALUE_URL_DSL for cancellation"]
    SET_AGING_DSL --> SET_IDO_DTM["Set IDO_DTM to sysDateDtms"]
    SET_IDO_DTM --> SET_PRG_STAT["Set PRG_STAT to operation set complete"]
    SET_PRG_STAT --> SET_PRG_TKJK["Set PRG_TKJK_1 to MyHP info change memo"]
    SET_PRG_TKJK --> RETURN_TRUE["Return true - changes detected"]
```

**Constant-resolved branch semantics:**

| Condition | Constant | Resolved Value | Business Meaning |
|-----------|----------|----------------|------------------|
| `UPD_HP_YRYO` | Change type (HP capacity) | `"1"` | Becoming paid (free-to-paid upgrade) |
| `UPD_HP_MRYO` | Change type (HP capacity) | `"2"` | Becoming free (paid-to-free downgrade) |
| `UPD_HP_YKEIZK` | Change type (HP capacity) | `"3"` | Paid continuation |
| `UPD_HP_MKEIZK` | Change type (HP capacity) | `"4"` | Free continuation |
| `UPD_HP_M` | Change type (HP capacity) | `"5"` | No change |
| `UPD_ACCS_YRYO` | Change type (Access analysis) | `"1"` | Access analysis becomes paid |
| `UPD_ACCS_MRYO` | Change type (Access analysis) | `"2"` | Access analysis becomes free |
| `UPD_ACCS_M` | Change type (Access analysis) | `"5"` | No change |
| `UPD_URL_U` | Change type (URL) | `"1"` | URL changed |
| `UPD_URL_M` | Change type (URL) | `"5"` | URL unchanged |
| `MSKM_SBT_CD_OPMK` | Submission subject | `"00026"` | Application (operational) subject code |
| `MSKM_STAT_SKBT_CD_SHONIN` | Submission status | From `JKKCommonConst` | Approved status |
| `SVC_DLRE_CD_TUJYO` | Service cancellation reason | From `JKKCommonConst` | Installed (not cancelled) |
| `AGING_SBT_CD_URL` | Aging subject | From `JKKCommonConst` | URL aging subject code |
| `IDO_DIV_SINKI` | Displacement section | `JKKCommonConst.IDO_DIV_VALUE_00001` | New contract |
| `IDO_DIV_TSUIKA` | Displacement section | `JKKCommonConst.IDO_DIV_VALUE_00002` | Service addition |
| `PRG_STAT_OP_SET_FIN` | Progress state | `JKKCommonConst.PRG_STAT_CD_5102` | Operation setting complete |
| `UM_U` | Update mode | `JKKCommonConst.UM_U` | "U" = Update (change) indicator |
| `CAPA_ZERO_MASK` | Capacity zero mask | `4` | Left-zero-padding mask for capacity |

## 3. Parameter Analysis

| No | Parameter Name | Type | Business Description |
|----|---------------|------|---------------------|
| - | (none) | - | This is a private method with no external parameters. All data is sourced from the instance-bound ServiceFormBean and instance fields. |
| - | `bean` (local) | `X31SDataBeanAccess` | The screen DataBean obtained via `super.getServiceFormBean()`. Serves as the source of user-submitted form values (HP capacity selection, access analysis selection, URL fields) and the target for populated fields needed by downstream service processing. |
| - | `inputMap` (field) | `HashMap<String, Object>` | Instance-level map for AP server input data. Read indirectly via the DataBean access layer. |
| - | `outputMap` (field) | `HashMap<String, Object>` | Instance-level map for AP server processing results. Not directly read by this method. |
| - | `hp_capa_mryo_val` (field) | `int` | Free-tier My HP capacity threshold value. Used as the boundary to classify capacity changes as free/paid transitions. Initialized to `0`. |
| - | `sbop_hp_flg` (field) | `boolean` | Flag indicating whether sub-operation service contract data exists for My HP capacity. Used by `getUpd_kind_hp()` to determine change-type classification logic. |
| - | `sbop_accs_flg` (field) | `boolean` | Flag indicating whether sub-operation service contract data exists for access analysis. Used by `getUpd_kind_accs()` to determine change-type classification logic. |

## 4. CRUD Operations / Called Services

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

| CRUD | SC / CBS | SC Code | Entity / DB | Operation Description |
|------|----------|---------|-------------|----------------------|
| R | `JCCWebCommon.getSysDateTimeStamp` | JCCWebCommon | - | Gets system date-time stamp string for `sysDateDtms` (used for IDO_DTM displacement timestamp) |
| R | `JCCWebCommon.getOpeDate` | JCCWebCommon | - | Gets operation date string for `opeDate` (used as submission date, service start/end date, follow-up work request date) |
| R | `JCCWebCommon.getOpeDateTimeStamp` | JCCWebCommon | - | Gets operation date-time stamp for `opeDateDtms` (used as submission date-time, MSKM_UK_DTM) |
| R | `OneStopDataBeanAccessArray.getDataBean` | OneStopDataBeanAccessArray | - | Retrieves typed DataBean from array by index (HP capacity info and access analysis info) |
| R | `OneStopDataBeanAccess.sendMessageString` | OneStopDataBeanAccess | - | Reads selected index value, selected code, and selected name from DataBean entries (HP capacity dropdown, access analysis dropdown) |
| R | `KKA14201SFLogic.getUpd_kind_url` | KKA14201SFLogic | - | Determines URL change type by comparing pre-update account with change-info account |
| R | `KKA14201SFLogic.getUpd_kind_hp` | KKA14201SFLogic | - | Determines HP capacity change type (free-to-paid, paid-to-free, continuation, no-change) based on old vs. new capacity and sbop_hp_flg |
| R | `KKA14201SFLogic.getUpd_kind_accs` | KKA14201SFLogic | - | Determines access analysis change type (becoming paid, becoming free, no-change) based on selected value and sbop_accs_flg |
| W | `X31SDataBeanAccess.sendMessageString` (SET) | (local bean) | Screen DataBean | Writes all processed fields to the DataBean: HP capacity code, HP capacity name, access analysis code, access analysis name, update kind fields (URL, HP, access), submission codes and timestamps, capacity values, validation values, aging target values, displacement timestamp, progress state, and progress memo |

## 5. Dependency Trace

| # | Caller (Screen/Batch) | Call Chain (Full Path to this Method) | Terminal (SC / CRUD / Entity) |
|---|----------------------|--------------------------------------|-------------------------------|
| 1 | `KKA14201SFLogic.actionUpdMyHPInfo()` | `actionUpdMyHPInfo()` -> checks `trandiv == "change"` -> `setDataUpd()` | `sendMessageString [W] ScreenDataBean (multiple fields)` |

**Caller context:** The sole caller is `actionUpdMyHPInfo()`, the update-branch handler for the My Home Page information change screen. When the processing section (`trandiv`) equals "change" (変更), `actionUpdMyHPInfo()` invokes `setDataUpd()`. If `setDataUpd()` returns `true` (changes detected), the caller proceeds to map the DataBean via `setMappedKKSV0008` and invokes the service component `"KKSV0008" / "KKSV0008OP"`. If it returns `false`, a "no changes" message is displayed and the flow exits.

**Terminal operations:** All terminal operations from this method are `sendMessageString` writes to the local `X31SDataBeanAccess` bean — setting HP capacity code, HP capacity name, access analysis code, access analysis name, update kind indicators (URL, HP capacity, access analysis), submission subject code, submission date-time, submission date, approval status code, follow-up work request date, capacity, additional capacity, service start date, service end date, cancellation reason code, validation values, aging subject code, aging target values (change URL and old URL), displacement date-time, progress state, and progress memo. No direct SC calls or database operations are performed within this method.

## 6. Per-Branch Detail Blocks

### Block 1 — INIT [Get beans and timestamps] (L7150)

Retrieves the ServiceFormBean, system date-time stamp, operation date, and operation date-time stamp. These values form the temporal foundation for all downstream DataBean writes.

| # | Type | Code |
|---|------|------|
| 1 | CALL | `bean = super.getServiceFormBean()` // Get ServiceFormBean |
| 2 | CALL | `sysDateDtms = JCCWebCommon.getSysDateTimeStamp()` // Get system date-time stamp |
| 3 | CALL | `opeDate = JCCWebCommon.getOpeDate(this, null)` // Get operation date |
| 4 | CALL | `opeDateDtms = JCCWebCommon.getOpeDateTimeStamp(this, null)` // Get operation date-time stamp |

### Block 2 — IF [HP capacity selection extraction] (L7157)

Extracts the selected My HP capacity from the `HP_CAPA_INFO` DataBean array. Parses the selected index, retrieves the corresponding code and name, and writes them to the bean.

| # | Type | Code |
|---|------|------|
| 1 | CALL | `hplist = bean.getDataBeanArray("HP_CAPA_INFO")` // Get HP capacity info array |
| 2 | CALL | `hpBean = hplist.getDataBean(0)` // Get first HP capacity bean |
| 3 | CALL | `hpCapaSelIndex = Integer.parseInt(hpBean.sendMessageString("INDEX_01", GET_VALUE))` // Get selected index |
| 4 | CALL | `hp_capa_sel = hpBean.sendMessageString("CD_DIV_LIST_01", GET_VALUE, hpCapaSelIndex)` // Get code |
| 5 | SET | `bean.sendMessageString("HP_CAPA_CD", SET_VALUE, hp_capa_sel)` // Write code to bean |
| 6 | IF | `hp_capa_sel != null && !"".equals(hp_capa_sel)` (L7173) |
| 6.1 | SET | `hp_capa_sel_val = Integer.parseInt(hp_capa_sel)` // Parse to int (L7175) |
| 7 | CALL | `hp_capa_nm_sel = hpBean.sendMessageString("CD_DIV_NM_LIST_01", GET_VALUE, hpCapaSelIndex)` // Get name (L7183) |
| 8 | SET | `bean.sendMessageString("HP_CAPA_NM", SET_VALUE, hp_capa_nm_sel)` // Write name to bean (L7185) |

### Block 3 — IF [Access analysis selection extraction] (L7192)

Extracts the selected access analysis from the `ACCSS_BNSK_INFO` DataBean array. Uses a default index of 1 (defensive null-safe handling per IT1-2013-0000907 modification).

| # | Type | Code |
|---|------|------|
| 1 | CALL | `accslist = bean.getDataBeanArray("ACCSS_BNSK_INFO")` // Get access analysis array |
| 2 | CALL | `accsBean = accslist.getDataBean(0)` // Get first access analysis bean |
| 3 | SET | `accsSelIndex = 1` // Default index (L7195) |
| 4 | IF | `accsBean.sendMessageString("INDEX_01", GET_VALUE) != null` (L7196) |
| 4.1 | SET | `accsSelIndex = Integer.parseInt(accsBean.sendMessageString("INDEX_01", GET_VALUE))` (L7198) |
| 5 | CALL | `accss_bnsk_sel = accsBean.sendMessageString("CD_DIV_LIST_01", GET_VALUE, accsSelIndex)` // Get code (L7204) |
| 6 | SET | `bean.sendMessageString("ACCSS_BNSK_CD", SET_VALUE, accss_bnsk_sel)` // Write code to bean |
| 7 | CALL | `accss_bnsk_nm_sel = accsBean.sendMessageString("CD_DIV_NM_LIST_01", GET_VALUE, accsSelIndex)` // Get name (L7209) |
| 8 | CALL | `accss_bnsk_nm = accsBean.sendMessageString("NM_LIST_01", GET_VALUE, accsSelIndex)` // Get non-dash name (L7213) — IT1-2013-0001438 |
| 9 | SET | `bean.sendMessageString("ACCSS_BNSK_NM", SET_VALUE, accss_bnsk_nm_sel)` // Write name to bean |

### Block 4 — INIT [URL change-type classification] (L7218)

Calls the helper method `getUpd_kind_url()` to determine whether the URL has changed, and writes the result to the DataBean.

| # | Type | Code |
|---|------|------|
| 1 | CALL | `upd_kind_url = getUpd_kind_url()` // Determine URL change type (L7218) |
| 2 | SET | `bean.sendMessageString("UPD_KIND_URL", SET_VALUE, upd_kind_url)` // Write URL update kind |

### Block 5 — INIT [Pre-update value extraction] (L7222)

Retrieves the before-update HP capacity and access analysis name from the bean for change detection comparison.

| # | Type | Code |
|---|------|------|
| 1 | CALL | `hp_capa_bf = bean.sendMessageString("HP_CAPA", GET_VALUE)` // Get pre-update HP capacity (L7223) |
| 2 | SET | `hp_capa_bf_val = 0` // Initialize to 0 (L7225) |
| 3 | IF | `hp_capa_bf != null && !"".equals(hp_capa_bf)` (L7226) |
| 3.1 | SET | `hp_capa_bf_val = Integer.parseInt(hp_capa_bf)` // Parse to int (L7228) |
| 4 | CALL | `accss_bnsk_nm_bf = bean.sendMessageString("ACCSS_BNSK", GET_VALUE)` // Get pre-update access analysis name (L7230) |

### Block 6 — IF [Change detection - HP capacity] (L7234)

Compares the pre-update capacity integer against the selected capacity integer. If different, marks `same_flg = true` indicating a change was detected.

| # | Type | Code |
|---|------|------|
| 1 | SET | `same_flg = false` // Initialize change flag (L7233) |
| 2 | IF | `hp_capa_bf_val != hp_capa_sel_val` (L7234) |
| 2.1 | SET | `same_flg = true` // HP capacity changed (L7236) |

### Block 7 — IF [Change detection - Access analysis name] (L7241)

Compares the pre-update access analysis name against the selected non-dash name (per IT1-2013-0001438 fix). The fix changed the comparison from `accss_bnsk_nm_sel` (dash-separated name list) to `accss_bnsk_nm` (non-dash name list) for correct change detection.

| # | Type | Code |
|---|------|------|
| 1 | IF | `same_flg == false AND accss_bnsk_nm_bf != null AND !accss_bnsk_nm_bf.equals(accss_bnsk_nm)` (L7241) |
| 1.1 | SET | `same_flg = true` // Access analysis name changed (L7243) |

### Block 8 — IF [Change detection - URL change] (L7244)

Checks whether the URL change-type classifier returned "change" (`UPD_URL_U = "1"`). If so, marks a change as detected.

| # | Type | Code |
|---|------|------|
| 1 | IF | `same_flg == false AND UPD_URL_U("1") == upd_kind_url` (L7244) |
| 1.1 | SET | `same_flg = true` // URL changed (L7246) |

### Block 9 — IF [Early exit - no changes] (L7250)

If `same_flg` is still `false` after all change detection checks, return `false` immediately. No DataBean fields are written. The caller will display a "no changes" message.

| # | Type | Code |
|---|------|------|
| 1 | IF | `same_flg == false` (L7250) |
| 1.1 | RETURN | `return false` // No changes detected, exit early (L7252) |

### Block 10 — IF [HP capacity update kind classification] (L7256)

Determines the HP capacity change type. Default is "no change" (`UPD_HP_M = "5"`). If the capacity values differ, delegates to `getUpd_kind_hp()` which classifies the transition as free-to-paid, paid-to-free, continuation, or no-change based on `hp_capa_mryo_val` (free threshold) and `sbop_hp_flg` (sub-operation flag).

| # | Type | Code |
|---|------|------|
| 1 | SET | `upd_kind_hp = UPD_HP_M("5")` // Default: no change (L7257) |
| 2 | IF | `hp_capa_bf_val != hp_capa_sel_val` (HP capacity changed) (L7259) |
| 2.1 | CALL | `upd_kind_hp = getUpd_kind_hp(hp_capa_bf_val, hp_capa_sel_val)` // Classify change type (L7261) |
| 3 | SET | `bean.sendMessageString("UPD_KIND_HP", SET_VALUE, upd_kind_hp)` // Write HP update kind |

### Block 11 — INIT [Access analysis update kind classification] (L7264)

Determines the access analysis change type via `getUpd_kind_accs()`. Delegates to the helper which checks `sbop_accs_flg` and whether the selected access analysis equals the "update" indicator (`UM_U`).

| # | Type | Code |
|---|------|------|
| 1 | CALL | `upd_kind_accs = getUpd_kind_accs(accss_bnsk_sel)` // Classify access analysis change type |
| 2 | SET | `bean.sendMessageString("UPD_KIND_ACCS", SET_VALUE, upd_kind_accs)` // Write access update kind |

### Block 12 — SET [Submission metadata fields] (L7267)

Writes all submission-related metadata fields to the DataBean. These fields identify the submission as an operational application, record timestamps, and set the submission status to "approved".

| # | Type | Code |
|---|------|------|
| 1 | SET | `bean.sendMessageString("MSKM_SBT_CD", SET_VALUE, MSKM_SBT_CD_OPMK("00026"))` // Submission subject: application (L7267) |
| 2 | SET | `bean.sendMessageString("MSKM_UK_DTM", SET_VALUE, opeDateDtms)` // Submission date-time (L7269) |
| 3 | SET | `bean.sendMessageString("MSKM_YMD", SET_VALUE, opeDate)` // Submission date = operation date (L7271) |
| 4 | SET | `bean.sendMessageString("CONSMBSN_MSKM_STAT_SKBT_CD", SET_VALUE, MSKM_STAT_SKBT_CD_SHONIN)` // Submission status: approved (L7273) |
| 5 | SET | `bean.sendMessageString("KZKWRK_REQYMD", SET_VALUE, opeDate)` // Follow-up work request date = operation date (L7275) |

### Block 13 — SET [Capacity fields] (L7277)

Writes the selected capacity and computes the additional capacity (selected minus free threshold), clamping negative values to 0 (meaning free).

| # | Type | Code |
|---|------|------|
| 1 | SET | `bean.sendMessageString("CAPA", SET_VALUE, hp_capa_sel_val + "")` // Selected capacity (L7277) |
| 2 | SET | `add_capa_val = hp_capa_sel_val - hp_capa_mryo_val` // Additional capacity calculation (L7279) |
| 3 | IF | `add_capa_val < 0` (L7281) |
| 3.1 | SET | `add_capa_val = 0` // Clamp to 0: free capacity (L7283) |
| 4 | SET | `String add_capa = add_capa_val + ""` // Convert to string (L7285) |
| 5 | SET | `bean.sendMessageString("ADD_CAPA", SET_VALUE, add_capa)` // Additional capacity (L7287) |

### Block 14 — SET [Service lifecycle dates] (L7290)

Sets the service start date, service end date, and service cancellation reason code. The cancellation reason is always set to "installed" since this is a modification flow (not a cancellation flow).

| # | Type | Code |
|---|------|------|
| 1 | SET | `bean.sendMessageString("SVC_STAYMD", SET_VALUE, opeDate)` // Service start date (L7290) |
| 2 | SET | `bean.sendMessageString("SVC_ENDYMD", SET_VALUE, opeDate)` // Service end date (L7292) |
| 3 | SET | `bean.sendMessageString("SVC_DLRE_CD", SET_VALUE, SVC_DLRE_CD_TUJYO)` // Cancellation reason: installed (L7297) |

### Block 15 — SET [Validation values] (L7300)

Writes all HP capacity change-type validation values to the DataBean for downstream verification. These represent the six possible change types: become paid, become free, paid continuation, free continuation, URL change, URL no-change.

| # | Type | Code |
|---|------|------|
| 1 | SET | `bean.sendMessageString("VAL_YRYO", SET_VALUE, UPD_HP_YRYO("1"))` // Become paid (L7300) |
| 2 | SET | `bean.sendMessageString("VAL_MRYO", SET_VALUE, UPD_HP_MRYO("2"))` // Become free (L7301) |
| 3 | SET | `bean.sendMessageString("VAL_YKEIZK", SET_VALUE, UPD_HP_YKEIZK("3"))` // Paid continuation (L7302) |
| 4 | SET | `bean.sendMessageString("VAL_MKEIZK", SET_VALUE, UPD_HP_MKEIZK("4"))` // Free continuation (L7303) |
| 5 | SET | `bean.sendMessageString("VAL_U", SET_VALUE, UPD_URL_U("1"))` // URL changed (L7304) |
| 6 | SET | `bean.sendMessageString("VAL_M", SET_VALUE, UPD_URL_M("5"))` // URL unchanged (L7305) |

### Block 16 — SET [Aging subject and target values] (L7307)

Sets the aging subject code for URL, then retrieves the change-domain and change-account, concatenating them into an aging target value. Also retrieves the old domain and old account for the cancellation aging target.

| # | Type | Code |
|---|------|------|
| 1 | SET | `bean.sendMessageString("AGING_SBT_CD_URL", SET_VALUE, AGING_SBT_CD_URL)` // Aging subject: URL (L7307) |
| 2 | CALL | `domain = bean.sendMessageString("CHG_HPAD_DOMAIN", GET_VALUE)` // Change-domain (L7310) |
| 3 | CALL | `accont = bean.sendMessageString("CHG_HPAD_ACCOUNT", GET_VALUE)` // Change-account (L7311) |
| 4 | SET | `bean.sendMessageString("AGING_TG_VALUE_URL", SET_VALUE, domain + accont)` // Concatenated change URL (L7314) |
| 5 | CALL | `domain_dsl = bean.sendMessageString("HPAD_DOMAIN", GET_VALUE)` // Old domain (L7317) |
| 6 | CALL | `accont_dsl = bean.sendMessageString("HPAD_ACCOUNT", GET_VALUE)` // Old account (L7318) |
| 7 | SET | `bean.sendMessageString("AGING_TG_VALUE_URL_DSL", SET_VALUE, domain_dsl + accont_dsl)` // Old URL for cancellation aging (L7320) |

### Block 17 — SET [Displacement date-time] (L7324)

Sets the displacement timestamp from the system date-time.

| # | Type | Code |
|---|------|------|
| 1 | SET | `bean.sendMessageString("IDO_DTM", SET_VALUE, sysDateDtms)` // Displacement date-time (L7324) |

### Block 18 — SET [Progress state] (L7327)

Sets the progress state to "operation setting complete" and writes a progress memo indicating "My HP info change".

| # | Type | Code |
|---|------|------|
| 1 | SET | `bean.sendMessageString("PRG_STAT", SET_VALUE, PRG_STAT_OP_SET_FIN)` // Progress state: operation set complete (L7327) |
| 2 | SET | `bean.sendMessageString("PRG_TKJK_1", SET_VALUE, MYHP_INFO("MyHP info") + CHGE("change"))` // Progress memo (L7331) |

### Block 19 — RETURN [Success] (L7334)

| # | Type | Code |
|---|------|------|
| 1 | RETURN | `return true` // Changes detected, DataBean populated |

## 7. Glossary

| Term | Type | Business Meaning |
|------|------|------------------|
| `hp_capa_sel` | Field | My HP capacity code — the user's selected home page storage capacity selection code from the pulldown |
| `hp_capa_nm_sel` | Field | My HP capacity name (with dashes) — human-readable label with dash separators, for display |
| `accss_bnsk_sel` | Field | Access analysis code — the user's selected access analysis (usage report) type code |
| `accss_bnsk_nm` | Field | Access analysis name (no dashes) — human-readable label without dash separators, used for change comparison |
| `accss_bnsk_nm_bf` | Field | Access analysis name before update — the previously stored access analysis name for diff comparison |
| `hp_capa_bf` | Field | HP capacity before update — the previously stored My HP capacity value for diff comparison |
| `upd_kind_url` | Field | URL update kind — change type indicator for URL: "1" = changed, "5" = unchanged |
| `upd_kind_hp` | Field | HP capacity update kind — change type classification: "1"=become paid, "2"=become free, "3"=paid continuation, "4"=free continuation, "5"=no change |
| `upd_kind_accs` | Field | Access analysis update kind — change type classification: "1"=become paid, "2"=become free, "5"=no change |
| `same_flg` | Field | Same flag — boolean indicating whether any field changed (true = changed, false = identical) |
| `MSKM_SBT_CD_OPMK` | Constant | Submission subject code for application (operational): "00026" |
| `MSKM_STAT_SKBT_CD_SHONIN` | Constant | Submission status identification code for approved — the application status set to "approved" upon data bean setup |
| `SVC_DLRE_CD_TUJYO` | Constant | Service cancellation reason: "installed" — indicates the service remains active (not cancelled) |
| `AGING_SBT_CD_URL` | Constant | Aging subject code for URL — identifies URL as the aging target subject |
| `IDO_DTM` | Field | Displacement date-time — system date-time used for tracking data displacement |
| `PRG_STAT_OP_SET_FIN` | Constant | Progress state: "operation setting complete" (5102) — indicates the operation data setting phase has finished |
| `PRG_TKJK_1` | Field | Progress memo field 1 — displays "My HP info change" as a human-readable progress note |
| `CHG_HPAD_DOMAIN` | Field | Change information domain — the new domain name entered for modification |
| `CHG_HPAD_ACCOUNT` | Field | Change information account — the new account name entered for modification |
| `HPAD_DOMAIN` | Field | Home page access domain — the original/existing domain name |
| `HPAD_ACCOUNT` | Field | Home page access account — the original/existing account name |
| `CAPA` | Field | Capacity — the selected My HP capacity value in integer form |
| `ADD_CAPA` | Field | Additional capacity — the difference between selected capacity and free threshold (clamped to 0 if negative) |
| `SVC_STAYMD` | Field | Service start year-month-day — operation date, marking when the service becomes effective |
| `SVC_ENDYMD` | Field | Service end year-month-day — operation date, marking the service end reference |
| `SKBT_CD` | Acronym | Subject identification code — category classification code used for differentiating submission/contract subject types |
| `OPMK` | Acronym | Application (operational) — refers to operational application processing |
| `SBOP` | Acronym | Sub-operation — refers to sub-operation service contracts (additional/attached contracts) |
| `SBOP_HP_FLG` | Field | Sub-operation service contract flag for My HP capacity — true if a sub-contract exists for HP capacity |
| `SBOP_ACCS_FLG` | Field | Sub-operation service contract flag for access analysis — true if a sub-contract exists for access analysis |
| `TRANDIV` | Field | Processing section discriminator — determines whether the operation is "change" (変更) or "cancellation" (解約) |
| `UM_U` | Constant | Update mode "U" — indicates an update/change operation (vs. insert or delete) |
| `CAPA_ZERO_MASK` | Constant | Capacity zero-padding mask value: 4 — used for zero-filling capacity codes |
| `KKW02504SF` | Screen | My Home Page information change screen — the web screen for modifying My HP capacity and access analysis settings |
| `KKSV0008` | SC Code | Screen Component for My HP info update — the service invoked after `setDataUpd()` succeeds |
| `KKSV0008OP` | SC Code | Operation SC for My HP info update — the operation-side service component called by KKSV0008 |
| `KKW02504SFConst` | Class | My HP info change constant definitions — contains all DataBean key names used in the change flow |
| `X31SDataBeanAccess` | Class | Service Form DataBean access wrapper — provides typed access to screen DataBean entries via sendMessageString |
| `X31CWebConst` | Class | Web-level DataBean constants — defines GET_VALUE and SET_VALUE operation codes for DataBean access |
| `JCCWebCommon` | Class | Web common utility — provides system date/time and operation date/time stamp retrieval methods |
| `sendMessageString` | Method | DataBean value access — reads/writes values by key using GET_VALUE or SET_VALUE operation codes |
