# Business Logic — JKKAdInfChgCC.adUpdChk() [193 LOC]

| Field | Value |
|-------|-------|
| Fully Qualified Name | `com.fujitsu.futurity.bp.custom.common.JKKAdInfChgCC` |
| Layer | CC/Common Component — Business logic coordinator within the address-change component layer |
| Module | `common` (Package: `com.fujitsu.futurity.bp.custom.common`) |

## 1. Role

### JKKAdInfChgCC.adUpdChk()

This method implements the **agreement address change verification and update processing** (契約者住所変更チェック処理), which is the core business operation for updating contract owner residence information when a K-Opticom customer changes their address. Specifically, it handles the resolution and update of both customer agreement consultation records — determining whether the subscription is of **individual type** (個人, `subKojin`) or **corporate type** (法人, `subHojin`), reading both when available, and then selecting the most recently updated record based on the generation registration timestamp (`GENE_ADD_DTM`). Once the appropriate subType is determined, it executes the corresponding content change service component: `ECK0021C010` for individuals or `ECK0031C010` for corporates. If neither subType yields valid data, it throws an `Illegal-Case` exception.

The method implements a **routing/dispatch design pattern**: it first fetches three read-oriented consultation agreements (ECK0011A010, ECK0021A010, ECK0031A010) to gather the necessary data, then performs a type-resolution decision tree, and finally dispatches to a single update-oriented service component (ECK0021C010 or ECK0031C010). Its role in the larger system is as a **shared utility** called by the top-level address update check method (`adUpdAllChk`), which routes to `adUpdChk` whenever the agreement residence update flag (`ksh_upd_um`) or the delivery destination address update flag (`sitei_shs_upd_um`) is true. This makes it an essential node in the address-change fulfillment pipeline for the eo customer core system.

## 2. Processing Pattern (Detailed Business Logic)

```mermaid
flowchart TD
    START(["adUpdChk params"])

    START --> INIT["Initialize condMap, paramMap"]

    INIT --> GET_MAPP["Get JKKAdInfChgMapperCC mapper"]
    GET_MAPP --> GET_SC["Create ServiceComponentRequestInvoker scCall"]

    GET_SC --> ECK11["ECK0011A010 Customer Agreement Consultation mapping"]
    ECK11 --> SC1["scCall.run()"]
    SC1 --> GET11["mapper.getECK0011A010()"]
    GET11 --> CHECK11["mapper.scResultCheck()"]
    CHECK11 --> PUT11["Put RSV_APLY_YMD, UPD_DT_CUST_UPD_DTM_BEF into ck0011"]

    PUT11 --> INDETERM["Determine subType: subKojin, subHojin"]

    INDETERM --> ECK21["ECK0021A010 Customer Individual Consultation mapping"]
    ECK21 --> SC21["scCall.run()"]
    SC21 --> CHECK_RES21{resMap has TEMPLATE_LIST_KEY?}

    CHECK_RES21 -->|true| GET_TEMPL21{templateArrayKojin valid?}
    CHECK_RES21 -->|false| NO_KOJIN["subKojin = false"]

    GET_TEMPL21 -->|true| GETKOJIN["mapper.getECK0021A010() + scResultCheck() + subKojin=true + gene_Kojin"]
    GET_TEMPL21 -->|false| NO_TEMPL21["subKojin = false"]
    NO_KOJIN --> ECK31_PRE["ECK0031A010 Customer Corporate Consultation mapping"]
    NO_TEMPL21 --> ECK31_PRE

    ECK31_PRE --> ECK31["ECK0031A010 Corporate Consultation mapping"]
    ECK31 --> SC31["scCall.run()"]
    SC31 --> CHECK_RES31{resMap has TEMPLATE_LIST_KEY?}

    CHECK_RES31 -->|true| GET_TEMPL31{templateArrayHojin valid?}
    CHECK_RES31 -->|false| NO_HOJIN["subHojin = false"]

    GET_TEMPL31 -->|true| GETHOJIN["mapper.getECK0031A010() + scResultCheck() + subHojin=true + gene_Hojin"]
    GET_TEMPL31 -->|false| NO_TEMPL31["subHojin = false"]
    NO_HOJIN --> COMPARE["Both subType data comparison"]
    NO_TEMPL31 --> COMPARE

    COMPARE --> BOTH_TRUE{subKojin and subHojin?}

    BOTH_TRUE -->|true| COMPARE_DT{gene_Kojin newer than gene_Hojin?}
    BOTH_TRUE -->|false| DISPATCH["Route to determined subType"]

    COMPARE_DT -->|true| IND_NEW["Individual is newer: set subHojin=false"]
    COMPARE_DT -->|false| CORP_NEW["Corporate is newer: set subKojin=false"]
    IND_NEW --> DISPATCH
    CORP_NEW --> DISPATCH

    DISPATCH --> IF_KOJIN{subKojin?}

    IF_KOJIN -->|true| ECK21C["ECK0021C010 Individual Content Change: set + run + get + scResultCheck"]
    IF_KOJIN -->|false| IF_HOJIN{subHojin?}

    IF_HOJIN -->|true| ECK31C["ECK0031C010 Corporate Content Change: set + run + get + scResultCheck"]
    IF_HOJIN -->|false| THROW["throw CCException ERR_STR_RESULT_CD"]

    ECK21C --> END(["Return / Next"])
    ECK31C --> END
    THROW --> END
```

