# Business Logic — JKKUseStpRunCC.judgeHakkoSod() [154 LOC]

| Field | Value |
|-------|-------|
| Fully Qualified Name | `com.fujitsu.futurity.bp.custom.common.JKKUseStpRunCC` |
| Layer | CC/Common Component — shared common component used across service step processing |
| Module | `common` (Package: `com.fujitsu.futurity.bp.custom.common`) |

## 1. Role

### JKKUseStpRunCC.judgeHakkoSod()

The `judgeHakkoSod` method determines whether a Service Order Data (SOD) should be issued for a given service contract line item during the service step execution flow. In Fujitsu's K-Opticom customer backbone system, SOD represents the formal order fulfillment record that triggers downstream provisioning actions — when `judgeHakkoSod` returns `true`, the caller (`svcKei_UseStp`) proceeds to populate SOD data and queue a service order issuance request; when it returns `false`, the SOD issuance is suppressed for that particular line item.

The method implements a multi-stage decision tree covering three distinct business scenarios. First, it handles **i-mode mobile SOD classification** — when the `eMobileSodKbn` flag is set, it directly decides based on whether the classification matches the "none" constant (value 3), bypassing all further checks. Second, for non-mobile services, it checks the **service status**: if the service detail work status is "210" (pause/suspend), SOD issuance is blocked because a stop order has already been issued during the suspended period. Third, for active telephony services, it performs a **number portability (field work) check** — invoking the `ETU0011B018SC` service component to verify the field work progress status and determining whether SOD should be issued based on the portability status relative to the number change context (old phone vs. new number).

The method acts as a shared utility called by `svcKei_UseStp` during service step processing loops, serving as a gatekeeper between service contract evaluation and actual SOD order issuance. It uses a delegation pattern — extracting service agreement info from the shared result hash, reading service detail records, and dispatching to specialized service components for external validation.

## 2. Processing Pattern (Detailed Business Logic)

