# Business Logic — JKKSecurityPackOperateCC.addOption() [178 LOC]

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

## 1. Role

### JKKSecurityPackOperateCC.addOption()

This method performs the **option service contract registration** (オプション登録処理) for a Fujitsu security pack bundled service. It is the central orchestrator for adding an optional service (such as McAfee, Smartlink Premium, or other ISP add-ons) to an existing main service contract line. The method first checks whether the specified option service already exists on the contract line and whether it has an active or in-progress status (including subscribed, under review, or in service); if so, it short-circuits and returns immediately to prevent duplicate registration. Otherwise, it queries the service contract agreement and billing information, handles service transfer (继承) scenarios where the option is being transferred from another contract line, and then invokes a sequence of SC (Service Component) calls to register the option ISP contract, process its review and contract stages, and schedule the start date (either immediate or future-dated). Finally, it registers a progress tracking entry so downstream batch processes can monitor the option activation pipeline.

## 2. Processing Pattern (Detailed Business Logic)

```mermaid
flowchart TD
    START(["addOption params"])
    
    START --> LOG["printlnEjbLog start"]
    LOG --> INIT["Initialize local vars: retMsg, ekk0361a010, retMsgList, dslOpSvcKeiNo, skj_ykgt"]
    INIT --> GET_APLY["aplyYmd = ccWorkMap.get OPE_DATE"]
    GET_APLY --> CALL_QUERY["mapper.callEKK0351B002 svcKeiNo"]
    CALL_QUERY --> INIT_FLG["addFlg = true, dslOpSvcKeiStat = null"]
    
    INIT_FLG --> LOOP_START{"for each CAANMsg in retMsgList"}
    LOOP_START --> MATCH_CHECK{"opSvcCd == ekk0351b002.getString OP_SVC_CD"}
    
    MATCH_CHECK --> NO_MATCH["skip to next iteration"]
    MATCH_CHECK --> YES_MATCH["dslOpSvcKeiNo = ekk0351b002.getString OP_SVC_KEI_NO"]
    YES_MATCH --> MATCH_STATUS["dslOpSvcKeiStat = ekk0351b002.getString OP_SVC_KEI_STAT"]
    
    MATCH_STATUS --> SVC_STAT_CHECK{"dslOpSvcKeiStat =="}
    SVC_STAT_CHECK --> STAT_010["SVC_KEI_STAT_010 = 010"]
    SVC_STAT_CHECK --> STAT_020["SVC_KEI_STAT_020 = 020"]
    SVC_STAT_CHECK --> STAT_030["SVC_KEI_STAT_030 = 030"]
    SVC_STAT_CHECK --> STAT_100["SVC_KEI_STAT_100 = 100"]
    SVC_STAT_CHECK --> STAT_210["SVC_KEI_STAT_210 = 210"]
    SVC_STAT_CHECK --> STAT_220["SVC_KEI_STAT_220 = 220"]
    
    STAT_010 --> SET_FALSE["addFlg = false"]
    STAT_020 --> SET_FALSE
    STAT_030 --> SET_FALSE
    STAT_100 --> SET_FALSE
    STAT_210 --> SET_FALSE
    STAT_220 --> SET_FALSE
    
    NO_MATCH --> NEXT_ITER
    SET_FALSE --> NEXT_ITER["next iteration"]
    
    NEXT_ITER --> ADD_FLG_CHECK{"addFlg == false"}
    ADD_FLG_CHECK --> TRUE["return updDtmBf early — option already exists with active status"]
    ADD_FLG_CHECK --> FALSE["proceed with registration"]
    
    FALSE --> CALL_AGREEMENT["callEKK0081A010 svcKeiNo — Service contract agreement"]
    CALL_AGREEMENT --> CALL_BILLING["callEKK0321B002 svcKeiNo — Billing contract number"]
    CALL_BILLING --> GET_HIKI["hikitugiUm = ccWorkMap.get KEY_HIKITUGI_UM"]
    
    GET_HIKI --> HIKI_CHECK{"hikitugiUm equals 1"}
    HIKI_CHECK --> YES_HIKI["H inheritance active"]
    HIKI_CHECK --> NO_HIKI["No inheritance"]
    
    YES_HIKI --> FIND_TRANSFER["Search hikiSakiOpSvcKeiList for matching opSvcCd"]
    FIND_TRANSFER --> FOUND_TRANSFER{"ekk0361a010 != null"}
    FOUND_TRANSFER --> YES_FOUND["transfer target found — keep ekk0361a010"]
    FOUND_TRANSFER --> NOT_FOUND["transfer target not found — set hikitugiUm = 0"]
    YES_FOUND --> CALL_ADD_DSL
    NOT_FOUND --> CALL_ADD_DSL["call editInMsgEKK0361D010 — Option ISP registration"]
    NO_HIKI --> CALL_ADD_DSL
    
    CALL_ADD_DSL --> GET_SVC_STAT["svcKeiStat = ekk0081a010.getString SVC_KEI_STAT"]
    GET_SVC_STAT --> GET_OP_NO["opSvcKeiNo = retMsg.getString OP_SVC_KEI_NO"]
    GET_OP_NO --> GET_UPD_DTM["updDtmBf = retMsg.getString UPD_DTM"]
    
    GET_UPD_DTM --> REV_CHECK{"svcKeiStat == 020 (In review)"}
    REV_CHECK --> IN_REVIEW["editInMsgEKK0361C010 — Contract review"]
    IN_REVIEW --> REV_DTM["updDtmBf = retMsg.getString UPD_DTM"]
    
    REV_CHECK --> NOT_IN_REVIEW
    REV_DTM --> CONTRACT_CHECK{"svcKeiStat == 030 (Contracted)"}
    
    CONTRACT_CHECK --> CONTRACTED["editInMsgEKK0361C030 — ISP review and contract"]
    CONTRACTED --> CONTRACT_DTM["updDtmBf = retMsg.getString UPD_DTM"]
    
    CONTRACT_CHECK --> NOT_CONTRACTED
    CONTRACT_DTM --> START_CHECK{"svcKeiStat <= 100 (In service)"}
    
    START_CHECK --> IN_SERVICE["Scheduling block — option service start processing"]
    IN_SERVICE --> DATE_COMP{"aplyYmd >= startYmd"}
    
    DATE_COMP --> TODAY["isSokujitsu = true, skj_ykgt = 01"]
    DATE_COMP --> FUTURE["isSokujitsu = false, skj_ykgt = 02"]
    
    TODAY --> UPDATE_DTM_1["updDtmBf = retMsg.getString UPD_DTM"]
    FUTURE --> UPDATE_DTM_1
    UPDATE_DTM_1 --> START_C030["editInMsgEKK0361C030 — ISP review and contract"]
    START_C030 --> START_DTM_1["updDtmBf = retMsg.getString UPD_DTM"]
    START_DTM_1 --> START_C040["editInMsgEKK0361C040 — Option service start"]
    START_C040 --> START_DTM_2["updDtmBf = retMsg.getString UPD_DTM"]
    
    NOT_IN_REVIEW --> SCHEDULE_PRG
    NOT_CONTRACTED --> SCHEDULE_PRG["Schedule progress registration"]
    START_DTM_2 --> SCHEDULE_PRG
    
    SCHEDULE_PRG --> PRG_STAT{"isSokujitsu"}
    PRG_STAT --> TOKUGITSU["prgStat = PRG_STAT_5102 = 5102 (Option settings completed)"]
    PRG_STAT --> NOT_TOKUGITSU["prgStat = PRG_STAT_5101 = 5101 (Option info application)"]
    
    TOKUGITSU --> CALL_ADD_PRG["addPrg — Register progress info list"]
    NOT_TOKUGITSU --> CALL_ADD_PRG
    CALL_ADD_PRG --> LOG_END["printlnEjbLog end"]
    LOG_END --> RETURN_END(["return updDtmBf"])
    CALL_ADD_DSL --> GET_SVC_STAT
```

