11 Implementing the Synchronize Fulfillment Order Billing Account Business Flow

This chapter explains how the Oracle Application Integration Architecture (Oracle AIA) Oracle Communications Order to Cash Integration Pack (the integration) implements the Synchronize Fulfillment Order Billing Account business flow.

About the Synchronize Fulfillment Order Billing Account Business Flow

The following pre-built integration options enable the Synchronize Fulfillment Order Billing Account business flow:

  • Order to Cash for Oracle Communications Order and Service Management (OSM)

  • Order to Cash for Oracle Communications Billing and Revenue Management (BRM)

  • Order to Cash for Siebel CRM

This business flow includes the following integration flows:

  • Interfacing Orders to Create Customer Data.

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

About the Interfacing Orders to Create Customer Data Integration Flow

This integration flow uses the following services:

  • ProcessFulfillmentOrderBillingAccountListOSMCFSCommsJMSConsumer

  • ProcessFulfillmentOrderBillingAccountListSiebelCommsJMSConsumer

  • CommsProcessFulfillmentOrderBillingAccountListEBF

  • ProcessFulfillmentOrderBillingAccountListResponseOSMCFSCommsJMSProducer

  • From the process integration for Customer Management:

    • ProcessAccountHierarchyListSiebelCommsProvABCSImpl

    • CommsProcessBillingAccountListEBF

    • QueryCustomerPartyListSiebelProvABCSImplV2

    • CommunicationsCustomerPartyEBSV2Resequencer

    • SyncCustomerPartyListBRMCommsProvABCSImpl

    • ProcessCollectionSharingBRMCommsProvABCSImpl

Figure 11-1 shows the sequence of integration services for the Interfacing Orders to Create Customer Data integration flow.

Figure 11-1 Synchronize Fulfillment Order Billing Account Sequence

This figure is described in the following text.

The integration interfaces orders to create accounts in BRM based on Siebel CRM data as follows:

  1. OSM adds a message to the AIA_CRTCUST_OUT_JMSQ JMS queue.

  2. The ProcessFulfillmentOrderBillingAccountListOSMCFSCommsJMSConsumer service subscribed to the queue picks up the message, identifies that the order originally came from Siebel CRM based on the schemeAgencyID in the EBM, and adds the message to the AIA_CRTCUST_OUT_Siebel_JMSQ queue.

  3. The ProcessFulfillmentOrderBillingAccountListSiebelCommsJMSConsumer subscribed to the queue picks up the message and sends it to the CommsProcessFulfillmentOrderBillingAccountListEBF service.

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

  5. CommsProcessFulfillmentOrderBillingAccountListEBF checks the value of the O2C.CorporateHierarchyAccountType property.

    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.

  6. CommsProcessBillingAccountListEBF transforms ProcessBillingAccountListEBM into the QueryCustomerPartyListEBM message, identifies that the order originally came from Siebel CRM based on the sender ID in the EBM, and sends the message to the QueryCustomerPartyListSiebelProvABCSImplV2 service.

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

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

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

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

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

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

  13. 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 owner account on the order is the same as the billing account, CommsProcessBillingAccountListEBF transforms SyncCustomerPartyListResponseEBM into ProcessBillingAccountListResponseEBM.

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

  15. If ProcessFulfillmentOrderBillingAccountListEBM contains a payment-related billing profile ID, CommsProcessFulfillmentOrderBillingAccountListEBF invokes the Payment on Order integration flow. See "About the Payment on Order Integration Flow".

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

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

About the Payment on Order Integration Flow

This integration flow uses the following services:

  • ProcessFulfillmentOrderBillingAccountListOSMCFSCommsJMSConsumer

  • CommsProcessFulfillmentOrderBillingAccountListEBF

  • QueryReceivedPaymentListSiebelCommsProvABCSImpl

  • CreateReceivedPaymentListBRMCommsProvABCSImpl

  • ProcessFulfillmentOrderBillingAccountListResponseOSMCFSCommsJMSProducer

Figure 11-2 shows the sequence of integration services for the Payment on Order integration flow. This flow is initiated as part of the Synchronize Fulfillment Order Billing Account business flow after the customer has been synchronized to BRM.

Figure 11-2 Payment on Order Integration Flow Sequence

The figure is described in the following text.

The integration registers payments submitted at order time 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 and initiates the Create/Sync Customer Account integration flow.

  4. After the Create/Sync Customer Account integration flow is complete, 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.

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

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

Defining Transaction Boundaries and Recovery Details

For this business 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.

Table 11-1 Transaction Boundaries and Recovery Details

Transaction DB Operations In Case of Error Recovery

ProcessFulfillmentOrderBillingAccountListSiebelCommsJMSConsumer sends the message to CommsProcessFulfillmentOrderBillingAccountListEBF, which extracts relevant customer data.

If account hierarchy is required, the EBF sends the message to ProcessAccountHierarchyListSiebelCommsProvABCSImpl, which queries Siebel CRM for the hierarchy.

Siebel CRM responds and the ABCS sends the response to CommsProcessFulfillmentOrderBillingAccountListEBF.

