11 Implementing the Synchronize Fulfillment Order Billing Account Business Flow

This chapter describes the Synchronize Fulfillment Order Billing Account business flow and explains how the Oracle Communications Order to Cash Integration Pack for Siebel customer relationship management (Siebel CRM), Oracle Communications Order and Service Management (OSM), and Oracle Communications Billing and Revenue Management (BRM) (the integration) implements the business flow using BRM interfaces, communications industry-specific Oracle Application Integration Architecture (Oracle AIA) components, and integration services.

Overview of the Synchronize Fulfillment Order Billing Account Business Flow

The following Pre-Built Integration option enables the Synchronize Fulfillment Order Billing Account business flow:

  • Oracle Communications Order to Cash for Siebel CRM, OSM, and BRM Pre-Built Integration option

The Synchronize Fulfillment Order Billing Account business flow supports the following integration flows:

  • Interfacing Orders to Create Customer Data in BRM

    This integration flow leverages the Create/Sync Customer Account integration flow, which enables the synchronization of customer information from Siebel CRM to BRM.

    See "Understanding the Process Integration for Customer Management" for more information about the Create/Sync Customer Account integration flow.

  • Payment on Order

Note:

In this business flow, the CommsProcessBillingAccountListEBF enterprise business flow (EBF) communicates directly with application business connector services (ABCS).

Although direct communication between EBF and ABCS enhances performance for this pre-built integration flow, Oracle recommends that you follow the canonical model when you develop your own integration flows. In the canonical model, an EBF can invoke only an enterprise business service (EBS), which in turn invokes the ABCS. This model allows the EBF to be application agnostic.

For more information about the canonical model and developing integration flows, see Oracle Fusion Middleware Developer's Guide for Oracle Application Integration Architecture Foundation Pack.

The Interfacing Orders to Create Customer Data in BRM integration flow uses the following services:

  • ProcessFulfillmentOrderBillingAccountListOSMCFSCommsJMSConsumer

  • CommsProcessFulfillmentOrderBillingAccountListEBF

  • CommsProcessBillingAccountListEBF

  • ProcessFulfillmentOrderBillingAccountListResponseOSMCFSCommsJMSProducer

  • From the process integration for Customer Management (see "Integration Services" for more information):

    • CommunicationsCustomerPartyEBSV2Resequencer (from the Create/Sync Customer Account integration flow)

    • QueryCustomerPartyListSiebelProvABCSImplV2 (from the Create/Sync Customer Account integration flow)

    • ProcessAccountHierarchyListSiebelCommsProvABCSImpl

    • SyncCustomerPartyListBRMCommsProvABCSImpl

The Payment on Order integration flow uses the following services:

  • CommsProcessFulfillmentOrderBillingAccountListEBF

  • QueryReceivedPaymentListSiebelCommsProvABCSImpl

  • CreateReceivedPaymenListtBRMCommsProvABCSImpl

Figure 11-1 illustrates these integration flows.

Figure 11-1 Interfacing Orders to Create Customer Data in BRM Sequence Diagram

This figure is described in the following text.