## 3. Parameter Analysis

| No | Parameter Name | Type | Business Description |
|----|---------------|------|---------------------|
| 1 | `opSvcCd` | `String` | Option service code — the classification code identifying which optional service is being registered (e.g., McAfee antivirus, Smartlink Premium, other ISP add-on). Used to match against existing option services on the contract line to detect duplicates. |
| 2 | `svcKeiNo` | `String` | Service contract number — the unique identifier of the main service contract line (the parent contract to which the option is being added). Used to query the service agreement, billing info, and existing option listings. |
| 3 | `pcrsCd` | `String` | Pricing course code — the billing plan code that determines the pricing structure for the option service. Passed through to the ISP registration call. |
| 4 | `pplanCd` | `String` | Product plan code — the specific product plan code for the option service. Passed through to the ISP registration call. |
| 5 | `updDtmBf` | `String` | Update date-time (before) — the timestamp representing the last update datetime; it is overwritten throughout the method and returned at the end. Used as a concurrency control value in downstream processes. |
| 6 | `startYmd` | `String` | Service start date (YYYYMMDD) — the desired start date for the option service. Compared against the operation date (`aplyYmd`) to determine whether the start is immediate (当日反映) or future-dated. |

**External state / instance fields used:**

| Field | Type | Business Description |
|-------|------|---------------------|
| `ccWorkMap` | `HashMap` | Work map carrying context data through the processing pipeline — contains OPE_DATE, KEY_HIKITUGI_UM (inheritance flag), hikiSakiOpSvcKeiList (transfer target option list), and mskm_dtl_no_add (mask detail number). |

