# Business Logic — JKKKddiKeishaInfoCC.extractSvcKeiStateCancel() [150 LOC]

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

## 1. Role

### JKKKddiKeishaInfoCC.extractSvcKeiStateCancel()

This method extracts service contracts (SVC_KEI records) from a provided list that represent **canceled or cancelled (Kyuyaku/Cancel) net-type contracts**. It operates as a **filter** in the NTT Docomo customer information (KaiSha) domain: it receives a list of service contract messages (`List<CAANMsg>`), evaluates each against a set of business rules, and returns a subset containing only those contracts that meet the cancellation/cancel-completed criteria.

The method handles **three primary service contract statuses**: `220` (Suspended / Teishi-Chu), `910` (Cancelled / Kaiyaku), and `920` (Cancel Completed / Cancel-Kanryo). For contracts in status `020` (Under Review / Shousha), it delegates to the `isShosaOK` method to determine whether the contract is still undergoing validation — if validation is NOT yet complete (`!isShosaOK`), the contract is treated as still in-progress and is **counted as** a canceled net contract. For status `030` (Contracted / Ketsuro) contracts, it additionally cross-references work case (Kojiak) details to check whether a temporary cancel flag (`KJ_KR_CNCL_FLG`) is set.

This method implements the **filter/selector design pattern**: it iterates over an input collection, applies conditional predicates, and builds a result set. It is a **shared utility** called internally by the broader customer information retrieval flow (`getKddiKeishaInfo`), ensuring that downstream screens and processes see only the relevant subset of cancelled net contracts. The business purpose is to identify which net-type service lines (Home Type, Meson Type, Mansion Type) should be surfaced in cancellation/cancel-related screens or reports.

## 2. Processing Pattern (Detailed Business Logic)

```mermaid
flowchart TD
    START(["extractSvcKeiStateCancel(params)"])
    INIT_LIST(["list = new LinkedList<CAANMsg>()"])
    INIT_STATUS(["statusList = {220, 910, 920}"])
    INIT_KOJI_STAT(["kojiStatList = {140..190}"])
    LOOP_START(["for each svcKei in svcKeiList"])
    GET_MSG(["caanMsgData = svcKeiList.get(i)"])
    GET_PRC(["prc_grp_cd = getNullToStr(caanMsgData.getString(PRC_GRP_CD))"])
    GET_STATUS(["statusCd = getNullToStr(caanMsgData.getString(SVC_KEI_STAT))"])
    CHECK_NET["is prc_grp_cd
in PRC_GRP_CD_NET?
(Home/Meson/Mansion types)"]
    GET_SVC_NO(["svcKeiNo = getNullToStr(caanMsgData.getString(SVC_KEI_NO))"])
    GET_CUST["getEKU0081B010(handle, param, fixedText, svcKeiNo)
(Service contract-work case cross-ref)"]
    CHECK_NULL["cAANMsgCust != null
and length > 0?"]
    KOJI_LOOP["for each cAANMsgCust[k]"]
    GET_KOJI_NO(["kojiakNo = getNullToStr(cAANMsgCust[k].getString(KOJIAK_NO))"])
    GET_KOJI["getEKU0011A010(handle, param, fixedText, kojiakNo)
(Work case detail)"]
    CHECK_KOJI["cAANMsgKoji != null?"]
    GET_KOJI_STAT(["kojiakStat = getNullToStr(cAANMsgKoji.getString(KOJIAK_STAT))"])
    GET_KOJI_SBT(["kojiakSbtCd = getNullToStr(cAANMsgKoji.getString(KOJIAK_SBT_CD))"])
    CHECK_KOJI_STAT["kojiakStat in kojiStatList
AND
kojiakSbtCd = CD00577_NEWESTA
(Work pending to field work done
and type = new installation)"]
    GET_KJ_KR(["kjKrCnclFlg = getNullToStr(cAANMsgKoji.getString(KJ_KR_CNCL_FLG))"])
    BREAK(["break inner loop"])
    CHECK_ADD_CONDITION["Add check: any of:
(1) statusCd=020 AND !isShosaOK
(2) statusCd in {220,910,920}
(3) statusCd=020/030 AND kjKrCnclFlg=1"]
    ADD_TO_LIST(["list.add(caanMsgData)"])
    LOOP_END_KOJI(["end kojiak loop"])
    LOOP_END_MAIN(["end main loop"])
    RETURN(["return list"])
    END_NODE(["Return extracted list"])

    START --> INIT_LIST --> INIT_STATUS --> INIT_KOJI_STAT
    INIT_KOJI_STAT --> LOOP_START
    LOOP_START --> GET_MSG --> GET_PRC --> GET_STATUS
    GET_STATUS --> CHECK_NET
    CHECK_NET -- "Yes (net contract)" --> GET_SVC_NO
    CHECK_NET -- "No (skip)" --> LOOP_END_MAIN
    GET_SVC_NO --> GET_CUST --> CHECK_NULL
    CHECK_NULL -- "Yes" --> KOJI_LOOP
    CHECK_NULL -- "No" --> LOOP_END_KOJI
    KOJI_LOOP --> GET_KOJI_NO --> GET_KOJI --> CHECK_KOJI
    CHECK_KOJI -- "Yes" --> GET_KOJI_STAT
    CHECK_KOJI -- "No" --> LOOP_END_KOJI
    GET_KOJI_STAT --> GET_KOJI_SBT --> CHECK_KOJI_STAT
    CHECK_KOJI_STAT -- "Yes" --> GET_KJ_KR
    CHECK_KOJI_STAT -- "No" --> LOOP_END_KOJI
    GET_KJ_KR --> BREAK --> LOOP_END_KOJI
    LOOP_END_KOJI --> LOOP_END_MAIN
    LOOP_END_MAIN --> CHECK_ADD_CONDITION
    CHECK_ADD_CONDITION -- "True" --> ADD_TO_LIST
    CHECK_ADD_CONDITION -- "False" --> LOOP_END_MAIN
    ADD_TO_LIST --> LOOP_END_MAIN
    LOOP_END_MAIN --> RETURN --> END_NODE
```

