# Business Logic — FUW01403SFLogic.executeCfmMskmService() [127 LOC]

| Field | Value |
|-------|-------|
| Fully Qualified Name | `eo.web.webview.FUW01403SF.FUW01403SFLogic` |
| Layer | Service (Screen-side Service Logic — CBS layer, Web frontend) |
| Module | `FUW01403SF` (Package: `eo.web.webview.FUW01403SF`) |

## 1. Role

### FUW01403SFLogic.executeCfmMskmService()

This method implements the core service execution processing for the **Two-Number Service Application (Confirmation/Application)** screen (2番号サービスお申し込み(確認/申込)). It orchestrates the complete submission pipeline for a customer's two-number service contract — a telecom service that consolidates multiple phone numbers under a single unified contract while maintaining individual number identities for caller ID purposes. The method follows a **routing/dispatch** and **delegation** design pattern: it first populates a structured `inputMap` by chaining a sequence of data mapping and SC (Service Component) calls through the `FUSV0042_FUSV0042OPDBMapper` class, then delegates the actual business transaction to the remote service via `invokeService()`. The method handles two distinct service pathways based on the `noTchSvcUm` (non-transfer service management) flag: if set to `"1"`, it processes **optional service contract registration and start** workflows; otherwise, it processes **optional service contract cancellation and consent withdrawal** workflows. After service execution, it retrieves the results via `getFUSV004201CC()` and returns the structured output map to the caller. This method serves as the primary entry point from the two-number service application screen's `cfm()` and `mskm()` processing paths, acting as the critical bridge between the web presentation layer and the backend telecom service orchestration.

## 2. Processing Pattern (Detailed Business Logic)

```mermaid
flowchart TD
    START(["executeCfmMskmService"])
    CHECK["Check: serviceFormBean has TELNO"]
    CHECK2["Check: noTchSvcUm is not null"]
    CHECK3["Check: noTchSvcUm equals 1"]
    END_NODE(["Return outputMap"])

    START --> INIT["Initialize inputMap, outputMap, paramMap"]
    INIT --> MAPPER["Create FUSV0042_FUSV0042OPDBMapper"]
    MAPPER --> BASIC_MAPP["setFUSV0042WORK01 + setJFUSplitAddressInfoCC + setFUSV004202SC"]
    BASIC_MAPP --> CHECK
    CHECK -->|Yes| TEL_BRANCH["setFUSV004212SC + setFUSV004202CC + setFUSV004203CC + setFUSV004207CC + setFUSV004211CC"]
    CHECK -->|No| NO_TEL_BRANCH["Skip TELNO conditional branch"]
    TEL_BRANCH --> COMMON_SC["setFUSV004213SC + setFUSV004203SC + setFUSV004215SC + setFUSV004214SC + setFUSV004206SC + setFUSV004207SC + setFUSV004209SC + setFUSV004210SC + setFUSV004211SC + setFUSV004204CC + setFUSV004206CC + setFUSV004205CC"]
    NO_TEL_BRANCH --> COMMON_SC
    COMMON_SC --> GET_NO_TCH["Get noTchSvcUm from serviceFormBean"]
    GET_NO_TCH --> CHECK2
    CHECK2 -->|Yes| SVC_SUBMIT["setFUSV004216SC"]
    CHECK2 -->|No| SKIP_SUBMIT["Skip submission content branch"]
    SVC_SUBMIT --> CHECK3
    CHECK3 -->|Yes: equals 1| OPT_SUBMIT["setFUSV004217SC + setFUSV004218SC + setFUSV004219SC + setFUSV004220SC"]
    CHECK3 -->|No: other value| OPT_CANCEL["setFUSV004208CC + setFUSV004221SC + setFUSV004222SC + setFUSV004223SC"]
    OPT_SUBMIT --> POST_PROCESSING["setFUSV004224SC + setFUSV004225SC + setFUSV004209CC + setFUSV004210CC"]
    OPT_CANCEL --> POST_PROCESSING
    SKIP_SUBMIT --> SET_STAT["JFUWebCommon.setSvcKeiStat"]
    POST_PROCESSING --> SET_STAT
    SET_STAT --> INVOKE["invokeService paramMap inputMap outputMap"]
    INVOKE --> CATCH["Catch JCCWebServiceException handleMskmException"]
    CATCH --> GET_RESULT["mapper.getFUSV004201CC serviceFormBean outputMap"]
    GET_RESULT --> END_NODE
```

