# Business Logic — JKKSvkeiShosaClCC.editMapShosaClMoba() [185 LOC]

| Field | Value |
|-------|-------|
| Fully Qualified Name | `com.fujitsu.futurity.bp.custom.common.JKKSvkeiShosaClCC` |
| Layer | Common Component (CC) |
| Module | `common` (Package: `com.fujitsu.futurity.bp.custom.common`) |

## 1. Role

### JKKSvkeiShosaClCC.editMapShosaClMoba()

This method performs the mapping processing for **eo Mobile (eoモバイル)** service contract cancellation ("shosa cancel"). When a customer cancels their eo Mobile internet service contracts through the review cancellation screen, this method orchestrates the preparation of input data for each type of service contract involved — including the main service contract, contract details, optional ISP services, sub-option ISP services, and device provisioning contracts. It reads pre-fetched agreement lookup results from `rsltShokai`, iterates through each contract type, builds message templates via the `shosaClMapper`, and collects the edited input mappings for downstream processing.

The method implements a **structured routing/dispatch pattern**: it processes four primary service contract types (EKK0121, EKK0201, EKK0361, EKK0411) in sequence, each following the same template-extract → mapper-edit → common-edit → collect result pattern. For the EKK0361 (Option Service ISP) branch, it additionally performs **conditional classification** by `op_svc_cd` to segregate email update requests (B001) and My Home Page update requests (B002) into separate arrays for later linked-data classification.

A fifth section handles device provisioning for UQ-WiMAX contracted devices (added per ANK-0342). When a device matches the criteria (home appliance type J0, type 03, with a serial number), it retrieves the home appliance base T-update timestamp and executes a special mapping edit.

At the end, the method classifies collected service contract numbers into linked-data categories (POP ID for email updates, WEB ID for My Home Page updates) and stores them using `JKKBpCommon.putAxMRenkeiDataKbn` with deletion transaction type. It returns a comprehensive result map keyed by cancellation result map keys.

## 2. Processing Pattern (Detailed Business Logic)