```mermaid
sequenceDiagram
    participant SVC as extractSvcKeiStateCancel
    participant MSG as CAANMsg
    participant E81 as getEKU0081B010
    participant E11 as getEKU0011A010
    participant SHOSAI as isShosaOK

    SVC->>MSG: getString(PRC_GRP_CD)
    SVC->>MSG: getString(SVC_KEI_STAT)
    SVC->>MSG: getString(SVC_KEI_NO)
    SVC->>E81: getEKU0081B010(handle, param, fixedText, svcKeiNo)
    E81-->>SVC: CAANMsg[] cAANMsgCust
    SVC->>MSG: getString(KOJIAK_NO)
    SVC->>E11: getEKU0011A010(handle, param, fixedText, kojiakNo)
    E11-->>SVC: CAANMsg cAANMsgKoji
    SVC->>MSG: getString(KOJIAK_STAT)
    SVC->>MSG: getString(KOJIAK_SBT_CD)
    SVC->>MSG: getString(KJ_KR_CNCL_FLG)
    alt status=020
        SVC->>SHOSAI: isShosaOK(handle, param, fixedText, svcKeiNo)
        SHOSAI-->>SVC: boolean
    end
    SVC-->>SVC: return List<CAANMsg>
```

### Processing Summary

| Step | Description | Lines |
|------|-------------|-------|
| 1 | Initialize result list `list` | 5131 |
| 2 | Build `statusList` with cancellation-relevant statuses (`220`, `910`, `920`) | 5133–5135 |
| 3 | Initialize work-case status tracking variables (KOJIAK fields) to empty strings (post-OM-2018-0001092 modification) | 5141–5150 |
| 4 | Build `kojiStatList` with work-case statuses ranging from "Pending" to "Field Work Completed" | 5153–5163 |
| 5 | Main loop: iterate over each `CAANMsg` in `svcKeiList` | 5165 |
| 6 | Extract `prc_grp_cd` (price group code) and `statusCd` (service contract status) from the message | 5170–5171 |
| 7 | Filter: only proceed if `prc_grp_cd` is in `PRC_GRP_CD_NET` (net-type contracts) | 5187 |
| 8 | For net contracts: extract `svcKeiNo`, then fetch associated work-case data via `getEKU0081B010` | 5193–5201 |
| 9 | Nested loop over work-case results: extract work-case number, fetch work-case detail via `getEKU0011A010` | 5203–5213 |
| 10 | Check if work-case status is in the active range and type is "new installation"; if so, extract temporary cancel flag and break | 5217–5221 |
| 11 | Final add-check: accumulate the contract into `list` if any cancellation/conditional criteria are met | 5225–5233 |

