32 Adding a New IMT or PDC Service

This chapter provides information on how to extend the base IMT and PDC services that are provided by Oracle Communications Billing and Revenue Management (BRM) IMT Manager.

Before reading this section, read the following sections to understand the IMT Manager and install it:

About Extending IMT and PDC Services

IMT Manager provides you with the base /service classes to rate and manage services that are provisioned on PDC and IMT networks. Before you can use IMT Manager, you must extend the base service and create groups of services that you offer to your customers, such as telephony, data, fax, and Web browsing, for example, /service/telco/IMT/voice.

You can offer multiple types of IMT and PDC services within each service group. For example, you can create a service/telco/IMT/voice class for normal voice service and emergency-only voice service.

Extending the IMT and PDC Services

To add a new service to the base IMT and PDC services:

  1. Create a subclass of the IMT and PDC /service class by using Developer Center. For example, /service/telco/IMT/voice.

    See "Adding Support for a New Service" in BRM Developer's Guide.

  2. Customize the fm_subscription_pol_provisioning.c file in the BRM_Home/source/sys/fm_subscription_pol directory to implement the functions that process the service data.

    See "Customizing the Policy FM for a New IMT or PDC Service".

  3. Modify the Rated Event (RE) Loader control files and then configure them.

    See "Creating Control Files for a New IMT or PDC Service".

  4. Edit the pin_telco_tags_pdc_imt file to configure services, supplementary services, and ERAs, and then load the file into the BRM database.

    See "Configuring IMT and PDC Services and Extended Rating Attributes".

  5. Edit the pin_event_map file to map services to event types for each new service.

    See "Mapping Event Types to Services".

  6. To specify bill items specific to your IMT services, edit and load the config_items_tags_imt and config_items_types_imt files.

    See "Configuring Bill Items".

  7. To specify bill items specific to your PDC services, edit and load the config_items_tags_pdc and config_items_types_pdc files.

    See "Configuring Bill Items".

  8. Add entries to the ifw_service and ifw_ref_map files to configure the pipeline for the new service and event types.

    See "Configuring the Pipeline for Services and Event Types".

  9. For each service, customize the following opcodes to implement your business policy:




  10. Create rate plans for your new services.

    See "Setting Up the IMT and PDC Price Lists".

Customizing the Policy FM for a New IMT or PDC Service

