Skip Headers
Oracle® Application Integration Architecture Oracle Communications Order to Cash Integration Pack Implementation Guide for Siebel CRM, Oracle Order and Service Management, and Oracle Billing and Revenue Management
Release 11.2

Part Number E26501-02
Go to Documentation Home
Home
Go to Book List
Book List
Go to Table of Contents
Contents
Go to Index
Index
Go to Feedback page
Contact Us

Go to previous page
Previous
Go to next page
Next
PDF · Mobi · ePub

13 OLM - Bill Fulfillment Order Business Flow: Implementation

This chapter provides an overview of the Bill Fulfillment Order business flow and discusses the implementation of Oracle Billing and Revenue Management (Oracle BRM) interfaces, industry Oracle Application Integration Architecture (Oracle AIA) components, and integration services.

This chapter includes the following sections:

13.1 Bill Fulfillment Order Business Flow Overview

This business flow is enabled using the Oracle Communications Order to Cash Siebel Customer Relationship Management (Siebel CRM), Oracle Order and Services Management (Oracle OSM), and Oracle BRM pre-built integration options.

The following integration flow involves interfacing orders to create transaction data in one or more Oracle BRM instances:

13.2 Interfacing Orders to Create Transaction Data in Oracle BRM

This integration flow uses the following interfaces:

Figure 13-1 illustrates the integration components used by Oracle OSM to interface orders to create transaction data in Oracle BRM.

Figure 13-1 Interfacing Orders to Create Transaction Data in Oracle BRM

This image is described in surrounding text.

When this flow is initiated, the following events occur:

  1. Oracle OSM composes a ProcessFulfillmentOrderBillingEBM and places it in a JMS Queue. The store and forward (SAF) mechanism pushes the message to the AIA_CRTBO_OUT_JMSQ messaging queue.

  2. The ProcessFulfillmentOrderBillingOSMCFSCommsJMSConsumer picks up this message, and routes this message to the ProcessFulfillmentOrderBillingBRMCommsProvABCSImpl.

  3. The ProcessFulfillmentOrderBillingBRMCommsProvABCSImpl service orchestrates the ProcessFulfillmentOrderBillingEBM into creating billing artifacts, service instances, purchased products, purchased discounts, and so on in Oracle BRM.

  4. The ProcessFulfillmentOrderBillingBRMCommsProvABCSImpl constructs the ProcessFulfillmentOrderBillingResponseEBM and sends it back to the ProcessFulfillmentOrderBillingResponseOSMCFSCommsJMSProducer.

  5. The ProcessFulfillmentOrderBillingResponseOSMCFSCommsJMSProducer forwards the ProcessFulfillmentOrderBillingResponseEBM in the AIA_UPDBO_IN_JMSQ using SAF to an Oracle OSM messaging queue on the WebLogic server.

13.2.1 Defining Transaction Boundaries and Recovery Details

For this flow there is one transaction boundary. Table 13-1 describes the transaction involved, the database operations, and what actions to take in case of an error.

For more information about system errors and business errors, see Section 27.5.2, "Using Error Type to Control Response to Order Fallout."

The following services are involved:

  • ProcessFulfillmentOrderBillingOSMCFSCommsJMSConsumer

  • ProcessFulfillmentOrderBillingBRMCommsProvABCSImpl

  • ProcessFulfillmentOrderBillingBRMCommsAddSubProcess

  • ProcessFulfillmentOrderBillingBRMCommsDeleteSubProcess

  • ProcessFulfillmentOrderBillingBRMCommsMoveAddSubProcess

  • ProcessFulfillmentOrderBillingBRMCommsSuspendResumeSubProcess

  • ProcessFulfillmentOrderBillingBRMCommsUpdateSubProcess

  • ProcessFulfillmentOrderBillingResponseOSMCFSCommsJMSProducer

Table 13-1 Transaction Boundaries and Recovery Details

Transaction DB Operations In Case of Error Recovery

ProcessFulfillmentOrderBillingOSMCFSCommsJMSConsumer passes message to ProcessFulfillmentOrderBillingBRMCommsProvABCSImpl, which creates billing artifacts and call one or more subprocesses. The response message is then routed to ProcessFulfillmentOrderBillingResponseOSMCFSCommsJMSProducer.

AIA cross-references created.

