# Business Logic - JKKShkaFinJiKikiStaAddCC.callSodR0S0() [724 LOC]

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

## 1. Role

### JKKShkaFinJiKikiStaAddCC.callSodR0S0()

The `callSodR0S0` method is a core SOD (Service Order Data) issuance orchestrator for equipment-provided service contracts during K-Opticom's home equipment change and new provisioning workflows. It receives pre-queried service contract data (via the `ekk2811B504outMsg` parameter) and coordinates a multi-step inquiry, validation, and SOD issuance pipeline that covers both FTTH internet contracts and telephone (DSL) adapter contracts.

The method implements a **routing/dispatch pattern** based on service type classification. It iterates over all service contract lines (`svcKeiNoList`) to identify which are network (FTTH) contracts and which are telephone (DSL) contracts, then separately iterates over equipment operation service contracts (`ekk2811B504outMsg`) to determine which equipment services (multi-functional router "G01" or telephone adapter "G02") are active and eligible. When both net and tel flags are set (dual-service scenario), it issues SOD for the combined router configuration. When only one service type is present, it issues SOD for that single service type.

The method handles multiple conditional branches: (1) router function code "A" (router-only), "B" (VOIP-only), or "C" (double) determines whether to register new, change existing, or skip SOD issuance; (2) telephone contracts support up to two phone numbers (No.1 and No.2), each with separate Z3 order existence checks; (3) migration scenarios during customer transfers (`kktkAdchgChuFlg`) use continuation source service contract line data to filter eligible lines.

## 2. Processing Pattern (Detailed Business Logic)

```mermaid
flowchart TD
    START(["callSodR0S0 params"])
    START --> INIT["Initialize flags and local variables"]
    INIT --> EKK0251["SC call: EKK0251A010"]
    EKK0251 --> GET_DATA["Extract svcKeiKaisenUcwkNo and ksnGeneAddDtm"]
    GET_DATA --> LOOP1_START{Loop svcKeiNoList}
    LOOP1_START -->|Yes| GET_SVC_NO["Get svcKeiNo_tmp"]
    LOOP1_START -->|No| LOOP2_START{Loop ekk2811B504outMsg}
    GET_SVC_NO --> EKK0081["SC call: EKK0081A010"]
    EKK0081 --> CHECK_STAT{isSvcKeiStat result?}
    CHECK_STAT -->|true| SKIP["Skip this line"]
    CHECK_STAT -->|false| CHECK_CD{svcCd equals CD00130_01 "01"}
    SKIP --> LOOP1_START
    CHECK_CD -->|Yes Network| EKK0161["SC call: EKK0161B004"]
    CHECK_CD -->|No Telephone| Z1_CHK["Check Z1 order existence"]
    EKK0161 --> HAS_DATA{Response not null?}
    HAS_DATA -->|Yes| LOOP1A[Loop EKK0161 response]
    HAS_DATA -->|No| SET_NET_DTM["Set svkeiGadtmNet"]
    SET_NET_DTM --> LOOP1_START
    LOOP1A --> CHECK_UCWK{isSvcUcwkStat result?}
    CHECK_UCWK -->|true| MAX_D["maxUcwkData tracking"]
    CHECK_UCWK -->|false| LOOP1A_CHK{More items?}
    MAX_D --> LOOP1A_CHK
    LOOP1A_CHK -->|Yes| LOOP1A
    LOOP1A_CHK -->|No| GET_LINE_DATA["Extract svcKeiUcwkNo, svkeiuwGadtm"]
    GET_LINE_DATA --> SET_NET_DTM
    Z1_CHK --> EKK0191B["SC call: EKK0191B001"]
    EKK0191B --> RESP_OK{Response not null?}
    RESP_OK -->|Yes| LOOP1B[Loop EKK0191B response]
    RESP_OK -->|No| Z3_CHK2["Check Z3 orders"]
    LOOP1B --> STAT_BAD{Stat 910 or 920?}
    STAT_BAD -->|true| SKIP_LINE["Skip"]
    STAT_BAD -->|false| CHECK_XFER{kktkAdchgChuFlg?}
    SKIP_LINE --> LOOP1B_CHK{More?}
    CHECK_XFER -->|Yes| CHECK_LIST{In adchgAf list?}
    CHECK_XFER -->|No| EKK0191A["SC call: EKK0191A010"]
    CHECK_LIST -->|No| SKIP_LINE
    CHECK_LIST -->|Yes| GET_CONT_DATA["Get continuation data"]
    GET_CONT_DATA --> CHECK_FLG{keizkAfFlg equals 1?}
    CHECK_FLG -->|Yes| USE_CONT["Use continuation svcKeiUcwkNoTel"]
    CHECK_FLG -->|No| EKK0191A
    USE_CONT --> EKK0191A
    EKK0191A --> SIP_BAD{SIP check fail?}
    SIP_BAD -->|true| SKIP_LINE2["Skip"]
    SIP_BAD -->|false| TEL_NO_CHK{telnoJun?}
    SIP_BAD -->|false| TEL_NO_CHK2{telnoJun equals 2?}
    SKIP_LINE2 --> LOOP1B_CHK2{More?}
    TEL_NO_CHK2 -->|Yes| SET_2["Set No.2 data"]
    SET_2 --> LOOP1B_CHK2
    TEL_NO_CHK2 -->|No| LOOP1B_CHK2
    TEL_NO_CHK -->|Yes| SET_1["Set No.1 data"]
    SET_1 --> LOOP1B_CHK2
    LOOP1B_CHK2 -->|Yes| LOOP1B
    LOOP1B_CHK2 -->|No| FALLBACK{svcKeiUcwkNo1 empty?}
    FALLBACK -->|Yes| F_PROMOTE["Promote No.2 to No.1"]
    FALLBACK -->|No| Z3_CHK2
    F_PROMOTE --> Z3_CHK2
    Z3_CHK2 --> Z3_1{svcKeiUcwkNo1 not empty?}
    Z3_1 -->|Yes| CHECK_Z3_1["Z3 check for No.1"]
    Z3_1 -->|No| LOOP2_START2{Loop KKOP items}
    CHECK_Z3_1 --> Z3_2{svcKeiUcwkNo2 not empty?}
    Z3_2 -->|Yes| CHECK_Z3_2["Z3 check for No.2"]
    Z3_2 -->|No| LOOP2_START2
    CHECK_Z3_2 --> LOOP2_START2
    LOOP2_START2 -->|Yes| CHECK_G01{kkopSvcCd equals G01?}
    LOOP2_START2 -->|No| GET_KIKI_INFO["Extract equipment service info"]
    CHECK_G01 -->|Yes| SET_NET_FLG["Set netFlg"]
    CHECK_G01 -->|No| CHECK_G02{kkopSvcCd equals G02?}
    SET_NET_FLG --> EKK2811["SC call: EKK2811A010"]
    CHECK_G02 -->|Yes| SET_TEL_FLG["Set telFlg"]
    CHECK_G02 -->|No| LOOP2_START2
    SET_TEL_FLG --> EKK2811_TEL["SC call: EKK2811A010"]
    EKK2811 --> SET_401["Set odrNaiyoCd 401"]
    EKK2811_TEL --> SET_406["Set odrNaiyoCd 406"]
    SET_401 --> LOOP2_START2
    SET_406 --> LOOP2_START2
    GET_KIKI_INFO --> EKK0341["SC call: EKK0341B029"]
    EKK0341 --> EKK1041["SC call: EKK1041B001"]
    EKK1041 --> CHECK_BOTH{netFlg and telFlg?}
    CHECK_BOTH -->|Yes| CHECK_RTR{takinortKinoCd empty or B?}
    CHECK_BOTH -->|No| CHECK_NET{netFlg?}
    CHECK_RTR -->|Yes| CHECK_RTR_B{takinortKinoCd equals B?}
    CHECK_RTR_B -->|Yes| SET_402["Set 402 change VA"]
    CHECK_RTR_B -->|No| SET_401_1["Set 401 new FTTH"]
    SET_402 --> DUAL_EXEC["Exec EKK1081D010 + EKK1551D5010"]
    SET_401_1 --> DUAL_EXEC
    DUAL_EXEC --> CHECK_A_Z1{A pattern and z1Flg false?}
    CHECK_A_Z1 -->|Yes| CHECK_Z3_FLG{z3Flg1 false?}
    CHECK_Z3_FLG -->|Yes| EXEC_N1["Exec EKK1081D010 + EKK1551D5010 No.1"]
    CHECK_Z3_FLG -->|No| CHECK_Z3_FLG2{z3Flg2 false?}
    CHECK_Z3_FLG2 -->|Yes| EXEC_N2["Exec EKK1081D010 + EKK1551D5010 No.2"]
    CHECK_A_Z1 -->|No| CHECK_NET
    EXEC_N1 --> EXEC_N2
    CHECK_NET -->|Yes| CHECK_A{takinortKinoCd equals A?}
    CHECK_A -->|Yes| RET_A["Return - router registered"]
    CHECK_A -->|No| SET_NET_INFO["Set net info"]
    SET_NET_INFO --> NET_EXEC["Exec EKK1081D010 + EKK1551D5010"]
    NET_EXEC --> CHECK_TEL{telFlg?}
    CHECK_TEL -->|Yes| CHECK_B{takinortKinoCd equals B?}
    CHECK_TEL -->|No| END_NODE(["Return"])
    CHECK_B -->|Yes| RET_B["Return - VA registered"]
    CHECK_B -->|No| SET_TEL_INFO["Set tel info"]
    SET_TEL_INFO --> TEL_EXEC["Exec EKK1081D010 + EKK1551D5010"]
    TEL_EXEC --> CHECK_2NO{svcKeiUcwkNo2 not empty?}
    CHECK_2NO -->|Yes| EXEC_2NO["Exec EKK1081D010 + EKK1551D5010 No.2"]
    CHECK_2NO -->|No| END_NODE2(["Return"])
    RET_A --> END_NODE
    RET_B --> END_NODE
    EXEC_2NO --> END_NODE2
```