```mermaid
flowchart TD
    START(["editMapShosaClMoba(handle, param, fixedText, userDataIndex, rsltShokai)"])
    INIT1["Initialize rsltShosaMap
Initialize work arrays"]
    INIT2["Extract rsltShokai:
workEKK0121A010Array
workEKK0201A010Array
workEKK0361A010Array
workEKK0411A010Array"]
    INIT3["Initialize opSvcKeiNoB001, opSvcKeiNoB002"]
    BLOCK1["Process EKK0121: eo Mobile Service Contract
Check workEKK0121A010Array != null"]
    BLOCK1_NULL["Skip - empty wkMapArray"]
    BLOCK1_LOOP["For each EKK0121A010 entry:
  Get work templates
  For each template:
    shosaClMapper.editInMsgEKK0121C080()
    editInMsgCmn()
    add to wkMapArray"]
    BLOCK1_PUT["rsltShosaMap.put(MAP_KEY_EKK0121C080, wkMapArray)"]
    BLOCK2["Process EKK0201: eo Mobile Contract Details
Check workEKK0201A010Array != null"]
    BLOCK2_NULL["Skip - empty wkMapArray"]
    BLOCK2_LOOP["For each EKK0201A010 entry:
  Get work templates
  For each template:
    shosaClMapper.editInMsgEKK0201C090()
    editInMsgCmn()
    add to wkMapArray"]
    BLOCK2_PUT["rsltShosaMap.put(MAP_KEY_EKK0201C090, wkMapArray)"]
    BLOCK3["Process EKK0361: Option Service <ISP>
Check workEKK0361A010Array != null"]
    BLOCK3_NULL["Skip - empty wkMapArray"]
    BLOCK3_LOOP["For each EKK0361A010 entry:
  Get work templates
  For each template:
    shosaClMapper.editInMsgEKK0361C130()
    editInMsgCmn()
    add to wkMapArray"]
    BLOCK3_CHECK["Get op_svc_cd via getValuableData
Check op_svc_cd"]
    BLOCK3_B001["op_svc_cd == B001 (Email Update)
Add OP_SVC_KEI_NO to opSvcKeiNoB001"]
    BLOCK3_B002["op_svc_cd == B002 (My Home Page Update)
Add OP_SVC_KEI_NO to opSvcKeiNoB002"]
    BLOCK3_PUT["rsltShosaMap.put(MAP_KEY_EKK0361C130, wkMapArray)"]
    BLOCK4["Process EKK0411: Sub-option Service <ISP>
Check workEKK0411A010Array != null"]
    BLOCK4_NULL["Skip - empty wkMapArray"]
    BLOCK4_LOOP["For each EKK0411A010 entry:
  Get work templates
  For each template:
    shosaClMapper.editInMsgEKK0411C080()
    editInMsgCmn()
    add to wkMapArray"]
    BLOCK4_PUT["rsltShosaMap.put(MAP_KEY_EKK0411C080, wkMapArray)"]
    BLOCK5["Prepare linked data classification:
  JKKBpCommon.putAxMRenkeiDataKbn(POPID, DEL, opSvcKeiNoB001)
  JKKBpCommon.putAxMRenkeiDataKbn(WEBID, DEL, opSvcKeiNoB002)"]
    BLOCK6["Process EKK0341B022: Device Provision Service Contract List
Check workEKK0341B022Array != null"]
    BLOCK6_NULL["Skip - empty wkMapArray"]
    BLOCK6_LOOP["For each EKK0341B022 entry:
  Get work templates
  For each template:
    Get taknkikiSbtCd, kktkSbtCd, kikiSeizoNo
    Check conditions"]
    BLOCK6_COND["TAKNKIKI_SBT_J0 = J0
KIKI_TK_SBT_03 = 03
kikiSeizoNo != null
kikiSeizoNo != empty"]
    BLOCK6_MATCH["Inside device match:
  getKihontUpdDttm()
  shosaClMapper.editInMsgEKKA0020004()
  editInMsgCmn()
  add to wkMapArray"]
    BLOCK6_NOMATCH["Skip this template"]
    BLOCK6_PUT["rsltShosaMap.put(MAP_KEY_EKKA0020004, wkMapArray)"]
    RET["Return rsltShosaMap"]

    START --> INIT1 --> INIT2 --> INIT3 --> BLOCK1
    BLOCK1 --> BLOCK1_CHECK1{workEKK0121A010Array != null?}
    BLOCK1_CHECK1 -- Yes --> BLOCK1_LOOP --> BLOCK1_PUT
    BLOCK1_CHECK1 -- No --> BLOCK1_NULL --> BLOCK2
    BLOCK1_PUT --> BLOCK2
    BLOCK1_NULL --> BLOCK2

    BLOCK2 --> BLOCK2_CHECK2{workEKK0201A010Array != null?}
    BLOCK2_CHECK2 -- Yes --> BLOCK2_LOOP --> BLOCK2_PUT
    BLOCK2_CHECK2 -- No --> BLOCK2_NULL --> BLOCK3
    BLOCK2_PUT --> BLOCK3
    BLOCK2_NULL --> BLOCK3

    BLOCK3 --> BLOCK3_CHECK3{workEKK0361A010Array != null?}
    BLOCK3_CHECK3 -- Yes --> BLOCK3_LOOP --> BLOCK3_CHECK --> BLOCK3_B001 --> BLOCK3_B002 --> BLOCK3_PUT
    BLOCK3_CHECK3 -- No --> BLOCK3_NULL --> BLOCK4
    BLOCK3_PUT --> BLOCK4
    BLOCK3_NULL --> BLOCK4

    BLOCK4 --> BLOCK4_CHECK4{workEKK0411A010Array != null?}
    BLOCK4_CHECK4 -- Yes --> BLOCK4_LOOP --> BLOCK4_PUT
    BLOCK4_CHECK4 -- No --> BLOCK4_NULL --> BLOCK5
    BLOCK4_PUT --> BLOCK5
    BLOCK4_NULL --> BLOCK5

    BLOCK5 --> BLOCK6
    BLOCK6 --> BLOCK6_CHECK6{workEKK0341B022Array != null?}
    BLOCK6_CHECK6 -- Yes --> BLOCK6_LOOP --> BLOCK6_COND
    BLOCK6_COND -- Match --> BLOCK6_MATCH --> BLOCK6_PUT
    BLOCK6_COND -- No match --> BLOCK6_NOMATCH --> BLOCK6_PUT
    BLOCK6_CHECK6 -- No --> BLOCK6_NULL --> BLOCK6_PUT
    BLOCK6_MATCH --> BLOCK6_PUT
    BLOCK6_NOMATCH --> BLOCK6_PUT
    BLOCK6_PUT --> RET
```

## 3. Parameter Analysis