**Constant Resolution Notes:**
- `FUW01403SFConst.TELNO` = `"番号ポートatilityを利用する電話番号"` (Phone number using number portability) — identifies whether the customer is porting an existing phone number.
- `FUW01403SFConst.NO_TCH_SVC_UM` = `"発信者番号通知有无"` (Outbound caller number notification presence/absence) — flag that determines whether optional service management is active.
- `NO_TCH_SVC_UM_1` = `"1"` — when `noTchSvcUm` equals `"1"`, the customer has confirmed optional service registration (service start path); any other non-null value triggers the cancellation path.
- `SVC_USECASE_ID_FUSV0042` = `"FUSV0042"` — the use-case identifier for the FUSV0042 service transaction.
- `JPCModelConstant.FUNC_CD_1` and `JPCModelConstant.FUNC_CD_2` — function code constants used to differentiate service modes in SC calls.

## 3. Parameter Analysis

| No | Parameter Name | Type | Business Description |
|----|---------------|------|---------------------|
| 1 | `commonInfoBean` | `final X31SDataBeanAccess` | Shared form bean carrying common screen context data (session info, authentication details, and shared UI state) that is accessible across the two-number service application flow. Retrieved via `getCommonInfoBean()`. |
| 2 | `serviceFormBean` | `final X31SDataBeanAccess` | Service-specific form bean containing the two-number service application data — including phone numbers, customer address information, service contract details, and optional service management flags. This is the primary data carrier that flows through all mapping and SC operations. |
| 3 | `funcCode` | `final String` | Function code identifying the specific processing mode or screen invocation context. Passed through to multiple SC mapping methods to differentiate between different operational modes (registration vs. modification, etc.). |

**External state read:**
| Field | Type | Business Description |
|-------|------|---------------------|
| `this` (FUW01403SFLogic instance) | `FUW01403SFLogic` | The logic class instance containing inherited utility methods (`isNull()`, `handleMskmException()`), the `DEBUG_LOG` logger, and access to common info via `getCommonInfoBean()`. |
| `DEBUG_LOG` | Logger | Debug logging instance for tracing method execution boundaries. |

## 4. CRUD Operations / Called Services

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

