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

Part Number E50337-01
Go to Documentation Home
Home
Go to Book List
Book List
Go to Table of Contents
Contents
Go to Feedback page
Contact Us

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

9 Implementing the Process Sales Order Fulfillment Business Flow

This chapter describes the Process Sales Order Fulfillment 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 Siebel CRM interfaces, communications industry-specific Oracle Application Integration Architecture (Oracle AIA) components, and integration services. It also describes how the integration supports order priorities and multiple price lists.

Process Sales Order Fulfillment Business Flow Overview

The following Pre-Built Integration options enable the Process Sales Order Fulfillment business flow:

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

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

The Oracle Communications Order to Cash for Siebel CRM and BRM Pre-Built Integration option includes a Test Orchestration Process (TOP) to test the ready-to-use order flow. You must replace the TOP with your own order management system. See Oracle Application Integration Architecture Installation and Upgrade Guide for Pre-Built Integrations for more information.

The Process Sales Order Fulfillment business flow supports the following integration flow:

  • Submitting Orders from Siebel CRM to OSM

Submitting Orders from Siebel CRM to OSM Integration Flow

This integration flow uses the following services:

  • ProcessSalesOrderFulfillmentSiebelCommsJMSConsumer

  • ProcessSalesOrderFulfillmentSiebelCommsReqABCSImpl

  • ProcessSalesOrderFulfillmentOSMCFSCommsJMSProducer

Figure 9-1 illustrates an order submitted from Siebel CRM to OSM using AIA.

Figure 9-1 Siebel CRM to OSM CFS Sequence Diagram

This image is described in the surrounding text.

When a new order process is initiated, the following events occur:

  1. A Siebel CRM user submits a new order.

  2. Siebel CRM creates an application business message (ABM) called SalesOrderABM with all the sales order details and enqueues the ABM in the AIA_SALESORDERJMSQUEUE queue.

  3. The ProcessSalesOrderFulfillmentSiebelCommsJMSConsumer service dequeues the ABM and passes it on to the ProcessSalesOrderFulfillmentSiebelCommsReqABCSImpl service.

  4. The ProcessSalesOrderFulfillmentSiebelCommsReqABCSImpl service transforms the ABM into an enterprise business message (EBM) called ProcessSalesOrderFulfillmentEBM and routes the EBM to the ProcessSalesOrderFulfillmentOSMCFSCommsJMSProducer service.

    The Siebel CRM order structure does not support multiple charge types for a single order line, but the order enterprise business object (EBO) structure does. For this reason, the order lines referencing a complex product of billing type Subscription and its component products of billing type Event (multi-event billing products) are transformed into a single EBO order line referencing a product with multiple charge types.

  5. The ProcessSalesOrderFulfillmentOSMCFSCommsJMSProducer service wraps the EBM into OSM CreateOrder message format and enqueues the CreateOrder message into the AIA_CRTFO_IN_JMSQ.

    The CreateOrder message is then wrapped in a SOAP envelope. OSM expects the following additional JMS properties to be set with the JMS payload:

    • JMSPriority

    • URI -- /osm/wsapi

    • _wls_mimehdrContent_Type -- text/xml; charset=utf-8

  6. The store and forward mechanism forwards the CreateOrder message from the AIA WebLogic server to the OSM WebLogic server.

    OSM receives the CreateOrder message and decomposes the order, creating EBMs to send for fulfillment and provisioning.

See "Understanding the Process Integration for Order Lifecycle Management" for more information on how OSM processes the order.

Defining Transaction Boundaries and Recovery Details

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

If order submission from Siebel CRM causes a system or business error, any further order to the account does not get processed until the error is fixed. All order submissions 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:

  • ProcessSalesOrderFulfillmentSiebelCommsJMSConsumer

  • ProcessSalesOrderFulfillmentSiebelCommsReqABCSImpl

  • ProcessSalesOrderFulfillmentOSMCFSCommsJMSProducer

Table 9-1 Transaction Boundaries and Recovery Details

Transaction DB Operations In Case of Error Recovery

ProcessSalesOrderFulfillmentSiebelCommsJMSConsumer passes the Siebel CRM message to ProcessSalesOrderFulfillmentSiebelCommsReqABCSImpl, which invokes transformation logic to convert that Siebel CRM message into an EBM. The EBM is then routed to ProcessSalesOrderFulfillmentOSMCFSCommsJMSProducer.