**Processing Flow Summary:**

1. **Preparation**: Initializes a `condMap` for query conditions and retrieves the request data HashMap using `param.getData(fixedText)`.
2. **ECK0011A010 — Customer Agreement Consultation Read**: Builds condition map with SYSID and effective date (`KSH_APLY_YMD`), calls the mapper to set up the request, executes via `ServiceComponentRequestInvoker`, retrieves results, and checks for errors. Puts `RSV_APLY_YMD` and `UPD_DT_CUST_UPD_DTM_BEF` into the result map.
3. **Individual Consultation Read (ECK0021A010)**: Queries the individual subscription agreement. If templates are returned and the individual template array is valid, extracts the `GENE_ADD_DTM` (generation registration datetime) and sets `subKojin = true`.
4. **Corporate Consultation Read (ECK0031A010)**: Queries the corporate subscription agreement. If templates are returned and the corporate template array is valid, extracts the `GENE_ADD_DTM` and sets `subHojin = true`.
5. **SubType Resolution**: If both subTypes have data, compares their `GENE_ADD_DTM` timestamps. The newer record wins — the older one is set to `false`.
6. **Dispatch**: Routes to either individual content change (ECK0021C010) or corporate content change (ECK0031C010) based on the resolved subType. If neither is true, throws `CCException` as an Illegal-Case.

## 3. Parameter Analysis

| No | Parameter Name | Type | Business Description |
|----|---------------|------|---------------------|
| 1 | `param` | `IRequestParameterReadWrite` | The request parameter object carrying the entire model group and control map for the address change screen. It contains customer residence data, subscription information, and service type codes. Accessed via `param.getData(fixedText)` to retrieve the data HashMap, and passed to mapper/SC methods for binding and result extraction. |
| 2 | `fixedText` | `String` | User-defined arbitrary string used as a key/tag to scope the data within `param`. It acts as a namespace delimiter so that multiple concurrent address operations can coexist in the same request context without data collisions. |

**Instance fields / external state read:**

| Field | Type | Business Description |
|-------|------|---------------------|
| `keepSesHandle` | `ThreadLocal<Handle>` | The EJB session handle used to invoke service components. Retrieved per-thread to maintain the correct database connection context for SC calls. |

## 4. CRUD Operations / Called Services