Oracle BRM data created.

Message goes to queue AIA_UPDBO_IN_JMSQ.

Rollback AIA cross-references.

Rollback data created in Oracle BRM.

Message goes back to the originating queue AIA_CRTBO_OUT_JMSQ_ErrorQ.

Resubmit the order from AIA_CRTBO_OUT_JMSQ_ErrorQ.


For more information about rollback procedures, see Oracle Fusion Middleware Developer's Guide for Oracle Application Integration Architecture Foundation Pack, "Configuring Oracle AIA Processes for Error Handling and Trace Logging", Configuring Fault Policies to Not Issue Rollback Messages.

13.3 Oracle BRM Interfaces

This integration flow uses these services:

For more information, see Oracle Communications Billing and Revenue Management (BRM) Documentation, "BRM Documentation," Reference, API reference."

13.4 Industry Oracle AIA Components

This integration flow uses these industry components:

The industry enterprise business object (EBO) and enterprise business message XML schema (EBM XSD) files are located here: $AIA_HOME/AIAMetaData/AIAComponents/EnterpriseObjectLibrary/Industry/Communications/EBO/

The industry enterprise business service (EBS) WSDL files are located here: $AIA_HOME/AIAMetaData/AIAComponents/EnterpriseBusinessServiceLibrary/Industry/Communications/EBO/

For detailed documentation of individual EBOs and EBMs, click the AIA Reference Doc link on EBO and EBM detail pages in the Oracle Enterprise Repository (OER).

For more information about using the OER and configuring it to provide the AIA Reference Doc link, see Oracle Fusion Middleware Developer's Guide for Oracle Application Integration Architecture Foundation Pack, "Configuring and Using Oracle Enterprise Repository as the Oracle SOA Repository."

EBOs can be extended, for instance, to add new data elements. These extensions are protected and remain intact after a patch or an upgrade, so long as the extensibility guidelines are followed.

For more information, see Oracle Fusion Middleware Developer's Guide for Oracle Application Integration Architecture Foundation Pack, "Working with AIA Design Patterns," AIA Assets Extensibility Patterns, Extending Existing Schemas in AIA.

13.5 Integration Services

These services are delivered with this integration flow:

13.5.1 ProcessFulfillmentOrderBillingOSMCFSCommsJMSConsumer

The ProcessFulfillmentOrderBillingOSMCFSCommsJMSConsumer is a Mediator process that has a JMS Adapter Service, which continuously polls the AIA_CRTBO_OUT_JMSQ. The ProcessFulfillmentOrderBillingOSMCFSCommsJMSConsumer dequeues the ProcessFulfillmentOrderBillingEBM message and routes it to the ProcessFulfillmentOrderBillingBRMCommsProvABCSImpl.

This service has one operation: Consume_Message.

13.5.2 ProcessFulfillmentOrderBillingBRMCommsProvABCSImpl

The ProcessFulfillmentOrderBillingBRMCommsProvABCSImpl consists of a BPEL process with one operation: ProcessBilling. It receives the Order EBM and then converts the message into a BRM-specific message based on which opcode must be invoked.

This service communicates with Oracle BRM using the custom Java EE Connector Architecture (JCA) adapter provided by Oracle BRM. It uses the default capability of the custom JCA adapter to define unit transactions for every order. (Do all or none.)

The routing to the right Oracle BRM instance is done using dynamic end point binding in the BPEL process using the target application that is decided.

This service accepts the appropriate ProcessFulfillmentOrderBillingEBM and is responsible for transforming to the relevant Oracle BRM ABM and invoking the corresponding opcode.

