8Order Processing

This chapter contains the following:

Application Behavior

Manage predefined profile values to control behavior in Order Management Cloud.

Most profiles include predefined values so you don't need to set them up unless you need different values to meet your deployment requirements.

Control behavior that occurs in the Order Management work area.

  1. In the Setup and Maintenance work area, go to the task.

    • Offering: Order Management

    • Functional Area: Orders

    • Task: Manage Order Profiles

  2. On the Manage Order Profiles page, in the Profile Option area, click Search.

  3. In the search results, in the Profile Options list, click the profile you must edit.

  4. In the Profile Values list, add or delete values, as necessary.

Profile Option Description Where You Can Use It

Aggregate According to Number of Order Lines That Changed

Enable this option to aggregate order lines according to the number of order lines that changed.

Only for a single site

Aggregator Hold Timeout Period in Minutes

Aggregation applies a hold on the purchase order in Procurement to prevent other processes from updating the order during aggregation.

Specify the number of minutes for the hold operation to wait before timing out while aggregating order lines.

  • The default value is 120 minutes.

  • The minimum value is 30 minutes.

    The hold operation will wait for 30 minutes even if you set the value to less than 30. For example, if you set the value to 15, then the hold operation will wait for 30 minutes.

Only for a single site

Currency Conversion Type

Specify the value to use when converting a currency in the Order Management work area. This value is a conversion type.

Single site and for each user

Display Currency

Specify the currency to display in the Order Management work area.

Single site and for each user

Required Overview Status Filter

Specify the default customer to use when filtering the summary of status data on the Overview page of the Order Management work area.

It allows your users to view summary data for only one customer at a time. It removes the All option. Order Management provides no value, by default. To improve performance, you can enter a customer identification number.

Only for a single site

Skip Availability When Searching for Item

Improve performance when the user searches for an item on the catalog line. If you set this option to Yes, then Order Management doesn't send a request to Global Order Promising to determine whether the item is available. If you don't use Global Order Promising, then set this option to Yes.

Only for a single site

Skip Pricing Totals and Pricing Validation

Improve performance. Don't validate the price and don't calculate the total price when the user clicks Add on the catalog line.

Only for a single site

User Request Waiting Period in Seconds

Specify the number of seconds to wait after an action finishes. This time allows each asynchronous web service to finish before displaying a confirmation message or a warning message in the Order Management work area. The default value is 5.

Only for a single site

The Where You Can Use It column describes whether you can use the attribute for a single site in your implementation, and for each user.

Control Behavior During Order Import

Control how Order Management receives and transforms source order into sales orders.

Profile Option Description Where You Can Use It

Retain Sales Order Number

Choose one.

  • Y. Use the source order number that you import from the source system as the order number during and after transformation. Order Management will display the source order number throughout the Order Management work area after transformation and during order fulfillment.

  • N

Single site and for each user

Set Retain Sales Order Number to N

If you set Retain Sales Order Number to N, then Order Management doesn't use the source order number as the order number during or after transformation.

  • Order Management will assign a new order number for the source order and display the new number throughout the Order Management work area after transformation and during order fulfillment.

  • If the source order number in the source order that you import from the source system isn't unique in the source system, then you must set this option to N.

    For example, if source system A contains two source orders that each use order number 12345, then set this option to N. If source system A contains one source order that uses order number 12345, and if source system B contains one source order that uses order number 12345, then set this option to Y or N. This set up is necessary to avoid an error during order import because Order Management requires a unique order number for each sales order in the same source system.

  • Order Management creates a unique number for each sales order that you create in the Order Management work area, and each of these orders use Oracle Fusion Order Orchestration and Planning (OPS) as the source system.

    If you use OPS as your source system in a channel, and you if set Retain Sales Order Number to Y, then a conflict might occur between order numbers. For example, your source system might create a source order with order number 543865, and an order that you create in the Order Management work area might also use order number 543865. You must make sure these order numbers are unique. For example, use a value for your source order number that isn't numeric, or add a prefix or suffix to the number, such as src_543865.

  • The default value is N.

Hierarchy of the Profile Options

You can set a profile option at different levels to specify a hierarchy.

Its recommended that you set site profile option values before you set values for the product or user.

Level Priority Example

Site

Lowest

Affects all of Order Management.

For example, set the currency for all of Order Management to Euro.

Product

Higher than Site

Affects only the item.

For example, set the currency for the AS54888 item to Renminbi.

User

Higher than Product

Affects only the current user.

For example, set the currency for the user to US Dollar.

Use Groups to Manage and Control Sales Orders

Set up the Order Type attribute on the order header to arrange sales orders into groups that you specify, then use these groups to help manage sales orders and control order processing.

  • The Order Entry Specialist can search for sales orders on the Manage Orders page according to order type. This capability focuses the search and helps improve search productivity.

  • The Manage Orders page doesn't come predefined to display the Order Type attribute in the search area. The Order Entry Specialist must click Add Fields, then add it to the search area.

  • If you import a source order from a source system, then Order Management will examine the value of Order Type in the source order to make sure it matches one of the values that you set up for the lookup. If it doesn't match, then Order Management rejects the import and logs an error.

Use Order Type to Control Processing

Use Order Type in Business Rules

Use the order type in a business rule.

Type of Rule Description

Product transformation

Use the order type as part of a pretransformation, transformation, or posttransformation rule. For example.

  • Write a rule that sets the default value for the order type according to the value of some other attribute on the order header.

    For example, assume your company writes a contract to fulfill sales orders from Customer y over all other customers. You can write a rule if Customer is Y, then set Order Type to Top Priority, then use an external interface routing rule that routes the sales order to a fulfillment system that prioritizes shipment speed over other factors, such as cost.

  • Write a rule that uses the value of the order type to determine the default value to display for an attribute on the order header or order line.

Order Management runs each pretransformation rule when the user creates or revises a sales order in the Order Management work area. For example, when the user sets or updates the Business Unit, Customer, or Order Type, or adds an order line. To avoid overwriting these selections, you can write a pretransformation rule so it sets a value only if the attribute is empty.

Process assignment

Write a rule that uses the order type to assign an orchestration process.

For example, if Order Type is Government - Department of the Interior, then set up an orchestration process that fulfills order lines according to Department of the Interior procurement requirements.

External interface routing

Write a rule that uses the order type to determine which fulfillment system will fulfill the sales order.

For example, if Order Type is Emergency, then route the sales order to a fulfillment system that prioritizes shipment speed over other factors.

Use Order Types in Processing Constraints

Use the order type in the condition or result of a processing constraint. For example, prevent Order Management from updating an attribute according to the value of some other attribute. You can also use the order type to prevent Order Management from submitting a sales order. For example.

  • If Order Type is x, then don't allow change to attribute y after submit.

  • If Business Unit is x, then don't allow change to Order Type after submit.

  • If a submit validation occurs, and if Order Type is empty, then raise an error.

  • If a submit validation occurs, and if Order Type is x, and if Purchase Order is empty, then raise an error.

Set Up Order Types

In this example, you set up four order types so you can differentiate between sales orders in a deployment that uses drop ship.

This topic includes example values. You might use different values, depending on your business requirements.

  1. In the Setup and Maintenance work area, go to the task.

    • Offering: Order Management

    • Functional Area: Orders

    • Task: Manage Order Lookups

  2. On the Manage Order Lookups page, in the Search area, enter the value, then click Search.

    Attribute Value

    Lookup Code

    ORA_DOO_ORDER_TYPES

    Order Management uses the ORA_DOO_ORDER_TYPES lookup for attribute Order Type, but doesn't come predefined with values for this lookup. If you don't add any values, then Order Management still displays the Order Type attribute but it won't contain any values.

  3. In the Lookup Codes area, click Actions > New to add each lookup code.

    Lookup Code Meaning

    STD

    Standard Sales Order

    STD_DS

    Drop-Ship Sales Order

    MIX

    Standard and Drop Ship Order Lines

    RETN

    Return Sales Order

    You can modify other attributes, as necessary.

  4. Click Save and Close.

Modify How Attributes Display in Order Management

Order Management Cloud comes predefined with hidden attributes that you can expose so the Order Entry Specialist can display them in the Order Management work area. You can also modify the display name of attributes to meet your needs.

You can expose and modify attributes in various locations, such as in the sales order header or on the order line. The Order Entry Specialist then uses the Order Management work area to display them. You use a sandbox to do the change, test it, publish it, then use the actual work area to verify.

 use a sandbox to do the change, test it, publish
it, then use the actual work area to verify.

In this example, you create a sandbox named My Sandbox, expose the Primary Salesperson attribute, then modify the display name so it says My Primary Salesperson.

  1. Create your sandbox.

    • In the Navigator, in the upper-right corner, click your login name.

    • In the Settings and Actions menu, click Edit Pages.

    • In the dialog that displays, click Activate Sandbox.

    • On the Sandbox page, click Create Sandbox. create a new sandbox, activate it, then open it.

    • On the Create Sandbox page, on the Page Composer row.

      • In the Active column, add a check mark.

      • In the Support Context column, click the pencil, set the Category to Default, then click OK.

    • Enter a name, then click Create.

      Attribute Value

      Name

      My Sandbox

    • On the Sandbox page, in the My Sandbox row, click Enter Sandbox.

    • Make sure you're in the sandbox. Verify that a banner displays along the top of the Navigator. The banner includes the name of your sandbox.

  2. Open Page Composer.

    • In the Navigator, click Order Management.

    • Click Tasks > Manage Orders.

    • On the Manage Orders page, search for, then open any sales order.

    • On the Order page, in the upper-right corner, click your login name.

    • In the Settings and Actions menu, click Edit Pages.

      Oracle Page Composer displays, which is a page editor you can use to modify the visual layout that the Order Management work area uses. You can tell you're in Page Composer because it displays a section across the top of the page. The section includes tabs, such as Add Content, Select, and Structure.

      To modify an attribute in another work area, go to that work area, then go to the page in the work area that displays the attribute you must modify.

      For details about how to use Page Composer, see the Guidelines for Page Modification topic.

  3. Expose the attribute.

    • Click Select.

    • Click in the lower portion of the order header, for example, below the Customer attribute, then click Edit Parent Component.

    • In the Component Properties dialog, click Children, then notice the list of attributes that display.

      Each attribute that doesn't contain a check mark is hidden. You can add a check mark to unhide the attribute.

    • Add a check mark next to Primary Salesperson, then click Apply > OK.

  4. Verify values in the sandbox.

    • Verify that the order header displays the Primary Salesperson attribute.

    • In the Order Lines area, click View > Columns, and notice you can display the attribute.

    • In the upper-right corner, click Close.

    • On the Order page, click Done.

    • Notice that you can now display the Primary Salesperson attribute on the Manage Orders page.

      • In the Search area, click Add Fields.

      • In the Search Results, click View, then click Columns, and notice you can display the Primary Salesperson attribute.

  5. Modify the display name.

    • Navigate back to the order page.

    • In the order header, click Primary Salesperson, then click Edit Component.

    • In the Component Properties dialog, next to Label, click Edit > Override, then click OK.

    • In the order header, click Primary Salesperson, then click Edit Component.

    • In the Component Properties dialog, in the text window next to Label, enter My before the text Primary Salesperson, then click OK.

    • Verify that the order header now displays My Primary Salesperson.

  6. Publish.

    • At the top-right corner, click My Sandbox > Publish.

    • On the Sandbox Detail page, click Publish.

    • In the dialog, click Continue to Publish.

      You are no longer in the sandbox. You're now back in Order Management.

    • Repeat the verification you did earlier in the sandbox, but this time use the Order Management work area outside of the sand box.

Set Up Messages in Order Management

Modify a message that displays in the Order Management work area, or create your own message.

Examine a Predefined Message

  1. Go to the Order Management work area and create a sales order.

  2. Add two order lines, assign each line to a shipment set named My_Shipment_Set, then click Submit.

  3. Click Actions > Create Revision.

  4. Add a new order line and assign it to My_Shipment_Set.

  5. To cancel line 2, set the quantity on line 2 to zero.

  6. Click Submit, then examine the message that displays.

    In this example, the user creates a sales order,
adds two order lines, and assigns each line to My_Shipment_Set.

    Note.

    • Order Management doesn't allow you to add a new line and cancel a line in the same shipment set during the same revision, so it displays the error message.

    • The predefined DOO_ORCHC_SHIPSET_ADD_CANCEL message defines the message text.

Modify a Predefined Message

Assume you want to add some text to DOO_ORCHC_SHIPSET_ADD_CANCEL.

Assume you want to add some text to DOO_ORCHC_SHIPSET_ADD_CANCEL

Try it.

  1. Examine the predefined message.

    • Open another browser window.

      You open a second browser window so you can toggle between your design time set up in the Setup and Maintenance work area and run time rendering in the Order Management work area.

    • In the Setup and Maintenance work area, click Tasks > Search.

    • On the Search page, search for, then open Manage Messages.

    • On the Manage Messages page, set the value, then click Search.

      Attribute Value

      Application

      Order Management

      You can also search for Distributed Order Orchestration to examine messages that Order Management displays primarily during order fulfillment or during interactions with a web service.

      Refine your search. Remove the value from the Application attribute and enter a value in Message Name, such as DOO_ORCHC_SHIPSET_ADD_CANCEL.

      If you don't know the name, then remove the value from the Application attribute and enter a value in the Module attribute.

      Module Message Includes Errors That Occur When. . .

      Import Order

      You import a sales order.

      Decomposition

      Preparing a source order for Order Management during order import.

      Orchestration

      An orchestration process runs.

      Task Layer

      Processing a request through a fulfillment task.

      Process Order

      Order Management starts to process fulfillment. There's usually missing data, attribute values aren't correct, there's a problem in communicating with other applications during fulfillment, and so on.

      Manage Orders

      You are creating or revising a sales order.

      Common

      Order Management encounters any one of a wide variety of problems. The problem isn't specific to Order Management. It might occur with other Oracle Fusion applications. For example, communication with a web service fails, you attempt to use an application programming interface that Oracle Fusion doesn't support, and so on.

      Search is additive. For example, if you set Module to Common and Message Name to DOO_ORCHC_SHIPSET_ADD_CANCEL, then the search doesn't return anything because DOO_ORCHC_SHIPSET_ADD_CANCEL isn't in the Common module.

      Use a wildcard. For example, enter DOO_% in Message Name to return all messages that start with DOO_. Here are some abbreviations you might find useful.

      Abbreviation and Wildcard Return Messages For

      FOM_%

      Order Management Cloud. FOM is an abbreviation for Oracle Fusion Order Management

      DOO_%

      Distributed order orchestration.

      QP_%

      Oracle Fusion Pricing.

      CTO_%

      Configured items. CTO is an abbreviation for configure-to-order.

      CZ_%

      Configuration model.

      DOS_%

      Supply Chain Orchestration

    • Search Message Name for DOO_ORCHC_SHIPSET_ADD_CANCEL.

  2. Edit the message.

    • In the search results, click the line that includes DOO_ORCHC_SHIPSET_ADD_CANCEL in the Message Name column, then click Actions > Edit.

    • On the Edit Message page, add your text at the end of the User Details attribute. For example.

      Instead, revise the sales order, cancel lines in the shipment set, then submit the order. Wait for order management to process the revision. Revise the order again, add lines, then submit the order. Hi there. I am Diane Cho, your order administrator. Please contact me if you need help with shipping.

      Note.

      • Don't modify the Message Number. Order Management uses it to uniquely identify the message.

      • Examine the Translation Notes. They might contain details that describe when and why a message displays. Use them to help troubleshoot errors or warnings.

      • In general, don't modify predefined text in the Short Text attribute. Each message describes an error or warning condition. Its important to keep the predefined Short Text to support these conditions.

      • Short Text has a 160 character limit.

      • In general, don't modify predefined text in the User Details attribute. If you want to add text, add it immediately after the predefined text.

    • Click Save.

  3. Test your set up.

    • Go to the Order Management work area in your other browser.

    • If the work area still displays the error message, then close the message dialog.

    • Click Submit.

    • Verify that the message displays the text you added.

Create Your Own Message

Assume you must set up a warning message that displays when the Order Entry Specialist enters a quantity of more than 100 on an order line. The purpose of the message is to make sure the Order Entry Specialist agrees that the quantity is correct before submitting.

  1. Go to the Manage Messages page, then search the predefined messages.

    Create a new message only if you can't find a predefined message that meets your needs.

  2. Click Actions > New, then set values.

    Attribute Value

    Message Name

    FOM_EXAMINE_QUANTITY

    You can enter any text.

    Use a format that helps you identify your message and distinguish it from predefined messages that Order Management and other Oracle Applications display.

    application_text_description

    where

    • application. Abbreviation that identifies the application. Use FOM for Oracle Fusion Order Management, which is an earlier name for Order Management Cloud, orDOO for Distributed Order Orchestration.

    • text_description. Describe the purpose of the message. Use underscores to improve readability.

    Application

    Order Management

    Module

    Manage Orders

    Here are the modules you typically use when you set Application to Order Management.

    • Manage Orders

    • Import Orders

    Here are the modules you typically use when you set Application to Distributed Order Orchestration.

    • Task Layer

    • Decomposition

    • Process Order

    • Orchestration

    Message Number

    Enter 10000001.

    Enter any number from 10,000,000 to 10,999,999. The Order Entry Specialist can use this number when they contact the help desk.

    At runtime, the message displays the message name, number, and application abbreviation. For example.

    fom_examine_quantity-fom-10000001

    Short Text

    Enter this value.

    Quantity {QUANTITY} that you entered on the order line exceeds 100. You can order this quantity, but make sure it is correct before you submit the sales order.

    You use one set of curly brackets ( {} ) to enclose a token. A token is a placeholder for variable content, such as text or a number. Order Management replaces the token with a value at run time. In this example, it replaces {QUANTITY} with the number that the Order Entry Specialist enters in the Quantity attribute on the order line.

    Message Type

    Warning

    Category

    Product

    Severity

    Low

    Logging Enabled

    Contains a check mark.

  3. In the Message Tokens area, click Actions > New, then set values.

    Attribute Value

    Token Name

    QUANTITY

    Data Type

    Number

    Description

    Number that the Order Entry Specialist enters in the Quantity attribute on the order line.

  4. Click Save and Close, and then click Save and Close again.

Guidelines for Managing Shipment Sets

Apply guidelines when you use shipment sets.

  • If Order Management applies a hold to one or more lines in a shipment set, then it applies the hold on the entire shipment set.

  • If the fulfillment line is part of a shipment set, then you can't.

    • Split the fulfillment line. To split the line, remove it from the shipment set, add a new line, then split your new line.

    • Substitute an item. To substitute, remove the line that contains the item you must substitute from the shipment set, then add a new line that contains the substitution.

  • If the fulfillment line already shipped, or if Order Management already created a request to invoice the line, then the Fulfillment Line Shipment Set Update constraint prevents you from updating the shipment set. The constraint comes predefined as enabled. You can disable it.

  • If you remove an order line from a shipment set, then Order Management doesn't update the orchestration plan.

  • If you manually schedule a shipment set, and if you select an option for one or more fulfillment lines, and if these lines are part of a shipment set, then Order Management applies the scheduling option that you select to all of the fulfillment lines that reference the shipment set.

  • If you include items that can ship with items that can't ship in the same shipment set, then include a pause step in your orchestration process only if you need the pause so you can invoice the shippable and nonshippable items together. For example, you add line 1 that contains the shippable AS54888 Desktop Computer and line 2 that contains the nonshippable warranty that covers the AS54888 in the same set.

Import Shipment Sets

Import your shipment set through the orderImportService or File-Based Data Import.

Here's part of an example payload that includes a shipment set.

<ns2:Line>
  <ns2:SourceTransactionLineIdentifier>101</ns2:SourceTransactionLineIdentifier>
  <ns2:SourceTransactionScheduleIdentifier>101</ns2:SourceTransactionScheduleIdentifier>
  <ns2:SourceTransactionLineNumber>1</ns2:SourceTransactionLineNumber>
  <ns2:SourceTransactionScheduleNumber>1</ns2:SourceTransactionScheduleNumber>
  <ns2:ProductNumber>AS54888</ns2:ProductNumber>
  <!--Parameterize-->
  <ns2:OrderedQuantity>15</ns2:OrderedQuantity>
  <!--Parameterize-->
  <ns2:OrderedUOM>Each</ns2:OrderedUOM>
  <!--ns2:OrderedUOMCode>Ea</ns2:OrderedUOMCode-->
  <ns2:RequestingBusinessUnitName>Vision Operations</ns2:RequestingBusinessUnitName>
  <ns2:ParentLineReference/>
  <ns2:RootParentLineReference/>
  <ns2:ShippingInstructions/>
  <ns2:PackingInstructions/>
  <ns2:ScheduleShipDate/>
  <ns2:RequestedShipDate>2019-10-14T01:08:52Z</ns2:RequestedShipDate>
  <ns2:RequestedFulfillmentOrganizationCode>M1</ns2:RequestedFulfillmentOrganizationCode>
  <ns2:ShipToAddress1>102, CityView</ns2:ShipToAddress1>
  <ns2:ShipToCity>CHATTANOOGA</ns2:ShipToCity>
  <ns2:ShipToPostalCode>37401</ns2:ShipToPostalCode>
  <ns2:ShipToState>TN</ns2:ShipToState>
  <ns2:ShipToCountry>US</ns2:ShipToCountry>
  <ns2:ScheduleShipDateTime>2016-12-20T10:10:10</ns2:ScheduleShipDateTime>
  <ns2:ScheduleArrivalDateTime>2016-12-20T10:10:10</ns2:ScheduleArrivalDateTime>
  <ns2:ShippingCarrier>DHL</ns2:ShippingCarrier>
  <ns2:ShippingServiceLevel>2nd day air</ns2:ShippingServiceLevel>
  <ns2:ShippingMode>Air</ns2:ShippingMode>
  <ns2:ShipSetName>SS1</ns2:ShipSetName>

Note.

  • Use the ShipSetName attribute to specify the shipment set. Include the attribute in the Line hierarchy. This example sets the name to SS1, and its part of the hierarchy for source transaction line 101. It adds line 101 to shipment set SS1.

  • Set ShipSetName to the same value in each line that you need in the set. Assume your set includes lines 101 and 102. Set ShipSetName in line 102 to SS1.

  • Make sure each line that's part of the shipment set uses the same value for attributes that affect the set, such as Warehouse. For a list of these attributes, see the Ship Order Lines in Shipment Sets topic.

  • To get the complete payload for this example, go to White Papers for Order Management Cloud (Doc ID 2051639.1) at https://support.oracle.com/epmos/faces/DocumentDisplay?_afrLoop=472607338634463&id=2051639.1. Download the Payloads and Other Files That Support Implementation attachment. Open the attachment then open source_order_with_shipment_set.txt.

Set Up Item Substitution in Order Management

Set up substitution in Order Management so you can use a substitute item to fulfill an order line when the preferred item is out of stock.

You can use the Substitute Item action or the Check Availability action in a fulfillment view of the Order Management work area to substitute an item. You can also use Global Order Promising to substitute an item. This topic describes how to use Global Order Promising.

You use the Product Information Management work
area to specify the item to substitute at design time.

Note.

  • You use the Product Information Management work area to specify the item to substitute at design time.

  • At run time, the Order Entry Specialist creates a sales order in the Order Management work area and clicks Submit.

  • Fulfillment fulfills the item.

    • The scheduling fulfillment task in your orchestration process calls Global Order Promising.

    • Global Order Promising communicates with Inventory Management to determine whether the item is out of stock.

    • If its out of stock, and if the Allow Item Substitution attribute on the sales order is Yes, and if Global Order Promising determines that the substitute item is available, then Global Order Promising sends a recommendation to Order Management to use it, and Order Management uses the substitute to fulfill the order line.

Guidelines

  • You can use Visual Information Builder to create a pretransformation rule that sets the default value for Allow Item Substitution to No.

    Here's an example rule you can create.

    If Order Type is equal to Mixed Orders, then Allow Item Substution is set to No

    For details, see the Use Visual Information Builder topic.

  • You can't specify substitution when you import a source order. Instead, cancel the existing line and add a new one.

  • Don't use substitution to replace an obsolete item. For example, assume you add memory to the AS54888 and upgrade it to a new item, the AS55000. You have an open sales order that contains the AS54888. Revise the sales order, delete the line that has the AS54888, and add a new line that has the AS55000.

Assume you must set up substitution for the AS54888 Computer.

  • If the AS54888 Computer isn't available in inventory, then substitute it with the CN92777 Computer.

Summary of the Setup

  1. Set up your item.

  2. Collect data.

  3. Test your set up.

Set Up Your Item

  1. Go to the Product Information Management work area.

  2. On the Product Information Management page, click Tasks > Manage Items.

  3. On the Manage Items page, search for your item.

    Attribute Value

    Item

    AS54888

  4. In the Search results, in the Item column, click AS54888.

  5. On the Edit Item page, click Relationships.

  6. In the Relationships area, click Actions > Create, set values, then click OK.

    Attribute Value

    To Item

    CN92777 Computer

    Type

    Substitute

    Planning Enabled

    Contains a check mark.

  7. On the Edit Item page, click Save.

Collect Data

  1. Go to the Plan Inputs work area, then click Tasks > Collect Planning Data.

  2. In the Collect Planning Data dialog, set values.

    Attribute Value

    Source System

    GPR

    Collection Type

    Targeted

  3. Move the Item Substitution Relationships reference entity to the Selected Entities window, then click Submit.

  4. In the Status dialog, notice the process number. For this example, assume its 50465.

  5. Go to the Scheduled Processes work area.

  6. On the Overview page, locate 50465 in the Process ID column. Monitor the process until the Status column displays Succeeded.

  7. Refresh the Order Promising server.

    • Go to the Scheduled Processes work area, then click Action > Schedule New Process.

    • In the Schedule New Process dialog, set the value.

      Attribute Value

      Name

      Refresh and Start the Order Promising Server

    • Add a check mark to the Items parameter, then click Submit.

    • Click Actions > Refresh, then verify the status is Succeeded. Repeat, as necessary.

For details, see the Collect Planning Data for Order Management topic.

Test Your Set Up

  1. Go to the Order Management work area and create a new sales order.

  2. Click Shipment Details > Supply, then set the value.

    Attribute Value

    Allow Item Substitution

    Yes

  3. Search for the AS54888 on the catalog line, notice that the line displays Out of Stock, then click Add.

  4. Notice that the order line contains the AS54888, then click Submit.

  5. Click Actions > Switch to Fulfillment View.

  6. Verify that Order Management replaced AS54888 with CN92777.

Sales Order Status

Overview

An orchestration process status indicates the status of an orchestration process throughout Order Management Cloud. The value Started is an example status. It indicates that Order Management started the orchestration process.