## 3. Parameter Analysis

| No | Parameter Name | Type | Business Description |
|----|---------------|------|---------------------|
| 1 | `handle` | `SessionHandle` | Database session handle for executing cross-reference queries (`getEKU0081B010`, `getEKU0011A010`). Provides the connection context needed to read work-case and validation data. |
| 2 | `param` | `IRequestParameterReadWrite` | Request parameter object carrying shared request context (e.g., operator ID, session tokens, screen parameters) passed through to subsidiary queries. |
| 3 | `fixedText` | `String` | Fixed text parameter forwarded to subsidiary methods (`getEKU0081B010`, `getEKU0011A010`, `isShosaOK`). Typically used for error message formatting or screen-specific constant text. |
| 4 | `svcKeiList` | `List<CAANMsg>` | **Input**: The full list of service contract messages to filter. Each `CAANMsg` represents one service contract line (SVC_KEI) with fields like price group code (`PRC_GRP_CD`), status (`SVC_KEI_STAT`), and service contract number (`SVC_KEI_NO`). |

### Instance Fields / External State

No instance fields are directly read by this method. All state is derived from parameters or obtained through method calls.

## 4. CRUD Operations / Called Services

| CRUD | SC / CBS | SC Code | Entity / DB | Operation Description |
|------|----------|---------|-------------|----------------------|
| R | `getEKU0081B010` | EKU0081B010 | SVC_KEI_KOJIAK (Service Contract — Work Case Cross-Reference) | Reads work-case associations for a given service contract number (`svcKeiNo`). Returns an array of `CAANMsg` containing work-case numbers (`KOJIAK_NO`). |
| R | `getEKU0011A010` | EKU0011A010 | KOJIAK (Work Case / Kojiak Table) | Reads detailed work-case information for a given work-case number (`kojiakNo`). Returns a `CAANMsg` with work-case status (`KOJIAK_STAT`), work-case type code (`KOJIAK_SBT_CD`), and temporary cancel flag (`KJ_KR_CNCL_FLG`). |
| R | `isShosaOK` | (internal) | - | Checks whether service contract validation/inspection (`Shosa`) is complete for a given service contract number. Returns `true` if validation is done, `false` if still pending. Used to determine whether a status `020` contract should be included. |
| R | `getNullToStr` | (internal utility) | - | Null-safe string conversion utility. Converts `null` values to empty strings to prevent NPE during string comparisons. |
| R | `CAANMsg.getString` | - | - | Field accessor on the `CAANMsg` object. Reads individual fields from the service contract message. |
| R | `EKK0251B005CBSMsg1List` | EKK0251B005CBS | (field constant definitions) | CBS message field constant class providing field name constants: `PRC_GRP_CD`, `SVC_KEI_STAT`, `SVC_KEI_NO`. |
| R | `EKU0081B010CBSMsg1List` | EKU0081B010CBS | (field constant definitions) | CBS message field constant class providing field name constants: `KOJIAK_NO`. |
| R | `EKU0011A010CBSMsg1List` | EKU0011A010CBS | (field constant definitions) | CBS message field constant class providing field name constants: `KOJIAK_STAT`, `KOJIAK_SBT_CD`, `KJ_KR_CNCL_FLG`. |

## 5. Dependency Trace

| # | Caller (Screen/Batch) | Call Chain (Full Path to this Method) | Terminal (SC / CRUD / Entity) |
|---|----------------------|--------------------------------------|-------------------------------|
| 1 | `getKddiKeishaInfo` (JKKKddiKeishaInfoCC) | `getKddiKeishaInfo()` -> `extractSvcKeiStateCancel(handle, param, fixedText, svcKeiList)` | `isShosaOK [R]`, `getNullToStr [R]`, `getString [R]`, `getEKU0081B010 [R]`, `getEKU0011A010 [R]` |

### Dependency Diagram

```mermaid
flowchart LR
    Caller["getKddiKeishaInfo
(JKKKddiKeishaInfoCC)"]
    Target["extractSvcKeiStateCancel
(JKKKddiKeishaInfoCC)"]
    E81["getEKU0081B010
(EKU0081B010CBS)"]
    E11["getEKU0011A010
(EKU0011A010CBS)"]
    SHOSAI["isShosaOK
(JKKKddiKeishaInfoCC)"]
    NULL["getNullToStr
(JKKKddiKeishaInfoCC)"]

    Caller --> Target
    Target --> E81
    Target --> E11
    Target --> SHOSAI
    Target --> NULL
```

