# Business Logic — JKKSodSendCC.editInMsgESC0041D010() [321 LOC]

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

## 1. Role

### JKKSodSendCC.editInMsgESC0041D010()

This method maps service order data into a CAANMsg template before the service component executes, as described by its Javadoc: "ESC0041D010 - Service Order Reception: Map necessary data into CAANMsg before executing the service component." It is the data-preparation step for the ESC0041D010 CBS (Component-Based Service) message in the K-Opticom fiber-to-the-home (FTTH) customer base system.

The method takes a rich service order information map (`svcOrderInfo`) containing up to 90 fields covering the full breadth of K-Opticom's broadband and email service portfolio — including service contract identifiers, network addressing (IP, VLAN, BAS), authentication credentials, email addresses and mailbox capacities, mail list (distribution list) configurations, IPv6 parameters, dual-connection settings, and various service-specific flags. Every field is read from the `svcOrderInfo` HashMap, passed through `convBlankToNull` to normalize empty strings to null, and written to a strongly-typed `CAANMsg` instance (`ESC0041D010CBSMsg`).

The design pattern used is a **sequential data transformer with delegation**. There are no conditional branches — every field is unconditionally mapped. Common headers (template ID, function code) are set via `editInMsgBasicCmn`, and the final assembled message is handed off to `editInMsgCmn` for further processing and return. The method acts as a **shared utility** called by `executeSodSend()` in the same class, which is itself invoked from CBS-level screen/batch entry points to prepare inbound messages for downstream service components.

## 2. Processing Pattern (Detailed Business Logic)

```mermaid
flowchart TD
    START(["editInMsgESC0041D010 start"])
    CREATE_TEMPLATE["Create CAANMsg template ESC0041D010CBSMsg"]
    NULL_MAPPING["fillCAANMSGNullMapping(template, contents)"]
    BASIC_CMN["editInMsgBasicCmn(param, template)"]
    SET_TEMPLATE_ID["template.set(TEMPLATEID, ESC0041D010)"]
    SET_FUNC_CD["template.set(FUNC_CODE, svcOrderInfo.get(SOI_FUNC_CD))"]
    MAP_SERVICE_FIELDS["Map service contract fields: SVC_KEI_NO, SVC_KEI_UCWK_NO, OP_SVC_KEI_NO, SBOP_SVC_KEI_NO, KKTK_SVC_KEI_NO, HJIN_EO_YKAE_SVKEI_NO"]
    MAP_ORDER_FIELDS["Map service order fields: SVC_ORDER_CD, SVC_ORDER_DTAIL_CD, YOKYU_SBT_CD, YOKYU_MT_APL_SBT_CD, DELTG_SOD_RENKEI_SEQ, SCHEDULE_YMD"]
    MAP_AUTH_FIELDS["Map authentication fields: NINSHO_ID/PWD, POP_ID/PWD"]
    MAP_EMAIL_FIELDS["Map email fields: MLAD, MAIL_ALIAS, MLBOX_CAPA, TENSO_MAIL_HOJI_FLG, TENSO_SAKI_MAIL_AD_1/2/3"]
    MAP_HOJIN_FIELDS["Map corporate email fields: HOJIN_DOKUJI_DOMAIN, MLKRSHA_ID/PWD, HJDOMAIN_MLBOX_CAPA, TOTAL_ACCOUNT_CNT, MLKRSHA_POP_ID/PWD, MLKRSHA_MLAD, MLKRSHA_MLBOX_CAPA"]
    MAP_SECURITY_FIELDS["Map security fields: VIRUS_CHK_YH, OLD_VIRUS_CHK_YH"]
    MAP_WEB_FIELDS["Map web access fields: WEB_ID, WEB_ID_PWD, URL, HP_CAPA, BUY_GOODS_CD"]
    MAP_MLLIST_FIELDS["Map ML list fields: MLLIST_NM/KRISHA_MLAD/KOSHO/MAX_USER_CNT/KOKAI_YH, FEMTSEL_OPUM"]
    MAP_NETWORK_FIELDS["Map network fields: IP_AD, NETMASK, BAS_ID, BAS_HOST_ID, VLAN_ID"]
    MAP_VRR_FIELDS["Map VRR fields: SVC_ID, WISH_OWNR_ID/PWD, GRPCOM_DISK_CAPA"]
    MAP_DUPCON_FIELDS["Map dual-connection fields: DUPCON_NINSHO_ID/PWD, DUP_PLAN_SBT_CD"]
    MAP_BBR_FIELDS["Map BBR fields: BBR_MACAD, BBR_NINSHO_KEY"]
    MAP_CONNECT_FIELDS["Map connection settings: CONNECT_MODE_CD, AUTO_CUT_MODE_CD, AUTO_CUT_TIME"]
    MAP_PROTO_FIELDS["Map protocol fields: PPPOE_BRIDGE_SBT_CD, PING_RESPONSE_SBT_CD"]
    MAP_IPV6_FIELDS["Map IPv6 fields: IPV6_PRTCL_SBT_CD, IPV6_TAIIKI_CTRL_CD, IPV6_NINSHO_ID/PWD, IPV6_CHUSKK_CD, IPV6_AD_IFID, IPV6_L2TP_NINSHO_ID, IPV6_PING_RSP_STAT_CD, IPV6_TAKNKIKI_MODEL_CD, IPV6_TYPE_CTRL_CD"]
    MAP_MAIL_CHG_FIELDS["Map mail change fields: CHBF_MLAD, CHAF_MAIL_ACCOUNT, MAILALIAS_HKTGI_FLG, MLAD_CHGJ_ML_TNS_FLG, ML_VRSETTE_HKTGI_FLG"]
    MAP_VR_FIELDS["Map VR recognition fields: OLD_VRSB_JDG_SVC_DTL_CD, OLD_OLD_VRSB_JDG_SVC_DTL_CD, DNS_OPTOUT_CHOICEF"]
    RETURN_CMN["editInMsgCmn(param, template) return"]

    START --> CREATE_TEMPLATE
    CREATE_TEMPLATE --> NULL_MAPPING
    NULL_MAPPING --> BASIC_CMN
    BASIC_CMN --> SET_TEMPLATE_ID
    SET_TEMPLATE_ID --> SET_FUNC_CD
    SET_FUNC_CD --> MAP_SERVICE_FIELDS
    MAP_SERVICE_FIELDS --> MAP_ORDER_FIELDS
    MAP_ORDER_FIELDS --> MAP_AUTH_FIELDS
    MAP_AUTH_FIELDS --> MAP_EMAIL_FIELDS
    MAP_EMAIL_FIELDS --> MAP_HOJIN_FIELDS
    MAP_HOJIN_FIELDS --> MAP_SECURITY_FIELDS
    MAP_SECURITY_FIELDS --> MAP_WEB_FIELDS
    MAP_WEB_FIELDS --> MAP_MLLIST_FIELDS
    MAP_MLLIST_FIELDS --> MAP_NETWORK_FIELDS
    MAP_NETWORK_FIELDS --> MAP_VRR_FIELDS
    MAP_VRR_FIELDS --> MAP_DUPCON_FIELDS
    MAP_DUPCON_FIELDS --> MAP_BBR_FIELDS
    MAP_BBR_FIELDS --> MAP_CONNECT_FIELDS
    MAP_CONNECT_FIELDS --> MAP_PROTO_FIELDS
    MAP_PROTO_FIELDS --> MAP_IPV6_FIELDS
    MAP_IPV6_FIELDS --> MAP_MAIL_CHG_FIELDS
    MAP_MAIL_CHG_FIELDS --> MAP_VR_FIELDS
    MAP_VR_FIELDS --> RETURN_CMN
```

