20 Working with Provisioning Tags

This chapter describes how to implement Oracle Communications Billing and Revenue Management (BRM) provisioning tags if you are using Pricing Center.

Topics in this document:

About Provisioning Tags

Provisioning tags implement extended rating attributes (ERAs) or other user-defined attributes that can enable rating or discounting to vary for a service. For telco services, you can also use provisioning tags to provision supplementary services and service extensions.

An offer profile and the provisioning tag for the associated product or discount use the same name and that name must be unique. If you create an offer profile to associate with an existing product or discount, use the provisioning tag to name the offer profile. If you configure a new product or discount around an existing offer profile, use the appropriate offer profile name as the provisioning tag for the product or discount.

You can use one of the following methods to define provisioning tags, depending on what the tag is for:

  • Provisioning tag framework: You create provisioning tags by defining them in an XML file that is loaded into a configuration object in BRM. You can create provisioning tags for any service or for an account.

    You also might need to add the tag to the provisioning policy source file and compile the file.

    See "Using the Provisioning Tag Framework".

    Note:

    • For telco services, use Services Framework Manager to define provisioning tags in most cases. You must use Services Framework Manager if the provisioning tag creates supplementary services or service extensions. See "About Provisioning Tags for Telco Services " in BRM Provisioning Services.

    • For non-telco services, the provisioning tag framework is the recommended method of creating provisioning tags.

  • Provisioning Tags application in Pricing Center: For telco services only, you can create service-level provisioning tags with this application. You can include service-level ERAs, supplementary services, and service extensions in the tags.

    Note:

    You can create provisioning tags that include existing ERAs only.

  • Telco tag text file: For telco services only, you can create service-level provisioning tags by defining them in a text file and then loading the file into BRM. You can include supplementary services and ERAs in the tags.

    You can also create account-level ERAs in this same file.

    See "Defining Provisioning Tags for Telco Services by Using the pin_telco_tags File " in BRM Provisioning Services.

  • Provisioning policy source file: You can define product provisioning tags by editing and compiling the policy file that is the source file for all provisioning operations.

    Note:

    The provisioning tag framework is the preferable method for creating provisioning tags.

    See "Using a Policy Source File to Set Up Provisioning".

Defining Provisioning Tags for Telco Services by Using the pin_telco_tags file

This section describes defining provisioning tags through the pin_telco_tags file for a specific telco service. For example, you use pin_telco_tags_gsm for GSM provisioning tags.

You can include service-level ERAs, supplementary services, and service extensions in a provisioning tag defined in a pin_telco_tags file.

You can use the Provisioning Tags application in Pricing Center instead of the pin_telco_tags file to define provisioning tags for telco services. But you cannot create custom ERAs using Provisioning Tags. For information, see Provisioning Tags Help.

To define provisioning tags using the pin_telco_tags file:

You can also define account-level ERAs in the pin_telco_tags file. See "Defining Account-Level ERAs in the pin_telco_tags File".

Configuring Provisioning Tags in the pin_telco_tags File

To configure a provisioning tag in the pin_telco_tags file:

  1. Open the pin_telco_tags_service file. For example, use pin_telco_tags_gsm for GSM services.

    The default pin_telco_tags files are in BRM_Home/sys/data/config. They include examples and instructions.

  2. Use this syntax to add a provisioning tag:

provisioning_tag  "Class" "ProvTag" "PTDescription" "DelayedProvReqd"
service_extn      "Extension Type Name" "Extension Value" 
features          "One Or More Feature Name String Values" 
service_era       "ServiceERA" "StringIdERA" "StringIdServiceERADesc" "ProvBool" "ERALabel"

Enter each value in quotation marks.

A provisioning tag can be any combination of service extensions, features, and service-level ERAs. You do not need to include all three types of data in a tag.

Table 20-1 describes the provisioning tag syntax:

Table 20-1 Provisioning Tag Syntax

Tag Element Value Description

provisioning_tag

Class

The object that stores the tag. For example:

"/config/telco/gsm/telephony"

provisioning_tag

ProvTag

The name of the provisioning tag. For example:

"DataPremium"

provisioning_tag

PTDescription

The description of the provisioning tag. For example:

"Premium Data Service"

provisioning_tag

DelayedProvReqd

Whether the tag is unprovisioned when the product containing the tag is canceled. The possible values are:

  • "y" specifies that cancellation triggers unprovisioning. In most cases, use this setting.

  • "n" specifies that cancellation does not trigger unprovisioning.

    Use this setting to leave a customer's service configuration unchanged. For example, you might want to leave a voice mailbox intact.

service_extn

Extension Type Name

The type of service extension. For example:

"BEARER_SERVICE"

service_extn

Extension Value

The code for a GSM bearer service or other service extension. For example:

"B46"

Codes are defined in the GSM specification. You must use the exact code that the network requires.

features