## 4. CRUD Operations / Called Services

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

| CRUD | SC / CBS | SC Code | Entity / DB | Operation Description |
|------|----------|---------|-------------|----------------------|
| R | `mapper.callEKK0351B002` | EKK0351B002CBS | Option service listing | Retrieves existing option services associated with the service contract line (svcKeiNo). Checks each for active/in-progress status codes. |
| R | `callEKK0081A010` | EKK0081A010CBS | Service contract agreement | Retrieves service contract agreement details for the given service contract number, including the current service status (SVC_KEI_STAT). |
| R | `callEKK0321B002` | EKK0321B002CBS | Billing contract | Retrieves the billing contract number associated with the service contract line. |
| U | `mapper.editInMsgEKK0361D010` | EKK0361D010 | Option service contract ISP registration | Registers the option service ISP contract (ISP登録) — the core registration step that creates the option service entry and returns the option service contract number (OP_SVC_KEI_NO). |
| U | `mapper.editInMsgEKK0361C010` | EKK0361C010 | Contract review | Processes the contract review stage (契約照会処理) when the service status is "020: In review." Updates the contract review record. |
| U | `mapper.editInMsgEKK0361C030` | EKK0361C030 | ISP review and contract | Processes the ISP review and contract stage (ISP照会締結) for contracted services or for services starting today/future. Updates the contract record. |
| U | `mapper.editInMsgEKK0361C040` | EKK0361C040 | Option service start | Processes the option service start (オプションサービス契約開始) when the service is in service status and scheduling is needed. Sets the start flag (skj_ykgt). |
| C | `addPrg` | — | Progress info list (add_info_list) | Registers a progress tracking entry (登録処理) for the option service in the progress list, enabling downstream batch processes to track activation status (5101: application, 5102: settings completed). |

## 5. Dependency Trace

| # | Caller (Screen/Batch) | Call Chain (Full Path to this Method) | Terminal (SC / CRUD / Entity) |
|---|----------------------|--------------------------------------|-------------------------------|
| 1 | Method: `JKKSecurityPackOperateCC.adChgMain()` | `adChgMain()` -> `addOption()` | `editInMsgEKK0361D010 [U] Option service registration` |
| 2 | Method: `JKKSecurityPackOperateCC.main()` | `main()` -> `addOption()` | `editInMsgEKK0361C010 [U] Contract review` |

**Terminal operations reached FROM this method:**

| Terminal | Type | Entity / Description |
|----------|------|---------------------|
| `printlnEjbLog` | - | Logging utility |
| `addPrg` | C | Progress info list (add_info_list) |
| `callEKK0351B002` | R | Option service listing |
| `callEKK0081A010` | R | Service contract agreement |
| `callEKK0321B002` | R | Billing contract |
| `editInMsgEKK0361D010` | U | Option service contract ISP registration |
| `editInMsgEKK0361C010` | U | Contract review |
| `editInMsgEKK0361C030` | U | ISP review and contract |
| `editInMsgEKK0361C040` | U | Option service start |