**Processing flow summary:**
1. Create a `CAANMsg` template using `ESC0041D010CBSMsg.class.getName()`.
2. Apply null mapping via `fillCAANMSGNullMapping` to initialize all message fields.
3. Set basic common fields (headers, screen info) via `editInMsgBasicCmn`.
4. Set the template ID (`"ESC0041D010"`) and function code from `svcOrderInfo`.
5. Map ~90 service order fields from `svcOrderInfo` into the template, each wrapped in `convBlankToNull` to normalize blank strings to null. Fields are grouped by business domain: service contracts, order data, authentication, email, corporate email, web access, ML lists, network, VRR, dual-connection, BBR, connection settings, protocols, IPv6, mail changes, and VR recognition.
6. Delegate the assembled message to `editInMsgCmn` and return.

## 3. Parameter Analysis

| No | Parameter Name | Type | Business Description |
|----|---------------|------|---------------------|
| 1 | `param` | `IRequestParameterReadWrite` | The request parameter object carrying the inbound service request. It holds context such as tenant ID, fixed text, and the handle for CBS invocation. Passed through to `editInMsgBasicCmn` and `editInMsgCmn` for common header population. |
| 2 | `svcOrderInfo` | `HashMap<String, Object>` | The service order information map carrying all service-specific data for the ESC0041D010 message. Contains up to 90 keys defined in `JKKSodSendConstCC` (SOI_* constants). Covers service contracts, order details, authentication credentials, network settings, email configuration, IPv6 parameters, and various feature flags. |

**Instance/external state read:**
- None directly — this method is stateless and reads all data from its parameters.
- `ESC0041D010CBSMsg` class fields are accessed via static constants (e.g., `ESC0041D010CBSMsg.TEMPLATEID`, `ESC0041D010CBSMsg.SVC_KEI_NO`) to determine message column positions.

## 4. CRUD Operations / Called Services

| CRUD | SC / CBS | SC Code | Entity / DB | Operation Description |
|------|----------|---------|-------------|----------------------|
| U | `JKKSodSendCC.fillCAANMSGNullMapping` | JKKSodSendCC | - | Initializes the CAANMsg template by setting all fields to null per `ESC0041D010CBSMsg.getContents()` definition |
| U | `JKKSodSendCC.editInMsgBasicCmn` | JKKSodSendCC | - | Sets basic common message headers (function code, template ID, tenant info) into the template |
| S | `JKKSodSendCC.convBlankToNull` | JKKSodSendCC | - | Utility called ~90 times to normalize blank strings to null for each field read from svcOrderInfo |
| U | `JKKSodSendCC.editInMsgCmn` | JKKSodSendCC | - | Final processing and assembly of the CAANMsg template, returns the result HashMap |
| R | `ESC0041D010CBSMsg.getContents` | ESC0041D010CBSMsg | - | Provides the field definitions (column mappings) for null mapping initialization |

## 5. Dependency Trace

| # | Caller (Screen/Batch) | Call Chain (Full Path to this Method) | Terminal (SC / CRUD / Entity) |
|---|----------------------|--------------------------------------|-------------------------------|
| 1 | Component: JKKSodSendCC | `executeSodSend` -> `editInMsgESC0041D010` | `editInMsgCmn [U] -`, `convBlankToNull [-]` (x90) |

The method is called from `JKKSodSendCC.executeSodSend()`, which is the central dispatch method that routes service orders to the appropriate `editInMsg*` preparation method before invoking the downstream CBS. No screen or batch entry points were found within 8 hops of the call graph.

## 6. Per-Branch Detail Blocks

This method has **no conditional branches** — it is a linear, sequential flow. All processing is unconditional field mapping.

**Block 1** — INITIALIZATION (L655)

> Create the CAANMsg template and initialize it with null values.

| # | Type | Code |
|---|------|------|
| 1 | SET | `template = new CAANMsg(ESC0041D010CBSMsg.class.getName())` |
| 2 | EXEC | `fillCAANMSGNullMapping(template, new ESC0041D010CBSMsg().getContents())` // Initialize all fields to null [-> null mapping applied to entire template] |

**Block 2** — BASIC COMMON HEADER (L662)

> Set basic common message fields via the shared helper method.

| # | Type | Code |
|---|------|------|
| 1 | CALL | `editInMsgBasicCmn(param, template)` |

**Block 3** — TEMPLATE ID (L665)

> Set the SIF (System Interface) template ID.

| # | Type | Code |
|---|------|------|
| 1 | SET | `template.set(TEMPLATEID, "ESC0041D010")` [-> constant "ESC0041D010"] |

**Block 4** — FUNCTION CODE (L668)

> Set the function code from the service order info map.

| # | Type | Code |
|---|------|------|
| 1 | SET | `template.set(FUNC_CODE, svcOrderInfo.get(SOI_FUNC_CD))` [-> key "func_code" from JKKSodSendConstCC.SOI_FUNC_CD] |

**Block 5** — SERVICE CONTRACT FIELDS (L671–683)