| CRUD | SC / CBS | SC Code | Entity / DB | Operation Description |
|------|----------|---------|-------------|----------------------|
| C | `FUSV0042_FUSV0042OPDBMapper.setFUSV0042WORK01` | FUSV0042 | - | Sets two-number service application work items mapping (preparation) |
| C | `FUSV0042_FUSV0042OPDBMapper.setJFUSplitAddressInfoCC` | JFUMapping | - | Splits address information into constituent fields (prefecture, city, town, building) |
| C | `FUSV0042_FUSV0042OPDBMapper.setFUSV004202SC` | FUSV0042 | - | Sets application registration service mapping (registration data preparation) |
| C | `FUSV0042_FUSV0042OPDBMapper.setFUSV004212SC` | FUSV0042 | - | Sets local number consent service mapping (number portability agreement) |
| C | `FUSV0042_FUSV0042OPDBMapper.setFUSV004202CC` | FUSV0042 | - | Transfers service IF result data mapping between data beans |
| C | `FUSV0042_FUSV0042OPDBMapper.setFUSV004203CC` | FUSV0042 | - | Validates phone number registration capability |
| C | `FUSV0042_FUSV0042OPDBMapper.setFUSV004207CC` | FUSV0042 | - | Checks call forwarding eligibility area (geographic routing validation) |
| C | `FUSV0042_FUSV0042OPDBMapper.setFUSV004211CC` | FUSV0042 | - | Validates telephone number master changes |
| C | `FUSV0042_FUSV0042OPDBMapper.setFUSV004213SC` | FUSV0042 | - | Sets telecom carrier list consent service mapping |
| C | `FUSV0042_FUSV0042OPDBMapper.setFUSV004203SC` | FUSV0042 | - | Sets telephone number registration service mapping |
| C | `FUSV0042_FUSV0042OPDBMapper.setFUSV004215SC` | FUSV0042 | - | Sets eo HIKARI telephone service contract consent service mapping |
| C | `FUSV0042_FUSV0042OPDBMapper.setFUSV004214SC` | FUSV0042 | - | Sets eo HIKARI telephone service contract registration01 service mapping |
| C | `FUSV0042_FUSV0042OPDBMapper.setFUSV004206SC` | FUSV0042 | - | Sets eo HIKARI telephone service contract registration service mapping |
| C | `FUSV0042_FUSV0042OPDBMapper.setFUSV004207SC` | FUSV0042 | - | Sets optional service contract (telephone) registration service mapping |
| C | `FUSV0042_FUSV0042OPDBMapper.setFUSV004209SC` | FUSV0042 | - | Sets progress registration service mapping (service activation/progress tracking) |
| C | `FUSV0042_FUSV0042OPDBMapper.setFUSV004210SC` | FUSV0042 | - | Sets business parameter management consent service mapping |
| C | `FUSV0042_FUSV0042OPDBMapper.setFUSV004211SC` | FUSV0042 | - | Sets optional service contract (telephone) registration service mapping (duplicate SC call) |
| C | `FUSV0042_FUSV0042OPDBMapper.setFUSV004204CC` | FUSV0042 | - | Transfers data component consent item mapping |
| C | `FUSV0042_FUSV0042OPDBMapper.setFUSV004206CC` | FUSV0042 | - | Transfers data component consent item mapping (second pass) |
| C | `FUSV0042_FUSV0042OPDBMapper.setFUSV004205CC` | FUSV0042 | - | Maps device optional service contract registration component consent items |
| C | `FUSV0042_FUSV0042OPDBMapper.setFUSV004216SC` | FUSV0042 | - | Sets submission content approval registration service mapping (when `noTchSvcUm` is not null) |
| C | `FUSV0042_FUSV0042OPDBMapper.setFUSV004217SC` | FUSV0042 | - | Sets optional service contract (telephone) registration service mapping (start path) |
| C | `FUSV0042_FUSV0042OPDBMapper.setFUSV004218SC` | FUSV0042 | - | Sets optional service contract (telephone) consent service mapping (start path) |
| C | `FUSV0042_FUSV0042OPDBMapper.setFUSV004219SC` | FUSV0042 | - | Sets optional service contract (telephone) consent settlement service mapping (start path) |
| C | `FUSV0042_FUSV0042OPDBMapper.setFUSV004220SC` | FUSV0042 | - | Sets optional service contract (telephone) start service mapping (service activation) |
| C | `FUSV0042_FUSV0042OPDBMapper.setFUSV004208CC` | FUSV0042 | - | Sets non-billing decision component mapping (cancellation path) |
| C | `FUSV0042_FUSV0042OPDBMapper.setFUSV004221SC` | FUSV0042 | - | Sets optional service contract (telephone) cancellation service mapping (cancellation path) |
| C | `FUSV0042_FUSV0042OPDBMapper.setFUSV004222SC` | FUSV0042 | - | Sets optional service contract (telephone) cancellation confirmation service mapping |
| C | `FUSV0042_FUSV0042OPDBMapper.setFUSV004223SC` | FUSV0042 | - | Sets optional service contract (telephone) cancellation consent service mapping |
| C | `FUSV0042_FUSV0042OPDBMapper.setFUSV004224SC` | FUSV0042 | - | Sets progress registration service mapping (with commonInfoBean + serviceFormBean) |
| C | `FUSV0042_FUSV0042OPDBMapper.setFUSV004225SC` | FUSV0042 | - | Sets application detail consent and follow-up work request service mapping |
| C | `FUSV0042_FUSV0042OPDBMapper.setFUSV004209CC` | FUSV0042 | - | Transfers service IF result data mapping (after post-processing) |
| C | `FUSV0042_FUSV0042OPDBMapper.setFUSV004210CC` | FUSV0042 | - | Transfers service order issuance data mapping |
| R | `FUSV0042_FUSV0042OPDBMapper.getFUSV004201CC` | FUSV0042 | - | Retrieves mapped service results from outputMap back into serviceFormBean |
| - | `JCCBatCommon.invokeService` | JCCBatCommon | - | Invokes the remote service transaction with the prepared paramMap, inputMap, and outputMap |
| - | `JFUWebCommon.setSvcKeiStat` | JFUWebCommon | - | Sets the service contract status flag |
| - | `OneStopDataBeanAccess.sendMessageString` | OneStopDataBeanAccess | - | Reads field values from the service form bean (TELNO check, noTchSvcUm retrieval) |
| - | `FUW01403SFLogic.handleMskmException` | FUW01403SFLogic | - | Exception handler for application-time errors, processes and rethrows as needed |