## 6. Per-Branch Detail Blocks

**Block 1** — [SET] `printlnEjbLog("start")` (L1545)

| # | Type | Code |
|---|------|------|
| 1 | LOG | `printlnEjbLog("JKKSecurityPackOperateCC.addOption start")` |

**Block 2** — [SET] Local variable initialization (L1547–1556)

| # | Type | Code |
|---|------|------|
| 1 | SET | `retMsg = null` |
| 2 | SET | `ekk0361a010 = null` |
| 3 | SET | `retMsgList = null` |
| 4 | SET | `aplyYmd = ccWorkMap.get(OPE_DATE)` // Operation date — 今日の日付 [-> OPE_DATE="ope_date"] |
| 5 | SET | `dslOpSvcKeiNo = ""` // Option service contract number |
| 6 | SET | `skj_ykgt = ""` // Start date type flag (当日反映 / 延期設定) |

**Block 3** — [CALL] Query existing option services (L1558)

| # | Type | Code |
|---|------|------|
| 1 | CALL | `retMsgList = mapper.callEKK0351B002(FUNC_CD_1, svcKeiNo)` // Retrieves option services on this contract line |

**Block 4** — [SET + LOOP] Check for duplicate active option services (L1560–1593)

| # | Type | Code |
|---|------|------|
| 1 | SET | `addFlg = true` // Registration flag — true means can register |
| 2 | SET | `dslOpSvcKeiStat = null` |

**Block 4.1** — [FOR] Iterate over existing option services `(dslOpSvcKeiStat)` (L1562–1592)

| # | Type | Code |
|---|------|------|
| 1 | SET | `dslOpSvcKeiNo = ""` |
| 2 | SET | `dslOpSvcKeiStat = ""` |
| 3 | IF | `opSvcCd.equals(ekk0351b002.getString(OP_SVC_CD))` // Does this existing record match the option being registered? |

**Block 4.1.1** — [SET] Match found — extract details `(yes branch)` (L1567–1571)

| # | Type | Code |
|---|------|------|
| 1 | SET | `dslOpSvcKeiNo = ekk0351b002.getString(OP_SVC_KEI_NO)` // Existing option contract number |
| 2 | SET | `dslOpSvcKeiStat = ekk0351b002.getString(OP_SVC_KEI_STAT)` // Existing option contract status |

**Block 4.1.2** — [IF] Check active status codes `(dslOpSvcKeiStat matches active statuses)` (L1573–1591)

Conditions checked:

| # | Constant | Value | Meaning |
|---|----------|-------|---------|
| 1 | `SVC_KEI_STAT_010` | "010" | 受付済 — Accepted/Received |
| 2 | `SVC_KEI_STAT_020` | "020" | 照会済 — Under review (合同照会済) |
| 3 | `SVC_KEI_STAT_030` | "030" | 締結済 — Contracted |
| 4 | `SVC_KEI_STAT_100` | "100" | サービス提供中 — In service (service provision active) |
| 5 | `SVC_KEI_STAT_210` | "210" | 休止・中断中 — Suspended / Interrupted |
| 6 | `SVC_KEI_STAT_220` | "220" | 停止中 — Stopped (Added via ANK-3149-00-02) |

**Block 4.1.2.1** — [SET] Disable registration `(any active status matches)` (L1588–1589)

| # | Type | Code |
|---|------|------|
| 1 | SET | `addFlg = false` // Do NOT register — option already active on this line |

**Block 5** — [IF] Early return if option already exists `(addFlg == false)` (L1597–1599)

> If the option service is already present on this contract line with an active/in-progress status, skip registration entirely to prevent duplicates.

| # | Type | Code |
|---|------|------|
| 1 | RETURN | `return updDtmBf` // Exit — option already exists, no registration needed |

**Block 6** — [CALL] Query service contract agreement and billing (L1601–1605)

| # | Type | Code |
|---|------|------|
| 1 | CALL | `ekk0081a010 = callEKK0081A010(svcKeiNo)` // Service contract agreement (サービス契約照会) |
| 2 | CALL | `seikyKeiNo = callEKK0321B002(svcKeiNo)` // Billing contract number (請求番号/サービス契約番号) |

**Block 7** — [SET] Get inheritance flag `(hikitugiUm)` (L1608–1610)