To customize the policy FM for a new service:

  1. Open the fm_subscriptions_pol_provisioning.c file in the BRM_Home/source/sys/fm_subscription_pol directory.

  2. Define the macros for the configuration, service, and service profile objects.

    For example, to add a new IMT voice service, add these definitions:

    #define TELCO_PDC_VOICE_CONFIG            "/config/telco/imt/voice"
    #define TELCO_PDC_VOICE_SERVICE           "/service/telco/imt/voice"
    #define TELCO_PDC_VOICE_SERVICE_PROFILE   "/service/telco/imt/voice"
  3. Implement the function for collecting provisioning tags.

    For example, to add a new IMT voice service, add this code:

    static void tag_fn_imt_voice_tcf(pcm_context_t *ctxp, poid_t   *svc_obj_p,pin_flist_t *r_flp, int32 *eidp, pin_errbuf_t *ebufp)
       tag_fn_telco(ctxp, svc_obj_p, r_flp, eidp, ebufp, 
       PIN_ERR_LOG_FLIST(PIN_ERR_LEVEL_DEBUG,"tag_fn_pdc_voice_tcf return flist",r_flp);
  4. Implement the function to validate the service tag.

    For example, to add a new IMT voice service, add this code:

    static int32 valid_tag_imt_voice_tcf(pcm_context_t *ctxp,
                          poid_t *svc_obj_p, char *tag)
      return (int32)valid_tag_tcf_telco(ctxp, svc_obj_p, tag, TELCO_IMT_VOICE_CONFIG);
  5. Add a new entry for the service in the service_info table.

    For example, to add a new IMT voice service, add this structure:

    static struct service_info
             char  *service;
             void  (*plp_func)(pcm_context_t *, poid_t *, int32, char pin_errbuf_t *);
             void  (*tag_func)(pcm_context_t *, poid_t *, pin_flist_t *,int32 *, pin_errbuf_t *);
               int32 (*valid_func)(pcm_context_t *, poid_t *, char *);
            service_info[] = 
              TELCO_IMT_VOICE_SERVICE, plp_imt_tcf, tag_fn_imt_voice_tcf, 
  6. Save, close, and compile the file.

Creating Control Files for a New IMT or PDC Service

The control files represent the extended event structure table of each event type. For each new service you create, you need to provide a control file. RE Loader uses the control file to map and load the extended event structure table.

For more information about RE Loader, see "Configuring Rated Event Loader" in BRM Configuring Pipeline Rating and Discounting.

IMT Manager includes the following control files for the base IMT and PDC services:

  • event_session_imt.ctl

  • event_session_pdc.ctl

When you add new services, you must create a control file for each service and add the required column in the files for the service.


The examples show a new IMT voice service. All the values and strings are only examples and must be replaced with values for your services.

To load the extended event structure into the BRM database:

  1. Open the Infranet.Properties file in the BRM_Home/apps/pin_rel/Service_name directory and add the newly created table name.

    For example:

    infranet.rel.storable_class.event_session_telco_imt.table.5.name = event_session_telco_imt_voice_t
  2. In the BRM_Home/apps/pin_rel/Service_name directory, create a control file for each new service, for example, event_session_imt_voice_t.ctl.


    You can copy the event_session_imt.ctl file to the same directory and make the changes by following the instructions in the file.
  3. Edit the pin_rel_preprocessor_cdr.pl file in the BRM_Home/apps/pin_rel/Service_name directory:

    1. Add an entry for each new service under the section for constants required for CDR files. For example, for a new voice service, enter:

      $voiceRec ="650";
    2. Add an entry for the new service under the section for construct output file names. For example:

      elsif ($table[$i] =~ /^event_session_tlco_pdc_voice_t$/i)
        $outFile8 = $outFile;
        print "Output file 8 : $outFile8\n" if $debug;
    3. Add an entry for opening remittance under section for opening the input file:

      if (defined $outFile8) 
         open(OUT8_FILE, ">$outFile8") || exit_err ($CANT_   OPEN  FILE, $outFile8, $!);
    4. Modify the code:

      elsif(($line =~ m/^$gprsRec/o) || ($line =~ m/^$gsmRec/o) || ($line =~ m/^$voiceRec/o)) 
        if( $foundRecForFile2 == 1) {
        $foundRecForFile2 = 0;
        print OUT5_FILE "$line$deli\n";
        print OUT7_FILE "$line$deli\n";
        # Appending the event poid to the cp details record for   # REL loading
        printf(OUT8_FILE "$line$deli$high%07u\n",$i);
    5. Add code for closing the file at the end of file.

      if (defined $OUT8_FILE) {
    6. Save and close the file.

Mapping Event Types to Services

To specify which events to rate and to map the event types to services, you define the mapping and load it into the /config/event_map object in the BRM database.

  1. Open the pin_event_map file in the BRM_Home/sys/data/config directory.

    This file includes entries for the base services and instructions for adding new entries.

  2. Add entries for the new service and the events to rate for the service.

  3. Save and close the file.

  4. Run the load_event_map utility by using this command:

    load_event_map pin_event_map


    The load_event_map utility overwrites the entire event map. If you are updating the event map, you cannot load new mappings only. You must load the entire event map each time you run the load_event_map utility.

For more information, see "load_event_map" in BRM Setting Up Pricing and Rating.

Configuring Bill Items

To provide service-specific bill items on your invoices for your IMT and PDC services:

  1. Create a config_items_tag_service_name.xml and a config_items_type_service_name.xml file with data relevant to the service. For example, config_item_tags_pdc.xml and config_item_types_pdc.xml.

    Use the config_item_tags.xml and config_item_types.xml files in the BRM_Home/sys/data/pricing/example directory as examples.

    For more information, see "Creating Custom Bill Items" and "Assigning Items Tags Based on Event Attributes" in BRM Configuring and Running Billing.

  2. Load the files you created into the /config/item_tags and /config/item_types objects in the BRM database:

load_config_item_tags [config_item_tag_service_name] 
load_config_item_types [config_item_type_service_name]

For more information, see "load_config_item_tags" and "load_config_item_types" in BRM Configuring and Running Billing.

Configuring the Pipeline for Services and Event Types

To enable the pipeline to process EDRs, you need to map external service codes to internal service codes, /service classes, usage classes, and usage types. IMT Manager includes sample database configuration files for mapping the base IMT and PDC services. When you add new services, you need to create service mappings by using Pricing Center.

For more information, see the following topics in the BRM documentation:

  • About mapping services

  • Mapping service codes and /service classes

  • Mapping events and services

Setting Up the IMT and PDC Price Lists

Use Pricing Center to set up rate plans for your IMT and PDC services. Use the sample GSM price list as an example when creating price lists for your services.

See "Setting Up GSM Wireless Pricing".

Instead of using Pricing Center to create and load your price lists, you can also use the XML pricing interface to create the price lists and use the loadpricelist utility to load the price list into the database. For more information, see "loadpricelist" and "Using the XML Pricing Interface to Create a Price List" in BRM Setting Up Pricing and Rating.

End-to-End Testing Your IMT Manager Implementation

When you have installed all of the required components and have made sure that each is installed correctly and functioning, you can perform an end-to-end test of the entire wireless implementation.

  1. Load your price lists into BRM.

  2. Load the pricing data in the pipeline.

    See "Setting Up Pipeline Price List Data" in BRM Setting Up Pricing and Rating and "Installing Pipeline Manager" in BRM Installation Guide.

  3. Create an account and rate a usage event for that account

  4. To rate a usage event, create a sample CDR file that uses the test account's phone number as the originating number.


    In your sample CDR, the event dates must be later than the account creation dates.

By creating an account, you ensure the following:

  • Services and ERA provisioning tags have been configured.

  • The price list has been loaded.

  • The Account Synchronization Data Manager and the Pipeline Listener can update the pipeline with a new account.

By rating a usage event, you ensure the following:

  • The pipeline is configured correctly.

  • The pipeline can get data from the BRM database.

  • RE Loader is configured correctly.