# Business Logic — JKKCourseRkRtrNsIdChgCC.execute() [140 LOC]

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

## 1. Role

### JKKCourseRkRtrNsIdChgCC.execute()

This method performs **router authentication ID change processing** for the K-Opticom customer foundation system. It is a common component (CC) entry point that routes router authentication ID update logic based on the type of router service associated with a customer's service contract.

The method handles two distinct **service types**: (1) **Single Router** (standard FTTH/Fiber-to-the-Home equipment where a single router is provisioned as part of the service contract), and (2) **Multi-Function Router** (multi-function home gateway devices, including eo Optical Multi-Function Router and HGW models). The routing decision is implicit — if the device-provided service contract message (`EKK0341B002`) returns data, the flow follows the single router path; otherwise, it follows the multi-function router path.

It implements the **delegation and dispatch patterns**: after loading and validating contract data, it builds argument bundles (either a flat `String[]` or a `HashMap`) and delegates the actual ID change logic to two specialized private methods — `execChgRouterNinshoId` for single router scenarios and `execChgMultiRouterNinshoId` for multi-function router scenarios. Both helpers share the same three-step internal process: allocate a shared transaction number, register the order release condition, and conditionally create the order info work registration.

This method serves as a **shared utility** called from screen operation logic (`KKSV0395`), making it a cross-cutting component reused across router-related service contract change operations.

## 2. Processing Pattern (Detailed Business Logic)

```mermaid
flowchart TD
    START(["execute(params)"])
    START --> INIT["Instantiate ServiceComponentRequestInvoker"]
    INIT --> GET_PARAM["Extract paramMap from param.getData(fixedText)"]
    GET_PARAM --> GET_FUNC["Extract funcCode from paramMap"]
    GET_FUNC --> GET_WORK["Extract workDataMap from param.getMappingWorkArea()"]
    GET_WORK --> GET_SVC["Extract svcKeiNo and kk0081GeneAddDtm from workDataMap"]
    GET_SVC --> GET_UCWK["Call getSvcKeiUcwkMsg(handle, scCall, param, fixedText, svcKeiNo)"]
    GET_UCWK --> CHK_UCWK{ekk0161b004Msg != null?}
    CHK_UCWK -->|No| RETURN["Return param (early exit)"]
    CHK_UCWK -->|Yes| EXTRACT_UCWK["Extract svcKeiUcwkNo and kk0161GeneAddDtm from msg"]
    EXTRACT_UCWK --> GET_SVCKEI["Call getKktkSvcKeiMsg(handle, scCall, param, fixedText, svcKeiNo)"]
    GET_SVCKEI --> CHK_SVCKEI{ekk0341b002Msg != null?}
    CHK_SVCKEI -->|Yes: Single Router| EXTRACT_SINGLE["Extract kktkSvcKeiNo, kk0341GeneAddDtm, taknKikiMdCd, kikiSeizoNo"]
    EXTRACT_SINGLE --> BUILD_PARAMS["Build params array (8 elements): svcKeiNo, kk0081GeneAddDtm, svcKeiUcwkNo, kk0161GeneAddDtm, kktkSvcKeiNo, kk0341GeneAddDtm, taknKikiMdCd, kikiSeizoNo"]
    BUILD_PARAMS --> EXEC_SINGLE["Call execChgRouterNinshoId(handle, scCall, param, fixedText, funcCode, params)"]
    EXEC_SINGLE --> EXEC_SINGLE_BODY["Step 1: callSC(EKK1081C011) - Same process number allocation
Step 2: callSC(EKK1081D010) - Order release condition registration
Step 3: if funcCode=1 then callSC(EKK1551D010) - Order info creation work registration"]
    CHK_SVCKEI -->|No: Multi-Function Router| BUILD_PAMAP["Create paMap: svcKeiNo, kk0081GeneAddDtm, svcKeiUcwkNo, kk0161GeneAddDtm"]
    BUILD_PAMAP --> GET_MULTI["Call getMultiRTInfo(handle, scCall, param, fixedText, svcKeiNo)"]
    GET_MULTI --> CHK_MULTI{ekk0251B003Msg != null?}
    CHK_MULTI -->|No| RETURN
    CHK_MULTI -->|Yes| EXTRACT_MULTI["Extract svcKeikaisenUwNo and ekk0251GeneAddDtm"]
    EXTRACT_MULTI --> ADD_PAMAP["Add svcKeikaisenUwNo and ekk0251GeneAddDtm to paMap"]
    ADD_PAMAP --> GET_MULTI_SVC["Call getmultiKktkSvcKeiMsg(handle, scCall, param, fixedText, svcKeikaisenUwNo)"]
    GET_MULTI_SVC --> CHK_MULTI_SVC{ekk0341B504Msg != null?}
    CHK_MULTI_SVC -->|No| RETURN
    CHK_MULTI_SVC -->|Yes| EXTRACT_MULTI_SVC["Extract kktkSvcKeiNo, kk0341GeneAddDtm, taknKikiMdCd, kikiSeizoNo"]
    EXTRACT_MULTI_SVC --> ADD_MULTI_SVC["Add extracted fields to paMap"]
    ADD_MULTI_SVC --> GET_MULTI_OP["Call getmultiKktkOpSvcKeiMsg(handle, scCall, param, fixedText, kktkSvcKeiNo)"]
    GET_MULTI_OP --> CHK_MULTI_OP{ekk2811B010Msg != null?}
    CHK_MULTI_OP -->|No| RETURN
    CHK_MULTI_OP -->|Yes| EXTRACT_MULTI_OP["Extract kk2811KkOpSvcKeiNo and kk2811GeneAddDtm"]
    EXTRACT_MULTI_OP --> ADD_MULTI_OP["Add KkOpSvcKeiNo and kk2811GeneAddDtm to paMap"]
    ADD_MULTI_OP --> EXEC_MULTI["Call execChgMultiRouterNinshoId(handle, scCall, param, fixedText, funcCode, paMap)"]
    EXEC_MULTI --> EXEC_MULTI_BODY["Step 0: isRegiOrdExit - Check if registration order exists
Step 1: if registered -> callSC(EKK1081C011) - Same process number allocation
Step 2: callSC(EKK1081D010) - Order release condition registration
Step 3: if funcCode=1 then callSC(EKK1551D010) - Order info creation work registration"]
    EXEC_MULTI_BODY --> END_NODE(["Return param"])
    EXEC_SINGLE_BODY --> END_NODE
    RETURN --> END_NODE
```