> Map primary service contract identifiers.

| # | Type | Code |
|---|------|------|
| 1 | SET | `template.set(SVC_KEI_NO, convBlankToNull(svcOrderInfo.get(SOI_SVC_KEI_NO)))` // Service contract number |
| 2 | SET | `template.set(SVC_KEI_UCWK_NO, convBlankToNull(svcOrderInfo.get(SOI_SVC_KEI_UCWK_NO)))` // Service detail work number |
| 3 | SET | `template.set(OP_SVC_KEI_NO, convBlankToNull(svcOrderInfo.get(SOI_OP_SVC_KEI_NO)))` // Option service contract number |
| 4 | SET | `template.set(SBOP_SVC_KEI_NO, convBlankToNull(svcOrderInfo.get(SOI_SBOP_SVC_KEI_NO)))` // Sub-option service contract number |
| 5 | SET | `template.set(KKTK_SVC_KEI_NO, convBlankToNull(svcOrderInfo.get(SOI_KKTK_SVC_KEI_NO)))` // Equipment provision service contract number |
| 6 | SET | `template.set(HJIN_EO_YKAE_SVKEI_NO, convBlankToNull(svcOrderInfo.get(SOI_HJIN_EO_YKAE_SVKEI_NO)))` // Corporate eo alternative service contract number |

**Block 6** — SERVICE ORDER FIELDS (L684–693)

> Map order-type and scheduling information.

| # | Type | Code |
|---|------|------|
| 1 | SET | `template.set(YOKYU_MT_APL_SBT_CD, convBlankToNull(svcOrderInfo.get(SOI_YOKYU_MT_APL_SBT_CD)))` // Requestor application type code |
| 2 | SET | `template.set(SVC_ORDER_CD, convBlankToNull(svcOrderInfo.get(SOI_SVC_ORDER_CD)))` // Service order code |
| 3 | SET | `template.set(SVC_ORDER_DTAIL_CD, convBlankToNull(svcOrderInfo.get(SOI_SVC_ORDER_DTAIL_CD)))` // Service order detail code |
| 4 | SET | `template.set(YOKYU_SBT_CD, convBlankToNull(svcOrderInfo.get(SOI_YOKYU_SBT_CD)))` // Request type code |
| 5 | SET | `template.set(DELTG_SOD_RENKEI_SEQ, convBlankToNull(svcOrderInfo.get(SOI_DELTG_SOD_RENKEI_SEQ)))` // Deletion-target SOD linkage sequence |
| 6 | SET | `template.set(SCHEDULE_YMD, convBlankToNull(svcOrderInfo.get(SOI_SCHEDULE_YMD)))` // Schedule year/month/day |

**Block 7** — AUTHENTICATION CREDENTIALS (L694–711)

> Map old and new authentication IDs, passwords, and POPID credentials.

| # | Type | Code |
|---|------|------|
| 1 | SET | `template.set(OLD_NINSHO_ID, convBlankToNull(...SOI_OLD_NINSHO_ID))` // Old authentication ID |
| 2 | SET | `template.set(NINSHO_ID, convBlankToNull(...SOI_NINSHO_ID))` // Authentication ID |
| 3 | SET | `template.set(OLD_NINSHO_ID_PWD, convBlankToNull(...SOI_OLD_NINSHO_ID_PWD))` // Old authentication ID password |
| 4 | SET | `template.set(NINSHO_ID_PWD, convBlankToNull(...SOI_NINSHO_ID_PWD))` // Authentication ID password |
| 5 | SET | `template.set(POP_ID, convBlankToNull(...SOI_POP_ID))` // POPID |
| 6 | SET | `template.set(OLD_POP_ID_PWD, convBlankToNull(...SOI_OLD_POP_ID_PWD))` // Old POPID password |
| 7 | SET | `template.set(POP_ID_PWD, convBlankToNull(...SOI_POP_ID_PWD))` // POPID password |

**Block 8** — EMAIL ACCOUNT SETTINGS (L712–751)

> Map primary email address, mail alias, mailbox capacity, and mail forwarding settings.

| # | Type | Code |
|---|------|------|
| 1 | SET | `template.set(OLD_MLAD, convBlankToNull(...SOI_OLD_MLAD))` // Old email address |
| 2 | SET | `template.set(MLAD, convBlankToNull(...SOI_MLAD))` // Email address |
| 3 | SET | `template.set(OLD_MAIL_ALIAS, convBlankToNull(...SOI_OLD_MAIL_ALIAS))` // Old mail alias |
| 4 | SET | `template.set(MAIL_ALIAS, convBlankToNull(...SOI_MAIL_ALIAS))` // Mail alias |
| 5 | SET | `template.set(OLD_MLBOX_CAPA, convBlankToNull(...SOI_OLD_MLBOX_CAPA))` // Old mailbox capacity |
| 6 | SET | `template.set(MLBOX_CAPA, convBlankToNull(...SOI_MLBOX_CAPA))` // Mailbox capacity |
| 7 | SET | `template.set(OLD_TENSO_MAIL_HOJI_FLG, convBlankToNull(...SOI_OLD_TENSO_MAIL_HOJI_FLG))` // Old forwarding mail retention flag |
| 8 | SET | `template.set(TENSO_MAIL_HOJI_FLG, convBlankToNull(...SOI_TENSO_MAIL_HOJI_FLG))` // Forwarding mail retention flag |
| 9 | SET | `template.set(OLD_TENSO_SAKI_MAIL_AD_1/2/3, convBlankToNull(...SOI_OLD_TENSO_SAKI_MAIL_AD_1/2/3))` // Old forwarding destination mail address 1/2/3 |
| 10 | SET | `template.set(TENSO_SAKI_MAIL_AD_1/2/3, convBlankToNull(...SOI_TENSO_SAKI_MAIL_AD_1/2/3))` // Forwarding destination mail address 1/2/3 |

**Block 9** — CORPORATE EMAIL FIELDS (L752–779)

> Map corporate (hojin) email settings including domain, admin credentials, and aggregate account data.