| CRUD | SC / CBS | SC Code | Entity / DB | Operation Description |
|------|----------|---------|-------------|----------------------|
| R | `JKKAdInfChgMapperCC.getInstance` | - | - | Gets the mapper singleton for address change data binding |
| R | `ServiceComponentRequestInvoker` constructor | - | - | Creates the SC request invoker for service component execution |
| R | `JKKAdInfChgMapperCC.setECK0011A010` | EKK0011A010 | KK_T_OPSVKEI_ISP / Customer Agreement data | Maps request data into ECK0011A010 upper-level request structure with SYSID and effective date conditions |
| R | `ServiceComponentRequestInvoker.run` | EKK0011A010SC | KK_T_CONTRACT / Customer Agreement | Executes SC for Customer Agreement Consultation read |
| R | `JKKAdInfChgMapperCC.getECK0011A010` | EKK0011A010 | KK_T_CONTRACT / Customer Agreement | Extracts ECK0011A010 result from SC response into HashMap |
| - | `JKKAdInfChgMapperCC.scResultCheck` | - | - | Validates the SC execution result; throws on error |
| R | `JKKAdInfChgMapperCC.setECK0021A010` | EKK0021A010 | ECK0021A010 structure | Maps request data into ECK0021A010 upper-level request for individual subscription agreement |
| R | `ServiceComponentRequestInvoker.run` | EKK0021A010SC | KK_T_CUSTOMER_INDIVIDUAL / Customer Individual | Executes SC for Customer Individual Consultation read |
| R | `JKKAdInfChgMapperCC.getECK0021A010` | EKK0021A010 | KK_T_CUSTOMER_INDIVIDUAL / Customer Individual | Extracts ECK0021A010 result including GENE_ADD_DTM for individual |
| - | `JKKAdInfChgMapperCC.scResultCheck` | - | - | Validates the SC execution result for individual consultation |
| R | `JKKAdInfChgMapperCC.setECK0031A010` | EKK0031A010 | ECK0031A010 structure | Maps request data into ECK0031A010 upper-level request for corporate subscription agreement |
| R | `ServiceComponentRequestInvoker.run` | EKK0031A010SC | KK_T_CUSTOMER_CORPORATE / Customer Corporate | Executes SC for Customer Corporate Consultation read |
| R | `JKKAdInfChgMapperCC.getECK0031A010` | EKK0031A010 | KK_T_CUSTOMER_CORPORATE / Customer Corporate | Extracts ECK0031A010 result including GENE_ADD_DTM for corporate |
| - | `JKKAdInfChgMapperCC.scResultCheck` | - | - | Validates the SC execution result for corporate consultation |
| U | `JKKAdInfChgMapperCC.setECK0021C010_func2` | EKK0021C010 | ECK0021C010 structure | Maps request + both ck0011/ck0021 maps into ECK0021C010 for individual content change update |
| R | `ServiceComponentRequestInvoker.run` | EKK0021C010SC | KK_T_CUSTOMER_INDIVIDUAL / Customer Individual | Executes SC for Customer Individual Content Change update |
| R | `JKKAdInfChgMapperCC.getECK0021C010` | EKK0021C010 | KK_T_CUSTOMER_INDIVIDUAL / Customer Individual | Extracts ECK0021C010 result after individual content change |
| - | `JKKAdInfChgMapperCC.scResultCheck` | - | - | Validates the SC execution result for individual content change |
| U | `JKKAdInfChgMapperCC.setECK0031C010_func2` | EKK0031C010 | ECK0031C010 structure | Maps request + both ck0011/ck0031 maps into ECK0031C010 for corporate content change update |
| R | `ServiceComponentRequestInvoker.run` | EKK0031C010SC | KK_T_CUSTOMER_CORPORATE / Customer Corporate | Executes SC for Customer Corporate Content Change update |
| R | `JKKAdInfChgMapperCC.getECK0031C010` | EKK0031C010 | KK_T_CUSTOMER_CORPORATE / Customer Corporate | Extracts ECK0031C010 result after corporate content change |
| - | `JKKAdInfChgMapperCC.scResultCheck` | - | - | Validates the SC execution result for corporate content change |

## 5. Dependency Trace

| # | Caller (Screen/Batch) | Call Chain (Full Path to this Method) | Terminal (SC / CRUD / Entity) |
|---|----------------------|--------------------------------------|-------------------------------|
| 1 | CC:JKKAdInfChgCC | `JKKAdInfChgCC.adUpdAllChk` -> `JKKAdInfChgCC.adUpdChk` | `ECK0011A010 [R] KK_T_CONTRACT` |
| 2 | CC:JKKAdInfChgCC | `JKKAdInfChgCC.adUpdAllChk` -> `JKKAdInfChgCC.adUpdChk` | `ECK0021A010 [R] KK_T_CUSTOMER_INDIVIDUAL` |
| 3 | CC:JKKAdInfChgCC | `JKKAdInfChgCC.adUpdAllChk` -> `JKKAdInfChgCC.adUpdChk` | `ECK0021C010 [U] KK_T_CUSTOMER_INDIVIDUAL` |
| 4 | CC:JKKAdInfChgCC | `JKKAdInfChgCC.adUpdAllChk` -> `JKKAdInfChgCC.adUpdChk` | `ECK0031A010 [R] KK_T_CUSTOMER_CORPORATE` |
| 5 | CC:JKKAdInfChgCC | `JKKAdInfChgCC.adUpdAllChk` -> `JKKAdInfChgCC.adUpdChk` | `ECK0031C010 [U] KK_T_CUSTOMER_CORPORATE` |