**Branch Descriptions:**

1. **Service Return Inquiry (EKK0251A010):** Before processing individual service contracts, the method first queries the service contract line item agreement for service return to retrieve the continuation source service contract line item number (`svcKeiKaisenUcwkNo`) and its generation timestamp.

2. **Service Contract Iteration:** For each service contract line in `svcKeiNoList`, the method calls EKK0081A010 (service contract agreement) to get the service code (`svcCd`). If the service contract status indicates "accepted," "canceled," or "cancelled," it is skipped.

3. **Network Contract Branch (CD00130_01 = "01"):** When `svcCd` equals "01" (network service), the method calls EKK0161B004 (service contract line item list) to find the latest version of the service contract line item. It uses `maxUcwkData()` to track the maximum version.

4. **Telephone Contract Branch:** When `svcCd` is not "01", the method treats it as a telephone contract. It first checks Z1 order existence (`isOdrHakkoJokenZ1`), then calls EKK0191B001 (service contract line list for eo telephone) to enumerate telephone service contract lines. For each line, it validates status (skipping "910" canceled or "920" rejected). In migration mode (`kktkAdchgChuFlg = true`), it checks whether the line is registered in `adchgAfSvcKeiUcwkNoList` and uses the continuation source line number if `keizkAfKeiChgechuFlg = "1"`. Then EKK0191A010 is called to get the service contract line agreement details, including SIP credentials. Lines are sorted by `telnoJun` (phone number order) into No.1 and No.2 buckets.

5. **Equipment Operation Service Contract Iteration:** The method iterates over `ekk2811B504outMsg` to classify equipment services. G01 items (multi-functional router) set `netFlg` and trigger EKK2811A010 inquiry to get the latest generation timestamp. G02 items (telephone adapter) set `telFlg` and similarly trigger EKK2811A010.

6. **Equipment Info and Router Function Code Acquisition:** After classification, equipment service contract number, equipment change number, and home equipment model code are extracted. EKK0341B029 queries the equipment provider service contract list. EKK1041B001 queries order settings to obtain the multi-functional router function code (`takinortKinoCd`).

7. **SOD Issuance - Dual Service (netFlg + telFlg):**
   - If `takinortKinoCd` is empty or "B" (VOIP-only): For dual-service new registration, SOD is issued with odrNaiyoCd "401" (new) or "402" (change) depending on whether the code is "B" (change) or empty (new).
   - If `takinortKinoCd` is empty or "A" (router-only) AND z1Flg is false: Individual No.1 and No.2 SOD issuances are performed via EKK1081D010 (order condition registration) and EKK1551D5010 (order information creation/work registration) with odrNaiyoCd "407" (No.1) and "408" (No.2).

8. **SOD Issuance - Single Service:**
   - **Network only (netFlg):** If router code is "A", skip (router-only already registered). Otherwise, issue SOD with odrNaiyoCd "401" (new) or "402" (change).
   - **Telephone only (telFlg):** If router code is "B", skip (VOIP-only already registered). Otherwise, issue SOD with odrNaiyoCd "406" (new) or "407" (change). If No.2 exists, issue a separate SOD for No.2.