Order Management finishes the fulfillment tasks of an orchestration process sequentially according to each orchestration process step when it processes an order.

Order Management comes predefined to use a default set of statuses for fulfillment tasks. You can also set up statuses and sequences. For example, you can set up an orchestration process that uses a set of statuses and rule logic for textbooks for a college, and set up another orchestration process that uses a different set of statuses and rule logic for textbooks for a primary school.

  • You must specify the status that Order Management assigns to an orchestration process at each orchestration process step. For example, if the Schedule School Books task includes a status of Unsourced, then you must specify the status that Order Management assigns to the orchestration process for this step.

  • You must specify a status that indicates when a task done. You can select only a status that you set up to indicate that a task is done.

  • If you modify the name of the default status, then Order Management displays the modified name throughout the Order Management work area.

  • If you don't set up statuses for an orchestration process, then Order Management uses the predefined statuses, by default.

Status Conditions for Orchestration Processes

You can create a status condition that determines the orchestration process status. For example.

  • If the status of the Schedule task is Not Started, then set the orchestration process status to Unscheduled.

Order Management evaluates the status conditions that you create sequentially at run time. The condition that evaluates to true, and that includes the highest sequence number, determines the orchestration process status.

How Order Management Assigns Statuses

  1. A fulfillment system sends a status update to Order Management.

  2. The Interface Layer translates the status into status values that Order Management uses.

  3. Fulfillment tasks determine the status message to send.

  4. The Status Service.

    • Uses source and target mapping to set the task status.

    • Sets the orchestration process status according to the statuses of the tasks that the process contains.

    • Sets the fulfillment line status according to the task statuses that the fulfillment line references.

Use tabs on the Manage Status Values page to manage how Order Management Cloud displays status.

Tab Description

Status Codes

Specify the display name that Order Management displays in the Order Management work area.

Fulfillment Lines

Create the status values that users can select for a fulfillment line in an orchestration process.

Task Types

Assign a status code to a task type. If a system outside of Order Management Cloud provides the status, then assign this status to the fulfillment task that references this system. For example, if a shipping system provides the status, then assign the code to the Shipping task type.

Orchestration Process Classes

Assign the status code to fulfillment lines or orchestration processes where Order Management must use the status.

For example, you can use an orchestration process class to control the status codes that an administrator can choose when creating a status condition for an orchestration process. You must use the Manage Status Values page to set the status values and to make them available when you create a status condition.

Set Ups

Order Management Cloud fulfills each fulfillment task one step at a time when it processes a sales order, and it uses a predefined set of sequential statuses to track the progress of each task. You can use the Manage Task Status Conditions page to manage the status conditions that determine the status of these tasks according to task type.

  1. On the Manage Task Status Conditions page, in the task list, click the task type that you must manage.

    For example, to manage the status conditions when Order Management processes a return, click the row that contains Return in the Type column.

  2. In the Status Conditions list, modify or add new conditions as necessary.

    Attribute Description

    Internal Status Value

    Displays a status that Order Management receives from a fulfillment system through a fulfillment task. For details, see the Task Types topic.

    Display Status Value

    Specifies the value that Order Management displays.

    For example, assume your fulfillment system sends a status of Invoiced for a task, but your company uses Billed. You can set Display Status Value to Billed to display Billed throughout the Order Management work area.

    Mark as Complete

    If this option contains a check mark, then Order Management considers the task to be done when it reaches the condition.

    For example, assume you click the Return row in the task list on the Manage Task Status Conditions page, then, in the Status Conditions area, you add a check mark to Mark as Complete for the Canceled status condition and for the Delivered status condition. In this example, Order Management considers the task to be done when the task reaches the Canceled status or the Delivered status.

An orchestration process class is a set of statuses you can assign to an orchestration process. Use it to group statuses so they're meaningful.

For example, the Ship Order Class includes statuses that are meaningful when shipping an order, such as Scheduled, Awaiting Shipping, and Shipped.

This topic includes example values. You might use different values, depending on your business requirements.

Group statuses for orchestration processes.

  1. In the Setup and Maintenance work area, go to the task.

    • Offering: Order Management

    • Functional Area: Orders

    • Task: Manage Status Values

  2. On the Manage Status Values page, click Orchestration Process Classes.

  3. In the Orchestration Process Classes list, click Actions > Create, then set values.

    Attribute Value

    Code

    Standard_Class

    Name

    Standard_Class

    Description

    Class for standard orders

  4. Click Save.

  5. In the Status Values area, click Actions > Add Row, then add the value.

    Attribute Value

    Status Value

    Scheduled

  6. Repeat step 5 for each value.

    • Shipped

    • Reserved

    • Billed

    • Returned to Customer

  7. Click Save and Close.

You can now set class Standard_Class in the Process Class attribute on the Edit Orchestration Process Definitions page. The class that you set determines the values you can select when you set the Status Value on the Status Conditions tab. For example, if you set Process Class to Standard_Class, then you can use Status Value to select the statuses that Standard_Class references, such as Shipped.

Fulfillment Line

Specify the status that your orchestration process assigns to a fulfillment line.

For example, you can specify that if the Schedule School Books task includes a status of Pending Scheduling, then set the fulfillment line status to Unscheduled.

  • The orchestration process step runs fulfillment tasks when it processes the fulfillment line.

  • The fulfillment line status displays throughout the Order Management work area.

  • You can specify different sets of statuses and rules for different items that the fulfillment line references. For example, specify one set of status conditions for a hard cover book, and another set of status conditions for a paperback book.

  • If you don't create conditions, then Order Management uses the status rule set that it assigns to the default category.

Use Status Catalogs and Status Categories to Group Fulfillment Lines

Use a status catalog to group items that are similar so they can achieve the same statuses at the same time.

You might need different fulfillment lines to use different sets of statuses. For example, a fulfillment line you ship, such as a computer, might need statuses that are different from a fulfillment line you don't ship, such as a warranty.

  • Use a category to make sure Order Management applies the same set of status conditions to specific sets of fulfillment lines. It applies the same status conditions to all fulfillment lines that reference the item that resides in the category.

  • Use catalogs and categories in more than one orchestration process.

  • Select the status catalog when you set up your orchestration process.

    You can only select a catalog that meets these requirements.

    • The item exists in only one category in the catalog.

    • The category contains items or subcategories.

    • The category doesn't contain items and subcategories.

    • Order Management controls the catalog only for the master, and not for each organization.

  • Use the Product Information Management work area to set up the status catalog.

Use Status Rule Sets with Fulfillment Lines

Use a status rule set so you can use a single set of rules with more than one fulfillment line instead of specifying a separate rule for each fulfillment line. For example.

  • If the item is in status Unsourced, then set the fulfillment line status to Unscheduled.

  • If the Schedule Text Books fulfillment task reaches a status of Completed, then set the fulfillment line status to Scheduled.

Note.

  • You can use a single status rule set with more than one category. If a parent category and a child category each reference a different status rule set, then Order Management uses the status rule set that the child references. Use this feature so you can create an All category to handle all items in one orchestration process. Use it to add a subcategory for a subset of items that must use a different status rule set.

  • If you migrate an orchestration process between environments, such as from a development environment to a production environment, then don't modify the status rule set name in either environment. Modifying the name might prevent Order Management from updating references to other data in the orchestration process.

Set Up the Sequence for the Status Condition

Set up the sequence of status conditions so they match the logical progress of the status that the order line normally takes during the fulfillment line lifecycle. If more than one condition evaluates to true, then the orchestration process will set the fulfillment line status to the status value with the highest sequence number.

Here's an example.

how you can use the Sequence attribute in the Orchestration
Process Status Values area on the Status Conditions tab of the Create
Orchestration Process Definition page.

Note.

  • You use the Sequence attribute in the Orchestration Process Status Values area on the Status Conditions tab of the Create Orchestration Process Definition page.

  • You set the sequence of the status conditions so they match the logical progress of the status. For example, Sequence 150 for status Awaiting Shipping occurs before Sequence 160, status Shipped. If Awaiting Shipping and Shipped each evaluate to true, then the orchestration process sets the status to Shipped because 160 is higher than 150.

Set up the status values that Order Management displays on the fulfillment line.

Summary of the Set Up

  1. Add the status codes.

  2. Add status codes to fulfillment lines.

This topic includes example values. You might use different values, depending on your business requirements.

Add the Status Codes

  1. In the Setup and Maintenance work area, go to the task.

    • Offering: Order Management

    • Functional Area: Orders

    • Task: Manage Status Values

  2. On the Manage Status Values page, in the Status Codes list, click Actions > Create.

  3. In the Create Status Code dialog, enter values, then click Save and Create Another.

    Attribute Value

    Code

    SCHED_GOODS

    Name

    Scheduled Goods

    The Order Management work area will display the value you enter.

  4. In the Create Status Code dialog, enter values, then click Save and Close.

    Attribute Value

    Code

    SCHED_CLOTHING

    Name

    Scheduled Clothing

Add Status Codes to Fulfillment Lines

Add the status codes you just created to the fulfillment lines.

  1. On the Manage Status Values page, click Fulfillment Lines > Actions > Select and Add.

  2. In the Select and Add dialog, in the Status Code attribute, enter SCHED_GOODS, then click Search.

  3. Click SCHED_GOODS > OK.

  4. Click Actions > Select and Add.

  5. In the Select and Add dialog, in the Status Code attribute, enter SCHED_CLOTHING, then click Search.

  6. Click SCHED_CLOTHING > OK.

  7. Click Save and Close.

You can now set the status value for the fulfillment line in the orchestration process to SCHED_GOODS or SCHED_CLOTHING.

Status Condition

Add status conditions that specify when to set the status of an orchestration process.

Assume you need an orchestration process that fulfills sales orders for company t-shirts, and you must specify the statuses that the process uses throughout the order life cycle according to the status of the fulfillment task.

You will create this status condition.

  • If the status of the Schedule task is Scheduled, then set the orchestration process status to Scheduled.

Summary of the Set Up

  • Set the orchestration process class.

  • Add the status condition.

You typically add more than one status condition to an orchestration process. For brevity, you will add only one in this topic.

This topic includes example values. You might use different values, depending on your business requirements.

Set the Orchestration Process Class

  1. In the Setup and Maintenance work area, go to the task.

    • Offering: Order Management

    • Functional Area: Orders

    • Task: Manage Orchestration Process Definitions

  2. On the Manage Orchestration Process Definitions page, locate the CallCustomerWhenLargeInvoice orchestration process, then click Actions > Edit.

    For details about how to create this process, see the Add Branches to Orchestration Processes topic.

  3. On the Edit Orchestration Process Definitions page, set the value.

    Attribute Value

    Process Class

    Standard_Class

    You must set up Standard_Class before you can select it. For details, see the Set Up Orchestration Process Classes topic.

  4. Click Save.

Add the Status Condition

  1. In the Process Details area, click Status Conditions.

  2. In the Orchestration Process Status Values list, click Actions > Add Row.

  3. In the new row, set values.

    Attribute Value

    Sequence

    1

    Status Value

    Scheduled

  4. Add the expression.

    • In the new row, in the Expression column, click the icon.

    • In the Expression Builder dialog, click CallCustomerWhenLargeInvoice - Schedule, then click Insert Into Expression. Make sure you don't expand CallCustomerWhenLargeInvoice - Schedule.

      Notice that the dialog added a value of "Schedule" in the Expression window of the Expression Builder.

    • In the Expression window, click anywhere after "Schedule", then enter an equal sign (=).

    • Expand CallCustomerWhenLargeInvoice - Schedule, click SCHEDULED, then click Insert Into Expression.

    • Notice that the Expression window contains "Schedule"="SCHEDULED", then click OK.

  5. Click Save.

Add status conditions to a fulfillment line that includes more than one item, and where each item needs a different status.

If different fulfillment lines must use different statuses, then you must determine how you will use catalogs and categories to group the lines. You do this when you create the orchestration process.

Assume you must set up orchestration processes that can handle sales orders for different types of t-shirts. You could use the same orchestration process for different types of merchandise, but you prefer to define statuses for each type of clothing separately because each clothing type requires a different status. To do this, you select the status catalog, then add the status conditions for a single category of items in the orchestration process.

Summary of the Set Up

  • Set the status catalog.

  • Add the status condition for each default.

  • Add the status condition for the item.

You typically create more than one status condition for each fulfillment line. For brevity, in this topic you create only one status condition for the default category and another status condition for the item.

This topic includes example values. You might use different values, depending on your business requirements.

Set the Status Catalog

  1. In the Setup and Maintenance work area, go to the task.

    • Offering: Order Management

    • Functional Area: Orders

    • Task: Manage Orchestration Process Definitions

  2. On the Manage Orchestration Process Definitions page, locate the CallCustomerWhenLargeInvoice orchestration process, then click Actions > Edit.

    For details about how to create this process, see the Add Branches to Orchestration Processes topic.

  3. On the Edit Orchestration Process Definitions page, set the value.

    Attribute Value

    Status Catalog

    Retail_Merchandising_Catalog

    Retail_Merchandising_Catalog is an example catalog. You must use the Product Information Management work area to define it and the values that it references before you can specify it for this orchestration process.

    If a warning dialog displays, then click OK.

  4. Click Save.

Add the Default Status Condition

Add the status condition that the orchestration process will use, by default.

  1. In the Process Details area, click Status Conditions > Fulfillment Line Status Values.

  2. In the Default row, in the Status Rule Set attribute, click the arrow, then click Create.

    You will select the statuses that this orchestration process uses, by default. Every row in the Fulfillment Line Status Values list must reference a status rule set, and each rule set must contain at least one status condition.

  3. In the Create Status Rule Set dialog, set values.

    Attribute Value

    Code

    LargeOrders

    Name

    Large Orders

    Create New

    Chosen

  4. Click Save and Close > Save.

  5. In the Default row, click Edit Status Rule Set.

  6. On the Edit Status Rule Set page, click Actions > Add Row.

  7. In the Sequence attribute, enter 1.

  8. Set the status value.

    • In the Status Value attribute, click the arrow, then click Search.

    • In the Search and Select dialog, in the Status Code attribute, enter SCHED, then click Search.

    • In the list, click Scheduled, then click OK.

  9. Add the expression.

    • On the Edit Status Rule Set page, in the Expression column, click the icon.

    • In the Expression Builder dialog, click CallCustomerWhenLargeInvoice - Schedule, then click Insert Into Expression. Make sure you don't expand CallCustomerWhenLargeInvoice - Schedule.

      Notice that the dialog added a value of "Schedule" in the Expression window of the Expression Builder.

    • In the Expression window, click anywhere after "Schedule", then enter an equal sign (=).

    • Expand CallCustomerWhenLargeInvoice - Schedule, click SCHEDULED, then click Insert Into Expression.

    • Notice that the Expression window contains "Schedule"="SCHEDULED", then click OK.

  10. On the Edit Status Rule Set page, add a check mark to Notify External Systems, then click Save and Close.

    Notify External Systems allows Order Management to communicate the status to an external system that resides outside of Order Management. For details, see the Send Notifications from Order Management Cloud to External Systems topic.

Add the Status Condition for an Item

  1. In the Process Details area, in the Fulfillment Line Status Values list, click Actions > Select and Add: Category.

  2. In the Select and Add: Category dialog, select Retailer, then click Save and Close.

  3. In the Fulfillment Line Status Values list, in the Retailer row, in the Status Rule Set column, click the arrow , then click Create.

  4. In the Create Status Rule Set dialog, set values.

    Attribute Value

    Code

    Shirts

    Name

    Shirts

    Create New

    Chosen

  5. Click Save and Close > Save.

  6. In the Fulfillment Line Status Values list, in the Retailer row, click Edit Status Rule Set.

  7. Repeat steps 6 through 10 of the Add the Default Status Condition section, earlier in this topic.

Sales Order Values

Set Up Sequences for Sales Order Numbers

Set up the starting value for your sales order numbers.

In this example, you set up Order Management so it uses 1,000 as the order number for the first order that your users create on January 1, 2019.

Here's your setup.

set up Order Management so it uses 1,000 as the
order number for the first order that your users create on January
1, 2019

This topic includes example values. You might use different values, depending on your business requirements.

  1. In the Setup and Maintenance work area, click Tasks > Search, search for, then open Manage Document Sequences.

  2. On the Manage Document Sequences page, search for the value.

    Attribute Value

    Document Sequence Name

    ORA_FOM_DOC_SEQUENCE_AUTO

  3. In the search results, click Expand, set values, then click Save and Close.

    Attribute Value

    Initial Value

    1000

    Display

    Ignore this attribute. Don't set it. Its for internal use only.

    Start Date

    01/01/19

    End Date

    Leave empty. Order Management will continue to increment the sales order number in perpetuity.

Note.

  • Order Management uses the predefined ORA_FOM_DOC_SEQUENCE_AUTO number sequence to create order numbers, starting with the value you set in Initial Value.

  • Each order number is unique.

  • The order number is permanent. Order Management doesn't change the order number even if the user modifies an order attribute.

  • If you import orders from a source system through a web service, REST API, a file, or any other way, and if you set the DOO_RT_USE_ORDER_NUMBER order profile to Y, then Order Management uses order numbers from your source system and ignores ORA_FOM_DOC_SEQUENCE_AUTO.

  • You can't.

    • Use your own number sequence, except for order numbers you import.

    • Specify sequence according to determinant type.

    • Specify gapless or manual sequencing.

Manage Lookups in Order Management

An order lookup specifies the values that Order Management displays in a list of values. You can set up these values.

flow of how to Define the values that Order Management
displays in a list of values

Note.

  • A list of values is a user interface element that allows your users to choose the value for an attribute. For example, the user can use a drop down list of values to set the value for the Order Type attribute on the order header.

  • Use the Manage Order Lookups page in the Setup and Maintenance work area to set up the lookup. Set these attributes.

    Attribute Description

    Lookup Type

    Specify a group of values.

    For example, use lookup type ORA_DOO_ORDER_TYPES to allow the user to choose from a list of values for the Order Type attribute on the order header.

    Lookup Code

    Specify an abbreviation that represents the meaning. Each code uses one value that the user can choose in the list of values.

    Meaning

    Specify the user-friendly value to display in the list of values.

    For example, a table in the Oracle database or a web service payload might contain a value of STD_DS for a standard drop ship sales order. You can set Meaning to the more user-friendly value Drop-ship Order.

    For details about how a web service payload contains coded values, see the Attributes in Request Payloads That Integrate Order Management topic.

    Display Sequence

    Specify the sequence of the lookup codes in the list of values.

    For example, if Sequence is 1 for Standard Orders, 2 for Drop-ship Orders, and 3 for Mixed Orders, then the list of value displays values in this sequence.

    • Standard Orders

    • Drop-ship Orders

    • Mixed Orders

Control Decimal Precision

Use the Quantity Decimal Precision profile to control decimal precision for attributes that store numeric values.

For example, to control decimal precision on the order line quantity that the Order Entry Specialist sets on the Create Order page, or to control decimal precision during order import.

Precision is the total number of digits that a number contains, where scale specifies the number of digits that exist to the right of the decimal point.

For example, the number 17.347 uses a precision of 5 and a scale of 3.

You can't modify precision but you can modify scale. For example, if you set the scale to 3 in the Quantity Decimal Precision profile, and if the Order Entry Specialist enters 17.3468 for the quantity, then the profile will round 17.3468 to 17.347..

Quantity for some items is typically a whole number. For example, most companies sell a desktop computer as a whole item. Don't use Quantity Decimal Precision to allow only a whole number in the quantity. Instead, you can set the Indivisible attribute to Yes in the Product Information Management work area when you set up the item.

Here's your scenario.

  • You sell a variety of elements from the periodic table according to weight, such as Diamond.

  • You sell these elements in grams and milligrams, which is 1/1000 of a gram.

  • The value for milligram can range from .001 to .999.

  • You already set up an item named Diamond in the Product Information Management work area, and you specified it to use Gram as the unit of measure.

  • You will set the scale to 3.

Set up decimal precision.

  1. In the Navigator, click Setup and Maintenance.

  2. On the Setup page, click Tasks > Search.

  3. On the Search page, search for, then open Manage Administrator Profile Values.

    For details about this task, see book SCM Cloud: Implementing Common Features for Oracle SCM Cloud.

  4. On the Manage Administrator Profile Values page, in the Search area, enter the value, then click Search.

    Attribute Value

    Profile Display Name

    Quantity Decimal Precision

  5. In the search results, in the Profile Values area, set the value, click Save and Close > Done.

    Attribute Value

    Profile Value

    3

    You can set decimal precision only at the Site level. You can't set it for each item or for each unit of measure.

  6. In the Navigator, click Order Management.

  7. On the Overview page, click Create Order.

  8. On the Create Order page, in the Select Item window, enter Diamond, then click Search.

  9. On the catalog search line, in the quantity window to the left of Gram, set the value to 17.3468, then click Add.

  10. Verify that the Create Order page displays a message that it rounded your value to 17.347.

Set Default Values on Sales Orders from Product Information Management

Use a business rule to get a value for your item from the Product Information Management work area, then use it to set the default value for an attribute on the sales order.

Here's the example pretransformation rule you will create.

If the user adds the AS54888 item, then set the default value for the Accounting Rule attribute to Immediate, and set the value for the Invoicing Rule to the Arrears Invoice attribute.

This topic includes example values. You might use different values, depending on your business requirements.

Summary of the Steps

  1. Modify the item.

  2. Create the pretransformation rule.

Modify the Item

Use the Product Information Management work area
to modify the item.

Do it.

  1. Sign into Oracle Fusion Applications with a user role you can use to administer Product Information Management.

    If you don't sign in with this user role, then the Product Information Management work area won't display your product details and you can't do this procedure.

  2. Click Tasks > Manage Items, then search.

    Attribute Value

    Item

    AS54888

  3. In the search results, click AS54888.

  4. On the Edit Item page, click Specification > Sales and Order Management, set values, then click Save.

    Attribute Value

    Accounting Rule

    Immediate

    Invoicing Rule

    Arrears Invoice

Create the Pretransformation Rule

Use the Setup and Maintenance work area to create
the rule.

Do it.

  1. Sign out, then sign in as the order administrator.

  2. In the Navigator, click Setup and Maintenance.

  3. In the Setup and Maintenance work area, go to the task.

    • Offering: Order Management

    • Functional Area: Orders

    • Task: Manage Pretransformation Rules for Sales Orders

  4. Create a new rule. Test for the item on the fulfillment line, then set attribute values on the fulfillment line.

    • Create the If statement.

      IF item = AS54888

    • Create the Then statement.

      Accounting Rule is set to Immediate

      Invoicing Rule is set to Arrears Invoice

Create a business rule to get data from the Product Information Management work area and bring it into Order Management.

In this example, you assign an orchestration process that includes extra steps so order fulfillment safely handles hazardous material, such as packing in a controlled container and shipping through a company that specializes in shipping hazardous material. The fulfillment line doesn't come predefined with a hazardous attribute, so you reference an attribute in Product Information Management instead. Here's the assignment rule you will create.

  • If shipping a hazardous material, then use the Ship_Hazardous_Material orchestration process.

You create a rule that references the hazardousMaterialFlag attribute in Product Information Management.

rule that references attribute hazardousMaterialFlag
in Product Information Management

For details about how to create a business rule, see the Overview of Using Business Rules in Order Management topic.

Do it.

  1. Create the rule.

    • In the Setup and Maintenance work area, go to the task.

      • Offering: Order Management

      • Functional Area: Orders

      • Task: Manage Process Assignment Rules for Sales Orders

    • On the Manage Orchestration Process Assignment Rules page, click Create New Rule, then set values.

      Attribute Value

      Name

      Assign According to Hazardous Material

      Description

      Assign orchestration process depending on hazardous material.

  2. Create the If statement.

    • Click New Condition.

    • In the Create Condition dialog, enter haz, wait a moment, then click harzardousMaterialFlag (Item Definition).

      The phrase Item Definition indicates that the attribute resides on an item definition in Product Information Management.

    • Set the operator to Is Equal To.

    • Enter Y, then click OK.

  3. Create the Do statement.

    • Click Then > Do > New Action.

    • In the Create Action dialog, enter process, wait a moment, then click Process Name (Order Fulfill Line).

      The phrase Order Fulfill Line indicates that the orchestration process you set will process order fulfillment lines.

  4. Search for your orchestration process.

    • Click Search > Advanced.

    • Set Process Name to Contains.

    • Enter Ship_Hazardous_Material.

      The search is case sensitive.

    • Click Search.

      For this example, assume you already created and deployed this orchestration process. If you didn't deploy, then Search won't find it.

    • Click the row in the search results.

    • Click OK.

    • In the Create Action dialog, click OK.

  5. Activate and publish your rule.

Set Default Value for Scheduled Ship Date

Set the default value for the Schedule Ship Date attribute on the fulfillment line.

You will create an example rule.

  • If the source order header includes PMC, then set the default value for Scheduled Ship Date to the current date.

If the source order header includes PMC, then set
the default value for Scheduled Ship Date to the current date.

Note.

  • Use Visual Information Builder.

  • Enter Source Order (Order Header) when you create the If clause.

  • Enter values when you create the Then clause.

    • Override Schedule (Order Fulfill Line)

    • Scheduled Ship Date (Order Fulfill Line)

Verify You Collected Shipping Attributes

As an option, you can verify you collected shipping attributes that affect the Schedule Ship Date.

The orchestration process uses shipping attributes when it orchestrates shipment during fulfillment.

  • Carrier

  • Method of Transport

  • Service Level

Here's an example payload that includes them.

<coresalesorder:ProcessSalesOrderFulfillment>
<coresalesorder:ModeOfTransportCode>AIR</coresalesorder:ModeOfTransportCode> <coresalesorder:ServiceLevelCode>1ST</coresalesorder:ServiceLevelCode>
<corecom:PaymentTerm>
  <corecom:Code>24</corecom:Code>
</corecom:PaymentTerm>
<corecom:CarrierPartyReference>
  <corecom:PartyIdentification>
    <corecom:ApplicationObjectKey>
      <corecom:ID>DHL</corecom:ID>
    </corecom:ApplicationObjectKey>
  </corecom:PartyIdentification>
</corecom:CarrierPartyReference>

Use SQL to confirm you collected this data.

select 
mai.instance_code
, mxm.entity_name 
, mxm.attribute_name
, mxm.Source_value
, mxm.target_value
from 
  MSC_XREF_MAPPING MXM
, MSC_APPS_INSTANCES MAI
where upper(entity_name) in ('WSH_SERVICE_LEVELS','WSH_MODE_OF_TRANSPORT','CARRIERS') AND
  (source_value = 'DHL' or Source_value = 'AIR' or Source_value = '1ST') AND
  MAI.instance_id = MXM.SR_instance_id AND
  MAI.instance_code = 'LEG'