The EBF then sends the message to CommsProcessBillingAccountListEBF. This EBF sends the message to QueryCustomerPartyListSiebelProvABCSImplV2, which queries account details from Siebel CRM. Siebel CRM responds, and the ABCS sends the response to CommsProcessBillingAccountListEBF. The EBF sends the message to CommunicationsCustomerPartyEBSV2Resequencer.

Oracle AIA cross-reference tables updated.

Message goes into the sequencer table.

Message available in Enterprise Manager Fusion Middleware Control in recoverable state.

Retry or abort the message from Enterprise Manager Fusion Middleware Control.

CommunicationsCustomerPartyEBSV2Resequencer sends a message to SyncCustomerPartyListBRMCommsProvABCSImpl, which invokes BRM opcodes to create accounts.

BRM responds with a confirmation, which the ABCS sends to CommsProcessBillingAccountListEBF.

CommsProcessBillingAccountListEBF sends a message to ProcessCollectionSharingBRMCommsProvABCSImpl, which invokes BRM opcodes to create collections sharing groups.

BRM responds with a confirmation, which the ABCS sends to CommsProcessBillingAccountListEBF.

The EBF sends the message to CommsProcessFulfillmentOrderBillingAccountListEBF, which sends it to ProcessFulfillmentOrderBillingAccountListResponseOSMCFSCommsJMSProducer. The producer drops the message into AIA_UPDCUST_IN_JMSQ.

Oracle AIA cross reference tables updated.

Message goes to AIA_UPDCUST_IN_JMSQ.

Accounts and collections sharing groups created in BRM.

Roll back Oracle AIA cross reference updates.

Roll back BRM account and collections sharing group creation.

Return message to sequencer table.

Resubmit message from 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 Oracle AIA processes for error handling and trace logging in Oracle Fusion Middleware Developer's Guide for Oracle SOA Core Extension 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_BILL_GROUP_MOVE_MEMBER

As part of the Create/Sync Account integration flow, modifies a hierarchical account group (moves an account between groups, creates a group if one doesn't exist, deletes a group if it is empty)

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.

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_PYMT_COLLECT

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


See Oracle Communications Billing and Revenue Management Developer's Reference for descriptions of these 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" in "Implementing the Synchronize Customer Account Business Flow" 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 following directories contain the industry component files:

  • Enterprise business object (EBO) and enterprise business message (EBM) XML schema files:

    Oracle_home/comms_home/source/soainfra/apps/AIAMetaData/AIAComponents/EnterpriseObjectLibrary/Industry/Communications/EBO/

  • Enterprise business service (EBS) WSDL files:

    Oracle_home/comms_home/source/soainfra/apps/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 the discussion of Oracle AIA assets extensibility patterns in Oracle Fusion Middleware Developer's Guide for Oracle SOA Core Extension for more information about extending 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 integration flow:

Additional services are delivered with the Synchronize Fulfillment Order Billing Account business flow as part of the Create/Sync Customer Account integration flow, which is part of the Synchronize Customer Account business flow. See "Integration Services" in "Implementing the Synchronize Customer Account Business Flow" for more information about these services.

ProcessFulfillmentOrderBillingAccountListOSMCFSCommsJMSConsumer

This consumer listens to the AIA_CRTCUST_OUT_JMSQ queue. It picks up ProcessFulfillmentOrderBillingAccountListEBM messages and adds the messages into the AIA_CRTCUST_OUT_Siebel_JMSQ queue.

ProcessFulfillmentOrderBillingAccountListSiebelCommsJMSConsumer

This consumer listens to the AIA_CRTCUST_OUT_Siebel_JMSQ queue. It picks up ProcessFulfillmentOrderBillingAccountListEBM messages and sends them to the CommsProcessFulfillmentOrderBillingAccountListEBF service.

CommsProcessFulfillmentOrderBillingAccountListEBF

This service is an asynchronous delayed response Business Process Execution Language (BPEL) process extracts customer data from the order. It loops through every order line and extracts customer accounts and billing profiles. It uses these data to call the services that query Siebel CRM for account information.

This service does the following:

  1. Receives ProcessFulfillmentOrderBillingAccountListEBM from ProcessFulfillmentOrderBillingAccountListOSMCommsJMSConsumer or ProcessFulfillmentOrderBillingAccountListSiebelCommsJMSConsumer.

  2. Transforms ProcessFulfillmentOrderBillingAccountListEBM into ProcessBillingAccountListEBM.

  3. If the value for the O2C.CorporateHierarchyAccountType Oracle AIA configuration property matches the account type on the order, 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 and CreateReceivedPaymentListResponseEBM into ProcessFulfillmentOrderBillingAccountListResponseEBM and sends it to ProcessFulfillmentOrderBillingAccountListResponseOSMCFSCommsJMSProducer.

OSM does not expect a response for errors. OSM uses Oracle AIA order fallout notification to generate a trouble ticket and change the order and line status to indicate failure.

If you are using an order management system other than OSM, you can send a response message for errors to the order management system based on the responseCode attribute of the DataArea of the ProcessFulfillmentOrderBillingAccountListEBM message from the order management system.

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

QueryReceivedPaymentListSiebelCommsProvABCSImpl

This BEPL process 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

This BEPL process 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

This JMS producer service receives the ProcessFulfillmentOrderBillingAccountListResponseEBM and drops it into the AIA_UPDCUST_IN_JMSQ queue.