| # | Type | Code |
|---|------|------|
| 1 | SET | `template.set(HOJIN_DOKUJI_DOMAIN, convBlankToNull(...SOI_HOJIN_DOKUJI_DOMAIN))` // Corporate unique domain |
| 2 | SET | `template.set(OLD_MLKRSHA_ID, convBlankToNull(...SOI_OLD_MLKRSHA_ID))` // Old email admin ID |
| 3 | SET | `template.set(MLKRSHA_ID, convBlankToNull(...SOI_MLKRSHA_ID))` // Email admin ID |
| 4 | SET | `template.set(OLD_MLKRSHA_ID_PWD, convBlankToNull(...SOI_OLD_MLKRSHA_ID_PWD))` // Old email admin ID password |
| 5 | SET | `template.set(MLKRSHA_ID_PWD, convBlankToNull(...SOI_MLKRSHA_ID_PWD))` // Email admin ID password |
| 6 | SET | `template.set(OLD_HJDOMAIN_MLBOX_CAPA, convBlankToNull(...SOI_OLD_HJDOMAIN_MLBOX_CAPA))` // Old corporate domain mailbox capacity |
| 7 | SET | `template.set(HJDOMAIN_MLBOX_CAPA, convBlankToNull(...SOI_HJDOMAIN_MLBOX_CAPA))` // Corporate domain mailbox capacity |
| 8 | SET | `template.set(OLD_TOTAL_ACCOUNT_CNT, convBlankToNull(...SOI_OLD_TOTAL_ACCOUNT_CNT))` // Old total account count |
| 9 | SET | `template.set(TOTAL_ACCOUNT_CNT, convBlankToNull(...SOI_TOTAL_ACCOUNT_CNT))` // Total account count |
| 10 | SET | `template.set(OLD_MLKRSHA_POP_ID, convBlankToNull(...SOI_OLD_MLKRSHA_POP_ID))` // Old email admin POPID |
| 11 | SET | `template.set(MLKRSHA_POP_ID, convBlankToNull(...SOI_MLKRSHA_POP_ID))` // Email admin POPID |
| 12 | SET | `template.set(OLD_MLKRSHA_POP_ID_PWD, convBlankToNull(...SOI_OLD_MLKRSHA_POP_ID_PWD))` // Old email admin POPID password |
| 13 | SET | `template.set(MLKRSHA_POP_ID_PWD, convBlankToNull(...SOI_MLKRSHA_POP_ID_PWD))` // Email admin POPID password |
| 14 | SET | `template.set(OLD_MLKRSHA_MLAD, convBlankToNull(...SOI_OLD_MLKRSHA_MLAD))` // Old email admin email address |
| 15 | SET | `template.set(MLKRSHA_MLAD, convBlankToNull(...SOI_MLKRSHA_MLAD))` // Email admin email address |
| 16 | SET | `template.set(OLD_MLKRSHA_MLBOX_CAPA, convBlankToNull(...SOI_OLD_MLKRSHA_MLBOX_CAPA))` // Old email admin mailbox capacity |
| 17 | SET | `template.set(MLKRSHA_MLBOX_CAPA, convBlankToNull(...SOI_MLKRSHA_MLBOX_CAPA))` // Email admin mailbox capacity |

**Block 10** — SECURITY FIELDS (L780–787)

> Map virus check flag.

| # | Type | Code |
|---|------|------|
| 1 | SET | `template.set(OLD_VIRUS_CHK_YH, convBlankToNull(...SOI_OLD_VIRUS_CHK_YH))` // Old virus check enable/disable |
| 2 | SET | `template.set(VIRUS_CHK_YH, convBlankToNull(...SOI_VIRUS_CHK_YH))` // Virus check enable/disable |

**Block 11** — WEB ACCESS FIELDS (L788–797)

> Map Web ID, URL, and HP capacity for web portal access.

| # | Type | Code |
|---|------|------|
| 1 | SET | `template.set(WEB_ID, convBlankToNull(...SOI_WEB_ID))` // Web ID |
| 2 | SET | `template.set(OLD_WEB_ID_PWD, convBlankToNull(...SOI_OLD_WEB_ID_PWD))` // Old Web ID password |
| 3 | SET | `template.set(WEB_ID_PWD, convBlankToNull(...SOI_WEB_ID_PWD))` // Web ID password |
| 4 | SET | `template.set(OLD_URL, convBlankToNull(...SOI_OLD_URL))` // Old URL |
| 5 | SET | `template.set(URL, convBlankToNull(...SOI_URL))` // URL |
| 6 | SET | `template.set(OLD_HP_CAPA, convBlankToNull(...SOI_OLD_HP_CAPA))` // Old HP capacity |
| 7 | SET | `template.set(HP_CAPA, convBlankToNull(...SOI_HP_CAPA))` // HP capacity |
| 8 | SET | `template.set(OLD_BUY_GOODS_CD, convBlankToNull(...SOI_OLD_BUY_GOODS_CD))` // Old purchased goods code |
| 9 | SET | `template.set(BUY_GOODS_CD, convBlankToNull(...SOI_BUY_GOODS_CD))` // Purchased goods code |

**Block 12** — MAIL LIST (ML) FIELDS (L798–810)

> Map distribution list (mail list) configuration parameters.

| # | Type | Code |
|---|------|------|
| 1 | SET | `template.set(MLLIST_NM, convBlankToNull(...SOI_MLLIST_NM))` // ML name |
| 2 | SET | `template.set(OLD_MLLIST_KRISHA_MLAD, convBlankToNull(...SOI_OLD_MLLIST_KRISHA_MLAD))` // Old ML admin email address |
| 3 | SET | `template.set(MLLIST_KRISHA_MLAD, convBlankToNull(...SOI_MLLIST_KRISHA_MLAD))` // ML admin email address |
| 4 | SET | `template.set(OLD_MLLIST_KOSHO, convBlankToNull(...SOI_OLD_MLLIST_KOSHO))` // Old ML display name |
| 5 | SET | `template.set(MLLIST_KOSHO, convBlankToNull(...SOI_MLLIST_KOSHO))` // ML display name |
| 6 | SET | `template.set(OLD_MLLIST_MAX_USER_CNT, convBlankToNull(...SOI_OLD_MLLIST_MAX_USER_CNT))` // Old ML max user count |
| 7 | SET | `template.set(MLLIST_MAX_USER_CNT, convBlankToNull(...SOI_MLLIST_MAX_USER_CNT))` // ML max user count |
| 8 | SET | `template.set(OLD_MLLIST_KOKAI_YH, convBlankToNull(...SOI_OLD_MLLIST_KOKAI_YH))` // Old ML publication enable/disable |
| 9 | SET | `template.set(MLLIST_KOKAI_YH, convBlankToNull(...SOI_MLLIST_KOKAI_YH))` // ML publication enable/disable |
| 10 | SET | `template.set(FEMTSEL_OPUM, convBlankToNull(...SOI_FEMTSEL_OPUM))` // Fiber selection option — [ANK-0035-00-00 added 2012/07/05, maps same value as MLLIST_KOKAI_YH] |