order by 
  ENTITY_NAME
, SOURCE_VALUE;

Assume your query returns results.

INSTANCE CODE ENTITY NAME ATTRIBUTE NAME SOURCE VALUE TARGET VALUE

LEG

CARRIERS

CARRIER_ID

DHL

32512

LEG

WSH_MODE_OF_TRANSPORT

LOOKUP_CODE

AIR

39

LEG

WSH_SERVICE_LEVELS

LOOKUP_CODE

1ST

15

Next, get details about the service level and mode of transport. Query according to the lookup codes from the result of your first query.

SELECT 
 lookup_code
, lookup_type
, meaning
, enabled_flag
, start_date_Active
, end_date_Active
FROM 
 MSC_SR_LOOKUP_VALUES_vl
WHERE LOOKUP_CODE IN (15,39)
order by 
  lookup_code;

Here's the result.

LOOKUP_CODE LOOKUP_TYPE MEANING ENABLED_FLAG START_DATE_ACTIVE END_DATE_ACTIVE

15

WSH_SERVICE_LEVELS

1st Class

Y

01-JAN-59

Not applicable

39

WSH_MODE_OF_TRANSPORT

Air

Y

01-JAN-59

Not applicable

Next, get details about the carrier. Query according to the lookup code for the carrier from the result of your first query.

SELECT 
  tp_id
  , partner_name
  , party_id
FROM FUSION.MSC_GLOBAL_TRADING_PARTNERS 
  where tp_id = 32512;

Here's the result.

TP_ID PARTNER_NAME PARTY_ID

32512

DHL

DHL

Sales Order Constraints

Create a processing constraint to control modifications the Order Entry Specialist or your source system can make on a sales order.

A processing constraint is a rule that controls who can change a sales order, what can change in the sales order, and when the change can occur.

  • If an Order Entry Specialist attempts to submit or modify a sales order, order line, or fulfillment line, and if a processing constraint doesn't allow the submit or change, then Order Management rejects it and displays a message.

  • If a source system attempts to submit or modify a sales order, then Order Management rejects it and sends a return message.

  • Order Management also uses the processing constraint to make sure each fulfillment request includes the attributes that it needs to process the request.

For details about how to use a constraint to manage change, including how to set up AND and OR conditions, see the Guidelines for Managing Change That Occurs During Order Fulfillment topic.

Examples

Example Constraint Description

Reject a change when the sales order is shipping.

Assume an orchestration process achieves the shipping stage for a sales order, and a user submits a change.

  • The shipping stage occurs late in the orchestration process.

  • Its expensive and not practical to change the sales order.

Create a constraint that rejects the change after the orchestration process has achieved the shipment step.

Reject each sales order that doesn't include required attributes.

Assume your company doesn't deliver items to an address that doesn't include a ship-to contact.

Create a constraint that rejects the sale order when it doesn't include a ship-to contact.

Reject a change that requires approval.

Assume your company doesn't allow the Order Entry Specialist to submit a change if the transaction value exceeds $10,000, and if a manager hasn't approved the change.

Create a processing constraint that rejects a change when all of these conditions are true.

  • The user signed in with the Order Entry Specialist role.

  • The transaction exceeds $10,000.

  • A manager hasn't approved the change.

Parts of a Processing Constraint

Part Description

Role

The job role that the constraint doesn't allow to make the change.

For example, you can constrain an Order Entry Specialist from changing a sales order when the orchestration process proceeds beyond a step that you specify.

Action

The action that the constraint doesn't allow. You can constrain the user from doing these actions.

  • Create

  • Validate

  • Update

  • Split

  • Submit

  • Cancel

  • Delete

Condition

The condition that the constraint evaluates to determine whether to apply the constraint. For example, you can create a condition that applies a constraint when Order Management books a sales order.

Here's the logic that a processing constraint uses.

  • if the validation rule set is true, and if the user attempts an action on the record set that the processing constraint prevents, then constrain the operation and display a message.

Note.

  • If you set up a constraint that doesn't include a condition, then the constraint is always true. For example, the predefined processing constraint that prevents the Order Entry Specialist from deleting a sales order prevents deletion in all situations.

  • You can use a constraint with an extensible flexfield.

  • You can write a constraint for a sales credit. For example, write a constraint that prevents the user from updating the sales credit if Order Management already shipped the order line. You can't write a a validation rule set that constrains a sales credit. For example, you can't write a constraint that prevents the user from updating the warehouse if the sales credit empty.

How It Works

the logic that a processing constraint uses.

Here's the logic this example uses.

Step Object Description

1

Processing constraint

If the Order Entry Specialist role does an Update operation on the fulfillment line entity. . .

2

Validation rule set

. . .and if the Status attribute on the fulfillment line entity contains a value of Awaiting Shipment. . .

3

Constraint entity

. . .then constrain the change that the Order Entry Specialist is attempting to make. . .

4

Record set

. . .according to the Bill-to Customer attribute on the fulfillment line entity.

Objects You Set Up for a Processing Constraint

Object Description

Validation rule set

A group of one or more If statements. For example.

  • If the order is closed, then reject the change.

In this example, a predefined validation rule set named Order is Closed examines the Open attribute on the order header to determine whether the value is N.

Note.

  • Use the validation rule set to restrict the validation that the constraint does to lines that meet the condition you specify, such as lines that are billed.

  • The validation rule set prevents the constraint from examining all lines, which might degrade performance.

  • Create the validation rule set before you create the constraint.

  • You can't modify or delete a predefined validation rule set, but you can create a new one.

  • You can apply a processing constraint when the condition is true or isn't true.

  • You can't enter a value that contains ~ (a tilde) when you define a validation rule set because Order Management uses the tilde as a delimiter when it evaluates the constraint rule at run time.

    You might also encounter this problem at run time with some order attributes. For example, a shipping instruction might contain a tilde.

Record set

A set of records that Order Management groups according to common attribute values so it can evaluate a constraint.

For example, to evaluate all sales orders for a customer, specify to evaluate one of these entities when you create the record set.

  • Order header

  • order line

  • Order fulfillment line

You then select an attribute to refine the record set. For example, to evaluate all sales orders for a customer, select the Order Header entity, then select the Sold-to Customer attribute.

Validation rule sets and record sets work together to create the conditions where the constraint constrains the action.

You must create your validation rule sets and record sets first, then create the constraint.

Constraint entity

The business object or orchestration process that the constraint constrains.

For example, an order header, or an attribute of an order header, such Latest Acceptable Ship Date.

Constraint package

A set of triggers that Order Management applies to a table in an Oracle database. A background process sets triggers when you create a constraint package.

A constraint package can activate a new or modified.

  • Validation rule set that's of a table type

  • Record set for a processing constraint

Here are the ways you create a constraint package.

  • Use the Manage Processing Constraints page or run the Generate Constraint Packages scheduled process.

  • Create or modify a record set or a validation rule set that's of a table type.

You don't need to create a constraint package for a validation that isn't a table type.

Constraint Name

Here are the text strings you can use in the constraint name.

Text String Constraint That Occurs During Validation With. . .

GTM

Oracle Global Trade Management.

PAYMENT

Payment.

PRICING

Pricing.

Constraint name doesn't include GTM, PAYMENT, or PRICING

Screen for all types during order validation.

For example, to indicate payment, use DOO_PAYMENT_EXCEPTION.

The text style in the text string isn't case-sensitive. For example, use GTM, Gtm, gtm, gtM, and so on.

You can place the text string anywhere in the constraint name.

A constraint entity is the view or orchestration process that a processing constraint constrains.

Type of Constraint Entity Description

View

Constrain change according to the value of an attribute that a user can view in the Order Management work area.

Here are the types of view constraint entities you can choose.

  • Order Fulfillment Line

  • Order Line

  • Order Header

For example, if you set Order Header as the constraint entity, then the constraint constrains changes according to the order header.

Use a predefined view constraint entity, but you can't create a new one.

The Attribute Details list on the Manage Constraint Entities page displays when you choose a view constraint entity. Use it to choose the attributes to constrain.

Process

Constrain an action from occurring at some point in an orchestration process, such as updating an attribute or deleting a table entity, according to a combination of orchestration process, task, and service.

For example, the Update Shipping task layer service references the OrderOnlyProcess constraint entity. Here's what OrderOnlyProcess specifies.

  • Orchestration Process is OrderOnlyProcess

  • Task is Shipping

  • Service is UpdateShipment

OrderOnlyProcess constrains a change if the OrderOnlyProcess orchestration process is running, and if this process is currently on the Shipping task, and if this process calls the UpdateShipment service.

A process constraint entity.

  • Considers the current position of the transaction in the orchestration process flow.

  • Can validate required attributes for a fulfillment request, such as a Create Shipment request, Update Shipment request, or Create Reservation request.

You can use a predefined process constraint entity or create a new one.

Set up a processing constraint.

Summary of the Steps

  1. Create the record set.

  2. Create the validation rule set.

  3. Create the processing constraint.

  4. Test your set up.

In this example, you set up a processing constraint that prevents your users from changing an order fulfillment line that's part of an orchestration process that's in the shipping stage.

This topic includes example values. You might use different values, depending on your business requirements.

Create the Record Set

  1. In the Setup and Maintenance work area, go to the task.

    • Offering: Order Management

    • Functional Area: Orders

    • Task: Manage Processing Constraints

  2. On the Manage Processing Constraints page, click Record Sets > Actions > Add Row, then set values.

    Attribute Value

    Name

    Fulfillment Lines That Belong to Same Customer

    Description

    A record set created on fulfillment lines that belong to the same customer.

    Short Name

    FCST

    Entity

    Order Fulfillment Line

  3. In the Fulfillment Lines That Belong to Same Customer area, click Actions > Add Row, then set the value.

    Attribute Value

    Attribute Name

    Bill-to Customer

  4. Click Save > Generate Packages.

  5. Notice that the Confirmation dialog displays your request ID, click OK, then wait for the request to finish.

    For example.

    The concurrent request to generate constraints validation packages was submitted. Request ID: 10650.

Create the Validation Rule Set

  1. Click Validation Rule Sets.

  2. Click Actions > Add Row, then set values.

    Attribute Value

    Name

    Shipment Validation Rule Set

    Description

    The validation rule set for lines with status Awaiting Shipment.

    Short Name

    SHIP

    Validation Type

    Table

    Entity

    Order Fulfillment Line

  3. In the Shipment Validation Rule Set area, click Actions > Add Row, then set values.

    Attribute Value

    Attribute Name

    Status

    Validation Operation

    Equal to

    Value String

    Awaiting Shipment

    If you enter your own attribute, then you must enclose the string with double quotation marks (" ").

  4. Click Save > Generate Packages.

  5. In the Confirmation dialog, click OK.

    • Generate Packages deploys all enabled constraints into your implementation.

    • If you create your own processing constraint or modify a predefined one, and if you update to a new release, then you must generate packages again immediately after you do the update.

Create the Processing Constraint

  1. Click Constraints.

  2. Click Actions > Add Row, then set values.

    Attribute Value

    Constraint Name

    Shipping Constraint

    Display Name

    Shipping Constraint

    Constraint Entity

    Order Fulfillment Line

    Constrained Operation

    Update

    Enabled

    Contains a check mark.

  3. In the Shipping Constraint area, in the Conditions list, click Actions > Add Row, then set values.

    Attribute Value

    Group Number

    1

    Validation Entity

    Order Fulfillment Line

    Validation Rule Set

    Shipment Validation Rule Set

    Record Set

    Fulfillment Lines That Belong to Same Customer

    Message

    You can't update the fulfillment line because its in the shipping stage.

  4. In the Shipping Constraint area, click Applicable Roles, make sure All Roles is enabled, then click Save.

Test Your Set Up

  1. In the Order Management work area, access a fulfillment line that's in the Awaiting Shipment status.

  2. Attempt to change an attribute.

  3. Verify that Order Management doesn't allow you to make the change, and displays the message you entered in the Message attribute when you set up the constraint.

Constrain the changes your users can make to an attribute.

Order Management comes predefined to apply a processing constraint on some attributes but not on others. In this example, you create a processing constraint that constrains changes on the Latest Acceptable Ship Date attribute on the order header.

  1. In the Setup and Maintenance work area, go to the task.

    • Offering: Order Management

    • Functional Area: Orders

    • Task: Manage Constraint Entities

  2. On the Manage Constraint Entities page, in the Entity Type attribute, click View Entity, then click Search.

    The Manage Constraint Entities page displays view constraint entities and process constraint entities. Order Management can constrain changes to any process constraint entity, so it isn't necessary to enable them for constraint.

  3. In the Search Results, click the constraint entity that displays the attribute you must constrain.

    For example, to constrain changes to Latest Acceptable Ship Date on the order header, in the Display Name column, click Order Header.

  4. In the Attribute Details list, in the row that contains Latest Acceptable Ship Date in the Attribute column, add a check mark to the Constraint Enabled option.

Constrain changes that your users make in an extensible flexfield.

For example, use a processing constraint to prevent the Order Entry Specialist from updating an extensible flexfield when Order Management already closed the fulfillment line, or to require the user to enter a value in an extensible flexfield at a step of an orchestration process.

  • Use the Manage Constraint Entities page to enable an extensible flexfield so you can use it on the Manage Processing Constraints page.

  • Extensible flexfields aren't available on the Attributes menu of the Record Sets tab.

  • You must enable an extensible flexfield before you can use it.

  • A processing constraint prevents changes to the order line after Order Management closes the line. If you set up an extensible flexfield on the order line, and if you don't constrain the extensible flexfield, then the constraint doesn't prevent the user from changing the value in the extensible flexfield.

Summary of the Set Up

  1. Enable the extensible flexfield.

  2. Create the validation rule set.

  3. Create the processing constraint.

  4. Test your set up.

Here's the constraint you will create.

  • If Order Management already closed the fulfillment line, then don't allow the user to change the value of the Subcontractor ID extensible flexfield.

This topic uses example values. You might use different values, depending on your business requirements.

Enable the Extensible Flexfield

Enable the extensible flexfield so the constraint can reference it.

  1. If necessary, publish and deploy the extensible flexfield.

    For details, see the Publish and Deploy Extensible Flexfields topic.

  2. In the Setup and Maintenance work area, go to the task.

    • Offering: Order Management

    • Functional Area: Orders

    • Task: Manage Constraint Entities

  3. On the Manage Constraint Entities page, set Entity Type to Equals View Entity, then click Search.

  4. In the search results, select Order Fulfillment Line.

  5. In the Attribute Details area, locate the extensible flexfield you must enable, make sure Constraint-Enabled contains a check mark, then click Save and Close > Done.

    For this example, enable Subcontractor ID.

Create the Validation Rule Set

  1. In the Setup and Maintenance work area, go to the task.

    • Offering: Order Management

    • Functional Area: Orders

    • Task: Manage Processing Constraints

  2. On the Manage Processing Constraints page, click Validation Rule Set.

  3. Click Actions > Add Row, set values, then click Save.

    Attribute Value

    Name

    Fulfillment Line Is Closed

    Description

    Fulfillment line is closed.

    Short Name

    FLCLOSE

    Validation Type

    Table

    Entity

    Order Fulfillment Line

  4. In the Details area, click Actions > Add Row, set values, then click Save.

    Attribute Value

    Attribute Name

    Open

    Validation Operation

    Equal To

    Value String

    N

  5. Click Generate Packages.

    Order Management activates the validation rule set so you can use it in your constraint.

If you add more than one line in the Details area of a validation rule set, then Order Management evaluates them together.

If you select two context and segment attributes, then the attributes must use the same context value. The context is mutually exclusive. Consider this example.

Context Segment

Dealer Information

ID

Dealer Information

Location

Warranty Information

ID

You can't simultaneously select segment ID for the Dealer Information context and for the Warranty Information context.

Create the Processing Constraint

  1. Click Constraints > Actions > Add Row, set values, then click Save.

    Attribute Value

    Name

    Constrain Subcontractor ID

    Display Name

    Constrain Subcontractor ID

    Constraint Entity

    Order Fulfillment Line

    Constrained Operation

    Update

    Attribute Name

    Subcontractor:ID

  2. In the Details area, click Actions > Add Row, set values, then click Save.

    Attribute Value

    Group Number

    100

    Validation Entity

    Order Fulfillment Line

    Validation Rule Set

    Fulfillment Line Is Closed

    Scope

    Any

    Record Set

    Fulfillment Line Default Record Set

    Message

    The fulfillment line is closed. You can't modify it.

Test Your Set Up

  1. In the Order Management work area, open a sales order you already submitted.

  2. Verify that Order Management doesn't allow you to modify Subcontractor ID on a fulfillment line that's closed.

Change Orders

Overview

Order Management Cloud comes predefined to process change, but you can modify the set up to meet your needs.

A change order is a change that affects a sales order during order fulfillment. It can come from a variety of sources, such as from a user through an order capture system, a user who uses the Order Management work area, or from change orders you import. For example, you might need to make changes to a sales order after you submit it to order fulfillment.

  • Change the quantity and the ship-to address.

  • Add more items to a sales order you created yesterday.

  • Cancel a sales order or cancel an order line.

  • Don't allow changes to a sales order after some point in time or after a condition occurs, such as after pick release.

Here are some examples of how change can occur.

  • Order Entry Specialist uses the Create Order Revision action to revise a sales order or makes changes in fulfillment views. Order Management doesn't apply order management extensions when the user makes a change in a fulfillment view. For details, see the Revise Sales Orders That You Already Submitted topic.

  • You import change from a channel.

How Change Orders Work

flow of How Change Orders Work

Here's the sequence Order Management uses to process change.

  1. Receive Change Order. Receive change order from channel.

  2. Constrained? Apply processing constraint.

    A processing constraint is a rule that controls who can change a sales order, what can change in the sales order, and when the change can occur.

    Order Management examines the header and fulfillment lines.

    Entity Description

    Order Header

    Determine whether a processing constraint on header prevents change, and whether the sales order is closed.

    • If a constraint doesn't allow change, or if the order is closed, then reject the entire change and exit this sequence.

    • Evaluating order header before evaluating order lines prevents Order Management from unnecessarily processing a closed sales order.

    • Order Management evaluates attributes when the user creates the revision, and also when the user submits the revision to make sure other fulfillment changes didn't occur that might affect the order.

    Fulfillment Line

    Determine whether constraints on the fulfillment line allow change.

    • If a constraint doesn't allow change on any fulfillment line, then reject the entire change and exit this sequence.

    • Some constraints on a fulfillment line don't allow some changes, by default, such as updating an order line if fulfillment line status is Shipped.

  3. Transform. Transform the change order.

    Order Management does the transformations you set up, such as transforming an attribute value in the source order to a value that your fulfillment system can understand. For details, see the Transformation Rules topic.

    If you create an order management extension that affects a change order, then Order Management finishes transformation, then runs the extension.

  4. Delta?. The delta is the difference between an attribute value in the original sales order and the new value for the attribute in the change order. For example.

    Condition Description

    Quantity in original order is 1, and Quantity in revised order is 3.

    A delta exists, and its value is 2.

    Quantity in original order is 1, and Quantity in revised order is 1.

    No delta exists.

    Here's how Order Management determines the delta.

    • Examines set ups to determine which attributes to examine.

      • Uses values you specify on the Order Attributes That Identify Change page.

      • Examines predefined attributes that affect the task. You can't specify to examine or not examine these predefined attributes.

      • Examines attributes you add that affect the task. You can specify to examine or not examine attributes you add.

    • Identifies orchestration process steps that reference these attributes.

    • Analyzes the state of each step. The orchestration process records the state every time it runs a task. Order Management compares the change order to the existing sales order to determine whether the value of the attribute changed.

    • Uses these state details to determine the processing needed to incorporate the change.

    In this example, assume the user changed the quantity, and you specified Quantity as a change attribute, so Order Management starts compensation.

  5. Hold Current Task. If a delta exists, then hold the task that's currently running.

    A change order requests to change a sales order that an orchestration process is already processing in order fulfillment. The orchestration process runs various tasks during order fulfillment, such as schedule, reserve, ship, or invoice.

    For example, assume the orchestration process sent a request to the shipping system to ship the item, is currently waiting for the shipping system to send a reply, and sets the status to Awaiting Shipping. The change order might affect shipping, so Order Management sends a request to the shipping system to temporarily stop processing the task.

    Stopping the task allows Order Management to finish the change and prevent the shipping system from shipping the sales order without the changes that the change order requests.

    If the fulfillment system can't accommodate the change, then it replies with a rejection, and the sequence ends. For example, if the fulfillment system already shipped the sales order, then its too late to accommodate the change. Instead, the Order Entry Specialist must create a return order to make the requested changes.

  6. Merge. Merge the change order into the sales order that the orchestration process is currently processing.

  7. Compensate.

Compensate

A compensation pattern is a rule that you set up on an orchestration process step that specifies adjustments to make when an order changes.

For example.

  • Change order requests to use a different warehouse.

  • Compensation pattern for the Create Shipment step is Redo.

  • This step calls the Cancel service to cancel the current request, and the Create service to create a new request that includes the change order.

  • If Order Management receives a change order that includes a new warehouse for this step, then it runs Cancel and Create again.

Here's how compensation works.

flow of how compensation works
  1. Check for Delta. Determine whether a delta exists that affects the current task. For example, if the current task is reservation, and if a delta exists for the Quantity attribute, then the delta affects the reservation task because the orchestration process must adjust the reserved quantity so it reflects the change order.

    If the delta determines that an attribute requires compensation, then the orchestration process uses the compensation pattern that the step references to compensate the step.

  2. Compensate. Here's what Order Management does.

    • Runs the orchestration process again.

    • Sends updates to the fulfillment system for each task. If the changed attribute doesn't affect the task, then the orchestration process applies the attribute change to the sales order but doesn't send an update to the fulfillment system.

    You can set up a business rule that determines the action to take according to the compensation pattern.

    Most orchestration process steps don't include a compensation pattern, and they use Update, by default. In this example, Order Management compensates some steps.

    Steps That Order Management Compensates Description

    Schedule

    Cancels the Schedule step, then creates a new instance of this step. Order Promising determines availability. Order Management replans fulfillment, then assigns a revised date to each orchestration process step.

    Create Reservation

    Assume the orchestration process in this example includes a pattern for the Create Reservation step.

    • If Demand Class Code isn't Gold, then cancel the Create Reservation step, then create a new instance of this step.

    This rule instructs Order Management to release supply and create a new reservation for all customers except Gold customers. Order Management also updates Create Reservation according to the new dates, and updates the reserved quantity.

    Create Shipment Request

    Updates the Create Shipment Request step with new dates and new item.

    The compensating services run, and then finish. These services use FIFO (first in, first out) sequence to compensate the sales order, according to the orchestration process sequence, by default. If Order Management must cancel the entire sales order, then it uses LIFO (last in, first out).

    If the original orchestration process.

    • Can accommodate the change. Order Management uses the original orchestration process to continue processing.

    • Can't accommodate the change. Order Management cancels the original orchestration process, then starts a new one that can accommodate the change.

  3. Send Update. Compensation finishes. Processing for the orchestration process is now at the same step it was on when Order Management received the change order.

    Order Management sends an update message to your fulfillment system to update the original message with the changed order that includes the changed attributes. For example.

    Values Description

    Original Values

    Quantity is 1 and Arrival Date is August 15, 2018

    Values after compensation sends an Update Inventory message for the change order that includes the changed attributes.

    Quantity is 2 and Arrival Date is August 18, 2018

Example of Processing Change

Assume you must set up Order Management to compensate change when the Order Entry Specialist changes quantity.

You create the ShipOrderGenericProcess orchestration process. Here are the set ups you use.

Set Up Value

Change Mode

Advanced

Order Attributes That Identify Change

You include attributes.

  • Ordered Quantity

  • Demand Class Code

  • Requested Ship Date

Cost of Change

You specify a rule.

If the fulfillment line status is.

  • Reserved. The cost of change is 15.

  • Shipped. The cost of change is 100.

A lower number indicates a lower cost.

You add steps.

Step Name Task Type

1

Schedule

Schedule

2

Create Reservation

Reservation

3

Create Shipment Request

Shipment

4

Wait for Shipment Advice

Shipment

5

Create Invoice

Invoice

6

Wait for Invoice

Invoice

Each step references a task type, and each task type references order attributes that Order Management uses to determine whether to compensate the sales order. In this example, the Schedule step and the Shipment step each reference a task type that references the Ordered Quantity attribute.

For example, if the user increases Quantity on the sales order, then Order Management must schedule and ship more supply.

  • Assume the Order Entry Specialist submits a sales order for the AS54888 Desktop Computer with a quantity of 1.

  • One day later, the Order Entry Specialist clicks Create Revision, changes Quantity to 2, then clicks Submit.

Order Management compensates the Schedule step and the Shipment step.

Guidelines for Managing Change That Occurs During Order Fulfillment

Apply guidelines when you specify how to process change that occurs during order fulfillment, including how to compensate change.

Import Change From Channel

Import change orders through various channels.

flow of import change orders through various channels

Note.

  • A channel can include an order capture system, fulfillment system, the Order Management work area, and so on.

  • Order Management cross-references, transforms, validates, and orchestrates the change in a way that's similar to how it does this work for a new sales order. If rules that control how to process a change exist, then Order Management applies them. You can use setup options to modify how Order Management does this processing.

  • Use the same Excel template that you use to import sales orders to import change orders. For details, see the Import Orders into Order Management topic.

  • Use the same web service that you use to create a sales order to import a change order. For details, see the Use Web Services to Import Orders topic.

  • Use only one channel to make changes. For example, use Create Order Revision to make changes, or use a web service, or use file-based import. Don't use Create Order Revision and web services and file-based import. Using different channels causes confusion when attempting to identify the source of the change.

  • Some implementations price the order in a channel, then send it to Order Management.

    • You can't change pricing that your channel uses to pricing that Oracle Pricing Administration uses.

    • You can't change pricing that Oracle Pricing Administration uses to pricing that your channel uses.

  • Order Management submits the change orders it receives through a web service to order fulfillment. You can't submit a change order through a web service and keep it in Draft status. Order Management only keeps a sales order in Draft if an error occurs in the change order.

  • Order Management doesn't update a sales order that's in Draft status.

  • If you use Create Order Revision in the Order Management work area, and must revise the order again, then use Create Order Revision again. Don't use a web service or file-based import to revise the order again.