| No | Parameter Name | Type | Business Description |
|----|---------------|------|---------------------|
| 1 | `handle` | `SessionHandle` | Database session handle used for transactional operations. Passed to `getKihontUpdDttm()` when querying the home appliance base T update timestamp for UQ-WiMAX device provisioning cancellation. |
| 2 | `param` | `IRequestParameterReadWrite` | Read-write parameter object containing the model group and control map for the cancellation request. Carries user-submitted cancellation data and is mutated by mapper methods (`editInMsgEKK0121C080`, `editInMsgEKK0201C090`, etc.) and `putAxMRenkeiDataKbn()` for linked-data classification. |
| 3 | `fixedText` | `String` | User-defined arbitrary character string (free-text field). Passed through to each mapper's `editInMsg*` method, likely used for audit logging or traceability of the cancellation operation. |
| 4 | `userDataIndex` | `int` | Index within `param` that identifies which business data record to process. Used by mappers and `editInMsgCmn` to locate the correct data row for cancellation mapping. |
| 5 | `rsltShokai` | `HashMap<String, Object>` | Pre-fetched results from agreement lookup (hitoichi shokai) and list lookup (ichiran shokai). Contains arrays of service contract data keyed by MAP_KEY constants (EKK0121A010, EKK0201A010, EKK0361A010, EKK0411A010, EKK0341B022, EKK0351B002). Drives all processing iterations. |

**Instance fields / external state read by this method:**

| Field | Type | Business Description |
|-------|------|---------------------|
| `shosaClMapper` | `JKKSvkeiShosaShosaClMapperCC` | Review cancellation mapper component. Provides template-building and message editing methods for each service contract cancellation type. |
| `currentSysid` | `String` | Current system ID, used as the system identifier when classifying linked data (POP ID and WEB ID). |

## 4. CRUD Operations / Called Services

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

| CRUD | SC / CBS | SC Code | Entity / DB | Operation Description |
|------|----------|---------|-------------|----------------------|
| R | `JBSbatFUCaseFileRnkData.getString` | JBSbatFUCaseFileRnkData | - | Calls `getString` in `JBSbatFUCaseFileRnkData` (work data template) |
| R | `JBSbatFUMoveNaviData.getString` | JBSbatFUMoveNaviData | - | Calls `getString` in `JBSbatFUMoveNaviData` (work data template) |
| R | `JBSbatZMAdDataSet.getString` | JBSbatZMAdDataSet | - | Calls `getString` in `JBSbatZMAdDataSet` (work data template) |
| - | `JKKAddSjishoCtrl.putAxMRenkeiDataKbn` | JKKAddSjishoCtrl | - | Calls `putAxMRenkeiDataKbn` in `JKKAddSjishoCtrl` (linked data classification utility) |
| - | `JKKBpCommon.putAxMRenkeiDataKbn` | JKKBpCommon | - | Calls `putAxMRenkeiDataKbn` in `JKKBpCommon` (linked data classification, POP ID and WEB ID) |
| U | `JKKSvkeiShosaClCC.editInMsgCmn` | JKKSvkeiShosaClCC | - | Calls `editInMsgCmn` in `JKKSvkeiShosaClCC` (common input message editing for all contract types) |
| R | `JKKSvkeiShosaClCC.getKihontUpdDttm` | JKKSvkeiShosaClCC | - | Calls `getKihontUpdDttm` in `JKKSvkeiShosaClCC` (retrieves home appliance base T update timestamp) |
| R | `JKKSvkeiShosaClCC.getValuableData` | JKKSvkeiShosaClCC | - | Calls `getValuableData` in `JKKSvkeiShosaClCC` (extracts option service code from work data) |
| R | `JKKSvkeiShosaClCC.getWorkData` | JKKSvkeiShosaClCC | - | Calls `getWorkData` in `JKKSvkeiShosaClCC` (extracts CAANMsg templates from work data arrays) |
| U | `JKKSvkeiShosaShosaClMapperCC.editInMsgEKK0121C080` | EKK0121C080 | - | Calls `editInMsgEKK0121C080` in mapper — builds input message for eo Mobile service contract cancellation |
| U | `JKKSvkeiShosaShosaClMapperCC.editInMsgEKK0201C090` | EKK0201C090 | - | Calls `editInMsgEKK0201C090` in mapper — builds input message for eo Mobile contract details cancellation |
| U | `JKKSvkeiShosaShosaClMapperCC.editInMsgEKK0361C130` | EKK0361C130 | - | Calls `editInMsgEKK0361C130` in mapper — builds input message for option service ISP cancellation |
| U | `JKKSvkeiShosaShosaClMapperCC.editInMsgEKK0411C080` | EKK0411C080 | - | Calls `editInMsgEKK0411C080` in mapper — builds input message for sub-option service ISP cancellation |
| U | `JKKSvkeiShosaShosaClMapperCC.editInMsgEKKA0020004` | EKKA0020004 | - | Calls `editInMsgEKKA0020004` in mapper — builds input message for home appliance base T update (device provisioning cancellation) |
| R | `JESC0101B010TPMA.getString` | JESC0101B010TPMA | - | Calls `getString` in `JESC0101B010TPMA` (work data template) |
| R | `JESC0101B020TPMA.getString` | JESC0101B020TPMA | - | Calls `getString` in `JESC0101B020TPMA` (work data template) |
| - | `JFUKyokaIpAdActionChkUtil.toArray` | JFUKyokaIpAdActionChk | - | Calls `toArray` in `JFUKyokaIpAdActionChkUtil` (converts ArrayList to String array for linked data) |