**Block N.3** — [ELSE] `(ekk0341b002Msg == null — Multi-Function Router path)` (L229)

> Route to the multi-function router processing path. This branch handles customers with multi-function home gateway routers (eo Optical Multi-Function Router, HGW) that require additional contract hierarchy resolution (service contract detail lines, device-provided service contract list, and device operation service contract list).

| # | Type | Code |
|---|------|------|
| 1 | SET | `paMap = new HashMap<String, String>()` |
| 2 | EXEC | `paMap.put("svcKeiNo", svcKeiNo)` |
| 3 | EXEC | `paMap.put("ekk0081GeneAddDtm", kk0081GeneAddDtm)` |
| 4 | EXEC | `paMap.put("svcKeiUcwkNo", svcKeiUcwkNo)` |
| 5 | EXEC | `paMap.put("kk0161GeneAddDtm", kk0161GeneAddDtm)` |
| 6 | CALL | `getMultiRTInfo(handle, scCall, param, fixedText, svcKeiNo)` — Calls EKK0251B003 (Service Contract Detail Line List Display — Current Active) |
| 7 | IF | `ekk0251B003Msg != null` (L244) |
| 7.1 | RETURN | `return param;` (early exit if no detail line data) |
| 7.2 | SET | `svcKeikaisenUwNo = ekk0251B003Msg.getString(EKK0251B003CBSMsg1List.SVC_KEI_KAISEN_UCWK_NO)` |
| 7.3 | SET | `ekk0251GeneAddDtm = ekk0251B003Msg.getString(EKK0251B003CBSMsg1List.GENE_ADD_DTM)` |
| 7.4 | EXEC | `paMap.put("svcKeikaisenUwNo", svcKeikaisenUwNo)` |
| 7.5 | EXEC | `paMap.put("ekk0251GeneAddDtm", ekk0251GeneAddDtm)` |
| 8 | CALL | `getmultiKktkSvcKeiMsg(handle, scCall, param, fixedText, svcKeikaisenUwNo)` — Calls EKK0341B504 (Device-Provided Service Contract List Display — Service Contract Detail Line) |
| 9 | IF | `ekk0341B504Msg != null` (L263) |
| 9.1 | RETURN | `return param;` (early exit if no device-provided contract data) |
| 9.2 | SET | `kktkSvcKeiNo = ekk0341B504Msg.getString(EKK0341B504CBSMsg1List.KKTK_SVC_KEI_NO)` |
| 9.3 | SET | `kk0341GeneAddDtm = ekk0341B504Msg.getString(EKK0341B504CBSMsg1List.GENE_ADD_DTM)` |
| 9.4 | SET | `kk0341TaknKikiMdCd = ekk0341B504Msg.getString(EKK0341B504CBSMsg1List.TAKNKIKI_MODEL_CD)` |
| 9.5 | SET | `kk0341KikiSeizoNo = ekk0341B504Msg.getString(EKK0341B504CBSMsg1List.KIKI_SEIZO_NO)` |
| 9.6 | EXEC | `paMap.put("kktkSvcKeiNo", kktkSvcKeiNo)` |
| 9.7 | EXEC | `paMap.put("kk0341GeneAddDtm", kk0341GeneAddDtm)` |
| 9.8 | EXEC | `paMap.put("taknKikiMdCd", kk0341TaknKikiMdCd)` |
| 9.9 | EXEC | `paMap.put("kikiSeizoNo", kk0341KikiSeizoNo)` |
| 10 | CALL | `getmultiKktkOpSvcKeiMsg(handle, scCall, param, fixedText, kktkSvcKeiNo)` — Calls EKK2811B010 (Device Operation Service Contract List Display — Device-Provided SV) |
| 11 | IF | `ekk2811B010Msg != null` (L285, OM-2014-0001951) |
| 11.1 | RETURN | `return param;` (early exit if no device operation service contract data) |
| 11.2 | SET | `kk2811KkOpSvcKeiNo = ekk2811B010Msg.getString(EKK2811B010CBSMsg1List.KKOP_SVC_KEI_NO)` |
| 11.3 | SET | `kk2811GeneAddDtm = ekk2811B010Msg.getString(EKK2811B010CBSMsg1List.GENE_ADD_DTM)` |
| 11.4 | EXEC | `paMap.put("KkOpSvcKeiNo", kk2811KkOpSvcKeiNo)` |
| 11.5 | EXEC | `paMap.put("kk2811GeneAddDtm", kk2811GeneAddDtm)` |
| 12 | CALL | `execChgMultiRouterNinshoId(handle, scCall, param, fixedText, funcCode, paMap)` |