One or More Feature Name String Values

The GSM supplementary services that are provisioned when this product is purchased. The services are entered as codes, in one line. For example:

"CLIP" "CW"

These codes are defined in the GSM specification. You must use the exact code that the network requires.

service_era

ServiceERA

The service ERA code. For example:

"FRIENDS_FAMILY"

service_era

StringIdERA

StringIdServiceERADesc

The IDs for the ERA name and description. For example:

"12"  "13"

You define a localized name and description for these IDs in the era_descr.localefile. These names and descriptions appear in Customer Center.

service_era

ProvBool

Whether or not provisioning is required. The possible values are:

  • "y" specifies that provisioning is required.

  • "n" specifies that provisioning is not required.

service_era

ERALabel

The name of a list within the ERA. An ERA can have one or more lists. For example:

"MYFRIENDS"

Note: You cannot localize the ERA label. You cannot have duplicate label names associated with the same ERA code.

This example shows a provisioning tag for a telephony product that includes a bearer service, call waiting and voice mailbox supplementary services, and friends and family service-level ERAs:

# Standard Telephony Package 
provisioning_tag  "/config/telco/gsm/telephony"  "Voice Standard" "Voice Standard Service package with Called ID, Call Waiting, Voice mail and Friends and Family" "y"
service_extn      "BEARER_SERVICE" "T11"
features          "CLIP" "CW" "VMBOX" 
service_era       "FRIENDS_FAMILY" 12 13 "n" "MYFRIENDS"
service_era       "FRIENDS_FAMILY" 12 13 "n" "MYFAMILY"
Loading the pin_telco_tags File

Run the load_pin_telco_tags utility to load the contents of the pin_telco_tags_service file: for example, the pin_telco_tags_gsm file: into the BRM database. This utility creates or updates /config/telco/service and /config/account_era objects.

Note:

By default, the load_pin_telco_tags utility appends telco provisioning tags and account-level ERAs to the BRM database. But if you use the -x parameter, this utility overwrites existing telco provisioning tags and account-level ERAs. Do not use the -x parameter unless you are certain you want to overwrite existing objects.

Note:

The load_pin_telco_tags utility requires a configuration file. See "Connecting BRM Utilities" in BRM System Administrator's Guide.

Note:

You cannot create ERAs for individual brands. All ERAs can be used by any brand.

  1. Edit the pin_telco_tags_service file to add the custom account-level ERAs. The default pin_telco_tags_gsm file in BRM_Home/sys/data/config includes examples and instructions.

  2. Save the pin_telco_tags_service file.

  3. Use the following command to run the load_pin_telco_tags utility:

    load_pin_telco_tags pin_telco_tags_service 
    
  4. Restart the Connection Manager (CM).

  5. Restart Pricing Center.

To verify that the account ERAs were loaded, you can display the /config objects by using the Object Browser or use the robj command with the testnap utility.

Defining Account-Level ERAs in the pin_telco_tags File

Account-level ERAs apply to any activity in an account no matter which service is involved.

You define account-level ERAs in any pin_telco_tags_service file. You can use the define account-level ERAs in the same file you used for telco provisioning tags.

Note:

You cannot use the Provisioning Tags application for account-level ERAs.

To define an account-level ERA:

  1. Open a pin_telco_tags_service file. You can define an account-level ERA in any pin_telco_tags file, because they are not associated with a particular service.

    The default pin_telco_tags files are in BRM_Home/sys/data/config. They include examples and instructions.

    Account-level ERAs are added in a block at the end of the file.

  2. Use this syntax to add an account-level ERA:

    account_era  "AccountERA" "StringIdERA" "StringIdAccountERADesc" 
    

Table 20-2 describes the account ERA syntax:

Table 20-2 Account ERA Syntax

Value Description

AccountERA

The account ERA code. For example:

"SPECIAL_DAY"

StringIdERA

StringIdAccountERADesc

The IDs for the ERA name and description. For example:

"2"  "3"

You define a localized name and description for these IDs in the era_descr.localefile. These names and descriptions appear in Customer Center. See "Localizing and Customizing Strings" in BRM Developer's Guide for information about updating this file.

For example:

account_era "SPECIAL_DAY" "2" "3"

Deciding Which Provisioning Tag Method to Use

For telco services, you should create provisioning tags by using one of these methods. The order of preference is shown below.

  1. Provisioning tag framework. See "Using the Provisioning Tag Framework".

  2. Provisioning Tags application in Pricing Center.

  3. Telco tag text file.

  4. Provisioning policy source file. See "Using a Policy Source File to Set Up Provisioning".

For non-telco services, you should create provisioning tags by using one of these methods. The order of preference is shown below:

  1. Provisioning tag framework. See "Using the Provisioning Tag Framework".

  2. Provisioning policy source file. See "Using a Policy Source File to Set Up Provisioning".

