---

# Business Logic — JKKAdchgTelInfoChgCC.cancelDslSvcKeiUcwk() [127 LOC]

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

## 1. Role

### JKKAdchgTelInfoChgCC.cancelDslSvcKeiUcwk()

This method performs the business operation of **cancelling or dismantling a service contract line item** (サービス契約内訳) for an eo光 telephone service. It is invoked during a residential move (住所変更) process when a customer's telephone number is being changed — specifically when the customer is moving from a telephone number (before move) to a different one (after move). The method inspects the current cancellation state (`ucwkState`) of the service contract line and dispatches to one of three handling paths: a **cancel call** (キャンセル呼び出し) for states 010/020, a **dismantle call** (解約呼び出し) for state 030, or a **logical delete** (論理削除) when no base phone number is set (which triggers optional service pack cancellation first). It also ensures that any optional service packs associated with the service line are properly cancelled before the main contract cancellation proceeds. The method is a **delegated utility** — it is called by multiple higher-level deletion/cancellation methods and is not a direct screen entry point. It implements a **routing/dispatch pattern** based on the service line's cancellation state, and uses the **SC (Service Component) invocation pattern** via `scCall.run()` for backend CBS (Component-Based System) calls.

## 2. Processing Pattern (Detailed Business Logic)

```mermaid
flowchart TD
    START(["cancelDslSvcKeiUcwk(svcKeiUcwkNo, geneAddDtm)"])
    START --> GET_PARAM["getRequestParameter() - Get request params"]
    GET_PARAM --> GET_MSKM["Extract mskm_dtl_no from param"]
    GET_MSKM --> BUILD_COND["Build condMap: COND_KEY_SVC_KEI_UCWK_NO, COND_KEY_GENE_ADD_DTM"]
    BUILD_COND --> CALL_A010["mapper.setEKK0161A010_Func1() - Set query params for EKK0161A010"]
    CALL_A010 --> SC_CALL_A010["scCall.run() - EKK0161A010 Get Service Contract Line Agreement"]
    SC_CALL_A010 --> GET_A010["mapper.getEKK0161A010() - Read response into k0161_a001_map"]
    GET_A010 --> CHECK_A010["mapper.scResultCheck() - Validate SC result"]
    CHECK_A010 --> EXTRACT_FIELDS["Extract ucwkState and lastUpdDtm from k0161_a001_map"]
    EXTRACT_FIELDS --> CHECK_BASETEL{"baseTelNo empty?"}
    CHECK_BASETEL -->|Yes| OPT_PACK["Call JKKAdchgOptionPackRunCC.adChgOptionPackMain() - Cancel optional service pack"]
    OPT_PACK --> GET_EKK0081["lclCmnLogic.getEKK0081A010() - Get EKK0081A010 Service Contract Agreement"]
    GET_EKK0081 --> UPDATE_LAST_UPD["Update lastUpdDtm from kk0161_a001_map_new"]
    UPDATE_LAST_UPD --> CHECK_STATE{"ucwkState == 010 or 020?"}
    CHECK_BASETEL -->|No| CHECK_STATE
    CHECK_STATE -->|010/020| CALL_CANCEL["Cancel Call Path"]
    CHECK_STATE -->|030| CALL_DSL["Dismantle Call Path"]
    CALL_CANCEL --> SET_C160["mapper.setEKK0161C160() - Set cancel params"]
    SET_C160 --> RUN_C160["scCall.run() - EKK0161C160 Service Contract Line Cancel"]
    RUN_C160 --> GET_C160["mapper.getEKK0161C160() - Read response"]
    GET_C160 --> CHECK_C160["mapper.scResultCheck()"]
    CHECK_C160 --> END_METHOD["End - Next"]
    CALL_DSL --> SET_C180["mapper.setEKK0161C180() - Set dismantle params"]
    SET_C180 --> RUN_C180["scCall.run() - EKK0161C180 Service Contract Line Dismantle"]
    RUN_C180 --> GET_C180["mapper.getEKK0161C180() - Read response"]
    GET_C180 --> CHECK_C180["mapper.scResultCheck()"]
    CHECK_C180 --> UPDATE_DTM["Update lastUpdDtm from kk0161_c180_map"]
    UPDATE_DTM --> SET_C190["mapper.setEKK0161C190() - Set dismantle confirmation params"]
    SET_C190 --> RUN_C190["scCall.run() - EKK0161C190 Service Contract Line Dismantle Confirmation"]
    RUN_C190 --> GET_C190["mapper.getEKK0161C190() - Read response"]
    GET_C190 --> CHECK_C190["mapper.scResultCheck()"]
    CHECK_C190 --> END_METHOD
```