## 3. Parameter Analysis

| No | Parameter Name | Type | Business Description |
|----|---------------|------|---------------------|
| 1 | `handle` | `SessionHandle` | Database session handle for transaction management and connection pooling |
| 2 | `scCall` | `ServiceComponentRequestInvoker` | Service Component invocation proxy used to execute CBS/SC batch services |
| 3 | `param` | `IRequestParameterReadWrite` | Request parameter container for passing data between CBS layers |
| 4 | `fixedText` | `String` | Fixed text configuration, used for message template resolution and error display text |
| 5 | `funcCd` | `String` | Function code identifying the operation type (e.g., "2" for registration/inquiry vs. other codes for change/delete operations). Controls mapping behavior in called CBS. |
| 6 | `kikiMsg` | `CAANMsg` | Equipment message container carrying equipment-level data: equipment service contract number (`KKTK_SVC_KEI_NO`), equipment change number (`KIKI_CHG_NO`), home equipment model code (`TAKNKIKI_MODEL_CD`) |
| 7 | `modelCd` | `String` | Model code for the home equipment being provisioned or changed |
| 8 | `kikiSeizoNo` | `String` | Equipment manufacturing number (serial number) of the home equipment unit |
| 9 | `ekk2811B504outMsg` | `CAANMsg[]` | Pre-queried equipment operation service contract results. Each element contains the equipment service contract line status and equipment service code (G01 = router, G02 = telephone adapter). Drives the netFlg/telFlg classification. |
| 10 | `ksnMsg` | `CAANMsg` | Service line message container, carries the service contract return line item data (from version 7.00.43 update). Previously commented out, now active for service return continuation. |
| 11 | `baseYMD` | `String` | Base year-month-day (YYYYMMDD format) used as the reservation application date for service contract inquiries. Serves as the temporal reference point for version selection. |
| 12 | `svcKeiNoList` | `ArrayList<String>` | List of service contract numbers to process. Each entry represents a service contract line item to be analyzed for network vs. telephone classification. Added in v36.00.00 (previously a single String). |
| 13 | `kktkAdchgChuFlg` | `boolean` | Customer transfer/change-in-progress flag. When true, indicates the customer is migrating to a new address and filtering must use the post-change identification list (`adchgAfSvcKeiUcwkNoList`). |
| 14 | `adchgAfSvcKeiUcwkNoList` | `ArrayList<String>` | List of service contract line item numbers that are registered as post-change identification numbers. Used to filter telephone contract lines eligible during customer transfers. Added in v36.00.00. |

**Constants resolved in conditions:**

| Constant | Value | Meaning |
|----------|-------|---------|
| `JKKStrConst.CD00130_01` | `"01"` | Network service code (FTTH) |
| `JKKStrConst.CD00130_02` | `"02"` | Telephone service code (DSL) |
| `KKOP_SVC_CD_G01` | `"G01"` | Multi-functional router equipment service code (Fiber multi-functional router / Router function) |
| `KKOP_SVC_CD_G02` | `"G02"` | Telephone adapter equipment service code (Telephone adapter function) |
| `KKOP_SVC_KEI_STAT_DSL` | `"910"` | Canceled status (Equipment operation service contract) |
| `KKOP_SVC_KEI_STAT_CANCEL` | `"920"` | Canceled status (Equipment operation service contract) |
| `SVC_KEI_UCWK_STAT_DSL` | `"910"` | Canceled status (Service contract line item) |
| `SVC_KEI_UCWK_STAT_CANCEL` | `"920"` | Cancelled status (Service contract line item) |
| `TAKINORT_KINO_CD_A` | `"A"` | Router function only (multi-functional router function code) |
| `TAKINORT_KINO_CD_B` | `"B"` | VOIP function only (multi-functional router function code) |
| `ORDER_SBT_CD_2` | `"2"` | Telephone (order type code) |
| `FUNC_CODE_1` | `"1"` | Function code: Check and register |
| `FUNC_CODE_2` | `"2"` | Function code: Check only |

## 4. CRUD Operations / Called Services

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

| CRUD | SC / CBS | SC Code | Entity / DB | Operation Description |
|------|----------|---------|-------------|----------------------|
| R | `callSC(handle,scCall,param,fixedText,ekk0251a010InMsg)` | EKK0251A010SC | KK_T_SVC_KEI_KAISEN_UCWK | Read: Service contract line item agreement for service return - retrieves continuation source service contract line item number and generation timestamp |
| R | `callSC(handle,scCall,param,fixedText,ekk0081a010InMsg)` (within loop) | EKK0081A010SC | KK_T_SVC_KEI | Read: Service contract agreement - retrieves service contract number, service code, generation timestamp per contract line |
| R | `callSC(handle,scCall,param,fixedText,ekk0161b004InMsg)` (network branch) | EKK0161B004SC | KK_T_SVC_KEI_UCWK | Read: Service contract line item list - retrieves service contract line items with status for latest version selection via maxUcwkData |
| R | `isOdrHakkoJokenZ1(handle,scCall,param,fixedText,svcKeiNoTel)` | Z1 order condition check | KK_T_ODR_HAKKO_JOKEN | Read: Check Z1 order existence for telephone contract - checks if Z1 type order conditions exist |
| R | `callSC(handle,scCall,param,fixedText,ekk0191b001InMsg)` (telephone branch) | EKK0191B001SC | KK_T_SVC_KEI_UCWK | Read: Service contract line item list for eo telephone - retrieves telephone service contract lines with telnoJun, status, continuation data |
| R | `callSC(handle,scCall,param,fixedText,ekk0191a010InMsg)` (telephone branch) | EKK0191A010SC | KK_T_SVC_KEI_UCWK | Read: Service contract line item agreement for eo telephone - retrieves SIP credentials and generation timestamp per line |
| R | `isOdrHakkoJokenZ3(handle,scCall,param,fixedText,svcKeiNoTel,svcKeiUcwkNo1)` | Z3 order condition check | KK_T_ODR_HAKKO_JOKEN | Read: Check Z3 order existence for No.1 - checks Z3 type order conditions on telephone No.1 line |
| R | `isOdrHakkoJokenZ3(handle,scCall,param,fixedText,svcKeiNoTel,svcKeiUcwkNo2)` | Z3 order condition check | KK_T_ODR_HAKKO_JOKEN | Read: Check Z3 order existence for No.2 - checks Z3 type order conditions on telephone No.2 line |
| R | `callSC(handle,scCall,param,fixedText,ekk2811A010InMsg)` (G01 branch) | EKK2811A010SC | KK_T_KKOP_SVC_KEI | Read: KKOP service contract agreement - retrieves latest generation timestamp for multi-functional router |
| R | `callSC(handle,scCall,param,fixedText,ekk2811A010InMsg)` (G02 branch) | EKK2811A010SC | KK_T_KKOP_SVC_KEI | Read: KKOP service contract agreement - retrieves latest generation timestamp for telephone adapter |
| R | `callSC(handle,scCall,param,fixedText,ekk0341b029InMsg)` | EKK0341B029SC | KK_T_KKTK_SVC_KEI | Read: Equipment provider service contract list (equipment change number) - retrieves equipment service details for maximum generation timestamp |
| R | `callSC(handle,scCall,param,fixedText,ekk1041b001InMsg)` | EKK1041B001SC | KK_T_ODR_SET | Read: Order setting list - retrieves multi-functional router function code (takinortKinoCd) from order settings |
| C | `callSC(handle,scCall,param,fixedText,ekk1081d010InMsg)` | EKK1081D010SC | KK_T_ODR_HAKKO_JOKEN | Create: Order condition registration - registers SOD issuance condition with order content code (401/402/406/407/408) |
| C | `callSC(handle,scCall,param,fixedText,ekk1551d5010nMsg)` | EKK1551D5010SC | KK_T_ODR_SEIJO / KK_T_SVC_KEI_UCWK | Create: Order information creation and work registration - creates the actual SOD record with work data and timestamps |

