5 Sending Records to Elastic Charging Engine

Learn how to configure Offline Mediation Controller to send records to Oracle Communications Billing and Revenue Management (BRM) Elastic Charging Engine (ECE).

Topics in this document:

About the ECE Cartridge Pack

The ECE cartridge pack includes the ECE DC node, which enables Offline Mediation Controller to submit offline charging requests to ECE.

The ECE cartridge pack is used with the following existing cartridge packs to process the input records:

  • Simple ASCII

  • IMS

  • SGSN

Figure 5-1 shows the node chain configuration for submitting offline charging requests to ECE.

Figure 5-1 ECE DC Node Configuration Architecture

Description of Figure 5-1 follows
Description of "Figure 5-1 ECE DC Node Configuration Architecture"

Rule File

When creating and configuring the ECE Distribution Cartridge (DC) node, you configure an NPL rule file containing the mapping data from the network accounting record (NAR) format to an output format for use by ECE. For more information about NPL, see Offline Mediation Controller Cartridge Development Kit NPL Reference Guide.

When configuring the ECE DC node, define the following in the NPL rule files:

Configuration Block

Use a configuration block to set configuration values required by the node. You can define only one configuration block in an NPL rule file.

Syntax

Config {
   PRODUCTTYPES "product_type[, ...]";
   PAYLOAD "payload_type[, ...]";
   PAYLOADDATATYPE "datatype";
   USAGEOBJECTS "usage_object";
   EVENT "event_type[, ...]";
   VERSION "version_number[, ...]";
   MODE "usage_request_mode";
   TIME_ZONE "time_zone";
   DATE_FORMAT "date_format";
   USAGE_REQUEST_BUILDER "request_format";
}

Configuration Settings

PRODUCTTYPES "product_type[, ...]";

where product_type is a product type defined in ECE. This parameter is specific to the product types the ECE DC node processes.

PAYLOAD "payload_type[, ...]";

where payload_type is the payload type defined in ECE.

PAYLOADDATATYPE "datatype";

where datatype specifies the data type used in payloads.

USAGEOBJECTS "usage_object";

where usage_object specifies the usage objects type. The default value is USAGEBUILDER.

EVENT "event_type[, ...]";

where event_type specifies the types of events. Add the event_type values separated by commas.

VERSION "version_number[, ...]";

where version_number specifies the version for each record corresponding to the product type. Add the version_number values separated by commas.

MODE "usage_request_mode";

where usage_request_mode specifies the mode in which Offline Mediation Controller sends usage requests to ECE. Set the parameter to one of the following values:

  • CUMULATIVE: Specifies that the balance impact in ECE is cumulative.

  • INCREMENTAL Specifies that the balance impact in ECE is incremental.

TIME_ZONE "time_zone";

where time_zone specifies the time zone used by the ECE DC node to send the session start time and the session end time to ECE. The default value is UTC. The time zone is set at the record level or at the cartridge level:

  • Record level: If the NPL output record block contains the timeZone field, the time zone is set at record level. For record level time zone, each call detail record (CDR) can have a different time zone defined by the timeZone field in the CDR.

  • Cartridge level: If the configuration block contains TIME_ZONE field, the time zone is set at cartridge level. All the CDRs processed by the cartridge will contain the same time zone as defined by the TIME_ZONE field.

Note:

If the time zone is defined at record level and at cartridge level, the record level time zone is used.

DATE_FORMAT "date_format";

where date_format specifies the date format used by ECE DC node to send the session start time and the session end time to ECE. The default value is yyyy-MM-dd HH:mm:ss.

USAGE_REQUEST_BUILDER "request_format";

where request_format defines the usage request builders. This parameter is used to create the builders for the corresponding product type, event, and version.

For example:

Config {
   PRODUCTTYPES "VOICE,DATA,SMS";
   PAYLOAD "VOICE_USAGE_Terminate_PAYLOAD,VOICE_USAGE_Update_PAYLOAD,
   VOICE_USAGE_Debit_unit_PAYLOAD,VOICE_USAGE_Refund_unit_PAYLOAD,
   VOICE_USAGE_Refund_amount_PAYLOAD,VOICE_USAGE_Debit_amount_PAYLOAD,
   DATA_DATA_USAGE_Terminate_PAYLOAD,DATA_DATA_USAGE_Update_PAYLOAD,
   DATA_DATA_USAGE_Debit_unit_PAYLOAD,DATA_DATA_USAGE_Refund_unit_PAYLOAD,
   DATA_DATA_USAGE_Refund_amount_PAYLOAD,DATA_USAGE_Debit_amount_PAYLOAD,
   SMS_SMS_USAGE_Terminate_PAYLOAD,SMS_SMS_USAGE_Debit_unit_PAYLOAD,
   SMS_SMS_USAGE_Refund_unit_PAYLOAD,SMS_SMS_USAGE_Refund_amount_PAYLOAD,
   SMS_SMS_USAGE_Debit_amount_PAYLOAD";
   PAYLOADDATATYPE "PAYLOADDATATYPE";
   USAGEOBJECTS "USAGEBUILDER";
   EVENT "USAGE,DATA_USAGE,SMS_USAGE";
   VERSION "1.0";
   MODE "CUMULATIVE";
   TIME_ZONE "UTC";
   DATE_FORMAT "yyyy-MM-dd HH:mm:ss";
   USAGE_REQUEST_BUILDER "VOICE@USAGE@1.0,DATA@DATA_USAGE@1.0,SMS@SMS_USAGE@1.0";
}