## 3. Parameter Analysis

| No | Parameter Name | Type | Business Description |
|----|---------------|------|---------------------|
| 1 | `svcKeiUcwkNo` | `String` | Service contract line number — the internal identifier for a specific service contract line item (内訳) within a broader service agreement. Used to look up, cancel, or dismantle the line. |
| 2 | `geneAddDtm` | `String` | Generation registration date/time (世代登録年月日時分秒) — the timestamp when this version of the contract line was registered. Used as a version/optimistic lock key to ensure the line has not been modified by another process since it was read. |

**External/Instance fields read:**

| Field | Type | Business Description |
|-------|------|---------------------|
| `keepReqParam` | `SessionHandle` | Shared request parameter store — holds the full request context (including `mskm_dtl_no`, `base_tel_no`, `svc_kei_no`, `wri_svc_cd`) used by mapper and SC calls. |
| `keepFixedText` | `SessionHandle` | Shared fixed text/lookup data store — holds fixed codes, text definitions, and reference data needed by mapper methods. |
| `keepSesHandle` | `SessionHandle` | Shared session handle — maintains the database session/connection across multiple SC calls within the same transaction. |

## 4. CRUD Operations / Called Services

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

| CRUD | SC / CBS | SC Code | Entity / DB | Operation Description |
|------|----------|---------|-------------|----------------------|
| R | `JKKAdchgTelInfoChgCC.getRequestParameter` | - | Request Context | Reads the shared request parameter map containing `mskm_dtl_no`, `base_tel_no`, `svc_kei_no`, `wri_svc_cd` |
| C | `JKKAdchgTelInfoChgCC.createUserData` | - | Session State | Initializes/creates user data context for the option pack processing subsystem |
| C | `JKKAdchgOptionPackRunCC.adChgOptionPackMain` | - | - | Cancels optional service packs (オプションパック) — creates cancellation records in the option pack CBS |
| R | `JKKAdchgCmnLogicCC.getEKK0081A010` | EKK0081A010 | EKK0081A010 (Service Contract Agreement) | Gets the service contract agreement to refresh `lastUpdDtm` after optional pack cancellation |
| R | `JKKAdchgMapperCC.getEKK0161A010` | EKK0161A010 | KK_T_OPSVKEI_ISP / EKK0161A010 (Service Contract Line Agreement) | Reads the service contract line details including `ucwkState` (contract line status) and `lastUpdDtm` |
| R | `JKKAdchgMapperCC.getEKK0161C160` | EKK0161C160 | KK_T_CANCEL / EKK0161C160 (Service Contract Line Cancel Response) | Reads the response after executing the cancel call for ucwkState 010/020 |
| R | `JKKAdchgMapperCC.getEKK0161C180` | EKK0161C180 | KK_T_DSL / EKK0161C180 (Service Contract Line Dismantle Response) | Reads the response after executing the dismantle call for ucwkState 030 |
| R | `JKKAdchgMapperCC.getEKK0161C190` | EKK0161C190 | KK_T_DSL_KNF / EKK0161C190 (Service Contract Line Dismantle Confirmation Response) | Reads the response after executing the dismantle confirmation for ucwkState 030 |
| U | `JKKAdchgMapperCC.setEKK0161A010_Func1` | EKK0161A010 | KK_T_OPSVKEI_ISP | Sets query parameters to look up the service contract line by `svcKeiUcwkNo` and `geneAddDtm` |
| U | `JKKAdchgMapperCC.setEKK0161C160` | EKK0161C160 | KK_T_CANCEL | Sets cancel call parameters including cancel reason code "02", movement division "00019" |
| U | `JKKAdchgMapperCC.setEKK0161C180` | EKK0161C180 | KK_T_DSL | Sets dismantle call parameters including operation date, end date, charge end date, delivery method "03" |
| U | `JKKAdchgMapperCC.setEKK0161C190` | EKK0161C190 | KK_T_DSL_KNF | Sets dismantle confirmation parameters including operation date, service end date, dismantling completion date |
| - | `JKKAdchgMapperCC.scResultCheck` | - | - | Validates SC (Service Component) result codes — checks for errors/exceptions from CBS calls |
| - | `scCall.run` | EKK0161A010, EKK0161C160, EKK0161C180, EKK0161C190 | - | Executes the Service Component invocation — sends request to backend CBS for SC processing |
| R | `JCCBPCommon.getOpeDate` | - | Operation Date | Gets the current business operation date used for dismantle date fields (`RSV_TSTA_KIBO_YMD`, `SVC_ENDYMD`, `SVC_CHRG_ENDYMD`) |
| R | `JKKAdchgConstCC.IDO_DIV_ADCHG_RGST` | - | Constant | Movement division code "00019" — Residential Change Registration (住所変更・登録) |
| R | `JKKAdchgConstCC.DEFAULT_RSV_APLY_YMD` | - | Constant | Default reservation application date "20991231" (far-future default) |