## 5. Dependency Trace

| # | Caller (Screen/Batch) | Call Chain (Full Path to this Method) | Terminal (SC / CRUD / Entity) |
|---|----------------------|--------------------------------------|-------------------------------|
| 1 | `JKKSvkeiShosaClCC.runSvkeiShosaCl` | `runSvkeiShosaCl` → `editMapShosaClMoba` | `editInMsgCmn [U]`, `editInMsgEKK0121C080 [U]`, `editInMsgEKK0201C090 [U]`, `editInMsgEKK0361C130 [U]`, `editInMsgEKK0411C080 [U]`, `editInMsgEKKA0020004 [U]`, `getKihontUpdDttm [R]`, `getString [R]` |

**Notes:** The direct caller `runSvkeiShosaCl` is the main processing routine for service contract review cancellation. It orchestrates the high-level flow and delegates to this method for eo Mobile-specific mapping after fetching contract data.

## 6. Per-Branch Detail Blocks

**Block 1** — [VARIABLE INITIALIZATION] `(L5390)`

Initialize local variables and result map for collecting cancellation mappings.

| # | Type | Code |
|---|------|------|
| 1 | SET | `rsltShosaMap = new HashMap()` // Result map to collect all cancellation results |
| 2 | SET | `rslt = null` // Temporary result holder for editInMsgCmn result |
| 3 | SET | `workEKK0121A010Array = null` // Service contract <eo Mobile> agreement lookup (Shosa Cl: review cancellation) |
| 4 | SET | `workEKK0201A010Array = null` // Service contract details <eo Mobile> agreement lookup |
| 5 | SET | `workEKK0361A010Array = null` // Option service contract <ISP> agreement lookup |
| 6 | SET | `workEKK0411A010Array = null` // Sub-option service contract <ISP> agreement lookup |
| 7 | SET | `wkCaanMsgList = null` // Temporary CAANMsg list holder |
| 8 | SET | `wkMapArray = null` // Temporary work map array |

**Block 2** — [VARIABLE ASSIGNMENT FROM rsltShokai] `(L5399)`

Extract pre-fetched agreement lookup results from the input `rsltShokai` map.

| # | Type | Code |
|---|------|------|
| 1 | SET | `workEKK0121A010Array = (ArrayList)rsltShokai.get(MAP_KEY_EKK0121A010)` // MAP_KEY_EKK0121A010 = "EKK0121A010" |
| 2 | SET | `workEKK0201A010Array = (ArrayList)rsltShokai.get(MAP_KEY_EKK0201A010)` // MAP_KEY_EKK0201A010 = "EKK0201A010" |
| 3 | SET | `workEKK0361A010Array = (ArrayList)rsltShokai.get(MAP_KEY_EKK0361A010)` // MAP_KEY_EKK0361A010 = "EKK0361A010" |
| 4 | SET | `workEKK0411A010Array = (ArrayList)rsltShokai.get(MAP_KEY_EKK0411A010)` // MAP_KEY_EKK0411A010 = "EKK0411A010" |

**Block 3** — [VARIABLE INITIALIZATION — OPTION SERVICE CATEGORIES] `(L5404)`

Initialize arrays for categorizing option service contract numbers by update type (B001 = Email, B002 = My Home Page).

| # | Type | Code |
|---|------|------|
| 1 | SET | `opSvcKeiNoB001 = new ArrayList<String>()` // Email update option service numbers |
| 2 | SET | `opSvcKeiNoB002 = new ArrayList<String>()` // My Home Page update option service numbers |