The integration interfaces orders to create customer data in BRM as follows:

  1. OSM drops a message into the AIA_CRTCUST_OUT_JMSQ JMS queue.

  2. The ProcessFulfillmentOrderBillingAccountListOSMCFSCommsJMSConsumer service picks up the message and sends it to the CommsProcessFulfillmentOrderBillingAccountListEBF service.

  3. CommsProcessFulfillmentOrderBillingAccountListEBF transforms the ProcessFulfillmentOrderBillingAccountListEBM message into the ProcessBillingAccountListEBM message.

  4. CommsProcessFulfillmentOrderBillingAccountListEBF checks the value of the O2C.CorporateHierarchyAccountType property in the AIAConfigurationProperties.xml file.

    If the value matches the account type on the order:

    1. CommsProcessFulfillmentOrderBillingAccountListEBF sends ProcessBillingAccountListEBM to the ProcessAccountHierarchyListSiebelCommsProvABCSImpl service.

    2. ProcessAccountHierarchyListSiebelCommsProvABCSImpl transforms ProcessBillingAccountListEBM into an application business message (ABM) and uses it to invoke the Siebel CRM SWI Account Hierarchy web service with the query operation.

    3. The query operation of SWI Account Hierarchy fetches the complete linear account hierarchy from the Siebel CRM database and sends a response ABM to ProcessAccountHierarchyListSiebelCommsProvABCSImpl.

    4. ProcessAccountHierarchyListSiebelCommsProvABCSImpl transforms the response ABM into the ProcessBillingAccountListResponseEBM message and sends it to CommsProcessFulfillmentOrderBillingAccountListEBF.

    5. CommsProcessFulfillmentOrderBillingAccountListEBF transforms ProcessBillingAccountListResponseEBM into the ProcessBillingAccountListEBM message and sends it to the CommsProcessBillingAccountListEBF service.

    If the value of O2C.CorporateHierarchyAccountType does not match the account type on the order, or there is no value, CommsProcessFulfillmentOrderBillingAccountListEBF send ProcessBillingAccountListEBM to the CommsProcessBillingAccountListEBF service.

  5. CommsProcessBillingAccountListEBF transforms ProcessBillingAccountListEBM into the QueryCustomerPartyListEBM message and sends it to the QueryCustomerPartyListSiebelProvABCSImplV2 service.

  6. QueryCustomerPartyListSiebelProvABCSImplV2 transforms QueryCustomerPartyListEBM into an application business message (ABM) and uses it to invoke the Siebel CRM SWICustomerParty web service with the query operation.

  7. The query operation of SWICustomerParty fetches the account details from the Siebel CRM database and sends a response ABM to QueryCustomerPartyListSiebelProvABCSImplV2.

  8. QueryCustomerPartyListSiebelProvABCSImplV2 transforms the response ABM into the QueryCustomerPartyListResponseEBM message and sends it to CommsProcessBillingAccountListEBF.

  9. CommsProcessBillingAccountListEBF transforms QueryCustomerPartyListResponseEBM into the SyncCustomerPartyListEBM message and sends it to the SyncCustomerPartyListBRMCommsProvABCSImpl service through the CommunicationsCustomerPartyEBSV2Resequencer.

  10. SyncCustomerPartyListBRMCommsProvABCSImpl invokes any of the following opcodes to create or update accounts:

    • Create accounts:

      • PCM_OP_CUST_COMMIT_CUSTOMER

    • Update accounts:

      • PCM_OP_CUST_UPDATE_CUSTOMER

      • PCM_OP_CUSTCARE_MOVE_ACCT

  11. The opcodes send output response messages, which SyncCustomerPartyListBRMCommsProvABCSImpl transforms into the SyncCustomerPartyListResponseEBM message and sends to CommsProcessBillingAccountListEBF in an asynchronous delayed response mode.

  12. If the owner account on the order is different than the billing account:

    1. CommsProcessBillingAccountListEBF transforms SyncCustomerPartyListResponseEBM into ProcessBillingAccountListEBM and sends it to ProcessCollectionSharingBRMCommsProvABCSImpl.

    2. ProcessCollectionSharingBRMCommsProvABCSImpl checks if the /billinfo POID of the owner account on the order exists in the COLLECTION_GROUP_OWNER_ID cross-reference table and invokes any of the following opcodes:

      • POID PCM_OP_COLLECTIONS_GROUP_CREATE: If the /billinfo POID does not exist in the cross-reference table, creates a collections sharing group with owner account's primary billing profile as owner and the specified billing profile of the billing account as member.

      • PCM_OP_COLLECTIONS_GROUP_ADD_MEMBER: If the /billinfo POID already exists in the cross-reference table, adds the specified billing profile of the billing account to the collections sharing group of the owner account's primary billing profile.

      • PCM_OP_COLLECTIONS_GROUP_DELETE_MEMBER: Deletes the billing profile of the billing account from the collections sharing group of the owner account's primary billing profile.

      • PCM_OP_COLLECTIONS_GROUP_DELETE: If the member to be deleted is the only member in the collections sharing group, deletes the entire collections sharing group.

    3. The opcodes send output response messages, which ProcessCollectionSharingBRMCommsProvABCSImpl transforms into the ProcessBillingAccountListResponseEBM message.

    If the customer account on the order is the same as the billing account, CommsProcessBillingAccountListEBF transforms SyncCustomerPartyListResponseEBM into ProcessBillingAccountListResponseEBM.

  13. CommsProcessBillingAccountListEBF sends ProcessBillingAccountListResponseEBM to CommsProcessFulfillmentOrderBillingAccountListEBF in an asynchronous delayed response mode.

  14. If ProcessFulfillmentOrderBillingAccountListEBM contains a payment-related billing profile ID:

    1. CommsProcessFulfillmentOrderBillingAccountListEBF transforms ProcessFulfillmentOrderBillingAccountListEBM into the QueryReceivedPaymentListEBM message and sends it to the QueryReceivedPaymentListSiebelCommsProvABCSImpl service.

    2. QueryReceivedPaymentListSiebelCommsProvABCSImpl transforms QueryReceivedPaymentListEBM into the OrderDetailQueryPageInput ABM and uses it to invoke the Siebel CRM OrderDetailWebService web service with the query operation.

    3. OrderDetailWebService gets the payment details corresponding to the payment-associated billing profile ID and sends OrderDetailQueryPageOutput to QueryReceivedPaymentListSiebelCommsProvABCSImpl.

    4. QueryReceivedPaymentListSiebelCommsProvABCSImpl transforms OrderDetailQueryPageOutput into the QueryReceivedPaymentListResponseEBM message and sends it to CommsProcessFulfillmentOrderBillingAccountListEBF.

    5. CommsProcessFulfillmentOrderBillingAccountListEBF transforms QueryReceivedPaymentListResponseEBM into the CreateReceivedPaymentListEBM and sends it to the CreateReceivedPaymentListBRMCommsProvABCSImpl service.

    6. CreateReceivedPaymentListBRMCommsProvABCSImpl invokes the PCM_OP_PYMT_COLLECT opcode to record the payment.

    7. PCM_OP_PYMT_COLLECT sends a response message, which CreateReceivedPaymentListBRMCommsProvABCSImpl transforms into the CreateReceivedPaymentListResponseEBM message and sends to CommsProcessFulfillmentOrderBillingAccountListEBF.

  15. CommsProcessFulfillmentOrderBillingAccountListEBF transforms ProcessBillingAccountListResponseEBM into ProcessFulfillmentOrderBillingAccountListResponseEBM messages and sends it to the ProcessFulfillmentOrderBillingAccountListResponseOSMCFSCommsJMSProducer service.

  16. ProcessFulfillmentOrderBillingAccountListResponseOSMCFSCommsJMSProducer drops a message into the AIA_UPDCUST_IN_JMSQ queue where OSM receives updates.