## 5. Dependency Trace

| # | Caller (Screen/Batch) | Call Chain (Full Path to this Method) | Terminal (SC / CRUD / Entity) |
|---|----------------------|--------------------------------------|-------------------------------|
| 1 | Method: `JKKAdchgTelInfoChgCC.deleteSvcKeiUcwk` | `deleteSvcKeiUcwk(isSameTelNo)` -> iterates EKK0161B004 list -> `cancelDslSvcKeiUcwk(svc_kei_ucwk_no, geneAddDtm)` | `scCall.run(EKK0161A010) [R]`, `scCall.run(EKK0161C160) [R]`, `scCall.run(EKK0161C180) [R]`, `scCall.run(EKK0161C190) [R]`, `adChgOptionPackMain [C]` |
| 2 | Method: `JKKAdchgCancelSvcKeiUwckTelCC` | `cancelSvcKeiUcwkTel()` -> iterates service lines -> `cancelDslSvcKeiUcwk(handle, param, fixedText, svc_kei_no, mskm_dtl_no)` | `scCall.run(EKK0161A010) [R]`, `scCall.run(EKK0161C160) [R]`, `scCall.run(EKK0161C180) [R]`, `scCall.run(EKK0161C190) [R]`, `adChgOptionPackMain [C]` |

## 6. Per-Branch Detail Blocks

**Block 1** — [SET] `(Extract params from request context)` (L618)

| # | Type | Code |
|---|------|------|
| 1 | CALL | `param = getRequestParameter()` // Get shared request parameter map |
| 2 | SET | `mskm_dtl_no = (String)param.get("mskm_dtl_no")` // Application detail number (申請明細番号) |

**Block 2** — [SET] `(Build query conditions for EKK0161A010)` (L622)

| # | Type | Code |
|---|------|------|
| 1 | SET | `condMap = new HashMap<String, String>()` // Create condition map |
| 2 | SET | `condMap.put(JKKAdchgMapperCC.COND_KEY_SVC_KEI_UCWK_NO, svcKeiUcwkNo)` // [-> CONDITION: Service contract line number for lookup] |
| 3 | SET | `condMap.put(JKKAdchgMapperCC.COND_KEY_GENE_ADD_DTM, geneAddDtm)` // [-> CONDITION: Generation registration date/time for version control] |
| 4 | CALL | `reqMap = mapper.setEKK0161A010_Func1(keepReqParam.get(), keepFixedText.get(), condMap)` // Set query parameters for EKK0161A010 Service Contract Line Agreement |
| 5 | CALL | `resMap = scCall.run(reqMap, keepSesHandle.get())` // Execute SC call to read service contract line details |
| 6 | CALL | `k0161_a001_map = mapper.getEKK0161A010(keepReqParam.get(), keepFixedText.get(), resMap)` // Read response into k0161_a001_map |
| 7 | CALL | `mapper.scResultCheck(keepReqParam.get())` // Validate SC result |
| 8 | SET | `ucwkState = (String)k0161_a001_map.get(EKK0161A010CBSMsg1List.SVC_KEI_UCWK_STAT)` // Extract contract line status code |
| 9 | SET | `lastUpdDtm = (String)k0161_a001_map.get(EKK0161A010CBSMsg1List.LAST_UPD_DTM)` // Extract last update timestamp |

**Block 3** — [IF] `(baseTelNo is empty)` `[baseTelNo is null/blank]` (L630)

