# Business Logic — JFUCngSeikyushoYohiCC.setInMapWrisvcAutoAply() [63 LOC]

| Field | Value |
|-------|-------|
| Fully Qualified Name | `com.fujitsu.futurity.bp.custom.common.JFUCngSeikyushoYohiCC` |
| Layer | CC/Common Component (Controller/Component layer within the BP custom module) |
| Module | `common` (Package: `com.fujitsu.futurity.bp.custom.common`) |

## 1. Role

### JFUCngSeikyushoYohiCC.setInMapWrisvcAutoAply()

This method performs the **upstream mapping item setup for Discount Service Auto-Application** (割引自動適用CC) — it constructs the complete request parameter structure required to auto-apply a discount to a billing option service contract within the Fujitsu Futurity BP (Business Process) order fulfillment system. The method acts as a **data assembler and builder**: it creates a structured `ccMap` (component context map) that contains base operation identifiers, conditional service reason codes, and a nested hierarchy of service contract details for the downstream SC (Service Component) processing layer.

It handles **three distinct business operations** based on the `addChgeDiv` (Registration/Change Classification) parameter: (1) a **standard registration** where only base mapping values are populated, (2) a **service contract deregistration** (`addChgeDiv = "03"`) where a service deregistration reason code (`svc_dlre_cd`) is injected, and (3) a **service contract cancellation** (`addChgeDiv = "05"`) where a service cancellation reason code (`svc_cancel_rsn_cd`) is set. In all cases, it builds a **nested service contract group structure** (`svc_kei_grp_list`) containing the billing option service contract number, status, cost code, and plan code — which will be consumed by a downstream SC for auto-application processing.

The method implements a **Builder pattern** with **conditional dispatch** (routing based on `addChgeDiv`). Its role in the larger system is that of a **shared CC (Common Component) data transformer** — it prepares the inMap/ccMap parameter structure so that the caller (the `cngSeikyushoYohi` method, which handles billing document submission modifications) can pass the fully-formed structure to the SC layer via `JFUBaseUtil.executeSC`.

**Note:** The method is currently **commented out** in its sole caller (line 610 of `cngSeikyushoYohi`), with the comment indicating "Discount Service Auto-Application Process" (割引サービス自動適用処理). This suggests the feature was either under development, temporarily disabled, or scheduled for future activation.

## 2. Processing Pattern (Detailed Business Logic)

```mermaid
flowchart TD
    START(["setInMapWrisvcAutoAply"])
    
    START --> INIT["Initialize ccMap via param.setData and getData"]
    INIT --> BASE_MAP["Set base map keys: sysid, addChgeDiv, mskmNo, mskm_sbt_cd, ido_div, func_code"]
    
    BASE_MAP --> CHECK_DIV03{"addChgeDiv == 03?"}
    CHECK_DIV03 -->|Yes| SVC_DLRE["Set svc_dlre_cd (service deregistration reason code)"]
    CHECK_DIV03 -->|No| CHECK_DIV05{"addChgeDiv == 05?"}
    SVC_DLRE --> CHECK_DIV05
    
    CHECK_DIV05 -->|Yes| SVC_CANCEL["Set svc_cancel_rsn_cd (service cancellation reason code)"]
    CHECK_DIV05 -->|No| BUILD_WORK
    
    SVC_CANCEL --> BUILD_WORK["Build workSvcKei structure"]
    BUILD_WORK --> SET_GRP["Set grp_div = 00 (accounting)"]
    SET_GRP --> SET_TG["Set tg_kei_skbt_cd = 07 (billing option service contract)"]
    SET_TG --> SET_PARAMS["Set seiopsvc_kei_no, seiopsvc_kei_stat, pcrs_cd, pplan_cd, seiopsvc_cd"]
    SET_PARAMS --> ADD_TO_LIST["Add workSvcKeiData to workSvcKeiList"]
    ADD_TO_LIST --> PUT_SVC_LIST["Set svc_kei_list in workSvcKeiMap"]
    PUT_SVC_LIST --> PUT_SVC_GRP["Set svc_kei_grp_list in ccMap"]
    PUT_SVC_GRP --> END_NODE(["Return / Next"])
```

## 3. Parameter Analysis