Manage attribute values.

  • If you change only one line in a sales order, then it isn't necessary to import all order lines.

  • To cancel the order line, import a quantity of 0.

  • Order Management sets the attribute value to empty for each order line attribute that the channel doesn't send. For example, if the original order includes a value for Shipping Method, and if the channel sends a change request that doesn't include Shipping Method, then Order Management sets Shipping Method to empty.

  • If the channel revises only the order header, then Order Management revises the header but not the order lines.

  • The channel must include a value for each required attribute.

  • To cancel an order line, the channel must explicitly request the cancel. Order Management doesn't implicitly cancel order lines when it revises a sales order.

Set Up Orchestration Process

Use the Edit Orchestration Process Definition page in the Setup and Maintenance work area. For details, see the Set Up Orchestration Processes topic.

page Edit Orchestration Process Definition in work
area Setup and Maintenance

You can administer features.

Feature Description

Cost of Change Rule

A rule you set up on an orchestration process that specifies the business cost your organization will incur as a result of processing the change.

Change Mode

An option you set on an orchestration process. It determines when Order Management records the state of the process. It compares these states during order compensation.

Choose a value.

  • Advanced. Process change. Record the state of the orchestration process at each orchestration process step.

  • Simple. Process change only on the step that receives change. Record the state of the orchestration process when it starts and at the step where the orchestration process receives the change.

  • None. Don't allow change. Don't record the state of the orchestration process.

Use Flexfield Attributes

An option you set on an orchestration process or orchestration process step that specifies whether to examine flexfield attributes when compensating the sales order.

If you enable this option, then Order Management examines flexfield attributes that the item references to determine whether it must compensate the orchestration process.

For example, assume you create flexfield Color. Assume the user changes the value of Color from Red to Blue. You can use Color during compensation to allow your fulfillment system to reschedule the order line so it ships a blue item instead of a red one.

Order Management disables Use Flexfield Attributes and Use Transactional Item Attributes on each predefined orchestration process, by default. You can't enable these options on a predefined orchestration process. However, you can create a copy of a predefined orchestration process, and then enable them on the copy.

Use Transactional Item Attributes

An option you set on an orchestration process or orchestration process step that specifies whether to examine transactional attributes when compensating a sales order. For details, see the Transactional Attributes topic.

Enable the Use Flexfields Attributes option and the Use Transactional Item Attributes option only if you will send these attributes to your fulfillment system during compensation.

Use Dynamic Attributes

An option you set that specifies whether to examine dynamic attributes when compensating a sales order.

Compensation Pattern

A rule you set up on an orchestration process step that specifies the adjustment to make to the sales order when the order changes.

For example, if Order Management receives a change order that specifies to ship an item from a different warehouse during the Create Shipment step, then it runs the Cancel service and the Create service again.

If you don't specify a compensation pattern, then Order Management uses the predefined compensation pattern, by default. A predefined pattern uses Update, Cancel, or Create.

Task Type

An attribute you set on an orchestration process step. The task type that you select determines the attributes that Order Management uses when it determines whether it must compensate the sales order for this step.

Order Management comes predefined to use a set of attributes for each predefined task type. You can't modify the predefined set up, but you can add more attributes. Order Management doesn't add these attributes to a new task type you add, and it doesn't evaluate this task until you add these attributes. To add them, you must click Add All.

Reserve Supply

If you reserve or schedule an order line according to future supply, then consider whether your orchestration process needs the reserve or schedule step. For example, the reservation step examines supply that's currently available, and then reserves it to make sure your fulfillment system can fulfill the item. If you don't need to reserve supply, then don't include the reservation step. If you do need to reserve, then consider making the reservation step a manual step, for example, so the user must click a button, such as Reserve.

You can also add a pause step before the reserve or schedule step. The pause task can pause the orchestration process until the shipment is almost ready to ship, such as 12 hours before scheduled shipment. When the reservation step runs, it will provide a more accurate picture of supply that's available because its closer to the ship date. Waiting to reserve supply in this way can also reduce the cost of holding inventory until its time to ship.

Set Up Rule for Cost of Change

Rule for Cost of Change

Note.

  • Set up a rule that measures the cost of change. If its too high, reject the change.

  • In the header area of the orchestration process, next to Cost of Change Rule, click Click for Rule.

  • Use Advanced Mode.

  • Use the Assign action.

  • Assign a numeric value to Header.mRuleDecision.costOfChange. For example.

    Header.mRuleDecision.costOfChange = 10

Set Up Compensation

Set Up Compensation

Note.

  • Use a compensation rule only to compensate change. If you must also set values for other attributes, then use a posttransformation rule.

  • In the steps area of the orchestration process, in the step you must compensate, in column Compensation Pattern, click Click for Rule.

  • Use Advanced Mode.

  • In the IF statement.

    • Use a change function, such as attributeChanged or Changed.

    • Specify the attribute that changed. For example, if the user changed the Item attribute, then use INVENTORYITEMID.

  • For example.

    Fline.attributeChanged(DooSeededOrchestrationRules.IFLine. INVENTORYITEMID)is true

    For a list of attributes you can specify, see topic Reference for Entities and Attributes You Can Use When Integrating Order Management.

  • In the THEN statement.

    • Use the Assign action.

    • For example.

      header.mRuleDecision.compensationPattern = "CANCEL_CREATE"
    • Assign a value.

      Value Description

      UPDATE

      Update the current fulfillment request with the latest attribute value.

      Each orchestration process comes predefined to use UPDATE, by default. If you don't specify a compensation pattern, and if the orchestration process detects a change, then it will send an update request to the fulfillment system.

      UPDATE_CREATE

      Update the current fulfillment request with the latest attribute value, and also create a new request.

      CANCEL_CREATE

      Cancel the current fulfillment request, and then create a new request that includes the latest attribute value.

      CANCEL_UPDATE

      Cancel the current fulfillment request, and then update another fulfillment request with the latest attribute value.

      CANCEL_UPDATE_CREATE

      Cancel the current fulfillment request, update another fulfillment request with the latest attribute value, and then create a new request that includes the latest attribute value.

      NOOP

      NOOP (No Operation). Don't do any compensation.

      These values determine what request the orchestration process sends to the fulfillment system.

Constrain Change

Use a processing constraint.

  • Disallow change that you know your fulfillment system can't accommodate, such as changing the supplier for an item that requires significant lead time for the supplier to produce.

  • Make sure a channel doesn't make a change that your fulfillment system can't accommodate.

  • Make sure the user includes required attributes. For example, assume you add your own numeric attribute x for invoicing, and invoicing requires attribute x to calculate the invoice. You can use a constraint to make sure the user adds a value for x, and that the value is numeric.

  • If a constraint doesn't meet your business requirement, then set up an order management extension. Use an extension to validate, then display a message or warning.

page Manage Processing Constraints

Note.

  • Set the Constraint Entity attribute to Order Fulfillment Line.

  • If the Enabled attribute is active on a predefined constraint, then you can disable it. Disable a predefined constraint only after you make sure removing the constraint won't negatively affect your implementation.

  • Use the same value in the Group Number attribute to create an AND condition across constraints. For example, if you set Group Number to 10 for condition x, and Group Number to 10 for condition y, and if conditions x and y both evaluate to True, then Order Management applies the constraint.

  • Use different values in Group Number to create an OR condition. For example, if you set Group Number to 10 for condition x, and Group Number to 20 for condition y, and if condition x or y evaluates to True, then Order Management applies the constraint.

  • Use the Applicable Roles tab to specify the user roles that can or can't edit an attribute according to the constraint.

  • Use the Manage Processing Constraints page in the Setup and Maintenance work area.

  • For details, see the Manage Processing Constraints topic.

For example.

flow of Managing Processing Constraints

Here's the logic that this constraint implements.

Prevent user from updating attribute Supplier on fulfillment line.

You set values.

Attribute Value

Constraint Entity

Order Fulfillment Line

Constrained Operation

Update

Attribute Name

Supplier

Enabled

Contains a check mark

Manage Attributes That Identify Change

flow of Manage Attributes That Identify Change

This example implements a condition.

If the user changes Quantity on fulfillment line, then perform compensation during shipping.

Note.

  • The user creates a revision, clicks Submit, and then the orchestration process starts.

  • The orchestration process reaches a step that uses the Shipment task type, then examines the Manage Order Attributes That Identify Change page in the Setup and Maintenance work area to determine whether to process the change.

  • For details, see the Manage Order Attributes That Identify Change topic.

For example.

setting attribute Task Type

Note.

  • Set the Task Type attribute to a value, such as Schedule, Reservation, Shipment, and so on, to determine when to examine the change.

  • Specify an entity to determine where the attribute resides.

    • Order Fulfillment Line

    • Order Line

    • Order Header

  • Specify the attribute to examine, such as Ordered Quantity.

  • Use the Add action to add an attribute.

  • You can add a predefined attribute, such as Ordered Quantity, but you can't disable it.

Other Guidelines

Order Management doesn't run pretransformation rules when you use Create Order Revision. If you must set the default attribute value on a new order line that the user adds when using Create Order Revision, then create a posttransformation rule that sets the default value.

Your users can use the fulfillment view to change a large number of fulfillment lines. If you set up a number of business rules that must run for each change, and if the user submits a large set of changes, then you might encounter degraded performance. You must test how many fulfillment line updates your environment can accommodate, then limit updates from the fulfillment view according to the optimal.

Set up Order Management to examine an order attribute that identifies change in a change order, then compensate the sales order.

Assume you must create an orchestration process step that uses the Ordered Quantity attribute to identify change.

This topic includes example values. You might use different values, depending on your business requirements.

Manage order attributes that identify change.

  1. In the Setup and Maintenance work area, go to the task.

    • Offering: Order Management

    • Functional Area: Orders

    • Task: Manage Order Attributes That Identify Change

  2. On the Manage Order Attributes That Identify Change page, in the Task Type list, click a task type that looks like it might meet the needs that your orchestration process step requires.

    Order Management comes predefined with a number of task types. To reduce maintenance, use a predefined task type before you create a new one.

  3. Click the row that includes Shipment, then click Actions > Edit.

  4. On the Edit Order Attributes That Identify Change page, in the Orchestration Components list, click a component that you think might contain the attribute that Order Management must use to identify change.

    For this example, click Order Line.

  5. Examine the Attributes list, then take action.

    • The orchestration process step examines each attribute in this list to determine whether to compensate the sales order when it receives a change order. If the list includes the attributes that your step requires to identify change, then set the Task Type attribute on the step to this task type, then go to the next step in this procedure.

      For this example, the list does include Ordered Quantity, so set Task Type to Shipment.

      If the Predefined column in the Attributes list includes a check mark, then you can't remove this attribute.

    • If the Attributes list doesn't include the attributes your step needs to identify change, then do these steps.

    • Click Actions > Select and Add.

    • In the Change Attributes dialog, click an attribute, such as Scheduled Ship Date.

    • Click Apply > OK.

  6. Restart the Oracle server.

    If you don't restart the server, then Order Management won't consider any of the attributes that you add or remove in this procedure when it processes the sales order.

Here are some set ups you can do on the Manage Order Attributes That Identify Change page.

Set Up Description

Add an attribute to all tasks that the Task Type list displays.

Click Actions > Edit All.

Add new task type.

Click Actions > Create.

On the Create Order Attributes That Identify Change page, add attributes, as necessary.

If you create a new task type, and if you don't use this page to add at least one attribute to the task type, then Order Management won't examine any attributes when it identifies change.

Measure Cost and Compensate

Measure the Cost of Change

Set up Order Management to measure the cost of change.

Cost of change is a numeric value that measures how much a change impacts an orchestration process. For example, the monetary cost to your company, or the difficulty that's associated with incorporating the change. You can create a business rule that measures the cost of change for an orchestration process.

If the source system requests a determination for cost of change, then Order Management calculates the value, then returns it to the source system so the customer service representative can choose whether to proceed with the change. The source system can request the value before it submits the sales order. Order Management also calculates the cost after it compensates the sales order.

You use a business rule to assign the cost of change to an orchestration process. If you choose not to use values for the cost of change, then Order Management uses a value of zero to calculate cost.

Assume you need a business rule that measures the cost of change your company will incur when a customer requests a change. If fulfillment line status is.

  • Scheduled, then cost is low

  • Shipped, then cost is high

Here are the rules you will create.

  • If fulfillment line status is Scheduled, then cost of change is 5.

  • If fulfillment line status is Shipped, then cost of change is 50.

This example includes a simple business rule you can use with an orchestration process that includes only one line. You use advanced rules to write a rule that includes more than one line. For details, see the Overview of Using Business Rules With Order Management topic.

Summary of the Steps

  1. Set up your source system.

  2. Create If statement for first rule.

  3. Create Then statement for first rule.

  4. Create If statement for second rule.

  5. Create Then statement for second rule.

  6. Test your set up.

This topic includes example values. You might use different values, depending on your business requirements.

Set Up Your Source System

Order Management doesn't display the result when it calculates the cost of change. Instead, you must set up your source system to get the result from Order Management, then display it so someone who uses the source system can take the necessary action. To get this result, you can use the GetOrderDetails method of the Get Orchestration Order web service. For details, see the Overview of Using Web Services with Order Management Cloud topic.

Create If Statement for First Rule

Here's the first rule.

If Statement for First Rule

where

Object Description

DooSeededOrchestrationRules

Dictionary that contains rule sets, facts, functions, variables and so on for order orchestration.

DOOFLine

Fact in DooSeededOrchestrationRules. It contains fulfillment line attributes.

DOOFLine is an abbreviation for distributed order orchestration (DOO) fulfillment line (FLine). The phrase distributed order orchestration is an earlier name for Order Management Cloud.

statusCode

Fulfillment line attribute.

The entire value isn't visible in the screen capture. Here's the full value.

DooSeededOrchestrationRules.DOOFLine.statusCode

SCHEDULED

One value that statusCode might contain.

Result

Fact in DooSeededOrchestrationRules. You use it to store the results of the business rule you're defining.

resultObjKey

Property of the Result fact.

esultObjKey:5

Sets the value of resultObjKey to 5.

Create If statement for first rule.

  1. In the Setup and Maintenance work area, go to the task.

    • Offering: Order Management

    • Functional Area: Orders

    • Task: Manage Orchestration Process Definitions

  2. On the Manage Orchestration Process Definitions page, locate the orchestration process where you must add the cost of change rule, then open it for editing.

  3. In the Orchestration Process area, next to Cost of Change Rule, click Click for Rule .

  4. In the Cost of Change Rule dialog, click Add Rule > Expand > Show Advanced Settings, then set values.

    Attribute Value

    Name

    Cost of Change for Scheduled Lines

    Description

    This rule measures the cost to change a sales order when the fulfillment line status is Scheduled. It sets the cost of change to 5.

  5. Click Left Value.

  6. In the Condition Browser dialog, expand DooSeededOrchestrationRules > DOOFLine, then click StatusCode > OK.

  7. In the Right Value attribute, enter "SCHEDULED". You must include the double quotation marks.

Create Then Statement for First Rule

  1. In the Then area, click Add Action > Assert New.

  2. Click Select a Target > DooSeededOrchestrationRules.Result.

  3. Click Edit Properties.

  4. In the Properties dialog, in the resultObjKey row, enter this value, then click OK.

    Attribute Value

    Value

    5

  5. Click Collapse.

Create If Statement for Second Rule

Here's the second rule.

If Statement for Second Rule

Create the If statement for the second rule.

  1. Click Add Rule > Expand > Show Advanced Settings, then set values.

    Attribute Value

    Name

    Cost of Change for Shipped Lines

    Description

    This rule measures the cost to change a sales order when fulfillment line status is Shipped. It sets the cost of change to 50.

  2. Click Left Value.

  3. In the Condition Browser dialog, expand DooSeededOrchestrationRules > DOOFLine, then click StatusCode > OK.

  4. In the Right Value attribute, enter "SHIPPED". You must include the double quotation marks.

Create Then Statement for Second Rule

  1. In the Then area, click Add Action > Assert New.

  2. Click Select a Target > DooSeededOrchestrationRules.Result.

  3. Click Edit Properties.

  4. In the Properties dialog, in the resultObjKey row, in the Value column, enter 50, then click OK.

  5. In the Cost of Change Rule dialog, click Save.

  6. On the Edit Orchestration Process Definition page, click Save.

Test Your Set Up

  1. Change a sales order that includes a fulfillment line status that's Scheduled.

  2. Wait for Order Management to process the change.

  3. Make sure your source system displays a value of 5 for the cost of change.

  4. Change a sales order that includes a fulfillment line status that's Shipped.

  5. Wait for Order Management to process the change.

  6. Make sure your source system displays a value of 50 for the cost of change.

Compensate Sales Orders That Change

Create a compensation pattern that makes an adjustment when a fulfillment task changes a sales order.

A compensation pattern is a rule you create on an orchestration process step. It specifies the adjustment to make when an order changes. Undo, Redo, Update, Cancel, and None are each an example of a compensation pattern.

For example, assume the compensation pattern for a Create Shipment step is Redo, and that the step calls the Cancel service and the Create service. If Order Management receives a change order that includes a new warehouse for the step, then it runs Cancel and Create again.

Assume you need a compensation pattern that pauses the orchestration process until compliance check finishes.

  • If compliance details change, then pause the orchestration process until compliance is done.

Here's the rule you will create.

Creating If statement

where

Code Description

DooSeededOrchestrationRules

Dictionary that contains a set of predefined business rules for an orchestration process. You use it to store objects and their values.

DOO means distributed order orchestration, which is a term that Order Management used for order orchestration in earlier releases.

DOOHeader

Object in DooSeededOrchestrationRules. It contains attributes for the sales order header and their values.

headerEFF

Extensible flexfield on the order header. For this example, assume you defined an extensible flexfield that stores details about the compliance check.

For details about flexfields, see the Overview of Setting Up Extensible Flexfields in Order Management topic.

DooSeededOrchestrationRules.FlexContexts

Establishes FlexContexts in the dictionary.

FlexContext

Object that stores the value for the extensible flexfield.

ComplianceDetails

Object that stores compliance details.

ComplianceInfo

Object that stores compliance information.

mRuleDecision.CompensationPattern

CompensationPattern is a property of object mRuleDecision. CompensationPattern stores the string UPDATE, which is the value that this rule uses to end the condition.

Here's a description of how the statement works.

Code Description

header is a DooSeededOrchestrationRules.DOOHeader

Declare header as a temporary variable that stores the value from object DOOHeader of dictionary DooSeededOrchestrationRules.

Proceed to the next AND statement only after you declare header.

headerEFF is a DooSeededOrchestrationRules.FlexContext

Declare headerEFF as a temporary variable that stores the value from object FlexContext of DooSeededOrchestrationRules.

Proceed to the next AND statement only after you declare headerEFF.

headerEFF isn't null

Proceed to the next AND statement only if the extensible flexfield on the sales order header contains a value.

This set up uses headerEFF to store the value of the extensible flexfield that stores attribute Compliance Details on the order header. If the value of Compliance Details is empty, then it indicates compliance isn't required, compensation isn't required, and the orchestration process continues to the next orchestration process step.

header.flexContexts RL.contains headerEFF

Declare headerEFF into the rules language (RL) dictionary, and set the value of headerEFF to the value that flexContexts contains.

This condition makes sure you correctly declare the variable into the dictionary.

Proceed to the next AND statement only if RL contains headerEFF.

Do this test on each of your variables to make sure the declaration is correct. If you don't do the test, and if the declaration isn't correct, then the rule might fail in a subsequent step.

headerEFF.context isn't null

Make sure a context is defined for the order header. Proceed to the next AND statement only if context contains a value.

headerEFF.context equals ignore case "ComplianceDetails"

Get the context and segments for Compliance Details for this variable.

Proceed to the next AND statement only if context contains the string ComplianceDetails. Ignore case sensitivity when examining.

if context contains some other value, then it indicates that no other process requested a compliance check.

headerEFF.attributeChanged("_ComplianceInfo") is true

Make sure attribute ComplianceInfo of the extensible flexfield changed. You use attributeChanged to determine whether the value for ComplianceInfo is different in this revision.

This example includes a simple rule that processes only one line. Use an advanced rule to process more than one line. For details, see the Overview of Using Business Rules With Order Management topic.

Summary of the Steps

  1. Create If statement.

  2. Create Then statement.

  3. Release pause task.

This topic includes example values. You might use different values, depending on your business requirements.

Create If Statement

You will create a statement.

  • If compliance details changed