> When `baseTelNo` (転居元 — pre-move telephone number) is not set, this indicates a number-addition cancellation scenario (番号追加の取り消し). The method proceeds to cancel any optional service packs associated with the service line, then refreshes the contract agreement data.

**Block 3.1** — [SET] `(Prepare optional service pack cancellation data)` (L633)

| # | Type | Code |
|---|------|------|
| 1 | SET | `workKKAdchgOptionPackKey = "JKKAdchgOptionPackRunCC"` // Key for option pack processing module |
| 2 | SET | `adchgOptionPackRunCC = new JKKAdchgOptionPackRunCC()` // Instantiate option pack handler |
| 3 | SET | `trgt_data = new HashMap<String, Object>()` // Target data map for option pack processing |
| 4 | SET | `trgt_data.put(JKKAdchgOptionPackRunCC.SVC_KEI_NO, (String)param.get("svc_kei_no"))` // Service contract number (サービス契約番号) |
| 5 | SET | `trgt_data.put(JKKAdchgOptionPackRunCC.SVC_KEI_UCWK_NO_TEL1, svcKeiUcwkNo)` // Service contract line number (tel1) (サービス契約内訳番号) |
| 6 | SET | `trgt_data.put(JKKAdchgOptionPackRunCC.OP_PACK_ADD_PTN_NO1, (String)param.get("wri_svc_cd"))` // Option pack registration pattern code (電話1番) (オプションパック登録パターンコード（電話1番号）) |
| 7 | SET | `trgt_data.put(JKKAdchgOptionPackRunCC.ADDCHANG_PTN_FLG, JKKAdchgOptionPackRunCC.ADCHG_TELNO_ADDCL)` // [-> ADCHG_TELNO_ADDCL = "adChgTelNoAddCl"] Residential change processing pattern flag (住所変更処理パターンフラグ) |
| 8 | SET | `trgt_data.put(JKKAdchgOptionPackRunCC.ADDCHANG_MODE_FLG, JKKAdchgOptionPackRunCC.ADCHG_CHANGE_MOD)` // [-> ADCHG_CHANGE_MOD = "adChgChangeMode"] Residential change processing mode flag (住所変更処理モードフラグ) |
| 9 | SET | `trgt_data.put(JKKAdchgOptionPackRunCC.MSKM_DTL_NO, mskm_dtl_no)` // Application detail number (申請明細番号) |
| 10 | SET | `trgt_data.put("ido_div", JKKAdchgConstCC.IDO_DIV_ADCHG_RGST)` // [-> IDO_DIV_ADCHG_RGST = "00019" (住所変更・登録)] Movement division (異動区分) |
| 11 | SET | `trgt_data.put("dsl_kibo_ymd", (String)param.get(JKKAdchgOptionPackRunCC.DSL_KIBO_YMD))` // Cancellation desired year/month/day (解約希望年月日) |

**Block 3.2** — [CALL] `(Execute optional service pack cancellation)` (L664)

| # | Type | Code |
|---|------|------|
| 1 | CALL | `createUserData(keepReqParam.get(), workKKAdchgOptionPackKey)` // Create user data context for option pack module |
| 2 | CALL | `adchgOptionPackRunCC.adChgOptionPackMain(keepSesHandle.get(), keepReqParam.get(), trgt_data, workKKAdchgOptionPackKey)` // Execute option pack cancellation |

**Block 3.3** — [SET] `(Refresh contract agreement after option pack cancellation)` (L668)

| # | Type | Code |
|---|------|------|
| 1 | SET | `lclCmnLogic = new JKKAdchgCmnLogicCC(keepSesHandle.get())` // Create common logic instance |
| 2 | CALL | `kk0161_a001_map_new = lclCmnLogic.getEKK0081A010(keepReqParam.get(), mapper, keepFixedText.get(), scCall, (String)param.get("svc_kei_no"), JKKAdchgConstCC.DEFAULT_RSV_APLY_YMD)` // [-> DEFAULT_RSV_APLY_YMD = "20991231"] Get EKK0081A010 Service Contract Agreement |
| 3 | SET | `lastUpdDtm = (String)kk0161_a001_map_new.get(EKK0081A010CBSMsg1List.LAST_UPD_DTM)` // Update lastUpdDtm from refreshed agreement data |