AIA cross-reference entries.

Rollback cross-reference transactions.

Rollback JMS message to AIA_SALESORDERJMSQUEUE_ErrorQ

Resubmit the order from either AIA_SALESORDERJMSQUEUE_ErrorQ or from Siebel CRM.


See "Configuring Oracle AIA Processes for Error Handling and Trace Logging", 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.

Supporting Order Priorities

Customers can add other order priority values in Siebel CRM. Additionally, customers can use the SWI_ORDER_JMS_PRIORITY mapping, which maps these string values to integers.

You are required to set up some JMS compatibility properties on the Siebel CRM queue and to make manual changes to seeded priority values.

See "Modifying the Order Priority Mapping" in Siebel Order Management Guide Addendum for Communications, Employee Asset-Based Ordering for more information about priority values.

The integration supports 10 priority values, 0-9, as dictated by JMS queuing technology. You can extend Siebel CRM to support priority values other than the four that are supported when delivered.

See the Siebel CRM product documentation for Lists of Values for more information.

These steps describe how the integration handles order priorities:

  1. When the order is submitted, Siebel CRM sets the JMS Priority message in the JMS headers and also populates the following field: ListOfSWIOrderIO/SWIOrder/OrderPriority.

  2. Based on the priority, the ProcessSalesOrderFulfillmentSiebelCommsJMSConsumer consumes the message and routes it to the ProcessSalesOrderFulfillmentSiebelCommsReqABCSImpl. This process does a lookup on the SALESORDER_PRIORITY domain value map (DVM) and populates the ProcessSalesOrderFulfillmentEBM/DataArea/ProcessSalesOrderFulfillment/FulfillmentPriorityCode.

  3. The ProcessSalesOrderFulfillmentOSMCFSCommsJMSProducer looks for the FulfillmentPriorityCode and does a lookup on SALESORDER_PRIORITY DVM for the JMS column and populates the priority in the JMS Headers in JMSPriority field.

  4. The store and forward (SAF) mechanism honors the JMS priority and picks up the message with high priority first and passes it to OSM CFS.

  5. OSM CFS and OSM Provisioning honor the priority through internal mechanisms. Higher priority orders are fulfilled and provisioned first, followed by lower priority orders.

  6. OSM is expected to maintain the priority of the orders and must populate the FulfillmentPriorityCode element in all outbound messages.

  7. The population of JMS priority from the FulfillmentPriorityCode is done using the BPEL assign activity as follows:

    Look up the DVM column for priority value and copy it to the JMSPriority field in JMS headers:

    <assign>
      <copy>
        <from expression="orcl:lookup-dvm('oramds:/apps/AIAMetaData/dvm/SALESORDER_PRIORITY.dvm','COMMON',bpws:getVariableData('priority_value'),'JMS',null)"/>
        <to variable="msg_priority"/>
      </copy>
      <copy>
        <from variable="msg_priority"/>
        <to variable="jmsHeaders" part="outboundHeader" query="/ns5:JMSOutboundHeadersAndProperties/ns5:JMSOutboundHeaders/ns5:JMSPriority"/>
      <copy>
    </assign>
    
    • jmsHeaders is a variable which is of type JMSOutboundHeadersAndProperties.

    • msg_priority is a string variable.

    The ProcessSalesOrderFulfillmentOSMCFSCommsJMSProducer follows this logic to populate the JMSPriority.

Other producers need not do a DVM lookup since the priority value is an integer and is directly populated in the EBMs in the FulfillmentPriorityCode. The integration can use this value to populate the JMS priority. OSM and Oracle AIA, unlike Siebel CRM, follow the same values for JMS priorities.

Supporting Multiple Price Lists