| # | Type | Code |
|---|------|------|
| 1 | SET | `hikitugiUm = ccWorkMap.get(KEY_HIKITUGI_UM)` // Inheritance flag — "1" means service transfer is in effect [-> KEY_HIKITUGI_UM="hikitugi_um"] |

**Block 8** — [IF] Inheritance active `(hikitugiUm equals "1")` (L1612–1644)

> When the option service is being transferred from another contract line (inheritance/継承), find the transfer target option service information.

**Block 8.1** — [SET] Initialize transfer list `(yes branch)` (L1614–1616)

| # | Type | Code |
|---|------|------|
| 1 | SET | `hikiSakiOpSvcKeiList = new ArrayList<CAANMsg>()` |
| 2 | SET | `ekk0361a010 = null` |
| 3 | SET | `hikiSakiOpSvcKeiList = (ArrayList<CAANMsg>) ccWorkMap.get("hikiSakiOpSvcKeiList")` |

**Block 8.2** — [FOR] Search for matching option service in transfer list (L1617–1627)

| # | Type | Code |
|---|------|------|
| 1 | IF | `ekk0361a010work.getString(OP_SVC_CD).equals(opSvcCd)` // Does transfer target match? |

**Block 8.2.1** — [SET] Match found `(yes branch)` (L1620)

| # | Type | Code |
|---|------|------|
| 1 | SET | `ekk0361a010 = ekk0361a010work` // Assign the matching transfer target |

**Block 8.2.2** — [ELSE] No match `(else branch)` — no-op (L1621–1622)

| # | Type | Code |
|---|------|------|
| 1 | EMPTY | (empty — continues to next iteration) |

**Block 8.3** — [IF] Transfer target not found `(ekk0361a010 == null)` (L1624–1638)

> If no matching option service was found in the transfer target list, the original code would have thrown an exception (see IT2-2017-0000008). Per the modified logic, the method now gracefully handles this by setting hikitugiUm to "0" and registering the option as a new service.

| # | Type | Code |
|---|------|------|
| 1 | SET | `hikitugiUm = "0"` // No inheritance — treat as new registration |

**Block 9** — [CALL] Option ISP registration (L1646–1647)

> The core registration call that creates the option service contract entry. Modified via IT2-2017-0000008 to include hikitugiUm parameter.

| # | Type | Code |
|---|------|------|
| 1 | CALL | `retMsg = mapper.editInMsgEKK0361D010(FUNC_CD_1, ccWorkMap, opSvcCd, pcrsCd, pplanCd, updDtmBf, svcKeiNo, seikyKeiNo, startYmd, ekk0361a010, hikitugiUm)` // Option service <ISP> registration (オプションサービス<ISP>登録) |

**Block 10** — [SET] Extract result values (L1649–1655)

| # | Type | Code |
|---|------|------|
| 1 | SET | `svcKeiStat = ekk0081a010.getString(SVC_KEI_STAT)` // Service contract status |
| 2 | SET | `opSvcKeiNo = retMsg.getString(OP_SVC_KEI_NO)` // Newly created option service contract number |
| 3 | SET | `updDtmBf = retMsg.getString(UPD_DTM)` // Update datetime refresh |

**Block 11** — [IF] Contract review processing `(svcKeiStat == 020)` (L1659–1667)

> When the service status is "020: In review" (照会済), execute the contract review step.

| # | Type | Code |
|---|------|------|
| 1 | CALL | `retMsg = mapper.editInMsgEKK0361C010(FUNC_CD_1, ccWorkMap, opSvcKeiNo, updDtmBf, hikitugiUm)` // Contract review (オプションサービス契約照会処理) |
| 2 | SET | `updDtmBf = retMsg.getString(UPD_DTM)` |

**Block 12** — [ELSE IF] Contract conclusion processing `(svcKeiStat == 030)` (L1671–1679)

> When the service status is "030: Contracted" (締結済), execute the ISP review and contract step.

| # | Type | Code |
|---|------|------|
| 1 | CALL | `retMsg = mapper.editInMsgEKK0361C030(FUNC_CD_1, ccWorkMap, opSvcKeiNo, updDtmBf, hikitugiUm)` // Option service contract <ISP> review and contract (オプションサービス契約<ISP>照会締結) |
| 2 | SET | `updDtmBf = retMsg.getString(UPD_DTM)` |