**Block 4** — [IF] `(ucwkState == "010" OR ucwkState == "020")` `[Cancel Call]` (L677)

> When the service contract line status is "010" or "020", the method issues a **cancel call** (キャンセル呼び出し). This is used when the customer requests cancellation of an active service line.

**Block 4.1** — [SET] `(Build cancel call conditions)` (L678)

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `condMap.clear()` // Clear condition map for new query |
| 2 | SET | `condMap.put(EKK0161C160CBSMsg.SVC_KEI_UCWK_NO, svcKeiUcwkNo)` // Service contract line number |
| 3 | SET | `condMap.put(EKK0161C160CBSMsg.MSKM_DTL_NO, mskm_dtl_no)` // Application detail number |
| 4 | SET | `condMap.put(EKK0161C160CBSMsg.SVC_CANCEL_RSN_CD, "02")` // Cancel reason code: "02" |
| 5 | SET | `condMap.put(EKK0161C160CBSMsg.IDO_DIV, JKKAdchgConstCC.IDO_DIV_ADCHG_RGST)` // [-> IDO_DIV_ADCHG_RGST = "00019"] Movement division (住所変更・登録) |
| 6 | SET | `condMap.put(EKK0161C160CBSMsg.UPD_DTM_BF, lastUpdDtm)` // Previous update timestamp for optimistic lock |
| 7 | CALL | `reqMap = mapper.setEKK0161C160(keepReqParam.get(), keepFixedText.get(), condMap)` // Set EKK0161C160 cancel call parameters |
| 8 | CALL | `resMap = scCall.run(reqMap, keepSesHandle.get())` // Execute EKK0161C160 Service Contract Line Cancel |
| 9 | CALL | `kk0161_c160_map = mapper.getEKK0161C160(keepReqParam.get(), keepFixedText.get(), resMap)` // Read cancel call response |
| 10 | CALL | `mapper.scResultCheck(keepReqParam.get())` // Validate SC result |

**Block 5** — [ELSE-IF] `(ucwkState == "030")` `[Dismantle Call]` (L690)

> When the service contract line status is "030", the method issues a **dismantle call** (解約呼び出し) followed by a **dismantle confirmation** (解約確定呼び出し). This is used when the customer's service has been formally dismantled (e.g., equipment removal). This path is the most complex, involving two sequential CBS calls.

**Block 5.1** — [SET] `(Build dismantle call conditions)` (L691)

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `condMap.clear()` // Clear condition map |
| 2 | SET | `condMap.put(EKK0161C180CBSMsg.SVC_KEI_UCWK_NO, svcKeiUcwkNo)` // Service contract line number |
| 3 | SET | `condMap.put(EKK0161C180CBSMsg.MSKM_DTL_NO, mskm_dtl_no)` // Application detail number |
| 4 | SET | `condMap.put(EKK0161C180CBSMsg.RSV_TSTA_KIBO_YMD, JCCBPCommon.getOpeDate(null))` // Reservation start desired date = current operation date |
| 5 | SET | `condMap.put(EKK0161C180CBSMsg.SVC_ENDYMD, JCCBPCommon.getOpeDate(null))` // Service end date = current operation date |
| 6 | SET | `condMap.put(EKK0161C180CBSMsg.SVC_CHRG_ENDYMD, JCCBPCommon.getOpeDate(null))` // Service charge end date = current operation date |
| 7 | SET | `condMap.put(EKK0161C180CBSMsg.SVC_DLRE_CD, "03")` // Delivery method code: "03" |
| 8 | SET | `condMap.put(EKK0161C180CBSMsg.SVC_DLRE_MEMO, null)` // Delivery memo: null |
| 9 | SET | `condMap.put(EKK0161C180CBSMsg.PNLTY_HASSEI_CD, null)` // Penalty occurrence code: null |
| 10 | SET | `condMap.put(EKK0161C180CBSMsg.IDO_DIV, JKKAdchgConstCC.IDO_DIV_ADCHG_RGST)` // [-> IDO_DIV_ADCHG_RGST = "00019"] Movement division (住所変更・登録) |
| 11 | SET | `condMap.put(EKK0161C180CBSMsg.UPD_DTM_BF, lastUpdDtm)` // Previous update timestamp |
| 12 | CALL | `reqMap = mapper.setEKK0161C180(keepReqParam.get(), keepFixedText.get(), condMap)` // Set EKK0161C180 dismantle call parameters |
| 13 | CALL | `resMap = scCall.run(reqMap, keepSesHandle.get())` // Execute EKK0161C180 Service Contract Line Dismantle |
| 14 | CALL | `kk0161_c180_map = mapper.getEKK0161C180(keepReqParam.get(), keepFixedText.get(), resMap)` // Read dismantle call response |
| 15 | CALL | `mapper.scResultCheck(keepReqParam.get())` // Validate SC result |