| No | Parameter Name | Type | Business Description |
|----|---------------|------|---------------------|
| 1 | `param` | `IRequestParameterReadWrite` | Request parameter container used for upstream mapping between the screen/SC layer. Acts as the primary I/O object for setting and retrieving the mapped data structure (`ccMap`) via `setData`/`getData`. |
| 2 | `fixedText` | `String` | Service message identifier / parameter key used as the map key for storing and retrieving the `ccMap` within the `param` container. Functions as a namespacing mechanism to keep data segments isolated within the request. |
| 3 | `addChgeDiv` | `String` | Registration/Change Classification (登録／変更区分) — determines the business operation type. Valid values: `"01"` (registration, used by caller), `"03"` (deregistration — sets service deregistration reason), `"05"` (cancellation — sets service cancellation reason). Controls conditional branching. |
| 4 | `sysid` | `String` | System ID (ＳＹＳＩＤ) — identifies the originating system for audit trail and routing purposes. |
| 5 | `mskmNo` | `String` | Application Number (申込番号) — the unique identifier for the order/application being processed. |
| 6 | `seiOpSvcKeiNo` | `String` | Billing Option Service Contract Number (請求オプションサービス契約番号) — the contract number of the option service to which the discount auto-application applies. |
| 7 | `seiOpSvcKeiStat` | `String` | Billing Option Service Contract Status (請求オプションサービス契約ステータス) — current status of the option service contract (e.g., active, terminated, pending). |
| 8 | `pcrsCd` | `String` | Cost Code (料金コースコード) — the cost plan/course code associated with the billing option service, determining pricing rules. |
| 9 | `pplanCd` | `String` | Plan Code (料金プランコード) — the specific pricing plan code for the billing option service, determining the discount rates and service terms. |

### External State Read

| Field | Type | Description |
|-------|------|-------------|
| `MAP_KEY_SYSID` | `String` (static constant) | Map key constant — value `"sysid"` |
| `MAP_KEY_ADD_CHGE_DIV` | `String` (static constant) | Map key constant — value `"add_chge_div"` |
| `MAP_KEY_MSKM_NO` | `String` (static constant) | Map key constant — value `"mskm_no"` |
| `MAP_KEY_MSKM_SBT_CD` | `String` (static constant) | Map key constant — value `"mskm_sbt_cd"` |
| `MAP_KEY_IDO_DIV` | `String` (static constant) | Map key constant — value `"ido_div"` |
| `MAP_KEY_FUNC_CODE` | `String` (static constant) | Map key constant — value `"func_code"` |
| `MAP_KEY_SVC_DIRE_CD` | `String` (static constant) | Map key constant — value `"svc_dlre_cd"` (service deregistration reason code) |
| `MAP_KEY_SVC_CANCEL_RSN_CD` | `String` (static constant) | Map key constant — value `"svc_cancel_rsn_cd"` (service cancellation reason code) |
| `MAP_KEY_GRP_DIV` | `String` (static constant) | Map key constant — value `"grp_div"` |
| `MAP_KEY_TG_KEI_SKBT_CD` | `String` (static constant) | Map key constant — value `"tg_kei_skbt_cd"` |
| `MAP_KEY_SEIOPSVC_KEI_NO` | `String` (static constant) | Map key constant — value `"seiopsvc_kei_no"` |
| `MAP_KEY_SEIOPSVC_KEI_STAT` | `String` (static constant) | Map key constant — value `"seiopsvc_kei_stat"` |
| `MAP_KEY_PCRS_CD` | `String` (static constant) | Map key constant — value `"pcrs_cd"` |
| `MAP_KEY_PPLAN_CD` | `String` (static constant) | Map key constant — value `"pplan_cd"` |
| `MAP_KEY_SEIOPSVC_CD` | `String` (static constant) | Map key constant — value `"seiopsvc_cd"` |
| `MAP_KEY_SVC_KEI_LIST` | `String` (static constant) | Map key constant — value `"svc_kei_list"` |
| `MAP_KEY_SVC_KEI_GRP_LIST` | `String` (static constant) | Map key constant — value `"svc_kei_grp_list"` |
| `MAP_VAL_ADD_CHGE_DIV_03` | `String` (static constant) | Map value constant — `"03"` (deregistration classification) |
| `MAP_VAL_ADD_CHGE_DIV_05` | `String` (static constant) | Map value constant — `"05"` (cancellation classification) |
| `MAP_VAL_GRP_DIV_00` | `String` (static constant) | Map value constant — `"00"` (accounting group classification) |
| `MAP_VAL_TG_KEI_SKBT_CD_07` | `String` (static constant) | Map value constant — `"07"` (billing option service contract type) |
| `FUNC_CD_1` | `String` (static constant) | Function code constant — `"1"` (check-and-register) |