## 5. Dependency Trace

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

No screen/batch entry points found within 8 hops. Direct callers found: 1 methods.

| # | Caller (Screen/Batch) | Call Chain (Full Path to this Method) | Terminal (SC / CRUD / Entity) |
|---|----------------------|--------------------------------------|-------------------------------|
| 1 | `JKKShkaFinJiKikiStaAddCC.addShkaFinJiKiStaAdd()` | `addShkaFinJiKiStaAdd` -> `callSodR0S0` | `callSC [R] KK_T_SVC_KEI_KAISEN_UCWK`, `callSC [R] KK_T_SVC_KEI`, `callSC [R] KK_T_SVC_KEI_UCWK`, `isOdrHakkoJokenZ1 [R] KK_T_ODR_HAKKO_JOKEN`, `isOdrHakkoJokenZ3 [R] KK_T_ODR_HAKKO_JOKEN`, `callSC [R] KK_T_KKOP_SVC_KEI`, `callSC [R] KK_T_KKTK_SVC_KEI`, `callSC [R] KK_T_ODR_SET`, `callSC [C] KK_T_ODR_HAKKO_JOKEN`, `callSC [C] KK_T_ODR_SEIJO` |

**Caller Description:**
- `addShkaFinJiKiStaAdd()` is the direct caller in the same class `JKKShkaFinJiKikiStaAddCC`. It is the primary entry point that triggers the full price/financial calculation, equipment status addition workflow including this SOD issuance method.

**Terminal Operations from this Method (sorted by category):**

| Terminal Operation | Type | Entity / DB | Description |
|--------------------|------|-------------|-------------|
| `callSC(EKK0251A010)` | Read | KK_T_SVC_KEI_KAISEN_UCWK | Service return continuation source lookup |
| `callSC(EKK0081A010)` | Read | KK_T_SVC_KEI | Service contract agreement inquiry per line |
| `callSC(EKK0161B004)` | Read | KK_T_SVC_KEI_UCWK | Network service line item list |
| `isOdrHakkoJokenZ1` | Read | KK_T_ODR_HAKKO_JOKEN | Z1 order existence check |
| `callSC(EKK0191B001)` | Read | KK_T_SVC_KEI_UCWK | Telephone service line item list |
| `callSC(EKK0191A010)` | Read | KK_T_SVC_KEI_UCWK | Telephone service line agreement |
| `isOdrHakkoJokenZ3` | Read | KK_T_ODR_HAKKO_JOKEN | Z3 order existence check (x2: No.1, No.2) |
| `callSC(EKK2811A010)` | Read | KK_T_KKOP_SVC_KEI | Equipment operation service contract (G01/G02) |
| `callSC(EKK0341B029)` | Read | KK_T_KKTK_SVC_KEI | Equipment provider service contract list |
| `callSC(EKK1041B001)` | Read | KK_T_ODR_SET | Order settings for router function code |
| `callSC(EKK1081D010)` | Create | KK_T_ODR_HAKKO_JOKEN | Order condition registration |
| `callSC(EKK1551D5010)` | Create | KK_T_ODR_SEIJO, KK_T_SVC_KEI_UCWK | Order information creation and work registration |

## 6. Per-Branch Detail Blocks

### Block 1 - Variable Initialization (L5927-L5942)

Initialize all local variables, flags, and message containers.

| # | Type | Code |
|---|------|------|
| 1 | SET | `netFlg = false` |
| 2 | SET | `telFlg = false` |
| 3 | SET | `ekk0081a010outMsg = null` |
| 4 | SET | Multiple CAANMsg references initialized to null |
| 5 | SET | String fields: `kkOpSvcKeiNoNet`, `kkOpSvcKeiNoTel`, `svkeiGadtm`, `geneAddDtmNet`, `geneAddDtmTel` |
| 6 | SET | String fields: `svcKeiNo`, `svcKeiNoNet`, `svcKeiNoTel`, `svcKeiUcwkNo`, `svkeiuwGadtm`, etc. |

### Block 2 - Service Return Line Item Inquiry (L5980-L6007)

Retrieve continuation source service contract line item number for service returns.

| # | Type | Code |
|---|------|------|
| 1 | SET | `ekk0251a010InMsg` = mapping with TEMPLATE_ID_EKK0251A010, FUC_CODE_2, `kikiMsg.getString(SVC_KEI_KAISEN_UCWK_NO)` |
| 2 | CALL | `callSC(handle, scCall, param, fixedText, ekk0251a010InMsg)` |
| 3 | SET | `kaisenMsg = ekk0251a010outMsg[0]` |
| 4 | SET | `svcKeiKaisenUcwkNo = kaisenMsg.getString(SVC_KEI_KAISEN_UCWK_NO)` |
| 5 | SET | `ksnGeneAddDtm = kaisenMsg.getString(GENE_ADD_DTM)` |

### Block 3 - Service Contract Number Iteration (L6009-L6013)

Iterate over all service contract lines in `svcKeiNoList`.

| # | Type | Code |
|---|------|------|
| 1 | SET | `i = 0` |
| 2 | SET | `svcKeiNo_tmp = svcKeiNoList.get(i)` |

