2 Creating and Configuring the Record Enhancement Charging Enhancement Processor Cartridge Node

This chapter describes how to create and configure Oracle Communications Offline Mediation Controller record enhancement charging Enhancement Processor (EP) cartridge node for enhancing call detail records (CDRs).

Before reading this chapter, you should be familiar with:

  • Offline Mediation Controller cartridge concepts and Node Programming Language (NPL).

  • Setting up event data record (EDR) enrichment for rating and setting up pipeline price list data in the Oracle Communications Billing and Revenue Management (BRM) Pipeline Manager.

Configuring the Database Connection

Before you create the record enhancement charging EP node, configure the database connection information to Oracle Communication Billing and Revenue Management (BRM) database. The record enhancement charging EP cartridge node uses the database connection information to retrieve the mapping information while enhancing the CDR data.

To configure the database connection:

  1. Open the OMC_Home/config/nodemgr/prc.properties file in a text editor, where OMC_Home is the directory in which Offline Mediation Controller is installed.

  2. Add the following text:

    driver=oracle.jdbc.driver.OracleDriver
    url= jdbc:oracle:thin:@server_name:port_number:database_alias
    username=login
    password=password
    

    where:

    • server_name is the system on which the BRM database is installed.

    • port_number is the port number of the system running the BRM database.

    • database_alias is the BRM database alias of the schema you are connecting.

    • login is the user name for the database schema you are connecting.

    • password is the encoded password for login.

      For information about encoding the password, see "Encoding the Database Connection Password".

  3. Save and close the file.

Encoding the Database Connection Password

To encode the database connection password:

  1. Go to the OMC_Home/bin directory.

  2. Run the following command:

    ./encode password
    

    where password is the password for the user name for the database schema you are connecting.

    The command window displays password in encoded form. For example:

    72,-46,62,71,41,-115,14,-68,-34,-4,-105,-113,-125,1,-18,-70
    

Creating a Record Enhancement Charging EP Node

To create a record enhancement charging EP node:

  1. Log on to Offline Mediation Controller Administration Client.

    The Node Hosts & Nodes (logical view) screen appears.

  2. In the Mediation Hosts table, select a host.

  3. In the Nodes on Mediation Host section, click New.

    The Create a Node dialog box appears.

  4. Select Wireless and click Next.

  5. Select Enhancement Processor (EP) and click Next.

  6. Select Record Enhancement Charging EP cartridge and click Finish.

    The New Node dialog box appears.

  7. In the Name field, enter a name for the node.

  8. From the Rule File list, use the default sample rule file.

    To edit the rule file, see "Configuring the NPL Rule File for the Record Enhancement Charging EP Node".

  9. Click the General tab and do the following:

    1. From the Debug list, select one of the following:

      To log short debug messages in the node log file, select OFF.

      To log detailed debug messages in the node log file, select ON.

    2. In the Max Log File Size field, enter the maximum size in bytes for the log file. When the log file reaches its limit, the node closes the file and opens a new file. The minimum value is 50000 and the maximum value is 2000000000.

    3. Select the Enable Statistics check box, which enables node statistics.

    4. Select the Enable bulk read/write check box, which enables the node to read or write files in bulk.

    5. In the Read Timer field, enter the number of seconds Offline Mediation Controller waits before checking for incoming records. The minimum value is 1 and the maximum value is 3600.

    6. In the NARs Per File field, enter the maximum number of NARs allowed in an output file. The minimum value is 1 and the maximum value is 10000.

    7. In the Idle Write Time field, enter the number of seconds Offline Mediation Controller waits before transferring the NAR output file to the output directory of the processing node, whether or not it has reached its maximum size. The minimum value is 1 and the maximum value is 3600.

    8. Select the Backup NAR Files check box, which enables the node to back up each processed NAR file.

    9. In the NAR File Retention Period field, enter the number of days to retain the backup NAR files.

    10. Select the Input Stream Monitoring check box, which enables the node to monitor the input stream of records and trigger an alarm when no records are received for the set interval.

    11. In the Interval field, enter the duration of time that the node waits for the input stream of records before triggering an alarm when no records are received for the set interval. You also select the time unit: Day, Hour, or Minute.

  10. (Optional) If you want to enable file-level transactions or multi-threading, click the Advanced tab and do the following:

    1. Select the File Level Transaction check box, which enables file-level transactions.

    2. Select the Multi Threaded check box, which enables multi-threading in the node to process multiple files in parallel.

      When the Multi Threaded check box is selected, the Processing Threads field and the Enable Ordering check box are enabled.

    3. In the Processing Threads field, enter the number of processing threads you require for your thread pool. The maximum value is 20.

    4. If you require the order of the output data across all threads to be processed in the same order as the input data, select the Enable Ordering check box.

  11. Click the Destination tab and do the following:

    1. Select the Enable check box, which enables the connection between the EP node and any destination cartridge node.

    2. From the Routing list, select one of the following:

      If the Enable check box is not selected, Routing is set to None.

      To enable multicast routing between the EP node and the destination cartridge node, select Multicast.

      To enable round-robin routing between the EP node and the destination cartridge node, select Round Robin.

  12. Click Save.