Input Record Block

Use an input record block to define which fields in the input data record are passed into the node.

Syntax

InputRec {
   datatype parameter;
} in;

where:

  • datatype is the data type of the input field, such as String.

  • parameter is the input field name.

For example:

InputRec {
                String calling_number;
                Integer seq_no;
                Integer duration;
                String start_time;
                String product_type;
                String session_id;
                String CalledId;
                String end_time;
                String cell_id;
                String requestedInputVolume;
                String requestedOutputVolume;
                String requestedTotalVolume;
                String usedUnitsInputVolume;
                String usedUnitsOutputVolume;
                String usedUitsTotalVolume;
                String operationType;
                String correlation_identifier;
                String balance_element_id;
                String amount;    
              //  String timeZone;  
} in;

Output Record Block

Use an output record block to define the format of a node's output data record.

Syntax

OutputRec {
   datatype parameter;
} out;

where:

  • datatype is the data type of the output field, such as String.

  • parameter is the output field name.

For example:

OutputRec {
                String calling_number;
                Integer seq_no;
                String duration;
                String start_time;
                String end_time;
                String product_type;
                String session_id;
                String CalledId;
                String npl_type;
                String cdr_service;
                String cell_id;
                String requestedInputVolume;
                String requestedOutputVolume;
                String requestedTotalVolume;
                String usedUnitsInputVolume;
                String usedUnitsOutputVolume;
                String usedUitsTotalVolume;
                Integer usedUnitsSpecificUnit;
                String eventType;
                String version;
                String operationType;
                String correlation_identifier;
                Integer balance_element_id;
                Double amount;
                //  String timeZone;
} out;

Expose Block for PAYLOAD

For every payload type in the configuration block, define an Expose block. In the Expose block, map the NPL fields to the ECE Payload fields defined in the ECE request specifications.

For example:

Expose for VOICE_PAYLOAD{out.CalledId "CALLED_ID";out.duration "REQUESTED_UNITS[0].DURATION";}
Expose for DATA_PAYLOAD{out.cell_id "CELL_ID";
out.requestedInputVolume "REQUESTED_UNITS[0].INPUT_VOLUME";
out.requestedOutputVolume "REQUESTED_UNITS[0].OUTPUT_VOLUME";
out.requestedTotalVolume "REQUESTED_UNITS[0].TOTAL_VOLUME";
out.usedUnitsInputVolume "USED_UNITS[0].INPUT_VOLUME";
out.usedUnitsOutputVolume "USED_UNITS[0].OUTPUT_VOLUME";
out.usedUitsTotalVolume "USED_UNITS[0].TOTAL_VOLUME";}

Expose Block for Payload Data Type

For every payload data type in the configuration block, define an Expose block. In the Expose block, define the data type for the fields that are passed in payload data type.

For example:

Expose for PAYLOADDATATYPE{
   out.duration "SECONDS";
   out.requestedInputVolume "VOLUME";
   out.requestedOutputVolume "VOLUME";
   out.requestedTotalVolume "VOLUME";
   out.usedUnitsInputVolume "VOLUME";
   out.usedUnitsOutputVolume "VOLUME";
   out.usedUitsTotalVolume "VOLUME";
}

Expose Block for Usage Object

For every usage object type in the configuration block, define an Expose block. In the Expose block, map the NPL fields that are sent as parameters in the create usage objects method.

For example:

Expose for USAGEBUILDER{
   out.calling_number "PARAM1";
   out.session_id "PARAM2";
   out.start_time "PARAM3";
   out.end_time "PARAM4";
   out.seq_no "PARAM5";
}

Mapping the Input Record Attribute to the Output Record Attribute

When mapping the input record attribute to the output record attribute, set the following output fields based on the specific product type for which the CDR is received:

  • cdr_service: Set this field to the product types for each CDR record.

  • eventType: Set this field to the event type for each CDR record corresponding to the product type.

  • version: Set this field to the version for each CDR record corresponding to the product type.

  • operationType: Set this field to the usage type for each CDR record corresponding to the product type.

    See "Sample Mapping for ECE Cartridge Pack" in Offline Mediation Controller Cartridge Development Kit NPL Reference Guide for more information about the supported usage types.

For example:

out.cdr_service="VOICE"out.eventType="USAGE"out.version="1.0"out.operationType= "Terminate"