**Block 4** — [IF] `(service contract <eo Mobile> cancellation)` `[workEKK0121A010Array != null]` (L5410)

Process eo Mobile service contract cancellation: iterate through EKK0121A010 contract entries, extract templates, edit input messages, and collect results.

| # | Type | Code |
|---|------|------|
| 1 | SET | `wkMapArray = new ArrayList()` // Reset result array for EKK0121C080 |
| 2 | FOR | `for (int i = 0; i < workEKK0121A010Array.size(); i++)` // Iterate over service contract entries |
| 3 | SET | `wkTenplates = getWorkData(EKK0121A010CBSMsg.EKK0121A010CBSMSG1LIST, (Map)workEKK0121A010Array.get(i))` // Extract CAANMsg templates |
| 4 | FOR | `for (int j = 0; j < wkTenplates.length; j++)` // Iterate over templates within each entry |
| 5 | SET | `childTemplate = wkTenplates[j]` // Current template |
| 6 | SET | `wkCaanMsgList = shosaClMapper.editInMsgEKK0121C080(param, fixedText, userDataIndex, childTemplate)` // [CALL] Build cancellation input message |
| 7 | SET | `rslt = editInMsgCmn(param, wkCaanMsgList.get(0))` // [CALL] Common edit processing |
| 8 | EXEC | `wkMapArray.add(rslt)` // Collect result |
| 9 | SET | `rsltShosaMap.put(MAP_KEY_EKK0121C080, wkMapArray)` // MAP_KEY_EKK0121C080 = "EKK0121C080" — Store cancellation results |

**Block 5** — [IF] `(service contract details <eo Mobile> cancellation)` `[workEKK0201A010Array != null]` (L5425)

Process eo Mobile service contract details cancellation — parallel to Block 4 but for EKK0201 contract detail records.

| # | Type | Code |
|---|------|------|
| 1 | SET | `wkMapArray = new ArrayList()` // Reset result array for EKK0201C090 |
| 2 | FOR | `for (int i = 0; i < workEKK0201A010Array.size(); i++)` // Iterate over contract detail entries |
| 3 | SET | `wkTenplates = getWorkData(EKK0201A010CBSMsg.EKK0201A010CBSMSG1LIST, (Map)workEKK0201A010Array.get(i))` // Extract templates |
| 4 | FOR | `for (int j = 0; j < wkTenplates.length; j++)` // Iterate over templates |
| 5 | SET | `childTemplate = wkTenplates[j]` // Current template |
| 6 | SET | `wkCaanMsgList = shosaClMapper.editInMsgEKK0201C090(param, fixedText, userDataIndex, childTemplate)` // [CALL] Build cancellation input message for contract details |
| 7 | SET | `rslt = editInMsgCmn(param, wkCaanMsgList.get(0))` // [CALL] Common edit processing |
| 8 | EXEC | `wkMapArray.add(rslt)` // Collect result |
| 9 | SET | `rsltShosaMap.put(MAP_KEY_EKK0201C090, wkMapArray)` // MAP_KEY_EKK0201C090 = "EKK0201C090" — Store cancellation results |

**Block 6** — [IF] `(option service contract <ISP> cancellation)` `[workEKK0361A010Array != null]` (L5440)

Process option service ISP cancellation. This block contains additional logic for classifying option service types.

| # | Type | Code |
|---|------|------|
| 1 | SET | `wkMapArray = new ArrayList()` // Reset result array for EKK0361C130 |
| 2 | FOR | `for (int i = 0; i < workEKK0361A010Array.size(); i++)` // Iterate over option service entries |
| 3 | SET | `wkTenplates = getWorkData(EKK0361A010CBSMsg.EKK0361A010CBSMSG1LIST, (Map)workEKK0361A010Array.get(i))` // Extract templates |
| 4 | FOR | `for (int j = 0; j < wkTenplates.length; j++)` // Iterate over templates |
| 5 | SET | `childTemplate = wkTenplates[j]` // Current template |
| 6 | SET | `wkCaanMsgList = shosaClMapper.editInMsgEKK0361C130(param, fixedText, userDataIndex, childTemplate)` // [CALL] Build cancellation input message for option ISP |
| 7 | SET | `rslt = editInMsgCmn(param, wkCaanMsgList.get(0))` // [CALL] Common edit processing |
| 8 | EXEC | `wkMapArray.add(rslt)` // Collect result |

**Block 6.1** — [NESTED] `(option service code classification)` (L5453)

