9 Using the XML Pricing Interface to Create a Price List

This chapter describes how to create and edit an Oracle Communications Billing and Revenue Management (BRM) price list by using the XML Pricing Interface.

Before reading this chapter, read "About Creating a Price List".

About Creating and Modifying Price List Files

You create and modify price lists by using the following:

  • Pricing Center: Pricing Center is a GUI application that provides on-screen wizards to help you create your price list. You create and modify the price list and retrieve and save it to the database all directly in Pricing Center. For more information, see Pricing Center Help.

  • XML Pricing Interface: The XML Pricing Interface consists of the "loadpricelist" utility. You create price lists directly in an XML editor or text editor and then use the utility to load, retrieve, and delete the price list from the BRM database. For information on creating price lists with the XML Pricing Interface, see "About the XML Pricing Interface".

About the XML Pricing Interface

The XML Pricing Interface is a command-line utility called loadpricelist that you can use to download, edit, and load price lists.

Important:

The XML price list must follow the format detailed in the XML SchemaDefinition (XSD) file price_list.xsd. By default, the price_list.xsd file is installed in BRM_Home/PricingCenter and/or BRM_Home/setup/scripts.

About Downloading and Loading XML Price List Files

You can use the loadpricelist utility to download and load an entire price list or a partial price list. When you download a price list from the database, the utility writes the price list information you specify into an XML file. If you specify to download to an existing price list file, the utility overwrites the entire XML file.

When you load a price list from an XML file into the database, the utility modifies only those objects that have changed:

  • If an object has changed, the utility updates the object's attributes in the database.

  • If an object does not exist in the database, the utility creates the database object.

  • If an object has not changed and is already in the database, the utility does not modify the database object.

Prerequisites for the XML Pricing Interface

Before you use the XML Pricing Interface, you must configure the following:

  • Include the loadpricelist.jar, xerces.jar, pcm.jar, and pcmext.jar files in your CLASSPATH. The xerces.jar, pcm.jar, and pcmext.jar files are located in the C:\Program Files\Common Files\Portal Software directory and subdirectories by default.

    Tip:

    Instead of including the JAR files in your CLASSPATH, you can include them in the loadpricelist file.
  • Include the location of the Infranet.properties file in your CLASSPATH.

    The default Infranet.properties file is in the \common directory. To put the Infranet.properties file in the local directory with the loadpricelist utility, add ./ (period-slash) to the beginning of the Infranet.properties CLASSPATH.

  • Ensures that the Infranet.properties file specifies the correct login information for the BRM database you want to connect to.

    Note:

    You might need to change this information if, for example, you want to download a price list from one BRM database, modify it, and load it to a different BRM database.
  • Install Pricing Center or copy the price_list.xsd file to your system. You can find the price_list.xsd file on any BRM server in either the BRM_Home/PricingCenter directory or the BRM_Home/setup/scripts directory.

Starting the XML Pricing Interface

To start the XML Pricing Interface, at the command prompt, enter loadpricelist followed by an interactive or non-interactive command.

Getting Help for the XML Pricing Interface

To get help for the XML Pricing Interface:

  1. Start the XML Pricing Interface, if necessary.

  2. Enter help at the command prompt and press Enter.

Working in Interactive and Non-Interactive Mode

You can work in interactive and non-interactive mode in the XML Pricing Interface.

  • In interactive mode, you issue a command for each action. For a list of commands that can be used in this mode, see "Syntax: Interactive Mode".

  • In non-interactive mode, you can use special commands that batch several related actions together so the system performs them automatically. For a list of parameters that can be used in this mode, see "Syntax: Non-Interactive Mode".

You receive a confirmation message when the XML Pricing Interface carries out a command successfully. If you do not receive a confirmation message, look in the utility log file (javapcm.log) to find any errors. The log file is either in the directory where the utility was started or in a directory specified in the Infranet.properties file.

Note:

If an error occurs during a command, none of the command is carried out even if the error was only caused by part of the operation.

Creating Price Lists with the XML Pricing Interface

You create price lists in an XML editor or text editor and then load it into the BRM database by using the "loadpricelist" utility.

To create a price list:

  1. Plan your price list. You should know in advance how you will set up your rates, products, deals, and plans. Ensure that the following pricing objects and data have been created in the BRM database:

    • services

    • events

    • resources

    • currency exchange rates

    • G/L IDs

    • tax codes and tax suppliers

    • ratable usage metrics (RUMs)

    • product-level provisioning categories

    • zones

    For information on planning your price list, see "About Creating a Price List".

  2. Create an XML file, such as price_list.xml, in a text editor or XML editor.

  3. Enter your price list information. Ensure that your price list follows the structure defined in the price_list.xsd file.

    Note:

    You can view sample XML price list files in the BRM_Home\PricingCenter\Sample_Price_Plans directory.
  4. Save and close the file.

  5. Ensure that any billable events in your price list are also included in the pin_event_map file. Otherwise, they will not be rated. See "Mapping Event Types to Services".

  6. Load the price list into the BRM database. See "Loading a Price List into the Database with the XML Pricing Interface".