Defining Transaction Boundaries and Recovery Details

For this flow there are two transaction boundaries. Table 11-1 describes the transactions involved, the database operations, and what actions to take in case of an error.

If any account creation causes a system or business error, any further updates to the account (and thereby processing of other orders for that account) do not occur until the error is fixed. All updates for that account are locked in the sequencer table. If the error is a business error then the message must be removed from the sequencer table and if the error is a system error then the message must be resubmitted.

See "Using Error Type to Control Response to Order Fallout" for more information on system and business errors.

The following services are involved:

  • ProcessFulfillmentOrderBillingAccountListOSMCFSCommsJMSConsumer

  • CommsProcessFulfillmentOrderBillingAccountListEBF

  • CommsProcessBillingAccountListEBF

  • QueryCustomerPartyListSiebelProvABCSImplV2

  • CommunicationsCustomerPartyEBSV2Resequencer

  • SyncCustomerPartyListBRMCommsProvABCSImpl

  • ProcessFulfillmentOrderBillingAccountListResponseOSMCFSCommsJMSProducer

Table 11-1 Transaction Boundaries and Recovery Details

Transaction DB Operations In Case of Error Recovery

ProcessFulfillmentOrderBillingAccountListOSMCFSCommsJMSConsumer routes the message to CommsProcessFulfillmentOrderBillingAccountListEBF, which extracts relevant customer data and then routes message to CommsProcessBillingAccountListEBF. The message is then routed to QueryCustomerPartyListSiebelProvABCSImplV2, which fetches account details and a response is sent back to CommsProcessBillingAccountListEBF that invokes CommunicationsCustomerPartyEBSV2Resequencer.