**Block 13** — NETWORK ADDRESSING (L813–843)

> Map IP address, netmask, BAS-ID, BAS-host ID, and VLAN-ID for broadband network configuration.

| # | Type | Code |
|---|------|------|
| 1 | SET | `template.set(OLD_IP_AD, convBlankToNull(...SOI_OLD_IP_AD))` // Old IP address |
| 2 | SET | `template.set(IP_AD, convBlankToNull(...SOI_IP_AD))` // IP address |
| 3 | SET | `template.set(OLD_NETMASK, convBlankToNull(...SOI_OLD_NETMASK))` // Old netmask |
| 4 | SET | `template.set(NETMASK, convBlankToNull(...SOI_NETMASK))` // Netmask |
| 5 | SET | `template.set(OLD_BAS_ID, convBlankToNull(...SOI_OLD_BAS_ID))` // Old BAS-ID |
| 6 | SET | `template.set(BAS_ID, convBlankToNull(...SOI_BAS_ID))` // BAS-ID |
| 7 | SET | `template.set(OLD_MLTISE_CNT, convBlankToNull(...SOI_OLD_MLTISE_CNT))` // Old multi-connection count |
| 8 | SET | `template.set(MLTISE_CNT, convBlankToNull(...SOI_MLTISE_CNT))` // Multi-connection count |
| 9 | SET | `template.set(OLD_BAS_HOST_ID, convBlankToNull(...SOI_OLD_BAS_HOST_ID))` // Old BAS-host ID |
| 10 | SET | `template.set(BAS_HOST_ID, convBlankToNull(...SOI_BAS_HOST_ID))` // BAS-host ID |
| 11 | SET | `template.set(OLD_VLAN_ID, convBlankToNull(...SOI_OLD_VLAN_ID))` // Old VLAN-ID |
| 12 | SET | `template.set(VLAN_ID, convBlankToNull(...SOI_VLAN_ID))` // VLAN-ID |

**Block 14** — VRR (Virtual Route Redundancy) FIELDS (L844–853)

> Map VRR service ID, WISH owner ID, and group community disk capacity.

| # | Type | Code |
|---|------|------|
| 1 | SET | `template.set(OLD_SVC_ID, convBlankToNull(...SOI_OLD_SVC_ID))` // Old service ID |
| 2 | SET | `template.set(SVC_ID, convBlankToNull(...SOI_SVC_ID))` // Service ID |
| 3 | SET | `template.set(WISH_OWNR_ID, convBlankToNull(...SOI_WISH_OWNR_ID))` // WISH owner ID |
| 4 | SET | `template.set(OLD_WISH_OWNR_ID_PWD, convBlankToNull(...SOI_OLD_WISH_OWNR_ID_PWD))` // Old WISH owner ID password |
| 5 | SET | `template.set(WISH_OWNR_ID_PWD, convBlankToNull(...SOI_WISH_OWNR_ID_PWD))` // WISH owner ID password |
| 6 | SET | `template.set(OLD_GRPCOM_DISK_CAPA, convBlankToNull(...SOI_OLD_GRPCOM_DISK_CAPA))` // Old group community disk capacity |
| 7 | SET | `template.set(GRPCOM_DISK_CAPA, convBlankToNull(...SOI_GRPCOM_DISK_CAPA))` // Group community disk capacity |

**Block 15** — DUAL CONNECTION (DUPCON) FIELDS (L854–865)

> Map dual-connection authentication and plan settings.

| # | Type | Code |
|---|------|------|
| 1 | SET | `template.set(DUPCON_NINSHO_ID, convBlankToNull(...SOI_DUPCON_NINSHO_ID))` // Dual-connection authentication ID |
| 2 | SET | `template.set(OLD_DUPCON_NINSHO_ID_PWD, convBlankToNull(...SOI_OLD_DUPCON_NINSHO_ID_PWD))` // Old dual-connection authentication ID password |
| 3 | SET | `template.set(DUPCON_NINSHO_ID_PWD, convBlankToNull(...SOI_DUPCON_NINSHO_ID_PWD))` // Dual-connection authentication ID password |
| 4 | SET | `template.set(OLD_DUP_PLAN_SBT_CD, convBlankToNull(...SOI_OLD_DUP_PLAN_SBT_CD))` // Old dual-connection plan type code |
| 5 | SET | `template.set(DUP_PLAN_SBT_CD, convBlankToNull(...SOI_DUP_PLAN_SBT_CD))` // Dual-connection plan type code |

**Block 16** — BBR (Broadband Router) FIELDS (L866–873)

> Map BBR MAC address and authentication key.

| # | Type | Code |
|---|------|------|
| 1 | SET | `template.set(BBR_MACAD, convBlankToNull(...SOI_BBR_MACAD))` // BBR MAC address |
| 2 | SET | `template.set(OLD_BBR_NINSHO_KEY, convBlankToNull(...SOI_OLD_BBR_NINSHO_KEY))` // Old BBR authentication key |
| 3 | SET | `template.set(BBR_NINSHO_KEY, convBlankToNull(...SOI_BBR_NINSHO_KEY))` // BBR authentication key |

**Block 17** — CONNECTION MODE FIELDS (L874–891)

> Map connection mode, auto-cut mode/time, PPPoE bridge, and ping response settings.