```mermaid
flowchart TD
    START(["judgeHakkoSod called from svcKei_UseStp"])
    
    COND_EMOBILE{eMobileSodKbn != 0?}
    EMOBILE_NONE{eMobileSodKbn == 3?}
    RETURN_NO_SOD(["Return false: SOD NOT issued"])
    RETURN_SOD(["Return true: SOD issued"])
    
    INIT_VARS["Initialize: checkBmpKoji=false, checkKbn=0"]
    GET_SERVICE_AGREEMENT["Get service agreement info from resultHash"]
    GET_SVC_KEI_UCWK["Get service detail info via getSvcKeiUcwkInfo"]
    EXTRACT_FIELDS["Extract: tmpSvcKeiUcwk, kzkAfKeiFlg, kzkmtSvcKeuUcwkNo"]
    
    MATCH_UCWK{svc_kei_ucwk_no == tmpSvcKeiUcwk?}
    GET_SVC_STAT["Get svcKeiUcwkStat from service detail"]
    COND_PAUSE{svcKeiUcwkStat == 210?}
    RETURN_NO_SOD_PAUSE(["Return false: SOD NOT issued - paused or suspended"])
    
    COND_NON_TEL{prc_grp_cd != 10?}
    RETURN_SOD_NON_TEL(["Return true: SOD issued - non-telephony"])
    
    CHECK_NUM_CHANGE{Not number change in progress?}
    GET_OLD_PHONE["Get old phone service detail via getSvcKeiUcwkInfo"]
    CHECK_OLD_PH{Is old phone number change?}
    SET_OLD_PHONE["checkBmpKoji=true, checkKbn=1"]
    
    IS_NUM_CHANGE{Number change in progress?}
    SET_NUM_CHANGE["checkBmpKoji=true, checkKbn=2"]
    
    CHECK_BMP{checkBmpKoji == true?}
    CALL_BMP_SC["callETU0011B018SC BMP field work check"]
    GET_BMP_RESULT["Get BMP result from resultHash"]
    HAS_BMP_RESULT{BMP result list has data?}
    GET_BMP_INFO["Get BMP info via getSvcKeiUcwkInfo"]
    GET_BMP_STAT["Get bmpKojiStat from BMP result"]
    
    COND_CHECK1{checkKbn == 1 - old phone?}
    BMP_STAT_RANGE{bmpKojiStat >= 040 AND < 090?}
    RETURN_NO_SOD_BMP1(["Return false: SOD NOT issued"])
    RETURN_SOD_BMP1(["Return true: SOD issued"])
    
    COND_CHECK2{checkKbn == 2 - num change?}
    BMP_STAT_RANGE2{bmpKojiStat >= 040 AND < 090?}
    RETURN_SOD_BMP2(["Return true: SOD issued"])
    RETURN_NO_SOD_BMP2(["Return false: SOD NOT issued"])
    
    RETURN_DEFAULT(["Return true: SOD issued"])
    
    START --> COND_EMOBILE
    COND_EMOBILE -- Yes --> EMOBILE_NONE
    EMOBILE_NONE -- Yes --> RETURN_NO_SOD
    EMOBILE_NONE -- No --> RETURN_SOD
    COND_EMOBILE -- No --> INIT_VARS
    INIT_VARS --> GET_SERVICE_AGREEMENT
    GET_SERVICE_AGREEMENT --> GET_SVC_KEI_UCWK
    GET_SVC_KEI_UCWK --> EXTRACT_FIELDS
    EXTRACT_FIELDS --> MATCH_UCWK
    MATCH_UCWK -- Yes --> GET_SVC_STAT
    GET_SVC_STAT --> COND_PAUSE
    COND_PAUSE -- Yes --> RETURN_NO_SOD_PAUSE
    COND_PAUSE -- No --> COND_NON_TEL
    COND_NON_TEL -- Yes --> RETURN_SOD_NON_TEL
    COND_NON_TEL -- No --> CHECK_NUM_CHANGE
    CHECK_NUM_CHANGE -- Yes --> GET_OLD_PHONE
    GET_OLD_PHONE --> CHECK_OLD_PH
    CHECK_OLD_PH -- Yes --> SET_OLD_PHONE
    CHECK_OLD_PH -- No --> CHECK_BMP
    SET_OLD_PHONE --> CHECK_BMP
    CHECK_NUM_CHANGE -- No --> IS_NUM_CHANGE
    IS_NUM_CHANGE -- Yes --> SET_NUM_CHANGE
    SET_NUM_CHANGE --> CHECK_BMP
    IS_NUM_CHANGE -- No --> CHECK_BMP
    MATCH_UCWK -- No --> CHECK_BMP
    CHECK_BMP -- Yes --> CALL_BMP_SC
    CALL_BMP_SC --> GET_BMP_RESULT
    GET_BMP_RESULT --> HAS_BMP_RESULT
    HAS_BMP_RESULT -- Yes --> GET_BMP_INFO
    GET_BMP_INFO --> GET_BMP_STAT
    GET_BMP_STAT --> COND_CHECK1
    HAS_BMP_RESULT -- No --> RETURN_DEFAULT
    COND_CHECK1 -- Yes --> BMP_STAT_RANGE
    BMP_STAT_RANGE -- Yes --> RETURN_NO_SOD_BMP1
    BMP_STAT_RANGE -- No --> RETURN_SOD_BMP1
    COND_CHECK1 -- No --> COND_CHECK2
    COND_CHECK2 -- Yes --> BMP_STAT_RANGE2
    BMP_STAT_RANGE2 -- Yes --> RETURN_SOD_BMP2
    BMP_STAT_RANGE2 -- No --> RETURN_NO_SOD_BMP2
    COND_CHECK2 -- No --> RETURN_DEFAULT
    RETURN_SOD_BMP2 --> RETURN_DEFAULT
```

**Processing Summary:**

1. **i-mode Mobile SOD Classification (lines 1354–1368)**: When `eMobileSodKbn` is non-zero (indicating an i-mode mobile service), the method immediately decides based on the mobile SOD classification. If it equals `EMOBILE_SOD_KBN_NONE` (3), SOD is NOT issued; otherwise, SOD is issued. This short-circuits all further processing.