**Block N.4** — [RETURN] (L297)

> Returns the param object after completing the router authentication ID change processing, regardless of which branch was taken.

| # | Type | Code |
|---|------|------|
| 1 | RETURN | `return param;` |

## 6. Per-Branch Detail Blocks

**Block 1** — [IF] `(null != ekk0341b002Msg — Single Router path)` (L199)

> This branch handles standard single router scenarios. When the device-provided service contract (`EKK0341B002`) returns data, the flow follows the single router authentication ID change path. Extracts the device-provided service contract number, generation timestamp, home equipment model code, and device manufacturing serial number.

| # | Type | Code |
|---|------|------|
| 1 | SET | `kktkSvcKeiNo = ekk0341b002Msg.getString(EKK0341B002CBSMsg1List.KKTK_SVC_KEI_NO)` |
| 2 | SET | `kk0341GeneAddDtm = ekk0341b002Msg.getString(EKK0341B002CBSMsg1List.GENE_ADD_DTM)` |
| 3 | SET | `taknKikiMdCd = ekk0341b002Msg.getString(EKK0341B002CBSMsg1List.TAKNKIKI_MODEL_CD)` |
| 4 | SET | `kikiSeizoNo = ekk0341b002Msg.getString(EKK0341B002CBSMsg1List.KIKI_SEIZO_NO)` |
| 5 | SET | `params = new String[8]` |
| 6 | SET | `params[0] = svcKeiNo` |
| 7 | SET | `params[1] = kk0081GeneAddDtm` |
| 8 | SET | `params[2] = svcKeiUcwkNo` |
| 9 | SET | `params[3] = kk0161GeneAddDtm` |
| 10 | SET | `params[4] = kktkSvcKeiNo` |
| 11 | SET | `params[5] = kk0341GeneAddDtm` |
| 12 | SET | `params[6] = taknKikiMdCd` |
| 13 | SET | `params[7] = kikiSeizoNo` |
| 14 | CALL | `execChgRouterNinshoId(handle, scCall, param, fixedText, funcCode, params)` |