### Block 4 - Service Contract Inquiry (L6014-L6043)

Query the service contract agreement for each line.

| # | Type | Code |
|---|------|------|
| 1 | SET | `ekk0081a010InMsg` = mapping with TEMPLATE_ID_EKK0081A010, FUC_CODE_2, `svcKeiNo_tmp`, `baseYMD` |
| 2 | CALL | `callSC(handle, scCall, param, fixedText, ekk0081a010InMsg)` |
| 3 | SET | `svcMsg = ekk0081a010outMsg[0]` |
| 4 | SET | `svcKeiNo = svcMsg.getString(SVC_KEI_NO)` |
| 5 | SET | `svcCd = svcMsg.getString(SVC_CD)` |

### Block 5 - IF: Service Contract Status Check (L6044-L6051)

Skip service contract lines that are in "accepted" (010), "reviewed" (020), "settled" (030), "canceled" (910), or "cancelled" (920) status.

| # | Type | Code |
|---|------|------|
| 1 | IF | `isSvcKeiStat(svcMsg)` [SVC_KEI_UCWK_STAT_010="010", 020="020", 030="030", 910="910", 920="920"] |
| 2 | EXEC | `continue` |

### Block 6 - IF/ELSE: Network vs Telephone Service Classification (L6052-L6059)

Classify by service code.

**Block 6.1 - IF: Network Service (CD00130_01 = "01") (L6052-L6099)**

| # | Type | Code |
|---|------|------|
| 1 | IF | `JKKStrConst.CD00130_01.equals(svcCd)` [CD00130_01="01" - Network service] |
| 2 | SET | `svcKeiNoNet = svcKeiNo` |
| 3 | SET | `ekk0161b004InMsg` = mapping with TEMPLATE_ID_EKK0161B004, FUC_CODE_1, `svcKeiNo` |
| 4 | CALL | `callSC(handle, scCall, param, fixedText, ekk0161b004InMsg)` |
| 5 | IF | `null != ekk0161b004outMsg && 0 < ekk0161b004outMsg.length` |
| 6 | FOR | `j = 0` to `ekk0161b004outMsg.length` |
| 7 | IF | `isSvcUcwkStat(ekk0161b004outMsg[j])` [checks valid line item status] |
| 8 | IF | `null == maxSvcUwMsg` |
| 9 | SET | `maxSvcUwMsg = ekk0161b004outMsg[j]` |
| 10 | SET | `maxSvcUwMsg = maxUcwkData(ekk0161b004outMsg[j], maxSvcUwMsg)` |
| 11 | SET | `svcKeiUcwkNo = maxSvcUwMsg.getString(SVC_KEI_UCWK_NO)` |
| 12 | SET | `svkeiuwGadtm = maxSvcUwMsg.getString(GENE_ADD_DTM)` |
| 13 | SET | `svkeiGadtmNet = svcMsg.getString(GENE_ADD_DTM)` |

**Block 6.2 - ELSE: Telephone Service (CD00130_02 = "02") (L6100-L6315)**

| # | Type | Code |
|---|------|------|
| 1 | ELSE IF | `JKKStrConst.CD00130_02.equals(svcCd)` [CD00130_02="02" - Telephone service] |
| 2 | SET | `svcKeiNoTel = svcKeiNo` |
| 3 | CALL | `z1Flg = isOdrHakkoJokenZ1(handle, scCall, param, fixedText, svcKeiNoTel)` |
| 4 | SET | `svkeiGadtmTel = svcMsg.getString(GENE_ADD_DTM)` |
| 5 | SET | `fuc_code = FUC_CODE_1` |
| 6 | IF | `kktkAdchgChuFlg` [customer transfer flag] |
| 7 | SET | `fuc_code = FUC_CODE_4` |
| 8 | SET | `ekk0191b001InMsg` = mapping with TEMPLATE_ID_EKK0191B001, `fuc_code`, `svcKeiNoTel` |
| 9 | CALL | `callSC(handle, scCall, param, fixedText, ekk0191b001InMsg)` |
| 10 | IF | `null != ekk0191b001outMsg && 0 < ekk0191b001outMsg.length` |
| 11 | FOR | `j = 0` to `ekk0191b001outMsg.length` |
| 12 | SET | `svcKeiUcwkNoTel = ekk0191b001outMsg[j].getString(SVC_KEI_UCWK_NO)` |
| 13 | SET | `telnoJun = ekk0191b001outMsg[j].getString(TELNO_JUN)` |
| 14 | SET | `svcKeiUcwkStat = ekk0191b001outMsg[j].getString(SVC_KEI_UCWK_STAT)` |
| 15 | IF | `SVC_KEI_UCWK_STAT_DSL.equals(svcKeiUcwkStat) || SVC_KEI_UCWK_STAT_CANCEL.equals(svcKeiUcwkStat)` [Stat 910 or 920] |
| 16 | EXEC | `continue` |
| 17 | IF | `kktkAdchgChuFlg` [transfer mode] |
| 18 | IF | `!adchgAfSvcKeiUcwkNoList.contains(svcKeiUcwkNoTel)` |
| 19 | EXEC | `continue` |
| 20 | SET | `keizkMtSvcKeiUcwkNoTel = ekk0191b001outMsg[j].getString(KEIZK_MT_SVC_KEI_UCWK_NO)` |
| 21 | SET | `keizkAfKeiChgechuFlg = ekk0191b001outMsg[j].getString(KEIZK_AF_KEI_CHGECHU_FLG)` |
| 22 | IF | `keizkMtSvcKeiUcwkNoTel != null && !"".equals(keizkMtSvcKeiUcwkNoTel)` |
| 23 | IF | `"1".equals(keizkAfKeiChgechuFlg)` |
| 24 | SET | `svcKeiUcwkNoTel = keizkMtSvcKeiUcwkNoTel` |
| 25 | SET | `ekk0191a010InMsg` = mapping with TEMPLATE_ID_EKK0191A010, FUC_CODE_2, `svcKeiUcwkNoTel` |
| 26 | CALL | `callSC(handle, scCall, param, fixedText, ekk0191a010InMsg)` |
| 27 | SET | `svcUwMsg = ekk0191a010outMsg[0]` |
| 28 | IF | `isValueChk(svcUwMsg, SIP_USER_ID) || isValueChk(svcUwMsg, SIP_USER_ID_PWD)` |
| 29 | EXEC | `continue` |
| 30 | IF | `"1".equals(telnoJun)` |
| 31 | SET | `svkeiuwGadtm1 = svcUwMsg.getString(GENE_ADD_DTM)` |
| 32 | SET | `svcKeiUcwkNo1 = svcKeiUcwkNoTel` |
| 33 | ELSE IF | `"2".equals(telnoJun)` |
| 34 | SET | `svkeiuwGadtm2 = svcUwMsg.getString(GENE_ADD_DTM)` |
| 35 | SET | `svcKeiUcwkNo2 = svcKeiUcwkNoTel` |
| 36 | IF | `svcKeiUcwkNo1 == null || "".equals(svcKeiUcwkNo1)` [fallback: promote No.2 to No.1] |
| 37 | SET | `svkeiuwGadtm1 = svkeiuwGadtm2; svkeiuwGadtm2 = ""` |
| 38 | SET | `svcKeiUcwkNo1 = svcKeiUcwkNo2; svcKeiUcwkNo2 = ""` |