## 5. Dependency Trace

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

No screen/batch entry points found within 8 hops. Direct callers found: 2 methods.
Terminal operations from this method: `getFUSV004201CC` [R], `handleMskmException` [-], `invokeService` [-], `invokeService` [-], `invokeService` [-], `invokeService` [-], `invokeService` [-], `setSvcKeiStat` [-], `setSvcKeiStat` [-], `setSvcKeiStat` [-], `setFUSV004210CC` [-], `setFUSV004209CC` [-], `setFUSV004225SC` [-], `setFUSV004224SC` [-], `setFUSV004223SC` [-], `setFUSV004222SC` [-], `setFUSV004221SC` [-], `setFUSV004208CC` [-], `setFUSV004220SC` [-], `setFUSV004219SC` [-]

| # | Caller (Screen/Batch) | Call Chain (Full Path to this Method) | Terminal (SC / CRUD / Entity) |
|---|----------------------|--------------------------------------|-------------------------------|
| 1 | CBS: `FUW01403SFLogic.cfm()` | `cfm()` → `executeCfmMskmService(commonInfoBean, serviceFormBean, funcCode)` | `invokeService`, `setSvcKeiStat`, `getFUSV004201CC`, `setFUSV004225SC`, `setFUSV004224SC`, `setFUSV004210CC`, `setFUSV004209CC` |
| 2 | CBS: `FUW01403SFLogic.mskm()` | `mskm()` → `executeCfmMskmService(commonInfoBean, serviceFormBean, funcCode)` | `invokeService`, `setSvcKeiStat`, `getFUSV004201CC`, `setFUSV004225SC`, `setFUSV004224SC`, `setFUSV004210CC`, `setFUSV004209CC` |

The `cfm()` and `mskm()` methods are both CBS (Core Business Service) methods within the same `FUW01403SFLogic` class. `cfm()` handles the confirmation flow (確認), and `mskm()` handles the application/registration flow (申込). Both delegate to `executeCfmMskmService()` for the actual service execution, differing only in how they prepare their input data before this method is called.

## 6. Per-Branch Detail Blocks

**Block 1** — SET `(variable initialization)` (L727)

> Initializes the processing context: debug logging, input/output maps, and parameter map for the service invocation.

| # | Type | Code |
|---|------|------|
| 1 | LOG | `DEBUG_LOG.info("----- FUW01403 Start executeCfmMskmService -----")` |
| 2 | SET | `inputMap = new HashMap<String, Map<String, String>>()` // Service search condition storage map |
| 3 | SET | `outputMap = new HashMap<String, HashMap<String, Object>>()` // Service processing result storage map |
| 4 | SET | `paramMap = new HashMap<String, String>()` // Service parameter map |
| 5 | SET | `paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, SVC_USECASE_ID_FUSV0042)` `[-> SVC_USECASE_ID_FUSV0042="FUSV0042"]` // Sets the use-case ID for the FUSV0042 service transaction |

**Block 2** — SET `(object creation and data bean preparation)` (L735)

> Creates the database operation mapper and prepares data bean arrays for the mapping operations.

| # | Type | Code |
|---|------|------|
| 1 | SET | `mapper = new FUSV0042_FUSV0042OPDBMapper()` // DataBean-BP mapping class generator (DataBean-BPマッピングクラスタ生成) |
| 2 | SET | `serviceFormBeanArray = new X31SDataBeanAccess[] { serviceFormBean }` // Parameter array for upper/lower mapping (上下りマッピング用パラメータ生成) |
| 3 | SET | `serviceFromBeanArray2 = new X31SDataBeanAccess[] { serviceFormBean, getCommonInfoBean() }` // Extended array with commonInfoBean for later use |

**Block 3** — EXEC `(basic mapping operations — always executed)` (L739)

> Performs the foundational data mapping operations: work items, address splitting, and initial registration.

| # | Type | Code |
|---|------|------|
| 1 | CALL | `mapper.setFUSV0042WORK01(serviceFormBeanArray, inputMap, JFUStrConst.EMPTY)` // Two-number service application work items mapping 01 (2番号サービスお申し込み(申込)作業項目マップ01上下りマッピング) |
| 2 | CALL | `mapper.setJFUSplitAddressInfoCC(serviceFormBeanArray, inputMap, JFUStrConst.EMPTY)` // Address info split CC mapping (住所情報分割CC上下りマッピング) |
| 3 | CALL | `mapper.setFUSV004202SC(serviceFormBeanArray, inputMap, funcCode)` // Application registration SC mapping (登録SC上下りマッピング) |