**Block 1.1** — [Inside execChgRouterNinshoId] — Step 1: Same process number allocation (L414)

> Calls EKK1081C011 to allocate a shared transaction number (same process number) used to correlate related transactions across the order release process.

| # | Type | Code |
|---|------|------|
| 1 | CALL | `editInMsgEKK1081C011()` — Returns `{TEMPLATE_ID_EKK1081C011, FUNC_CODE_1}` |
| 2 | CALL | `callSC(handle, scCall, param, fixedText, ekk1081c011InMsg)` |

**Block 1.2** — [Inside execChgRouterNinshoId] — Step 2: Order release condition registration (L423)

> Calls EKK1081D010 to register the order release condition with the shared transaction number. Uses the following constant values: `ORDER_SBT_CD_NET = "1"`, `SVC_ORDER_CD_ROUTER = "0A"`, `YOKYU_SBT_CD_CHG = "04"`, `ODR_HAKKO_JOKEN_CD_SOKJI_HAKKO = "01"`.

| # | Type | Code |
|---|------|------|
| 1 | CALL | `editInMsgEKK1081D010(funcCode, params[0], params[2], params[4], params[6], params[7], sameTrnNo)` |
| 2 | CALL | `callSC(handle, scCall, param, fixedText, ekk1081d010InMsg)` |

**Block 1.3** — [IF] `[FUNC_CODE_1="1"]` — `(FUNC_CODE_1.equals(funcCode))` (L436)

> When funcCode is "1" (Check & Update mode), additionally creates the order info creation work registration via EKK1551D010 with `ODR_NAIYO_CD_163 = "163"` (Router connection info change).

| # | Type | Code |
|---|------|------|
| 1 | CALL | `editInMsgEKK1551D010(funcCode, odrHakkoJokenNo, svcKeiNo, kk0081GeneAddDtm, svcKeiUcwkNo, kk0161GeneAddDtm, kktkSvcKeiNo, kk0341GeneAddDtm)` |
| 2 | CALL | `callSC(handle, scCall, param, fixedText, ekk1051d010InMsg)` |

**Block 2** — [IF] `(null == ekk0161b004Msg)` (L186)

> Early exit if the service contract details lookup (`EKK0161B004`) returns null. This indicates no valid contract exists for the given service contract number, so no router authentication ID change can proceed.

| # | Type | Code |
|---|------|------|
| 1 | RETURN | `return param;` |

**Block 3** — [ELSE] `(ekk0341b002Msg == null — Multi-Function Router path)` (L229)

> Route to the multi-function router processing path. This branch handles customers with multi-function home gateway routers (eo Optical Multi-Function Router, HGW) that require additional contract hierarchy resolution (service contract detail lines, device-provided service contract list, and device operation service contract list).