Extract the option service code and classify it into email update (B001) or My Home Page update (B002) buckets.

| # | Type | Code |
|---|------|------|
| 1 | SET | `op_svc_cd = getValuableData(rsltShokai, MAP_KEY_EKK0351B002, EKK0351B002CBSMsg.EKK0351B002CBSMSG1LIST, EKK0351B002CBSMsg1List.OP_SVC_KEI_NO, childTemplate.getString(EKK0361A010CBSMsg1List.OP_SVC_KEI_NO), EKK0351B002CBSMsg1List.OP_SVC_CD)` // [CALL] Extract option service code |
| 2 | IF | `[IF] (B001) "B001".equals(op_svc_cd)` // Email update classification |
| 3 | EXEC | `opSvcKeiNoB001.add(childTemplate.getString(EKK0361A010CBSMsg1List.OP_SVC_KEI_NO))` // Add service contract number to email update list |
| 4 | IF-ELSE | `[ELSE-IF] (B002) "B002".equals(op_svc_cd)` // My Home Page update classification |
| 5 | EXEC | `opSvcKeiNoB002.add(childTemplate.getString(EKK0361A010CBSMsg1List.OP_SVC_KEI_NO))` // Add service contract number to My Home Page update list |

**Block 6.2** — [AFTER OPTION LOOP] `(store EKK0361 results)` (L5471)

| # | Type | Code |
|---|------|------|
| 1 | SET | `rsltShosaMap.put(MAP_KEY_EKK0361C130, wkMapArray)` // MAP_KEY_EKK0361C130 = "EKK0361C130" |

**Block 7** — [IF] `(sub-option service contract <ISP> cancellation)` `[workEKK0411A010Array != null]` (L5475)

Process sub-option service ISP cancellation — similar pattern to Block 4 and 5.

| # | Type | Code |
|---|------|------|
| 1 | SET | `wkMapArray = new ArrayList()` // Reset result array for EKK0411C080 |
| 2 | FOR | `for (int i = 0; i < workEKK0411A010Array.size(); i++)` // Iterate over sub-option service entries |
| 3 | SET | `wkTenplates = getWorkData(EKK0411A010CBSMsg.EKK0411A010CBSMSG1LIST, (Map)workEKK0411A010Array.get(i))` // Extract templates |
| 4 | FOR | `for (int j = 0; j < wkTenplates.length; j++)` // Iterate over templates |
| 5 | SET | `childTemplate = wkTenplates[j]` // Current template |
| 6 | SET | `wkCaanMsgList = shosaClMapper.editInMsgEKK0411C080(param, fixedText, userDataIndex, childTemplate)` // [CALL] Build cancellation input message for sub-option ISP |
| 7 | SET | `rslt = editInMsgCmn(param, wkCaanMsgList.get(0))` // [CALL] Common edit processing |
| 8 | EXEC | `wkMapArray.add(rslt)` // Collect result |
| 9 | SET | `rsltShosaMap.put(MAP_KEY_EKK0411C080, wkMapArray)` // MAP_KEY_EKK0411C080 = "EKK0411C080" — Store cancellation results |

**Block 8** — [VARIABLE PREPARATION FOR LINKED DATA] `(L5490)`

Prepare String arrays for linked data classification, separating email and My Home Page option service numbers.

| # | Type | Code |
|---|------|------|
| 1 | SET | `arr1 = new String[opSvcKeiNoB001.size()]` // String array for email update service numbers |
| 2 | SET | `arr2 = new String[opSvcKeiNoB002.size()]` // String array for My Home Page update service numbers |

**Block 9** — [IF] `(linked data classification 03: POP ID information)` `(L5494)`

Classify email update option service numbers under linked data category "03" (POP ID) with deletion transaction type.

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `JKKBpCommon.putAxMRenkeiDataKbn(param, JKKSvkeiShosaClConstCC.SJISHO_MAP, JKKAddSjishoConst.RENKEI_DATA_KBN_POPID, JKKAddSjishoConst.TRN_KBN_DEL, opSvcKeiNoB001.toArray(arr1), currentSysid)` // RENKEI_DATA_KBN_POPID = "03", TRN_KBN_DEL = "03" — Classify email updates as POP ID linked data with delete type |

**Block 10** — [IF] `(linked data classification 04: WEB ID information)` `(L5503)`