Using the Provisioning Tag Framework

You can create service-level or account-level provisioning tags using the provisioning tag framework. This framework stores provisioning tags in the /config/provisioning_tag object.

Note:

To create most provisioning tags for telco services, use the Provisioning Tags application in Pricing Center or the load_pin_telco_tags utility.

You define a provisioning tag by specifying the services to which it applies and the opcodes to run when the product or discount containing the tag is purchased or canceled. You might need to create custom opcodes for some provisioning tags.

To create a provisioning tag using this framework, do the following:

Configuring Provisioning Tags

To create provisioning tags, you configure the provisioning tags configuration file, pin_config_provisioning_tags.xml. This file is located in the BRM_Home/sys/data/config directory.

To define a provisioning tag in this configuration file, you specify the following:

  • A unique name for the provisioning tag.

    Note:

    The provisioning tag for a product or discount must be the name of the offer profile with which the product or discount is associated.

  • For a service-level tag, the permitted services.

  • For an account-level tag, /account.

  • The name and number of each opcode to run when the product or discount containing the provisioning tag is purchased or canceled. These opcodes contain the business logic to perform the actual provisioning, such as creating a profile.

  • Parameters that specify the fields to be added to each opcode's input flist and the value for each field.

    Note:

    • Do not remove existing provisioning tags from pin_config_provisioning_tags.xml when adding new tags unless you want existing tags removed from the /config/provisioning_tag objects in the database.

    • When you load pin_config_provisioning_tags.xml, all existing instances of /config/provisioning_tag are removed from the database, so only the provisioning tags defined in the file when you load it will be in the database.

Table 20-3 lists the elements in the pin_config_provisioning_tags.xml file, the syntax to use for each element, and a description of how to specify each element. The syntax is based on the default version of the file:

Table 20-3 Elements in pin_config_provisioning_tags XML File

Element Syntax Description

BusinessConfiguration

<BusinessConfiguration 
    xmlns="http://www.portal.com/
schemas/BusinessConfig"
    xmlns:xsi="http://www.w3.org/
2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.portal.com/schemas/
BusinessConfig business_configuration.xsd">

The root element common to all BRM configurations.

ProvisioningTag

Configuration

<ProvisioningTagConfiguration> 

Opens the provisioning tag configuration. Contains the ProvisioningTagList element.

ProvisioningTagList

<ProvisioningTagList> 

Contains all the provisioning tag definitions.

ProvisioningTag

<ProvisioningTag name=
"__DEFAULT__"> 

Contains the definition of a provisioning tag and specifies the tag's name.

PermittedTypes

<PermittedTypes>/service/ip
</PermittedTypes> 

Specifies a service or account that is valid for the provisioning tag. One or more of these tags can be part of a provisioning tag definition.

When the API for getting a list of provisioning tags is called, the array of permitted types is looked up and only provisioning tags applicable to the specific service type are returned.

OpcodeList

<OpcodeList> 

Contains the definition of one opcode.

The opcodes specified for a provisioning tag contain the business logic required for provisioning when purchasing and canceling a product. A provisioning tag can include multiple opcodes.

OpcodeName

<OpcodeName>
PCM_OP_SUBSCRIPTION_POL_PURCHASE_PROD_PROVISIONING
</OpcodeName> 

Specifies the opcode's name. See "Specifying an Opcode in a Provisioning Tag to Create an ERA".

OpcodeNumber

<OpcodeNumber>417
</OpcodeNumber> 

Specifies the hard-coded number for an opcode. To find an opcode's number, see the opcode header files in the BRM_Home/include/ops directory.

OpcodeMode

<OpcodeMode>0</OpcodeMode> 

Indicates when the opcode should be called, as follows:

  • 0: on product or discount purchase

  • 1: on product or discount cancellation

  • 2: on both purchase and cancellation

OpcodeParamsList

<OpcodeParamsList> 

Defines a parameter for an opcode. You can have multiple parameters. Each parameter is a name-value pair.

OpcodeParamName

<OpcodeParamName>PIN_FLD_POID
</OpcodeParamName> 

Specifies a field name to be added to the input flist.

If the field is part of a substruct or array, use a period to separate the substruct or array name and the field name. For example:

PIN_FLD_EVENT.PIN_FLD_ACCOUNT_OBJ 

OpcodeParamValue

<OpcodeParamValue>$SERVICE$
</OpcodeParamValue> 

Specifies the value of the field.

For certain values that are not known until run time, you can use a variable, such as $SERVICE$. See "Variables for Parameter Values".

For an example of the XML syntax, see "Sample Provisioning Tag XML File".

Specifying an Opcode in a Provisioning Tag to Create an ERA

When defining a configuration for the provisioning tag framework, you specify one or more opcodes to perform an action, such as creating an ERA. You can specify that an opcode run when a product or discount is purchased, canceled, or both. You can use an existing opcode or design a custom opcode.