**Block 13** — [ELSE IF] Service start processing `(svcKeiStat <= 100)` (L1683–1708)

> When the service status is "100: In service" or below, execute the scheduling block. This handles option service start processing (オプションサービス契約開始処理), determining whether the start is immediate or future-dated.

**Block 13.1** — [IF] Immediate start check `(aplyYmd >= startYmd)` (L1688–1693)

> 即日反映かどう？ — Is the operation date at or after the requested start date?

| # | Type | Code |
|---|------|------|
| 1 | SET | `isSokujitsu = true` // Today's reflection (即日反映) |
| 2 | SET | `skj_ykgt = "01"` // Immediate start flag |

**Block 13.2** — [ELSE] Future start (L1694–1697)

| # | Type | Code |
|---|------|------|
| 1 | SET | `isSokujitsu = false` // Deferred start |
| 2 | SET | `skj_ykgt = "02"` // Deferred start flag (延期設定) |

**Block 13.3** — [SET] Refresh update datetime (L1699)

| # | Type | Code |
|---|------|------|
| 1 | SET | `updDtmBf = retMsg.getString(UPD_DTM)` |

**Block 13.4** — [CALL] ISP review and contract (L1700–1702)

| # | Type | Code |
|---|------|------|
| 1 | CALL | `retMsg = mapper.editInMsgEKK0361C030(FUNC_CD_1, ccWorkMap, opSvcKeiNo, updDtmBf, hikitugiUm)` // ISP review and contract |
| 2 | SET | `updDtmBf = retMsg.getString(UPD_DTM)` |

**Block 13.5** — [CALL] Option service start (L1703–1704)

| # | Type | Code |
|---|------|------|
| 1 | CALL | `retMsg = mapper.editInMsgEKK0361C040(FUNC_CD_1, ccWorkMap, opSvcKeiNo, updDtmBf, skj_ykgt)` // Option service start (オプションサービス契約開始) |
| 2 | SET | `updDtmBf = retMsg.getString(UPD_DTM)` |

**Block 14** — [SET + IF] Progress status determination (L1708–1714)

| # | Type | Code |
|---|------|------|
| 1 | SET | `prgStat = ""` // Progress status |
| 2 | IF | `isSokujitsu` // Is today's reflection? |

**Block 14.1** — [SET] Immediate progress status `(isSokujitsu == true)` (L1711)

| # | Type | Code |
|---|------|------|
| 1 | SET | `prgStat = PRG_STAT_5102` // 5102 — Option settings completed (オプション設定完了) [-> PRG_STAT_5102="5102"] |

**Block 14.2** — [SET] Deferred progress status `(isSokujitsu == false)` (L1713–1714)

| # | Type | Code |
|---|------|------|
| 1 | SET | `prgStat = PRG_STAT_5101` // 5101 — Option info application (オプション情報申請中) [-> PRG_STAT_5101="5101"] |

**Block 15** — [CALL] Register progress tracking entry (L1718)

| # | Type | Code |
|---|------|------|
| 1 | CALL | `addPrg(KEY_ADD_INFO_LIST, ccWorkMap.get("mskm_dtl_no_add"), seikyKeiNo, opSvcKeiNo, svcKeiNo, "", "", opSvcCd, prgStat)` // Register progress info list for downstream batch processing [-> KEY_ADD_INFO_LIST="add_info_list"] |

**Block 16** — [RETURN] Final log and return (L1720–1722)

| # | Type | Code |
|---|------|------|
| 1 | LOG | `printlnEjbLog("JKKSecurityPackOperateCC.addOption end")` |
| 2 | RETURN | `return updDtmBf` // Updated datetime after all processing |

## 7. Glossary