ProcessFulfillmentOrderBillingBRMCommsProvABCSImpl mainly performs the following activities

  • Evaluates the product type of the order line and the action code. If the particular order line is a ServiceBundle/Subscription/Discount/Item and if this line has never been interfaced to Oracle BRM, then it proceeds to call the subprocesses:

    • For ActionCode = 'ADD' and BillingMode = 'INITIATE BILLING' or 'FULFILL BILLING', ProcessFulfillmentOrderBillingBRMCommsAddSubProcess is called.

    • For ActionCode = 'SUSPEND' or 'RESUME' and BillingMode = 'FULFILL BILLING', ProcessFulfillmentOrderBillingBRMCommsSuspendResumeSubProcess is called.

    • For ActionCode = 'DELETE' and BillingMode = 'FULFILL BILLING', ProcessFulfillmentOrderBillingBRMCommsDeleteSubProcess is called.

    • For ActionCode = 'UPDATE' or "MOVE-ADD' and BillingMode = 'FULFILL BILLING', ProcessFulfillmentOrderBillingBRMCommsUpdateSubProcess is called.

    • For ActionCode = 'MOVE-ADD' and BillingMode = 'FULFILL BILLING', ProcessFulfillmentOrderBillingBRMCommsMoveAddSubProcess is called.

    • For ActionCode = "ADD", FulfillmentModeCode = "REDO" and BillingMode ="INITIATE BILLING", ProcessFulfillmentOrderBillingBRMCommsUpdateSubProcess is called.

    • For ActionCode = "ADD", FulfillmentModeCode = "UNDO" and BillingMode ="INITIATE BILLING", ProcessFulfillmentOrderBillingBRMCommsDeleteSubProcess is called.

  • For friends and family orders, where the order has one or multiple SpecialRatingProduct as an OrderLine, the ProcessFulfillmentOrderBillingBRMCommsProvABCSImpl Process calls an Oracle BRM opcode from the following list depending on the nature of the action to be performed:

    • For New Order, the PCM_OP_CUST_CREATE_PROFILE opcode is called. Afterwards, the Oracle BRM POID is cross-referenced and populated in the AIA XREF database.

    • For Deleting the Special Rating Product, the PCM_OP_CUST_DELETE_PROFILE opcode is called. After the call, the Oracle BRM POID is cross-referenced and deleted from the AIA XREF database.

    • For Deleting the Special Rating Product, the PCM_OP_CUST_MODIFY_PROFILE opcode is called.

  • For Promotion on Invoice, ProcessFulfillmentOrderBillingBRMCommsProvABCSImpl calls the PCM_OP_SUBSCRIPTION_SET_BUNDLE opcode and different values are passed depending on the particular functional operation.

  • After all of these activities, the data is cross-referenced to the AIA XREF database.

    Figure 13-2 shows the data that is cross-referenced to the AIA XREF database:

    Figure 13-2 Data Cross-Referenced to the AIA XREF Database

    This image is described in surrounding text.

This service calls the following subprocesses in a synchronous fashion to perform various billing-related activities:

  • ProcessFulfillmentOrderBillingBRMCommsAddSubProcess

  • ProcessFulfillmentOrderBillingBRMCommsMoveAddSubProcess

  • ProcessFulfillmentOrderBillingBRMCommsSuspendResumeSubProcess

  • ProcessFulfillmentOrderBillingBRMCommsUpdateSubProcess

  • ProcessFulfillmentOrderBillingBRMCommsDeleteSubProcess

For error scenarios, a response message can be optionally sent back to the order management system. The decision whether to send a response message back to the order management system is done based on the responseCode attribute of the DataArea of the incoming EBM (ProcessFulfillmentOrderBillingEBM) from the order management system.

If the responseCode value in the incoming EBM is REQUIRED_FOR_BUSINESS_AND_SYSTEM_ERRORS, the response message is sent back to the order management system for all errors. However, if the responseCode value is REQUIRED_FOR_BUSINESS_ERRORS, the response message is only sent back to the order management system for business errors.

Caution:

With errors, Oracle OSM and the OSM AIA cartridges do not expect a response back. Instead, they use the Oracle AIA order fallout notification to both generate a trouble ticket and change the order and line status to indicate failure.

13.5.3 ProcessFulfillmentOrderBillingBRMCommsAddSubProcess

The ProcessFulfillmentOrderBillingBRMCommsAddSubProcess is a synchronous BPEL process that is called by the ProcessFulfillmentOrderBillingBRMCommsProvABCSImpl. This call depends on the action code present on the order line and also the type of product.

The ProcessFulfillmentOrderBillingBRMCommsAddSubProcess is called for a service bundle, account-level product, or account-level discount that is being newly added either as a part of a new order or an update order and that has an action code of ADD.

The ProcessFulfillmentOrderBillingBRMCommsAddSubProcess is never called for any onetime penalty charges that also have an action code of ADD, but are being added as a part of the MACD operation performed on a service bundle or a promotion.