If the provisioning tag is designed to create an ERA, you can specify that the PCM_OP_SUBSCRIPTION_PROVISION_ERA opcode run at both purchase and cancellation time. This opcode creates, modifies, or deletes a profile (/profile object). ERAs are stored in profiles.

The actions PCM_OP_SUBSCRIPTION_PROVISION_ERA takes depends on the value specified for the PIN_FLD_ACTION parameter in the provisioning tag:

  • If PIN_FLD_ACTION is Purchase, the opcode checks if a profile already exists. If the profile does not exist, the opcode calls PCM_OP_CUST_CREATE_PROFILE to create the profile. If the profile does exist, the opcode calls PCM_OP_CUST_MODIFY_PROFILE to add data passed in from the input flist and to increment the reference counter by 1.

  • If PIN_FLD_ACTION is Cancel, the opcode decrements the reference counter by 1. If the counter is 0, the opcode calls PCM_OP_CUST_DELETE_PROFILE to delete the profile.

For example, you can create a friends and family ERA for a service by calling the PCM_OP_SUBSCRIPTION_PROVISION_ERA at purchase time with the parameters in Table 20-4:

Table 20-4 PCM_OP_SUBSCRIPTION_PROVISION_ERA Parameters

OpcodeParamName OpcodeParamValue

PIN_FLD_POID

0.0.0.0 /profile/serv_extrating -1

PIN_FLD_ACCOUNT_OBJ

$ACCOUNT$

PIN_FLD_FLAGS

0

PIN_FLD_SERVICE_OBJ

$SERVICE$

PIN_FLD_STR_VAL

12, 13

PIN_FLD_NAME

FRIENDS_FAMILY

PIN_FLD_INHERITED_INFO.

PIN_FLD_EXTRATING.

PIN_FLD_LABEL

MYFRIENDS

These name-value pairs indicate that an ERA named FRIENDS_FAMILY and an ERA label named MYFRIENDS are created. Because both the account and service POIDs are specified, the opcode creates a service-level profile (/profile/serv_extrating) object. If the service POID was not specified, the opcode would create an account-level profile (/profile/acct_extrating) object.

Note:

  • PIN_FLD_POID is the POID, in string format, of the object the provisioning tag will create. This is converted to a POID when the opcode runs. If you are using multiple database schemas, the string is converted to the correct schema database number.

  • For a service-level profile, the POID type is /profile/serv_extrating, as in the previous example. For an account-level profile, the POID type is /profile/acct_extrating.

  • PIN_FLD_FLAGS specifies that PCM_OP_SUBSCRIPTION_PROVISION_ERA is called at purchase time.

You must include the opcode twice in a provisioning tag, once with PIN_FLD_FLAGS set to 0 and once with PIN_FLD_FLAGS set to 1, so that it runs both at purchase and cancellation time.

  • PIN_FLD_STR_VAL specifies that the profile name and profile description are localized and are stored in the /string object under string IDs 12 and 13.

  • PIN_FLD_ACCOUNT_OBJ and PIN_FLD_SERVICE_OBJ use variables. See "Variables for Parameter Values".

Variables for Parameter Values

You can use the following variables in Table 20-5 to specify certain values available only at the time the opcode is run:

Table 20-5 Run-Time Variables for Parameters

Variable Description

$ACCOUNT$

Account POID

$SERVICE$

Service POID

$PRODUCT$

Product POID

$DISCOUNT$

Discount POID

$OFFERING$

POID of the purchased product or discount

$PROVTAG$

Provisioning tag

Default Provisioning Tag

The default /config/provisioning_tag object contains the __DEFAULT__ provisioning tag. This tag is defined in the default pin_config_provisioning_tags.xml file. The tag calls the following opcodes:

  • PCM_OP_SUBSCRIPTION_POL_PURCHASE_PROD_PROVISIONING, on product purchase.

  • PCM_OP_SUBSCRIPTION_POL_CANCEL_PROD_PROVISIONING, on product cancellation.

If you have customized these opcodes, they set and clear fields in /service objects when a product is purchased and canceled. If you have not customized these opcodes, you do not need to use them. You can specify other opcodes in the provisioning tags file to perform necessary actions.

The __DEFAULT__ provisioning tag is always called for specified services when a product is purchased or canceled, so you do not need to include these opcodes in any other provisioning tags you define. See the default pin_config_provisioning_tags.xml file for the list of services.

Using Custom Opcodes

You can create custom opcodes to perform actions not supported by existing opcodes and specify the custom opcodes in the provisioning tags configuration file. For example, you can write an opcode to add fields to a /service object.

Configuring Provisioning Tags for Policy-Driven Charging

Configure the resources that BRM should track by creating provisioning tags for your services. Each provisioning tag contains the types of resources valid for that tag and information on the policy attributes which are used in provisioning policy for that resource.