| # | Type | Code |
|---|------|------|
| 1 | SET | `template.set(OLD_CONNECT_MODE_CD, convBlankToNull(...SOI_OLD_CONNECT_MODE_CD))` // Old connection mode code |
| 2 | SET | `template.set(CONNECT_MODE_CD, convBlankToNull(...SOI_CONNECT_MODE_CD))` // Connection mode code |
| 3 | SET | `template.set(OLD_AUTO_CUT_MODE_CD, convBlankToNull(...SOI_OLD_AUTO_CUT_MODE_CD))` // Old auto-cut mode code |
| 4 | SET | `template.set(AUTO_CUT_MODE_CD, convBlankToNull(...SOI_AUTO_CUT_MODE_CD))` // Auto-cut mode code |
| 5 | SET | `template.set(OLD_AUTO_CUT_TIME, convBlankToNull(...SOI_OLD_AUTO_CUT_TIME))` // Old auto-cut time |
| 6 | SET | `template.set(AUTO_CUT_TIME, convBlankToNull(...SOI_AUTO_CUT_TIME))` // Auto-cut time |
| 7 | SET | `template.set(OLD_PPPOE_BRIDGE_SBT_CD, convBlankToNull(...SOI_OLD_PPPOE_BRIDGE_SBT_CD))` // Old PPPoE bridge type code |
| 8 | SET | `template.set(PPPOE_BRIDGE_SBT_CD, convBlankToNull(...SOI_PPPOE_BRIDGE_SBT_CD))` // PPPoE bridge type code |
| 9 | SET | `template.set(OLD_PING_RESPONSE_SBT_CD, convBlankToNull(...SOI_OLD_PING_RESPONSE_SBT_CD))` // Old ping response type code |
| 10 | SET | `template.set(PING_RESPONSE_SBT_CD, convBlankToNull(...SOI_PING_RESPONSE_SBT_CD))` // Ping response type code |

**Block 18** — IPv6 FIELDS (L892–929)

> Map IPv6 protocol, domain control, authentication IDs, central office code, address interface ID, L2TP authentication, ping status, home device model, and type control. [IT1-2012-0000711 IPv6 authentication ID, IPv6 authentication ID password added 2012/06/22]

| # | Type | Code |
|---|------|------|
| 1 | SET | `template.set(OLD_IPV6_PRTCL_SBT_CD, convBlankToNull(...SOI_OLD_IPV6_PRTCL_SBT_CD))` // Old IPv6 protocol type code |
| 2 | SET | `template.set(IPV6_PRTCL_SBT_CD, convBlankToNull(...SOI_IPV6_PRTCL_SBT_CD))` // IPv6 protocol type code |
| 3 | SET | `template.set(OLD_IPV6_TAIIKI_CTRL_CD, convBlankToNull(...SOI_OLD_IPV6_TAIIKI_CTRL_CD))` // Old IPv6 domain control code |
| 4 | SET | `template.set(IPV6_TAIIKI_CTRL_CD, convBlankToNull(...SOI_IPV6_TAIIKI_CTRL_CD))` // IPv6 domain control code |
| 5 | SET | `template.set(IPV6_OLD_NINSHO_ID, convBlankToNull(...SOI_IPV6_OLD_NINSHO_ID))` // Old IPv6 authentication ID |
| 6 | SET | `template.set(IPV6_NINSHO_ID, convBlankToNull(...SOI_IPV6_NINSHO_ID))` // IPv6 authentication ID |
| 7 | SET | `template.set(IPV6_OLD_NINSHO_ID_PWD, convBlankToNull(...SOI_IPV6_OLD_NINSHO_ID_PWD))` // Old IPv6 authentication ID password |
| 8 | SET | `template.set(IPV6_NINSHO_ID_PWD, convBlankToNull(...SOI_IPV6_NINSHO_ID_PWD))` // IPv6 authentication ID password |
| 9 | SET | `template.set(OLD_IPV6_CHUSKK_CD, convBlankToNull(...SOI_OLD_IPV6_CHUSKK_CD))` // Old IPv6 central office code |
| 10 | SET | `template.set(IPV6_CHUSKK_CD, convBlankToNull(...SOI_IPV6_CHUSKK_CD))` // IPv6 central office code |
| 11 | SET | `template.set(OLD_IPV6_AD_IFID, convBlankToNull(...SOI_OLD_IPV6_AD_IFID))` // Old IPv6 address (interface ID) |
| 12 | SET | `template.set(IPV6_AD_IFID, convBlankToNull(...SOI_IPV6_AD_IFID))` // IPv6 address (interface ID) |
| 13 | SET | `template.set(OLD_IPV6_L2TP_NINSHO_ID, convBlankToNull(...SOI_OLD_IPV6_L2TP_NINSHO_ID))` // Old IPv6 L2TP authentication ID |
| 14 | SET | `template.set(IPV6_L2TP_NINSHO_ID, convBlankToNull(...SOI_IPV6_L2TP_NINSHO_ID))` // IPv6 L2TP authentication ID |
| 15 | SET | `template.set(OLD_IPV6_PING_RSP_STAT_CD, convBlankToNull(...SOI_OLD_IPV6_PING_RSP_STAT_CD))` // Old IPv6 ping response status code |
| 16 | SET | `template.set(IPV6_PING_RSP_STAT_CD, convBlankToNull(...SOI_IPV6_PING_RSP_STAT_CD))` // IPv6 ping response status code |
| 17 | SET | `template.set(OLD_IPV6_TAKNKIKI_MODEL_CD, convBlankToNull(...SOI_OLD_IPV6_TAKNKIKI_MODEL_CD))` // Old IPv6 home device model code |
| 18 | SET | `template.set(IPV6_TAKNKIKI_MODEL_CD, convBlankToNull(...SOI_IPV6_TAKNKIKI_MODEL_CD))` // IPv6 home device model code |
| 19 | SET | `template.set(OLD_IPV6_TYPE_CTRL_CD, convBlankToNull(...SOI_OLD_IPV6_TYPE_CTRL_CD))` // Old IPv6 type control code |
| 20 | SET | `template.set(IPV6_TYPE_CTRL_CD, convBlankToNull(...SOI_IPV6_TYPE_CTRL_CD))` // IPv6 type control code |

**Block 19** — MAIL CHANGE FIELDS (L930–960)

> Map email address change, mail alias inheritance, virus check inheritance, various settings inheritance, and mail forwarding flag. [ANK-1577-00-00 Mail function enhancement 2013/10/10]