BRM can begin using the price list after it is committed to the database.

Modifying Existing Price Lists with the XML Pricing Interface

To modify an existing price list file:

  1. Retrieve the existing price list file. The method you use depends on the file's location:

  2. Open the XML price list file in a text editor or XML editor.

  3. Edit your price list file. Ensure that it follows the structure defined in the price_list.xsd file. By default, price_list.xsd is located in BRM_Home/PricingCenter.

    Note:

    You can view sample XML price list files in the BRM_Home\PricingCenter\Sample_Price_Plans directory.
  4. Save and close the file.

  5. Ensure that any billable events in your price list are also included in the pin_event_map file. Otherwise, they will not be rated. See "Mapping Event Types to Services".

  6. Load the price list into the BRM database. See "Loading a Price List into the Database with the XML Pricing Interface".

BRM can begin using the price list after it is committed to the database.

Moving a Price List between Databases with the XML Pricing Interface

You can use the loadpricelist utility to move a price list from one database to another (for example, from a test database to a production database). You move the price list by downloading it from a source BRM database and then loading it into a destination BRM database.

To move a price list from one database to another:

  1. Download the price list from the source database. See "Downloading Price Lists from the Database with the XML Pricing Interface".

  2. If necessary, edit the XML file in a text editor or XML editor.

  3. Load the price list into the destination BRM database. See "Loading a Price List into the Database with the XML Pricing Interface".

Downloading Price Lists from the Database with the XML Pricing Interface

You can download either the entire price list or just a subset of the price list from the BRM database into an XML file that can be edited.

Note:

Price lists are stored in the database in flist format. The utility converts the file into XML format as part of the download process.

Downloading a Full Price List

To download a full price list:

  1. Ensure that the Infranet.properties file in your CLASSPATH has the correct login information for the BRM database you want to download price list information from. See "Setting global options" in BRM Developer's Guide.

  2. Retrieve the price list from the BRM database and write it to an XML file.

    Interactive mode

    loadpricelist 
    retrieve
    write [PriceListFile]
    

    where PriceListFile specifies the name and location of the file to which to extract the data.

    Caution:

    You can retrieve only one price list at a time. If you retrieve another price list when one is already in internal memory, the existing internal flist is overwritten.

    Non-interactive mode

    loadpricelist [-f] -r PriceListFile
    

    where PriceListFile specifies the name and location of the file to which to extract the data.

Your price list is written to the specified XML file. You can now edit it directly in an XML editor.

Downloading a Subset of the Price List

You can write specific pricing objects, such as /product, /discount, or /sponsorship objects, rather than the entire price list to the XML price list file.

To download a subset of the price list:

  1. Ensure that the Infranet.properties file in your CLASSPATH has the correct login information for the BRM database you want to connect to.

  2. Specify the pricing objects to retrieve according to their service type, modification time, or object type, and write them to a specified XML file.

    Interactive mode

    loadpricelist 
    retrieve [-s ServiceType][-t ModifiedTime][product][discount][sponsorship]
    write PriceListFile 
    

    where:

    • -s ServiceType specifies to retrieve the specified service type. You can list multiple service types by using a comma (,) as a delimiter.

      Note:

      Do not use this parameter with the sponsorship parameter.
    • -t ModifiedTime retrieves objects that were modified after the specified timestamp.

      The time is specified in the ISO-8601 format: YYYY-MM-DDThh:mm:ssTZD, with the server's local time zone as the default. For example:

      -t 1997-07-16T19:20:30+01:00
      
    • product specifies to retrieve only the /product objects from the database.

    • discount specifies to retrieve only the /discount objects from the database.

    • sponsorship specifies to retrieve only the /sponsorship objects from the database.

    • PriceListFile specifies the name and location of the file to which to extract the data.

    Non-interactive mode

    loadpricelist [-f] -r PriceListFile [-P][-D][-S][-s ServiceType][-t ModifiedTime]
    

    where:

    • f specifies to execute the command without prompting for a confirmation.

    • PriceListFile specifies the name and location of the file to which to extract the data.

    • -P specifies to retrieve only the /product objects from the database.

    • -D specifies to retrieve only the /discount objects from the database.

    • -S specifies to retrieve only the /sponsorship objects from the database.

    • -s ServiceType retrieves objects based on the specified service type. You can list multiple service types by using a comma (,) as a delimiter.

      Note:

      Do not use this parameter with the -S parameter.
    • -t ModifiedTime retrieves objects that were modified after the specified timestamp.

      The time is specified in the ISO-8601 format: YYYY-MM-DDThh:mm:ssTZD, with the server's local time zone as the default. For example:

      -t 1997-07-16T19:20:30+01:00
      

Downloading Price Lists in Batches

If you have a large price list, downloading it by using loadpricelist can require more than the available system memory. In this situation, you should configure loadpricelist to retrieve and write pricelists in batches. When configured this way, loadpricelist performs a step search and writes the results into multiple XML files based on the batch size you specify.