## 6. Per-Branch Detail Blocks

### Block 1 — Initialization `(L5131)`

> Initialize the result list, status filter list, work-case tracking variables, and work-case status list.

| # | Type | Code |
|---|------|------|
| 1 | SET | `list = new LinkedList<CAANMsg>()` // Result accumulator |
| 2 | SET | `statusList = new LinkedList<String>()` // Status filter |
| 3 | SET | `statusList.add("220")` `[-> ITNTOKI_STA_END_JUDGE_CD_PAUSE_STA="220"]` // Suspended |
| 4 | SET | `statusList.add("910")` // Cancelled (Kaiyaku) |
| 5 | SET | `statusList.add("920")` // Cancel Completed (Cancel-Kanryo) |
| 6 | SET | `kojiakNo = ""` `[-> ANK-3136-00-00 2017/11/28 MOD]` // Work-case number (changed from null to empty string) |
| 7 | SET | `kojiakStat = ""` // Work-case status |
| 8 | SET | `kojiakSbtCd = ""` // Work-case type code |
| 9 | SET | `kjKrCnclFlg = ""` // Temporary cancel flag |
| 10 | SET | `kojiStatList = new LinkedList<String>()` // Work-case status range filter |
| 11 | SET | `kojiStatList.add(JKKStrConst.CD00474_140)` // Work-case status: Pending (Iraicho) |
| 12 | SET | `kojiStatList.add(JKKStrConst.CD00474_150)` // Work-case status: Home Inspection Complete |
| 13 | SET | `kojiStatList.add(JKKStrConst.CD00474_160)` // Work-case status: Construction Company Decided |
| 14 | SET | `kojiStatList.add(JKKStrConst.CD00474_170)` // Work-case status: Home Equipment Pre-registration Complete |
| 15 | SET | `kojiStatList.add(JKKStrConst.CD00474_180)` // Work-case status: Temporary Key Issuance Request Complete |
| 16 | SET | `kojiStatList.add(JKKStrConst.CD00474_190)` // Work-case status: Field Work Complete |

### Block 2 — Main Loop: Iterate Over `svcKeiList` `(L5165)`

> Loop through each service contract message in the input list.

| # | Type | Code |
|---|------|------|
| 1 | SET | `caanMsgData = svcKeiList.get(i)` // Current service contract message |
| 2 | SET | `prc_grp_cd = getNullToStr(caanMsgData.getString(EKK0251B005CBSMsg1List.PRC_GRP_CD))` `[-> PRC_GRP_CD="prc_grp_cd" (EKK0251B005CBSMsg1List)]` // Price group code |
| 3 | SET | `statusCd = getNullToStr(caanMsgData.getString(EKK0251B005CBSMsg1List.SVC_KEI_STAT))` `[-> SVC_KEI_STAT="svc_kei_stat" (EKK0251B005CBSMsg1List)]` // Service contract status |

#### Block 2.1 — Conditional: Net-Type Contract Filter `(L5187)`

> Check if the price group code matches a net-type contract (Home/Meson/Mansion). Only net-type contracts are relevant for cancellation extraction.

| # | Type | Code |
|---|------|------|
| 1 | IF | `PRC_GRP_CD_NET.contains(prc_grp_cd)` `[-> PRC_GRP_CD_NET=net-price-group-codes (defined in constant class)]` // Net-type filter |

##### Block 2.1.1 — Extract Service Contract Number `(L5193)`

> For net contracts, extract the service contract number needed for downstream lookups.

| # | Type | Code |
|---|------|------|
| 1 | SET | `svcKeiNo = getNullToStr(caanMsgData.getString(EKK0251B005CBSMsg1List.SVC_KEI_NO))` `[-> SVC_KEI_NO="svc_kei_no" (EKK0251B005CBSMsg1List)]` // Service contract number |

##### Block 2.1.2 — Fetch Work-Case Cross-Reference `(L200)`

> Retrieve the list of work cases associated with this service contract.

| # | Type | Code |
|---|------|------|
| 1 | CALL | `cAANMsgCust = getEKU0081B010(handle, param, fixedText, svcKeiNo)` `[-> EKU0081B010CBS]` // Service contract-work case cross-reference |