**Call Chain Details:**
- Called from `JKKAdInfChgCC.adUpdAllChk()` (L7210 and L7216) — the top-level address update check method that determines whether to route to `adUpdChk` based on `ksh_upd_um` (agreement residence changed flag) or `sitei_shs_upd_um` (delivery destination address changed flag).
- This method is **private** (`private void adUpdChk`), so it is exclusively called internally by the same class.
- No screen/batch entry points call this method directly — it is always reached via `adUpdAllChk`.

## 6. Per-Branch Detail Blocks

**Block 1** — [PREPARATION] (L7289)

Preparation of working data structures.

| # | Type | Code |
|---|------|------|
| 1 | SET | `HashMap<String, String> condMap = new HashMap<String, String>();` // Condition map for SC query keys |
| 2 | SET | `HashMap<String, Object> paramMap = (HashMap<String, Object>)param.getData(fixedText);` // Retrieves scoped request data [fixedText = user-defined key] |
| 3 | SET | `HashMap<String, Object> reqMap;` // Request map for SC calls |
| 4 | SET | `Map<?, ?> resMap;` // Response map from SC calls |

**Block 2** — [GET_MAPPERS] (L7298)

Obtains the mapper singleton and creates the SC request invoker.

| # | Type | Code |
|---|------|------|
| 1 | SET | `JKKAdInfChgMapperCC mapper = JKKAdInfChgMapperCC.getInstance();` // Mapper for address change data binding |
| 2 | SET | `ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();` // Invoker for SC execution |

**Block 3** — [ECK0011A010 — Customer Agreement Consultation] (L7303)

Prepares conditions and reads the customer agreement consultation record (ECK0011A010).

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `condMap.clear();` // Clears condition map |
| 2 | SET | `condMap.put(JKKAdInfChgConstCC.COND_KEY_SYSID, paramMap.get(JKKAdInfChgConstCC.PARAM_KEY_SYSID));` // COND_KEY_SYSID = "cond_key_sysid", PARAM_KEY_SYSID = "sysid" |
| 3 | SET | `condMap.put(JKKAdInfChgConstCC.COND_KEY_OPEDATE, paramMap.get(JKKAdInfChgConstCC.PARAM_KEY_KSH_APLY_YMD));` // COND_KEY_OPEDATE = "cond_key_opedate", PARAM_KEY_KSH_APLY_YMD = "ksh_aply_ymd" |
| 4 | SET | `reqMap = mapper.setECK0011A010(param, fixedText, condMap);` // Upper-level mapping |
| 5 | SET | `resMap = scCall.run(reqMap, keepSesHandle.get());` // Executes SC EKK0011A010 |
| 6 | SET | `HashMap<String, Object> ck0011_a010_map = mapper.getECK0011A010(param, fixedText, resMap);` // Lower-level extraction |
| 7 | EXEC | `mapper.scResultCheck(param);` // Error check for ECK0011A010 result |
| 8 | EXEC | `ck0011_a010_map.put(ECK0011A010CBSMsg1List.RSV_APLY_YMD, paramMap.get(JKKAdInfChgConstCC.PARAM_KEY_KSH_APLY_YMD));` // Sets reservation application date |
| 9 | EXEC | `ck0011_a010_map.put(JKKAdInfChgConstCC.UPD_DT_CUST_UPD_DTM_BEF, paramMap.get(JKKAdInfChgConstCC.PARAM_KEY_KSH_UPD_DTM_BF));` // UPD_DT_CUST_UPD_DTM_BEF = "upd_dt_cust_upd_dtm_bf", copies before-update timestamp |

**Block 4** — [INDETERM — Initialize subType Flags] (L7306)

Initializes the subType determination flags and result maps.

| # | Type | Code |
|---|------|------|
| 1 | SET | `boolean subKojin = false;` // Flag: individual subType detected |
| 2 | SET | `String gene_Kojin = new String();` // Generation registration datetime for individual |
| 3 | SET | `HashMap<String, Object> ck0021_a010_map = new HashMap<String, Object>();` // Result map for ECK0021A010 |
| 4 | SET | `boolean subHojin = false;` // Flag: corporate subType detected |
| 5 | SET | `String gene_Hojin = new String();` // Generation registration datetime for corporate |
| 6 | SET | `HashMap<String, Object> ck0031_a010_map = new HashMap<String, Object>();` // Result map for ECK0031A010 |