### Block 7 - Z3 Order Existence Check for Telephone Lines (L6317-L6345)

Check Z3 order existence for each telephone line number (No.1 and No.2).

| # | Type | Code |
|---|------|------|
| 1 | IF | `svcKeiUcwkNo1 != null && !"".equals(svcKeiUcwkNo1)` |
| 2 | CALL | `z3Flg1 = isOdrHakkoJokenZ3(handle, scCall, param, fixedText, svcKeiNoTel, svcKeiUcwkNo1)` |
| 3 | IF | `svcKeiUcwkNo2 != null && !"".equals(svcKeiUcwkNo2)` |
| 4 | CALL | `z3Flg2 = isOdrHakkoJokenZ3(handle, scCall, param, fixedText, svcKeiNoTel, svcKeiUcwkNo2)` |

### Block 8 - Equipment Operation Service Contract Iteration (L6347-L6350)

Loop over equipment operation service contracts from `ekk2811B504outMsg`.

| # | Type | Code |
|---|------|------|
| 1 | FOR | `i = 0` to `ekk2811B504outMsg.length` |
| 2 | SET | `kkopSvcKeiStat = ekk2811B504outMsg[i].getString(KKOP_SVC_KEI_STAT)` |
| 3 | SET | `kkopSvcCd = ekk2811B504outMsg[i].getString(KKOP_SVC_CD)` |

### Block 9 - IF: Multi-Functional Router (G01) Branch (L6352-L6397)

Process active multi-functional router (G01) equipment services.

| # | Type | Code |
|---|------|------|
| 1 | IF | `KKOP_SVC_CD_G01.equals(kkopSvcCd) && !KKOP_SVC_KEI_STAT_DSL.equals(kkopSvcKeiStat) && !KKOP_SVC_KEI_STAT_CANCEL.equals(kkopSvcKeiStat) && !"".equals(svcKeiNoNet)` [G01 + active + has net service] |
| 2 | SET | `netFlg = true` |
| 3 | SET | `kkOpSvcKeiNoNet = ekk2811B504outMsg[i].getString(KKOP_SVC_KEI_NO)` |
| 4 | SET | `ekk2811A010InMsg` = mapping with TEMPLATE_ID_EKK2811A010, FUC_CODE_2, `kkOpSvcKeiNoNet`, `baseYMD` |
| 5 | CALL | `callSC(handle, scCall, param, fixedText, ekk2811A010InMsg)` |
| 6 | SET | `geneAddDtmNet = kkOpSvcKeiMsg.getString(GENE_ADD_DTM)` |
| 7 | SET | `odrNaiyoCd = "401"` [FTTH router set/regist] |

### Block 10 - IF: Telephone Adapter (G02) Branch (L6399-L6444)

Process active telephone adapter (G02) equipment services.

| # | Type | Code |
|---|------|------|
| 1 | IF | `KKOP_SVC_CD_G02.equals(kkopSvcCd) && !KKOP_SVC_KEI_STAT_DSL.equals(kkopSvcKeiStat) && !KKOP_SVC_KEI_STAT_CANCEL.equals(kkopSvcKeiStat) && !"".equals(svcKeiNoTel)` [G02 + active + has tel service] |
| 2 | SET | `telFlg = true` |
| 3 | SET | `kkOpSvcKeiNoTel = ekk2811B504outMsg[i].getString(KKOP_SVC_KEI_NO)` |
| 4 | SET | `ekk2811A010InMsg` = mapping with TEMPLATE_ID_EKK2811A010, FUC_CODE_2, `kkOpSvcKeiNoTel`, `baseYMD` |
| 5 | CALL | `callSC(handle, scCall, param, fixedText, ekk2811A010InMsg)` |
| 6 | SET | `geneAddDtmTel = kkOpSvcKeiMsg.getString(GENE_ADD_DTM)` |
| 7 | SET | `odrNaiyoCd = "406"` [Telephone adapter set/regist] |

### Block 11 - Equipment Info and Router Function Code Acquisition (L6446-L6504)

Extract equipment-level data and determine the multi-functional router function code.

| # | Type | Code |
|---|------|------|
| 1 | SET | `kktkSvcKeiNo = kikiMsg.getString(KKTK_SVC_KEI_NO)` |
| 2 | SET | `kikiChgNo = kikiMsg.getString(KIKI_CHG_NO)` |
| 3 | SET | `taknkikiModelCd = kikiMsg.getString(TAKNKIKI_MODEL_CD)` |
| 4 | SET | `ekk0341b029InMsg` = mapping with TEMPLATE_ID_EKK0341B029, FUC_CODE_1, `kktkSvcKeiNo`, `kikiChgNo` |
| 5 | CALL | `callSC(handle, scCall, param, fixedText, ekk0341b029InMsg)` |
| 6 | SET | `kikiMsgMax = ekk0341b029outMsg[0]` |
| 7 | SET | `ekk1041b001InMsg` = mapping with TEMPLATE_ID_EKK1041B001, "1", `kktkSvcKeiNo`, `taknkikiModelCd`, `kikiSeizoNo`, `ORDER_SBT_CD_2`, `KEY_SVC_ORDER_CD_26` |
| 8 | CALL | `callSC(handle, scCall, param, fixedText, ekk1041b001InMsg)` |
| 9 | IF | `ekk1041b001outMsgList != null && ekk1041b001outMsgList.length != 0` |
| 10 | IF | `odrSetMsg != null` |
| 11 | SET | `takinortKinoCd = odrSetMsg.getString(TAKINORT_KINO_CD)` |
| 12 | IF | `takinortKinoCd == null` |
| 13 | SET | `takinortKinoCd = ""` |

### Block 12 - IF: Dual Service SOD Issuance (netFlg && telFlg) (L6506-L6563)

When both FTTH and telephone services are active, issue SOD based on router function code.