**Block 5.2** — [SET] `(Update lastUpdDtm and build dismantle confirmation conditions)` (L699)

| # | Type | Code |
|---|------|------|
| 1 | SET | `lastUpdDtm = (String)kk0161_c180_map.get(EKK0161C180CBSMsg.UPD_DTM)` // Update lastUpdDtm from dismantle response |
| 2 | EXEC | `condMap.clear()` // Clear condition map for confirmation |
| 3 | SET | `condMap.put(EKK0161C190CBSMsg.SVC_KEI_UCWK_NO, svcKeiUcwkNo)` // Service contract line number |
| 4 | SET | `condMap.put(EKK0161C190CBSMsg.SVC_ENDYMD, JCCBPCommon.getOpeDate(null))` // Service end date = current operation date |
| 5 | SET | `condMap.put(EKK0161C190CBSMsg.SVC_DSL_KISAN_YMD, JCCBPCommon.getOpeDate(null))` // Service dismantling completion date = current operation date |
| 6 | SET | `condMap.put(EKK0161C190CBSMsg.SVC_DLRE_CD, "03")` // Delivery method code: "03" |
| 7 | SET | `condMap.put(EKK0161C190CBSMsg.SVC_DLRE_MEMO, null)` // Delivery memo: null |
| 8 | SET | `condMap.put(EKK0161C190CBSMsg.UPD_DTM_BF, lastUpdDtm)` // Previous update timestamp |
| 9 | SET | `condMap.put(EKK0161C190CBSMsg.IDO_DIV, JKKAdchgConstCC.IDO_DIV_ADCHG_RGST)` // [-> IDO_DIV_ADCHG_RGST = "00019"] Movement division (住所変更・登録) |

**Block 5.3** — [IF-ELSE] `(KEIZK_AF_KEI_CHGECHU_FLG check)` (L709)

> Conditionally sets the post-connection count reset flag (`KEIZK_AF_KEI_CHGECHU_FLG`) based on whether the connection count reset is in progress.

| # | Type | Code |
|---|------|------|
| 1 | IF | `"1".equals(k0161_a001_map.get(EKK0161A010CBSMsg1List.KEIZK_AF_KEI_CHGECHU_FLG))` // Is connection count reset in progress flag set to "1"? |
| 2 | SET (IF) | `condMap.put(EKK0161C190CBSMsg.KEIZK_AF_KEI_CHGECHU_FLG, "0")` // Reset the flag — connection count reset processing complete |
| 3 | SET (ELSE) | `condMap.put(EKK0161C190CBSMsg.KEIZK_AF_KEI_CHGECHU_FLG, null)` // Keep the flag null if not in progress |

**Block 5.4** — [SET] `(Finalize dismantle confirmation conditions and execute)` (L714)

| # | Type | Code |
|---|------|------|
| 1 | SET | `condMap.put(EKK0161C190CBSMsg.ADCHG_IDO_RSV_DTL_CD, null)` // Residential change movement reservation detail code: null |
| 2 | SET | `condMap.put(EKK0161C190CBSMsg.PLAN_END_SBT_CD, null)` // Plan end service type code: null |
| 3 | CALL | `reqMap = mapper.setEKK0161C190(keepReqParam.get(), keepFixedText.get(), condMap)` // Set EKK0161C190 dismantle confirmation parameters |
| 4 | CALL | `resMap = scCall.run(reqMap, keepSesHandle.get())` // Execute EKK0161C190 Service Contract Line Dismantle Confirmation |
| 5 | CALL | `kk0161_c190_map = mapper.getEKK0161C190(keepReqParam.get(), keepFixedText.get(), resMap)` // Read dismantle confirmation response |
| 6 | CALL | `mapper.scResultCheck(keepReqParam.get())` // Validate SC result |
| 7 | RETURN | `void` // Method ends — cancellation/dismantle complete |

## 7. Glossary