**Block 5** — [ECK0021A010 — Customer Individual Consultation] (L7316)

Reads the customer individual consultation agreement and resolves `subKojin`.

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `condMap.clear();` // Clears condition map |
| 2 | SET | `condMap.put(JKKAdInfChgConstCC.COND_KEY_SYSID, paramMap.get(JKKAdInfChgConstCC.PARAM_KEY_SYSID));` |
| 3 | SET | `condMap.put(JKKAdInfChgConstCC.COND_KEY_OPEDATE, paramMap.get(JKKAdInfChgConstCC.PARAM_KEY_KSH_APLY_YMD));` |
| 4 | SET | `reqMap = mapper.setECK0021A010(param, fixedText, condMap);` // Upper-level mapping for individual |
| 5 | SET | `resMap = scCall.run(reqMap, keepSesHandle.get());` // Executes SC EKK0021A010 |

**Block 5.1** — [IF] `resMap.containsKey(JCMConstants.TEMPLATE_LIST_KEY)` (L7319)

| # | Type | Code |
|---|------|------|
| 1 | SET | `templates = (CAANMsg[])(resMap.get(JCMConstants.TEMPLATE_LIST_KEY));` // TEMPLATE_LIST_KEY = "template_list" |
| 2 | SET | `template = templates[0];` |
| 3 | SET | `templateArrayKojin = template.getCAANMsgList(ECK0021A010CBSMsg.ECK0021A010CBSMSG1LIST);` // Gets individual template array |

**Block 5.2** — [IF] `templateArrayKojin != null && templateArrayKojin.length > 0` (L7326)

| # | Type | Code |
|---|------|------|
| 1 | SET | `ck0021_a010_map = mapper.getECK0021A010(param, fixedText, resMap);` // Lower-level extraction |
| 2 | EXEC | `mapper.scResultCheck(param);` // Error check for ECK0021A010 result |
| 3 | SET | `gene_Kojin = (String)ck0021_a010_map.get(ECK0021A010CBSMsg1List.GENE_ADD_DTM);` // Generation registration datetime |
| 4 | SET | `subKojin = true;` // Individual subType confirmed |

**Block 5.3** — [ELSE of Block 5.2] (L7336)

| # | Type | Code |
|---|------|------|
| 1 | SET | `subKojin = false;` // Individual template array empty |

**Block 5.4** — [ELSE of Block 5.1] (L7341)

| # | Type | Code |
|---|------|------|
| 1 | SET | `subKojin = false;` // No templates returned from SC |

**Block 6** — [ECK0031A010 — Customer Corporate Consultation] (L7348)

Reads the customer corporate consultation agreement and resolves `subHojin`.

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `condMap.clear();` // Clears condition map |
| 2 | SET | `condMap.put(JKKAdInfChgConstCC.COND_KEY_SYSID, paramMap.get(JKKAdInfChgConstCC.PARAM_KEY_SYSID));` |
| 3 | SET | `condMap.put(JKKAdInfChgConstCC.COND_KEY_OPEDATE, paramMap.get(JKKAdInfChgConstCC.PARAM_KEY_KSH_APLY_YMD));` |
| 4 | SET | `reqMap = mapper.setECK0031A010(param, fixedText, condMap);` // Upper-level mapping for corporate |
| 5 | SET | `resMap = scCall.run(reqMap, keepSesHandle.get());` // Executes SC EKK0031A010 |

**Block 6.1** — [IF] `resMap.containsKey(JCMConstants.TEMPLATE_LIST_KEY)` (L7355)

| # | Type | Code |
|---|------|------|
| 1 | SET | `templates = (CAANMsg[])(resMap.get(JCMConstants.TEMPLATE_LIST_KEY));` |
| 2 | SET | `template = templates[0];` |
| 3 | SET | `templateArrayHojin = template.getCAANMsgList(ECK0031A010CBSMsg.ECK0031A010CBSMSG1LIST);` // Gets corporate template array |

**Block 6.2** — [IF] `templateArrayHojin != null && templateArrayHojin.length > 0` (L7362)