AIA cross-reference entries for some of the Siebel CRM entries.

Message goes into the sequencer table.

Rollback JMS message to the originating queue AIA_CRTCUST_OUT_JMSQ_ErrorQ.

Resubmit the order from AIA_CRTCUST_OUT_JMSQ_ErrorQ.

CommunicationsCustomerPartyEBSV2Resequencer instantiates SyncCustomerPartyListBRMCommsProvABCSImpl, which invokes BRM to either create or update an account. If successful a response is sent back to CommsProcessBillingAccountListEBF. A response message is then routed to CommsProcessFulfillmentOrderBillingAccountListEBF. ProcessFulfillmentOrderBillingAccountListRespOSMCFSCommsJMSProducer produces the response message to AIA_UPDCUST_IN_JMSQ.

AIA cross-reference entries.

Message goes to queue AIA_UPDCUST_JMSQ.

Rollback cross-reference transactions.

Rollback data created in BRM.

Message goes back to the sequencer table.

Resubmit the message from the sequencer table.


Note:

If any order contains more than one account and a failure occurs after any account is processed successfully but the subsequent account fails, then error recovery may become difficult based on the point of failure. Customers must first examine the point of failure and then determine if it's necessary to recover the BPEL instance from the recovery console.

See the discussion of configuring fault policies to not issue rollback messages in Oracle Fusion Middleware Developer's Guide for Oracle Application Integration Architecture Foundation Pack for more information about rollback procedures.

BRM Interfaces

The Synchronize Fulfillment Order Billing Account business flow uses the following BRM interfaces:

Table 11-2 BRM Interfaces

Opcode Purpose

PCM_OP_PYMT_COLLECT

Records a payment for the billing account and billing profile on the order.

PCM_OP_CUST_COMMIT_CUSTOMER

As part of the Create/Sync Account integration flow, creates a new account with one or more /billinfo and /payinfo objects.

PCM_OP_CUST_UPDATE_CUSTOMER

As part of the Create/Sync Account integration flow, updates account information (name, address, phone), contact information, and billing information.

PCM_OP_CUSTCARE_MOVE_ACCT

As part of the Create/Sync Account integration flow, moves a child account to a new parent account.

PCM_OP_COLLECTIONS_GROUP_CREATE

As part of the Create/Sync Account integration flow, creates a collections sharing group with the customer account as the owner and the billing account as a member.

PCM_OP_COLLECTIONS_GROUP_ADD_MEMBER

As part of the Create/Sync Account integration flow, adds the billing account as a member of a collections sharing group owned by the customer account.

PCM_OP_COLLECTIONS_GROUP_DELETE_MEMBER

As part of the Create/Sync Account integration flow, removes the billing account as a member of a collections sharing group owned by the customer account.

PCM_OP_COLLECTIONS_GROUP_DELETE

As part of the Create/Sync Account integration flow, deletes the collections sharing group owned by the customer account.