The ProcessFulfillmentOrderBillingBRMCommsAddSubProcess receives a custom message that has the ProcessFulfillmentOrderBillingEBM, XREFPopulate, and XREFDelete DataStructure.

The structure of the message coming in to the ProcessFulfillmentOrderBillingBRMCommsAddSubProcess comprises:

  • ProcessFulfillmentOrderBillingEBM

  • XREFPopulate

  • XREFDelete

Depending on the type of product for every OrderLine, the following operations are performed in the ProcessFulfillmentOrderBillingBRMCommsAddSubProcess:

  1. The incoming payload is tunneled through two transforms. The first transform groups all the ServiceBundles per service account and the second transform groups all the account-level purchases.

  2. When the product type is service bundle, then this BPEL process accumulates all of the children inside this service bundle and calls the PCM_OP_CUST_MODIFY_CUSTOMER opcode. During this call, the ProcessFulfillmentOrderBillingBRMCommsAddSubProcess also transforms the ProcessFulfillmentOrderBillingEBM into a BRM-specific message. All the Service Bundles per service account are passed in one single PCM_OP_CUST_MODIFY_CUSTOMER opcode call.

  3. When the product type is an account-level subscription, discount, or item, then this BPEL process calls the PCM_OP_SUBSCRIPTION_PURCHASE_DEAL opcode. During this call, the ProcessFulfillmentOrderBillingBRMCommsAddSubProcess also transforms the ProcessFulfillmentOrderBillingEBM into an Oracle BRM-specific message.

  4. After these two calls are successfully carried out, this BPEL process captures the POID (ObjectIdentifier) returned by Oracle BRM and populates the XREFPopulateData.

  5. For ITEM, the POID (ObjectIdentifier) is returned by Oracle BRM only during INITIATE BILLING mode.

This service communicates with Oracle BRM using the custom JCA adapter provided by Oracle BRM. It uses the default capability of the custom JCA adapter to define unit transactions for every order. (Do all or none.)

This service supports two modes of billing:

  • initiate billing

  • fulfill billing

13.5.4 ProcessFulfillmentOrderBillingBRMCommsMoveAddSubProcess

The ProcessFulfillmentOrderBillingBRMCommsMoveAddSubProcess is a synchronous BPEL process that is called by the ProcessFulfillmentOrderBillingBRMCommsProvABCSImpl. This call depends on the action code present on the order line and also the type of product. It has one operation: processBillingMove.

The structure of the message coming in ProcessFulfillmentOrderBillingBRMCommsMoveAddSubProcess comprises:

  • ProcessFulfillmentOrderBillingEBM

  • XREFPopulate

  • XREFDelete

When the action code on the order line is MOVE-ADD and the product type is a service bundle, an account-level product, or an account-level discount, the ProcessFulfillmentOrderBillingBRMCommsMoveAddSubProcess is called.

  • As part of Move-Add, Update of ServiceID, Price Override, and Discount Override, changes can be performed. To process the updates, after ProcessFulfillmentOrderBillingBRMCommsMoveAddSubProcess is invoked, BRM Main Provider - ProcessFulfillmentOrderBillingBRMCommsProvABCSImpl invokes ProcessFulfillmentOrderBillingBRMCommsUpdateSubProcess

  • Simple Move-Add of the service bundles from one location to another.

    During this scenario, only the XREFs are repointed from. No Oracle BRM interaction happens in this operation.

  • All the preceding Move-Add scenarios can be accompanied with or without a onetime penalty charge.

    When a onetime penalty charge is associated, the ProcessFulfillmentOrderBillingBRMCommsMoveAddSubProcess converts the ProcessFulfillmentOrderBillingEBM into an Oracle BRM-specific message and calls the PCM_OP_SUBSCRIPTION_PURCHASE_DEAL Oracle BRM opcode.

13.5.5 ProcessFulfillmentOrderBillingBRMCommsSuspendResumeSubProcess

The structure of the message coming in the ProcessFulfillmentOrderBillingBRMCommsSuspendResumeSubProcess comprises:

  • ProcessFulfillmentOrderBillingEBM

  • XREFPopulate

  • XREFDelete

The ProcessFulfillmentOrderBillingBRMCommsSuspendResumeSubProcess is a synchronous BPEL process that is called by the ProcessFulfillmentOrderBillingBRMCommsProvABCSImpl. This call depends on the action code present on the order line and also the type of product. It has one operation: processBillingSuspendResume.