| # | Type | Code |
|---|------|------|
| 1 | SET | `ck0031_a010_map = mapper.getECK0031A010(param, fixedText, resMap);` // Lower-level extraction |
| 2 | EXEC | `mapper.scResultCheck(param);` // Error check for ECK0031A010 result |
| 3 | SET | `gene_Hojin = (String)ck0031_a010_map.get(ECK0031A010CBSMsg1List.GENE_ADD_DTM);` // Generation registration datetime |
| 4 | SET | `subHojin = true;` // Corporate subType confirmed |

**Block 6.3** — [ELSE of Block 6.2] (L7372)

| # | Type | Code |
|---|------|------|
| 1 | SET | `subHojin = false;` // Corporate template array empty |

**Block 6.4** — [ELSE of Block 6.1] (L7377)

| # | Type | Code |
|---|------|------|
| 1 | SET | `subHojin = false;` // No templates returned from SC |

**Block 7** — [BOTH_SUBTYPE Comparison] (L7384)

If both individual and corporate subType data were retrieved, compare generation timestamps to determine which is newer.

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `if (subKojin && subHojin)` // Both subTypes have data |

**Block 7.1** — [IF] `gene_Kojin.compareTo(gene_Hojin) > 0` (L7387)

| # | Type | Code |
|---|------|------|
| 1 | SET | `subHojin = false;` // Individual's generation registration is newer; corporate loses |

**Block 7.2** — [ELSE of Block 7.1] (L7392)

| # | Type | Code |
|---|------|------|
| 1 | SET | `subKojin = false;` // Corporate's generation registration is newer or equal; individual loses |

**Block 7.3** — [ELSE of Block 7] (L7397)

| # | Type | Code |
|---|------|------|
| 1 | COMMENT | // Other cases: route to whichever subType was retrieved. No data is deleted — the unused flag is already false. |

**Block 8** — [IF] `subKojin` — Individual Content Change Dispatch (L7402)

Dispatches to ECK0021C010 (Customer Individual Content Change).

| # | Type | Code |
|---|------|------|
| 1 | SET | `reqMap = mapper.setECK0021C010_func2(param, fixedText, ck0011_a010_map, ck0021_a010_map);` // Maps ck0011 + ck0021 into ECK0021C010 |
| 2 | SET | `resMap = scCall.run(reqMap, keepSesHandle.get());` // Executes SC EKK0021C010 |
| 3 | EXEC | `mapper.getECK0021C010(param, fixedText, resMap);` // Lower-level extraction |
| 4 | EXEC | `mapper.scResultCheck(param);` // Error check for ECK0021C010 result |

**Block 9** — [ELSE-IF] `subHojin` — Corporate Content Change Dispatch (L7410)

Dispatches to ECK0031C010 (Customer Corporate Content Change).

| # | Type | Code |
|---|------|------|
| 1 | SET | `reqMap = mapper.setECK0031C010_func2(param, fixedText, ck0011_a010_map, ck0031_a010_map);` // Maps ck0011 + ck0031 into ECK0031C010 |
| 2 | SET | `resMap = scCall.run(reqMap, keepSesHandle.get());` // Executes SC EKK0031C010 |
| 3 | EXEC | `mapper.getECK0031C010(param, fixedText, resMap);` // Lower-level extraction |
| 4 | EXEC | `mapper.scResultCheck(param);` // Error check for ECK0031C010 result |

**Block 10** — [ELSE] Neither subType — Illegal Case (L7417)

| # | Type | Code |
|---|------|------|
| 1 | THROW | `throw new CCException(JKKAdInfChgConstCC.ERR_STR_RESULT_CD, new Exception());` // ERR_STR_RESULT_CD = "サービスコンポーネントの実行結果にエラーがあります" (Error occurred during service component execution) |

**Block 11** — [CATCH Exception] (L7423)

Catches any unexpected exception, maps it to `CCException`, and re-throws.

| # | Type | Code |
|---|------|------|
| 1 | THROW | `throw new CCException(JKKAdInfChgConstCC.ERR_STR_RESULT_CD, ex.getCause());` // Maps to standard error message |

## 7. Glossary