See BRM Developer's Reference Guide for detailed descriptions of individual opcodes.

Siebel CRM Interfaces

The Synchronize Fulfillment Order Billing Account business flow uses the following Siebel CRM interface:

  • OrderDetailWebService: This web service queries orders and retrieves payment details.

See Siebel CRM Web Services Reference for more information about this web service.

See "Siebel CRM Interfaces" for more information about the web services used by the Create/Sync Account integration flow.

Industry Oracle AIA Components

The Synchronize Fulfillment Order Billing Account business flow uses the following communications industry-specific Oracle AIA components:

  • FufillmentOrderEBO

  • ProcessFulfillmentOrderBillingAccountListEBM

  • ProcessBillingAccountListEBM

  • ProcessFulfillmentOrderBillingAccountListResponseEBM

  • ReceivedPaymentEBM

  • ReceivedPaymentEBO

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).

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.

See Oracle Fusion Middleware Developer's Guide for Oracle Application Integration Architecture Foundation Pack for more information about:

  • Configuring and using OER as the Oracle SOA Repository to provide the AIA Reference doc link

  • Extending existing schemas and EBOs

See "Industry Oracle AIA Components" for more information about the industry Oracle AIA components used by the Create/Sync Account integration flow.

Integration Services

The following services are delivered with the Synchronize Fulfillment Order Billing Account business flow as part of the Interfacing Orders to Create Customer Data in BRM integration flow:

The following additional services are delivered with the Synchronize Fulfillment Order Billing Account business flow as part of the Create/Sync Customer Account integration flow:

ProcessFulfillmentOrderBillingAccountListOSMCFSCommsJMSConsumer

The ProcessFulfillmentOrderBillingAccountListOSMCFSCommsJMSConsumer is a Mediator process that has a JMS Adapter Service, which continuously polls the Oracle AIA queue AIA_CRTCUST_OUT_JMSQ.

The ProcessFulfillmentOrderBillingAccountListOSMCFSCommsJMSConsumer dequeues the ProcessFulfillmentOrderBillingAccountListEBM message and routes it to the CommsProcessFulfillmentOrderBillingAccountListEBF.

This service has one operation: Consume_Message.

CommsProcessFulfillmentOrderBillingAccountListEBF

The CommsProcessFulfillmentOrderBillingAccountListEBF is an asynchronous BPEL process. It does the following:

  1. Receives the ProcessFulfillmentOrderBillingAccountListEBM from OSM with the target BRM instance identified.

  2. Transforms ProcessFulfillmentOrderBillingAccountListEBM into ProcessBillingAccountListEBM.

  3. If there is a value for the O2C.CorporateHierarchyAccountType configuration property, the service:

    1. Sends ProcessBillingAccountListEBM to ProcessAccountHierarchyListSiebelCommsProvABCSImpl.

    2. Receives ProcessBillingAccountListResponseEBM from ProcessAccountHierarchyListSiebelCommsProvABCSImpl.

    3. Transforms ProcessBillingAccountListResponseEBM into ProcessBillingAccountListEBM.

  4. Sends ProcessBillingAccountListEBM to CommsProcessBillingAccountListEBF

  5. Receives ProcessBillingAccountListResponseEBM from CommsProcessBillingAccountListEBF.

  6. If there is a payment-related billing profile ID on the order, the service:

    1. Transforms ProcessFulfillmentOrderBillingAccountListEBM into QueryReceivedPaymentListEBM and sends it to QueryReceivedPaymentListSiebelCommsProvABCSImpl

    2. Receives QueryReceivedPaymentListResponseEBM from QueryReceivedPaymentListSiebelCommsProvABCSImpl

    3. Transforms QueryReceivedPaymentListResponseEBM to CreateReceivedPaymentListEBM and sends it to CreateReceivedPaymentListBRMCommsProvABCSImpl

    4. Receives CreateReceivedPaymentListResponseEBM from CreateReceivedPaymentListBRMCommsProvABCSImpl

  7. Transforms ProcessBillingAccountListResponseEBM into ProcessFulfillmentOrderBillingAccountListResponseEBM and drops it into the AIA_UPDCUST_IN_JMSQ queue to notify OSM of the payment and customer synchronization status.