## 4. CRUD Operations / Called Services

This method performs **pure data mapping** — it constructs parameter structures via `HashMap.put()` calls and does not directly invoke any Service Component (SC), Business Component (CBS), database, or entity operations. All data manipulation is in-memory map construction for downstream consumption.

| CRUD | SC / CBS | SC Code | Entity / DB | Operation Description |
|------|----------|---------|-------------|----------------------|
| - | `param.setData(fixedText, new HashMap<String, Object>())` | - | - | Initializes the request parameter container with a new empty HashMap under the `fixedText` key. Sets up the storage location for the `ccMap`. |
| R | `param.getData(fixedText)` | - | - | Retrieves the HashMap from the request parameter container. Reads the `ccMap` that was just created by `setData`. |
| - | `ccMap.put(...)` (multiple) | - | - | Writes base mapping values, conditional reason codes, and nested service contract structures into the component context map. No SC/DB involvement — pure in-memory data assembly. |

**Note:** The commented-out caller in `cngSeikyushoYohi` (line 610) suggests this method was intended to be followed by a `JFUBaseUtil.executeSC` call to push the constructed map to a downstream SC for actual discount auto-application processing. That SC call is not part of this method's scope.

## 5. Dependency Trace

| # | Caller (Screen/Batch) | Call Chain (Full Path to this Method) | Terminal (SC / CRUD / Entity) |
|---|----------------------|--------------------------------------|-------------------------------|
| 1 | Method: `cngSeikyushoYohi` (line 610, currently commented out) | `cngSeikyushoYohi` -> `setInMapWrisvcAutoAply` (commented out) | None — method is currently inactive. Would feed into downstream `executeSC` calls for discount auto-application processing. |

**Notes on callers:**
- The sole caller is `JFUCngSeikyushoYohiCC.cngSeikyushoYohi`, which handles billing document submission modification processing (請求書送付要件変更処理).
- The call at line 610 is **currently commented out** with the comments: "Discount Service Auto-Application Process" (割引サービス自動適用処理).
- The caller context shows the method was designed to process discount auto-application for billing option services, with parameters passed from the broader billing modification flow.
- No active screen class (`KKSV*`) directly calls this method — it would be invoked through the `cngSeikyushoYohi` CBS entry point.

## 6. Per-Branch Detail Blocks

**Block 1** — EXEC `(Initialize ccMap)` (L680-L682)

> Initializes the request parameter container with a new empty HashMap and retrieves it for population.

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `param.setData(fixedText, new HashMap<String, Object>())` | // Sets up the storage location for ccMap in param |
| 2 | EXEC | `HashMap<String, Object> ccMap = (HashMap<String, Object>)param.getData(fixedText)` | // Retrieves the ccMap for population |

**Block 2** — EXEC `(Set base mapping keys)` (L685-L691)

> Sets the base operational metadata in the ccMap: system ID, registration/change classification, application number, application subtype code (fixed to FTTH authorization type), transfer classification code (fixed to 15), and function code (fixed to check-and-register mode).

| # | Type | Code |
|---|------|------|
| 1 | SET | `ccMap.put(MAP_KEY_SYSID, sysid)` // Map key: "sysid" — System ID [L685] |
| 2 | SET | `ccMap.put(MAP_KEY_ADD_CHGE_DIV, addChgeDiv)` // Map key: "add_chge_div" — Registration/Change Classification [L687] |
| 3 | SET | `ccMap.put(MAP_KEY_MSKM_NO, mskmNo)` // Map key: "mskm_no" — Application Number [L689] |
| 4 | SET | `ccMap.put(MAP_KEY_MSKM_SBT_CD, JFUStrConst.KK0971_MSKM_SBT_CD_00013)` // Map key: "mskm_sbt_cd" — Application Subtype Code [L691] |
| 5 | SET | `ccMap.put(MAP_KEY_IDO_DIV, JFUStrConst.CD00576_00015)` // Map key: "ido_div" — Transfer Classification = "00015" [L693] |
| 6 | SET | `ccMap.put(MAP_KEY_FUNC_CODE, JPCModelConstant.FUNC_CD_1)` // Map key: "func_code" — Function Code = "1" (check-and-register) [L695] |