| # | Type | Code |
|---|------|------|
| 1 | SET | `template.set(OLD_CHBF_MLAD, convBlankToNull(...SOI_OLD_CHBF_MLAD))` // Old pre-change email address |
| 2 | SET | `template.set(CHBF_MLAD, convBlankToNull(...SOI_CHBF_MLAD))` // Pre-change email address |
| 3 | SET | `template.set(OLD_CHAF_MAIL_ACCOUNT, convBlankToNull(...SOI_OLD_CHAF_MAIL_ACCOUNT))` // Old post-change mail account |
| 4 | SET | `template.set(CHAF_MAIL_ACCOUNT, convBlankToNull(...SOI_CHAF_MAIL_ACCOUNT))` // Post-change mail account |
| 5 | SET | `template.set(OLD_MAILALIAS_HKTGI_FLG, convBlankToNull(...SOI_OLD_MAILALIAS_HKTGI_FLG))` // Old mail alias inheritance flag |
| 6 | SET | `template.set(MAILALIAS_HKTGI_FLG, convBlankToNull(...SOI_MAILALIAS_HKTGI_FLG))` // Mail alias inheritance flag |
| 7 | SET | `template.set(OLD_MLVIRUSCHK_HKTGI_FLG, convBlankToNull(...SOI_OLD_MLVIRUSCHK_HKTGI_FLG))` // Old mail virus check inheritance flag |
| 8 | SET | `template.set(MLVIRUSCHK_HKTGI_FLG, convBlankToNull(...SOI_MLVIRUSCHK_HKTGI_FLG))` // Mail virus check inheritance flag |
| 9 | SET | `template.set(OLD_ML_VRSETTE_HKTGI_FLG, convBlankToNull(...SOI_OLD_ML_VRSETTE_HKTGI_FLG))` // Old mail various settings inheritance flag |
| 10 | SET | `template.set(ML_VRSETTE_HKTGI_FLG, convBlankToNull(...SOI_ML_VRSETTE_HKTGI_FLG))` // Mail various settings inheritance flag |
| 11 | SET | `template.set(OLD_MLAD_CHGJ_ML_TNS_FLG, convBlankToNull(...SOI_OLD_MLAD_CHGJ_ML_TNS_FLG))` // Old email address change mail forwarding flag |
| 12 | SET | `template.set(MLAD_CHGJ_ML_TNS_FLG, convBlankToNull(...SOI_MLAD_CHGJ_ML_TNS_FLG))` // Email address change mail forwarding flag |

**Block 20** — VR RECOGNITION FIELDS (L961–971)

> Map VR (Virtual Router) recognition judgment service detail codes and DNS opt-out selection. [ANK-2765-00-00 Authentication ID unification, ANK-3834-00-00 Mail warebrook-in]

| # | Type | Code |
|---|------|------|
| 1 | SET | `template.set(OLD_VRSB_JDG_SVC_DTL_CD, convBlankToNull(...JKKSodSendConstCC.OLD_VRSB_JDG_SVC_DTL_CD))` // Old VR recognition judgment service detail code [ANK-2765-00-00 ADD] |
| 2 | SET | `template.set(OLD_OLD_VRSB_JDG_SVC_DTL_CD, convBlankToNull(...JKKSodSendConstCC.OLD_OLD_VRSB_JDG_SVC_DTL_CD))` // Old-old VR recognition judgment service detail code [ANK-3834-00-00 ADD] |
| 3 | SET | `template.set(OLD_DNS_OPTOUT_CHOICEF, convBlankToNull(...JKKSodSendConstCC.OLD_DNS_OPTOUT_CHOICEF))` // Old DNS opt-out selection flag [ANK-3834-00-00 ADD] |
| 4 | SET | `template.set(DNS_OPTOUT_CHOICEF, convBlankToNull(...JKKSodSendConstCC.DNS_OPTOUT_CHOICEF))` // DNS opt-out selection flag [ANK-3834-00-00 ADD] |

**Block 21** — RETURN (L972)

> Delegate the fully assembled message for final processing.

| # | Type | Code |
|---|------|------|
| 1 | RETURN | `return editInMsgCmn(param, template)` // Final assembly and return |

## 7. Glossary