You use the infranet.batchsize entry in the loadpricelist Infranet.properties file to configure the batch size. The batch size is expressed as the number of pricing objects per batch. For example, the following entry configures loadpricelist to retrieve and write pricing objects in batches of 500.

infranet.batchsize=500

When a batch size is configured, loadpricelist creates files based on the file name you specify in the command and on the type of pricing object, incrementing the name appropriately for each file created. For example, if the batch size is set to 500 and there are 1900 pricing objects in the database, then loadpricelist creates four XML files, the first three with 500 pricing objects and one with the remaining 400 objects.

When retrieving pricing objects in batches, you cannot choose which type of pricing object to retrieve; for example, only products, or only discounts. The -P, -D, -S, -s, and -t parameters are ignored.

In this scenario, this command:

loadpricelist -rf MyPriceList

results in the following four files being created (along with others for the other pricing objects in the database):

MyPriceList_product_1.xml

MyPriceList_product_2.xml

MyPriceList_product_3.xml

MyPriceList_product_4.xml

File naming follows the same pattern for all object types. For example, file names for /discount objects would start with MyPriceList_discount_1.xml and increment from there.

The batchsize entry is not included in the loadpricelist file by default. To set the batch size:

  1. Open the Infranet.properties file for loadpricelist in a text editor.

    The default Infranet.properties file is in the \common directory, but may be located in the local directory with the loadpricelist utility.

  2. Add the batchsize entry to the file using the following syntax:

    infranet.batchsize=batch_size
    

    where batch_size represents the number of pricing objects to include in each batch.

  3. Save and close the file.

Loading a Price List into the Database with the XML Pricing Interface

After your price list is complete, you load it into the BRM database. The XML Pricing Interface automatically converts the XML price list into flist format when it is loaded into the database.

Important:

The price list file must be in the same directory as the price_list.xsd file. If they are not in the same directory, edit the noNamespaceSchemaLocation entry in the price list file to include the full path to price_list.xsd. By default, price_list.xsd is in the BRM_Home\PricingCenter directory. For example, if the XSD file is located in C:\pricelists, change the entry to: xsi:noNamespaceSchemaLocation="C:\pricelists\price_list.xsd"

To load a price list:

  1. Ensure that the XML price list file is complete and follows the guidelines specified in the XSD file.

  2. Ensure that the Infranet.properties file in your CLASSPATH has the correct login information for the BRM database you want to connect to.

  3. Commit the price list XML file to the BRM database.

    Interactive mode

    loadpricelist 
    read PriceListFile
    commit
    

    where PriceListFile specifies the name and location of the file to load into the database.

    Non-interactive mode

    loadpricelist [-f] -c PriceListFile
    

    where:

    • f specifies to execute the command without prompting for a confirmation.

    • PriceListFile specifies the name and location of the file to load into the database.

Purging Price Lists from the BRM Database

You can purge the following from the BRM database:

Purging the Entire Price List from the BRM Database

To purge the entire price list from the database:

  1. Ensure that the Infranet.properties file has the correct login information for the BRM database.

  2. Purge the price list from the BRM database:

    Interactive mode

    loadpricelist 
    purge
    

    Non-interactive mode

    loadpricelist [-f] -p
    

    where f specifies to execute the command without prompting for a confirmation.

Deleting a Subset of the Price List from the BRM Database

Important:

To delete a subset of price list data from the BRM database, you must use interactive mode.

To delete a subset of the price list:

  1. Ensure that the Infranet.properties file has the correct login information for the BRM database.

  2. Start loadpricelist in interactive mode and read PriceListFile into internal memory.

    loadpricelist 
    read PriceListFile
    
  3. Specify the pricing data to delete:

    delete [planlist[new|addon] | plan | bestpricing | deal | product | discount | sponsorship]
    

    where:

    • planlist [new|addon] specifies to delete the plan list information from the BRM database. You can optionally specify to delete only the new plan lists or the addon plan lists.

    • plan specifies to delete only the /bestpricing objects from the BRM database.

    • deal specifies to delete only the /deal objects from the BRM database.

    • product specifies to delete only the /product objects from the BRM database.

    • discount specifies to delete only the /discount objects from the BRM database.

    • sponsorship specifies to delete only the /sponsorship objects from the BRM database.

Deleting Pricing Objects from the BRM Database

Important:

To delete individual pricing objects from the BRM database, you must use interactive mode.

To delete pricing objects:

  1. Ensure that the Infranet.properties file has the correct login information for the BRM database.

  2. Start loadpricelist in interactive mode and read PriceListFile into internal memory.

    loadpricelist 
    read PriceListFile
    
  3. Specify the pricing object to delete.

    delete PriceObject
    

    where PriceObject specifies the pricing object to delete.

Purging Dependency or Transition Objects from the BRM Database

Important:

To delete only dependency or transition objects from the BRM database, you must use interactive mode.

To delete dependency or transition objects:

  1. Ensure that the Infranet.properties file has the correct login information for the BRM database.

  2. Specify the objects to delete.

    • To delete only the dependency objects, enter:

      loadpricelist
      delete dependency
      
    • To delete only the transition objects, enter:

      loadpricelist
      delete transition