Classify My Home Page update option service numbers under linked data category "04" (WEB ID) with deletion transaction type.

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `JKKBpCommon.putAxMRenkeiDataKbn(param, JKKSvkeiShosaClConstCC.SJISHO_MAP, JKKAddSjishoConst.RENKEI_DATA_KBN_WEBID, JKKAddSjishoConst.TRN_KBN_DEL, opSvcKeiNoB002.toArray(arr2), currentSysid)` // RENKEI_DATA_KBN_WEBID — Classify My Home Page updates as WEB ID linked data with delete type |

**Block 11** — [IF] `(UQ-WiMAX device provisioning cancellation)` `[workEKK0341B022Array != null]` (L5515)

Process device provisioning service contract cancellation for UQ-WiMAX. Added per ANK-0342: when a device is provided with the service, the home appliance T synchronization link is established. Iterates through device provisioning contract entries, and for devices that match specific criteria (home appliance type J0, device type 03, with a serial number), retrieves the base T update timestamp and executes the home appliance base T update message mapping.

| # | Type | Code |
|---|------|------|
| 1 | SET | `wkMapArray = new ArrayList()` // Reset result array for EKKA0020004 |
| 2 | SET | `workEKK0341B022Array = (ArrayList)rsltShokai.get(MAP_KEY_EKK0341B022)` // MAP_KEY_EKK0341B022 = "EKK0341B022" — Service contract list for device provisioning |
| 3 | FOR | `for (int i = 0; i < workEKK0341B022Array.size(); i++)` // Iterate over device provisioning entries |
| 4 | FOR | `for (int j = 0; null != wkTenplates && j < wkTenplates.length; j++)` // Iterate over templates (with null-safety check on wkTenplates) |
| 5 | SET | `childTemplate = wkTenplates[j]` // Current template |
| 6 | SET | `taknkikiSbtCd = childTemplate.getString(EKK0341B022CBSMsg1List.TAKNKIKI_SBT_CD)` // Get home appliance subtype code |
| 7 | SET | `kktkSbtCd = childTemplate.getString(EKK0341B022CBSMsg1List.KKTK_SBT_CD)` // Get device contract subtype code |
| 8 | SET | `kikiSeizoNo = childTemplate.getString(EKK0341B022CBSMsg1List.KIKI_SEIZO_NO)` // Get device serial number |

**Block 11.1** — [IF] `(device criteria match)` `TAKNKIKI_SBT_J0 = "J0" && KIKI_TK_SBT_03 = "03" && kikiSeizoNo != null && kikiSeizoNo != empty` (L5548)

Process matching devices: retrieve the home appliance base T update timestamp and build the update message.

| # | Type | Code |
|---|------|------|
| 1 | SET | `kihontUpdDttm = getKihontUpdDttm(handle, param, childTemplate.getString(EKK0341B022CBSMsg1List.TAKNKIKI_MODEL_CD), kikiSeizoNo)` // [CALL] Get home appliance base T update timestamp |
| 2 | IF | `if (kihontUpdDttm == null) continue;` // Skip if no update timestamp available |
| 3 | SET | `wkCaanMsgList = shosaClMapper.editInMsgEKKA0020004(param, childTemplate, kihontUpdDttm)` // [CALL] Build home appliance base T update input message |
| 4 | SET | `rslt = editInMsgCmn(param, wkCaanMsgList.get(0))` // [CALL] Common edit processing |
| 5 | EXEC | `wkMapArray.add(rslt)` // Collect result |

**Block 11.2** — [AFTER DEVICE LOOP] `(store EKK0341 result)` (L5561)

| # | Type | Code |
|---|------|------|
| 1 | SET | `rsltShosaMap.put(MAP_KEY_EKKA0020004, wkMapArray)` // MAP_KEY_EKKA0020004 = "EKKA0020004" — Store device provisioning cancellation results |

**Block 12** — [RETURN] `(L5564)`

| # | Type | Code |
|---|------|------|
| 1 | RETURN | `return rsltShosaMap` // Return all cancellation mapping results |

## 7. Glossary