**Block 3** — IF `(addChgeDiv == MAP_VAL_ADD_CHGE_DIV_03 = "03")` — SERVICE CONTRACT DEREGISTRATION [L698-L702]

> When the registration/change classification is `"03"` (Registration/Change Classification: Billing Option Service Contract Deregistration — 登録／変更区分: 請求オプションサービス契約解約), this block sets the service deregistration reason code to the constant value from `JFUStrConst.CD00879_01`. This reason code indicates the business justification for deregistering a service contract.

| # | Type | Code |
|---|------|------|
| 1 | SET | `ccMap.put(MAP_KEY_SVC_DIRE_CD, JFUStrConst.CD00879_01)` // Map key: "svc_dlre_cd" — Service Deregistration Reason Code = CD00879_01 [L701] |

**Block 4** — IF `(addChgeDiv == MAP_VAL_ADD_CHGE_DIV_05 = "05")` — SERVICE CONTRACT CANCELLATION [L704-L708]

> When the registration/change classification is `"05"` (Registration/Change Classification: Billing Option Service Contract Cancellation — 登録／変更区分: 請求オプションサービス契約キャンセル), this block sets the service cancellation reason code to the constant value from `JFUStrConst.CD01390_06`. This reason code indicates the business justification for cancelling a service contract. Note: This is an independent `if` (not `else if`), so both Block 3 and Block 4 could execute if `addChgeDiv` matched both values (which is logically impossible given the distinct string values "03" and "05").

| # | Type | Code |
|---|------|------|
| 1 | SET | `ccMap.put(MAP_KEY_SVC_CANCEL_RSN_CD, JFUStrConst.CD01390_06)` // Map key: "svc_cancel_rsn_cd" — Service Cancellation Reason Code = CD01390_06 [L707] |

**Block 5** — EXEC `(Build workSvcKei nested structure)` (L711-L736)

> Constructs a deeply nested structure of service contract group data. The structure is: `ArrayList<HashMap>` (workSvcKeiArray) containing `HashMap` (workSvcKeiMap) which contains `ArrayList<HashMap>` (workSvcKeiList) containing `HashMap` (workSvcKeiData). This nested hierarchy represents the service contract group → service contract list → individual service contract data hierarchy.

**Block 5.1** — EXEC `(Initialize workSvcKei containers)` (L711-L716)

> Creates the ArrayList and HashMap containers for the service contract group structure.

| # | Type | Code |
|---|------|------|
| 1 | SET | `ArrayList<HashMap<String, Object>> workSvcKeiArray = new ArrayList<HashMap<String, Object>>()` // Service contract group list [L711] |
| 2 | SET | `HashMap<String, Object> workSvcKeiMap = new HashMap<String, Object>()` // Service contract group map [L712] |

**Block 5.2** — EXEC `(Set group division)` (L715-L716)

> Sets the group division to `"00"` (Accounting — 照会), indicating this is an inquiry/accounting group.

| # | Type | Code |
|---|------|------|
| 1 | SET | `workSvcKeiMap.put(MAP_KEY_GRP_DIV, MAP_VAL_GRP_DIV_00)` // Map key: "grp_div" = "00" (Accounting) [L716] |

**Block 5.3** — EXEC `(Initialize workSvcKeiList containers)` (L719-L720)

> Creates the ArrayList and HashMap containers for the individual service contract data entries.

| # | Type | Code |
|---|------|------|
| 1 | SET | `ArrayList<HashMap<String, Object>> workSvcKeiList = new ArrayList<HashMap<String, Object>>()` // Service contract list [L719] |
| 2 | SET | `HashMap<String, Object> workSvcKeiData = new HashMap<String, Object>()` // Service contract data entry [L720] |

**Block 5.4** — EXEC `(Populate workSvcKeiData with contract details)` (L723-L733)

> Sets all the billing option service contract detail fields: target contract identification code (fixed to "07" for billing option service), contract number, status, cost code, plan code, and billing option service code (fixed to E001).