Do it.

  1. Create the rule.

    • In the Setup and Maintenance work area, go to the task.

      • Offering: Order Management

      • Functional Area: Orders

      • Task: Manage Orchestration Process Definitions

    • On the Manage Orchestration Process Definitions page, locate the CallCustomerWhenLargeInvoice orchestration process, then click Actions > Edit.

      For details about how to create CallCustomerWhenLargeInvoice, see the Add Branches to Orchestration Processes topic.

    • On the Edit Orchestration Process Definitions page, in the Process Details area, in the Step Definition list, click Change Management.

    • In the Ship Item row, in the Compensation Pattern column, click Click for Rule.

    • In the Compensation Pattern dialog, click Add Rule > Expand, then set values.

      Attribute Value

      Name

      Determine Whether Compliance Changed

      Description

      If compliance details changed, then pause the orchestration process until compliance is done.

      Effective Date

      Always

      Priority

      Medium

      Active

      Contains a check mark.

      Advanced Mode

      Contains a check mark.

      Tree Mode

      Doesn't contain a check mark.

  2. Declare variable header.

    • In the If area, in the window to the left of Is A, enter header.

    • Set the field to the right of Is A to DooSeededOrchestrationRules.DOOHeader.

  3. Declare variable headerEFF.

    • Click Add Pattern.

    • In the window to the left of Is A, enter headerEFF.

    • Set the field to the right of Is A to DooSeededOrchestrationRules.DOOHeader.

  4. Make sure headerEFF contains a value.

    • Click Add Test.

    • In the window to the left of Is, enter headerEFF.

    • Change Is to Isn't.

    • In the field to the right of Isn't, click Right Value > null > OK.

  5. Declare headerEFF into the rules language (RL) dictionary.

    • Click the down arrow located to the right of Right Value, then click Simple Test.

    • In the window to the left of Is, click Left Value, expand header, then click flexContexts > OK.

    • Change Is to RL.contains.

    • In the field to the right of RL.contains, click Right Value > headerEFF > OK.

  6. Make sure context contains a value.

    • Click Simple Test.

    • Near the window to the left of Is, click Left Value, expand headerEFF, then click context > OK.

    • Change Is to Isn't.

    • In the field to the right of Isn't, click Right Value > null > OK.

  7. Make sure context contains the string ComplianceDetails.

    • Click Simple Test.

    • Near the window to the left of Is, click Left Value, expand headerEFF, then click context > OK.

    • Change Is to Equals Ignore Case.

    • In the field to the right of Equals Ignore Case, click Right Value, enter "ComplianceDetails", then click OK.

      Make sure you include the double quotation ( " ) marks.

  8. Make sure attribute ComplianceInfo of the extensible flexfield changed.

    • Click Simple Test.

    • Near the window to the left of Is, click Left Value, expand headerEFF, and then click hasChanges.

    • In the window in the Condition Browser, notice the value.

      headerEFF.attributeChanged()

      Insert "_ComplianceInfo" between the parentheses, then click OK. For example.

      headerEFF.attributeChanged("_ComplianceInfo")

    • In the window to the right of Is, enter true.

Create Then Statement

Create the statement that pauses the orchestration process until compliance is done.

  1. In the Then area, click Add Action > Assign.

  2. Click Select a Target, then click header.mRuleDecision.compensationPattern.

  3. In the window to the right of the equal sign ( = ), enter "UPDATE".

    You must include the double quotation marks.

  4. Click Validate, make sure the Validation Log that displays doesn't contain any errors, then click Save.

  5. On the Edit Orchestration Process Definition page, click Save.

Pause the Task According to Date

You add this rule in the Pause Rule column on the same step where you added the compensation pattern.

Pause Task While Date Is Empty

Order Management sets the compliance completion date when compliance check is done. If the date is empty, then it indicates compliance check isn't done, and the rule doesn't release the pause task. For example.

  • If CompleteCompliancedate is empty, then compliance check isn't done. Assign a business event to indicate we must wait.

rule that pauses task while date is empty

Here's the code that the rule uses.

If header is a DooSeededOrchestrationRules.DOOHeader 
and if headerEFF is a DooSeededOrchestrationRules.FlexContext and 
  headerEFF isn't null and 
  header.flexContexts RL.contains headerEFF and 
  headerEFF.context isn't null and 
  headerEFF.context equals ignore case "ComplianceDetails" and 
  headerEFF.getFlexAttributeDateValue("_CompleteCompliancedate") is null 

then 
  assign header.sacResult.sacType = DooSeededOrchestrationRules.SacResult.SAC_TYPE_EVENT
  assign header.sacResult.eventName = "Awaiting Compliance Check Completion" 
  assign header.sacResult.reevaluateFlag = "N"

Pause for Future Date

You can create a rule that pauses until compliance completion date is later than order header date. For example.

  • If CompleteCompliancedate occurs after order header date, then compliance check is done. Prepare to release the pause task.

To prepare to release the pause task, you set waitDateTime to the compliance date. For details about waitDateTime and sacResults, see the Guidelines for Pausing Orchestration Processes topic.

rule that sets waitDateTime to the compliance date

Here's the code that the rule uses.

If header is a DooSeededOrchestrationRules.DOOHeader 
and if headerEFF is a DooSeededOrchestrationRules.FlexContext and 
  headerEFF isn't null and 
  header.flexContexts RL.contains headerEFF and 
  headerEFF.context isn't null and 
  headerEFF.context equals ignore case "ComplianceDetails" and 
  headerEFF.getFlexAttributeDateValue("_CompleteCompliancedate") isn't null 
  headerEFF.getFlexAttributeDateValue("_CompleteCompliancedate") more than header.current_date

then 
  assign header.sacResult.sacType = DooSeededOrchestrationRules.SacResult.SAC_TYPE_TIMER 
  assign header.sacResult.waitDateTime = headerEFF.getFlexAttributeDateValue("_CompleteCompliancedate")

Release Pause Task

Create a rule that releases the pause task. It doesn't reference the extensible flexfield you set up earlier in this topic. Instead, it uses rules.

  • Pause Rule for Null Date

  • Pause Rule for Future Date

It uses the values that these rules set for SacResult to determine when to release the pause task.

Here's the rule that releases the pause task.

rule that Releases Pause Task

Here's the code that this rule uses.

If header is a DooSeededOrchestrationRules.DOOHeader 

then 
  assign new DooSeededOrchestrationRules.sacResult SAC = new DooSeededOrchestrationRules.sacResult()
  assign header.sacResult = SAC
  assign header.sacResult.sacType = DooSeededOrchestrationRules.SacResult.SAC_TYPE_IMMEDIATE
  assign header.sacResult.reevaluateFlag = "N"

You add this rule in the Pause Rule column on the same step where you added the compensation pattern.

Another Example of Compensating Sales Orders That Change

Set up a compensation pattern that allows time to reschedule an orchestration process when a customer requests to change the ship date.

Here's the rule you will create.

  • If the requested ship date is less than or equal to the current date plus three days, then cancel and redo the Ship Product step.

Here's where you create the rule.

rule that Compensates Sales Orders That Change

Here's the code that the rule uses.

If
DooSeededOrchestrationRules.DOOFLine.requestShipDate same or less than CurrentDate.date.timeInMillis+3*24*60*60*1000

Then
assert new DooSeededOrchestrationRules.Result (resultObj."CANCEL_CREATE")

where

Code Description

DooSeededOrchestrationRules

Dictionary you use to store objects and their values.

DOO means distributed order orchestration, which is term that Order Management used for order orchestration in earlier releases.

DOOFLine

Object in DooSeededOrchestrationRules. It contains fulfillment line attributes and their values.

requestShipDate

Fulfillment line attribute in DOOFLine.

time

Property of the toLocateString function. This function references the requestShipDate attribute.

CurrentDate.date.timeInMillis+3*24*60*60*1000

Equation that specifies to use the date that occurs three days after the current date.

Result

Object in DooSeededOrchestrationRules that you use to store the result of the If statement.

resultObj

Property of the Result object.

It stores CANCEL_CREATE, which is the value that this rule uses to end the condition.

Summary of the Steps

  1. Create If statement.

  2. Create Then statement.

This topic includes example values. You might use different values, depending on your business requirements.

Create If Statement

You will create a statement.

  • If the requested ship date is less than or equal to the current date plus three days

Do it.

  1. In the Setup and Maintenance work area, go to the task.

    • Offering: Order Management

    • Functional Area: Orders

    • Task: Manage Orchestration Process Definitions

  2. On the Manage Orchestration Process Definitions page, locate the CallCustomerWhenLargeInvoice orchestration process, then click Actions > Edit.

    For details about how to create CallCustomerWhenLargeInvoice, see the Add Branches to Orchestration Processes topic.

  3. On the Edit Orchestration Process Definitions page, in the Process Details area, in the Step Definition list, click Change Management.

  4. In the Ship Item row, in the Compensation Pattern column, click Click for Rule.

  5. In the Compensation Pattern dialog, click Add Rule > Expand, then set the value.

    Attribute Value

    Name

    Rule to Compensate When Ship Date Changes

  6. In the If area, click Left Value, expand DOOSeededOrchestrationRules > DOOFline > requestShipDate, then click time > OK.

  7. In the Is list, click Is > Same or Less Than.

  8. Click Right Value.

  9. In the Condition Browser, expand CurrentDate > Date > Time, then click timeInMillis.

    Don't click OK.

  10. Near the top of the Condition Browser, in the window, after CurrentDate.date.timeInMillis, add +3*24*60*60*1000 .

    Make sure the window now contains the value. . .

    CurrentDate.date.timeInMillis+3*24*60*60*1000

    The time function for most business rules work in milliseconds, so you must convert time to milliseconds. The calculation 3*24*60*60*1000 calculates the total number of milliseconds that three days contains, where.

    • 3 is the number of days.

    • 24 is the number of hours in one day.

    • 60 is the number of minutes in one hour.

    • 60 is the number of seconds in one minute.

    • 1000 is the number of milliseconds in one second.

  11. Click OK.

Create Then Statement

Create the statement that cancels, then restarts the Ship Product step so Order Management can reschedule the shipment.

  1. In the Then area, click Add Action > Assert New.

  2. Click Select a Target, then click DooSeededOrchestrationRules.Result.

  3. Click Edit Properties.

  4. In the Properties dialog, in the ResultObj row, enter the value.

    Attribute Value

    Value

    "CANCEL_CREATE"

    You must include the double quotation marks (").

  5. Click OK.

  6. Click Validate, make sure the Validation Log that displays doesn't contain any errors, then click Save.

  7. On the Edit Orchestration Process Definition page, click Save.

Compensate Sales Orders That Are Awaiting Shipping

The compensation pattern for the Shipping task uses Cancel and Create to substitute an item during shipping because Oracle Fusion Shipping supports only cancel and create. You can modify your compensation rule to support shipping.

If you don't use Oracle Fusion Shipping, and if your shipping system.

  • Supports Update. You don't need to modify anything.

  • Doesn't support Update. You must modify the compensation rule so it uses Cancel and Create.

Note.

  • If you need different behavior, then you can write a compensation rule according to an item change. Note that business rules call the Update service for an item change.

  • Change management can only identify change to an extensible flexfield. However, you can write a compensation rule that examines the extensible flexfield segment so it can determine whether to do compensation.

Here's the rule you will create.

  • If the sales order is at the await shipping step, and if the Order Entry Specialist substituted the item, then cancel the existing request to ship, create a new request, schedule, reserve, and then send the new request to shipping.

Each shipping step and reservation step on a predefined orchestration process that integrates with shipping already use this logic. You add this logic only if you set up your own orchestration process.

Compensate sales orders that are awaiting shipping.

  1. Use the Manage Orchestration Process Definitions page to open and edit the orchestration process you must modify.

  2. In the row that ships the item, in the Compensation Pattern column, click Click for Rule, then add the rule.

Here's the code to use.

Root: DooSeededOrchestrationRules.DOOHeader
If
  header is a DooSeededOrchestrationRules.DOOHeader
  and At least one
  fline is a header/childFlines
  and fline.attributeChanged(DooSeededOrchestrationRules.IFLine.INVENTORYITEMID) is true
then
  assign header.mRuleDecision.compensationPattern = "CANCEL_CREATE"

Here's what it looks like.

Rule that compensates sales orders that are awaiting
shipping

Notify Systems

Use a business event to send a notification to a system that resides outside of Order Management Cloud when a change occurs, such as when details in a sales order or fulfillment line change.

You can send the notification to an upstream system, such as an order capture system,, or to a downstream system, such as a fulfillment system or billing system.

A business event is something that occurs that's significant enough that requires in Order Management to take an action. Here are some examples.

  • A change to an order attribute occurs.

  • Order Management applies a hold.

  • A jeopardy priority changes.

  • A fulfillment line splits.

  • The status on an order header changes.

  • A fulfillment line closes.

  • A fulfillment line achieves a status.

  • Compensation for an orchestration process finishes successfully or not successfully.

Here's how it works.

how you can use a business event to communicate

Note.

  1. Order Management monitors conditions that occur during order fulfillment according to the trigger points you specify.

    For example, if you enable the Notify External System option for the Shipped status value on a status rule set, then Order Management communicates the business event each time it sets a fulfillment line status to Shipped, and it sends the business event to the endpoint URL of the connector you set up for the Fulfillment Line Status Update business event. For details about this option, see the Add Status Conditions to Fulfillment Lines topic.

  2. You use the Manage Business Event Trigger Points page in the Setup and Maintenance work area to specify the trigger point. If Order Management determines a trigger point occurred, then it uses the Connector Name attribute on the Manage Business Event Trigger Points page to identify the connector to use to communicate to the external system.

  3. The connector communicates with the external system. You use the connector to specify the URL that locate the external system and the security credentials that your external system requires to communicate data. For example, the fulfillment line status is Shipped, so you notify your invoicing system that the order is ready to invoice.

  4. As an option, you can use the Notify Frequency parameter to specify how frequently Order Management sends notifications. For details, see the Manage Order Management Parameters topic.

You can also use a web service to communicate details about the event.

Manage Business Event Trigger Points

A business event trigger point is the condition that causes a business event to occur.

  • You must associate a connector with the business event you specify. For details, see the Send Notifications from Order Management Cloud to External Systems topic.

  • The business events that this page displays aren't active, by default, except for business events that monitor closing a fulfillment line.

  • A modification you make on this page takes effect immediately.

  • The settings you make affect only one instance of Order Management.

  • You can't add or delete the business events that this page displays.

  • Set up only the business event trigger points you need. Each trigger point might affect system performance.

Use Predefined Trigger Points

Predefined Business Event Description

Change Order Compensation Complete

Send a notification when Order Management finishes processing a change order. If the change order results in an error, then this business event reports the error.

Fulfillment Line Status Update

Send a notification when Order Management changes the status value of a fulfillment line.

You can specify the status values that trigger notification.

  1. Navigate to the Manage Orchestration Process Definitions page.

  2. On the Edit Status Rule Set page, add a check mark to the Notify External System option next to each status value you want to trigger notification.

Fulfillment Line Closed

Send a notification when Order Management closes a fulfillment line. Some applications, such as Cost Management, can use these details to do downstream processing on the fulfillment line.

Hold

Send a notification when a user applies a hold, or when the order capture system or fulfillment system applies a hold on an entity.

  • Order

  • Order line

  • Fulfillment line

Note.

  • If a hold doesn't go into effect immediately, for example, if the hold applies to a future task, then Order Management communicates the business event when the hold goes into effect, not when the request to add the hold occurs.

  • If change management releases or applies a hold, then Order Management doesn't communicate the business event.

Jeopardy

Send a notification when process planning changes a jeopardy priority value, such as High, Medium, or Low. You can specify the value to notify.

Order Attribute Update

Send a notification when Order Management changes a fulfillment line attribute during order fulfillment. You can choose each attribute from the set of attributes that the task references.

  • Each attribute that the Order Update - Attributes That Trigger Events area displays can trigger a business event. These attributes are predefined. You can also set up an extensible flexfield that modifies these attributes.

    If you set up an extensible flexfield, then Order Management displays it in the Select and Add - Attributes That Trigger Events dialog. If you select one or more segments, and then click OK or Apply, then Order Management displays the segments that you select in the Order Attribute Update - Attributes That Trigger Events area.

  • If Order Management updates more than one attribute of the Order Attribute Update business event at the same time, then it sends only one notification. This notification includes details about the attributes it updated.

  • The status values in the Order Header Status Update - Status Values That Trigger Events area start the Order Header Status Update business event. These values are predefined. You can't add status values in this area.

Order Header Status Update

Send a notification when Order Management cancels, partially closes, or closes a sales order. You can specify the status value to notify.

Split

Send a notification when a partial shipment occurs or when an integrated system splits a fulfillment line.

Send Notifications from Order Management to Other Systems

Set up Order Management to send a notification to a system that resides outside of Order Management.

Summary of the Steps

  1. Add the connector.

  2. Manage business event trigger points.

  3. Set the notification frequency.

This topic includes example values. You might use different values, depending on your business requirements.

For background details about how to do the set up, see these topics.

  • Guidelines for Integrating Order Management

  • Overview of Using Integration Cloud Service with Order Management

Add the Connector

Add the connector that Order Management uses to communicate with your external system..

  1. In the Setup and Maintenance work area, go to the task.

    • Offering: Order Management

    • Functional Area: Orders

    • Task: Manage External Interface Web Service Details

  2. On the Manage Connector Details page, click Actions > Add Row, then set values.

    Attribute Value

    Target System

    Select the external system that must receive the notification. This system subscribes to the business event.

    Connector Name

    Enter text that describes the purpose of the connector. For example, to indicate that you use this connector to send notifications to a legacy system, enter LEG_Notification.

    Connector URL

    Specify an endpoint URL. The URL is the address of the web service you deploy on the external system. Order Management will call this web service, and the web service must accept the event payload that Order Management sends.

    User Name

    Enter the user name that the external system requires.

    Password

    Enter the password that the external system requires.

Manage Business Event Trigger Points

Manage the business event trigger points that determine when to communicate business events to your external system.

  1. In the Setup and Maintenance work area, go to the task.

    • Offering: Order Management

    • Functional Area: Orders

    • Task: Manage Business Event Trigger Points

  2. On the Manage Business Event Trigger Points page, choose a trigger point.

    At run time, if the sales order reaches the trigger point you specify, then Order Management calls the web service you choose in the Connector URL attribute. The web service then sends details of the business event to the external system. For example, to send a notification when a fulfillment line closes, choose the Fulfillment Line Closed trigger point.

  3. Click Actions > Add Row.

    Some trigger points include the Associated Connectors tab in the details area. If this tab displays, then click it to add the connector.

  4. Set values.

    Attribute Value

    Connector Name

    Select the connector you added earlier in this topic.

    Override Default Visibility

    Choose one.

    • Contains a check mark. Send a notification about each sales order even if the external system that receives the notification doesn't have any knowledge about the sales order.

    • Doesn't contain a check mark. If the external system doesn't have any knowledge about the sales order, then don't send the notification about the sales order.

    Here's an example.

    • Assume your implementation includes Source System 1 and Source System 2, and that each of these systems can send a source order to Order Management.

    • Assume Source System 2 has no knowledge of source orders that originate in Source System 1, and that you don't want to notify Source System 2 when an event occurs that's associated with a source order that originates in Source System 1.

    • If Override Default Visibility doesn't contain a check mark, then Order Management won't call the connector for Source System 2, and Source System 2 won't receive the notification.

  5. Optional. Repeat step 3 and step 4.

    You can associate the same connector with more than one business event, as necessary.

  6. Optional. Repeat step 2 through 5 for each trigger point you must administer.

  7. Click Save and Close.

Set the Notification Frequency

Use the Notify Frequency parameter to specify how frequently Order Management sends notifications. For details, see the Manage Order Management Parameters topic.

Return Orders

Use a web service or import template to integrate your source system so it supports return orders.

Payload that integrates your source system to support
return

Include attributes in your web service payload.

Attribute Description

UnreferencedReturnFlag

Specify whether the payload references the original return.

  • Y. The payload doesn't reference the original return.

  • N. The payload does reference the original return.

Covered attributes, such as CoveredProductIdentifier

Specify covered item details.

CancellationEffectiveDate

Date that reverse billing goes into effect.

Use services to integrate Order Management with another system in your deployment.

  • GetOrderDetails

  • OrderInformationService

  • OrderFulfillmentResponseService

For details, see the Overview of Using Integration Cloud Service with Order Management topic.

Guidelines

Use the Order Import Template

Use the DOO_ORDER_DOC_REFERENCES_INT worksheet in the order import template to identify the original order and the item you're returning. For details, see the Overview of Importing Orders into Order Management topic.

Prevent Billing System from Rejecting Accounting and Invoicing Rule

If you use an accounting and invoicing rule when you create a sales order, and if you must create a return for an order that references return lines, then do these steps.

  1. Disable the predefined DOO_RMA_BILLING_ATTR_CHANGED constraint.

    It verifies the accounting and invoicing rules between the referenced return line and the original order line. You don't need it.

  2. Write an order management extension that nullifies the accounting and invoicing rule for referenced return lines.

    • Use the On Start of Submission Request event.

    • Make sure your extension runs only on return lines that Order Management hasn't yet sent to billing, and on lines that aren't closed or canceled.

  3. If you already submitted the return and you don't want to revise it, then remove the accounting and invoicing rule in your billing system.

    • Remove the rule only after Order Management sends the line to your billing system.

    • If you use Oracle Fusion Receivables, then use Manage AutoInvoice Lines to remove the values.

Specify the Return-to Location

If you set the Line Type attribute on a return line to Return for Credit and Return the Item, and if the item is shippable, then you must provide the return-to location in the Return Location attribute on the order line. If you create your own return type and use it on the return line, and if you must physically return the item, then its recommended that you create an order management extension or processing constraint that makes sure you provide a value in the Return Location attribute. Order Management uses the Warehouse as the return-to location.

Example Payload That References the Original Return

Here's part of an example payload that references the original return. Use the Create Order Operation of web service Order Import Service. For brevity, this example includes only the attributes that are relevant for a return. Its an incomplete payload. To get the complete payload, see the return_order_with_reference.xml file in the Example Web Service Payloads That Integrate Order Management topic.

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Body>
    <ns1:createOrders xmlns:ns1="http://xmlns.oracle.com/apps/scm/fom/importOrders/orderImportService/types/">
     <ns1:request xmlns:ns2="http://xmlns.oracle.com/apps/scm/fom/importOrders/orderImportService/">
      <ns2:BatchName/>
      <ns2:Order>
       <ns2:SourceTransactionIdentifier>AP_RETURN_ORDER_01</ns2:SourceTransactionIdentifier>
       <ns2:SourceTransactionSystem>GPR</ns2:SourceTransactionSystem>
       <ns2:SourceTransactionNumber>AP_RETURN_ORDER_01</ns2:SourceTransactionNumber>
       <ns2:TransactionOn>2019-1-20T06:08:52</ns2:TransactionOn>
       <ns2:SourceTransactionLineIdentifier>101</ns2:SourceTransactionLineIdentifier>
        <ns2:SourceTransactionScheduleIdentifier>101</ns2:SourceTransactionScheduleIdentifier>
        <ns2:SourceTransactionLineNumber>1</ns2:SourceTransactionLineNumber>
        <ns2:SourceTransactionScheduleNumber>1</ns2:SourceTransactionScheduleNumber>
       <ns2:ProductNumber>AS54888</ns2:ProductNumber>
       <!-- TransactionCategoryCode can use one of two values. Use ORDER for regular order line. Use RETURN for return order line. If RETURN, you must provide the reference to original order and line under LineDocumentReference-->
       <ns2:TransactionCategoryCode>RETURN</ns2:TransactionCategoryCode>
       <!-- ReturnReasonCode and Return Reason are optional for a return order line. -->
       <ns2:ReturnReasonCode>ORA_QTY_CHANGE</ns2:ReturnReasonCode>
       <ns2:OrigSysDocumentReference>ORIGSYS</ns2:OrigSysDocumentReference>
       <ns2:OrigSysDocumentLineReference>ORIGSYSLINE</ns2:OrigSysDocumentLineReference>

       <!Send the Line Document Reference only for a return line. This entity references the original order line for the item you're returning.-->
       <ns2:DocumentReference>
       <ns2:DocumentReferenceType>ORIGINAL_SALES_ORDER</ns2:DocumentReferenceType>
       <!-- SourceOrderId for original order -->
       <ns2:DocumentIdentifier>ORIG_SALES_ORDER_01</ns2:DocumentIdentifier>
       <!-- Source Order System for original order identifier-->
       <ns2:DocumentAdditionalIdentifier>GPR</ns2:DocumentAdditionalIdentifier>
       <!-- SourceOrderNumber of original order -->
       <ns2:DocumentNumber>ORIG_SALES_ORDER_01</ns2:DocumentNumber>
       <ns2:DocumentAdditionalNumber/>
       <!-- SourceLineId for originl order -->
       <ns2:DocumentLineIdentifier>101</ns2:DocumentLineIdentifier>
       <ns2:DocumentAdditionalLineIdentifier/>
       <!-- SourceLineNumber for original order -->
       <ns2:DocumentLineNumber>1</ns2:DocumentLineNumber>
       <ns2:DocumentAdditionalLineNumber/>
       <ns2:DocumentAdditionalSubLineIdentifier/>
       <ns2:DocumentSubLineNumber/>
       <ns2:DocumentAdditionalSubLineNumber/>
      </ns2:DocumentReference>
     </ns2:Line>
    </ns2:Order>
   </ns1:request>
  </ns1:createOrders>
 </soap:Body>
</soap:Envelope>

Example Payload That Doesn't Reference the Original Return

Here's an example payload that doesn't reference the original return. It returns several items, such as InventoryItemId 300100125547361 with a quantity of 3.

<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:wsa="http://www.w3.org/2005/08/addressing" xmlns:typ="http://xmlns.your_server.com/apps/scm/doo/decomposition/orderDetailServices/model/types/">
   <env:Header>
      <wsa:Action>http://xmlns.your_server.com/apps/scm/doo/decomposition/orderDetailServices/model//OrderDetailService/getOrderDetailsResponse</wsa:Action>
      <wsa:MessageID>urn:uuid:37df86c8-4b94-48c1-bdb2-30d9aa9b7136</wsa:MessageID>
   </env:Header>
   <env:Body>
      <ns0:getOrderDetailsResponse xmlns:ns0="http://xmlns.your_server.com/apps/scm/doo/decomposition/orderDetailServices/model/types/">
         <ns2:result xsi:type="ns0:OrderHeaderResult" xmlns:ns2="http://xmlns.your_server.com/apps/scm/doo/decomposition/orderDetailServices/model/types/" xmlns:ns1="http://xmlns.your_server.com/adf/svc/types/" xmlns:ns3="http://xmlns.your_server.com/apps/scm/doo/processOrder/model/" xmlns:tns="http://xmlns.your_server.com/adf/svc/errors/" xmlns:ns0="http://xmlns.your_server.com/apps/scm/doo/decomposition/orderDetailServices/model/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
            <ns0:Value>
               <ns0:HeaderId>300100138387475</ns0:HeaderId>
               <ns0:OrderNumber>505902</ns0:OrderNumber>
               <ns0:OwnerId xsi:nil="true"/>
               <ns0:SourceOrderSystem>LEG</ns0:SourceOrderSystem>
               <ns0:SourceOrderNumber>bdanthal_aug03_urr_001</ns0:SourceOrderNumber>
               <ns0:SourceOrderId>bdanthal_aug03_urr_001</ns0:SourceOrderId>
               <ns0:TargetSystem xsi:nil="true"/>
               <ns0:SourceDocumentTypeCode xsi:nil="true"/>
               <ns0:SourceDocumentTypeName xsi:nil="true"/>
               <ns0:OrigSysDocumentRef xsi:nil="true"/>
               <ns0:SourceOrgId>204</ns0:SourceOrgId>
               <ns0:OrgId>204</ns0:OrgId>
               <ns0:LegalEntityId>204</ns0:LegalEntityId>
               <ns0:SoldToCustomerId xsi:nil="true"/>
               <ns0:SoldToContactId xsi:nil="true"/>
               <ns0:OrderedDate>2018-08-09T10:10:10.0Z</ns0:OrderedDate>
               <ns0:CustomerPoNumber xsi:nil="true"/>
               <ns0:OrderTypeCode xsi:nil="true"/>
               <ns0:OrderType xsi:nil="true"/>
               <ns0:TransactionalCurrencyCode>USD</ns0:TransactionalCurrencyCode>
               <ns0:ConversionRate xsi:nil="true"/>
               <ns0:ConversionTypeCode xsi:nil="true"/>
               <ns0:ConversionDate xsi:nil="true"/>
               <ns0:StatusCode>OPEN</ns0:StatusCode>
               <ns0:PartialShipAllowedFlag>N</ns0:PartialShipAllowedFlag>
               <ns0:OpenFlag>Y</ns0:OpenFlag>
               <ns0:CanceledFlag>N</ns0:CanceledFlag>
               <ns0:ChangeVersionNumber>1</ns0:ChangeVersionNumber>
               <ns0:IsEditable>Y</ns0:IsEditable>
               <ns0:OnHold>N</ns0:OnHold>
               <ns0:CostOfChange>0</ns0:CostOfChange>
               <ns0:SoldToCustomerIdCrossRef xsi:nil="true"/>
               <ns0:SoldToContactIdCrossRef xsi:nil="true"/>
               <ns0:ConversionTypeCodeCrossRef xsi:nil="true"/>
               <ns0:TransactionalCurrencyCodeCrossRef>USD</ns0:TransactionalCurrencyCodeCrossRef>
               <ns0:SoldToPartyId>1006</ns0:SoldToPartyId>
               <ns0:ObjectVersionNumber>5</ns0:ObjectVersionNumber>
               <ns0:SoldToPartyContactId>1560</ns0:SoldToPartyContactId>
               <ns0:SoldToPartyIdCrossRef>1006</ns0:SoldToPartyIdCrossRef>
               <ns0:SoldToPartyContactIdCrossRef>1560</ns0:SoldToPartyContactIdCrossRef>
               <ns0:CancelReasonCode xsi:nil="true"/>
               <ns0:Comments xsi:nil="true"/>
               <ns0:RequestCancelDate xsi:nil="true"/>
               <ns0:CancelReasonCodeCrossRef xsi:nil="true"/>
               <ns0:SoldToPartyNumber>1006</ns0:SoldToPartyNumber>
               <ns0:SoldToCustomerAccountNumber xsi:nil="true"/>
               <ns0:AllowCurrencyOverrideFlag>Y</ns0:AllowCurrencyOverrideFlag>
               <ns0:AppliedCurrencyCode>USD</ns0:AppliedCurrencyCode>
               <ns0:CarrierId xsi:nil="true"/>
               <ns0:DemandClassCode xsi:nil="true"/>
               <ns0:EarliestAcceptArrivalDate xsi:nil="true"/>
               <ns0:EarliestAcceptableShipDate xsi:nil="true"/>
               <ns0:FobPointCode xsi:nil="true"/>
               <ns0:FreezePriceFlag>N</ns0:FreezePriceFlag>
               <ns0:FreezeShippingChargeFlag>Y</ns0:FreezeShippingChargeFlag>
               <ns0:FreezeTaxFlag>Y</ns0:FreezeTaxFlag>
               <ns0:FreightTermsCode xsi:nil="true"/>
               <ns0:FulfillOrgId xsi:nil="true"/>
               <ns0:LatestAcceptArrivalDate xsi:nil="true"/>
               <ns0:LatestAcceptableShipDate xsi:nil="true"/>
               <ns0:ModifiedFlag>N</ns0:ModifiedFlag>
               <ns0:PackingInstructions xsi:nil="true"/>
               <ns0:PaymentTermId xsi:nil="true"/>
               <ns0:PricedOn xsi:nil="true"/>
               <ns0:PricingSegmentCode>CORPORATE_SEGMENT</ns0:PricingSegmentCode>
               <ns0:PricingSegmentExplanation>The applicable pricing segment for this transaction is Pricing Segment=Corporate Segment Precedence=1 because Revenue Potential=Medium Customer Size=Medium Cost To Serve=Medium Customer Value=Medium Customer Rating=Medium</ns0:PricingSegmentExplanation>
               <ns0:PricingStrategyExplanation>The applicable pricing strategy for this transaction is Pricing Strategy=Corporate Pricing Strategy because Channel Method=null Transaction Type=null Pricing Segment=Corporate Segment</ns0:PricingStrategyExplanation>
               <ns0:PricingStrategyId>300100071623888</ns0:PricingStrategyId>
               <ns0:ReferenceHeaderId xsi:nil="true"/>
               <ns0:RequestArrivalDate xsi:nil="true"/>
               <ns0:RequestShipDate xsi:nil="true"/>
               <ns0:SegmentExplanationMsgName xsi:nil="true"/>
               <ns0:ShipClassOfService xsi:nil="true"/>
               <ns0:ShipModeOfTransport xsi:nil="true"/>
               <ns0:ShipmentPriorityCode xsi:nil="true"/>
               <ns0:ShippingInstructions xsi:nil="true"/>
               <ns0:ShipsetFlag xsi:nil="true"/>
               <ns0:SoldToPartyContactPointId xsi:nil="true"/>
               <ns0:StrategyExplanationMsgName xsi:nil="true"/>
               <ns0:SubmittedFlag>Y</ns0:SubmittedFlag>
               <ns0:SubstituteAllowedFlag xsi:nil="true"/>
               <ns0:SupplierId xsi:nil="true"/>
               <ns0:SupplierSiteId xsi:nil="true"/>
               <ns0:SoldToPartyName>Computer Service and Rentals</ns0:SoldToPartyName>
               <ns0:SoldToPartyPersonFirstName xsi:nil="true"/>
               <ns0:SoldToPartyPersonLastName xsi:nil="true"/>
               <ns0:SoldToPartyPersonMiddleName xsi:nil="true"/>
               <ns0:SoldToPartyPersonNameSuffix xsi:nil="true"/>
               <ns0:SoldToPartyPersonTitle xsi:nil="true"/>
               <ns0:SoldToPartyContactName>Piere Legrand</ns0:SoldToPartyContactName>
               <ns0:SoldToPartyContactNumber>CONTACT-1560</ns0:SoldToPartyContactNumber>
               <ns0:SoldToPartyContactFirstName>Piere</ns0:SoldToPartyContactFirstName>
               <ns0:SoldToPartyContactLastName>Legrand</ns0:SoldToPartyContactLastName>
               <ns0:SoldToPartyContactMiddleName xsi:nil="true"/>
               <ns0:SoldToPartyContactNameSuffix xsi:nil="true"/>
               <ns0:SoldToPartyContactTitle xsi:nil="true"/>
               <ns0:TransactionalCurrencyName>US Dollar</ns0:TransactionalCurrencyName>
               <ns0:LegalEntity xsi:nil="true"/>
               <ns0:SoldToPartyType>ORGANIZATION</ns0:SoldToPartyType>
               <ns0:SoldToPartyLastUpdateDate>2017-07-26T17:51:22.683Z</ns0:SoldToPartyLastUpdateDate>
               <ns0:RequestingBusinessUnitIdentifier xsi:nil="true"/>
               <ns0:RequestingBusinessUnitName xsi:nil="true"/>
               <ns0:CancelReason xsi:nil="true"/>
               <ns0:OrgName>Vision Operations</ns0:OrgName>
               <ns0:PreCreditCheckedFlag>N</ns0:PreCreditCheckedFlag>
               <ns0:SalesChannelCode xsi:nil="true"/>
               <ns0:SalespersonIdentifier xsi:nil="true"/>
               <ns0:Salesperson xsi:nil="true"/>
               <ns0:SalesChannel xsi:nil="true"/>
               <ns0:SubmittedBy>SCMOPERATIONS</ns0:SubmittedBy>
               <ns0:SubmittedDate>2018-08-03T05:40:40.842Z</ns0:SubmittedDate>
               <ns0:OrderLine>
                  <ns0:HeaderId>300100138387475</ns0:HeaderId>
                  <ns0:LineId>300100138387476</ns0:LineId>
                  <ns0:LineNumber>1</ns0:LineNumber>
                  <ns0:StatusCode>OPEN</ns0:StatusCode>
                  <ns0:OwnerId xsi:nil="true"/>
                  <ns0:SourceLineNumber>1</ns0:SourceLineNumber>
                  <ns0:SourceLineId>101</ns0:SourceLineId>
                  <ns0:SourceOrderId>bdanthal_aug03_urr_001</ns0:SourceOrderId>
                  <ns0:SourceScheduleId>101</ns0:SourceScheduleId>
                  <ns0:SourceOrderNumber>bdanthal_aug03_urr_001</ns0:SourceOrderNumber>
                  <ns0:SourceOrderSystem>LEG</ns0:SourceOrderSystem>
                  <ns0:SourceScheduleNumber>1</ns0:SourceScheduleNumber>
                  <ns0:ItemTypeCode>4</ns0:ItemTypeCode>
                  <ns0:OrderedUom>Ea</ns0:OrderedUom>
                  <ns0:SourceOrgId>204</ns0:SourceOrgId>
                  <ns0:OrgId>204</ns0:OrgId>
                  <ns0:LineTypeCode>ORA_RETURN</ns0:LineTypeCode>
                  <ns0:OpenFlag>Y</ns0:OpenFlag>
                  <ns0:CanceledFlag>N</ns0:CanceledFlag>
                  <ns0:ParentLineId xsi:nil="true"/>
                  <ns0:OrigSysDocumentLineRef xsi:nil="true"/>
                  <ns0:RootParentLineId xsi:nil="true"/>
                  <ns0:ActualShipDate xsi:nil="true"/>
                  <ns0:CanceledQty xsi:nil="true"/>
                  <ns0:ExtendedAmount>0</ns0:ExtendedAmount>
                  <ns0:FulfilledQty xsi:nil="true"/>
                  <ns0:FulfillmentDate xsi:nil="true"/>
                  <ns0:InventoryItemId>300100125547361</ns0:InventoryItemId>
                  <ns0:OrderedQty>3</ns0:OrderedQty>
                  <ns0:OrigSysDocumentRef xsi:nil="true"/>
                  <ns0:RmaDeliveredQty xsi:nil="true"/>
                  <ns0:ScheduleShipDate>2015-07-15T00:00:00.0Z</ns0:ScheduleShipDate>
                  <ns0:ShippedQty xsi:nil="true"/>
                  <ns0:UnitListPrice>0</ns0:UnitListPrice>
                  <ns0:UnitSellingPrice>0</ns0:UnitSellingPrice>
                  <ns0:DeltaType xsi:nil="true"/>
                  <ns0:ReferenceLineId xsi:nil="true"/>
                  <ns0:OnHold>N</ns0:OnHold>
                  <ns0:CategoryCode>RETURN</ns0:CategoryCode>
                  <ns0:InventoryOrganizationId>204</ns0:InventoryOrganizationId>
                  <ns0:TransformFromLineId xsi:nil="true"/>
                  <ns0:DisplayLineNumber>1</ns0:DisplayLineNumber>
                  <ns0:OrderFulfillLine>
                     <ns0:FulfillLineId>300100138387477</ns0:FulfillLineId>
                     <ns0:ReferenceFlineId xsi:nil="true"/>
                     <ns0:FulfillLineNumber>1</ns0:FulfillLineNumber>
                     <ns0:OriginalFlineId xsi:nil="true"/>
                     <ns0:LineId>300100138387476</ns0:LineId>
                     <ns0:HeaderId>300100138387475</ns0:HeaderId>
                     <ns0:StatusCode>NOT_STARTED</ns0:StatusCode>
                     <ns0:OwnerId xsi:nil="true"/>
                     <ns0:SourceLineId>101</ns0:SourceLineId>
                     <ns0:SourceLineNumber>1</ns0:SourceLineNumber>
                     <ns0:SourceOrderId>bdanthal_aug03_urr_001</ns0:SourceOrderId>
                     <ns0:SourceOrderNumber>bdanthal_aug03_urr_001</ns0:SourceOrderNumber>
                     <ns0:SourceOrderSystem>LEG</ns0:SourceOrderSystem>
                     <ns0:SourceScheduleId>101</ns0:SourceScheduleId>
                     <ns0:SourceScheduleNumber>1</ns0:SourceScheduleNumber>
                     <ns0:InventoryItemId>300100125547361</ns0:InventoryItemId>
                     <ns0:ItemTypeCode>4</ns0:ItemTypeCode>
                     <ns0:ItemTypeName xsi:nil="true"/>
                     <ns0:FulfillOrgId>204</ns0:FulfillOrgId>
                     <ns0:OrderedQty>3</ns0:OrderedQty>
                     <ns0:OrderedUom>Ea</ns0:OrderedUom>
                     <ns0:RmaDeliveredQty xsi:nil="true"/>
                     <ns0:FulfilledQty xsi:nil="true"/>
                     <ns0:ShippedQty xsi:nil="true"/>
                     <ns0:ReservedQty xsi:nil="true"/>
                     <ns0:ReservableFlag>Y</ns0:ReservableFlag>
                     <ns0:ShippableFlag>N</ns0:ShippableFlag>
                     <ns0:InvoiceableItemFlag>Y</ns0:InvoiceableItemFlag>
                     <ns0:InvoiceEnabledFlag>Y</ns0:InvoiceEnabledFlag>
                     <ns0:BillToContactId>4820</ns0:BillToContactId>
                     <ns0:BillToCustomerId>1006</ns0:BillToCustomerId>
                     <ns0:BillToSiteUseId>1025</ns0:BillToSiteUseId>
                     <ns0:SourceOrgId>204</ns0:SourceOrgId>
                     <ns0:OrgId>204</ns0:OrgId>
                     <ns0:RequestArrivalDate xsi:nil="true"/>
                     <ns0:RequestShipDate>2015-01-15T10:10:10.0Z</ns0:RequestShipDate>
                     <ns0:ScheduleArrivalDate>2015-07-15T00:00:00.0Z</ns0:ScheduleArrivalDate>
                     <ns0:ScheduleShipDate>2015-07-15T00:00:00.0Z</ns0:ScheduleShipDate>
                     <ns0:PromiseArrivalDate xsi:nil="true"/>
                     <ns0:PromiseShipDate xsi:nil="true"/>
                     <ns0:ActualShipDate xsi:nil="true"/>
                     <ns0:FulfillmentDate xsi:nil="true"/>
                     <ns0:CustomerItemId xsi:nil="true"/>
                     <ns0:CustomerPoLineNumber xsi:nil="true"/>
                     <ns0:CustomerPoNumber xsi:nil="true"/>
                     <ns0:DemandClassCode xsi:nil="true"/>
                     <ns0:ExtendedAmount>0</ns0:ExtendedAmount>
                     <ns0:FobPointCode xsi:nil="true"/>
                     <ns0:CarrierId xsi:nil="true"/>
                     <ns0:InvoicingRuleId xsi:nil="true"/>
                     <ns0:ExemptionCertificateNumber xsi:nil="true"/>
                     <ns0:AccountingRuleId xsi:nil="true"/>
                     <ns0:LineTypeCode>ORA_RETURN</ns0:LineTypeCode>
                     <ns0:CategoryCode>RETURN</ns0:CategoryCode>
                     <ns0:OpenFlag>Y</ns0:OpenFlag>
                     <ns0:CanceledFlag>N</ns0:CanceledFlag>
                     <ns0:OverrideScheduleDateFlag>N</ns0:OverrideScheduleDateFlag>
                     <ns0:OriginalInventoryItemId xsi:nil="true"/>
                     <ns0:GopReferenceId xsi:nil="true"/>
                     <ns0:PackingInstructions xsi:nil="true"/>
                     <ns0:ParentFulfillLineId xsi:nil="true"/>
                     <ns0:PaymentTermId xsi:nil="true"/>
                     <ns0:RequestType xsi:nil="true"/>
                     <ns0:ReturnReasonCode xsi:nil="true"/>
                     <ns0:OrigSysDocumentRef xsi:nil="true"/>
                     <ns0:OrigSysDocumentLineRef xsi:nil="true"/>
                     <ns0:RootParentFulfillLineId xsi:nil="true"/>
                     <ns0:ShipClassOfService xsi:nil="true"/>
                     <ns0:ShipModeOfTransport xsi:nil="true"/>
                     <ns0:ShipToContactId xsi:nil="true"/>
                     <ns0:ShipToCustomerId xsi:nil="true"/>
                     <ns0:ShipToSiteUseId xsi:nil="true"/>
                     <ns0:FulfillToleranceAbove xsi:nil="true"/>
                     <ns0:FulfillToleranceBelow xsi:nil="true"/>
                     <ns0:ShipmentPriorityCode xsi:nil="true"/>
                     <ns0:ShippingInstructions xsi:nil="true"/>
                     <ns0:ShipSetName xsi:nil="true"/>
                     <ns0:SplitFromFlineId xsi:nil="true"/>
                     <ns0:PartialShipAllowedFlag>N</ns0:PartialShipAllowedFlag>
                     <ns0:SubstituteAllowedFlag>N</ns0:SubstituteAllowedFlag>
                     <ns0:SubstituteReasonCode xsi:nil="true"/>
                     <ns0:TaxExemptFlag>S</ns0:TaxExemptFlag>
                     <ns0:TaxClassificationCode>765</ns0:TaxClassificationCode>
                     <ns0:TaxExemptionReasonCode xsi:nil="true"/>
                     <ns0:UnitListPrice>0</ns0:UnitListPrice>
                     <ns0:UnitSellingPrice>0</ns0:UnitSellingPrice>
                     <ns0:LatestAcceptableShipDate xsi:nil="true"/>
                     <ns0:LatestAcceptableArrivalDate xsi:nil="true"/>
                     <ns0:EarliestAcceptableShipDate xsi:nil="true"/>
                     <ns0:CanceledQty xsi:nil="true"/>
                     <ns0:ReturnableFlag>Y</ns0:ReturnableFlag>
                     <ns0:DeltaType xsi:nil="true"/>
                     <ns0:OnHold>N</ns0:OnHold>
                     <ns0:Description>Extended Warranty1</ns0:Description>
                     <ns0:LongDescription xsi:nil="true"/>
                     <ns0:InventoryItemId1>300100125547361</ns0:InventoryItemId1>
                     <ns0:OrganizationId>204</ns0:OrganizationId>
                     <ns0:ItemNumber>cov_open</ns0:ItemNumber>
                     <ns0:ActualCompletionDate xsi:nil="true"/>
                     <ns0:EstimateFulfillmentCost xsi:nil="true"/>
                     <ns0:EstimateMargin xsi:nil="true"/>
                     <ns0:FulfillInstanceId xsi:nil="true"/>
                     <ns0:FulfillmentSplitRefId xsi:nil="true"/>
                     <ns0:InventoryOrganizationId>204</ns0:InventoryOrganizationId>
                     <ns0:RemnantFlag xsi:nil="true"/>
                     <ns0:ReservationId xsi:nil="true"/>
                     <ns0:StatusRulesetId xsi:nil="true"/>
                     <ns0:InventoryItemIdCrossRef>LEGCOV_OPEN</ns0:InventoryItemIdCrossRef>
                     <ns0:ShipToCustomerIdCrossRef xsi:nil="true"/>
                     <ns0:ShipToContactIdCrossRef xsi:nil="true"/>
                     <ns0:ShipToSiteUseIdCrossRef xsi:nil="true"/>
                     <ns0:BillToCustomerIdCrossRef>1006</ns0:BillToCustomerIdCrossRef>
                     <ns0:BillToContactIdCrossRef>4820</ns0:BillToContactIdCrossRef>
                     <ns0:BillToSiteUseIdCrossRef>1025</ns0:BillToSiteUseIdCrossRef>
                     <ns0:InvoicingRuleIdCrossRef xsi:nil="true"/>
                     <ns0:AccountingRuleIdCrossRef xsi:nil="true"/>
                     <ns0:OrderedUomCrossRef>Ea</ns0:OrderedUomCrossRef>
                     <ns0:ShipClassOfServiceCrossRef xsi:nil="true"/>
                     <ns0:ShipModeOfTransportCrossRef xsi:nil="true"/>
                     <ns0:ShipmentPriorityCodeCrossRef xsi:nil="true"/>
                     <ns0:TaxClassificationCodeCrossRef>VAT20</ns0:TaxClassificationCodeCrossRef>
                     <ns0:TaxExemptionReasonCodeCrossRef xsi:nil="true"/>
                     <ns0:DemandClassCodeCrossRef xsi:nil="true"/>
                     <ns0:FobPointCodeCrossRef xsi:nil="true"/>
                     <ns0:FreightTermsCodeCrossRef xsi:nil="true"/>
                     <ns0:ReturnReasonCodeCrossRef xsi:nil="true"/>
                     <ns0:CarrierIdCrossRef xsi:nil="true"/>
                     <ns0:PaymentTermIdCrossRef xsi:nil="true"/>
                     <ns0:FreightTermsCode xsi:nil="true"/>
                     <ns0:SchedulingReasonCode xsi:nil="true"/>
                     <ns0:ObjectVersionNumber>4</ns0:ObjectVersionNumber>
                     <ns0:SchedulingReason/>
                     <ns0:LookupCode/>
                     <ns0:LookupType/>
                     <ns0:SubInventory xsi:nil="true"/>
                     <ns0:ShipToPartyId>1006</ns0:ShipToPartyId>
                     <ns0:ShipToPartySiteId>1036</ns0:ShipToPartySiteId>
                     <ns0:ShipToPartyContactId xsi:nil="true"/>
                     <ns0:ShipToPartyIdCrossRef>1006</ns0:ShipToPartyIdCrossRef>
                     <ns0:ShipToPartySiteIdCrossRef>1036</ns0:ShipToPartySiteIdCrossRef>
                     <ns0:ShipToPartyContactIdCrossRef xsi:nil="true"/>
                     <ns0:CancelReasonCode xsi:nil="true"/>
                     <ns0:Comments xsi:nil="true"/>
                     <ns0:RequestCancelDate xsi:nil="true"/>
                     <ns0:CancelReasonCodeCrossRef xsi:nil="true"/>
                     <ns0:ShipToPartyNumber>1006</ns0:ShipToPartyNumber>
                     <ns0:ShipToPartySiteNumber>1036</ns0:ShipToPartySiteNumber>
                     <ns0:ShipToCustomerAccountNumber xsi:nil="true"/>
                     <ns0:ShipToLocationCode xsi:nil="true"/>
                     <ns0:BillToCustomerAccountNumber>1006</ns0:BillToCustomerAccountNumber>
                     <ns0:BillToLocationCode xsi:nil="true"/>
                     <ns0:FulfillmentOrgCode>V1</ns0:FulfillmentOrgCode>
                     <ns0:AssessableValue>5</ns0:AssessableValue>
                     <ns0:DefaultTaxationCountry>US</ns0:DefaultTaxationCountry>
                     <ns0:DocumentSubType xsi:nil="true"/>
                     <ns0:FinalDischargeLocationId xsi:nil="true"/>
                     <ns0:FirstPtyRegId>35647</ns0:FirstPtyRegId>
                     <ns0:ProductCategory xsi:nil="true"/>
                     <ns0:ProductType>GOODS</ns0:ProductType>
                     <ns0:TaxInvoiceDate xsi:nil="true"/>
                     <ns0:TaxInvoiceNumber xsi:nil="true"/>
                     <ns0:ThirdPtyRegId xsi:nil="true"/>
                     <ns0:TrxBusinessCategory>SALES_TRANSACTION</ns0:TrxBusinessCategory>
                     <ns0:UserDefinedFiscClass xsi:nil="true"/>
                     <ns0:IntendedUseClassifId xsi:nil="true"/>
                     <ns0:ProdFcCategId xsi:nil="true"/>
                     <ns0:DestinationOrgId xsi:nil="true"/>
                     <ns0:DestinationLocationId xsi:nil="true"/>
                     <ns0:ConfigInventoryItemId xsi:nil="true"/>
                     <ns0:ConfigItemReference xsi:nil="true"/>
                     <ns0:ItemSubTypeCode>STANDARD</ns0:ItemSubTypeCode>
                     <ns0:ItemSubTypeName>Standard</ns0:ItemSubTypeName>
                     <ns0:ConfigInventoryItemNumber xsi:nil="true"/>
                     <ns0:SupplierId xsi:nil="true"/>
                     <ns0:SupplierSiteId xsi:nil="true"/>
                     <ns0:PurchasingUom xsi:nil="true"/>
                     <ns0:ShippedUom xsi:nil="true"/>
                     <ns0:RequisitionBuId xsi:nil="true"/>
                     <ns0:RequisitionInventoryOrgId xsi:nil="true"/>
                     <ns0:BuyerId xsi:nil="true"/>
                     <ns0:AppliedPriceListId xsi:nil="true"/>
                     <ns0:BillToContactPointId xsi:nil="true"/>
                     <ns0:ChangeEligibleFlag>Y</ns0:ChangeEligibleFlag>
                     <ns0:ComponentIdPath xsi:nil="true"/>
                     <ns0:ConfigCreationDate xsi:nil="true"/>
                     <ns0:ConfigHeaderId xsi:nil="true"/>
                     <ns0:ConfigRevisionNumber xsi:nil="true"/>
                     <ns0:ConfiguratorPath xsi:nil="true"/>
                     <ns0:ContractEndDate>2018-03-05</ns0:ContractEndDate>
                     <ns0:ContractStartDate>2018-03-01</ns0:ContractStartDate>
                     <ns0:CustomerPoScheduleNumber xsi:nil="true"/>
                     <ns0:ModifiedFlag>Y</ns0:ModifiedFlag>
                     <ns0:PrefOverriddenBitset xsi:nil="true"/>
                     <ns0:PricedOn>2018-08-03T05:40:28.015Z</ns0:PricedOn>
                     <ns0:PurchasingEnabledFlag>N</ns0:PurchasingEnabledFlag>
                     <ns0:QuantityPerModel xsi:nil="true"/>
                     <ns0:RequiredFulfillmentDate>2015-01-15T10:10:10.0Z</ns0:RequiredFulfillmentDate>
                     <ns0:ShipToContactPointId xsi:nil="true"/>
                     <ns0:ShowInSales xsi:nil="true"/>
                     <ns0:SupplyStatusCode xsi:nil="true"/>
                     <ns0:UnitQuantity xsi:nil="true"/>
                     <ns0:ValidConfigurationFlag xsi:nil="true"/>
                     <ns0:ShipToPartyName>Computer Service and Rentals</ns0:ShipToPartyName>
                     <ns0:ShipToPartyPersonFirstName xsi:nil="true"/>
                     <ns0:ShipToPartyPersonLastName xsi:nil="true"/>
                     <ns0:ShipToPartyPersonMiddleName xsi:nil="true"/>
                     <ns0:ShipToPartyPersonNameSuffix xsi:nil="true"/>
                     <ns0:ShipToPartyPersonTitle xsi:nil="true"/>
                     <ns0:ShipToAddress1>2164 Broadway</ns0:ShipToAddress1>
                     <ns0:ShipToAddress2 xsi:nil="true"/>
                     <ns0:ShipToAddress3 xsi:nil="true"/>
                     <ns0:ShipToAddress4 xsi:nil="true"/>
                     <ns0:ShipToCity>Tempe</ns0:ShipToCity>
                     <ns0:ShipToProvince xsi:nil="true"/>
                     <ns0:ShipToPostalCode>85282</ns0:ShipToPostalCode>
                     <ns0:ShipToState>AZ</ns0:ShipToState>
                     <ns0:ShipToCounty>Maricopa</ns0:ShipToCounty>
                     <ns0:ShipToCountry>US</ns0:ShipToCountry>
                     <ns0:ShipToPartyContactNumber xsi:nil="true"/>
                     <ns0:ShipToPartyContactName xsi:nil="true"/>
                     <ns0:ShipToContactFirstName xsi:nil="true"/>
                     <ns0:ShipToContactLastName xsi:nil="true"/>
                     <ns0:ShipToContactMiddleName xsi:nil="true"/>
                     <ns0:ShipToContactNameSuffix xsi:nil="true"/>
                     <ns0:ShipToContactTitle xsi:nil="true"/>
                     <ns0:BillToCustomerName>Computer Service and Rentals</ns0:BillToCustomerName>
                     <ns0:BillToCustomerNumber>1006</ns0:BillToCustomerNumber>
                     <ns0:BillToAccountPersonFirstName xsi:nil="true"/>
                     <ns0:BillToAccountPersonLastName xsi:nil="true"/>
                     <ns0:BillToAccountPersonMiddleName xsi:nil="true"/>
                     <ns0:BillToAccountPersonNameSuffix xsi:nil="true"/>
                     <ns0:BillToAccountPersonTitle xsi:nil="true"/>
                     <ns0:BillToAddress1>301 Summit Hill Drive</ns0:BillToAddress1>
                     <ns0:BillToAddress2 xsi:nil="true"/>
                     <ns0:BillToAddress3 xsi:nil="true"/>
                     <ns0:BillToAddress4 xsi:nil="true"/>
                     <ns0:BillToCity>CHATTANOOGA</ns0:BillToCity>
                     <ns0:BillToProvince xsi:nil="true"/>
                     <ns0:BillToPostalCode>37401</ns0:BillToPostalCode>
                     <ns0:BillToState>TN</ns0:BillToState>
                     <ns0:BillToCounty>Hamilton</ns0:BillToCounty>
                     <ns0:BillToCountry>US</ns0:BillToCountry>
                     <ns0:BillToAccountContactNumber>CONTACT-1560</ns0:BillToAccountContactNumber>
                     <ns0:BillToAccountContactName>Piere Legrand</ns0:BillToAccountContactName>
                     <ns0:BillToContactFirstName>Piere</ns0:BillToContactFirstName>
                     <ns0:BillToContactLastName>Legrand</ns0:BillToContactLastName>
                     <ns0:BillToContactMiddleName xsi:nil="true"/>
                     <ns0:BillToContactNameSuffix xsi:nil="true"/>
                     <ns0:BillToContactTitle xsi:nil="true"/>
                     <ns0:BillToPartyType>ORGANIZATION</ns0:BillToPartyType>
                     <ns0:ShipClassOfServiceName xsi:nil="true"/>
                     <ns0:FreightTerms xsi:nil="true"/>
                     <ns0:ShipModeOfTransportName xsi:nil="true"/>
                     <ns0:OrderedUomName>Each</ns0:OrderedUomName>
                     <ns0:CarrierName xsi:nil="true"/>
                     <ns0:LineTypeName>Return for credit and return the item</ns0:LineTypeName>
                     <ns0:FulfillOrgLocationId>204</ns0:FulfillOrgLocationId>
                     <ns0:FulfillOrgAddress1>90 Fifth Avenue</ns0:FulfillOrgAddress1>
                     <ns0:FulfillOrgAddress2 xsi:nil="true"/>
                     <ns0:FulfillOrgAddress3 xsi:nil="true"/>
                     <ns0:FulfillOrgAddress4 xsi:nil="true"/>
                     <ns0:FulfillOrgCity>New York</ns0:FulfillOrgCity>
                     <ns0:FulfillOrgPostalCode>10022-3422</ns0:FulfillOrgPostalCode>
                     <ns0:FulfillOrgState>NY</ns0:FulfillOrgState>
                     <ns0:FulfillOrgProvince xsi:nil="true"/>
                     <ns0:FulfillOrgCounty>New York</ns0:FulfillOrgCounty>
                     <ns0:FulfillOrgCountry>US</ns0:FulfillOrgCountry>
                     <ns0:FulfillmentOrgName>Vision Operations</ns0:FulfillmentOrgName>
                     <ns0:SupplierIdCrossRef xsi:nil="true"/>
                     <ns0:SupplierNumber xsi:nil="true"/>
                     <ns0:SupplierName xsi:nil="true"/>
                     <ns0:SupplierSiteIdCrossRef xsi:nil="true"/>
                     <ns0:SupplierAddressLine1 xsi:nil="true"/>
                     <ns0:SupplierAddressLine2 xsi:nil="true"/>
                     <ns0:SupplierAddressLine3 xsi:nil="true"/>
                     <ns0:SupplierAddressLine4 xsi:nil="true"/>
                     <ns0:SupplierCity xsi:nil="true"/>
                     <ns0:SupplierPostalCode xsi:nil="true"/>
                     <ns0:SupplierState xsi:nil="true"/>
                     <ns0:SupplierProvince xsi:nil="true"/>
                     <ns0:SupplierCounty xsi:nil="true"/>
                     <ns0:SupplierCountry xsi:nil="true"/>
                     <ns0:ShipToPartyType>ORGANIZATION</ns0:ShipToPartyType>
                     <ns0:TransportationPlannedFlag>N</ns0:TransportationPlannedFlag>
                     <ns0:TransportationPlanningStatus>Not Applicable</ns0:TransportationPlanningStatus>
                     <ns0:CancelReason xsi:nil="true"/>
                     <ns0:SubstitutionReason xsi:nil="true"/>
                     <ns0:CustomerProductNumber xsi:nil="true"/>
                     <ns0:CustomerProductDescription xsi:nil="true"/>
                     <ns0:InvoicingRule xsi:nil="true"/>
                     <ns0:AccountingRule xsi:nil="true"/>
                     <ns0:DemandClass xsi:nil="true"/>
                     <ns0:PaymentTerms xsi:nil="true"/>
                     <ns0:ReturnReason xsi:nil="true"/>
                     <ns0:ShippingPriority xsi:nil="true"/>
                     <ns0:InventoryOrganization>V1</ns0:InventoryOrganization>
                     <ns0:InventoryOrganizationName>Vision Operations</ns0:InventoryOrganizationName>
                     <ns0:SubInventoryName xsi:nil="true"/>
                     <ns0:TaxClassification>VAT20</ns0:TaxClassification>
                     <ns0:TaxExemptionReason xsi:nil="true"/>
                     <ns0:FOBPoint xsi:nil="true"/>
                     <ns0:FulfillmentSplitReferenceLineNumber xsi:nil="true"/>
                     <ns0:ConfiguredInventoryItemDescription xsi:nil="true"/>
                     <ns0:BuyerName xsi:nil="true"/>
                     <ns0:BuyerFirstName xsi:nil="true"/>
                     <ns0:BuyerMiddleName xsi:nil="true"/>
                     <ns0:BuyerLastName xsi:nil="true"/>
                     <ns0:ShipToPartyLastUpdateDate>2017-07-26T17:51:22.683Z</ns0:ShipToPartyLastUpdateDate>
                     <ns0:ShipToPartySiteLastUpdateDate>1998-06-16T17:13:50.0Z</ns0:ShipToPartySiteLastUpdateDate>
                     <ns0:BillToPartyLastUpdateDate>2017-07-26T17:51:22.683Z</ns0:BillToPartyLastUpdateDate>
                     <ns0:BillToPartySiteLastUpdateDate>2004-09-09T10:46:39.0Z</ns0:BillToPartySiteLastUpdateDate>
                     <ns0:OrderedQuantityInPrimaryUOM xsi:nil="true"/>
                     <ns0:PrimaryUOMCode xsi:nil="true"/>
                     <ns0:PrimaryUOM xsi:nil="true"/>
                     <ns0:ShipmentPriority xsi:nil="true"/>
                     <ns0:FinalDischargeLocationAddressLine1 xsi:nil="true"/>
                     <ns0:FinalDischargeLocationAddressLine2 xsi:nil="true"/>
                     <ns0:FinalDischargeLocationAddressLine3 xsi:nil="true"/>
                     <ns0:FinalDischargeLocationAddressLine4 xsi:nil="true"/>
                     <ns0:FinalDischargeLocationAddressCity xsi:nil="true"/>
                     <ns0:FinalDischargeLocationAddressState xsi:nil="true"/>
                     <ns0:FinalDischargeLocationAddressPostalCode xsi:nil="true"/>
                     <ns0:FinalDischargeLocationAddressProvince xsi:nil="true"/>
                     <ns0:FinalDischargeLocationAddressCounty xsi:nil="true"/>
                     <ns0:FinalDischargeLocationAddressCountry xsi:nil="true"/>
                     <ns0:DefaultTaxationCountryShortName>United States</ns0:DefaultTaxationCountryShortName>
                     <ns0:FirstPartyTaxRegistration>4567890</ns0:FirstPartyTaxRegistration>
                     <ns0:ThirdPartyTaxRegistration xsi:nil="true"/>
                     <ns0:DocumentSubTypeName xsi:nil="true"/>
                     <ns0:ProductTypeName>Goods</ns0:ProductTypeName>
                     <ns0:TransactionLineType xsi:nil="true"/>
                     <ns0:ProductCategoryName xsi:nil="true"/>
                     <ns0:TransactionBusinessCategoryName xsi:nil="true"/>
                     <ns0:IntendedUseClassificationName xsi:nil="true"/>
                     <ns0:UserDefinedFiscClassName xsi:nil="true"/>
                     <ns0:ProductFiscalCategoryName xsi:nil="true"/>
                     <ns0:DestinationShippingOrganizationName xsi:nil="true"/>
                     <ns0:DestinationShippingOrganizationCode xsi:nil="true"/>
                     <ns0:DestinationShippingAddressLine1 xsi:nil="true"/>
                     <ns0:DestinationShippingAddressLine2 xsi:nil="true"/>
                     <ns0:DestinationShippingAddressLine3 xsi:nil="true"/>
                     <ns0:DestinationShippingAddressLine4 xsi:nil="true"/>
                     <ns0:DestinationShippingAddressCity xsi:nil="true"/>
                     <ns0:DestinationShippingAddressPostalCode xsi:nil="true"/>
                     <ns0:DestinationShippingAddressState xsi:nil="true"/>
                     <ns0:DestinationShippingAddressProvince xsi:nil="true"/>
                     <ns0:DestinationShippingAddressCounty xsi:nil="true"/>
                     <ns0:DestinationShippingAddressCountry xsi:nil="true"/>
                     <ns0:JeopardyPriority>HIGH</ns0:JeopardyPriority>
                     <ns0:CreditChkAuthExpDate xsi:nil="true"/>
                     <ns0:CreditChkAuthCode xsi:nil="true"/>
                     <ns0:BillToPartyIdentifier>1006</ns0:BillToPartyIdentifier>
                     <ns0:BillToPartySiteIdentifier>1034</ns0:BillToPartySiteIdentifier>
                     <ns0:BillToPartyContactIdentifier>1560</ns0:BillToPartyContactIdentifier>
                     <ns0:ActionTypeCode>ORA_ADD</ns0:ActionTypeCode>
                     <ns0:ServiceDuration>2</ns0:ServiceDuration>
                     <ns0:ServiceDurationPeriodCode>YR</ns0:ServiceDurationPeriodCode>
                     <ns0:ServiceDurationPeriodName xsi:nil="true"/>
                     <ns0:SalespersonIdentifier xsi:nil="true"/>
                     <ns0:Salesperson xsi:nil="true"/>
                     <ns0:UnreferencedReturnFlag>Y</ns0:UnreferencedReturnFlag>
                     <ns0:CoveredProductIdentifier>300100090628362</ns0:CoveredProductIdentifier>
                     <ns0:CoveredProductNumber>OAL_KIT</ns0:CoveredProductNumber>
                     <ns0:CoveredProductDescription>OAL KIT Item</ns0:CoveredProductDescription>
                     <ns0:CoveredCustomerProductId xsi:nil="true"/>
                     <ns0:CoveredCustomerProductNumber xsi:nil="true"/>
                     <ns0:CoveredCustomerProductDescription xsi:nil="true"/>
                     <ns0:CancellationEffectiveDate>2018-03-07T10:10:10.0Z</ns0:CancellationEffectiveDate>
                     <ns0:CoveredProductSrcsysReference>OAL_KIT_SPOKE_ITEM_1</ns0:CoveredProductSrcsysReference>
                     <ns0:SupplierSiteCode xsi:nil="true"/>
                     <ns0:ContractStartDateTime>2018-03-01T00:00:00.0Z</ns0:ContractStartDateTime>
                     <ns0:ContractEndDateTime>2018-03-05T00:00:00.0Z</ns0:ContractEndDateTime>
                     <ns0:FulfillLineEffCategories xsi:type="ns15:j_FulfillLineEffDooFulfillLinesAddInfoprivate" xmlns:ns14="http://xmlns.your_server.com/apps/scm/doo/processOrder/flex/fulfillLineContextsB/" xmlns:ns15="http://xmlns.your_server.com/apps/scm/doo/processOrder/flex/fulfillLineCategories/">
                        <ns3:Category>DOO_FULFILL_LINES_ADD_INFO</ns3:Category>
                        <ns3:FulfillLineId>300100138387477</ns3:FulfillLineId>
                     </ns0:FulfillLineEffCategories>
                     <ns0:OrderDocumentReference>
                        <ns0:CreatedBy>SCMOPERATIONS</ns0:CreatedBy>
                        <ns0:CreationDate>2018-08-03T05:40:18.402Z</ns0:CreationDate>
                        <ns0:DocAltUserKey xsi:nil="true"/>
                        <ns0:DocContextId xsi:nil="true"/>
                        <ns0:DocId>300100090628362</ns0:DocId>
                        <ns0:DocLineAltUserKey xsi:nil="true"/>
                        <ns0:DocLineContextId xsi:nil="true"/>
                        <ns0:DocLineId xsi:nil="true"/>
                        <ns0:DocLineUserKey xsi:nil="true"/>
                        <ns0:DocRefType>COVERED_ITEM_FOR_ADHOC_RTN</ns0:DocRefType>
                        <ns0:DocSublineAltUserKey xsi:nil="true"/>
                        <ns0:DocSublineContextId xsi:nil="true"/>
                        <ns0:DocSublineId xsi:nil="true"/>
                        <ns0:DocSublineUserKey xsi:nil="true"/>
                        <ns0:DocSystemRefId>300100138387481</ns0:DocSystemRefId>
                        <ns0:DocUserKey>OAL_KIT</ns0:DocUserKey>
                        <ns0:FulfillLineId>300100138387477</ns0:FulfillLineId>
                        <ns0:HeaderId>300100138387475</ns0:HeaderId>
                        <ns0:LastUpdateDate>2018-08-03T05:40:26.953Z</ns0:LastUpdateDate>
                        <ns0:LastUpdateLogin>72822FC9F7FE2923E0534E08F20A027A</ns0:LastUpdateLogin>
                        <ns0:LastUpdatedBy>SCMOPERATIONS</ns0:LastUpdatedBy>
                        <ns0:LineId>300100138387476</ns0:LineId>
                        <ns0:ObjectVersionNumber>1</ns0:ObjectVersionNumber>
                        <ns0:OwnerTableId xsi:nil="true"/>
                        <ns0:OwnerTableName xsi:nil="true"/>
                     </ns0:OrderDocumentReference>
                     <ns0:OrderCharge>
                        <ns0:ChargeAppliesTo>PRICE</ns0:ChargeAppliesTo>
                        <ns0:ChargeCurrencyCode>USD</ns0:ChargeCurrencyCode>
                        <ns0:ChargeDefinitionCode>QP_SALE_PRICE</ns0:ChargeDefinitionCode>
                        <ns0:ChargeSubtypeCode>ORA_PRICE</ns0:ChargeSubtypeCode>
                        <ns0:ChargeTypeCode>ORA_SALE</ns0:ChargeTypeCode>
                        <ns0:GsaUnitPrice xsi:nil="true"/>
                        <ns0:OrderChargeId>300100138387478</ns0:OrderChargeId>
                        <ns0:ParentEntityCode>LINE</ns0:ParentEntityCode>
                        <ns0:ParentEntityId>300100138387477</ns0:ParentEntityId>
                        <ns0:PricePeriodicityCode xsi:nil="true"/>
                        <ns0:PriceTypeCode>ONE_TIME</ns0:PriceTypeCode>
                        <ns0:PricedQuantity>3</ns0:PricedQuantity>
                        <ns0:PricedQuantityUomCode>YR</ns0:PricedQuantityUomCode>
                        <ns0:PrimaryFlag>Y</ns0:PrimaryFlag>
                        <ns0:RollupFlag>N</ns0:RollupFlag>
                        <ns0:SequenceNumber>1</ns0:SequenceNumber>
                        <ns0:SourceChargeId>SC1</ns0:SourceChargeId>
                        <ns0:ReferenceOrderChargeId xsi:nil="true"/>
                        <ns0:AvgUnitSellingPrice xsi:nil="true"/>
                        <ns0:ChargeDefinition>Sale Price</ns0:ChargeDefinition>
                        <ns0:ChargeSubtype>Price</ns0:ChargeSubtype>
                        <ns0:PriceType>One time</ns0:PriceType>
                        <ns0:PricedQuantityUOM>Year</ns0:PricedQuantityUOM>
                        <ns0:ChargeType>Sale</ns0:ChargeType>
                        <ns0:ChargeCurrencyName>US Dollar</ns0:ChargeCurrencyName>
                        <ns0:OrderChargeComponent>
                           <ns0:ChargeCurrencyCode>USD</ns0:ChargeCurrencyCode>
                           <ns0:ChargeCurrencyExtAmount>0</ns0:ChargeCurrencyExtAmount>
                           <ns0:ChargeCurrencyUnitPrice>0</ns0:ChargeCurrencyUnitPrice>
                           <ns0:HeaderCurrencyCode>USD</ns0:HeaderCurrencyCode>
                           <ns0:HeaderCurrencyExtAmount>0</ns0:HeaderCurrencyExtAmount>
                           <ns0:HeaderCurrencyUnitPrice>0</ns0:HeaderCurrencyUnitPrice>
                           <ns0:OrderChargeComponentId>300100138387485</ns0:OrderChargeComponentId>
                           <ns0:OrderChargeId>300100138387478</ns0:OrderChargeId>
                           <ns0:ParentChargeComponentId xsi:nil="true"/>
                           <ns0:PercentOfComparisonElement xsi:nil="true"/>
                           <ns0:PriceElementCode>QP_BASE_LIST_PRICE</ns0:PriceElementCode>
                           <ns0:PriceElementUsageCode xsi:nil="true"/>
                           <ns0:RollupFlag>N</ns0:RollupFlag>
                           <ns0:SequenceNumber>1000</ns0:SequenceNumber>
                           <ns0:SourceChargeComponentId>300100138387485</ns0:SourceChargeComponentId>
                           <ns0:SourceChargeId>300100138387478</ns0:SourceChargeId>
                           <ns0:SourceParentChargeCompId xsi:nil="true"/>
                           <ns0:PricingSourceId xsi:nil="true"/>
                           <ns0:PricingSourceTypeCode>RETURN</ns0:PricingSourceTypeCode>
                           <ns0:Explanation xsi:nil="true"/>
                           <ns0:ExplanationMessageName xsi:nil="true"/>
                           <ns0:TaxIncludedFlag>N</ns0:TaxIncludedFlag>
                           <ns0:ReferenceOrderChargeCompId xsi:nil="true"/>
                           <ns0:ChargeCurrencyName>US Dollar</ns0:ChargeCurrencyName>
                           <ns0:HeaderCurrencyName>US Dollar</ns0:HeaderCurrencyName>
                           <ns0:PriceElement>Base List Price</ns0:PriceElement>
                           <ns0:PriceElementUsage xsi:nil="true"/>
                           <ns0:ChargeCurrencyDurationExtendedAmount>0</ns0:ChargeCurrencyDurationExtendedAmount>
                           <ns0:HeaderCurrencyDurationExtendedAmount>0</ns0:HeaderCurrencyDurationExtendedAmount>
                        </ns0:OrderChargeComponent>
                        <ns0:OrderChargeComponent>
                           <ns0:ChargeCurrencyCode>USD</ns0:ChargeCurrencyCode>
                           <ns0:ChargeCurrencyExtAmount>0</ns0:ChargeCurrencyExtAmount>
                           <ns0:ChargeCurrencyUnitPrice>0</ns0:ChargeCurrencyUnitPrice>
                           <ns0:HeaderCurrencyCode>USD</ns0:HeaderCurrencyCode>
                           <ns0:HeaderCurrencyExtAmount>0</ns0:HeaderCurrencyExtAmount>
                           <ns0:HeaderCurrencyUnitPrice>0</ns0:HeaderCurrencyUnitPrice>
                           <ns0:OrderChargeComponentId>300100138387486</ns0:OrderChargeComponentId>
                           <ns0:OrderChargeId>300100138387478</ns0:OrderChargeId>
                           <ns0:ParentChargeComponentId xsi:nil="true"/>
                           <ns0:PercentOfComparisonElement xsi:nil="true"/>
                           <ns0:PriceElementCode>QP_LIST_PRICE</ns0:PriceElementCode>
                           <ns0:PriceElementUsageCode>LIST_PRICE</ns0:PriceElementUsageCode>
                           <ns0:RollupFlag>N</ns0:RollupFlag>
                           <ns0:SequenceNumber>1001</ns0:SequenceNumber>
                           <ns0:SourceChargeComponentId>300100138387486</ns0:SourceChargeComponentId>
                           <ns0:SourceChargeId>300100138387478</ns0:SourceChargeId>
                           <ns0:SourceParentChargeCompId xsi:nil="true"/>
                           <ns0:PricingSourceId xsi:nil="true"/>
                           <ns0:PricingSourceTypeCode>RETURN</ns0:PricingSourceTypeCode>
                           <ns0:Explanation xsi:nil="true"/>
                           <ns0:ExplanationMessageName xsi:nil="true"/>
                           <ns0:TaxIncludedFlag>N</ns0:TaxIncludedFlag>
                           <ns0:ReferenceOrderChargeCompId xsi:nil="true"/>
                           <ns0:ChargeCurrencyName>US Dollar</ns0:ChargeCurrencyName>
                           <ns0:HeaderCurrencyName>US Dollar</ns0:HeaderCurrencyName>
                           <ns0:PriceElement>List Price</ns0:PriceElement>
                           <ns0:PriceElementUsage>List price</ns0:PriceElementUsage>
                           <ns0:ChargeCurrencyDurationExtendedAmount>0</ns0:ChargeCurrencyDurationExtendedAmount>
                           <ns0:HeaderCurrencyDurationExtendedAmount>0</ns0:HeaderCurrencyDurationExtendedAmount>
                        </ns0:OrderChargeComponent>
                        <ns0:OrderChargeComponent>
                           <ns0:ChargeCurrencyCode>USD</ns0:ChargeCurrencyCode>
                           <ns0:ChargeCurrencyExtAmount>0</ns0:ChargeCurrencyExtAmount>
                           <ns0:ChargeCurrencyUnitPrice>0</ns0:ChargeCurrencyUnitPrice>
                           <ns0:HeaderCurrencyCode>USD</ns0:HeaderCurrencyCode>
                           <ns0:HeaderCurrencyExtAmount>0</ns0:HeaderCurrencyExtAmount>
                           <ns0:HeaderCurrencyUnitPrice>0</ns0:HeaderCurrencyUnitPrice>
                           <ns0:OrderChargeComponentId>300100138387480</ns0:OrderChargeComponentId>
                           <ns0:OrderChargeId>300100138387478</ns0:OrderChargeId>
                           <ns0:ParentChargeComponentId xsi:nil="true"/>
                           <ns0:PercentOfComparisonElement xsi:nil="true"/>
                           <ns0:PriceElementCode>QP_NET_PRICE</ns0:PriceElementCode>
                           <ns0:PriceElementUsageCode>NET_PRICE</ns0:PriceElementUsageCode>
                           <ns0:RollupFlag>N</ns0:RollupFlag>
                           <ns0:SequenceNumber>1002</ns0:SequenceNumber>
                           <ns0:SourceChargeComponentId>SCC1</ns0:SourceChargeComponentId>
                           <ns0:SourceChargeId>SC1</ns0:SourceChargeId>
                           <ns0:SourceParentChargeCompId xsi:nil="true"/>
                           <ns0:PricingSourceId xsi:nil="true"/>
                           <ns0:PricingSourceTypeCode xsi:nil="true"/>
                           <ns0:Explanation xsi:nil="true"/>
                           <ns0:ExplanationMessageName xsi:nil="true"/>
                           <ns0:TaxIncludedFlag>N</ns0:TaxIncludedFlag>
                           <ns0:ReferenceOrderChargeCompId xsi:nil="true"/>
                           <ns0:ChargeCurrencyName>US Dollar</ns0:ChargeCurrencyName>
                           <ns0:HeaderCurrencyName>US Dollar</ns0:HeaderCurrencyName>
                           <ns0:PriceElement>Your Price</ns0:PriceElement>
                           <ns0:PriceElementUsage>Net price</ns0:PriceElementUsage>
                           <ns0:ChargeCurrencyDurationExtendedAmount>0</ns0:ChargeCurrencyDurationExtendedAmount>
                           <ns0:HeaderCurrencyDurationExtendedAmount>0</ns0:HeaderCurrencyDurationExtendedAmount>
                        </ns0:OrderChargeComponent>
                        <ns0:OrderChargeComponent>
                           <ns0:ChargeCurrencyCode>USD</ns0:ChargeCurrencyCode>
                           <ns0:ChargeCurrencyExtAmount>0</ns0:ChargeCurrencyExtAmount>
                           <ns0:ChargeCurrencyUnitPrice>0</ns0:ChargeCurrencyUnitPrice>
                           <ns0:HeaderCurrencyCode>USD</ns0:HeaderCurrencyCode>
                           <ns0:HeaderCurrencyExtAmount>0</ns0:HeaderCurrencyExtAmount>
                           <ns0:HeaderCurrencyUnitPrice>0</ns0:HeaderCurrencyUnitPrice>
                           <ns0:OrderChargeComponentId>300100138387487</ns0:OrderChargeComponentId>
                           <ns0:OrderChargeId>300100138387478</ns0:OrderChargeId>
                           <ns0:ParentChargeComponentId xsi:nil="true"/>
                           <ns0:PercentOfComparisonElement xsi:nil="true"/>
                           <ns0:PriceElementCode>QP_MARGIN</ns0:PriceElementCode>
                           <ns0:PriceElementUsageCode xsi:nil="true"/>
                           <ns0:RollupFlag>N</ns0:RollupFlag>
                           <ns0:SequenceNumber>1003</ns0:SequenceNumber>
                           <ns0:SourceChargeComponentId>300100138387487</ns0:SourceChargeComponentId>
                           <ns0:SourceChargeId>300100138387478</ns0:SourceChargeId>
                           <ns0:SourceParentChargeCompId xsi:nil="true"/>
                           <ns0:PricingSourceId xsi:nil="true"/>
                           <ns0:PricingSourceTypeCode xsi:nil="true"/>
                           <ns0:Explanation xsi:nil="true"/>
                           <ns0:ExplanationMessageName xsi:nil="true"/>
                           <ns0:TaxIncludedFlag>N</ns0:TaxIncludedFlag>
                           <ns0:ReferenceOrderChargeCompId xsi:nil="true"/>
                           <ns0:ChargeCurrencyName>US Dollar</ns0:ChargeCurrencyName>
                           <ns0:HeaderCurrencyName>US Dollar</ns0:HeaderCurrencyName>
                           <ns0:PriceElement>Margin</ns0:PriceElement>
                           <ns0:PriceElementUsage xsi:nil="true"/>
                           <ns0:ChargeCurrencyDurationExtendedAmount>0</ns0:ChargeCurrencyDurationExtendedAmount>
                           <ns0:HeaderCurrencyDurationExtendedAmount>0</ns0:HeaderCurrencyDurationExtendedAmount>
                        </ns0:OrderChargeComponent>
                     </ns0:OrderCharge>
                  </ns0:OrderFulfillLine>
                  <ns0:LineEffCategories xsi:type="ns17:j_LineEffDooLinesAddInfoprivate" xmlns:ns16="http://xmlns.your_server.com/apps/scm/doo/processOrder/flex/lineContextsB/" xmlns:ns17="http://xmlns.your_server.com/apps/scm/doo/processOrder/flex/lineCategories/">
                     <ns3:Category>DOO_LINES_ADD_INFO</ns3:Category>
                     <ns3:LineId>300100138387476</ns3:LineId>
                  </ns0:LineEffCategories>
               </ns0:OrderLine>
               <ns0:HeaderEffCategories xsi:type="ns19:j_HeaderEffDooHeadersAddInfoprivate" xmlns:ns18="http://xmlns.your_server.com/apps/scm/doo/processOrder/flex/headerContextsB/" xmlns:ns19="http://xmlns.your_server.com/apps/scm/doo/processOrder/flex/headerCategories/">
                  <ns3:Category>DOO_HEADERS_ADD_INFO</ns3:Category>
                  <ns3:HeaderId>300100138387475</ns3:HeaderId>
               </ns0:HeaderEffCategories>
               <ns0:OrderTotals>
                  <ns0:CurrencyCode>USD</ns0:CurrencyCode>
                  <ns0:DisplayName xsi:nil="true"/>
                  <ns0:EstimatedFlag>N</ns0:EstimatedFlag>
                  <ns0:HeaderId>300100138387475</ns0:HeaderId>
                  <ns0:OrderTotalId>300100138387505</ns0:OrderTotalId>
                  <ns0:PrimaryFlag>N</ns0:PrimaryFlag>
                  <ns0:TotalAmount>0</ns0:TotalAmount>
                  <ns0:TotalCode>QP_TOTAL_NET_PRICE</ns0:TotalCode>
                  <ns0:TotalGroup>2.3.0</ns0:TotalGroup>
               </ns0:OrderTotals>
               <ns0:OrderTotals>
                  <ns0:CurrencyCode>USD</ns0:CurrencyCode>
                  <ns0:DisplayName xsi:nil="true"/>
                  <ns0:EstimatedFlag>N</ns0:EstimatedFlag>
                  <ns0:HeaderId>300100138387475</ns0:HeaderId>
                  <ns0:OrderTotalId>300100138387506</ns0:OrderTotalId>
                  <ns0:PrimaryFlag>N</ns0:PrimaryFlag>
                  <ns0:TotalAmount>0</ns0:TotalAmount>
                  <ns0:TotalCode>QP_TOTAL_DISCOUNT</ns0:TotalCode>
                  <ns0:TotalGroup>1.2.0</ns0:TotalGroup>
               </ns0:OrderTotals>
               <ns0:OrderTotals>
                  <ns0:CurrencyCode>USD</ns0:CurrencyCode>
                  <ns0:DisplayName xsi:nil="true"/>
                  <ns0:EstimatedFlag>N</ns0:EstimatedFlag>
                  <ns0:HeaderId>300100138387475</ns0:HeaderId>
                  <ns0:OrderTotalId>300100138387500</ns0:OrderTotalId>
                  <ns0:PrimaryFlag>N</ns0:PrimaryFlag>
                  <ns0:TotalAmount>0</ns0:TotalAmount>
                  <ns0:TotalCode>QP_TOTAL_CREDIT</ns0:TotalCode>
                  <ns0:TotalGroup>2.6.0</ns0:TotalGroup>
                  <ns0:OrderTotalComponents>
                     <ns0:OrderChargeComponentId>300100138387480</ns0:OrderChargeComponentId>
                     <ns0:OrderTotalComponentId>300100138387501</ns0:OrderTotalComponentId>
                     <ns0:OrderTotalId>300100138387500</ns0:OrderTotalId>
                  </ns0:OrderTotalComponents>
               </ns0:OrderTotals>
               <ns0:OrderTotals>
                  <ns0:CurrencyCode>USD</ns0:CurrencyCode>
                  <ns0:DisplayName xsi:nil="true"/>
                  <ns0:EstimatedFlag>N</ns0:EstimatedFlag>
                  <ns0:HeaderId>300100138387475</ns0:HeaderId>
                  <ns0:OrderTotalId>300100138387502</ns0:OrderTotalId>
                  <ns0:PrimaryFlag>Y</ns0:PrimaryFlag>
                  <ns0:TotalAmount>0</ns0:TotalAmount>
                  <ns0:TotalCode>QP_TOTAL_PAY_NOW</ns0:TotalCode>
                  <ns0:TotalGroup>3.7.1</ns0:TotalGroup>
                  <ns0:OrderTotalComponents>
                     <ns0:OrderChargeComponentId>300100138387480</ns0:OrderChargeComponentId>
                     <ns0:OrderTotalComponentId>300100138387503</ns0:OrderTotalComponentId>
                     <ns0:OrderTotalId>300100138387502</ns0:OrderTotalId>
                  </ns0:OrderTotalComponents>
               </ns0:OrderTotals>
               <ns0:OrderTotals>
                  <ns0:CurrencyCode>USD</ns0:CurrencyCode>
                  <ns0:DisplayName xsi:nil="true"/>
                  <ns0:EstimatedFlag>N</ns0:EstimatedFlag>
                  <ns0:HeaderId>300100138387475</ns0:HeaderId>
                  <ns0:OrderTotalId>300100138387507</ns0:OrderTotalId>
                  <ns0:PrimaryFlag>N</ns0:PrimaryFlag>
                  <ns0:TotalAmount>0</ns0:TotalAmount>
                  <ns0:TotalCode>QP_TOTAL_SHIP_CHARGE</ns0:TotalCode>
                  <ns0:TotalGroup>2.4.0</ns0:TotalGroup>
               </ns0:OrderTotals>
               <ns0:OrderTotals>
                  <ns0:CurrencyCode>USD</ns0:CurrencyCode>
                  <ns0:DisplayName xsi:nil="true"/>
                  <ns0:EstimatedFlag>N</ns0:EstimatedFlag>
                  <ns0:HeaderId>300100138387475</ns0:HeaderId>
                  <ns0:OrderTotalId>300100138387508</ns0:OrderTotalId>
                  <ns0:PrimaryFlag>N</ns0:PrimaryFlag>
                  <ns0:TotalAmount>0</ns0:TotalAmount>
                  <ns0:TotalCode>QP_TOTAL_TAX</ns0:TotalCode>
                  <ns0:TotalGroup>2.5.0</ns0:TotalGroup>
               </ns0:OrderTotals>
               <ns0:OrderTotals>
                  <ns0:CurrencyCode>USD</ns0:CurrencyCode>
                  <ns0:DisplayName xsi:nil="true"/>
                  <ns0:EstimatedFlag>N</ns0:EstimatedFlag>
                  <ns0:HeaderId>300100138387475</ns0:HeaderId>
                  <ns0:OrderTotalId>300100138387504</ns0:OrderTotalId>
                  <ns0:PrimaryFlag>N</ns0:PrimaryFlag>
                  <ns0:TotalAmount>0</ns0:TotalAmount>
                  <ns0:TotalCode>QP_TOTAL_LIST_PRICE</ns0:TotalCode>
                  <ns0:TotalGroup>1.1.0</ns0:TotalGroup>
               </ns0:OrderTotals>
            </ns0:Value>
         </ns2:result>
      </ns0:getOrderDetailsResponse>
   </env:Body>
</env:Envelope>

Import Return Orders

Import a source order that returns an item.

Here's how you do it.

Import a source order that doesn't reference the
original sales order.

Use a technology to import the return.

  • Order import template. The template is SourceSalesOrderImportTemplate.xlsm. Many of the return attributes are on tab DOO_ORDER_LINES_ALL_INT.

  • Web service in Oracle Application Development Framework (ADF).

  • Web service in Oracle Service-Oriented Architecture (SOA).

Required Attributes

Here are the attributes that your import must include.

Attribute Description

Attribute that identifies the item.

Choose from the group. For example, Product Number.

Ordered Quantity

Make sure quantity is greater than 0 for a new source order. You can use 0 for a revise order.

If your set up.

  • Allows decimals. Make sure the number of digits after the decimal point doesn't exceed the maximum number of digits allowed according to profile Quantity Decimal Precision. For details, see the Control Decimal Precision topic.

  • Doesn't allow decimals. Make sure the source order doesn't include decimal values.

Ordered UOM

Make sure the unit of measure is appropriate for the item.

For example, Quart is appropriate for a liquid, but Amperage isn't because amperage measures electrical current.

If the item returns a coverage, then make sure the unit of measure is appropriate for the covered item.

Return Type

Identifies type of order line. Use a value from the Return Order Line Types lookup.

If you use the order import template, then use the Transaction Line Type Code attribute in column AB of tab DOO_ORDER_LINES_ALL_INT.

Return Location

If Return Type is Return for credit and return the item, then the import requires Return Location.

If you use the order import template, then use the Requested Fulfillment Organization Identifier attribute in column N of tab DOO_ORDER_LINES_ALL_INT.

Return Reason

If you use the order import template, then use the Return Reason attribute in column DJ and DK of tab DOO_ORDER_LINES_ALL_INT.

Coverage

If you cancel a coverage, then include the Covered Item attribute, the Source System Reference for Covered Product attribute, and at least one of these attributes.

  • Identifier for Covered Product

  • Number for Covered Product

  • Description for Covered Product

  • Identifier for Covered Customer Product

  • Number for Covered Customer Product

  • Description for Covered Customer Product

Cancel a Service

A service can be a coverage and subscription. For details, see the Import Source Orders That Include Coverage or Subscriptions topic.

Here are the attributes you can use when you cancel a service.

Attribute Description

Service Duration, Service Duration Code, or Service Duration UOM

If Service Duration Type is.

  • Fixed or variable, include Service Duration, and include Service Duration Code or Service Duration UOM.

  • Open ended, and if canceling coverage, then Service Duration Code or Service Duration UOM is optional. You must set Period for a coverage item, or if you set Service Duration.

For details about these types, see the Set Up Coverage for Sales Orders topic.

If you include Service Duration.

  • You must include Service Duration Code or Service Duration UOM.

  • Make sure decimal precision doesn't exceed 3.

Note.

  • If your source system already priced the source order, and if source order includes Duration, then you must also include the extended amount for duration.

  • If the import includes a coverage, then you must also include the covered item.

Not Allowed

Make sure your import doesn't . . .

  • Include a configured item.

  • Include recurring billing. The source order must specify one time billing.

  • Modify a return item and its covered item or add or remove the original sales order revision.

The Order Entry Specialist can return an item or cancel a service without referencing the sales order that originally ordered the item. You can administer this feature.

An unreferenced return is a sales order that includes a return line that doesn't reference the sales order that your customer used to purchase the item.

Examples

Your Customer Returns a Whole Bunch of Orders

Vision Corporation is a wholesaler who sold 8,000 items in 475 sales orders to retailer Fantastic Laptops.

  • Each order included more than 100 order lines.

  • Vision shipped and closed most of these orders.

  • Each order used different prices.

One year later, Fantastic Laptops returns 50 items in a large container. To simplify order entry, billing, and through agreement with Fantastic Laptops, Vision Corporation credits all items at the same price. The Order Entry Specialist uses the Order Management work area to create a single unreferenced return order for all the returned items. This approach allows the Order Entry Specialist to complete the return without having to spend many hours looking up the original sales order for each item.

Your Customer Sends Returns Without the Original Sales Order

First Software maintains over 50 outlets in a fast-paced environment. They sell to an established set of clients, and maintain a contractual, working relationship with each client. Each outlet receives return items that they sold, and also returns items that other outlets sold. However, personnel who work at the outlets don't have time to look up the original sales order for each return.

First Software trusts their clients and don't feel its necessary to confirm the original sales order. At the end of the week, one person at each location enters all returns they received into a single return order that doesn't reference any of the original sales orders.

You Accept Competitor's Orders

Computer Service and Rentals is a new company who sells laptops in a retail marketplace. They are interested in gaining market share, so they accept items that their customer purchased from a competitor as part of a promotion to sell new laptops. Computer Service and Rentals enters these items as unreferenced returns, then sells them later as refurbished.

You Didn't Migrate Data During an Upgrade

Green Corporation sells magazine subscriptions. Customers call the call center to cancel subscriptions. Green Corporation recently upgraded to Order Management, but didn't migrate order data from their legacy system to Order Management.

The Order Entry Specialist creates an unreferenced return to cancel the subscription and credit the remaining part of the subscription that the customer already paid but didn't use. The Order Entry Specialist sets details on the order line, such as item, quantity, return type, and then uses attribute Duration and attribute Period to specify details about the return. Order Management calculates the price when the Order Entry Specialist adds the return to the order.

The Item Doesn't Include Identifying Markings

Computer Service and Rentals is a retailer who sells directly to the public. Their customer returns an item but doesn't have the original receipt, and the item doesn't include a serial number or other marking that the Order Entry Specialist can use to look up the item when creating the return. The Order Entry Specialist uses the Add Unreferenced Return Lines action to add the item.

Customer Must Return Configured Item

Small Inc.is a retailer who sells the Long Life Tea Set, which is a pick-to-order, configured item that includes configure options, such as steeping pot, pouring vessel, and set of tea cups. Customers return items but no longer have the receipt, and the item doesn't include an identifying marking that the Order Entry Specialist can use to look up the item when creating the return. The Order Management work area doesn't allow the Order Entry Specialist to return a configured item. Instead, the Order Entry Specialist creates a return line for each configure option.

If you have an unreferenced return, and if you're returning a configured item that's.

  • pick-to-order. You can return one or more individual configure options or the entire item.

  • assemble-to-order. You can't return any configure option. You can't return the entire item.

How It Works

Adding Unreferenced Items

Here's what the Order Entry Specialist does.

  • Fills in attributes on the order header, then, in the Order Lines area, clicks Add Unreferenced Return Lines.

  • Adds unreferenced return lines, then clicks Add to add them to the sales order.

Here's what Order Management does.

  • Uses attribute values from the order header to set default values for attributes on return lines.

  • Runs pretransformation rules to set the default values.

  • Prices the return according to current system date.

  • Sets Billing Frequency to One Time Billing and credits the entire amount as a single credit.

  • Adds included item for each kit according to the product structure you set up in the Product Information Management work area.

Set Up

Enabling unreferenced returns

If you're upgrading, then here's what it does, depending on whether you extended pricing algorithms.

  • Haven't extended. Promotes all algorithms to the latest version.

  • Have extended. Reconciles algorithm extensions, then promotes all algorithms.

How Pricing Works

Pricing Administration comes predefined to calculate price for each unreferenced return.

  • Determines whether the return line does or doesn't include a reference to the original sales order.

  • Calculates price like it normally calculates a sales order line, then adds a negative sign.

  • Calculates price according to the pricing set up that exists on the return date or cancel date. For example, it applies the discounts and charges that existed on the item as of the return date or cancel date.

  • Calculates a one time charge or recurring charge.

  • Calculates the pricing adjustment and discount.

  • If Pricing can't determine the charge, then it applies a zero charge.

  • Allows the Order Entry Specialist to manually adjust the price as an override on the return line.

  • Prices the cancel for a coverage or subscription, including pricing only part of the coverage or subscription period.

You don't need to do any set up to implement this predefined behavior.

For example.

Example of enabling unreferenced returns

Note.

  • Pricing determines that the list price for the AS54888 item is $2500.00 according to the price that exists on the date and time when the user added the order line.

  • Pricing applies the negative sign to get -2500.00.

  • The user overrides the price to -$2000.00. For example, assume your company policy requires that you reduce the refund by $500 when the customer returns the AS54888 without the original sales order.

You can modify the predefined behavior for an unreferenced return.

  • You can modify your pricing process to calculate a return amount that's different than the price as of the return or cancel date, such as including a restocking fee.

  • You can apply a manual price adjustment on the charge.

  • The predefined behavior for a referenced return or an unreferenced return doesn't support pricing from a returns price list.

Create a Business Rule

You can write a business rule, such as an approval rule, that processes an unreferenced return.

The Manage Order Approval Rules page

Here's the logic that this example implements.

If attribute Return Without a Reference Order equals yes, and if attribute Order Total Amount on sales order is equal to or greater than $10,000, then assign sales order to the mgr_operations position for approval.

Get a Report

work area Reports and Analytics

In the Reports and Analytics work area, expand the Order Management - Fulfillment Lines Real Time subject area, expand Fulfillment Lines General Details, then notice the attributes you can use for a fulfillment line. To create a report that includes unreferenced return lines, add a filter.

  • Return Without a Reference Order = Y

For details, see the Use Reports and Analytics with Order Management topic.

Constrain Return Orders

Set up a processing constraint that constrains changes the Order Entry Specialist makes to a return that doesn't reference the original sales order.

For example, Order Management uses the Cancellation Effective Date attribute to price a return that doesn't reference the original order. Here's your constraint.

  • If the return doesn't reference the original sales order, then don't allow the user to modify Cancellation Effective Date.

Here's your set up.

Setup flow to constrain returns without original
sales order.

For details about processing constraints, see the Set Up Processing Constraints topic.

Use an order management extension to implement a more specialized constraint. For example, if its been 15 days or more since Order Management sent the sales order to invoicing, then write an extension that prevents the user from creating a return material authorization. Use the On Save extension point. For details, see the Overview of Creating Extensions That Modify Order Management topic.

This topic includes example values. You might use different values, depending on your business requirements.

Try it.

  1. In the Setup and Maintenance work area, go to the task.

    • Offering: Order Management

    • Functional Area: Orders

    • Task: Manage Processing Constraints

  2. Add the validation rule set.

    • On the Manage Processing Constraints page, click Validation Rule Set, then add a rule set.

      Attribute Value

      Attribute

      Value

      Name

      Modify Date on Unreferenced Return

      Description

      If the return doesn't reference the original sales order, then don't allow user to modify date.

      Short Name

      UNREF

      Validation Type

      Table

      Entity

      Order Fulfillment Line

    • In the Details area, click Actions > Add Row, set values, then click Save.

      Attribute Value

      Name

      Cancellation Effective Date

      Validation Operation

      Is Not Null

    • Click Generate Packages, notice the Confirmation dialog displays your request ID, then wait a few minutes for the request to finish.

      For example.

      The concurrent request to generate constraints validation packages was submitted. Request ID: 10650.
  3. Add the constraint.

    • Click Constraints > Actions > Add Row, then set values.

      Attribute Value

      Constraint Name

      CANCEL_SERVICE_DATE

      Display Name

      Cancel Service Date

      Constraint Entity

      Order Fulfillment Line

      Constrained Operation

      Update

      Attribute Name

      Cancellation Effective Date

      Enabled

      Contains a check mark

    • In the Conditions area, add the condition.

      Attribute Value

      Group Number

      1

      Validation Entity

      Order Fulfillment Line

      Validation Rule Set

      Don't allow date change on unreferenced return

      Scope

      Any

      Record Set

      Fulfillment Line Default Record Set

      Message

      You must not modify Cancellation Effective Date when you return a sales order without the original order because Order Management uses this date to price the return.

    • Click Generate Packages and wait a few minutes.

Test Your Set Up

  1. Navigate to the Order Management work area and create a new sales order.

    Attribute Value

    Customer

    Computer Service and Rentals

    Business Unit

    Vision Operations

    Bill-to Account

    1006

  2. In the Order Lines area, click Actions > Create Unreferenced Return Lines, then set values.

    Attribute Value

    Item

    Add a subscription that uses a fixed Service Duration Type. For details about this type, see the Set Up Coverage for Sales Orders topic.

    For this example, assume your implementation includes fixed subscription QP_SUBS_ITEM7-FIXED.

    Return Quantity

    1

    UOM

    Each

    Return Type

    Return for Credit and Return the Item

    Return Location

    Vision Operations

  3. Click Submit.

  4. If the order line status is Not Started, then wait a moment, and click Refresh. Repeat until status is Awaiting Receiving.

  5. Click Actions > Create Revision.

  6. On the order line, modify the value in Cancellation Effective Date, then click Submit.

Return Sales Orders Without Credit Memo

Set up Order Management so your users can return a sales order without creating a credit memo.

You might not want Order Management to create a credit memo, such as if you allow customers to return a competitor's order. Here's the flow you will set up.

the flow you will set up.

Note.

  1. You create a lookup that allows your users to specify whether its a return without credit.

  2. The user searches for and views a closed sales order, clicks Return in the Order Lines area, then uses the Return Items dialog to set Return Type.

  3. You create an assignment rule.

    • If CategoryCode is equal to Return, and. . .

    • If Line Type is equal to Return Without Credit

  4. You create an action in your rule.

    • Assign orchestration process CustomDOO_ReturnOrderGenericProcess.

  5. You create CustomDOO_ReturnOrderGenericProcess. You copy the predefined ReturnOrderGenericProcess, then remove steps so it doesn't issue a credit memo.

For.

  • More examples, see the Overview of Returning Items Without Original Sales Order topic.

  • Details about credit memos, see book Oracle Financials Cloud, Using Receivables Credit to Cash.

Summary of the Steps

  1. Set up the lookup.

  2. Create the orchestration process.

  3. Create the assignment rule.

Set up the Lookup

  1. In the Navigator, click Setup and Maintenance.

  2. In the Setup and Maintenance work area, go to the task.

    • Offering: Order Management

    • Functional Area: Orders

    • Task: Manage Order Lookups

  3. On the Manage Order Lookups page, in the Search area, enter the value, then click Search.

    Attribute Value

    Lookup Type

    ORA_DOO_RETURN_LINE_TYPES

  4. In the Lookup Codes area, click Actions > New, set values, then click Save and Close.

    Attribute Value

    Lookup Code

    RETURN_WITHOUT_CREDIT

    Meaning

    Return without credit

    Description

    Return the item but don't create a credit memo.

Create the Orchestration Process

  1. In the Setup and Maintenance work area, go to the task.

    • Offering: Order Management

    • Functional Area: Orders

    • Task: Manage Orchestration Process Definitions

  2. On the Manage Orchestration Process Definitions page, search for the value.

    Attribute Value

    Process Name

    ReturnOrderGenericProcess

  3. In the search results, click the row that includes ReturnOrderGenericProcess in the Name column, then click Actions > Duplicate.

  4. On the Edit Orchestration Process Definition page, set values, then click Save.

    Attribute Value

    Process Name

    CustomDOO_ReturnOrderGenericProcess

    Process Display Name

    Return Sales Order Without Creating Credit Memo

    Enter any text that's meaningful to you.

  5. In the Process Details area, click Status Conditions > Fulfillment Line Status Values, then click Edit Status Rule Set.

  6. On the Edit Status Rule Set page, delete rows that contain the following values in the Status Value column, then click Save and Close.

    • Awaiting Billing

    • Billed

    • Partially Received

  7. In the Process Details area, click Orchestration Process Status Values, then delete rows that contain the following values in the Status Value column.

    • Awaiting Billing

    • Billed

    • Partially Received

  8. In the Process Details area, click Step Definition, then delete rows that contain the following values in the Step Name column.

    • Create RMA Invoice

    • Wait for RMA Invoice

  9. Click Save, then deploy the orchestration process. For details, see the Deploy Orchestration Processes topic.

Create the Assignment Rule

Create and publish an assignment rule that assigns your orchestration process.

  • Create the If statement.

  • If categoryCode is equal to Return, and Line Type is equal to Return without credit

  • Create the Then statement.

    Process Name is set to CustomDOO_ReturnOrderGenericProcess

  • Publish and test your rule.

For details about how to create an assignment rule, see the Overview of Using Business Rules topic.

Delays

Jeopardy indicates the severity of a delay of a task in an orchestration process. You can modify the predefined range of jeopardy scores for a jeopardy priority to control how Order Management calculates and displays jeopardy.

For example, you can set a minimum score of 0, and a maximum score of 100 for the Low jeopardy priority.

Note.

  • You can use jeopardy on planned dates or on actual dates. This set up allows an order manager to become aware that a jeopardy condition might exist before it actually occurs, and to take action to fix the condition and reduce jeopardy.

  • You can't add or delete a jeopardy priority.

  • You can't modify the value of a predefined jeopardy priority, such as Low.

To get details about jeopardy and how it works, see the Jeopardy Score topic.

Set up a jeopardy threshold to measure and monitor an orchestration process.

Set up a set of ranges for each fulfillment task of an orchestration process, then assign a score that indicates the severity of the delay. Order Management uses your set up in the jeopardy attributes that it displays in the Order Management work area. These attributes help your users to quickly determine the severity of the delay, then take appropriate action.

You can set up a jeopardy threshold for any combination of these attributes.

  • Task type

  • Task name

  • Process name

  • Process version

If you leave these attributes at their default setting of All, then Order Management applies jeopardy threshold to all fulfillment tasks.

If you apply a jeopardy threshold, then you must first set up the orchestration process, fulfillment task, and task type that the threshold will reference so you can select these objects when you apply the threshold.

To manage delay, set up jeopardy priority, lead time, and jeopardy threshold for your orchestration process.

Summary of the Steps

  1. Manage jeopardy priority.

  2. Specify lead time.

  3. Manage jeopardy threshold.

This topic describes how to do these steps because you often do them together. However, you can do them independently of one another.

This topic includes example values. You might use different values, depending on your business requirements.

Manage Jeopardy Priority

Assume you need a higher range for the MEDIUM priority, and a higher but more narrow range for the HIGH priority.

  1. Enable order management parameter Enable Orchestration Process Planning and Calculate Jeopardy.

    For details, see the Manage Order Management Parameters topic.

  2. In the Setup and Maintenance work area, go to the task.

    • Offering: Order Management

    • Functional Area: Orders

    • Task: Manage Jeopardy Priorities

  3. On the Manage Jeopardy Priorities page, set values, then click Save and Close.

    Priority Minimum Score Maximum Score

    LOW

    10

    199

    MEDIUM

    200

    399

    HIGH

    400

    600

    Don't.

    • Overlap scores across priorities. For example, don't set up a Low priority of 10 to 210, and a Medium priority of 200 to 400. An overlap exists between 200 and 210.

    • Set up priorities that intersect at the same value. If you set up two priorities that intersect at the same value, then Order Management assigns the intersecting value to the lower priority.

      For example, if you set up Low priority of 10 to 200, and Medium priority of 200 to 400, then Order Management considers a score of 200 as Low priority.

Specify Lead Time

Assume you need a specific amount of lead time to finish each orchestration process step in an orchestration process that ships goods. For details about lead times, see the Guidelines for Orchestration Process Steps topic.

  1. In the Setup and Maintenance work area, go to the task.

    • Offering: Order Management

    • Functional Area: Orders

    • Task: Manage Orchestration Process Definitions

  2. On the Manage Orchestration Process Definitions page, search for an orchestration process, then open it.

    For this example, search for Orchestration_Process_1. For details about how to create this process, see the Pause Orchestration Processes Until an Event Occurs topic.

  3. On the Step Definition tab, set the Default Lead Time attribute, and set the Lead Time UOM attribute to Days. Set them for each step.

    Step Default Lead Time

    Schedule Goods

    2

    Reserve Goods step

    1

    Ship Goods

    4

    Wait for Ship Goods

    6

    Prepare Documentation

    1

    Wait for Documentation

    1

    Invoice Goods

    3

    Wait for Invoice Goods

    2

  4. Click Save and Close.

Manage Jeopardy Threshold

Assume you can use a threshold on reservation tasks that your orchestration process runs to manage how long the process can delay each task.

  1. In the Setup and Maintenance work area, go to the task.

    • Offering: Order Management

    • Functional Area: Orders

    • Task: Manage Jeopardy Thresholds

  2. On the Manage Jeopardy Threshold Definitions page, click Actions > Create.

  3. On the Create Jeopardy Threshold Definition page, set values.

    Attribute Value

    Code

    Enter any text that Order Management can use as an abbreviation for the threshold. Order Management uses this text as a code to identify the threshold throughout the Order Management work area, such as in lists.

    For this example, enter t-shirt_threshold.

    Name

    Clothing Jeopardy

    Description

    Jeopardy thresholds for company t-shirts.

    Process Name

    Choose the name of the orchestration process where Order Management must apply the jeopardy threshold.

    For this example, choose Orchestration_Process_1.

    For details about how to create this process, see the Pause Orchestration Processes Until an Event Occurs topic.

    Task Name

    Reserve

    Task Type

    Reservation

  4. Set the threshold for the Low range of the jeopardy priority. Click Actions > Add Row, then set values.

    Attribute Value

    Maximum Delay

    2

    Maximum UOM

    Days

    Jeopardy Score

    Enter a value that resides in the Low range of the jeopardy priority that you modified above, such as 100.

    Description

    Threshold for the Low range of the jeopardy priority.

  5. Set the threshold for range Medium of the jeopardy priority. Click Actions > Add Row, then set values.

    Attribute Value

    Maximum Delay

    5

    Maximum UOM

    Days

    Jeopardy Score

    Enter a value that resides in the Medium range of the jeopardy priority that you modified above, such as 300.

    Description

    Threshold for the Medium range of the jeopardy priority.

  6. Set the threshold for the High range of the jeopardy priority. Click Actions > Add Row, then set values.

    Attribute Value

    Maximum Delay

    8

    Maximum UOM

    Days

    Jeopardy Score

    Enter a value that resides in the High range of the jeopardy priority that you modified above, such as 500.

    Description

    Threshold for the High range of the jeopardy priority.

  7. Click Save and Close.