##### Block 2.1.3 — Conditional: Work-Case Results Not Null `(L203)`

> Check if the cross-reference query returned non-null and non-empty results.

| # | Type | Code |
|---|------|------|
| 1 | IF | `cAANMsgCust != null` |

###### Block 2.1.3.1 — Conditional: Work-Case Array Not Empty `(L205)`

> Check if the cross-reference returned at least one work-case entry.

| # | Type | Code |
|---|------|------|
| 1 | IF | `cAANMsgCust.length != 0` |

###### Block 2.1.3.2 — Nested Loop: Iterate Over Work Cases `(L207)`

> For each associated work case, fetch detailed information.

| # | Type | Code |
|---|------|------|
| 1 | SET | `kojiakNo = getNullToStr(cAANMsgCust[k].getString(EKU0081B010CBSMsg1List.KOJIAK_NO))` `[-> KOJIAK_NO="kojiak_no" (EKU0081B010CBSMsg1List)]` // Work-case number |
| 2 | CALL | `cAANMsgKoji = getEKU0011A010(handle, param, fixedText, kojiakNo)` `[-> EKU0011A010CBS]` // Work case detail query |
| 3 | IF | `cAANMsgKoji != null` |

####### Block 2.1.3.2.1 — Extract Work-Case Status and Type `(L215)`

> Read the work-case status and type code from the detail result.

| # | Type | Code |
|---|------|------|
| 1 | SET | `kojiakStat = getNullToStr(cAANMsgKoji.getString(EKU0011A010CBSMsg1List.KOJIAK_STAT))` `[-> KOJIAK_STAT="kojiak_stat" (EKU0011A010CBSMsg1List)]` // Work-case status |
| 2 | SET | `kojiakSbtCd = getNullToStr(cAANMsgKoji.getString(EKU0011A010CBSMsg1List.KOJIAK_SBT_CD))` `[-> KOJIAK_SBT_CD="kojiak_sbt_cd" (EKU0011A010CBSMsg1List)]` // Work-case type code |

####### Block 2.1.3.2.2 — Conditional: Active Work Case + New Installation `(L217)`

> Check if the work case is in an active construction state AND is a new installation type. This condition identifies contracts where installation is underway.

| # | Type | Code |
|---|------|------|
| 1 | IF | `kojiStatList.contains(kojiakStat) && JKKStrConst.CD00577_NEWESTA.equals(kojiakSbtCd)` `[-> CD00577_NEWESTA=new-installation-type (KKStrConst)]` |
| 2 | SET | `kjKrCnclFlg = getNullToStr(cAANMsgKoji.getString(EKU0011A010CBSMsg1List.KJ_KR_CNCL_FLG))` `[-> KJ_KR_CNCL_FLG="kj_kr_cncl_flg" (EKU0011A010CBSMsg1List)]` // Temporary cancel flag |
| 3 | EXEC | `break` // Exit inner loop once an active new-install work case is found |

#### Block 2.2 — Final Add-Check Condition `(L225)`

> After processing (or skipping) work-case lookups, determine whether this service contract should be accumulated into the result list.

| # | Type | Code |
|---|------|------|
| 1 | IF | `(statusCd="020" && !isShosaOK(handle, param, fixedText, svcKeiNo))` `[-> ITNTOKI_STA_END_JUDGE_CD_NON="020"]` // Under review but validation not yet complete |
| 2 | IF \| \|\| | `statusList.contains(statusCd)` `[-> statusList={"220","910","920"}]` // Suspended, Cancelled, or Cancel Completed |
| 3 | IF \| \|\| | `(statusCd="020" \|\| statusCd="030") && "1".equals(kjKrCnclFlg)` `[-> ITNTOKI_STA_END_JUDGE_CD_NON="020", ITNTOKI_STA_END_JUDGE_CD_NON="030"]` // Under review or Contracted AND temporary cancel flag is set |
| 4 | SET | `list.add(caanMsgData)` // Count this contract as a cancelled net contract |

#### Block 2.3 — Loop Termination `(L229)`

> End of main loop iteration. Continue until all service contracts are evaluated.

| # | Type | Code |
|---|------|------|
| 1 | LOOP | `i++` // Next iteration |

### Block 3 — Return `(L233)`

> Return the accumulated list of cancelled net-type service contracts.

| # | Type | Code |
|---|------|------|
| 1 | RETURN | `return list` // List<CAANMsg> — filtered subset of svcKeiList |