**Block 4** — IF `(TELNO check)` (L742)

> Conditional branch: if the service form bean contains a phone number for number portability (TELNO), executes additional portability-related SC and CC mappings.

| # | Type | Code |
|---|------|------|
| 1 | CALL | `serviceFormBean.sendMessageString(FUW01403SFConst.TELNO, X31CWebConst.DATABEAN_GET_VALUE)` `[-> TELNO="番号ポートatilityを利用する電話番号"]` |
| 2 | EXEC | `this.isNull(...)` // Checks if the TELNO value is null or empty |

**Block 4.1** — IF-BRANCH `(TELNO has value)` (L744)

> When the customer is using number portability, processes portability-related service mappings.

| # | Type | Code |
|---|------|------|
| 1 | CALL | `mapper.setFUSV004212SC(serviceFormBeanArray, inputMap, JPCModelConstant.FUNC_CD_1)` // Local number consent SC mapping (局番一致同意SC上下りマッピング) |
| 2 | CALL | `mapper.setFUSV004202CC(serviceFormBeanArray, inputMap)` // Service IF result data transfer CC mapping (サービスIF結果データ移行CC上下りマッピング) |
| 3 | CALL | `mapper.setFUSV004203CC(serviceFormBeanArray, inputMap, JPCModelConstant.FUNC_CD_1)` // Phone number registration capability check CC (電話番号登録可否チェックCC) |
| 4 | CALL | `mapper.setFUSV004207CC(serviceFormBeanArray, inputMap)` // Call forwarding eligibility area check CC mapping (同番転送可能エリアチェックCC上下りマッピング) |
| 5 | CALL | `mapper.setFUSV004211CC(serviceFormBeanArray, inputMap, funcCode)` // Phone number master change CC mapping (電話番号マスター変更CC上下りマッピング) |

**Block 5** — EXEC `(common SC operations — always executed after Block 4)` (L751)

> Executes the full set of common service contract and registration SC mappings regardless of the TELNO condition. This is the core SC call chain for the two-number service.

| # | Type | Code |
|---|------|------|
| 1 | CALL | `mapper.setFUSV004213SC(serviceFormBeanArray, inputMap, JPCModelConstant.FUNC_CD_1)` // Telecom carrier list consent SC mapping (通信事業者一覧照会SC上下りマッピング) |
| 2 | CALL | `mapper.setFUSV004203SC(serviceFormBeanArray, inputMap, funcCode)` // Telephone number registration SC mapping (電話番号登録SC上下りマッピング) |
| 3 | CALL | `mapper.setFUSV004215SC(serviceFormBeanArray, inputMap, JPCModelConstant.FUNC_CD_2, this)` // eo HIKARI telephone service contract consent SC mapping (サービス契約内訳<eo光電話>一致同意SC上下りマッピング) |
| 4 | CALL | `mapper.setFUSV004214SC(serviceFormBeanArray, inputMap, funcCode)` // eo HIKARI telephone service contract registration01 SC mapping (サービス契約内訳<eo光電話>登録01SC上下りマッピング) |
| 5 | CALL | `mapper.setFUSV004206SC(serviceFormBeanArray, inputMap, funcCode)` // eo HIKARI telephone service contract registration SC mapping (サービス契約内訳<eo光電話>登録SC上下りマッピング) |
| 6 | CALL | `mapper.setFUSV004207SC(serviceFormBeanArray, inputMap, funcCode)` // Optional service contract (telephone) registration SC mapping (オプションサービス契約<電話>登録SC上下りマッピング) |
| 7 | CALL | `mapper.setFUSV004209SC(serviceFormBeanArray, inputMap, funcCode)` // Progress registration SC mapping (進捗登録SC上下りマッピング) |
| 8 | CALL | `mapper.setFUSV004210SC(serviceFormBeanArray, inputMap, JPCModelConstant.FUNC_CD_1)` // Business parameter management consent SC mapping (業務パラメータ管理一致同意SC上下りマッピング) |
| 9 | CALL | `mapper.setFUSV004211SC(serviceFormBeanArray, inputMap, funcCode)` // Optional service contract (telephone) registration SC mapping (duplicate — second call) (オプションサービス契約<電話>登録SC上下りマッピング) |
| 10 | CALL | `mapper.setFUSV004204CC(serviceFormBeanArray, inputMap, funcCode)` // Data transfer component consent item CC mapping (データ移行コモコン部品CC上下りマッピング) |
| 11 | CALL | `mapper.setFUSV004206CC(serviceFormBeanArray, inputMap, funcCode)` // Data transfer component consent item CC mapping (second pass) (データ移行コモコン部品CC上下りマッピング) |
| 12 | CALL | `mapper.setFUSV004205CC(serviceFormBeanArray, inputMap, funcCode)` // Device optional service contract registration component CC mapping (機器オプションサービス契約登録コモコン部品CC上下りマッピング) |