| Term | Type | Business Meaning |
|------|------|------------------|
| `svcKeiUcwkNo` | Field | Service contract line number (サービス契約内訳番号) — internal identifier for a specific service line within a service contract. Used to look up, cancel, or dismantle individual lines. |
| `geneAddDtm` | Field | Generation registration date/time (世代登録年月日時分秒) — timestamp of when this contract line version was created. Used as a version key to prevent concurrent modification. |
| `mskm_dtl_no` | Field | Application detail number (申請明細番号) — internal tracking ID for the specific application detail/line item within a larger service change request. |
| `baseTelNo` | Field | Pre-move telephone number (転居元 — moving source phone number) — the telephone number before the residential move. If empty, it indicates a number-addition cancellation scenario (番号追加の取り消し). |
| `ucwkState` | Field | Contract line status code (内訳状態) — indicates the current state of the service contract line. "010"/"020" = cancel-able; "030" = dismantle-able; "910" = dismantled; "920" = cancelled. |
| `ido_div` | Field | Movement division (異動区分) — classifies the type of movement/change operation. "00019" = Residential Change Registration (住所変更・登録). |
| `SVC_CANCEL_RSN_CD` | Field | Service cancel reason code (サービス取消理由コード) — reason code for the cancellation. "02" is used in this method. |
| `SVC_DLRE_CD` | Field | Service delivery method code (サービスDelivery方法コード) — how the service is delivered. "03" used in dismantle processing. |
| `KEIZK_AF_KEI_CHGECHU_FLG` | Field | Post-connection count reset change-in-progress flag (接続後回数変更注文中フラグ) — indicates whether a connection count reset is currently being processed. Cleared to "0" when dismantling. |
| `DEFAULT_RSV_APLY_YMD` | Constant | Default reservation application date (既定値予約適用年月日) = "20991231". Used as a far-future default value for reservation application date. |
| `ADCHG_TELNO_ADDCL` | Constant | Residential change pattern flag: tel number add/cancel (住所変更パターンフラグ：電話番号追加取消) = "adChgTelNoAddCl". Used to identify the option pack cancellation flow. |
| `ADCHG_CHANGE_MOD` | Constant | Residential change mode flag: change mode (住所変更処理モードフラグ：変更モード) = "adChgChangeMode". Used to indicate a service line change (not addition, not deletion). |
| EKK0161A010 | SC Code | Service Contract Line Agreement (サービス契約内訳一任照会) — reads the current state of a service contract line including status, update timestamp, and flags. |
| EKK0161C160 | SC Code | Service Contract Line Cancel (サービス契約内訳キャンセル) — issues a cancellation call for the service contract line. |
| EKK0161C180 | SC Code | Service Contract Line Dismantle (サービス契約内訳解約) — issues a dismantle call (service termination/removal) for the service contract line. |
| EKK0161C190 | SC Code | Service Contract Line Dismantle Confirmation (サービス契約内訳解約確定) — confirms the dismantle operation, finalizing the service termination. |
| EKK0081A010 | SC Code | Service Contract Agreement (サービス契約一任照会) — reads the broader service contract agreement data to refresh timestamps after sub-operation. |
| KK_T_OPSVKEI_ISP | DB Table | Operational service line ISP table — stores service contract line details for ISP (internet) services. |
| KK_T_CANCEL | DB Table | Cancel table — stores cancel call request/response records. |
| KK_T_DSL | DB Table | Dismantle table — stores dismantle call request/response records. |
| KK_T_DSL_KNF | DB Table | Dismantle confirmation table — stores dismantle confirmation request/response records. |
| eo光電話 | Business term | eo光 Telephone — Fujitsu's fiber-optic telephone/internet service brand in Japan. |
| サービス契約内訳 | Business term | Service Contract Line Detail — a specific service line item within a broader service contract (e.g., a specific phone number or internet connection under one contract). |
| キャンセル | Business term | Cancel — customer-initiated cancellation of an active service before it begins or during a grace period. |
| 解約 | Business term | Dismantle/Terminate — formal termination of an active service, typically involving equipment removal and final billing. |
| 住所変更 | Business term | Residential Change — the process of changing a customer's registered address, which triggers phone number changes and service line updates. |
| オプションパック | Business term | Option Pack — optional add-on service packages (e.g., TV packages, security services) that can be attached to a basic service contract. |

---