| Term | Type | Business Meaning |
|------|------|------------------|
| `shosa cancel` | Business process | Review cancellation (shosa torikeshi) — the business operation of cancelling a service contract that has been reviewed/agreed upon |
| `rsltShokai` | Field | Agreement lookup / list lookup results (hitoichi shokai, ichiran shokai) — pre-fetched data from prior contract lookups |
| `EKK0121A010` | Map Key | Service contract <eo Mobile> agreement lookup — main eo Mobile internet service contract data |
| `EKK0201A010` | Map Key | Service contract details <eo Mobile> agreement lookup — detailed information for the eo Mobile service contract |
| `EKK0361A010` | Map Key | Option service contract <ISP> agreement lookup — optional ISP service contract data |
| `EKK0411A010` | Map Key | Sub-option service contract <ISP> agreement lookup — sub-optional ISP service contract data |
| `EKK0341B022` | Map Key | Service contract list for device provisioning (service contract number) — list of devices provided with service contracts |
| `EKK0351B002` | Map Key | Option service contract (service contract number) — option service contract number lookup data |
| `EKK0121C080` | Map Key | Service contract <eo Mobile> cancellation — result key for eo Mobile cancellation mappings |
| `EKK0201C090` | Map Key | Service contract details <eo Mobile> cancellation — result key for eo Mobile contract details cancellation mappings |
| `EKK0361C130` | Map Key | Option service contract <ISP> cancellation — result key for ISP option cancellation mappings |
| `EKK0411C080` | Map Key | Sub-option service contract <ISP> cancellation — result key for ISP sub-option cancellation mappings |
| `EKKA0020004` | Map Key | Home appliance base T update — result key for device provisioning cancellation mappings (home appliance T-synchronization update) |
| `op_svc_cd` | Field | Option service code — classifies the type of option service (B001 = Email update, B002 = My Home Page update) |
| `op_svc_kei_no` | Field | Option service contract number — unique identifier for an option service contract line item |
| `taknkiki_sbt_cd` | Field | Home appliance subtype code — classifies the type of home appliance (J0 = UQ-WiMAX device) |
| `kktk_sbt_cd` | Field | Device contract subtype code — classifies the device contract type (03 = specific device category) |
| `kiki_seizo_no` | Field | Device serial number — unique hardware identifier for the provided device |
| `taknkiki_sbt_cd` | Field | Home appliance subtype code — classifies the type of home appliance (J0 = UQ-WiMAX device) |
| `kiki_seizo_no` | Field | Device serial number — unique manufacturing serial number of the provided device |
| `kihontUpdDttm` | Field | Base T update date/time — timestamp for home appliance base T synchronization |
| `shosaClMapper` | Component | Review cancellation mapper component — handles template building and message editing for cancellation processing |
| `putAxMRenkeiDataKbn` | Method | Linked data classification method — categorizes data into linked data types (POP ID, WEB ID) with transaction type |
| `RENKEI_DATA_KBN_POPID` | Constant | Linked data category "03" — POP ID information category for email updates |
| `RENKEI_DATA_KBN_WEBID` | Constant | Linked data category "04" — WEB ID information category for My Home Page updates |
| `TRN_KBN_DEL` | Constant | Transaction type "03" — deletion transaction type used in linked data classification |
| `SJISHO_MAP` | Constant | Map key "KKSV040810CC" — the screen's result map identifier for sjisho (confirmation) data |
| `B001` | Value | Email update — option service type for email service additions/changes |
| `B002` | Value | My Home Page update — option service type for My Home Page (customer portal) service additions/changes |
| `J0` | Value | Home appliance subtype for UQ-WiMAX devices |
| `03` | Value | Device contract subtype code for specific device classification |
| eo Mobile | Business term | eo Mobile (eoモバイル) — NTT docomo's mobile internet broadband service |
| ISP | Business term | Internet Service Provider — the internet connectivity option service |
| UQ-WiMAX | Business term | UQ WiMAX — wireless broadband service provided by UQ Communications (NTT docomo group) |
| My Home Page | Business term | My Home Page (マイホームページ) — NTT docomo's customer portal/web service for managing subscriptions |
| CAANMsg | Component | Message/parameter model object used in the Fujitsu Futurity BPM framework for carrying structured message data |
| getWorkData | Method | Extracts CAANMsg template arrays from work data HashMaps by CBS message list key |
| getValuableData | Method | Extracts a specific field value from work data using a chain of lookup keys |
| getKihontUpdDttm | Method | Queries the home appliance base T (Type T) update timestamp for a given device model and serial number |
| editInMsgCmn | Method | Common input message editing — standardized post-processing applied to all edited input messages |
| T-synchronization | Business concept | Home appliance T-synchronization — aligning the home appliance's base timestamp with the service system |
| ANK | Internal code | Internal ticket/change management code prefix (e.g., ANK-0342 = UQ-WiMAX device provisioning change) |
| PT bug fix | Internal code | PT (Pilot Testing) bug fix reference (e.g., ST2-2012-0001328) |
| SOD | Acronym | Service Order Data — telecom order fulfillment entity |

---