**Block 6** — SET `(retrieve noTchSvcUm flag)` (L769)

> Reads the "outbound caller number notification presence/absence" flag from the service form bean to determine whether optional service management is active.

| # | Type | Code |
|---|------|------|
| 1 | SET | `noTchSvcUm = serviceFormBean.sendMessageString(FUW01403SFConst.NO_TCH_SVC_UM, X31CWebConst.DATABEAN_GET_VALUE)` `[-> NO_TCH_SVC_UM="発信者番号通知有无"]` |
| 2 | EXEC | `this.isNull(noTchSvcUm)` // Prepares for null check |

**Block 7** — IF `(noTchSvcUm check — submission content branch)` (L771)

> When `noTchSvcUm` is not null/empty, enters the optional service management branch. This controls whether the customer has an active optional service management configuration that affects the service registration workflow.

| # | Type | Code |
|---|------|------|
| 1 | CALL | `mapper.setFUSV004216SC(serviceFormBeanArray, inputMap, funcCode)` // Submission content approval registration SC mapping (申請内容承認登録SC上下りマッピング) |

**Block 7.1** — IF-ELSE `(noTchSvcUm value check — service start vs. cancellation path)` (L773)

> Branches on the exact value of `noTchSvcUm`. If equal to `"1"`, processes the optional service contract **start** (registration + activation) workflow. Otherwise, processes the **cancellation** (consent withdrawal) workflow.

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `NO_TCH_SVC_UM_1.equals(noTchSvcUm)` `[-> NO_TCH_SVC_UM_1="1"]` |

**Block 7.1.1** — IF-BRANCH `(noTchSvcUm == "1": service start path)` (L775)

> When `noTchSvcUm` equals `"1"`, processes the optional service contract registration, consent, settlement, and **start** (activation) workflow. This is the happy path where the customer is registering and activating an optional service.

| # | Type | Code |
|---|------|------|
| 1 | CALL | `mapper.setFUSV004217SC(serviceFormBeanArray, inputMap, funcCode)` // Optional service contract (telephone) registration SC mapping (オプションサービス契約<電話>登録SC上下りマッピング) |
| 2 | CALL | `mapper.setFUSV004218SC(serviceFormBeanArray, inputMap, funcCode)` // Optional service contract (telephone) consent SC mapping (オプションサービス契約<電話>照会SC上下りマッピング) |
| 3 | CALL | `mapper.setFUSV004219SC(serviceFormBeanArray, inputMap, funcCode)` // Optional service contract (telephone) consent settlement SC mapping (オプションサービス契約<電話>照会締結SC上下りマッピング) |
| 4 | CALL | `mapper.setFUSV004220SC(serviceFormBeanArray, inputMap, funcCode)` // Optional service contract (telephone) start SC mapping (オプションサービス契約<電話>開始SC上下りマッピング) |

**Block 7.1.2** — ELSE-BRANCH `(noTchSvcUm != "1": cancellation path)` (L782)

> When `noTchSvcUm` has a non-null but non-"1" value, processes the optional service contract **cancellation** and consent withdrawal workflow. The customer is canceling an existing optional service.

| # | Type | Code |
|---|------|------|
| 1 | CALL | `mapper.setFUSV004208CC(serviceFormBeanArray, inputMap, funcCode)` // Non-billing decision CC mapping (非課金判定CC上下りマッピング) |
| 2 | CALL | `mapper.setFUSV004221SC(serviceFormBeanArray, inputMap, funcCode)` // Optional service contract (telephone) cancellation SC mapping (オプションサービス契約<電話>解約SC上下りマッピング) |
| 3 | CALL | `mapper.setFUSV004222SC(serviceFormBeanArray, inputMap, funcCode)` // Optional service contract (telephone) cancellation confirmation SC mapping (オプションサービス契約<電話>解約確定SC上下りマッピング) |
| 4 | CALL | `mapper.setFUSV004223SC(serviceFormBeanArray, inputMap, funcCode)` // Optional service contract (telephone) cancellation consent SC mapping (オプションサービス契約<電話>キャンセルSC上下りマッピング) |