**Block 5.4.1** — SET `(Set target contract identification code)` (L723-L724)

> Sets `tg_kei_skbt_cd` to `"07"`, which represents the Billing Option Service Contract type (請求オプションサービス契約).

| # | Type | Code |
|---|------|------|
| 1 | SET | `workSvcKeiData.put(MAP_KEY_TG_KEI_SKBT_CD, MAP_VAL_TG_KEI_SKBT_CD_07)` // Map key: "tg_kei_skbt_cd" = "07" (Billing Option Service Contract) [L724] |

**Block 5.4.2** — SET `(Set contract number)` (L726-L727)

> Sets the billing option service contract number from the parameter.

| # | Type | Code |
|---|------|------|
| 1 | SET | `workSvcKeiData.put(MAP_KEY_SEIOPSVC_KEI_NO, seiOpSvcKeiNo)` // Map key: "seiopsvc_kei_no" — Contract Number from param [L727] |

**Block 5.4.3** — SET `(Set contract status)` (L729-L730)

> Sets the billing option service contract status from the parameter.

| # | Type | Code |
|---|------|------|
| 1 | SET | `workSvcKeiData.put(MAP_KEY_SEIOPSVC_KEI_STAT, seiOpSvcKeiStat)` // Map key: "seiopsvc_kei_stat" — Contract Status from param [L730] |

**Block 5.4.4** — SET `(Set cost code)` (L732-L733)

> Sets the cost code from the parameter.

| # | Type | Code |
|---|------|------|
| 1 | SET | `workSvcKeiData.put(MAP_KEY_PCRS_CD, pcrsCd)` // Map key: "pcrs_cd" — Cost Code from param [L733] |

**Block 5.4.5** — SET `(Set plan code)` (L735-L736)

> Sets the plan code from the parameter.

| # | Type | Code |
|---|------|------|
| 1 | SET | `workSvcKeiData.put(MAP_KEY_PPLAN_CD, pplanCd)` // Map key: "pplan_cd" — Plan Code from param [L736] |

**Block 5.4.6** — SET `(Set billing option service code)` (L738-L739)

> Sets the billing option service code to `JFUStrConst.KK0761_SEIOPSVC_CD_E001`, a constant representing a specific billing option service type (請求オプションサービスコード).

| # | Type | Code |
|---|------|------|
| 1 | SET | `workSvcKeiData.put(MAP_KEY_SEIOPSVC_CD, JFUStrConst.KK0761_SEIOPSVC_CD_E001)` // Map key: "seiopsvc_cd" — Billing Option Service Code = E001 [L739] |

**Block 5.5** — EXEC `(Assemble nested structure and put into ccMap)` (L741-L745)

> Finalizes the nested data structure: adds the data entry to the list, puts the list into the group map, adds the group map to the array, and puts the final array into the ccMap under the `svc_kei_grp_list` key.

| # | Type | Code |
|---|------|------|
| 1 | EXEC | `workSvcKeiList.add(workSvcKeiData)` // Adds data entry to the service contract list [L741] |
| 2 | SET | `workSvcKeiMap.put(MAP_KEY_SVC_KEI_LIST, workSvcKeiList)` // Map key: "svc_kei_list" — Service Contract List [L742] |
| 3 | EXEC | `workSvcKeiArray.add(workSvcKeiMap)` // Adds group map to the service contract group array [L743] |
| 4 | SET | `ccMap.put(MAP_KEY_SVC_KEI_GRP_LIST, workSvcKeiArray)` // Map key: "svc_kei_grp_list" — Service Contract Group List [L745] |

**Block 6** — RETURN `(void return)` (L747)

> Returns void — the populated `ccMap` is already stored within `param` via the `setData`/`getData` mechanism.

| # | Type | Code |
|---|------|------|
| 1 | RETURN | `return;` (implicit — void method) |

## 7. Glossary