| Term | Type | Business Meaning |
|------|------|------------------|
| `ksh` | Abbreviation | 契約者住所 (Keiyusha Juusho) — Agreement Residence / Contract Owner's Address |
| `ksh_aply_ymd` | Field | Agreement Residence Application Date (年月日) — the effective date for the address change |
| `ksh_upd_dtm_bf` | Field | Agreement Information Update DateTime Before — timestamp of the last update before this change |
| `sitei_shs` | Abbreviation | 指定送信先 (Shitei Soushin-saki) — Designated Delivery Destination / Specified Mail Recipient |
| `setplace` | Abbreviation | 利用箇所住所 (Riyoukasho Juusho) — Usage Location Residence / Service Usage Address |
| `seiky_shs` | Abbreviation | 請求書送信先 (Seikyusho Soushin-saki) — Invoice Delivery Destination |
| `guide_shs` | Abbreviation | ガイド帳送信先 (Gaidochou Soushin-saki) — Guide Book Delivery Destination |
| `gene_Kojin` | Field | Generation Registration DateTime for Individual — timestamp of the individual customer record's last generation/registration |
| `gene_Hojin` | Field | Generation Registration DateTime for Corporate — timestamp of the corporate customer record's last generation/registration |
| `subKojin` | Field | SubType Individual Flag — boolean indicating the subscription is of individual (個人) type |
| `subHojin` | Field | SubType Corporate Flag — boolean indicating the subscription is of corporate (法人) type |
| `CK0011` / `ck0011_a010` | Field | ECK0011A010 Result Map — Customer Agreement Consultation read result |
| `CK0021` / `ck0021_a010` | Field | ECK0021A010 Result Map — Customer Individual Consultation read result |
| `CK0031` / `ck0031_a010` | Field | ECK0031A010 Result Map — Customer Corporate Consultation read result |
| ECK0011A010 | SC Code | Customer Agreement Consultation (お客様一覧照会) — read-only SC for general customer agreement data |
| ECK0021A010 | SC Code | Customer Individual Consultation (お客様<個人>一照会) — read-only SC for individual customer subscription agreement |
| ECK0031A010 | SC Code | Customer Corporate Consultation (お客様<法人>一照会) — read-only SC for corporate customer subscription agreement |
| ECK0021C010 | SC Code | Customer Individual Content Change (お客様<個人>内容変更) — update SC for individual customer subscription details |
| ECK0031C010 | SC Code | Customer Corporate Content Change (お客様<法人>内容変更) — update SC for corporate customer subscription details |
| GENE_ADD_DTM | Field | Generation Addition DateTime — the record's generation/registration timestamp used to determine which record is newer when both individual and corporate exist |
| RSV_APLY_YMD | Field | Reservation Application Year-Month-Day — the effective application date for reservation purposes |
| UPD_DT_CUST_UPD_DTM_BEF | Field | Customer Update DateTime Before — timestamp of the customer record before this update |
| `COND_KEY_SYSID` | Constant | Condition key for SYSID filter — value: "cond_key_sysid" |
| `COND_KEY_OPEDATE` | Constant | Condition key for operation effective date — value: "cond_key_opedate" |
| `PARAM_KEY_SYSID` | Constant | Parameter key for SYSID — value: "sysid" |
| `PARAM_KEY_KSH_APLY_YMD` | Constant | Parameter key for agreement residence application date — value: "ksh_aply_ymd" |
| `PARAM_KEY_KSH_UPD_DTM_BF` | Constant | Parameter key for agreement residence update timestamp before — value: "ksh_upd_dtm_bf" |
| `ERR_STR_RESULT_CD` | Constant | Error string for SC execution failure — value: "サービスコンポーネントの実行結果にエラーがあります" |
| TEMPLATE_LIST_KEY | Constant | Key for template list in SC response — value: "template_list" |
| `subType` | Business term | Subscription Type — determines whether a customer's subscription is classified as individual (個人) or corporate (法人) |
| SC | Abbreviation | Service Component — Fujitsu's enterprise integration framework for invoking business logic services |
| CBS | Abbreviation |CBS (Common Business Service) — the actual business logic implementation backend invoked by SCs |
| Handle | Technical | EJB Session Context Handle — database session connection reference used for SC invocation |
| K-Opticom | Business term | K-Opticom — the FTTH (Fiber To The Home) broadband ISP operated by KDDI in Japan |
| CCException | Technical | Component Controller Exception — standard exception class for business logic errors in the CC layer |
| CAANMsg | Technical | Common Application Abstract Network Message — the message wrapper used by SCs to return template-based results |