Policy attributes are the configured characteristics associated with a provisioning policy. They contain the information you must provide to the specific opcode which is to process changes to the product or discount associated with that provisioning tag (for example, an offer profile threshold breach notification is required and/or the language in which the subscriber requires the notification).

Note:

BRM stores policy attributes as subscriber preferences (/profile/subscriber_preferences) objects containing the following elements:

  • Name (required)

  • Type (optional)

  • Value (optional)

See "Configuring Subscriber Preferences" in BRM ECE Implementing Charging for information on storing subscriber preferences.

About the Default Provisioning Tag Provided by BRM

BRM provides a default provisioning tag in the pin_offer_profile_provisioning_tags_policy_attributes.xml file located in BRM_Home/sys/data/config directory.

The first section of the definition seen in Example 20-1 shows the valid resources for the default provisioning tag. It is followed by the information on the opcodes to be called when the product or discount containing the provisioning tag is purchased or canceled and the parameters that specify the fields to be added to the opcode's input flist and the value for each field.

Collecting Data for Provisioning Tags

Collect the following data for any additional services that BRM should track for policy-driven charging.

  • The name for your provisioning tag. This must be the name of the offer profile with which you associate this provisioning configuration.

  • Permitted types of services

  • Subscriber preferences for the service type stored in the database as /profile/subscriber_preferences objects.

    For more information see "Configuring Subscriber Preferences" in BRM ECE Implementing Charging.

  • Opcodes that are to be used in association with the provisioning tag

    You must set up the following for each of the opcodes you include in a provisioning tag:

    • The name and number of each opcode to run and when the opcode must be run. These opcodes contain the business logic to perform the actual provisioning, such as creating a profile.

    • Parameters that specify the fields to be added to each opcode's input flist and the value for each field.

This information can now be configured in the pin_offer_profile_provisioning_tags_policy_attributes.xml file for use with your offer profiles.

Configuring Provisioning Tags for Offer Profiles

To configure provisioning tags for use with your offer profiles:

  1. Go to the BRM_Home/sys/data/config directory.

  2. Open the pin_offer_profile_provisioning_tags_policy_attributes.xml file an XML editor or text editor.

    Tip:

    Save a copy of the default configuration file before you make any changes to it.

  3. Do one of the following to update this file:

    • Edit the default provisioning tag contained in this file.

    • Add your provisioning tag by placing your definition just below the default provisioning tag (Platinum). Include the following for each provisioning tag:

      • Provisioning tag name

        <ProvisioningTag name="YourProvisioningTagName">
        

        where YourProvisioningTagName is the name of your offer profile.

      • Each service that is valid for the provisioning tag as a PermittedType element as shown in Example 20-1.

      • Specifications for the opcodes to call for this provisioning tag as shown in Example 20-1.

    Tip:

    Table 20-3 lists the elements in the pin_offer_profile_provisioning_tags_policy_attributes.xml file, the syntax to use for each element, and a description of how to specify each element.

  4. Save the pin_offer_profile_provisioning_tags_policy_attributes.xml file.

Modifying Provisioning Tags

You use provision tags as the names of offer profiles associated with products and discounts. If you modify a provision tag that is in use as an offer profile, be sure to modify the corresponding offer profile name accordingly.

See "Policy-Driven Charging" for information on offer profiles.

Note:

  • Do not remove existing provisioning tags from pin_config_provisioning_tags.xml when adding new tags unless you want existing tags removed from the /config/provisioning_tag objects in the database.

  • When you load pin_config_provisioning_tags.xml, all existing instances of /config/provisioning_tag are removed from the database, so only the provisioning tags defined in the file when you load it will be in the database.

Loading Provisioning Tag Configurations

If you are loading provisioning tags for policy-driven charging, see "Loading Provisioning Tags for Policy-Driven Charging".

After you configure provisioning tags in the pin_config_provisioning_tags.xml file, load the tags into the database with the load_config_provisioning_tags utility.

Note:

The utility that loads provisioning tags into the database overwrites existing provisioning tags. When updating provisioning tags, you cannot load new provisioning tags only. You must load the complete set of provisioning tags each time you run the utility.

To load provisioning tag configurations:

  1. Go to the directory in which the pin_config_provisioning_tags.xml file is located. The default location is BRM_Home/sys/data/config.

  2. Use the following command to run the load_config_provisioning_tags utility:

    load_config_provisioning_tags pin_config_provisioning_tags.xml 

    Note:

    • When you run the utility, thepin_config_provisioning_tags.xmland business_configuration.xsd files must be in the same directory. By default, both files are in BRM_Home/sys/data/config.

    • This utility needs a configuration (pin.conf) file in the directory from which you run the utility.

    If you do not run the utility from the directory in which pin_config_provisioning_tags.xml is located, include the complete path to the file, for example:

    load_config_provisioning_tags BRM_Home/sys/data/config/pin_config_provisioning_tags.xml 
    

    For more information, see load_config_provisioning_tags.

  3. Stop and restart the Connection Manager (CM).

  4. To verify that the provisioning tags were loaded, display the /config/provisioning_tag object by using the Object Browser or the robj command with the testnap utility.