When the action code is SUSPEND or RESUME and the ProductType is a service bundle or an account-level subscription or account-level discount, then the ProcessFulfillmentOrderBillingBRMCommsSuspendResumeSubProcess is called.

The following operations are done by this process:

  • When the action code is SUSPEND or RESUME and the product type is a service bundle.

    ProcessFulfillmentOrderBillingBRMCommsSuspendResumeSubProcess converts the ProcessFulfillmentOrderBillingEBM into an Oracle BRM-specific message and calls the PCM_OP_CUST_SET_STATUS Oracle BRM opcode.

    When the action code is SUSPEND, then the ProcessFulfillmentOrderBillingBRMCommsSuspendResumeSubProcess passes the Flag= 10102.

    When the action code is RESUME, then the ProcessFulfillmentOrderBillingBRMCommsSuspendResumeSubProcess passes the Flag= 10100.

  • When the action code is SUSPEND or RESUME and the product type is Account Level Discount:

    ProcessFulfillmentOrderBillingBRMCommsSuspendResumeSubProcess converts the ProcessFulfillmentOrderBillingEBM into an Oracle BRM-specific message and calls the PCM_OP_SUBSCRIPTION_SET_DISCOUNT_STATUS Oracle BRM opcode.

    When the action code is SUSPEND, then the ProcessFulfillmentOrderBillingBRMCommsSuspendResumeSubProcess passes the Flag= 2.

    When the action code is RESUME, then the ProcessFulfillmentOrderBillingBRMCommsSuspendResumeSubProcess passes the Flag= 1.

  • When the action code is SUSPEND or RESUME and the product type is Account Level Subscription.

    ProcessFulfillmentOrderBillingBRMCommsSuspendResumeSubProcess converts the ProcessFulfillmentOrderBillingEBM into an Oracle BRM-specific message and calls the PCM_OP_SUBSCRIPTION_SET_PRODUCT_STATUS Oracle BRM opcode.

    When the action code is SUSPEND, then the ProcessFulfillmentOrderBillingBRMCommsSuspendResumeSubProcess passes the Flag= 2.

    When the action code is RESUME, then the ProcessFulfillmentOrderBillingBRMCommsSuspendResumeSubProcess passes the Flag= 1.

    For Operation 1, a onetime penalty charge may or may not be associated.

  • When a onetime penalty charge is associated with the service bundle, then depending on the action code, the onetime charge gets added in the following manner:

    When the action code is SUSPEND, the onetime charge gets added first.

    ProcessFulfillmentOrderBillingBRMCommsSuspendResumeSubProcess converts the ProcessFulfillmentOrderBillingEBM into an Oracle BRM-specific message and calls the PCM_OP_SUBSCRIPTION_PURCHASE_DEAL Oracle BRM opcode.

    After the onetime charge is added, then Operation 1 is run to SUSPEND the service bundle.

    When the action code is RESUME, the onetime charge gets added after the service bundle is resumed.

    Operation 1 is run to RESUME the service bundle.

    Afterwards, the onetime charge gets added:

    ProcessFulfillmentOrderBillingBRMCommsSuspendResumeSubProcess converts the ProcessFulfillmentOrderBillingEBM into an Oracle BRM-specific message and calls the PCM_OP_SUBSCRIPTION_PURCHASE_DEAL Oracle BRM opcode.

13.5.6 ProcessFulfillmentOrderBillingBRMCommsUpdateSubProcess

The ProcessFulfillmentOrderBillingBRMCommsUpdateSubProcess is a synchronous BPEL process that is called by the ProcessFulfillmentOrderBillingBRMCommsProvABCSImpl. This call depends on the action code present on the order line and also the type of product. It has one operation: processBillingUpdate.

The structure of the message coming in ProcessFulfillmentOrderBillingBRMCommsUpdateSubProcess comprises:

  • ProcessFulfillmentOrderBillingEBM

  • XREFPopulate

  • XREFDelete

When the action code is UPDATE and the product type is a service bundle or an account-level subscription or account-level discount, then the ProcessFulfillmentOrderBillingBRMCommsUpdateSubProcess is called.