The Process Sales Order Fulfillment business flow supports multiple price lists on orders as follows:

  1. A Siebel CRM user submits an order with separate price lists for the order lines. Siebel CRM creates an application business message (ABM) containing the order information, including the price lists specified for the order header and order lines. While creating the ABM, Siebel CRM automatically populates empty price list order lines for the components of customizable products with the price list from the customizable product order line.

  2. Siebel CRM drops the ABM into the AIA_SALESORDERJMSQUEUE queue.

  3. The ProcessSalesOrderFulfillmentSiebelCommsJMSConsumer service receives the ABM and passes it to the ProcessSalesOrderFulfillmentSiebelCommsReqABCSImpl service.

  4. The ProcessSalesOrderFulfillmentSiebelCommsReqABCSImpl service looks up the Siebel CRM row ID in the PRICELIST domain value map (DVM) and populates the ProcessSalesOrderFulfillmentEBM message with the corresponding price list information.

  5. The ProcessSalesOrderFulfillmentSiebelCommsReqABCSImpl service passes the ProcessSalesOrderFulfillmentEBM message to the ProcessSalesOrderFulfillmentOSMCFSCommsJMSProducer service.

  6. The ProcessSalesOrderFulfillmentOSMCFSCommsJMSProducer service wraps the ProcessSalesOrderFulfillmentEBM message in CreateOrder message format and drops it into the AIA_CRTFO_IN_JMSQ queue.

  7. OSM receives the CreateOrder message and transforms it into a ProcessFulfillmentOrderBillingEBM message. During this transformation, OSM populates empty price list order lines with the price list from the order header.

  8. OSM passes the ProcessFulfillmentOrderBillingEBM message on for billing. See "Bill Fulfillment Order Business Flow Overview" for information about how this message is used.

Siebel CRM Interfaces

The Process Sales Order Fulfillment business flow uses the following Siebel CRM interface:

  • SISOMBillingSubmitOrderWebService

This is the outbound Siebel CRM web service used to submit orders.

See Siebel Order Management Guide Addendum for Communications for more information about web services.

Industry Oracle AIA Components

The Process Sales Order Fulfillment business flow use these industry components:

  • SalesOrderEBO

  • ProcessSalesOrderFulfillmentEBM

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

The industry 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

Integration Services

The following services are delivered with the Process Sales Order Fulfillment business flow:

  • ProcessSalesOrderFulfillmentSiebelCommsJMSConsumer

  • ProcessSalesOrderFulfillmentSiebelCommsReqABCSImpl

  • ProcessSalesOrderFulfillmentOSMCFSCommsJMSProducer

ProcessSalesOrderFulfillmentSiebelCommsJMSConsumer

The ProcessSalesOrderFulfillmentSiebelCommsJMSConsumer service is implemented as a Mediator process.

This consumer listens over the AIA_SALESORDERJMSQUEUE into which Siebel CRM enqueues the simple object access protocol (SOAP)-wrapped Siebel CRM Order application business message (ABM). This consumer dequeues the messages from this queue, unwraps the message from the SOAP envelope, and routes the Siebel CRM ABM to the ProcessSalesOrderFulfillmentSiebelCommsReqABCSImpl.

ProcessSalesOrderFulfillmentSiebelCommsReqABCSImpl

The ProcessSalesOrderFulfillmentSiebelCommsReqABCSImpl is implemented as a business process execution language (BPEL) process with a single operation: Initiate.

This service is invoked when an order is submitted in the Siebel CRM application. This service is the Siebel CRM ABCS implementation, which converts the Siebel CRM ABM into the sales order EBM. The service looks up the cross-reference values for the customer account ID, billing profile ID, pay profile ID, organization ID, and product or discount ID to find common IDs to appropriately populate the sales order EBM. In the case of promotions and service bundles, if the cross-reference values are not present, new cross-reference values are created.

This service creates the requisite cross-reference values for the order ID, order line ID, installed product ID, account ID, bill profile ID, pay profile ID, contact ID, address ID, balance group ID, and asset ID between Siebel CRM values and generated common values.

This service also looks up the PRICELIST DVM to populate the price list common IDs for the Siebel CRM price list row IDs in the sales order EBM.

See Table 25-2, "Order Lifecycle Management Cross-References" for more details about the cross-references created by this service.

ProcessSalesOrderFulfillmentOSMCFSCommsJMSProducer

The ProcessSalesOrderFulfillmentOSMCFSCommsJMSProducer is a BPEL process that has a JMS Adapter Service, which enqueues the message ProcessSalesOrderFulfillmentEBM into AIA_CRTFO_IN_JMSQ after wrapping it into SOAP envelope (for putting WS-security information for OSM) and OSM's CreateOrder envelope.

This service has one operation: ProcessSalesOrderFulfillment. It takes the ProcessSalesOrderFulfillmentOSMCFSCommsJMSProducerRequestMessage as input.