Loading Provisioning Tags for Policy-Driven Charging

Use the load_config_provisioning_tags utility to load the pin_offer_profile_provisioning_tags_policy_attributes.xml file into the BRM database.

To do so:

  1. Ensure that the provisioning tags required for policy-driven charging are configured in the pin_offer_profile_provisioning_tags_policy_attributes.xml XML file.

  2. Go to the directory in which the pin_offer_profile_provisioning_tags_policy_attributes.xml file is located. The default location is BRM_Home/sys/data/config.

  3. Commit the provisioning tags and policy attributes XML file to the BRM database.

    load_config_provisioning_tags -d -v pin_offer_profile_provisioning_tags_policy_attributes.xml
    

    where:

    • -d creates a log file for debugging purposes.

    • -v displays information about successful or failed processing as the utility runs

    For more information on the load_config_provisioning_tags utility, see "load_config_provisioning_tags" in BRM Developer's Guide.

  4. To verify that the provisioning tags were loaded, display the /config/provisioning_tag object by using the Object Browser or the robj command with the testnap utility.

  5. Stop and restart the Connection Manager (CM).

The provisioning tags and policy attributes information associated with policy-driven charging is now stored in /config/provisioning_tag objects in the database.

Modifying and Compiling the Provisioning Policy Source File

If a provisioning tag defined in the provisioning tag framework uses the PCM_OP_SUBSCRIPTION_POL_PURCHASE_PROD_PROVISIONING policy opcode, you must add the tag to the fm_subscription_pol_provisioning.c file and recompile the file.

A provisioning tag uses PCM_OP_SUBSCRIPTION_POL_PURCHASE_PROD_PROVISIONING opcode if it is included in a product and if it uses a service associated with the __DEFAULT__ provisioning tag. See "Sample Provisioning Tag XML File" for the list of permitted services for __DEFAULT__.

Modifying and compiling the provisioning policy source file enables PCM_OP_SUBSCRIPTION_POL_PURCHASE_PROD_PROVISIONING to handle the tags.

To modify the provisioning policy source file for provisioning tags created using the provisioning tag framework:

  1. Open the BRM_Home/source/sys/fm_subscription_pol/fm_subscription_pol_provisioning.c file.

  2. Add the provisioning tag name to the service_info table for the appropriate service.

    For example, to add a provisioning tag called test to /service/ip, change this code:

    static char *tags_ip[] = {
      "example",
      NULL    /* MUST BE LAST! */
    };
    

    to the following:

    static char *tags_ip[] = {
    "example",
    "test",
      NULL    /* MUST BE LAST! */
    };
    
  3. Add code in the plp function to handle the new tag. You do this in the PROVISIONING FUNCTIONS section. The functions are grouped by service type.

    For example, to add the provisioning tag test to /service/ip, change this code:

    static void
    plp_ip(pcm_context_t *ctxp, poid_t *svc_obj_p, int32 buy,
      char *tag, pin_errbuf_t *ebufp)
    {
      if (strcmp(tag, "example") == 0) {
        plp_example(ctxp, svc_obj_p, buy, tag, ebufp);
      }
      else{
        plp_ssg(ctxp, svc_obj_p, buy, tag, ebufp);
      }
    }
    

    to the following:

    static void
    plp_ip(pcm_context_t *ctxp, poid_t *svc_obj_p, int32 buy,
      char *tag, pin_errbuf_t *ebufp)
    {
      if (strcmp(tag, "example") == 0) {
        plp_example(ctxp, svc_obj_p, buy, tag, ebufp);
      }
      else if (strcmp(tag, "test") == 0) {
        /*skip*/
      }else{
        plp_ssg(ctxp, svc_obj_p, buy, tag, ebufp);
      }
    }
    
  4. Compile and save the file.

Using a Policy Source File to Set Up Provisioning

You can define provisioning tags directly in the fm_subscription_pol_provisioning.c file without using the provisioning tag framework. This file is the single source file for all provisioning operations.

Note:

The provisioning tags framework is the preferable method for creating provisioning tags.

To define provisioning tags directly in source code, follow these steps:

  1. Open the BRM_Home/source/sys/fm_subscription_pol/fm_subscription_pol_provisioning.c file.

  2. Define your provisioning tags by following the instructions in the file.

    1. In each entry in the provisioning_tags table, include the name of the service associated with the tag, the tag name, and calls to service-specific functions.

    2. Ensure that each function included in the table does the following:

      • Changes fields in the service object when customers purchase the service

      • Clears the appropriate fields when customers cancel the service

  3. Compile and save the file.