This process supports the following update scenarios:

  • Update of the service ID for a particular service bundle.

    During this scenario, users can update the service ID for one or more service bundles as part of regular modify orders or as part of Move-Add.

    ProcessFulfillmentOrderBillingBRMCommsUpdateSubProcess converts the ProcessFulfillmentOrderBillingEBM into an Oracle BRM-specific message and calls the PCM_OP_CUST_UPDATE_SERVICES Oracle BRM opcode.

  • Price Override

    During this scenario, users can change the PriceOverride on a product line.

    ProcessFulfillmentOrderBillingBRMCommsUpdateSubProcess converts the ProcessFulfillmentOrderBillingEBM into an Oracle BRM-specific message and calls the PCM_OP_SUBSCRIPTION_SET_PRODINFO Oracle BRM opcode.

  • Discount Override

    During this scenario, users can change the DiscountOverride on a product line.

    ProcessFulfillmentOrderBillingBRMCommsUpdateSubProcess converts the ProcessFulfillmentOrderBillingEBM into an Oracle BRM-specific message and calls the PCM_OP_SUBSCRIPTION_SET_PRODINFO Oracle BRM opcode.

  • TBO End Date

    During this scenario, users can change the EffectiveEndDate on a product line.

    ProcessFulfillmentOrderBillingBRMCommsUpdateSubProcess converts the ProcessFulfillmentOrderBillingEBM into an Oracle BRM-specific message and calls the PCM_OP_SUBSCRIPTION_SET_PRODINFO Oracle BRM opcode in case of SUSCRIPTION products and calls PCM_OP_SUBSCRIPTION_SET_DISCOUNTINFO in case of DISCOUNT products.

13.5.7 ProcessFulfillmentOrderBillingBRMCommsDeleteSubProcess

The ProcessFulfillmentOrderBillingBRMCommsDeleteSubProcess is a synchronous BPEL process that is called by ProcessFulfillmentOrderBillingBRMCommsProvABCSImpl. This call depends on the action code present on the order line and also the type of product. It has one operation: processBillingDelete.

When the action code is DELETE and the product type is a service bundle or an account-level subscription or account-level discount, then the ProcessFulfillmentOrderBillingBRMCommsDeleteSubProcess is called.

The following operations are done by this process:

  • When the action code is DELETE and the product type is Service Bundle, the ProcessFulfillmentOrderBillingBRMCommsDeleteSubProcess converts the ProcessFulfillmentOrderBillingEBM into an Oracle BRM-specific message and calls the PCM_OP_CUST_SET_STATUS Oracle BRM opcode.

  • The ProcessFulfillmentOrderBillingBRMCommsDeleteSubProcess passes the StatusFlag=4 and Status = 10103 in this case.

  • When the action code is DELETE and the product type is Discount, the ProcessFulfillmentOrderBillingBRMCommsDeleteSubProcess converts the ProcessFulfillmentOrderBillingEBM into an Oracle BRM-specific message and calls the PCM_OP_SUBSCRIPTION_CANCEL_DISCOUNT Oracle BRM opcode.

  • When the action code is DELETE and the product type is Account Level Subscription, the ProcessFulfillmentOrderBillingBRMCommsDeleteSubProcess converts the ProcessFulfillmentOrderBillingEBM into an Oracle BRM-specific message and calls the PCM_OP_SUBSCRIPTION_CANCEL_PRODUCT Oracle BRM opcode.

  • During these operations, the ProcessFulfillmentOrderBillingBRMCommsDeleteSubProcess, also checks for the existence of any onetime penalty charge. If present, then the ProcessFulfillmentOrderBillingBRMCommsDeleteSubProcess converts the ProcessFulfillmentOrderBillingEBM into an Oracle BRM-specific message and calls the PCM_OP_SUBSCRIPTION_PURCHASE_DEAL Oracle BRM opcode.

13.5.8 ProcessFulfillmentOrderBillingResponseOSMCFSCommsJMSProducer

The ProcessFulfillmentOrderBillingResponseOSMCFSCommsJMSProducer is a BPEL process that has an adapter service, which produces the order response messages to the AIA_UPDBO_IN_JMSQ.

This process has only one operation: Produce_ProcessFOBResponse to produce the message into the AIA_UPDBO_IN_JMSQ AIA queue. This operation is called after the order is interfaced into Oracle BRM.