Pricing Engine

Overview

Oracle CPQ 23A introduced the Pricing Portal and all-new Pricing Engine UIs to dramatically improve the administrator experience. The Pricing Portal and Pricing Engine UIs use Redwood design standards to align with other Oracle products and provide a foundation for consolidation of CPQ pricing functionality. Users will experience a completely redesigned Redwood UX for Pricing Rules, Price Models (previously known as Pricing Profiles), and Pricing Attributes. The redesigned Pricing Engine supports all existing functionality in addition to enhancements that simplify and modernize the administrator experience in pricing.

The Pricing Portal provides access to Pricing Rules, Price Models, and Pricing Attributes.

Pricing Engine

Oracle CPQ's Pricing Engine is used to address increasing market requirements to sell products and services in a subscription model. The subscription model allows customers to manage a given product or service as a recurring or usage-based price item. The exact value for a starting or list price is derived by applying various pricing schemes such as flat fee, tiered, usage, overage, etc.

The Pricing Engine supports a wide range of pricing use cases. This is accomplished by Price Models that are defined using Pricing Attributes, applying multiple Price Models to derive the list price for parts and lines, and supporting the ability to provide real-time pricing using RESTful web services.

ClosedUser-Side Functionality

ClosedPricing Engine Component Relationships

ClosedSummary of Pricing Engine Components

ClosedHow does Pricing Engine work with Multiple Commerce Processes?

ClosedSimple Pricing Engine Example

ClosedDynamic Volume and Tier Pricing

ClosedRedwood UX Enhancements

Changes in Naming and Behavior in Recent Releases

 

ClosedOracle CPQ 23A Pricing Engine Enhancements and Changes in Behavior

ClosedOracle CPQ 23B Pricing Engine Enhancements

Administration

ClosedBest Practices

The following will help ensure that your pricing function does not become too large.

  • Any added/changed functionality should be broken into logical modules for each pricing requirement, not all placed into one large add-on function.

    Example: If both a requirement for CSP and a requirement for promotional pricing exist, they should each have their own function. This keeps the code organized and manageable.

  • Any pricing functionality that is added to the Base Template/standard functionality should be addressed as follows:
    • Create a new BML Library for each module; this is where the BML should be written for the new functionality.
    • Call the BML Library from the pricing function so that it passes through the necessary parameters, such as Base Template/standard Max Discount functionality).

      The BML Library call should be assigned to a variable, causing the return value of the BML Library to be stored in that variable.

  • When changing Base Template/standard functionality, changes must occur directly in the pricing function or placed in a BML Library and called from the pricing function using the following guidelines:
    • Small changes: Place changes directly into the pricing function.

      Existing lines should never be deleted (only commented out) and comments detailing the change should be added.

    • Large changes: Create a BML Library for the new functionality and have the call occur from within the pricing function, such as Base Template/standard Volume Pricing functionality.
  • Do not put validations in the pricing script; place them in the Validations section or a separate library.
  • Eliminate unused code.
  • Don’t declare variables unnecessarily. If a variable is used as a static value, do not declare a variable for this purpose.
  • If multiple loops are used to iterate through line items, combine them (if possible). This will reduce compile size and improve performance for users.
  • Combine conditional blocks of text. If several blocks of text are controlled by the same condition (for example, “if” statements), combine them so that the compiler must only assess the condition once.

Notes

  • Error messages are not clear in bulk upload/download. Error message will currently not tell you why records have failed. Errors can be viewed in the application Error Logs.

  • Siebel Integration is not currently supported.

Notes:

  • Customer Specific Pricing supersedes Recommended Item Price.
  • In the Pricing Engine, attributes from multiple data sources can be mapped to a single pricing attribute. In some cases, both data sources could be available and have values the pricing engine could use. For example, a part description from Item attributes as well as a text field from a Commerce process. When this occurs, only the first data source listed for that price attribute applies.
  • Pricing Attributes created inside Pricing Engine can be mapped to any of the data sources such as: Commerce Attributes, Item Attributes, and Configuration Attributes. When the pricing attributes are mapped to multiple data sources, then they are only a 1:1 map in the top-down order that is on the Mapping page. If the data source of the pricing attribute that is mapped to no longer exists, then it will skip that mapping and goes to the next data source in the top down order, but it always maps 1:1 with only one data source defined in the Mapping page.
  • In scenarios where pricing attributes with invalid data source are referred in the condition grid for the Advanced Models, then the application will apply the default value for those pricing attributes based on data type of the pricing attribute. For example if the pricing attribute is String, the empty value is applied as default value. Then the condition grid will be evaluated with the default value of pricing attributes.
  • In scenarios where Advanced Models are defined using conditions that contains only those pricing attributes with Commerce attributes or Item attributes as the data source, then the price returned by Pricing Engine will be applied in both Configuration and Commerce consistently. For example, if a pricing attribute named "Customer Segment" is created in the Pricing Engine and it is mapped to Commerce attribute as the data source, an Advanced Model is created and the condition grid contains the "Customer Segment" pricing attribute without any other Configuration attribute. If the customer segment value on the transaction matches with the value set in the condition grid BML, then the resulting price returned by the Pricing Engine will still be applied both in Commerce and Configuration.

Tips and Considerations:

  • A hover tooltip has been added to Admin pages to display the full name of a currency code.

  • FullAccess users can set a customer-specific price of 0 for parts.

  • If the Value Type is Absolute Price, define amounts in USD and EURO. If there is a EURO specific price, populate the amount with the Price Book price.If the Value Type is Discount Amount or Discount Percent, and no CSP exists in a specific currency, set the amount to "0'.

  • Oracle CPQ recommends the Version 4 Pricing Behavior due to the superior performance of Version 4. Refer to Pricing Behavior for more information.

Related Topics

Related Topics Link IconSee Also