If you create a provisioning tag in the policy source file, you must modify and recompile the source file to modify or delete the tag.

Sample Provisioning Tag XML File

Following is the default provisioning tag XML file. This file defines the provisioning tag named __DEFAULT__, which includes several permitted services and two opcodes:

<?xml version="1.0" encoding="UTF-8"?>

<BusinessConfiguration 
    xmlns="http://www.portal.com/schemas/BusinessConfig"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.portal.com/schemas/BusinessConfig business_configuration.xsd">

    <ProvisioningTagConfiguration>
    <ProvisioningTagList>

        <ProvisioningTag name="__DEFAULT__">

            <PermittedTypes>/service/email</PermittedTypes>
            <PermittedTypes>/service/ip/gprs</PermittedTypes>
            <PermittedTypes>/service/content</PermittedTypes>
            <PermittedTypes>/service/vpdn</PermittedTypes>
            <PermittedTypes>/service/ip</PermittedTypes>
            <PermittedTypes>/service/ip/gprs</PermittedTypes>
            <PermittedTypes>/service/telco</PermittedTypes>
            <PermittedTypes>/service/telco/gsm</PermittedTypes>
            <PermittedTypes>/service/telco/gsm/data</PermittedTypes>
            <PermittedTypes>/service/telco/gsm/fax</PermittedTypes>
            <PermittedTypes>/service/telco/gsm/sms</PermittedTypes>
            <PermittedTypes>/service/telco/gsm/telephony</PermittedTypes>

            <OpcodeList>
                <OpcodeName>PCM_OP_SUBSCRIPTION_POL_PURCHASE_PROD_PROVISIONING</OpcodeName>
                <OpcodeNumber>417</OpcodeNumber>
                <OpcodeMode>0</OpcodeMode>

                <OpcodeParamsList>
                    <OpcodeParamName>PIN_FLD_POID</OpcodeParamName>
                    <OpcodeParamValue>$SERVICE$</OpcodeParamValue>
                </OpcodeParamsList>
                <OpcodeParamsList>
                    <OpcodeParamName>PIN_FLD_PROVISIONING_TAG</OpcodeParamName>
                    <OpcodeParamValue>$PROVTAG$</OpcodeParamValue>
                </OpcodeParamsList>
            </OpcodeList>

            <OpcodeList>
                <OpcodeName>PCM_OP_SUBSCRIPTION_POL_CANCEL_PROD_PROVISIONING</OpcodeName>
                <OpcodeNumber>418</OpcodeNumber>
                <OpcodeMode>1</OpcodeMode>

                <OpcodeParamsList>
                    <OpcodeParamName>PIN_FLD_POID</OpcodeParamName>
                    <OpcodeParamValue>$SERVICE$</OpcodeParamValue>
                </OpcodeParamsList>
                <OpcodeParamsList>
                    <OpcodeParamName>PIN_FLD_PROVISIONING_TAG</OpcodeParamName>
                    <OpcodeParamValue>$PROVTAG$</OpcodeParamValue>
                </OpcodeParamsList>
            </OpcodeList>

        </ProvisioningTag>

    </ProvisioningTagList>
    </ProvisioningTagConfiguration>

</BusinessConfiguration>

Default Provisioning Tag for Policy-Driven Charging

Example 20-1 shows the default provisioning tag provided by BRM in the pin_offer_profile_provisioning_tags_policy_attributes.xml file located in the BRM_Home/sys/data/config directory.

Example 20-1 Default Provisioning Tag Configuration