| # | Type | Code |
|---|------|------|
| 1 | SET | `paMap = new HashMap<String, String>()` |
| 2 | EXEC | `paMap.put("svcKeiNo", svcKeiNo)` |
| 3 | EXEC | `paMap.put("ekk0081GeneAddDtm", kk0081GeneAddDtm)` |
| 4 | EXEC | `paMap.put("svcKeiUcwkNo", svcKeiUcwkNo)` |
| 5 | EXEC | `paMap.put("kk0161GeneAddDtm", kk0161GeneAddDtm)` |
| 6 | CALL | `getMultiRTInfo(handle, scCall, param, fixedText, svcKeiNo)` — Calls EKK0251B003 (Service Contract Detail Line List Display — Current Active) |
| 7 | IF | `ekk0251B003Msg != null` (L244) |
| 7.1 | RETURN | `return param;` (early exit if no detail line data) |
| 7.2 | SET | `svcKeikaisenUwNo = ekk0251B003Msg.getString(EKK0251B003CBSMsg1List.SVC_KEI_KAISEN_UCWK_NO)` |
| 7.3 | SET | `ekk0251GeneAddDtm = ekk0251B003Msg.getString(EKK0251B003CBSMsg1List.GENE_ADD_DTM)` |
| 7.4 | EXEC | `paMap.put("svcKeikaisenUwNo", svcKeikaisenUwNo)` |
| 7.5 | EXEC | `paMap.put("ekk0251GeneAddDtm", ekk0251GeneAddDtm)` |
| 8 | CALL | `getmultiKktkSvcKeiMsg(handle, scCall, param, fixedText, svcKeikaisenUwNo)` — Calls EKK0341B504 (Device-Provided Service Contract List Display — Service Contract Detail Line) |
| 9 | IF | `ekk0341B504Msg != null` (L263) |
| 9.1 | RETURN | `return param;` (early exit if no device-provided contract data) |
| 9.2 | SET | `kktkSvcKeiNo = ekk0341B504Msg.getString(EKK0341B504CBSMsg1List.KKTK_SVC_KEI_NO)` |
| 9.3 | SET | `kk0341GeneAddDtm = ekk0341B504Msg.getString(EKK0341B504CBSMsg1List.GENE_ADD_DTM)` |
| 9.4 | SET | `kk0341TaknKikiMdCd = ekk0341B504Msg.getString(EKK0341B504CBSMsg1List.TAKNKIKI_MODEL_CD)` |
| 9.5 | SET | `kk0341KikiSeizoNo = ekk0341B504Msg.getString(EKK0341B504CBSMsg1List.KIKI_SEIZO_NO)` |
| 9.6 | EXEC | `paMap.put("kktkSvcKeiNo", kktkSvcKeiNo)` |
| 9.7 | EXEC | `paMap.put("kk0341GeneAddDtm", kk0341GeneAddDtm)` |
| 9.8 | EXEC | `paMap.put("taknKikiMdCd", kk0341TaknKikiMdCd)` |
| 9.9 | EXEC | `paMap.put("kikiSeizoNo", kk0341KikiSeizoNo)` |
| 10 | CALL | `getmultiKktkOpSvcKeiMsg(handle, scCall, param, fixedText, kktkSvcKeiNo)` — Calls EKK2811B010 (Device Operation Service Contract List Display — Device-Provided SV) |
| 11 | IF | `ekk2811B010Msg != null` (L285, OM-2014-0001951) |
| 11.1 | RETURN | `return param;` (early exit if no device operation service contract data) |
| 11.2 | SET | `kk2811KkOpSvcKeiNo = ekk2811B010Msg.getString(EKK2811B010CBSMsg1List.KKOP_SVC_KEI_NO)` |
| 11.3 | SET | `kk2811GeneAddDtm = ekk2811B010Msg.getString(EKK2811B010CBSMsg1List.GENE_ADD_DTM)` |
| 11.4 | EXEC | `paMap.put("KkOpSvcKeiNo", kk2811KkOpSvcKeiNo)` |
| 11.5 | EXEC | `paMap.put("kk2811GeneAddDtm", kk2811GeneAddDtm)` |
| 12 | CALL | `execChgMultiRouterNinshoId(handle, scCall, param, fixedText, funcCode, paMap)` |

**Block 3.1** — [Inside execChgMultiRouterNinshoId] — Step 0: Registration order existence check (L879)

> Checks whether a registration order already exists for the multi-function router. This is a v15.00.00 (OM-2015-0000591) addition to prevent duplicate order processing. Calls EKK1081B001 with `YOKYU_SBT_CD_REG = "02"` and `SVC_ORDER_CD_MULTI_ROUTER = "26"`.

| # | Type | Code |
|---|------|------|
| 1 | SET | `kktksvckeino = paMap.get("kktkSvcKeiNo")` |
| 2 | CALL | `isRegiOrdExit(handle, scCall, param, fixedText, kktksvckeino, SVC_ORDER_CD_MULTI_ROUTER)` |
| 3 | IF | `isRegiOrdered` (L882) |
| 3.1 | CALL | `editInMsgEKK1081C011()` — Same process number allocation |
| 3.2 | CALL | `callSC(handle, scCall, param, fixedText, ekk1081c011InMsg)` |
| 3.3 | CALL | Order release condition registration with EKK1081D010 using: `ORDER_SBT_CD_MULTI_2 = "2"`, `SVC_ORDER_CD_MULTI_ROUTER = "26"`, `YOKYU_SBT_CD_CHG = "04"`, `ODR_HAKKO_JOKEN_CD_SOKJI_HAKKO = "01"` |
| 3.4 | IF | `[FUNC_CODE_1="1"]` — `(FUNC_CODE_1.equals(funcCode))` |
| 3.4.1 | CALL | Order info creation work registration via EKK1551D010 with `ODR_NAIYO_CD_404 = "404"` (Multi-Function Router settings/change) |