Configuring the NPL Rule File for the Record Enhancement Charging EP Node

To configure the NPL rule file for record enhancement charging EP node:

  1. Log on to Offline Mediation Controller Administration Client.

    The Node Hosts & Nodes (logical view) screen appears.

  2. In the Mediation Hosts table, select the mediation host that contains the record enhancement charging EP node.

  3. In the Nodes on Mediation Host section, select the record enhancement charging EP node that you want to configure, and click Edit.

    The Node dialog box appears.

  4. From the Rule File list, select the sample rule file.

  5. Click Edit.

    The NPL Editor dialog box appears.

  6. (Optional) To normalize the social numbers, add the following Java hook and the corresponding output record configuration:

    JavaHook sn=oracle.communications.brm.nm.prc.nplhook.SocialNumberMethodHandler;
    

    For example:

    JavaHook sn=oracle.communications.brm.nm.prc.nplhook.SocialNumberMethodHandler;
    OutputRec {
        Map map;
        String sn;
        String name;
        String empty;
        String exist;
    } snOut;
    String str;
    str="0014085555556";
    snOut.exist=sn.VALUE(sn.exists(str));
    snOut.map=sn.get(str);
    snOut.sn=sn.getMapField(snOut.map, "socialnumber");
    snOut.name=sn.getMapField(snOut.map, "name");
    if (sn.isEmpty(snOut.map)==sn.TRUE()) {
    snOut.empty="get "+str+" map is empty";
    } else {
    snOut.empty="get "+str+" map is NOT empty";
    }
    write(snOut);
    
  7. (Optional) To normalize the call destination numbers or prefix descriptions, add the following Java hook and the corresponding output record configuration:

    JavaHook pd=oracle.communications.brm.nm.prc.nplhook.PrefixDescriptionMethodHandler;
    

    For example:

    JavaHook pd=oracle.communications.brm.nm.prc.nplhook.PrefixDescriptionMethodHandler;
    OutputRec {
        Map map;
        String areacode;
        String type;
        String name;
        String empty;
        String exist;
    } pdOut;
    String str;
    str="00004570";
    pdOut.exist=pd.VALUE(pd.exists(str));
    pdOut.map=pd.search(str);
    pdOut.areacode=pd.getMapField(pdOut.map, "areacode");
    pdOut.type=pd.getMapField(pdOut.map, "type");
    pdOut.name=pd.getMapField(pdOut.map, "name");
    if (pd.isEmpty(pdOut.map)==pd.TRUE()) {
    pdOut.empty="serach "+str+" map is empty";
    } else {
    pdOut.empty="search "+str+" map is NOT empty";
    }
    write(pdOut);
    
  8. (Optional) To normalize the service code maps, add the following Java hook and the corresponding output record configuration:

    JavaHook scm=oracle.communications.brm.nm.prc.nplhook.ServiceCodeMapMethodHandler;
    

    For example:

    JavaHook scm=oracle.communications.brm.nm.prc.nplhook.ServiceCodeMapMethodHandler;
    OutputRec {
        Map map;
        String mapGroup;
        String rank;
        String extServicecode;
        String usageclass;
        String locarindVasevent;
        String qosRequested;
        String qosUsed;
        String recordtype;
        String intServicecode;
        String intServiceclass;
        String empty;
        String exist;
    } scmOut;
    String str;
    String str2;
    String str3;
    str="ALL_RATE";
    str2="TELEPHONY";
    str3="MBI";
    scmOut.exist=scm.VALUE(scm.exists(str));
    scmOut.map=scm.search(str, str2, str3, "", "", "", "");
    scmOut.mapGroup=scm.getMapField(scmOut.map, "MAP_GROUP");
    scmOut.rank=scm.getMapField(scmOut.map, "RANK");
    scmOut.extServicecode=scm.getMapField(scmOut.map, "EXT_SERVICECODE");
    scmOut.usageclass=scm.getMapField(scmOut.map, "USAGECLASS");
    scmOut.locarindVasevent=scm.getMapField(scmOut.map, "LOCARIND_VASEVENT");
    scmOut.qosRequested=scm.getMapField(scmOut.map, "QOS_REQUESTED");
    scmOut.qosUsed=scm.getMapField(scmOut.map, "QOS_USED");
    scmOut.recordtype=scm.getMapField(scmOut.map, "RECORDTYPE");
    scmOut.intServicecode=scm.getMapField(scmOut.map, "INT_SERVICECODE");
    scmOut.intServiceclass=scm.getMapField(scmOut.map, "INT_SERVICECLASS");
    if (scm.isEmpty(scmOut.map)==scm.TRUE()) {
    scmOut.empty="search "+str+","+str2+","+str3+" map is empty";
    } else {
    scmOut.empty="search "+str+","+str2+","+str3+" map is NOT empty";
    }
    write(scmOut);
    
  9. (Optional) To normalize the usage class maps, add the following Java hook and the corresponding output record configuration:

    JavaHook ucm=oracle.communications.brm.nm.prc.nplhook.UsageClassMapMethodHandler;
    

    For example:

    JavaHook ucm=oracle.communications.brm.nm.prc.nplhook.UsageClassMapMethodHandler;
    OutputRec {
        Map map;
        String mapGroup;
        String rank;
        String extUsageclass;
        String usagetype;
        String zoneWs;
        String tariffclass;
        String tariffsubclass;
        String recordtype;
        String connecttype;
        String connectsubtype;
        String apnAddress;
        String ssPacket;
        String transitAreacode;
        String name;
        String intUsageclass;
        String empty;
        String exist;
    } ucmOut;
    String str;
    String str2;
    str="ALL_RATE";
    str2="mBI";
    ucmOut.exist=ucm.VALUE(ucm.exists(str));
    ucmOut.map=ucm.search(str, str2, "", "", "", "", "", "", "", "", "");
    ucmOut.mapGroup=ucm.getMapField(ucmOut.map, "MAP_GROUP");
    ucmOut.rank=ucm.getMapField(ucmOut.map, "RANK");
    ucmOut.extUsageclass=ucm.getMapField(ucmOut.map, "EXT_USAGECLASS");
    ucmOut.usagetype=ucm.getMapField(ucmOut.map, "USAGETYPE");
    ucmOut.zoneWs=ucm.getMapField(ucmOut.map, "ZONE_WS");
    ucmOut.tariffclass=ucm.getMapField(ucmOut.map, "TARIFFCLASS");
    ucmOut.tariffsubclass=ucm.getMapField(ucmOut.map, "TARIFFSUBCLASS");
    ucmOut.recordtype=ucm.getMapField(ucmOut.map, "RECORDTYPE");
    ucmOut.connecttype=ucm.getMapField(ucmOut.map, "CONNECTTYPE");
    ucmOut.connectsubtype=ucm.getMapField(ucmOut.map, "CONNECTSUBTYPE");
    ucmOut.apnAddress=ucm.getMapField(ucmOut.map, "APN_ADDRESS");
    ucmOut.ssPacket=ucm.getMapField(ucmOut.map, "SS_PACKET");
    ucmOut.transitAreacode=ucm.getMapField(ucmOut.map, "TRANSIT_AREACODE");
    ucmOut.name=ucm.getMapField(ucmOut.map, "NAME");
    ucmOut.intUsageclass=ucm.getMapField(ucmOut.map, "INT_USAGECLASS");
    if (ucm.isEmpty(ucmOut.map)==ucm.TRUE()) {
    ucmOut.empty="search "+str+","+str2+" map is empty";
    } else {
    ucmOut.empty="search "+str+","+str2+" map is NOT empty";
    }
    write(ucmOut);
    
  10. (Optional) To normalize the access point name (APN) maps, add the following Java hook and the corresponding output record configuration:

    JavaHook apnm=oracle.communications.brm.nm.prc.nplhook.AccessPointNameMapMethodHandler;
    

    For example:

    JavaHook apnm=oracle.communications.brm.nm.prc.nplhook.AccessPointNameMapMethodHandler;
    OutputRec {
        Map map;
        String apnGroup;
        String rank;
        String servicecode;
        String accesspointname;
        String pdpAddress;
        String empty;
        String exist;
    } apnmOut;
    str="MY_TEST";
    str2="GPR";
    str3="oracle.de";
    apnmOut.exist=apnm.VALUE(apnm.exists(str));
    apnmOut.map=apnm.search(str, str2, str3);
    apnmOut.apnGroup=apnm.getMapField(apnmOut.map, "APN_GROUP");
    apnmOut.rank=apnm.getMapField(apnmOut.map, "RANK");
    apnmOut.servicecode=apnm.getMapField(apnmOut.map, "SERVICECODE");
    apnmOut.accesspointname=apnm.getMapField(apnmOut.map, "ACCESSPOINTNAME");
    apnmOut.pdpAddress=apnm.getMapField(apnmOut.map, "PDP_ADDRESS");
    if (apnm.isEmpty(apnmOut.map)==apnm.TRUE()) {
    apnmOut.empty="search "+str+","+str2+","+str3+" map is empty";
    } else {
    apnmOut.empty="search "+str+","+str2+","+str3+" map is NOT empty";
    }
    write(apnmOut);
    
  11. Compile and save the file.

  12. Close the NPL Editor dialog box.

  13. Click Save.

    The configuration is saved.