| Term | Type | Business Meaning |
|------|------|------------------|
| `add_chge_div` | Field | Registration/Change Classification (登録／変更区分) — Determines whether the operation is a registration ("01"), deregistration ("03"), or cancellation ("05") of a billing option service contract. |
| `mskm_no` | Field | Application Number (申込番号) — Unique identifier for the order/application in the Futurity system. |
| `mskm_sbt_cd` | Field | Application Subtype Code (申込種別コード) — Classifies the type of application (e.g., FTTH registration, Mail change). Fixed to "00013" in this method. |
| `ido_div` | Field | Transfer Classification (異動区分) — Indicates the type of transfer/change (fixed to "00015" in this method). |
| `func_code` | Field | Function Code (機能コード) — Specifies the operation mode: "1" = Check-and-Register (チェック＆登録), "2" = Check Only (チェックのみ). |
| `svc_dlre_cd` | Field | Service Deregistration Reason Code (サービス解約理由コード) — Business justification for deregistering a service contract. Set to constant CD00879_01. |
| `svc_cancel_rsn_cd` | Field | Service Cancellation Reason Code (サービスキャンセル理由コード) — Business justification for cancelling a service contract. Set to constant CD01390_06. |
| `grp_div` | Field | Group Division (グループ区分) — Classifies the group type; "00" means Accounting/Inquiry (照会). |
| `tg_kei_skbt_cd` | Field | Target Contract Identification Code (対象契約識別コード) — Identifies the contract type; "07" means Billing Option Service Contract (請求オプションサービス契約). |
| `seiopsvc_kei_no` | Field | Billing Option Service Contract Number (請求オプションサービス契約番号) — The contract number of the billing option service. |
| `seiopsvc_kei_stat` | Field | Billing Option Service Contract Status (請求オプションサービス契約ステータス) — Current status of the option service contract. |
| `pcrs_cd` | Field | Cost Code (料金コースコード) — The cost plan/course code associated with the billing service, determining pricing rules. |
| `pplan_cd` | Field | Plan Code (料金プランコード) — The specific pricing plan code determining discount rates and service terms. |
| `seiopsvc_cd` | Field | Billing Option Service Code (請求オプションサービスコード) — Identifies the type of billing option service; fixed to E001 in this method. |
| `svc_kei_grp_list` | Field | Service Contract Group List (サービス契約グループリスト) — Top-level nested structure containing the full service contract hierarchy for SC processing. |
| `ccMap` | Field | Component Context Map — Internal HashMap storing all mapped values for a service message identified by `fixedText`. |
| CC | Acronym | Common Component — A shared Java class that assembles, transforms, and routes data between screen layers and SC layers. |
| SC | Acronym | Service Component — A backend service layer class that performs database CRUD operations and business logic execution. |
| CBS | Acronym | Business Service — A component-based service wrapper that invokes SCs and handles error mapping. |
| SIF | Acronym | Service Interface — A set of related CBS/SC operations for a specific business function (e.g., EKK0011D020 for Order Content Approval Registration). |
| FTTH | Business term | Fiber To The Home — A fiber-optic broadband internet service offered in the Japanese telecom domain. |
| mskm_sbt_cd = "00013" | Constant | Application Subtype Code for FTTH Authorization (FTTH承認) — a specific application type in the Futurity system. |
| CD00576_00015 | Constant | Transfer Classification code — a fixed system constant for the type of data transfer being performed. |
| FUNC_CD_1 | Constant | Function Code "1" — Check and Register mode (チェック＆登録), allowing both validation and persistence. |
| CD00879_01 | Constant | Service Deregistration Reason Code — the predefined reason code for service contract deregistration. |
| CD01390_06 | Constant | Service Cancellation Reason Code — the predefined reason code for service contract cancellation. |
| KK0761_SEIOPSVC_CD_E001 | Constant | Billing Option Service Code "E001" — identifies a specific billing option service type in the Futurity system. |
| MAP_SEIOPSVC_KEI_NO_ZERO | Constant | Error avoidance value "000000000000" — a sentinel value used to avoid errors when contract numbers are null/empty. |
| WORK_PARAM_ID | Constant | "KK_FIRST_SEIKY_PRD" — Business parameter ID for first billing product context. |
| IRequestParameterReadWrite | Type | Interface for request parameter containers that support both read (`getData`) and write (`setData`) operations for upstream mapping. |
| `setInMapWrisvcAutoAply` | Method Name | Japanese: 上りマッピング項目設定(割引自動適用CC) — Upstream mapping item setup (Discount Auto-Application CC). Sets up the request parameter structure for auto-applying discounts to billing option service contracts. |
| 割引自動適用 | Business term | Discount Auto-Application — The business process of automatically applying discount pricing to billing option service contracts based on configured rules. |