<BusinessConfiguration xsi:schemaLocation="http://www.portal.com/schemas/BusinessConfig business_configuration.xsd">
<ProvisioningTagConfiguration>
   <ProvisioningTagList>
     <ProvisioningTag name="Platinum">
        <PermittedTypes>/service/email</PermittedTypes>
        <PermittedTypes>/service/ip/gprs</PermittedTypes>
        <PermittedTypes>/service/content</PermittedTypes>
        <PermittedTypes>/service/vpdn</PermittedTypes>
        <PermittedTypes>/service/ip</PermittedTypes>
        <PermittedTypes>/service/fax</PermittedTypes>
        <PermittedTypes>/service/ip/gprs</PermittedTypes>
        <PermittedTypes>/service/telco</PermittedTypes>
        <PermittedTypes>/service/telco/gsm</PermittedTypes>
        <PermittedTypes>/service/telco/gsm/data</PermittedTypes>
        <PermittedTypes>/service/telco/gsm/fax</PermittedTypes>
        <PermittedTypes>/service/telco/gsm/sms</PermittedTypes>
        <PermittedTypes>/service/telco/gsm/sms</PermittedTypes>
        <OpcodeList>
            <OpcodeName>PCM_OP_CUST_SET_SUBSCRIBER_PREFERENCES</OpcodeName>
            <OpcodeNumber>3916</OpcodeNumber>
            <OpcodeMode>0</OpcodeMode>
            <OpcodeParamsList>
                <OpcodeParamName>PIN_FLD_POID</OpcodeParamName>
                <OpcodeParamValue>0.0.0.0 /profile/subscriber_preferences -1</OpcodeParamValue>
            </OpcodeParamsList>
            <OpcodeParamsList>
                <OpcodeParamName>PIN_FLD_DELETED_FLAG</OpcodeParamName>
                <OpcodeParamValue>0</OpcodeParamValue>
            </OpcodeParamsList>
            <OpcodeParamsList>
                <OpcodeParamName>PIN_FLD_ACCOUNT_OBJ</OpcodeParamName>
                <OpcodeParamValue>$ACCOUNT$</OpcodeParamValue>
            </OpcodeParamsList>
            <OpcodeParamsList>
                <OpcodeParamName>PIN_FLD_SERVICE_OBJ</OpcodeParamName>
                <OpcodeParamValue>$SERVICE$</OpcodeParamValue>
            </OpcodeParamsList>
            <OpcodeParamsList>
                <OpcodeParamName>PIN_FLD_NAME</OpcodeParamName>
                <OpcodeParamValue>SET_SUBSCRIBER_PREFERENCES</OpcodeParamValue>
            </OpcodeParamsList>
            <OpcodeParamsList>
                <OpcodeParamName>PIN_FLD_SUBSCRIBER_PREFERENCES[0].PIN_FLD_NAME</OpcodeParamName>
                <OpcodeParamValue>Language</OpcodeParamValue>
            </OpcodeParamsList>
            <OpcodeParamsList>
                <OpcodeParamName>PIN_FLD_SUBSCRIBER_PREFERENCES[0].PIN_FLD_
VALUE</OpcodeParamName>
                <OpcodeParamValue>English</OpcodeParamValue>
            </OpcodeParamsList>
            <OpcodeParamsList>
                <OpcodeParamName>PIN_FLD_SUBSCRIBER_PREFERENCES[0].PIN_FLD_SUBSCRIBER_PREFERENCE_
ID</OpcodeParamName>
                <OpcodeParamValue>1</OpcodeParamValue>
            </OpcodeParamsList>
            <OpcodeParamsList>
                <OpcodeParamName>PIN_FLD_SUBSCRIBER_PREFERENCES[1].PIN_FLD_
NAME</OpcodeParamName>
                <OpcodeParamValue>Channel</OpcodeParamValue>
            </OpcodeParamsList>

            <OpcodeParamsList>
                 <OpcodeParamName>PIN_FLD_SUBSCRIBER_PREFERENCES[1].PIN_FLD_
VALUE</OpcodeParamName>
                 <OpcodeParamValue>IVR</OpcodeParamValue>
            </OpcodeParamsList>
            <OpcodeParamsList>
                <OpcodeParamName>PIN_FLD_SUBSCRIBER_PREFERENCES[1].PIN_FLD_SUBSCRIBER_PREFERENCE_
ID</OpcodeParamName>
                <OpcodeParamValue>2</OpcodeParamValue>
            </OpcodeParamsList>
        </OpcodeList>
        <OpcodeList>
            <OpcodeName>PCM_OP_CUST_SET_SUBSCRIBER_PREFERENCES</OpcodeName>
            <OpcodeNumber>3916</OpcodeNumber>
            <OpcodeMode>1</OpcodeMode>
            <OpcodeParamsList>
                <OpcodeParamName>PIN_FLD_POID</OpcodeParamName>
                <OpcodeParamValue>0.0.0.0 /profile/subscriber_preferences -1</OpcodeParamValue>
            </OpcodeParamsList>
            <OpcodeParamsList>
                <OpcodeParamName>PIN_FLD_DELETED_FLAG</OpcodeParamName>
                <OpcodeParamValue>1</OpcodeParamValue>
            </OpcodeParamsList>
            <OpcodeParamsList>
                <OpcodeParamName>PIN_FLD_ACCOUNT_OBJ</OpcodeParamName>
                <OpcodeParamValue>$ACCOUNT$</OpcodeParamValue>
            </OpcodeParamsList>
            <OpcodeParamsList>
                <OpcodeParamName>PIN_FLD_SERVICE_OBJ</OpcodeParamName>
                <OpcodeParamValue>$SERVICE$</OpcodeParamValue>
            </OpcodeParamsList>
            <OpcodeParamsList>
                <OpcodeParamName>PIN_FLD_NAME</OpcodeParamName>
                <OpcodeParamValue>DEL_SUBSCRIBER_PREFERENCES</OpcodeParamValue>
            </OpcodeParamsList>
        </OpcodeList>
     </ProvisioningTag>
  </ProvisioningTagList>
</ProvisioningTagConfiguration>
</BusinessConfiguration>