## 7. Glossary

| Term | Type | Business Meaning |
|------|------|------------------|
| `extractSvcKeiStateCancel` | Method | Extracts cancelled/cancelled net-type service contracts from a list |
| `svc_kei_no` | Field | Service Contract Number — unique identifier for a service contract line (SVC_KEI) |
| `svc_kei_stat` | Field | Service Contract Status — code indicating the current state of a service contract (020=Under Review, 030=Contracted, 220=Suspended, 910=Cancelled, 920=Cancel Completed) |
| `prc_grp_cd` | Field | Price Group Code — classifies the service contract into a pricing group (Home Type, Meson Type, Mansion Type for net contracts) |
| `kojiak_no` | Field | Work-Case Number — identifier for an installation/work order associated with a service contract |
| `kojiak_stat` | Field | Work-Case Status — current state of the installation work (140=Pending through 190=Field Work Completed) |
| `kojiak_sbt_cd` | Field | Work-Case Type Code — type classification of the work case (e.g., new installation) |
| `kj_kr_cncl_flg` | Field | Temporary Cancel Flag — indicator flag for temporary cancellation processing |
| `CD00474_140` | Constant | Work-Case Status: Pending (Iraicho-Matsuchi) |
| `CD00474_150` | Constant | Work-Case Status: Home Inspection Complete (Shone Chosa Kanryo-Zum) |
| `CD00474_160` | Constant | Work-Case Status: Construction Company Decided (Kouzou Gaisha Kettei-Zum) |
| `CD00474_170` | Constant | Work-Case Status: Home Equipment Pre-registration Complete (Shone Kiki Yoyotoroku-Zum) |
| `CD00474_180` | Constant | Work-Case Status: Temporary Key Issuance Request Complete (KariKai Kaihatsu Input Ryaku-Zum) |
| `CD00474_190` | Constant | Work-Case Status: Field Work Completed (Genba Sakugyou Kanryo-Zum) |
| `CD00577_NEWESTA` | Constant | Work-Case Type Code: New Installation (Shinsetu) |
| `PRC_GRP_CD_NET` | Constant | Net-type price group code values (Home/Meson/Mansion types) — identifies contracts eligible for net-contract processing |
| `020` | Status Code | Under Review (Shousha) — service contract awaiting validation/inspection |
| `030` | Status Code | Contracted (Ketsuro-Zum) — service contract finalized |
| `220` | Status Code | Suspended (Teishi-Chu) — service contract temporarily suspended |
| `910` | Status Code | Cancelled (Kaiyaku) — service contract terminated |
| `920` | Status Code | Cancel Completed (Cancel-Kanryo) — cancellation process finalized |
| `CAANMsg` | Class | Customer Account Announcement Message — message object carrying service contract field data |
| `SessionHandle` | Class | Database session handle — provides the connection context for SQL queries |
| `IRequestParameterReadWrite` | Interface | Request parameter interface — carries shared request context between methods |
| `getEKU0081B010` | Method | Service contract-work case cross-reference query — retrieves work-case numbers linked to a service contract |
| `getEKU0011A010` | Method | Work case detail query — retrieves detailed information for a specific work case |
| `isShosaOK` | Method | Service validation check — determines whether a service contract has completed its validation/inspection process |
| `getNullToStr` | Method | Null-to-string utility — converts null values to empty strings to prevent NPE |
| `KKSV0004` | Screen | NTT Docomo Customer Information Screen (KaiSha — 会社) — caller of the parent method `getKddiKeishaInfo` |
| `getKddiKeishaInfo` | Method | Retrieves NTT Docomo customer information — top-level method that calls `extractSvcKeiStateCancel` |
| FTTH | Business term | Fiber To The Home — fiber-optic broadband internet service |
| Net Contract | Business term | A service contract for network-type services (as opposed to phone-only or other service types), identified by price group code |
| Kojiak (工事案件) | Business term | Work Case / Installation Order — the field installation work order associated with a service contract |
| Shosa (照査) | Business term | Validation / Inspection — the process of reviewing and validating a service contract before activation |
| Kaiyaku (解約) | Business term | Cancellation / Contract Termination — the act of terminating a service contract |
| Cancel (キャンセル) | Business term | Cancel — a cancellation request that has been processed but not yet finalized |
| Teishi (停止) | Business term | Suspension — temporary halt of a service contract |