2. **Service Detail Lookup (lines 1370–1388)**: For non-mobile or unclassified services, the method retrieves the service agreement info from `resultHash` (template `EKK0081A010`), extracts the service number (`svcKeiNo`), then looks up the specific service detail record via `getSvcKeiUcwkInfo` to obtain the service detail work number, post-change-in-progress flag, and service status.

3. **Service Status and Pause Check (lines 1390–1408)**: If the queried service detail matches the target `svc_kei_ucwk_no`, the method checks the service detail work status. If status equals `SVC_KEI_STAT_PAUSE` ("210" — pause/suspend), SOD issuance is blocked because a stop order was already issued during the suspended period. For non-telephony services (`prc_grp_cd != "10"`), SOD is issued regardless.

4. **Number Portability Preparation (lines 1412–1432)**: The method determines if the service is undergoing a number change (`kzkAfKeiFlg == "1"`). If the service is NOT in number change, it fetches the old phone's service detail and checks if it was the old phone involved in a number change — if so, sets `checkBmpKoji=true`, `checkKbn=1`. If the service IS in number change, sets `checkBmpKoji=true`, `checkKbn=2` using the current service detail.

5. **Field Work (BMP) Check (lines 1437–1478)**: When `checkBmpKoji` is true, the method calls `callETU0011B018SC` to perform a field work (BMP) check. It then examines the BMP work status (`bmpKojiStat`) against thresholds: status code "040" (`BMP_KOJI_STAT_SOD_HAKKOZM` — SOD issuance complete) and "090" (`BMP_KOJI_STAT_KOJICL` — field work cancellation). For check type 1 (old phone), SOD is NOT issued if BMP status is between 040 and 090; for check type 2 (number change in progress), SOD IS issued in that range (reverse logic).

6. **Default (line 1482)**: If `checkBmpKoji` is false (no number portability involved), or if BMP check is inconclusive, the method defaults to returning `true` — SOD is issued.

## 3. Parameter Analysis