**Block 7.2** — EXEC `(post-processing after Block 7 — always executed when noTchSvcUm is not null)` (L791)

> Executes post-processing mappings including progress registration (with both serviceFormBean and commonInfoBean), application detail consent and follow-up work request, and final data transfer and order issuance operations.

| # | Type | Code |
|---|------|------|
| 1 | CALL | `mapper.setFUSV004224SC(serviceFromBeanArray2, inputMap, funcCode)` // Progress registration SC mapping (uses extended bean array with commonInfoBean) (進捗登録SC上下りマッピング) |
| 2 | CALL | `mapper.setFUSV004225SC(serviceFormBeanArray, inputMap, funcCode)` // Application detail consent and follow-up work request SC mapping (申請明细照会・後続業務依頼SC上下りマッピング) |
| 3 | CALL | `mapper.setFUSV004209CC(serviceFormBeanArray, inputMap)` // Service IF result data transfer CCCC mapping (サービスIF結果データ移行CCCC上下りマッピング) |
| 4 | CALL | `mapper.setFUSV004210CC(serviceFormBeanArray, inputMap, funcCode)` // Service order issuance CCCC mapping (サービスオーダ発行CCCC上下りマッピング) |

**Block 8** — EXEC `(set service contract status)` (L803)

> Sets the service contract status flag via the web common utility before invoking the remote service.

| # | Type | Code |
|---|------|------|
| 1 | CALL | `JFUWebCommon.setSvcKeiStat(this, inputMap)` // Sets the service contract status (サービス契約ステータスを設定) |

**Block 9** — TRY-CATCH `(service invocation with exception handling)` (L805)

> Invokes the remote two-number service application transaction. This is the critical business transaction that persists the contract data. If a `JCCWebServiceException` is thrown, the exception is handled by `handleMskmException()` which performs application-time error handling (申請時例外ハンドリング処理).

| # | Type | Code |
|---|------|------|
| 1 | CALL | `invokeService(paramMap, inputMap, outputMap)` // Two-number service application service invocation (2番号サービスお申し込み(申込)サービス呼び出し) |
| 2 | CATCH | `JCCWebServiceException se` → `this.handleMskmException(se, funcCode)` // Application-time exception handling (申請時例外ハンドリング処理) |

**Block 10** — EXEC `(lower mapping — retrieve results)` (L815)

> After the service invocation completes (whether successfully or after exception handling), retrieves the service results from the outputMap and maps them back into the serviceFormBean for the response to the caller.

| # | Type | Code |
|---|------|------|
| 1 | CALL | `mapper.getFUSV004201CC(serviceFormBean, outputMap)` // Retrieves mapped results back into serviceFormBean (下りマッピング) |

**Block 11** — RETURN `(return service processing result)` (L821)

> Returns the structured output map containing the service processing results to the caller (`cfm()` or `mskm()`).

| # | Type | Code |
|---|------|------|
| 1 | LOG | `DEBUG_LOG.info("----- FUW01403 End executeCfmMskmService -----")` |
| 2 | RETURN | `return outputMap` // Service processing result (サービス処理結果を返却) |

## 7. Glossary