**Block 12.1 - IF: Empty or B (VOIP-only) Router Code (L6506-L6546)**

| # | Type | Code |
|---|------|------|
| 1 | IF | `"".equals(takinortKinoCd) || TAKINORT_KINO_CD_B.equals(takinortKinoCd)` [takinortKinoCd is empty or "B" (VOIP-only)] |
| 2 | IF | `TAKINORT_KINO_CD_B.equals(takinortKinoCd)` |
| 3 | SET | `yokyuSbtCd = "04"` [change] |
| 4 | SET | `odrNaiyoCd = "402"` [multi-functional router set/change - router function/regist] |
| 5 | ELSE | |
| 6 | SET | `yokyuSbtCd = "02"` [new] |
| 7 | SET | `odrNaiyoCd = "401"` [multi-functional router set/regist - router function/regist] |
| 8 | SET | `ekk1081d010InMsg = setInMsgEKK1081D010_45(funcCd, kikiMsgMax, svcKeiNoNet, svcKeiUcwkNo, null, modelCd, kikiSeizoNo, "2", "26", yokyuSbtCd, svcKeiKaisenUcwkNo)` |
| 9 | CALL | `callSC(handle, scCall, param, fixedText, ekk1081d010InMsg)` |
| 10 | SET | `ekk1551d5010nMsg = setInMsgEKK1551D010_45(funcCd, ekk1081d010outMsg, odrNaiyoCd, kikiMsgMax, svcKeiNoNet, svkeiGadtmNet, svcKeiUcwkNo, svkeiuwGadtm, svcKeiKaisenUcwkNo, ksnGeneAddDtm, kkOpSvcKeiNoNet, "", geneAddDtmNet, "")` |
| 11 | CALL | `callSC(handle, scCall, param, fixedText, ekk1551d5010nMsg)` |

**Block 12.2 - IF: A (Router-only) or Empty with Z1 false (L6548-L6595)**

| # | Type | Code |
|---|------|------|
| 1 | IF | `"".equals(takinortKinoCd) || TAKINORT_KINO_CD_A.equals(takinortKinoCd)` AND `z1Flg == false` |
| 2 | IF | `z3Flg1 == false` [No.1 code] |
| 3 | SET | `ekk1081d010InMsg1 = setInMsgEKK1081D010_45(funcCd, kikiMsgMax, svcKeiNoTel, svcKeiUcwkNo1, null, modelCd, kikiSeizoNo, "2", "26", "04", svcKeiKaisenUcwkNo)` |
| 4 | CALL | `callSC(handle, scCall, param, fixedText, ekk1081d010InMsg1)` |
| 5 | SET | `ekk1551d5010nMsg1 = setInMsgEKK1551D010_45(funcCd, ekk1081d010outMsg1, "407", kikiMsgMax, svcKeiNoTel, svkeiGadtmTel, svcKeiUcwkNo1, svkeiuwGadtm1, svcKeiKaisenUcwkNo, ksnGeneAddDtm, "", kkOpSvcKeiNoTel, "", geneAddDtmTel)` |
| 6 | CALL | `callSC(handle, scCall, param, fixedText, ekk1551d5010nMsg1)` |
| 7 | IF | `!"".equals(svcKeiUcwkNo2) && z3Flg2 == false` [No.2 code] |
| 8 | SET | `ekk1081d010InMsg2 = setInMsgEKK1081D010_45(funcCd, kikiMsgMax, svcKeiNoTel, svcKeiUcwkNo2, null, modelCd, kikiSeizoNo, "2", "26", "04", svcKeiKaisenUcwkNo)` |
| 9 | CALL | `callSC(handle, scCall, param, fixedText, ekk1081d010InMsg2)` |
| 10 | SET | `ekk1551d5010nMsg2 = setInMsgEKK1551D010_45(funcCd, ekk1081d010outMsg2, "408", kikiMsgMax, svcKeiNoTel, svkeiGadtmTel, svcKeiUcwkNo2, svkeiuwGadtm2, svcKeiKaisenUcwkNo, ksnGeneAddDtm, "", kkOpSvcKeiNoTel, "", geneAddDtmTel)` |
| 11 | CALL | `callSC(handle, scCall, param, fixedText, ekk1551d5010nMsg2)` |

### Block 13 - ELSE: Single Service SOD Issuance (L6597-L6628)

When only one service type is active.

**Block 13.1 - IF: Network Only (netFlg) (L6597-L6639)**

| # | Type | Code |
|---|------|------|
| 1 | ELSE IF | `netFlg` |
| 2 | IF | `TAKINORT_KINO_CD_A.equals(takinortKinoCd)` |
| 3 | RETURN | `return` (router-only already registered) |
| 4 | SET | `svcKeiNo = svcKeiNoNet; svkeiGadtm = svkeiGadtmNet` |
| 5 | IF | `TAKINORT_KINO_CD_B.equals(takinortKinoCd)` |
| 6 | SET | `yokyuSbtCd = "04"; odrNaiyoCd = "402"` (change) |
| 7 | ELSE | |
| 8 | SET | `yokyuSbtCd = "02"; odrNaiyoCd = "401"` (new) |
| 9 | SET | `ekk1081d010InMsg = setInMsgEKK1081D010_45(...)` |
| 10 | CALL | `callSC(handle, scCall, param, fixedText, ekk1081d010InMsg)` |
| 11 | SET | `ekk1551d5010nMsg = setInMsgEKK1551D010_45(..., geneAddDtmNet, geneAddDtmTel)` |
| 12 | CALL | `callSC(handle, scCall, param, fixedText, ekk1551d5010nMsg)` |

**Block 13.2 - ELSE IF: Telephone Only (telFlg) (L6641-L6705)**