| No | Parameter Name | Type | Business Description |
|----|---------------|------|---------------------|
| 1 | `param` | `IRequestParameterReadWrite` | Request parameter object carrying I/O data for the current service step processing request. Used when invoking the BMP field work service component (`callETU0011B018SC`). |
| 2 | `handle` | `SessionHandle` | Database session handle providing the connection context for service component calls. |
| 3 | `requestParam` | `HashMap<String, Object>` | Input request parameters containing caller-supplied values (passed through without direct use in this method's logic). |
| 4 | `resultHash` | `HashMap<String, Object>` | Shared result data map pre-populated by prior processing stages. Contains the service agreement info list (`TEMPLATE_ID_EKK0081A010`), service detail work list (`TEMPLATE_ID_EKK0161B004`), and will contain BMP field work results (`TEMPLATE_ID_ETU0011B018`) after the service component call. |
| 5 | `svc_kei_ucwk_no` | `String` | Service detail work number — the internal tracking ID for a specific service contract line item. Used to look up the corresponding service detail record and determine if it matches the current line in the processing loop. |
| 6 | `prc_grp_cd` | `String` | Processing group code — classifies the service type (e.g., "10" = telephony/TEL). Determines whether telephony-specific pause check and field work logic applies. |
| 7 | `eMobileSodKbn` | `int` | i-mode mobile SOD classification flag — when non-zero, indicates an i-mode mobile service context. Value `3` (`EMOBILE_SOD_KBN_NONE`) means no SOD should be issued; any other non-zero value means SOD should be issued. |

**Referenced Instance Fields / External State:**

| Field | Type | Business Meaning |
|-------|------|-----------------|
| `TEMPLATE_ID_EKK0081A010` | `String` (private constant) | Template identifier for service agreement info results, value `"EKK0081A010"`. Used to retrieve pre-populated service agreement data from `resultHash`. |
| `TEMPLATE_ID_EKK0161B004` | `String` (private constant) | Template identifier for service detail work info list, value `"EKK0161B004"`. Used to retrieve the list of service detail records from `resultHash`. |
| `EMOBILE_SOD_KBN_NONE` | `int` (private constant) | i-mode mobile "none" classification, value `3`. When `eMobileSodKbn` equals this, SOD issuance is suppressed. |

## 4. CRUD Operations / Called Services

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

| CRUD | SC / CBS | SC Code | Entity / DB | Operation Description |
|------|----------|---------|-------------|----------------------|
| R | `JKKUseStpRunCC.getSvcKeiUcwkInfo` | - | - (resultHash lookup) | Retrieves a specific service detail record from a pre-fetched list by matching the service detail work number key. |
| R | `JKKUseStpRunCC.checkKzkAfKeiChgFlg` | - | - (hash lookup) | Checks whether the given service detail hash indicates a number change-in-progress state (`KEIZK_AF_KEI_CHGECHU_FLG == "1"`). |
| R | `JKKUseStpRunCC.getSvcKeiUcwkInfo` | - | - (resultHash lookup) | Second call — retrieves the old phone service detail when not in number change, for further number change validation. |
| R | `JKKUseStpRunCC.getSvcKeiUcwkInfo` | - | - (resultHash lookup) | Third call — retrieves BMP field work result info from the ETU0011B018 template list. |
| C | `JKKUseStpRunCC.callETU0011B018SC` | `ETU0011B018SC` | `ETU` table family (BMP field work data) | Invokes the BMP (field work) service component to perform a field work status check for number portability. Sends service type codes "1" (initial) and "2" (update) as inquiry reasons. |

**Notes:**

- **`getSvcKeiUcwkInfo`** is a private helper method on `JKKUseStpRunCC` that iterates over a pre-loaded `ArrayList<HashMap>` (fetched from `resultHash`) to find the matching record by key. This is a READ operation on in-memory data structures, not a direct DB call. The data was pre-loaded by earlier CBS calls in the calling method (`svcKei_UseStp`).

- **`checkKzkAfKeiChgFlg`** is a private method that checks the `KEIZK_AF_KEI_CHGECHU_FLG` field against `KEIZK_AF_KEI_FLG_1` ("1") — also an in-memory hash lookup, classified as a READ (R).

- **`callETU0011B018SC`** is the only actual external service component call. It invokes the BMP (field work / 番ポ工事) SC with combined inquiry reasons `BMP_IRAI_NAIYO_CD_ITEN + "," + BMP_IRAI_NAIYO_CD_UPD` = `"1,2"` (initial + update). The results are stored back into `resultHash` under `TEMPLATE_ID_ETU0011B018`.

## 5. Dependency Trace

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

No screen/batch entry points found within 8 hops. Direct callers found: 1 method.
Terminal operations from this method: `getSvcKeiUcwkInfo` [R], `checkKzkAfKeiChgFlg` [-], `getSvcKeiUcwkInfo` [R], `getSvcKeiUcwkInfo` [R], `callETU0011B018SC` [C]  # NOSONAR

| # | Caller (Screen/Batch) | Call Chain (Full Path to this Method) | Terminal (SC / CRUD / Entity) |
|---|----------------------|--------------------------------------|-------------------------------|
| 1 | `JKKUseStpRunCC.svcKei_UseStp` | `svcKei_UseStp` -> `judgeHakkoSod` | `getSvcKeiUcwkInfo [R] (in-memory list lookup)`<br>`checkKzkAfKeiChgFlg [-] (hash flag check)`<br>`callETU0011B018SC [C] BMP field work data` |

**Call chain detail:** The caller `svcKei_UseStp` is a service step processing method in `JKKUseStpRunCC` that iterates over service contract line items. Before calling `judgeHakkoSod`, it pre-fetches service agreement info (via `EKK0081A010`), service detail info (via `EKK0161B004`), and service stop results (via `EKK0161C040`). It then computes the `eMobileSodKbn` flag and invokes `judgeHakkoSod` for each service detail work record. When `judgeHakkoSod` returns `true`, the caller adds SOD data to a list for subsequent order issuance.

## 6. Per-Branch Detail Blocks

**Block 1** — IF `(eMobileSodKbn != 0)` (L1354)

> i-mode mobile SOD classification check. If non-zero, this is an i-mode mobile service and the decision is immediate.

| # | Type | Code |
|---|------|------|
| 1 | IF | `if (EMOBILE_SOD_KBN_NONE == eMobileSodKbn)` [EMOBILE_SOD_KBN_NONE=3] (L1356) |
| 2 | RETURN | `return false;` // SOD NOT issued (i-mode mobile classification is "none") |
| 3 | ELSE-IF | (implicit else) (L1362) |
| 4 | RETURN | `return true;` // SOD issued (i-mode mobile classification is valid) |

---

**Block 2** — INITIALIZATION (L1370–1388)

> For non-mobile services, initialize state variables and fetch service data from result hash.

| # | Type | Code |
|---|------|------|
| 1 | SET | `checkBmpKoji = false;` // Flag indicating whether BMP field work check is needed |
| 2 | SET | `checkKbn = 0;` // BMP check type: 1=old phone, 2=number change |
| 3 | SET | `eKK0081A010Hash = (HashMap)resultHash.get(TEMPLATE_ID_EKK0081A010)` // Service agreement info |
| 4 | SET | `svcKeiNo = eKK0081A010Hash.get(SVC_KEI_NO)` // Extract service number |
| 5 | SET | `bmpSvcKeiUcwkNo = ""` // Will hold the service detail number for BMP check |
| 6 | SET | `eKK0161B004Hash = getSvcKeiUcwkInfo(svc_kei_ucwk_no, eKK0161B004HashList, EKK0161B004CBSMsg1List.SVC_KEI_UCWK_NO)` // Lookup service detail |
| 7 | SET | `tmpSvcKeiUcwk = eKK0161B004Hash.get(SVC_KEI_UCWK_NO)` // Service detail work number |
| 8 | SET | `kzkAfKeiFlg = eKK0161B004Hash.get(KEIZK_AF_KEI_CHGECHU_FLG)` // Post-change-in-progress flag |
| 9 | SET | `kzkmtSvcKeuUcwkNo = eKK0161B004Hash.get(KEIZK_MT_SVC_KEI_UCWK_NO)` // Continuation service number |

---

**Block 3** — IF `(svc_kei_ucwk_no.equals(tmpSvcKeiUcwk))` (L1390)

> Core decision block: only proceed with detailed checks if the queried service detail matches the current loop record.

**Block 3.1** — IF `(SVC_KEI_STAT_PAUSE.equals(svcKeiUcwkStat))` (L1397)

> Pause/suspend check. If service status is "210" (pause), SOD issuance is blocked because a stop order was already issued during the suspended period.

| # | Type | Code |
|---|------|------|
| 1 | SET | `svcKeiUcwkStat = eKK0161B004Hash.get(SVC_KEI_UCWK_STAT)` (L1395) |
| 2 | IF | `SVC_KEI_STAT_PAUSE.equals(svcKeiUcwkStat)` [SVC_KEI_STAT_PAUSE="210"] (L1397) |
| 3 | RETURN | `return false;` // SOD NOT issued — stop order already issued during pause |

**Block 3.2** — ELSE-IF `(!PRC_GRP_CD_TEL.equals(prc_grp_cd))` (L1404)

> Non-telephony service check. For non-telephone services, SOD is issued even during pause because the pause restriction only applies to telephony.

| # | Type | Code |
|---|------|------|
| 1 | IF | `!PRC_GRP_CD_TEL.equals(prc_grp_cd)` [PRC_GRP_CD_TEL="10"] (L1404) |
| 2 | RETURN | `return true;` // SOD issued — non-telephony service not affected by pause |

---

**Block 4** — Number Portability Preparation (L1412–1432)

> Determine whether a number change is in progress and prepare BMP field work check accordingly.

**Block 4.1** — IF `(!KEIZK_AF_KEI_FLG_1.equals(kzkAfKeiFlg))` (L1412)

> Service is NOT in number change. Check if this is the old phone from a previous number change.

| # | Type | Code |
|---|------|------|
| 1 | IF | `!JKKSvcConst.KEIZK_AF_KEI_FLG_1.equals(kzkAfKeiFlg)` [KEIZK_AF_KEI_FLG_1="1"] (L1412) |
| 2 | SET | `map = getSvcKeiUcwkInfo(svc_kei_ucwk_no, eKK0161B004HashList, KEIZK_MT_SVC_KEI_UCWK_NO)` // Get old phone detail (L1414) |
| 3 | IF | `checkKzkAfKeiChgFlg(map)` (L1418) |
| 4 | SET | `checkBmpKoji = true` (L1419) |
| 5 | SET | `checkKbn = 1` // Old phone type |
| 6 | SET | `bmpSvcKeiUcwkNo = map.get(SVC_KEI_UCWK_NO)` (L1422) // Use old phone number for BMP check |

**Block 4.2** — ELSE-IF `(KEIZK_AF_KEI_FLG_1.equals(kzkAfKeiFlg))` (L1424)

> Service IS in number change. The current service detail is the one undergoing number portability.

| # | Type | Code |
|---|------|------|
| 1 | IF | `JKKSvcConst.KEIZK_AF_KEI_FLG_1.equals(kzkAfKeiFlg)` [KEIZK_AF_KEI_FLG_1="1"] (L1424) |
| 2 | SET | `checkBmpKoji = true` (L1425) |
| 3 | SET | `checkKbn = 2` // Number change type |
| 4 | SET | `bmpSvcKeiUcwkNo = tmpSvcKeiUcwk` (L1428) // Use current service detail for BMP check |

---

**Block 5** — IF `(checkBmpKoji)` (L1437)

> Field work (BMP) check. When a number change is involved, call the external BMP service component to verify field work status.

| # | Type | Code |
|---|------|------|
| 1 | IF | `checkBmpKoji` (L1437) |
| 2 | CALL | `callETU0011B018SC(param, handle, svcKeiNo, "1,2", resultHash)` // BMP field work check with inquiry reasons: initial + update (L1440–1445) |
| 3 | SET | `eTU0011B018HashList = (ArrayList)resultHash.get(TEMPLATE_ID_ETU0011B018)` (L1448) |
| 4 | IF | `eTU0011B018HashList != null && eTU0011B018HashList.size() > 0` (L1449) |

**Block 5.1** — BMP Status Decision (within Block 5)

| # | Type | Code |
|---|------|------|
| 1 | SET | `bmpHash = getSvcKeiUcwkInfo(bmpSvcKeiUcwkNo, eTU0011B018HashList, ETU0011B018CBSMsg1List.SVC_KEI_UCWK_NO)` (L1451) |
| 2 | IF | `bmpHash != null` (L1453) |
| 3 | SET | `bmpKojiStat = bmpHash.get(BMP_KOJI_STAT)` (L1455) // Field work status code |

**Block 5.1.1** — IF `(checkKbn == 1)` — Old Phone (L1458)

> For old phone in number change: SOD is NOT issued if BMP status is between 040 (SOD issuance complete) and 090 (field work cancellation). This prevents duplicate SOD issuance when field work is already in progress on the old phone.

| # | Type | Code |
|---|------|------|
| 1 | IF | `checkKbn == 1` (L1458) |
| 2 | IF | `BMP_KOJI_STAT_SOD_HAKKOZM.compareTo(bmpKojiStat) <= 0 && BMP_KOJI_STAT_KOJICL.compareTo(bmpKojiStat) > 0` [040 <= bmpKojiStat < 090] (L1461) |
| 3 | RETURN | `return false;` // SOD NOT issued — BMP in progress range |
| 4 | ELSE | (L1466) |
| 5 | RETURN | `return true;` // SOD issued — BMP not in blocked range |

**Block 5.1.2** — ELSE-IF `(checkKbn == 2)` — Number Change in Progress (L1472)

> For number change in progress: SOD IS issued if BMP status is between 040 and 090. This is the reverse of the old phone logic — when the current service detail is changing numbers, SOD should be issued to trigger the new number provisioning.

| # | Type | Code |
|---|------|------|
| 1 | IF | `checkKbn == 2` (L1472) |
| 2 | IF | `BMP_KOJI_STAT_SOD_HAKKOZM.compareTo(bmpKojiStat) <= 0 && BMP_KOJI_STAT_KOJICL.compareTo(bmpKojiStat) > 0` [040 <= bmpKojiStat < 090] (L1475) |
| 3 | RETURN | `return true;` // SOD issued — field work in progress, new number provisioning needed |
| 4 | ELSE | (L1480) |
| 5 | RETURN | `return false;` // SOD NOT issued — BMP not in active range |

**Block 5.2** — ELSE (no BMP result data) (implicit)

| # | Type | Code |
|---|------|------|
| 1 | ELSE | (BMP result list is empty or null) |
| 2 | (fall through to default) | |

---

**Block 6** — DEFAULT RETURN (L1482)

> Fallback: if `checkBmpKoji` was false (no number portability) or if the service detail did not match in Block 3, SOD is issued by default.

| # | Type | Code |
|---|------|------|
| 1 | RETURN | `return true;` // SOD issued by default |

## 7. Glossary

| Term | Type | Business Meaning |
|------|------|------------------|
| SOD | Acronym | Service Order Data — the formal order fulfillment record that triggers downstream provisioning actions in the telecom order management system. |
| `judgeHakkoSod` | Method | Japanese: SOD hakko hantei — "SOD issuance judgment." Determines whether a service order should be issued for a service contract line item. |
| `svc_kei_ucwk_no` | Field | Service detail work number — internal tracking ID for a specific service contract line item. |
| `svc_kei_no` | Field | Service number — the primary identifier for a service contract. |
| `prc_grp_cd` | Field | Processing group code — classifies the service type (e.g., "10" = telephony/TEL, other values = non-telephony). |
| `eMobileSodKbn` | Field | i-mode mobile SOD classification — determines if this is an i-mode mobile service and whether SOD issuance applies. |
| `EMOBILE_SOD_KBN_NONE` | Constant | i-mode mobile "none" classification value = 3. Indicates no SOD should be issued for this mobile service. |
| `svcKeiUcwkStat` | Field | Service detail work status code — indicates the current state of a service contract line item (e.g., "210" = pause/suspend). |
| `SVC_KEI_STAT_PAUSE` | Constant | Service detail work pause status = "210". Service is suspended/paused. |
| `kzkAfKeiFlg` | Field | Post-change in-progress flag — indicates whether the service detail is currently undergoing a number change ("1" = in progress). |
| `KEIZK_AF_KEI_FLG_1` | Constant | Number change in-progress indicator = "1". |
| `checkKbn` | Field | BMP check type discriminator — 1 = old phone in number change, 2 = current service in number change. |
| `checkBmpKoji` | Field | BMP field work check required flag — when true, triggers the external BMP service component call. |
| `bmpKojiStat` | Field | BMP (field work) status code — indicates the progress of field work related to number portability. |
| `BMP_KOJI_STAT_SOD_HAKKOZM` | Constant | BMP status "SOD issuance complete/minimum" = "040". SOD has already been issued. |
| `BMP_KOJI_STAT_KOJICL` | Constant | BMP status "field work cancellation" = "090". Field work has been cancelled. |
| `BMP_IRAI_NAIYO_CD_ITEN` | Constant | BMP inquiry reason code "initial" = "1". Requests initial field work data. |
| `BMP_IRAI_NAIYO_CD_UPD` | Constant | BMP inquiry reason code "update" = "2". Requests updated field work data. |
| `ETU0011B018SC` | SC Code | BMP (field work) service component — performs field work status checks for number portability. |
| `KEIZK_MT_SVC_KEI_UCWK_NO` | Field | Continuation source service detail work number — the old phone's service detail number before number change. |
| i-mode | Business term | NTT Docomo's mobile internet service platform. i-mode mobile SOD refers to special order data handling for i-mode mobile services. |
| 番ポ工事 (BMP) | Japanese term | "Banko kousou" — number portability construction/work. The physical/logical field work required when a customer portability moves their phone number between carriers. |
| resultHash | Parameter | Shared HashMap carrying pre-loaded data between processing stages. Contains service agreement info, service detail lists, and BMP results keyed by template IDs. |
| `TEMPLATE_ID_EKK0081A010` | Constant | Template ID for service agreement info, value `"EKK0081A010"`. |
| `TEMPLATE_ID_EKK0161B004` | Constant | Template ID for service detail work info list, value `"EKK0161B004"`. |
| `TEMPLATE_ID_ETU0011B018` | Constant | Template ID for BMP field work result, value `"ETU0011B018"`. |