| Term | Type | Business Meaning |
|------|------|------------------|
| `svc_kei_no` | Field | Service contract number — primary identifier for a K-Opticom service contract line |
| `svc_kei_ucwk_no` | Field | Service detail work number — internal tracking ID for service contract sub-items |
| `op_svc_kei_no` | Field | Option service contract number — identifier for optional add-on services |
| `sbop_svc_kei_no` | Field | Sub-option service contract number — identifier for secondary add-on services |
| `kktk_svc_kei_no` | Field | Equipment provision service contract number — identifier for hardware/equipment provisioning |
| `hjin_eo_ykae_svkei_no` | Field | Corporate eo alternative service contract number — for corporate customers using eo as alternative service |
| `yokyu_mt_apl_sbt_cd` | Field | Requestor application type code — classifies the type of requestor application |
| `svc_order_cd` | Field | Service order code — identifies the type of service order (registration, change, cancellation) |
| `svc_order_dtail_cd` | Field | Service order detail code — fine-grained classification of the service order |
| `yokyu_sbt_cd` | Field | Request type code — the type of request (e.g., new registration, modification, deletion) |
| `deltg_sod_renkei_seq` | Field | Deletion-target SOD linkage sequence — sequence number of SOD records marked for deletion |
| `schedule_ymd` | Field | Scheduled execution date — year/month/day when the service order should take effect |
| `ninsho_id` | Field | Authentication ID — user login credential for the service |
| `pop_id` | Field | POP ID — Post Office Protocol credential for email retrieval |
| `mlad` | Field | Mail address — customer's primary email address |
| `mail_alias` | Field | Mail alias — alternative email address that forwards to the primary |
| `mlbox_capa` | Field | Mailbox capacity — maximum storage size for the email mailbox |
| `tenso_mail_hoji_flg` | Field | Forwarding mail retention flag — whether to retain copies of forwarded mail |
| `tenso_saki_mail_ad` | Field | Forwarding destination mail address — where forwarded emails are sent |
| `hojin_dokuji_domain` | Field | Corporate unique domain — domain name specific to corporate (hojin) email accounts |
| `mlkrsha_id` | Field | Mail administrator ID — credential for managing mail list/admin functions |
| `hjdomain_mlbox_capa` | Field | Corporate domain mailbox capacity — mailbox capacity for corporate domain accounts |
| `total_account_cnt` | Field | Total account count — aggregate number of accounts under a corporate domain |
| `virus_chk_yh` | Field | Virus check enable/disable flag — whether email virus scanning is enabled |
| `web_id` | Field | Web ID — credential for web portal access |
| `url` | Field | URL — web address for the customer's homepage |
| `hp_capa` | Field | HP (homepage) capacity — storage allocation for the customer's homepage |
| `buy_goods_cd` | Field | Purchased goods code — identifies what product/package the customer purchased |
| `mllist_nm` | Field | Mail list name — name of the distribution list (mailing list) |
| `mllist_kosho` | Field | Mail list display name — human-readable name for the distribution list |
| `mllist_max_user_cnt` | Field | Mail list maximum user count — max number of members in the distribution list |
| `mllist_kokai_yh` | Field | Mail list publication enable/disable flag — whether the ML is publicly listed |
| `femtsel_opum` | Field | Fiber selection option — fiber service selection parameter [ANK-0035-00-00] |
| `ip_ad` | Field | IP address — the customer's assigned IPv4 address |
| `netmask` | Field | Netmask — network mask for the customer's IP assignment |
| `bas_id` | Field | BAS (Broadband Access Server) ID — identifier of the access server |
| `bas_host_id` | Field | BAS host ID — specific host identifier on the BAS |
| `vlan_id` | Field | VLAN ID — Virtual LAN identifier for network segmentation [IT1-2012-0000428] |
| `svc_id` | Field | Service ID — identifier for the VRR (Virtual Route Redundancy) service |
| `wish_ownr_id` | Field | WISH owner ID — credential for the WISH service (Fujitsu's managed service platform) |
| `grpcom_disk_capa` | Field | Group community disk capacity — shared disk storage for group/community features |
| `dupcon_ninsho_id` | Field | Dual-connection authentication ID — credential for redundant/bonded connection |
| `dup_plan_sbt_cd` | Field | Dual-connection plan type code — plan type for the dual-connection service |
| `bbr_macad` | Field | BBR MAC address — MAC address of the Broadband Router |
| `bbr_ninsho_key` | Field | BBR authentication key — credential for BBR authentication |
| `connect_mode_cd` | Field | Connection mode code — how the customer connects (e.g., PPPoE, LAN) |
| `auto_cut_mode_cd` | Field | Auto-cut mode code — how the idle/disconnect timer operates |
| `auto_cut_time` | Field | Auto-cut time — duration before automatic disconnection |
| `pppoe_bridge_sbt_cd` | Field | PPPoE bridge type code — PPP over Ethernet bridge mode setting |
| `ping_response_sbt_cd` | Field | Ping response type code — how ICMP ping responses are configured |
| `ipv6_prtcl_sbt_cd` | Field | IPv6 protocol type code — IPv6 protocol configuration type |
| `ipv6_taiiki_ctrl_cd` | Field | IPv6 domain control code — IPv6 regional/domain control setting |
| `ipv6_ninsho_id` | Field | IPv6 authentication ID — credential for IPv6 connectivity |
| `ipv6_chuskk_cd` | Field | IPv6 central office code — identifies the central office serving the IPv6 connection |
| `ipv6_ad_ifid` | Field | IPv6 address interface ID — interface identifier portion of the IPv6 address |
| `ipv6_l2tp_ninsho_id` | Field | IPv6 L2TP authentication ID — credential for L2TP IPv6 tunnel |
| `ipv6_ping_rsp_stat_cd` | Field | IPv6 ping response status code — status of IPv6 ping response |
| `ipv6_taknkiki_model_cd` | Field | IPv6 home device model code — model of customer's IPv6-capable home device |
| `ipv6_type_ctrl_cd` | Field | IPv6 type control code — control parameter for IPv6 service type |
| `chbf_mlad` | Field | Pre-change email address — email address before a change operation |
| `chaf_mail_account` | Field | Post-change mail account — email account after a change operation |
| `mailalias_hktgi_flg` | Field | Mail alias inheritance flag — whether to inherit mail alias settings during changes |
| `mlviruschk_hktgi_flg` | Field | Mail virus check inheritance flag — whether to inherit virus check settings |
| `ml_vrsette_hktgi_flg` | Field | Mail various settings inheritance flag — whether to inherit all mail settings |
| `mlad_chgj_ml_tns_flg` | Field | Email address change mail forwarding flag — whether to forward mail when email address changes |
| `old_vrsb_jdg_svc_dtl_cd` | Field | Old VR recognition judgment service detail code — VR recognition from prior state [ANK-2765-00-00] |
| `old_old_vrsb_jdg_svc_dtl_cd` | Field | Old-old VR recognition judgment service detail code — VR recognition from two states prior [ANK-3834-00-00] |
| `dns_optout_choicef` | Field | DNS opt-out selection flag — whether the customer opts out of DNS service [ANK-3834-00-00] |
| CAANMsg | Class | Fujitsu's canonical message object used for CBS (Component-Based Service) data exchange |
| CBS | Acronym | Component-Based Service — the service invocation layer in the K-Opticom architecture |
| SOD | Acronym | Service Order Data — the order fulfillment entity in the telecom system |
| SIF | Acronym | System Interface — the interface layer between screens and CBS |
| FTTH | Business term | Fiber To The Home — K-Opticom's fiber-optic broadband service |
| BAS | Acronym | Broadband Access Server — network equipment providing broadband access |
| VLAN | Acronym | Virtual Local Area Network — network segmentation identifier |
| PPPoE | Acronym | Point-to-Point Protocol over Ethernet — broadband authentication protocol |
| L2TP | Acronym | Layer 2 Tunneling Protocol — tunneling protocol for IPv6 connectivity |
| MAC | Acronym | Media Access Control — hardware address of network equipment |
| IPv6 | Business term | Internet Protocol version 6 — next-generation IP addressing protocol |
| IP | Acronym | Internet Protocol — network addressing protocol |
| POP | Acronym | Post Office Protocol — email retrieval protocol |
| ML | Acronym | Mail List — email distribution/mailing list |
| VR | Acronym | Virtual Router — routing redundancy/failover mechanism |
| WISH | Business term | Fujitsu WISH — a managed IT services platform for corporate customers |
| VRR | Acronym | Virtual Route Redundancy — network redundancy protocol |
| BBR | Business term | Broadband Router — customer-facing router equipment |
| HOJIN | Japanese term | 法人 (hojin) — corporate/enterprise customer in Japanese telecom terminology |
| ESC0041D010 | Code | Service order reception message code — CBS message for registering/receiving service orders |