| # | Type | Code |
|---|------|------|
| 1 | ELSE IF | `telFlg` |
| 2 | IF | `TAKINORT_KINO_CD_B.equals(takinortKinoCd)` |
| 3 | RETURN | `return` (VOIP-only already registered) |
| 4 | SET | `svcKeiNo = svcKeiNoTel; svkeiGadtm = svkeiGadtmTel` |
| 5 | SET | `svcKeiUcwkNo = svcKeiUcwkNo1; svkeiuwGadtm = svkeiuwGadtm1` |
| 6 | IF | `TAKINORT_KINO_CD_A.equals(takinortKinoCd)` |
| 7 | SET | `yokyuSbtCd = "04"; odrNaiyoCd = "407"` (VOIP function change) |
| 8 | ELSE | |
| 9 | SET | `yokyuSbtCd = "02"; odrNaiyoCd = "406"` (VOIP function new) |
| 10 | SET | `ekk1081d010InMsg = setInMsgEKK1081D010_45(...)` |
| 11 | CALL | `callSC(handle, scCall, param, fixedText, ekk1081d010InMsg)` |
| 12 | SET | `ekk1551d5010nMsg = setInMsgEKK1551D010_45(..., geneAddDtmNet, geneAddDtmTel)` |
| 13 | CALL | `callSC(handle, scCall, param, fixedText, ekk1551d5010nMsg)` |
| 14 | IF | `!"".equals(svcKeiUcwkNo2)` |
| 15 | SET | `ekk1081d010InMsg2 = setInMsgEKK1081D010_45(funcCd, kikiMsgMax, svcKeiNoTel, svcKeiUcwkNo2, null, modelCd, kikiSeizoNo, "2", "26", "04", svcKeiKaisenUcwkNo)` |
| 16 | CALL | `callSC(handle, scCall, param, fixedText, ekk1081d010InMsg2)` |
| 17 | SET | `ekk1551d5010nMsg2 = setInMsgEKK1551D010_45(funcCd, ekk1081d010outMsg2, "408", kikiMsgMax, svcKeiNoTel, svkeiGadtmTel, svcKeiUcwkNo2, svkeiuwGadtm2, svcKeiKaisenUcwkNo, ksnGeneAddDtm, "", kkOpSvcKeiNoTel, "", geneAddDtmTel)` |
| 18 | CALL | `callSC(handle, scCall, param, fixedText, ekk1551d5010nMsg2)` |

## 7. Glossary

| Term | Type | Business Meaning |
|------|------|------------------|
| `callSodR0S0` | Method | Service Order Data issuance for equipment-provided service contracts |
| `svcKeiNoList` | Parameter | Service contract number list - identifies all service contract lines to be processed |
| `kktkAdchgChuFlg` | Parameter | Customer transfer/change-in-progress flag - when true, filters eligible lines using `adchgAfSvcKeiUcwkNoList` |
| `adchgAfSvcKeiUcwkNoList` | Parameter | Post-change service contract line item number list - lines registered after customer transfer |
| `takinortKinoCd` | Variable | Multi-functional router function code - "A" (router-only), "B" (VOIP-only), "C" (double), or empty |
| `netFlg` | Variable | Network (FTTH) service flag - set true when a G01 router service is active |
| `telFlg` | Variable | Telephone (DSL) service flag - set true when a G02 telephone adapter service is active |
| `svcKeiUcwkNo1` | Variable | Service contract line item number No.1 (first telephone number) |
| `svcKeiUcwkNo2` | Variable | Service contract line item number No.2 (second telephone number) |
| `svkeiuwGadtm1` | Variable | Generation timestamp for service contract line item No.1 |
| `svkeiuwGadtm2` | Variable | Generation timestamp for service contract line item No.2 |
| `z1Flg` | Variable | Z1 order existence flag - indicates whether Z1 type order conditions exist for the telephone contract |
| `z3Flg1` | Variable | Z3 order existence flag for No.1 telephone line |
| `z3Flg2` | Variable | Z3 order existence flag for No.2 telephone line |
| `odrNaiyoCd` | Variable | Order content code - classifies SOD order type: "401" (FTTH router new), "402" (FTTH router change), "406" (tel adapter new), "407" (tel adapter change No.1), "408" (tel adapter change No.2) |
| `yokyuSbtCd` | Variable | Request type code - "02" for new, "04" for change |
| `svcKeiKaisenUcwkNo` | Variable | Service contract return line item number - continuation source line during service returns |
| `kkOpSvcKeiNoNet` | Variable | Equipment operation service contract number for network (router) |
| `kkOpSvcKeiNoTel` | Variable | Equipment operation service contract number for telephone (adapter) |
| `geneAddDtmNet` | Variable | Generation timestamp for latest router function service |
| `geneAddDtmTel` | Variable | Generation timestamp for latest telephone adapter function service |
| `CD00130_01` | Constant | Service code "01" - Network (FTTH) service type |
| `CD00130_02` | Constant | Service code "02" - Telephone (DSL) service type |
| `KKOP_SVC_CD_G01` | Constant | Equipment service code "G01" - Multi-functional router (router function) |
| `KKOP_SVC_CD_G02` | Constant | Equipment service code "G02" - Telephone adapter (telephone function) |
| `KKOP_SVC_KEI_STAT_DSL` | Constant | Status "910" - Canceled (Equipment operation service contract) |
| `KKOP_SVC_KEI_STAT_CANCEL` | Constant | Status "920" - Canceled (Equipment operation service contract) |
| `SVC_KEI_UCWK_STAT_DSL` | Constant | Status "910" - Canceled (Service contract line item) |
| `SVC_KEI_UCWK_STAT_CANCEL` | Constant | Status "920" - Cancelled (Service contract line item) |
| `TAKINORT_KINO_CD_A` | Constant | Router function code "A" - Router function only |
| `TAKINORT_KINO_CD_B` | Constant | Router function code "B" - VOIP function only |
| `ORDER_SBT_CD_2` | Constant | Order type code "2" - Telephone |
| `FUNC_CODE_1` | Constant | Function code "1" - Check and register |
| `FUNC_CODE_2` | Constant | Function code "2" - Check only |
| SOD | Acronym | Service Order Data - order data record for service provisioning workflow |
| FTTH | Business term | Fiber To The Home - fiber-optic broadband internet service |
| DSL | Business term | Digital Subscriber Line - telephone-based broadband service |
| KKOP | Acronym | K-Opticom Operation - equipment operation service management |
| KKTK | Acronym | K-Opticom Telephone Customer (home equipment provider service) |
| Z1 Order | Business term | Order condition type Z1 - prior-order check for router/VOIP single function |
| Z3 Order | Business term | Order condition type Z3 - prior-order check for telephone function line items |
| VOIP | Acronym | Voice over IP - internet telephony service |
| EKK0251A010 | CBS Code | Service contract line item agreement for service return |
| EKK0081A010 | CBS Code | Service contract agreement |
| EKK0161B004 | CBS Code | Service contract line item list (network) |
| EKK0191B001 | CBS Code | Service contract line item list for eo telephone |
| EKK0191A010 | CBS Code | Service contract line item agreement for eo telephone |
| EKK2811A010 | CBS Code | Equipment operation service contract agreement |
| EKK0341B029 | CBS Code | Equipment provider service contract list (equipment change number) |
| EKK1041B001 | CBS Code | Order setting list |
| EKK1081D010 | CBS Code | Order condition registration |
| EKK1551D5010 | CBS Code | Order information creation and work registration |
