Asset-Based Ordering External Orders
Overview
The Asset-Based Ordering integration introduced allows sales users to review, modify, and terminate subscription or asset-based products delivered over a period-of-time. Customers can also create orders outside of Oracle CPQ in an external client application and use REST APIs for all asset based operations. The REST APIs enable any external client application to integrate with Oracle CPQ to implement ABO.
Key Concepts
The "Add to Cart" action, "getconfigbom" and "saveconfigbom" library functions, and the fulfillment status attribute are key concepts used to enable an ABO integration.
As part of the Oracle CPQ – External Client Application integration, Oracle CPQ administrators must configure a "Client Side" integration to enable the Add to Cart button for a specific product family. The "Add to Cart" action sends items to an external client application cart via the Add to Cart button, which displays on the configurator UI after configuring the "Client Side" integration.
By integrating ABO with the Oracle CPQ – External Client Application integration, the "Add to Cart" action generates a "configId" (e.g. configuration ID) for the item added to the external client application cart. The ABO asset-based actions use the "configId" to load a BOM instance from the Oracle CPQ configBomInstance resource.
saveconfigbom and getconfigbom Library Functions
The "saveconfigbom" and "getconfigbom" library functions are new in Oracle CPQ 2017 R1. The "saveconfigbom" library function allows users to save the BOM for non-configurator UI integration scenarios such as suspend, resume, and terminate. The library function saves a client integration BOM instance and a "configId" to the Oracle CPQ configBomInstance resource and returns a "configId".
The "getconfigbom" library function can retrieve the configbom stored via the saveConfigBom API and the configBom created via a client integration Configurator UI session. The library function extracts and returns a client integration BOM instance from the Oracle CPQ configBomInstance resource using the "configId".
The configBomInstance contains the asset information from the configurator UI and contains two key fields: transactionDate and fulfillmentStatus. Use the transactionDate attribute to determine the date and time of a service request, which can also be a future date. The fullfillmentStatus attribute refers to the status of the configBomInstance. An optional transactionId attribute in the configBomInstance determines the current order for which the configuration is relevant.
Upon launching a configurator session, the configBomInstance passes into the configurator session as the initial state. After a configBomInstance saves in the configBomInstance resource, Oracle recommends making updates to the fulfillmentStatus attribute in the configBomInstance resource at regular intervals during the course of order creation, submission, and fulfillment. There are four possible status values for the configBomInstance:
- NULL: Upon initial creation of a configBomInstance, the fullfillmentStatus is null and indicates the order was not yet submitted for fulfillment.
- BEING_FULFILLED: Indicates the order was submitted to the fulfillment system.
- FULFILLED: Indicates the order was fulfilled and assets created.
- CANCELLED: Indicates the order was cancelled.
Create an Order from an External Client Application
By integrating ABO with an Oracle CPQ – External Client Application integration, users of the external client application can create an order from the external client application.
Complete the following steps:
- Open the external client application that an administrator has integrated with CPQ.
- Use the Configurator UI to configure the external client application item.
- Click Add to Cart to save the item to the external client application cart.
The "Add to Cart" action invokes the Delta functionality in ABO and saves a BOM instance to the configBomInstance resource. The saved BOM instance can be identified by the "configId". The configBomInstance resource passes the "configId" and the associated BOM instance to the external client application along with a JSON payload.
Reconfigure an Asset-Based Product Using a REST API
The "Reconfigure" action is included in the 2017 R1 ABO package. External client application users can use this action to reconfigure an asset-based product prior to fulfillment and can perform this action on either a new asset-based product or an existing asset-based product undergoing modification.
Complete the following steps:
- Follow the steps in the "Create an Order from an External Client Application" section or modify an existing asset by selecting an asset from the Customer Assets page in the external client application and clicking Modify. The Configurator UI opens in an embedded iFrame in the external client application and displays the new or existing asset-based product.
- Use the Configurator UI to make configuration changes to the quote.
-
Click Add to Cart to create a new quote in the external client application cart.
The action generates a new "configId" in the configBomInstance resource and sends the BOM items to the external client application cart along with the generated "configId".
-
Click Reconfigure from the external client application cart.
- The "Reconfigure" action invokes the Reconfigure REST API on the configBomInstance. The "configId" internally calculates the projected state of the configuration and generates a "configurationURL", which is the URL for the embedded iFrame that displays the Configurator UI in the external client application.
- The Configurator UI will include the configuration changes made when initially creating or modifying the configBomInstance.
- Use the Configurator UI to make additional changes to the configuration information.
-
Click Add to Cart.
The "Add to Cart" action saves the changes to the original "configId", updates the BOM instance data in the configBomInstance resource, and passes the "configId" and the reconfigured BOM instance to the external client application along with a JSON payload.
- The external client application submits the modified BOM for fulfillment. After order fulfillment, the asset is updated.
- Once the asset changes synchronize, the external client application or the fulfillment system invokes the REST API using the "configId", which updates the fulfillmentStatus attribute for the configBomInstance resource to FULFILLED.
Create a Follow-On Order Using a REST API
A "Follow-On Order" action on a configBomInstance is included with the 2017 R1 ABO package. External client application users can use this action to create a follow-on order from an existing order not yet fulfilled. External client application users can place a new order for an existing order line by creating a follow-on order with a fulfillment date in the future.
Complete the following steps:
- Create an order using items in an external client application cart.
- Submit the order for fulfillment.
-
Select the order and click the Follow-On Order button on the external client application UI.
- This invokes the Follow-On Order REST API on the configBomInstance and uses the previously generated "configId" to internally calculate the projected state of the existing unfulfilled order and generate a new "configurationURL".
- The configuratorURL is the URL of the iFrame that displays the Oracle CPQ Model Configuration page in the external client application. The Model Configuration page includes the user changes to the subscription.
- Modify the configuration information using the Configurator UI.
-
Click Add to Cart to create a new order in the external client application cart.
The action generates a new "configId’ in the configBomInstance resource and sends the BOM items to an external client application cart along with the generated "configId".
- The external client application submits the modified BOM for fulfillment. After order fulfillment, the asset is updated.
- Once the asset changes synchronize, the external client application or the fulfillment system invokes the Synchronize REST API using the "configId", which updates the fulfillmentStatus attribute for the configBomInstance resource to FULFILLED.
Update an Asset Using a REST API
When a fulfillment system fulfills an order, the external client application or the fulfillment system will invoke a REST API to create or update the assets in the assets resource. Asset creation generates a traceable item that integrates with the customer’s fulfillment system. After asset creation, customers can view and maintain subscription services through the Customer Assets page.
Customers can use the Synchronize REST API to create or update assets after order fulfillment. For more information about the "Synchronize" action, refer to the Assets REST API topic.
Modify an Asset Using a REST API
The "Modify Asset" action is included with the 2017 R1 ABO package. External client application users can use this action to modify an existing asset stored in CPQ.
Complete the following steps:
- Select an existing asset from the Customer Assets page in the external client application.
-
Click Modify, which invokes the Modify REST API on the asset.
The Modify REST API internally calculates the projected state of the asset and generates a "configurationURL", which displays the Configurator UI in an embedded iFrame in the external client application.
- Use the Configurator UI to modify the asset’s configuration information.
-
Click Add to Cart to create a new order in the external client application cart. The external client application user creates the new order by modifying the existing asset referenced in Step 1.
The Add to Cart action generates a new "configId’ in the configBomInstance resource and sends the BOM items to the external client application cart along with the generated "configId".
- The external client application submits the modified BOM for fulfillment and uses the standard Update API on the configBomInstance endpoint to update the fulfillmentStatus attribute to BEING_FULFILLED.
- Once the fulfillment system fulfills the order, the external client application or the fulfillment system invokes the Synchronize REST API on the asset to create or update assets.
- Once the asset changes synchronize, the external client application or the fulfillment system invokes the REST API using the "configId", which updates the fulfillmentStatus attribute for the configBomInstance resource to FULFILLED.
Terminate an Asset Using a REST API
The ABO functionality introduced in Oracle CPQ 2016 R1 allows sales users to create a subscription for service for a customer and specify a request date for the termination of the service. By integrating ABO with an Oracle CPQ and External Client Application integration, clicking Terminate from the Customer Assets page allows customers to terminate a subscription in the external client application. When the terminate action is fulfilled, the end date of the asset can be updated to the date on which the customer requests termination.
Complete the following steps:
- Select an asset from the Customer Assets page in the external client application.
-
Click Terminate, which invokes a Terminate REST API on the asset.
- The REST API internally calculates the projected state of the asset and generates a "configId" in the configBomInstance resource. The REST API returns the "configId" as the "lineId" in the response.
- The external client application uses the "configId" to retrieve the BOM details using the getConfigBom REST API. The external client application submits the BOM for fulfillment and invokes the REST API using the "configId", which updates the fullfillmentStatus attribute for the configBomInstance resource to BEING_FULFILLED.
- Once the fulfillment system fulfills the order, the external client application or the fulfillment system invokes the Synchronize REST API on the asset to update assets and set the end date on the asset.
- Once the asset changes synchronize, the external client application or the fulfillment system invokes the REST API using the "configId", which updates the fulfillmentStatus attribute for the configBomInstance resource to FULFILLED.
Suspend an Asset Using a REST API
The ABO enhancements in Oracle CPQ 2017 R1 allow external client application users to suspend their subscription service by specifying a Transaction date. By integrating ABO with an Oracle CPQ - External Client Application integration, clicking Suspend from the Customer Assets page allows self-service users to suspend a subscription in the external client application. When the "Suspend" action is fulfilled, the suspend date of the asset can be updated to the date on which the customer requests suspension.
Complete the following steps:
- Select an asset from the Customer Assets page in the external client application.
-
Click Suspend, which invokes the Suspend REST API on the asset.
- The Suspend REST API internally calculates the projected state of the asset and generates a "configId" in the configBomInstance resource. The Suspend REST API response returns the "configId" as the "lineId".
- The external client application uses the "configId" to retrieve the BOM details using the getConfigBom REST API. Once retrieved, the external client application submits the BOM for fulfillment and invokes the REST API using the "configId" to update the fulfillmentStatus attribute for the configBomInstance resource to BEING_FULFILLED.
- Once the order is fulfilled by the fulfillment system, the external client application or the fulfillment system invokes the Synchronize REST API on the asset to update the assets and set the suspend date on the asset.
- Once the asset changes synchronize, the external client application or the fulfillment system invokes the REST API using the "configId", which updates the fulfillmentStatus attribute for the configBomInstance resource to FULFILLED.
Resume an Asset Using a REST API
The ABO enhancements in Oracle CPQ 2017 R1 allow external client application users to resume their suspended subscription service by specifying a Transaction date. By integrating ABO with an Oracle CPQ - External Client Application integration, clicking Resume from the Customer Assets page allows external client application users to resume a subscription that was suspended earlier using a suspend action in the external client application. When fulfilled, the resume date of the asset can be updated to the date on which the customer requests service to be resumed.
Complete the following steps:
- Select an asset from the Customer Assets page in the external client application.
-
Click Resume to invoke the Resume REST API on the asset.
- The Resume REST API internally calculates the projected state of the asset and generates a "configId" in the configBomInstance resource. The Resume REST API response returns the "configId" as the "lineId".
- The external client application uses the "configId" to retrieve the BOM details using the getConfigBom REST API. The external client application then submits the BOM for fulfillment and invokes the REST API using the "configId", which updates the fulfillmentStatus attribute for the configBomInstance resource to BEING_FULFILLED.
- Once the fulfillment system fulfills the order, the external client application or the fulfillment system invokes the Synchronize REST API on the asset to update the assets and set the resume date on the asset.
- Once asset changes synchronize, the external client application or the fulfillment system invokes the REST API using the "configId", which updates the fulfillmentStatus attribute for the configBomInstance resource to FULFILLED.
Renew an Asset Using a REST API
The ABO enhancements in Oracle CPQ 2017 R1 allow external client application users to renew their subscription service by specifying a Transaction date. By integrating ABO with an Oracle CPQ - External Client Application integration, clicking Renew from the Customer Assets page allows external client application users to renew a subscription in the external client application. When the "Renew" action is fulfilled, the end date of the asset can be updated to a new date up to when the customer requests service renewal.
Complete the following steps:
- Select an asset from the Customer Assets page in the external client application.
-
Click Renew, which invokes the Renew REST API on the asset.
- The Renew REST API internally calculates the projected state of the asset and generates a "configId" in the configBomInstance resource. The Renew REST API returns the "configId" as the "lineId" in the response.
- The external client application uses the "configId" to retrieve the BOM details using the getConfigBom REST API. The external client application then submits the BOM for fulfillment and invokes the REST API using the "configId", which updates the fulfillmentStatus attribute for the configBomInstance resource to BEING_FULFILLED.
- Once the fulfillment system fulfills the order, the external client application or the fulfillment system invokes the Synchronize REST API on the asset to update the asset and set the end date on the asset.
- Once the asset changes synchronize, the external client application or the fulfillment system invokes the REST API using the "configId", which updates the fulfillmentStatus attribute for the configBomInstance resource to FULFILLED.
Administration
Add Parameters to an External URL to Launch the Model Configuration Page
Add parameters to an external URL to allow external applications, such as Oracle CX Commerce, to directly launch the Model Configuration page from the external application. Provided below are descriptions of the parameters included in the example:
_from_partner=true
: Indicates the Model Configuration page is to open from an external URL.assetKey
: The unique identifier for a specific asset. *Requiredid
: The unique identifier for a Transaction within CPQ. *OptionalsourceIdentifier
: The variable name of the external application identifier. *Optional
When not supplied, the default value is “_external_order”.transactionDate
: The date on which an asset will be modified or a Follow-On order fulfilled. *Optional
When parameters are added to an external URL, the Model Configuration page opens in the external application. Users can then modify the Configuration selections, as simulated below.
Add Parameters to an Internal URL To Launch the Model Configuration Page
Add parameters to an internal URL to allow users to directly access the Model Configuration page from Oracle CPQ to modify an asset. Provided below are descriptions of the parameters included in the below example:
_from_punchin=true
: Indicates the Model Configuration page is to open from an internal URL.actionVarName
: The variable name of the action used to copy Transaction lines. *RequiredassetKey
: The unique identifier for a specific asset. *Requiredid
: The unique identifier for a Transaction within CPQ. *RequiredsourceIdentifier
: The variable name of the Commerce process. *RequiredtransactionDate
: The date on which an asset will be modified or a Follow-On order fulfilled. *Optional
When parameters are added to an internal URL, the Model Configuration page opens in CPQ, allowing users to modify the asset’s Configuration settings. Users can then click any of the action buttons displayed across the top of the page.
By clicking Add to Transaction, the modified asset is added to a Transaction as a line item.
Notes
Notes:
- Customers must implement Bill of Material (BOM) Mapping to use Asset-Based Ordering. For additional information, refer to the BOM Mapping Implementation Guide.
- Customers using the ABO migration package in Oracle CPQ 2016 R2 who are upgrading to Oracle CPQ 2017 R1 must make two configuration changes for the ABO migration package to continue to work. For additional information, refer to the Oracle CPQ 2017 R1 Asset Based Ordering Implementation Guide.
- Integrating Oracle CX Commerce and Oracle CPQ Implementation Guide