**Block N.4** — [RETURN] (L297)

> Returns the param object after completing the router authentication ID change processing, regardless of which branch was taken.

| # | Type | Code |
|---|------|------|
| 1 | RETURN | `return param;` |

## 7. Glossary

| Term | Type | Business Meaning |
|------|------|------------------|
| `svc_kei_no` | Field | Service contract number — the primary key identifying a customer's service contract |
| `svc_kei_ucwk_no` | Field | Service detail work number — internal tracking ID for service contract line items |
| `svc_kei_kaisen_ucwk_no` | Field | Service contract detail line number — identifies specific detail lines within a contract |
| `kktk_svc_kei_no` | Field | Device-provided service contract number — the service contract for customer-provided equipment (router) |
| `kkop_svc_kei_no` | Field | Device operation service contract number — contract for device-level operation services |
| `gene_add_dtm` | Field | Generation registration date/time — timestamp when a service contract record was created/registered |
| `func_code` | Field | Function code — identifies the operation mode: "1" = Check & Update, "2" = Check only, "3" = Read/Query |
| `taknkiki_md_cd` | Field | Home equipment model code — the model/type code of the customer's router device |
| `kiki_seizo_no` | Field | Device manufacturing serial number — unique serial number of the physical router |
| `same_trn_no` | Field | Shared transaction number — correlates related transactions across the order release process |
| `odr_hakko_joken_no` | Field | Order release condition number — tracks the condition under which an order is released |
| `odr_hakko_joken_cd` | Field | Order release condition code — classification of release timing (e.g., "01" = immediate release) |
| `odr_naiyo_cd` | Field | Order content code — classifies order type (e.g., "163" = Router connection info change, "404" = Multi-Function Router settings/change) |
| `order_sbt_cd` | Field | Order category code — distinguishes order type (e.g., "1" = Net, "2" = Phone S/O for multi-function router) |
| `svc_order_cd` | Field | Service order code — identifies the service order type (e.g., "0A" = Router info, "26" = Multi-function router) |
| `yokyu_sbt_cd` | Field | Request category code — classifies the request type (e.g., "02" = Registration, "04" = Change) |
| `SVC_KEI_UCWK_STAT` | Field | Service contract status code — tracks contract lifecycle (100 = Active, 210 = Suspended, 220 = Paused, 910 = Terminated, 920 = Cancelled) |
| EKK0161B004 | CBS | Service Contract Details List Display (Service Contract Number) — queries service contract detail records |
| EKK0341B002 | CBS | Device-Provided Service Contract List Display (Service Contract Number) — queries device-provided service contracts |
| EKK0251B003 | CBS | Service Contract Detail Line List Display (Current Active) — queries active detail lines within a contract |
| EKK0341B504 | CBS | Device-Provided Service Contract List Display (Service Contract Detail Line) — queries device contracts by detail line |
| EKK2811B010 | CBS | Device Operation Service Contract List Display (Device-Provided SV) — queries device operation service contracts |
| EKK1081C011 | CBS | Same Process Number Allocation — allocates a shared transaction number across related transactions |
| EKK1081D010 | CBS | Order Release Condition Registration — registers the conditions under which an order is released |
| EKK1551D010 | CBS | Order Info Creation Work Registration — creates the order info work registration for processing |
| EKK1081B001 | CBS | Order Release Condition List Display — queries existing order release conditions |
| RkRtrNsIdChg | Domain | Router Authentication ID Change — the core business operation of this component |
| CC | Abbreviation | Common Component — a shared, reusable business logic component in the eO Customer Foundation System |
| CBS | Abbreviation | CBS (Call Back Service) — a service component that provides business data access via EJB |
| SC Code | Abbreviation | SC Code (Service Component Code) — the unique identifier for a service component (e.g., EKK1081C011) |
| FTTH | Business term | Fiber To The Home — fiber-optic broadband internet service provided by K-Opticom |
| eo Optical Multi-Function Router | Business term | A multi-function home gateway device (code "C024") combining router, switch, and WiFi functions |
| HGW | Business term | Home Gateway — the multi-function router device (code "C025"), an evolution of the eo Optical Multi-Function Router |
| K-Opticom | Business term | K-Opticom, Inc. — a Japanese telecommunications company providing fiber-optic broadband services |
| eo Customer Foundation System | Business term | The core customer management system for K-Opticom's fiber-optic broadband operations |