This process has the following operations.

  • Operation: initiate

    This is an asynchronous operation to start the CommsProcessFulfillmentOrderBillingAccountListEBF.

  • Operation: CallbackResponse

    This is an asynchronous callback operation. It makes a call back to the calling process, and passes a FaultMsg in the EBMHeader in case of any error received from CommsProcessBillingAccountListEBF.

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 (ProcessFulfillmentOrderBillingAccountListEBM) 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, 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.

See Oracle Fusion Middleware Developer's Guide for Oracle Application Integration Architecture Foundation Pack for more information about EBFs.

CommsProcessBillingAccountListEBF

The CommsProcessBillingAccountListEBF is an asynchronous BPEL process. It does the following:

  1. Receives ProcessBillingAccountListEBM from CommsProcessFulfillmentOrderBillingAccountListEBF

  2. Transforms ProcessBillingAccountListEBM into QueryCustomerPartyListEBM payload and sends it to QueryCustomerPartyListSiebelProvABCSImpl

  3. Receives QueryCustomerPartyListResponseEBM from QueryCustomerPartyListSiebelProvABCSImpl

  4. Transforms QueryCustomerPartyListResponseEBM into SyncCustomerPartyListEBM and sends it to CommunicationsCustomerPartyEBSV2Resequencer

  5. Receives SyncCustomerPartyListResponseEBM from SyncCustomerPartyListBRMCommsProvABCSImpl

  6. Transforms SyncCustomerPartyListResponseEBM into ProcessBillingAccountListResponseEBM and sends it to CommsProcessFulfillmentOrderBillingAccountListEBF

QueryReceivedPaymentListSiebelCommsProvABCSImpl

The QueryReceivedPaymentListSiebelCommsProvABCSImpl service is a BEPL process. It queries Siebel CRM for payment information recorded on sales orders. It processes only payments with the payment status of New.

This service does the following:

  1. Receives QueryReceivedPaymentListEBM from CommsProcessFulfillmentOrderBillingAccountListEBF

  2. Transforms QueryReceivedPaymentListEBM into an OrderDetailQueryPage_Input message containing an order ID, and sends the message to OrderDetailWebService

  3. Receives the OrderDetailQueryPage_Output response message from OrderDetailWebService

  4. Transforms OrderDetailQueryPage_Output into QueryReceivedPaymentListResponseEBM and sends it to CommsProcessFulfilmentOrderBillingAccountListEBF

CreateReceivedPaymentListBRMCommsProvABCSImpl

The CreateReceivedPaymentListBRMCommsProvABCSImpl service is a BEPL process. It invokes opcodes to create payments in BRM.

This service does the following:

  1. Receives CreateReceivedPaymentListEBM from CommsProcessFulfillmentOrderBillingAccountListEBF

  2. Transforms CreateReceivedPaymentListEBM into the PCM_OP_PYMT_COLLECT input message containing payment information, and invokes the opcode

  3. Receives the response from the opcode

  4. Transforms the opcode response into CreateReceivedPaymentListResponseEBM and sends it to CommsProcessFulfilmentOrderBillingAccountListEBF

ProcessFulfillmentOrderBillingAccountListResponseOSMCFSCommsJMSProducer

The ProcessFulfillmentOrderBillingAccountListResponseOSMCFSCommsJMSProducer is a BPEL process that has an adapter service, which produces the customer response messages to AIA_UPDCUST_IN_JMSQ.

This process has one operation: Produce_PFOBALResponse to produce the message into the AIA_UPDCUST_IN_JMSQ queue. This operation is called after the account or customer is interfaced in BRM.