| Term | Type | Business Meaning |
|------|------|------------------|
| `opSvcCd` | Field | Option service code — identifies which optional add-on service (ISP, McAfee, Smartlink Premium, etc.) is being registered |
| `svcKeiNo` | Field | Service contract number — the main contract line number to which the option is being added |
| `pcrsCd` | Field | Pricing course code — determines the billing/pricing structure for the option service |
| `pplanCd` | Field | Product plan code — the specific product plan identifier for the option service |
| `updDtmBf` | Field | Update datetime (before) — timestamp of the last update; refreshed at each processing step and returned as the final value |
| `startYmd` | Field | Service start date (YYYYMMDD) — the requested start date for the option service |
| `aplyYmd` | Field | Application/operation date (YYYYMMDD) — the system's operation date pulled from the work map |
| `dslOpSvcKeiNo` | Field | DSL option service contract number — the contract number for the existing option service found during duplicate check |
| `dslOpSvcKeiStat` | Field | DSL option service contract status — the current status of an existing option service on the contract line |
| `skj_ykgt` | Field | Start date type flag — "01" for immediate start (当日反映), "02" for deferred start (延期設定) |
| `isSokujitsu` | Field | Today's reflection flag — true if the operation date is on or after the requested start date (即日反映かどう？) |
| `hikitugiUm` | Field | Inheritance (transfer) flag — "1" indicates service transfer from another contract line is active, "0" means no transfer |
| `prgStat` | Field | Progress status — tracks option activation pipeline status |
| `addFlg` | Field | Registration flag — false means the option already exists with an active status; true means registration proceeds |
| `add_info_list` | Field | Progress info list key — the work map key for the progress registration list passed to addPrg() |
| `hikitugi_um` | Field | Inheritance flag key — the work map key used to store whether service transfer is active |
| OPE_DATE | Field | Operation date key — the work map key for the current system operation date |
| FUNC_CD_1 | Constant | Function code "1" — used as a function discriminator in mapper calls |
| SVC_KEI_STAT_010 | Constant | "010" — Contract status: 受付済 (Accepted/Received) |
| SVC_KEI_STAT_020 | Constant | "020" — Contract status: 照会済 (In review / Under contract consultation) |
| SVC_KEI_STAT_030 | Constant | "030" — Contract status: 締結済 (Contracted / Conclusion completed) |
| SVC_KEI_STAT_100 | Constant | "100" — Contract status: サービス提供中 (In service / Service provision active) |
| SVC_KEI_STAT_210 | Constant | "210" — Contract status: 休止・中断中 (Suspended / Interrupted) |
| SVC_KEI_STAT_220 | Constant | "220" — Contract status: 停止中 (Stopped) — added via ANK-3149-00-02 |
| PRG_STAT_5101 | Constant | "5101" — Progress status: オプション情報申請中 (Option info application in progress) |
| PRG_STAT_5102 | Constant | "5102" — Progress status: オプション設定完了 (Option settings completed) |
| EKK0361D010 | SC Code | Option service contract ISP registration — core option registration service component |
| EKK0361C010 | SC Code | Option service contract review — processes contract review stage |
| EKK0361C030 | SC Code | Option service contract ISP review and contract — processes ISP review and contract conclusion |
| EKK0361C040 | SC Code | Option service contract start — processes the option service start date scheduling |
| EKK0351B002 | SC Code | Option service listing query — retrieves existing option services on a contract line |
| EKK0081A010 | SC Code | Service contract agreement — retrieves service contract agreement details |
| EKK0321B002 | SC Code | Billing contract number — retrieves billing contract associated with a service contract |
| ISP | Business term | Internet Service Provider — in this context, the ISP add-on service bundled with security pack products |
| 即日反映 (Sokujitsu) | Business term | Immediate reflection — the option starts on the same day as the operation, determined when the operation date >= start date |
| 延期 (Yoken) | Business term | Deferred start — the option starts on a future date different from the operation date |
| 継承 (Hikitugi) | Business term | Service inheritance/transfer — transferring an option service from one contract line to another |
| 契約照会 (Keiyakushoukai) | Business term | Contract review — the review stage between contract application and conclusion |
| 照会締結 (Shoukai-tekketsu) | Business term | Review and contract conclusion — the combined ISP review and contract finalization step |
| CC | Acronym | Common Component — a shared component class in the Fujitsu business platform architecture |
| CAANMsg | Type | Message object — a structured message container used for data exchange between CBS and CC layers |
| CBS | Acronym | Contract Business System — the core service layer handling contract and billing operations |
| SC | Acronym | Service Component — a service-level processing component that interfaces with CBS |