| Term | Type | Business Meaning |
|------|------|------------------|
| `TELNO` | Constant | Phone number using number portability — the existing phone number the customer wishes to port to the new two-number service |
| `noTchSvcUm` | Variable | Outbound caller number notification presence/absence flag — controls whether optional service management is active for this contract |
| `noTchSvcUm_1` | Constant Value | `"1"` — indicates optional service management is active (service start path) |
| `SVC_USECASE_ID_FUSV0042` | Constant | `"FUSV0042"` — the use-case identifier for the FUSV0042 service transaction |
| `funcCode` | Parameter | Function code — identifies the processing mode or screen invocation context for differentiating operational modes |
| `two-number service` | Business term | Two-Number Service (2番号サービス) — a K-Opticom telecom service that consolidates multiple phone numbers under a single contract while maintaining individual caller ID identities |
| `FUSV0042` | Service | The core telecom service component for two-number service application and registration |
| `SC` | Abbreviation | Service Component — backend business logic component that handles specific service operations |
| `CC` | Abbreviation | Common Component — shared utility component for cross-cutting concerns (validation, data transfer, mapping) |
| `invokeService` | Method | Remote service invocation that triggers the actual telecom service transaction (persists contract data) |
| `JCCWebServiceException` | Exception | Web service exception thrown during remote service invocation, handled by `handleMskmException()` |
| `FUSV0042_FUSV0042OPDBMapper` | Class | Database operation mapper class for the FUSV0042 service — handles all dataBean-to-inputMap and inputMap-to-outputMap transformations |
| `X31SDataBeanAccess` | Class | Shared data bean access class — the primary data carrier for form data between the web layer and service layer |
| `serviceFormBean` | Parameter | The two-number service application form bean containing customer data, phone numbers, address, and service configuration |
| `commonInfoBean` | Parameter | Shared screen context bean carrying authentication, session, and common UI state |
| `inputMap` | Variable | Map collecting all service search conditions and parameters passed to the remote service |
| `outputMap` | Variable | Map collecting all service processing results returned from the remote service |
| `paramMap` | Variable | Map containing the use-case ID (`TELEGRAM_INFO_USECASE_ID`) for service routing |
| `serviceFormBeanArray` | Variable | Array containing the service form bean — used as parameter for SC/CC mapping methods |
| `serviceFromBeanArray2` | Variable | Extended array containing both serviceFormBean and commonInfoBean — used when both beans are needed |
| `JPCModelConstant.FUNC_CD_1` | Constant | Function code constant 1 — used in SC calls that require a standard function code |
| `JPCModelConstant.FUNC_CD_2` | Constant | Function code constant 2 — used in SC calls that require a differentiated function code |
| `JFUStrConst.EMPTY` | Constant | Empty string constant used as a default/null parameter in mapping operations |
| `JFUWebCommon.setSvcKeiStat` | Method | Sets the service contract status flag in the input map before service invocation |
| `handleMskmException` | Method | Two-number service application exception handler — processes application-time errors and determines error routing |
| `cfm()` | Method | Confirmation flow CBS method — calls `executeCfmMskmService()` for the confirmation path |
| `mskm()` | Method | Application/registration flow CBS method — calls `executeCfmMskmService()` for the registration path |
| `setFUSV0042WORK01` | Method | Maps two-number service application work items (preparation phase) |
| `setJFUSplitAddressInfoCC` | Method | Splits address data into constituent fields (prefecture, city, town, building) |
| `setFUSV004202SC` | Method | Maps application registration service data |
| `setFUSV004212SC` | Method | Maps local number portability consent service data |
| `setFUSV004203CC` | Method | Validates phone number registration capability |
| `setFUSV004207CC` | Method | Checks call forwarding eligibility area (geographic routing validation) |
| `setFUSV004213SC` | Method | Maps telecom carrier list consent service data |
| `setFUSV004203SC` | Method | Maps telephone number registration service data |
| `setFUSV004215SC` | Method | Maps eo HIKARI telephone service contract consent service data |
| `setFUSV004214SC` | Method | Maps eo HIKARI telephone service contract registration01 service data |
| `setFUSV004206SC` | Method | Maps eo HIKARI telephone service contract registration service data |
| `setFUSV004207SC` | Method | Maps optional service contract (telephone) registration service data |
| `setFUSV004209SC` | Method | Maps progress registration service data (service activation tracking) |
| `setFUSV004210SC` | Method | Maps business parameter management consent service data |
| `setFUSV004216SC` | Method | Maps submission content approval registration service data (conditional on noTchSvcUm) |
| `setFUSV004217SC` through `setFUSV004220SC` | Methods | Optional service contract start workflow — registration, consent, settlement, and activation |
| `setFUSV004208CC` | Method | Non-billing decision component mapping (cancellation path) |
| `setFUSV004221SC` through `setFUSV004223SC` | Methods | Optional service contract cancellation workflow — cancellation, confirmation, and consent withdrawal |
| `setFUSV004224SC` | Method | Progress registration service mapping (extended array with commonInfoBean) |
| `setFUSV004225SC` | Method | Application detail consent and follow-up work request service mapping |
| `getFUSV004201CC` | Method | Retrieves mapped results from outputMap back into the service form bean (lower mapping) |
