12Troubleshoot

This chapter contains the following:

Tools and Techniques

Use SQL to Query Order Management Data

Use SQL to get data from the Order Management database, then analyze it.

Get details from the Order Management database to do a variety of administration tasks.

  • Verify the data format and values you must use during order import or with a web service.

  • Troubleshoot problems that occur during upgrades or other administrative set up.

  • Save data into a data management tool of your choice so you can analyze it.

You create a data model in Oracle Business Intelligence and use it to query the Order Management database.

Assume you must query the database to get a list of users so you can identify the users who are active and the ones who aren't.

Summary of the Steps

  1. Create and run query.

  2. Create report.

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

Create and Run Query

  1. Sign in with a user that includes job role BI Publisher Data Model Developer.

    Use this role to create a data model in Oracle Business Intelligence.

  2. In the Navigator, click Reports and Analytics.

    For details about how to use this work area, see the Use Reports and Analytics with Order Management topic.

  3. On the Reports and Analytics page, click Browse Catalog.

    Your browser opens a new tab for Oracle Business Intelligence.

  4. In Oracle Business Intelligence, click Home.

  5. Create the data model.

    • In the Create area, under Published Reporting, click More > Data Model.

      Clicking the Data Model.

      You use a data model to set up the SQL you use to query the Oracle database. You can reuse the data model for different SQL queries. It isn't necessary to create and save a separate data model for each SQL query.

    • On the Diagram tab, click New Data Set > SQL Query.

    • In the New Data Set - SQL Query dialog, set values.

      Attribute Value

      Name

      My SQL

      Data Source

      ApplicationDB_FSCM (Default)

      FSCM means Oracle Fusion Supply Chain Management.

      Type of SQL

      Standard SQL

      SQL Query

      Select pu.user_id, pu.active_flag, pu.start_date, pu.end_date, pu.username, pur.role_id, pur.role_guid

      You can enter some other query. For example, to get all order headers, enter. . .

      SELECT * FROM fusion.DOO_HEADERS_ALL

      To get all order lines, enter. . .

      SELECT * FROM fusion.DOO_LINES_ALL

      For example.

      clicking New Data Set then SQL Query
    • Click OK.

      The Diagram tab displays the attributes that your SQL defined.

      Diagram tab displaying the attributes that your
SQL defined.
    • Click View Data, set Rows to 200, click View, click Table View, then examine the output.

      output of the view data
  6. In the upper-right corner, click Save, then save the output in My Folders.

Create Report

  1. On the Data tab, click Save as Sample Data > OK.

  2. In the upper-right corner, click Create Report.

    The Create Report wizard displays for your data model.

    The Create Report wizard displaying your data model.
  3. Click Next.

  4. On the Select Layout step, enable the Landscape option, enable the Table option, then click Next.

  5. On the Create Table step, adjust the layout to fit your needs, then click Next.

    For example, drag and drop columns from the data source to the table.

    dragging and dropping columns from the data source
to the table.
  6. On the Save Report step, enable the View Report option, then click Finish.

  7. Save the report, name it, such as SQLReport, then examine the results on the report output that displays.

    Examining the results on the report output that
displays.

As an option, save the result to a file type of your choice.

Add a Field

You can't extend the predefined data model for Order Management. Instead, you can replace a field in the report output with the one you need.

Order Management uses the term item to describe the product your customer buys. The AS54888 Computer is an example of an item. The predefined data model uses the INVENTORY_ITEM_ID column to store the value that identifies the item. In this example, you replace INVENTORY_ITEM_ID with ITEM_NUMBER so your report output is more consistent with this usage.

replacing INVENTORY_ITEM_ID with ITEM_NUMBER
  1. Do steps 1 through 5 from earlier in this topic, except use these values in the New Data Set - SQL Query dialog.

    Attribute Value

    Name

    Add a Column

    Data Source

    ApplicationDB_FSCM (Default)

    FSCM means Oracle Fusion Supply Chain Management.

    Type of SQL

    Standard SQL

    SQL Query

    SELECT * FROM fusion.DOO_LINES_ALL

  2. Click Structure > Table View.

  3. Locate the row that contains INVENTORY_ITEM_ID in the XML Tag Name column.

  4. Modify values in the row you located.

    Attribute Old Value New Value

    XML Tag Name

    INVENTORY_ITEM_ID

    ITEM_NUMBER

    Display Name

    INVENTORY_ITEM_ID

    Item Number

  5. Click View Data, set Rows to 200, click View, click Table View, then examine the output.

Example SQL Queries

Sales Orders in Not Started Status or Processing Status and There Are No Exceptions

This problem typically occurs when the SOA server becomes unstable or overloaded and the SOA transactions time out. Use a query to identify sales orders that remain in Not Started Status or Processing Status but that don't have any exceptions.

SELECT f.last_update_date,
h.source_order_number,
l.display_line_number,
f.fulfill_line_number,
f.status_code,
f.fulfill_line_id
FROM doo_headers_all h,
doo_fulfill_lines_all f,
doo_lines_all l
WHERE h.header_id =l.header_id
AND h.submitted_flag='Y'
AND l.line_id =f.line_id
AND f.open_flag ='Y'
AND f.creation_date>= sysdate -- Use the date range to meet your needs
AND f.status_code IN ('NOT_STARTED') -- Get orders only in NOT_STARTED status
AND NOT EXISTS
(SELECT OrchestrationGroupEO.TRANSACTION_ENTITY_ID
FROM DOO_WAIT_TASK_DETAILS WaitTaskDetailsEO,
DOO_ORCHESTRATION_GROUPS OrchestrationGroupEO
WHERE WaitTaskDetailsEO.GROUP_ID = OrchestrationGroupEO.GROUP_ID
AND WaitTaskDetailsEO.STATUS_CODE='Active'
AND OrchestrationGroupEO.STATUS ='ACTIVE'
AND TRANSACTION_ENTITY_NAME ='DOO_ORDER_FLINES_V'
AND transaction_entity_id =f.fulfill_line_id
)
ORDER BY f.source_order_number;

Use the Force Unlock action to recover these sales orders. For details, see the Unlock Draft Sales Orders topic.

Get Error Messages and Status Updates

Get error messages and status updates for each sales order you import or integrate.

Assume you imported source order PMC-071816-007 from your source system on 1/01/2019 at 2:30 PM, but can't find it when you search on the Overview page in the Order Management work area. You can search messages to get a status update or view error messages that occur during import.

message in the search results.
  1. Go to the Order Management work area, then click Tasks > Manage Order Orchestration Messages.

  2. On the Manage Order Orchestration Messages page, set values, then click Search.

    Attribute Value

    Reported Time

    After 1/01/2019 2:30 PM

    Source Order

    Equals PMC-071816-007

  3. Examine the message in the search results.

Use Diagnostics to Troubleshoot Sales Orders

Use a diagnostic tool to troubleshoot problems you have with a sales order.

Use a diagnostic tool to troubleshoot problems
you have with a sales order.

Note.

  • Run the tool directly from the Navigator in real time.

  • Get the current status of the sales order.

  • Get results from a range of diagnostic tests. For example, run the Order Orchestration test to determine whether.

    • A shipment set in the sales order includes a line that can't ship, such as a warranty.

    • Order fulfillment is locked because of a force cancel action.

    • A hold failure occurred.

  • Get processing details about the sales order, such as which fulfillment tasks have run and their statuses.

Assume you must troubleshoot sales order 385081 that you created in the Order Management work area.

Try it.

  1. Sign in with the Application Diagnostics Administrator job role.

    For details, see the Application Diagnostics Administrator chapter in Security Reference for Common Features at https://docs.oracle.com/en/cloud/saas/applications-common/19d/oacsm/application-diagnostics-administrator-job-role.html#application-diagnostics-administrator-job-role.

  2. In the upper-right corner, click down arrow > Run Diagnostics Tests.

  3. On the Diagnostic Dashboard page, in the Search for Tests area, enter the value, then click Search.

    Attribute Value

    Test Name

    Order Orchestration

  4. In the search results, in the row that contains Order Orchestration Details in the Test Name attribute, add a check mark to the box that's left of the test name, then click Add to Run.

    In the Choose Tests to Run and Supply Inputs area, notice that the page added a row.

    Test Name Prerequisites Details Input Status Test Identifier

    Order Orchestration Details

    No

    Icon you can click

    Required Input Values Are Missing

    Order Orchestration Details

  5. In the Input Status column, click the caution icon.

  6. In the Input Parameters dialog, in the New Value column, click the magnifying glass.

  7. In the Search and Select dialog, enter the value.

    Attribute Value

    Source Order Number

    385081

  8. In the search results, click that row that contains your sales order, then click OK > OK.

    In the Choose Tests to Run and Supply Inputs area, notice the value.

    Attribute Value

    Input Status

    Inputs Edited: Required Input Values Validated

  9. In the Test Run Submitted dialog, notice the text, then click OK.

    Tests Run "TestRun_958693F85A9E4A19E0535EBFF20A3CA7" has been submitted

Examine the results.

  1. In the Diagnostic Test Run Status area, click View > Refresh, then examine the values.

    Attribute Value

    Run / Test / Step Name

    TestRun_958693F85A9E4A19E0535EBFF20A3CA7

    Execution Status

    Completed

    Diagnostic Status

    No Issues

    Report

    An icon you can click to get details.

    Run By

    Displays the user you used to sign in, such as DIAG_ADMIN.

    The refresh displays all tests that diagnostics has run in the last 24 hours.

  2. In the Run / Test / Step Name column, expand the folder, expand the child Order Orchestration Details folder, then notice the hierarchy that displays.

    TestRun_958693F85A9E4A19E0535EBFF20A3CA7
      Order Orchestration Details
        Diagnostics_Engine_Log
        Order Orchestration Data
    
  3. Verify the status for each row of the hierarchy.

    Attribute Value

    Execution Status

    Completed

  4. In the row that contains TestRun_958693F85A9E4A19E0535EBFF20A3CA7, in the Report column, click the icon.

    The tool displays an HTML page that includes a report summary.

  5. Close the report.

  6. In the Diagnostic Test Run Status area, in the row that contains Order Orchestration Details, in the Report column, click the icon.

    The tool displays an HTML page that includes a report summary.

  7. Use the report.

Use the Report

Analysis Area

Use the analysis area of the report to get details about the current state of the sales order.

Analysis Details That the Report Displays

Recovery action is pending for the order.

Source Order Number

Display Line Number

Suggested Recovery

Changes to order not successfully processed.

Source Order Number

Display Line Number

Suggested Recovery

Order lines that haven't reached a stable state.

Task Step Name

Source Order Number

Display Line Number

Actual Start Date

Suggested Recovery

Order lines that haven't reached a stable state for tasks with an explicit wait.

Task Step Name

Source Order Number

Display Line Number

Actual Start Date

Suggested Recovery

Order lines that a fulfillment task has locked.

Source Order Number

Display Line Number

Suggested Recovery

Order lines that a shipping task has locked.

Source Order Number

Display Line Number

Suggested Recovery

Order lines with problems that occur during error recovery.

Source Order Number

Display Line Number

Group Id

Suggested Recovery

Diagnosis Area

Use the Order Diagnosis area of the report to identify problems that occurred.

Analysis Example Results That the Report Displays

Locked draft headers.

Sales order doesn't have a locked draft.

Fulfillment lines with null delta types.

Sales order doesn't have a null delta type.

Shipment set in this order contains shippable and nonshippable lines.

Shipment set doesn't have a mix of shippable lines and nonshippable lines.

Order fulfillment is locked because of force cancel.

There are no problems related to a forced cancellation.

Double orchestration exists for fulfillment lines in the sales order.

There are no problems related to a double orchestration.

This order has pending action requests.

All user request are done and no more changes are allowed.

No active wait record exists for this order.

There are no problems related to waits.

Previous change is pending for this order.

Order lines are healthy.

This order has hold failures.

There are no apply hold failures.

Active hold on previous change.

There are no active holds.

Processing Details Area

Use the Processing Details area to get details about the processing that Order Management has done for the sales order, such as order line details, orchestration process details, orchestration process steps that have run and their statuses, fulfillment task details, pending actions, holds applied, error messages, and so on.

Here are a few of the categories that the area contains.

  • Processing Order Header

  • Order Header Extensible Flexfields

  • Order Lines

  • Order Lines Extensible Flexfields

  • Processing Fulfillment Lines

  • Fulfillment Lines Details

  • Order Orchestration Groups

  • Process BPEL Instances

  • Process Instances

  • Step Instances

  • Step Instance Details

  • Task Instances

  • Order State

  • Process Hold

  • Action Requests

  • Inventory Reservations

  • Order Warehouse Details

  • Order Interface To Invoice

  • Order Invoice

  • Order Charges

  • Order Charge Components

  • Order Totals

  • Error Message Icon

  • Order Header Error Messages

  • Document References

Details are extensive. Here's some example data from part of the Step Instances section.

DOO_PROCESS_ INSTANCE_ID STEP_ID STEP_NUMBER_NAME TASK_NAME STEP_INSTANCE_ID TASK_INSTANCE_ID GROUP_ID STEP_ACTIVE STEP_STATUS

300100087585425

213

[1300] Create Invoice

Invoice

300100087585434

300100087585430

300100087585407

ACTIVE

NOT_STARTED

300100087585425

214

[1400] Wait for Invoice

Invoice

300100087585435

300100087585430

300100087585407

ACTIVE

NOT_STARTED

300100087585425

208

[800] Wait for Procurement

Procure

300100087585436

300100087585431

300100087585407

ACTIVE

NOT_STARTED

300100087585425

209

[900] Create Reservation

Reserve

300100087585437

300100087585428

300100087585407

INACTIVE

NOT_STARTED

300100087585425

210

[1000] Create Shipment Request

Ship

300100087585438

300100087585429

300100087585407

INACTIVE

NOT_STARTED

300100087585425

211

[1100] Wait for Shipment Advice

Ship

300100087585439

300100087585429

300100087585407

INACTIVE

NOT_STARTED

300100087585425

204

[400] Pause

Pause

300100087585440

300100087585426

300100087585407

INACTIVE

NOT_STARTED

300100087585425

205

[500] Create Back to Back Shipment Request

Ship Back-to-Back Goods

300100087585441

300100087585433

300100087585407

INACTIVE

NOT_STARTED

300100087585425

206

[600] Wait for Back to Back Shipment Advice

Ship Back-to-Back Goods

300100087585442

300100087585433

300100087585407

INACTIVE

NOT_STARTED

300100087585425

201

[100] Schedule

Schedule

300100087585444

300100087585427

300100087585407

ACTIVE

COMPLETED

300100087585425

203

[300] Request Supply

Supply Orchestration

300100087585445

300100087585432

300100087585407

INACTIVE

NOT_STARTED

300100087585446

213

[1300] Create Invoice

Invoice

300100087585455

300100087585451

300100087585413

ACTIVE

NOT_STARTED

300100087585446

214

[1400] Wait for Invoice

Invoice

300100087585456

300100087585451

300100087585413

ACTIVE

NOT_STARTED

300100087585446

208

[800] Wait for Procurement

Procure

300100087585457

300100087585452

300100087585413

ACTIVE

NOT_STARTED

300100087585446

209

[900] Create Reservation

Reserve

300100087585458

300100087585449

300100087585413

INACTIVE

NOT_STARTED

300100087585446

210

[1000] Create Shipment Request

Ship

300100087585459

300100087585450

300100087585413

INACTIVE

NOT_STARTED

300100087585446

211

[1100] Wait for Shipment Advice

Ship

300100087585460

300100087585450

300100087585413

INACTIVE

NOT_STARTED

300100087585446

204

[400] Pause

Pause

300100087585461

300100087585447

300100087585413

INACTIVE

NOT_STARTED

300100087585446

205

[500] Create Back to Back Shipment Request

Ship Back-to-Back Goods

300100087585462

300100087585454

300100087585413

INACTIVE

NOT_STARTED

300100087585446

206

[600] Wait for Back to Back Shipment Advice

Ship Back-to-Back Goods

300100087585463

300100087585454

300100087585413

INACTIVE

NOT_STARTED

300100087585446

201

[100] Schedule

Schedule

300100087585465

300100087585448

300100087585413

ACTIVE

COMPLETED

300100087585446

203

[300] Request Supply

Supply Orchestration

300100087585466

300100087585453

300100087585413

INACTIVE

NOT_STARTED

300100087585467

213

[1300] Create Invoice

Invoice

300100087585476

300100087585472

300100087585419

ACTIVE

NOT_STARTED

300100087585467

214

[1400] Wait for Invoice

Invoice

300100087585477

300100087585472

300100087585419

ACTIVE

NOT_STARTED

300100087585467

208

[800] Wait for Procurement

Procure

300100087585478

300100087585473

300100087585419

ACTIVE

NOT_STARTED

300100087585467

209

[900] Create Reservation

Reserve

300100087585479

300100087585470

300100087585419

INACTIVE

NOT_STARTED

300100087585467

210

[1000] Create Shipment Request

Ship

300100087585480

300100087585471

300100087585419

INACTIVE

NOT_STARTED

300100087585467

211

[1100] Wait for Shipment Advice

Ship

300100087585481

300100087585471

300100087585419

INACTIVE

NOT_STARTED

300100087585467

204

[400] Pause

Pause

300100087585482

300100087585468

300100087585419

INACTIVE

NOT_STARTED

300100087585467

205

[500] Create Back to Back Shipment Request

Ship Back-to-Back Goods

300100087585483

300100087585475

300100087585419

INACTIVE

NOT_STARTED

300100087585467

206

[600] Wait for Back to Back Shipment Advice

Ship Back-to-Back Goods

300100087585484

300100087585475

300100087585419

INACTIVE

NOT_STARTED

300100087585467

201

[100] Schedule

Schedule

300100087585486

300100087585469

300100087585419

ACTIVE

COMPLETED

300100087585467

203

[300] Request Supply

Supply Orchestration

300100087585487

300100087585474

300100087585419

INACTIVE

NOT_STARTED

Get a Health Check

Run a test to scan through your database and identify problems across sales orders, then display a a list of sales order that are in error.

  1. On the Diagnostic Dashboard page, in the Search for Tests area, enter the value, then click Search.

    Attribute Value

    Test Name

    Order Management Health Check

  2. In the Select column, add a check mark mark, then click Add to Run.

  3. In the Choose Tests to Run and Supply Inputs area, in the Input Status column, click the icon.

  4. In the Input Parameters dialog, set the date range, then click OK.

  5. Click Run.

  6. In the Diagnostic Test Run Status area, click View > Refresh, then examine the values.

  7. Refresh the view until Execution Status displays Completed.

  8. In the Order Management Health Check row, click the icon in the Report column.

    Your browser displays the report in a separate tab.

  9. Examine the results. For example.

    • Pending recovery for the order

    • Changes to sales order not successfully processed

    • Order lines locked by fulfillment tasks

    • Order lines locked by shipping tasks

    • Order lines that encountered problems while waiting for error recovery

    • Order lines that are at the Await Billing status even after being billed

    • Order lines that are missing references

    • Recover actions not available in Order Management work area but line has an error

    • Unstable sales orders

    • Performance of Order Management

Get Help From My Oracle Support

Use the My Oracle Support website at support.oracle.com to troubleshoot a range of problems.

Here are some articles you might find useful. Each of the master notes organize and references a number of other support notes. Use the master notes as a starting point to troubleshoot problems.

Article Description

Master Note - Order Promising and Collections (Doc ID 2649499.1)

Troubleshoot problems with promising, availability, collections, and so on.

Master Note - Transforming Data on Sales Orders Using Transformation Rules (Doc ID 2675921.1)

Troubleshoot problems with transformation that aren't already described in the Transformation Rules topic.

Master Note - Importing Data using FBDI (Doc ID 2665940.1)

Troubleshoot problems with import that aren't already described in the Import section of the Implementing Order Management book.

Master Note - Applying and Releasing Holds (Doc ID 2000460.1)

Troubleshoot problems with applying and releasing holds on sales orders.

Order Management - Common Errors Raised (Doc ID 2260134.1)

Take action depending on the error you encounter.

Progress Fulfillment Lines Where Status is - Awaiting Billing (Doc ID 2322271.1)

Learn how to fix lines that are stuck in the Awaiting Billing status.

Progress Fulfillment Lines Where the Line is Locked (Doc ID 2317580.1)

Learn how to unlock lines that are locked, depending on whether the status is Not Started, Scheduled, Reserved, Shipped, or Awaiting Billing.

Details

Troubleshoot Order Management Cloud

Fix problems that occur in your Order Management set ups.

Some solutions use SQL to query the Order Management database. For details about how to query, see the Use SQL to Query Order Management Data topic.

Setup

Trouble Shoot

I use the Manage Hold Codes page in the Setup and Maintenance work area. When attempting to add a service on the Services tab, the Select and Add: Services dialog doesn't display the service I need. For example, it displays the Create Shipping service but not the Update Shipping service.

Use the Manage Task Types page to specify the tasks and services that you can choose for the hold. You must set the Hold Enabled option to make the service display on the Services tab. For details, see the Set Up Task Types for Holds topic.

I go to the Manage Order Lookups page in the Setup and Maintenance work area, but I can't add a lookup code that's longer than 30 characters.

I need more characters to accurately describe the code.

The purpose of the Lookup Code attribute is to provide a quick way to scan all the codes. Use the Meaning or Description attributes to provide more detail.

The same situation applies for other objects, such as the validation rule set in a processing constraint. Most of these objects include a code or short name, but also a description that you can use to elaborate.

I use the ImportSalesOrder web service to import values for the Scheduled Ship Date and Scheduled Arrival Date attributes of each sales order.

However, Order Management replaces the imported values with the value of the Requested Ship Date attribute. It replaces the values when it updates the sales order status.

If you use Global Order Promising to schedule your sales order, then create a business rule that sets the Override Schedule attribute to Yes. This attribute instructs Global Order Promising not to schedule the dates but instead to use whatever dates you already have.

For an example rule, see the Set the Default Value for Scheduled Ship Date topic.

The Category area of the Edit Extensible Flexfield page doesn't have any rows, so I can't edit the category or category details, such as associated contexts and pages.

Run the Publish Extensible Flexfield Attributes scheduled process. For details, see the Publish the Extensible Flexfield subtopic in the Set Up Extensible Flexfields in Order Management topic.

I go to the Manage Administrator Profile Values page in the Setup and Maintenance work area, then search the Profile Display Name attribute for Display Currency.

But the Profile Value attribute in the Profile Values area of the search results doesn't have any values that I can choose.

This problem usually happens when you haven't collected currencies.

Go to the Plan Inputs work area and do the Collect Planning Data task.

  • Set Source System to OPS.

  • Set Collection type to Targeted

  • Move the Currencies reference entity to the Selected Entities list.

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

Verify that you collected currency data.

select
  *
from
  msc_xref_mapping
where
  entity_name like 'CURRENC%'

select
  *
from
  msc_currencies_tl

For details, see the Use SQL to Query Order Management Data topic.

Order Entry

Trouble Shoot

I create a sales order in the Order Management work area. I search for, then add an item on the catalog line, but the line displays an error message.

No data was retrieved

  • Make sure enough stock is available in inventory to reserve and finish the transaction. See the Oracle SCM Cloud Using Inventory Management book on My Oracle Support.

  • Make sure you correctly set up your sourcing rules and ATP rules. Here's some resources.

    • Configure Global Order Promising section in the Quick Start for Implementing Order-to-Cash topic.

    • Defining a Basic Item Sourcing Rule and ATP Rule (Document 2207137.1) on My Oracle Support.

  • Make sure you collected on-hand availability. See article Collecting On Hand Inventory Levels for Scheduling purposes (Document 2207161.1) on My Oracle Support.

I click Additional Information on the order header or order line when creating a sales order in the Order Management work area, then encounter an error that's similar to. . .

ADF_FACES-60097:For more information, please see the server's error log for an entry beginning with: ADF_FACES-60096:Server exception during PPR

This problem occurs when you include a space in the Code attribute of the extensible flexfield segment.

Remove the space from the Code attribute, deploy, then publish the extensible flexfield. For details, see the Guidelines for Setting Up Extensible Flexfields in Order Management topic.

One of my users encounters an error while creating a sales order.

Orchestration process 300000001288069 for order was not started because it is not deployed or the server is unavailable.

This problem occurs when you create or modify an orchestration process but don't deploy it or when the server is down.

Wait for the server to come back online. If the problem persists after the server is available, then deploy the orchestration process. For details, see the Deploy Orchestration Process topic.

Order Management creates a new sales order revision every time we update an attribute.

We use OrderImportService or the Sales Order for Order Hub REST API to import source orders into Order Management.

We have a scheduling application in our fulfillment system that periodically calculates the scheduled ship date, and we use an extensible flexfield on the order line to store the date.

Our integration creates a new sales order revision every time we change the date. We don't want it to create a revision.

Use the Order Fulfillment Response Service instead of OrderImportService or REST API. Order Fulfillment Response Service doesn't create a revision.

For details about Order Fulfillment Response Service, see the Web Services You Can Use to Integrate Order Management topic.

I add my business unit to the Coverage Start Date order management parameter.

Next, I create a sales order, add a coverage item, set the Contract Start Date for the item, then click Submit, but Order Management changes the Contract Start Date in the fulfillment view.

If you add your business unit to the Coverage Start Date order management parameter, then order management uses it to calculate coverage dates.

If you prefer to manually enter the date on the order line, then remove your business unit from the Coverage Start Date order management parameter.

Downstream Fulfillment

Trouble Shoot

I encounter an error.

Data validation failed for the task layer service Create Billing Lines because required data values were not provided. The payment term in the fulfillment line is null. Source Order Information: xxxxxx

This error occurs when the user doesn't set the payment term on the order header or order line, and the customer account setup doesn't set the payment term.

Set the payment term when you set up the account.

Order Management typically sets the payment term from the customer account setup when the user creates a sales order, by default. For details about how to specify the payment term, see the Guidelines for Controlling Customer Details in Order Management topic.

As an alternative, instruct your users to create an order revision, then set the payment term on the order header or order line.

I encounter an error when I run the Import AutoInvoice scheduled process.

You must enter a value in either the Original System Bill-to Customer Reference column or the Bill-to Customer Account Number column.

This error occurs when you set the value instead of the Id during set up.

  1. Sign in with a role you can use to access the Project Financial Management offering.

  2. In the Setup and Maintenance work area, open the task.

    • Offering: Project Financial Management

    • Functional Area: Project Billing Base

    • Task: Manage Transaction Sources

  3. On the Manage Transaction Sources page, in the Name attribute, search for, then open Distributed Order Orchestration.

  4. On the Edit Transaction Source page, in the Customer area, set the option to Id for these attributes.

    • Bill-to Customer

    • Bill-to Address

    • Bill-to Contact

    set the option to Id
  5. Run the Import AutoInvoice scheduled process again.

For details about the scheduled process, see the Guidelines for Implementing Order-to-Cash topic.

I encounter an error message.

Order promising can't schedule the item because the requested date occurs after the order promising horizon.

Set the Requested Ship Date on the sales order so there's enough time to schedule, ship, and deliver the item.

As an alternative.

  1. Go to the Setup and Maintenance work area, then open the Manage Administrator Profile Values task.

  2. Search the Profile Option Code attribute for MSP_GOP_HORIZON_DAYS.

  3. Change the Profile Value attribute so the end of the horizon occurs after the requested ship date.

  4. Collect data and refresh the Order Promising server.

Order Status Doesn't Update to Shipped

Your fulfillment system confirmed shipment, but the order status remains at Awaiting Shipping instead of updating to Shipped.

Its possible that the Send Shipment Advice scheduled process didn't successfully finish. Here's how you can fix the problem.

  1. Resubmit the scheduled process for the shipment that shipped the order.

  2. Wait for the process to finish.

  3. Examine the sales order and confirm the order status is Shipped.

  4. If resubmitting the scheduled processes doesn't fix the problem, then modify your shipment setup.

Modify Your Shipment Setup

To make sure Order Management updates the order status, you must make sure you interface the shipment to inventory, and that the shipment is closed.

For this example, assume Vision Operations (V1) is your inventory organization that fulfills the shipment.

  1. In the Navigator, click Setup and Maintenance.

  2. Identify the ship confirm rule that your inventory organization uses.

    • In the Setup and Maintenance work area, open the task.

      • Offering: Manufacturing and Supply Chain Materials Management

      • Functional Area: Shipping

      • Task: Manage Shipping Parameters

    • Set organization to Vision Operations.

    • On the Manage Shipping Parameters page, notice the value in the Ship Confirm Rule attribute.

      For this example, assume the value is Auto Ship.

       assume the value is Auto Ship.
  3. Modify the ship confirm rule.

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

      • Offering: Manufacturing and Supply Chain Materials Management

      • Functional Area: Shipping

      • Task: Manage Ship Confirm Rules

    • On the Manage Ship Confirm Rules page, search for Auto Ship, then open it for editing.

    • In the Edit Ship Confirm Rule dialog, set values, then click Save and Close.

      Option Value

      Close Shipment

      Enabled

      Defer Sending Inventory Updates to Integrated Applications

      Disabled

      In the Edit Ship Confirm Rule dialog, set values

As an alternative, you can modify the options on the shipment.

  1. In the Navigator, click Inventory Management.

  2. On the Inventory Management page, click Tasks > Show Tasks Shipments > Manage Shipments.

  3. On the Manage Shipments page, search for your shipment, such as 1982596.

  4. In the search results, click the row that contains your shipment, then click Actions > Edit.

  5. On the Edit Shipment page, near the upper right corner, click Actions > Change Ship Confirm Options.

  6. In the dialog that displays, enable and disable the same options you set for the ship confirm rule.

Problem with Converting Currency During Billing

I encounter an error.

The conversion type is invalid.
If the currency of the transaction is the same as the ledger currency, enter User and set CONVERSION_RATE to 1.

This problem happens when you don't set up a value that Order Management can use as the default for the conversion rate type. Order Management uses the conversion rate type when it converts a foreign currency transaction to the ledger currency.

  1. Go to the Setup and Maintenance work area, click Tasks > Search, then search for and open the Manage Administrator Profile Values task.

  2. On the Manage Administrator Profile Values page, search the Profile Option Code attribute for AR_DEFAULT_EXCHANGE_RATE_TYPE.

  3. In the Profile Values area, add a value. Make sure you set the Profile Level attribute to Site.

If you're using an order management extension to do the conversion, then use this extension code instead of setting the profile value.

import oracle.apps.scm.doo.common.extensions.ValidationException;

import oracle.apps.scm.doo.common.extensions.Message;

def orgId = header.getAttribute("BusinessUnitIdentifier");
def buPrimaryLedgerId=getBUPrimaryLedgerId(orgId);
def ledgerCurrCode=getLedgerCurrency(buPrimaryLedgerId);

def headerCurrCode=header.getAttribute("TransactionalCurrencyCode");

if(!headerCurrCode.equalsIgnoreCase(ledgerCurrCode) && header.getAttribute("CurrencyConversionTypeCode")==null){
String messageText = "Currency Conversion Type must be specified on the Order Header when the Sales Order Currency and the Currency associated to the Selling Business Unit is not the same";
List messages = new ArrayList();
messages.add(new Message(Message.MessageType.ERROR, messageText));
ValidationException ex = new ValidationException(messages);
throw ex;
}

Object getBUPrimaryLedgerId(Long orgId) {
def buPrimaryLedgerId;
def bussUnitPVO=context.getViewObject("oracle.apps.financials.commonModules.businessUnits.publicView.BusinessUnitPVO");
def buvc = bussUnitPVO.createViewCriteria();
def buvcRow = buvc.createViewCriteriaRow();
buvcRow.setAttribute("BusinessUnitId",orgId);
def buRowset = bussUnitPVO.findByViewCriteria(buvc, -1);
if(buRowset.hasNext()){
def buRow = buRowset.next();
buPrimaryLedgerId=buRow.getAttribute("PrimaryLedgerId");
}
return buPrimaryLedgerId;
}

Object getLedgerCurrency(String ledgerId) {
def ledgerCurrCode;
def ledgerPVO=context.getViewObject("oracle.apps.financials.generalLedger.ledgers.ledgerDefinitions.publicView.LedgerPVO");
def lvc = ledgerPVO.createViewCriteria();
def lvcRow = lvc.createViewCriteriaRow();
lvcRow.setAttribute("LedgerId",ledgerId);
def lRowset = ledgerPVO.findByViewCriteria(lvc, -1);
if(lRowset.hasNext()){
def ledgerRow = lRowset.next();
ledgerCurrCode=ledgerRow.getAttribute("CurrencyCode");
}
return ledgerCurrCode;
}

Returns

Trouble Shoot

I encounter an error when I attempt to create a return for a closed order line.

This error might occur because the setup in Product Information Management doesn't allow you to return the item.

Assume you must return item AS54888.

  1. Sign in with a privilege you can use to access Product Information Management.

  2. In the Navigator, click Product Management > Product Information Management.

  3. On the Overview page, click Tasks > Manage Items.

  4. On the Manage Items page, search for item AS54888, then open it for editing.

  5. On the Edit Item page, click Specifications > Sales and Order Management.

  6. Set the Returnable attribute to Yes, then click Save and Close.

As an option, run SQL on the Oracle database to confirm the value of the Returnable attribute on the item and the fulfillment line.

SELECT  dfla.source_order_number                ,
        dfla.inventory_item_id                  ,
        dfla.status_code                        ,
        dfla.returnable_flag "Fline Return Flag",
        esib.Item_number                        ,
        esib.Returnable_flag "Item Return Flag"
FROM    doo_fulfill_lines_all dfla,
        egp_system_items_b esib
WHERE   source_order_number                = '&SOURCE_ORDER_NUMBER'
        AND esib.inventory_organization_id = dfla.inventory_organization_id
        AND esib.inventory_item_id         = dfla.inventory_item_idWord' to retain layout.]

I create a sales order in the Order Management work area.

In the Order Lines area, I click Actions > Add Unreferenced Return Lines.

I add an item, set the return line type and reason, then click Add.

But the return line doesn't have a price.

Promote your pricing algorithms. For details, see the Promote Pricing Algorithms Into the Current Release topic.

My return line is stuck in the Awaiting Receiving status.

Run the Send Receipt Confirmation scheduled process.

As an option, set the Source Document Number parameter to the number that identifies the source order that contains the return line. For example, if the source order number is 14052903, then set Source Document Number to 14052903.

Features

Transportation Management

Trouble Shoot

Order Management sends a request to Transportation Management, but the web service between Integration Cloud Service and Transportation Management isn't up and running, so the Order Management work area displays an error icon on the fulfillment line.

Use error recovery to retry the task.

Don't retry the call through Integration Cloud Service because Order Management can't accept an update from Transportation Management while the task is in error.

Transportation Management sends an update to Order Management, but Order Management rejects the update because the fulfillment line isn't on a wait step in the orchestration process, or the orchestration process is already processing another request.

Manually resend the request from Transportation Management.

Sales Agreements

Trouble Shoot

I set the Customer attribute on the order header, but no sales agreements are available in the Sales Agreement attribute on the order header when you create a sales order.

Make sure you set up a sales agreement for the customer and that its active.

The sales agreements that are available on the order header are different from the ones that are available on the order line.

Examine your sales agreement set up. Order Management includes sales agreements on the.

  • Order header that you set up for the customer and are active.

  • Order line that you set up for the customer, are active, and that you specified for the item on the order line.

Error Messages

Message Solution

Pricing did not apply a sales agreement adjustment for charge Sale Price because it cannot find adjustment basis 100010.

Make sure you correctly set up the adjustment basis on the pricing term for the sales agreement.

Pricing did not apply a tier adjustment on the sales agreement for charge Sale Price because it cannot find adjustment basis 100010.

Make sure you correctly set up the adjustment basis on the pricing term that adjusts price according to tiers for the sales agreement.

Pricing did not apply a tier adjustment for the sales agreement to charge Sale Price because it cannot find tier basis 100010.

Make sure you correctly set up the tier basis on the pricing term that adjusts price according to tiers for the sales agreement. Make sure you correctly set up the price element on the tier basis.

For example, you can't use the QP_NET_PRICE price element as the tier basis for a pricing term that references a sales agreement.

Get Details

Here's the SQL you can use to get details about sales agreements that you can set on the order header.

SELECT h.CONTRACT_ID, h.ID, h.MAJOR_VERSION, h.VERSION_TYPE,h.CONTRACT_NUMBER, h.CONTRACT_NUMBER_MODIFIER, h.COGNOMEN CONTRACT_NAME, h.SHORT_DESCRIPTION, h.DESCRIPTION,h.STS_CODE, h.ORG_ID, h.INV_ORGANIZATION_ID, h.CURRENCY_CODE,h.START_DATE, h.END_DATE,
p.OBJECT1_ID1 PRIMARY_PARTY_ID, p.RLE_CODE FROM OKC_K_HEADERS_VL h, OKC_CONTRACT_TYPES_VL t, OKC_K_PARTY_ROLES_VL p
where h.CONTRACT_TYPE_ID=t.CONTRACT_TYPE_ID and h.BUY_OR_SELL='S' and t.CONTRACT_CLASS='AGREEMENT' AND t.INTENT='S' and t.LINE_CLASS='SALES_AGREEMENT' AND h.ID=p.DNZ_CHR_ID(+) AND h.MAJOR_VERSION=p.MAJOR_VERSION(+) AND p.PRIMARY_YN(+)='Y'
and h.STS_CODE='ACTIVE' and h.VERSION_TYPE in ('C','A') and h.TEMPLATE_YN='N' and h.ORG_ID=<BuId> and h.CURRENCY_CODE=<CurrencyCode>
and p.OBJECT1_ID1=<PartyId> and <PricingDate> BETWEEN h.START_DATE AND Nvl(h.END_DATE,<PricingDate>)

Here's the SQL you can use to gets details about sales agreements that you can set on the order line.

SELECT h.CONTRACT_ID, h.ID CHR_ID, l.MAJOR_VERSION, l.VERSION_TYPE, h.CONTRACT_NUMBER, h.CONTRACT_NUMBER_MODIFIER, h.COGNOMEN CONTRACT_NAME, h.SHORT_DESCRIPTION CONTRACT_SHORT_DESCRIPTION, h.DESCRIPTION CONTRACT_DESCRIPTION,l.STS_CODE, h.ORG_ID, h.INV_ORGANIZATION_ID, l.CURRENCY_CODE,l.START_DATE, l.END_DATE, l.UOM_CODE,l.ID LINE_ID, l.LINE_NUMBER, l.ITEM_NAME, l.ITEM_DESCRIPTION,
l.OBJECT1_ID1 ITEM_ID, l.OBJECT1_ID2 ITEM_INV_ORG_ID, p.OBJECT1_ID1 PRIMARY_PARTY_ID, p.RLE_CODE
FROM OKC_K_HEADERS_VL h, OKC_CONTRACT_TYPES_VL t, OKC_K_PARTY_ROLES_VL p, OKC_K_LINES_VL l
where h.CONTRACT_TYPE_ID=t.CONTRACT_TYPE_ID and h.BUY_OR_SELL='S' and t.CONTRACT_CLASS='AGREEMENT' AND t.INTENT='S' and t.LINE_CLASS='SALES_AGREEMENT' AND h.ID=l.DNZ_CHR_ID AND h.MAJOR_VERSION=l.MAJOR_VERSION and l.SOURCE_CODE_CLASS='SALES_AGREEMENT' and l.STS_CODE='ACTIVE' AND h.ID=p.DNZ_CHR_ID(+) AND h.MAJOR_VERSION=p.MAJOR_VERSION(+) AND p.PRIMARY_YN(+)='Y'
-- and h.STS_CODE='ACTIVE' and h.VERSION_TYPE in ('C','A') and h.TEMPLATE_YN='N' and h.ORG_ID=<BuId> and h.CURRENCY_CODE=<CurrencyCode> and l.OBJECT1_ID1=<ItemId> and l.OBJECT1_ID2=<InvOrgId> and l.UOM_CODE=<UomCode>
and <PricingDate> BETWEEN l.START_DATE AND Nvl(l.END_DATE,<PricingDate>)

Order Management Extensions

XmlSlurper

I receive a response payload in XML format when I use a web service.

<ORACLE_INTEGRATION_MESSAGE xmlns="http://xmlns.oracle.com/oih/oracle_integration_message">
<DOCUMENT_NAME>STORE_PAYMENT_TRANSACTION</DOCUMENT_NAME>
<DOCUMENT_NUMBER>99999</DOCUMENT_NUMBER>
<DOCUMENT_TYPE>NEW_PAYMENT</DOCUMENT_TYPE>
<FROM_SYSTEM>AR</FROM_SYSTEM>
<TO_SYSTEM>STORE</TO_SYSTEM>
<PAYLOAD>
<PARAMETERLIST>
<!-- core mandatory attributes -->
<PARAMETER>
<NAME>GEC_SET_ID</NAME>
<VALUE>46777</VALUE>
</PARAMETER>
<PARAMETER>
<NAME>TRANSACTION_ID</NAME>
<VALUE>36787503</VALUE>
</PARAMETER>
</PARAMETERLIST>
</PAYLOAD>
</ORACLE_INTEGRATION_MESSAGE>

I have to parse this response in an order management extension. I attempt to import the XmlSlurper library to do the parse but the order management extension displays an error.

The use of this class or type is not allowed: groovy.util.XmlSlurper

To fix this problem, see the Extract Details section in the Troubleshoot Problems with Web Services topic.

Extension Errors Out When Not Using English

We deploy Order Management in a language that isn't English, such as Japanese. I set the SetName attribute to Common Set in an extension.

vcrow.setAttribute("SetName", "Common Set");

I get an error when I submit the sales order.

Error executing Extended Order Type-AR Trns Type in event On Start of Submission Request: oracle.jbo.JboException: JBO-29000: Unexpected exception caught: java.lang.NullPointerException, message = Cannot invoke method getAttribute () on null object. (DOO-2685874) '

This problem occurs because Common Set might not be available for your language. Instead, you can set the SetCode attribute to COMMON.

vcrow.setAttribute("SetCode", "COMMON");

For an example of this usage, see the //Function to get Billing Transaction Type code in subtopic Set the Billing Transaction Type According to Order Type, in topic Code Examples and Snippets for Order Management Extensions.

Performance

Trouble Shoot

Performance decreases each time I add an order line to a sales order that I create or edit in the Order Management work area. For example, I add 25 order lines.

  • The first 15 requires about 1 second to add each line.

  • The 21st line requires 10 seconds.

  • The 22nd line requires 12 seconds.

  • The 25th line requires 22 seconds.

I save the order, requery it, then add the 26th line, which requires 2 seconds. To avoid the problem, I save and requery the order each time I add 15 more lines. However, I have over 100 lines to add.

This problem typically occurs because you defined a pretransformation rule but didn't test to make sure the attribute value was empty before doing the transformation. So the rule examines every row in the sales order, including rows that the rule already evaluated, instead of evaluating only the rows that don't contain a value.

Make sure the attribute value that you transform in a pretransformation rule is empty before you set the value. For details, see the Manage Pretransformation Rules topic.

Fix Connection Problems with Source Systems

Troubleshoot an error message that indicates Order Management Cloud can't connect to a source system, such as Oracle Configure, Price, and Quote Cloud.

  1. In the Navigator, click Order Management.

  2. On the Overview page, click Tasks > Manage Order Orchestration Messages.

  3. On the Manage Order Orchestration Messages page, set the Order Orchestration Function attribute to Send Event Notification, then click Search.

  4. Examine the results.

    • Make sure the search results displays an entry that includes the same URL you specified in the Connector URL attribute of page Manage Connector Details. For details about this attribute, see the Integrate Order Management with Source Systems topic.

    • Make sure the URL correctly identifies the connector that resides on the source system. To do this, sign into your source system, then examine the connector services that are running.

    • Wait a minute for the log to refresh, requery the Order Orchestration Messages page, then examine the search results again to determine whether the connection successfully restarted. A network error or some other problem might cause the connection to momentarily fail. If the connection restarted successfully, then the list will include details about the events that are associated with the connector URL.

Troubleshoot Problems with Web Services

Fix problems that occur in your Order Management implementation that involve web services.

No Matching Row

Assume you use a web service to import a sales order. The payload includes. . .

<ns2:ProductNumber>BIGSTORE1111</ns2:ProductNumber>
<ns2:InventoryOrganizationIdentifier>300000001384059</ns2:InventoryOrganizationIdentifier>

. . .and you encounter error. . .

An order was not created because no matching row for attribute ProductNumber with the value BIGSTORE1111 was found for the source order with the following details: source order BIGSTORE0007, source order line 2, source order schedule 2. Check the attribute value, and resubmit the order.

The No Matching Row error typically occurs because the Oracle database doesn't contain the same value that your import contains. In this example, your import inventory item isn't defined in the Oracle database or isn't associated with the Inventory Organization that the web service payload specifies.

Use SQL to query the Oracle database.

SELECT HOU.ORGANIZATION_ID,
  HOUTL.NAME,
  HOUCL.CLASSIFICATION_CODE
FROM HR_ALL_ORGANIZATION_UNITS_F HOU,
  HR_ORGANIZATION_UNITS_F_TL HOUTL,
  HR_ORG_UNIT_CLASSIFICATIONS_F HOUCL
WHERE 
  HOU.ORGANIZATION_ID=HOUTL.ORGANIZATION_ID AND
  HOU.ORGANIZATION_ID =HOUCL.ORGANIZATION_ID AND
  HOUCL.CLASSIFICATION_CODE = 'INV'
ORDER BY 
  HOUTL.NAME;

The query returns. . .

ORGANIZATION_ID NAME CLASSIFICATION_CODE

300000001286109

BIGSTORE Item Org

INV

300000001286592

BIGSTORE_CN_DC1

INV

300000001286615

BIGSTORE_SG_DC1

INV

300000001286262

BIGSTORE_US_MFG1

INV

300000001286412

BS Master Inventory Org

INV

300000001286439

BS Retail Inventory Org

INV

Run another query to get the inventory item that's associated with the inventory organization.

SELECT 
  ItemPEO.INVENTORY_ITEM_ID,
  ItemPEO.ORGANIZATION_ID,
  HOUTL.NAME,
  ItemPEO.ITEM_NUMBER,
  ItemPEO.INVENTORY_ITEM_STATUS_CODE
FROM EGP_SYSTEM_ITEMS_B ItemPEO,
  HR_ORGANIZATION_UNITS_F_TL HOUTL
where
 HOUTL.ORGANIZATION_ID = ItemPEO.ORGANIZATION_ID and
 ItemPEO.ITEM_NUMBER = 'BIGSTORE1111';

The query returns. . .

INVENTORY_ITEM_ID ORGANIZATION_ID NAME ITEM_NUMBER INVENTORY_ITEM_STATUS_CODE

300000001292032

300000001286109

BIGSTORE Item Org

BIGSTORE1111

Active

The payload sent InventoryOrganizationIdentifier>300000001384059<, but the Oracle database contains 300000001286109 for ORGANIZATION_ID.

Here's the correct value to send.

<ns2:ProductNumber>BIGSTORE1111</ns2:ProductNumber>
<ns2:InventoryOrganizationIdentifier>300000001286109</ns2:InventoryOrganizationIdentifier>

No Matching Row for Inventory Organization

I attempt to import a source order. The import payload includes. . .

<ns2:ProductNumber>BIGSTORE1111</ns2:ProductNumber> <ns2:InventoryOrganizationIdentifier>300000001384059</ns2:InventoryOrganizationIdentifier>

. . .but I encounter an error during import. . .

An order was not created because no matching row for attribute ProductNumber with the value BIGSTORE1111 was found for the source order with the following details: source order BIGSTORE0007, source order line 2, source order schedule 2. Check the attribute value, and resubmit the order.

This problem occurs because the inventory organization in your import payload isn't defined in the Oracle database.

To fix this problem, first get the list of inventory organizations that the Oracle database currently contains. Run this SQL.

SELECT HOU.ORGANIZATION_ID,
  HOUTL.NAME,
  HOUCL.CLASSIFICATION_CODE
FROM HR_ALL_ORGANIZATION_UNITS_F HOU,
  HR_ORGANIZATION_UNITS_F_TL HOUTL,
  HR_ORG_UNIT_CLASSIFICATIONS_F HOUCL
WHERE
  HOU.ORGANIZATION_ID=HOUTL.ORGANIZATION_ID AND
  HOU.ORGANIZATION_ID =HOUCL.ORGANIZATION_ID AND
  HOUCL.CLASSIFICATION_CODE = 'INV'
ORDER BY
  HOUTL.NAME;

Assume the query returns. . .

ORGANIZATION_ID NAME CLASSIFICATION_CODE

300000001286109

BIGSTORE Item Org

INV

300000001286592

BIGSTORE_CN_DC1

INV

300000001286615

BIGSTORE_SG_DC1

INV

300000001286262

BIGSTORE_US_MFG1

INV

300000001286412

BS Master Inventory Org

INV

300000001286439

BS Retail Inventory Org

INV

Next, get details for BIGSTORE1111, which is the inventory organization that your import payload specifies.

SELECT
  ItemPEO.INVENTORY_ITEM_ID,
  ItemPEO.ORGANIZATION_ID,
  HOUTL.NAME,
  ItemPEO.ITEM_NUMBER,
  ItemPEO.INVENTORY_ITEM_STATUS_CODE
FROM EGP_SYSTEM_ITEMS_B ItemPEO,
  HR_ORGANIZATION_UNITS_F_TL HOUTL
where
 HOUTL.ORGANIZATION_ID = ItemPEO.ORGANIZATION_ID and
 ItemPEO.ITEM_NUMBER = 'BIGSTORE1111';

Assume the query returns. . .

INVENTORY_ITEM_ID ORGANIZATION_ID NAME ITEM_NUMBER INVENTORY_ITEM_STATUS_CODE

300000001292032

300000001286109

BIGSTORE Item Org

BIGSTORE1111

Active

Next, fix your import payload. Change the current value. . .

<ns2:ProductNumber>BIGSTORE1111</ns2:ProductNumber> <ns2:InventoryOrganizationIdentifier>300000001384059</ns2:InventoryOrganizationIdentifier>

. . .to the value that the query returned in column ORGANIZATION_ID. . .

<ns2:ProductNumber>BIGSTORE1111</ns2:ProductNumber> <ns2:InventoryOrganizationIdentifier>300000001286109</ns2:InventoryOrganizationIdentifier>

Attribute ORG_ID Isn't Valid

Assume you use enterprise business message ProcessSalesOrderFulfillmentEBM to create a sales order and encounter this error.

Error Message: {http://xmlns.oracle.com/apps/scm/doo/decomposition/receiveTransform/transformSalesOrder/DooDecompTransformSalesOrderComposite}ProcessSalesOrderFulfillmentResponseEBM
Fault ID default/DooDecompTransformSalesOrderComposite!11.1.5.0.0*soa_7289e448-8b78-408f-af5c-116da7e1d9d2/DecompositionProcess/70017-BpThw8-BpSeq55.49-2
Fault Time Sep 16, 2013 11:24:34 AM
Non Recoverable Business Fault :1 env:Server Attribute ORG_ID has invalid value 300000000562209 for service ProcessOrderValidation.

This error occurs because the payload specifies value 300000000562209 for attribute ORG_ID, but the Order Management database doesn't contain this value. The payload also doesn't correctly specify attribute BusinessUnitReference and attribute BusinessUnitIdentification.

To fix this problem, query the database.

SELECT
  FABUV.BU_ID,
  FABUV.BU_NAME,
  FABUV.DEFAULT_SET_ID,
  IOP.ORGANIZATION_ID,
  IOP.ORGANIZATION_CODE,
  HAOU.NAME
FROM
  INV_ORG_PARAMETERS IOP,
  HR_ALL_ORGANIZATION_UNITS HAOU,
  FUSION.FUN_ALL_BUSINESS_UNITS_V FABUV
WHERE
  HAOU.ORGANIZATION_ID = IOP.ORGANIZATION_ID AND
  IOP.BUSINESS_unit_id = FABUV.BU_ID
ORDER BY
  IOP.ORGANIZATION_CODE,
  FABUV.BU_ID;

Assume the query returns. . .

BU_ID BU_NAME DEFAULT_SET_ID ORGANIZATION_ID ORGANIZATION_CODE NAME

300000001110916

USA1 Business Unit

300000001111782

300000001201056

001

Seattle Warehouse

300000001110916

USA1 Business Unit

300000001111782

300000003887955

999

External Item Organization

300000001130053

USA2 Business Unit

300000001111783

300000001201066

002

Atlanta Warehouse

300000001130053

USA2 Business Unit

300000001111783

300000001130184

003

Chicago Distribution Center

300000001341196

China Business Unit

300000001341955

300000004396135

050

Shanghai Distribution Center

300000001341196

China Business Unit

300000001341955

300000004396139

051

Shenzhen Warehouse

Assume you're attempting to create a sales order for Chicago Distribution Center, which is in USA2 Business Unit, and attribute BU_ID for this business unit contains 300000001130053. To fix the problem, you must define these attributes. Add this code to you payload.

<corecom:BusinessUnitReference>
             <corecom:BusinessUnitIdentification>
              <!-- BUSINESS UNIT  ID-->
                 <corecom:AlternateObjectKey>
                     <corecom:ID>300000001130053</corecom:ID>
                 </corecom:AlternateObjectKey>
             </corecom:BusinessUnitIdentification>
  </corecom:BusinessUnitReference>

No Order Created, but No Error Reported

I send a payload to web service ReceiveOrderRequest to request to create a sales order.

<ns1:OrchestrationOrderRequest xmlns:ns2="http://xmlns.oracle.com/apps/scm/doo/decomposition/receiveTransform/receiveSalesOrder/model/">
  <ns2:SourceTransactionIdentifier>PMC-070716-013</ns2:SourceTransactionIdentifier>
  <ns2:SourceTransactionNumber>PMC-070716-013</ns2:SourceTransactionNumber>
  <ns2:BuyingPartyName>JAH CUSTOMER SHARED</ns2:BuyingPartyName>
  <ns2:BuyingPartyContactName>Peter Pan</ns2:BuyingPartyContactName>
  <ns2:TransactionalCurrencyCode>USD</ns2:TransactionalCurrencyCode>
  <ns2:TransactionOn>2016-07-06T02:12:01</ns2:TransactionOn>
  <ns2:RequestingBusinessUnitIdentifier>US_W_888_BU</ns2:RequestingBusinessUnitIdentifier>
  <ns2:PartialShipAllowedFlag>false</ns2:PartialShipAllowedFlag>
  <ns2:OrchestrationOrderRequestLine>

The request seems to run successfully but the Order Management work area doesn't display the sales order. You run a flow trace in Oracle Enterprise Manager, which displays. . . .

<bpelFault><faultType>0</faultType><selectionFailure xmlns="http://docs.xyz.org/wsbpel/2.0/process/executable"></selectionFailure></bpelFault>

. . .and. . .

Exception is thrown because the from-spec at line 1,616 is evaluated to be empty

. . .and. . .

AssignEILAMServiceInput (faulted)

<details>
  <from-spec>
    <from>$inputVariable.payload/client:OrchestrationOrderRequest/ns4:SourceTransactionSystem</from>
  </from-spec>
  <variable>
    <message>inputVariable</message>
  </variable>
  <fault>
    <bpelFault>
      <faultType>0</faultType>
      <selectionFailure/>
    </bpelFault>
  </fault>
</details>

For example.

Screen print of flow trace interface

The problem occurs because your request payload doesn't specify the source system. To fix it, add attribute SourceTransactionSystem to your payload.

<ns2:SourceTransactionSystem>ORA_BM_CPQ</ns2:SourceTransactionSystem>

For example.



<ns1:OrchestrationOrderRequest xmlns:ns2="http://xmlns.oracle.com/apps/scm/doo/decomposition/receiveTransform/receiveSalesOrder/model/">
  <ns2:SourceTransactionIdentifier>PMC-070716-013</ns2:SourceTransactionIdentifier>
  <ns2:SourceTransactionNumber>PMC-070716-013</ns2:SourceTransactionNumber>

  <ns2:SourceTransactionSystem>ORA_BM_CPQ</ns2:SourceTransactionSystem>

  <ns2:BuyingPartyName>GED CUSTOMER SHARED</ns2:BuyingPartyName>
  <ns2:BuyingPartyContactName>Peter Pan</ns2:BuyingPartyContactName>
  <ns2:TransactionalCurrencyCode>USD</ns2:TransactionalCurrencyCode>
  <ns2:TransactionOn>2016-07-06T02:12:01</ns2:TransactionOn>
  <ns2:RequestingBusinessUnitIdentifier>US_WT_DG09_BU</ns2:RequestingBusinessUnitIdentifier>
  <ns2:PartialShipAllowedFlag>false</ns2:PartialShipAllowedFlag>
  <ns2:OrchestrationOrderRequestLine>

For an example that uses flow trace, see the Route Requests from Order Management to Fulfillment Systems topic.

For details about Oracle Enterprise Manager, see https://www.oracle.com/technetwork/oem/enterprise-manager/overview/index.html.

Access Denied

I send a request payload that uses the GetOrderDetails operation of web service OrderInformationService to get order details. . .

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:typ="http://xmlns.oracle.com/apps/scm/doo/decomposition/orderDetailServices/orderInformationService/types/" xmlns:ord="http://xmlns.oracle.com/apps/scm/doo/decomposition/orderDetailServices/orderInformationService/"> 
<soapenv:Header/> 
<soapenv:Body> 
<typ:GetOrderDetails> 
<!--Zero or more repetitions:--> 
<typ:Order> 
<!--Optional:--> 
<ord:SourceTransactionIdentifier></ord:SourceTransactionIdentifier> 
<!--Optional:--> 
<ord:SourceTransactionSystem>OPS</ord:SourceTransactionSystem> 
<!--Optional:--> 
<ord:SourceTransactionNumber>21018</ord:SourceTransactionNumber> 
<!--Optional:--> 
<ord:SourceTransactionRevision></ord:SourceTransactionRevision> 
<!--Optional:--> 
<ord:IncludeHeaderAndLineAttributesOnly></ord:IncludeHeaderAndLineAttributesOnly> 
</typ:Order> 
</typ:GetOrderDetails> 
</soapenv:Body> 
</soapenv:Envelope>

You use the same user role and password that you use to successfully query and create sales orders in the Order Management work area, but you receive an error response. . .

<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/">
<env:Header/>
<env:Body>
<env:Fault>
<faultcode>env:Server</faultcode>
<faultstring>access denied (oracle.wsm.security.WSFunctionPermission http://server:port/apps/scm/doo/decomposition/orderDetailServices/orderInformationService/OrderInformationService#GetOrderDetails invoke)</faultstring>
</env:Fault>
</env:Body>
</env:Envelope>

This problem occurs because you must use privilege Manage Order Details Web Service to access OrderInformationService, but the user role you used doesn't include this privilege.

To fix the problem, assign privilege Manage Order Details Web Service (DOO_MANAGE_ORDER_DETAILS_WEB_SERVICE_PRIV) to your user role. For details, see the Manage User Roles and Privileges in Order Management topic.

Release Hold Web Service Doesn't Release Hold

I try to release a credit check hold through a web service, but the service returns a failed status. For example, the payload fails even when I use different reason codes.

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" 
xmlns:dood="http://xmlns.oracle.com/apps/scm/doo/decomposition/orderDetailServ 
ices/DooDecompOrderDetailSvcComposite"> 
   <soapenv:Header/> 
   <soapenv:Body> 
      <dood:ReleaseHoldProcessRequest> 
         <!--1 or more repetitions:--> 
         <dood:ReleaseHoldRequestParams> 
            <dood:SourceOrderSystem>OPS</dood:SourceOrderSystem> 
            <dood:SourceOrderId>300000005191106</dood:SourceOrderId> 
            <dood:SourceLineId>300000005191107</dood:SourceLineId> 
            <dood:SourceHoldCode>SR_TEST</dood:SourceHoldCode> 
           
<dood:HoldReleaseReasonCode>ORA_CREDIT_CHK_FAIL_RESOLVED</dood:HoldReleaseReasonCode> 
            <dood:HoldReleaseComments>NewTest</dood:HoldReleaseComments> 
         </dood:ReleaseHoldRequestParams> 
      </dood:ReleaseHoldProcessRequest> 
   </soapenv:Body> 
</soapenv:Envelope>

You can't release a credit check hold through a web service. You can release it only in the Order Management work area. Sign into Order Management with a privilege you can use to release the hold, then release it. For details, see the Allow Users to Close Case Folders topic.

Hold Details Not Available

We use the Order Import web service and Receive Order service to import source orders. I need the header details and order line details for holds that Order Management applies as a result of the import. I need to know whether Order Management applies the hold and, if not, why not.

The response from Order Import provides details in the callback for each asynchronous operation. Examine the elements in the response.

ord:ReturnStatus?</ord:ReturnStatus>
<!--Optional:-->
ord:MessageName?</ord:MessageName>
<!--Optional:-->
ord:MessageText?</ord:MessageText>

These elements indicate whether the service successfully processed the sales order or, if not, the errors it encountered and error text.

The RequestHold operation and Release Pause Tasks operation are asynchronous. You must implement the callback to receive a response from them.

Troubleshoot Problems With Order Import

Fix problems that occur in your Order Management implementation during order import.

Problem Solution

I encounter an error message.

Order management did not import source order TEST_NOV21_02 because of the following error: An order was not created due to an unknown error. Check the run time user interface for processing status. Number of orders that did not pass validation: 1. Some of these orders may be available in the order entry user interface.

This problem might occur when the extended amount for the charge components on the coverage line doesn't contain a value.

If your order import includes a coverage item, and if your import data already defines pricing for the item before you do the import, then make sure the extended amount for the charge components on the coverage line contains a value.

Make sure the Duration Header Total attribute on the DOO_ORDER_CHARGE_COMPS_INT tab of the order import template contains a value for each coverage line.

I use OrderImportService to import customer data, including the Contact attribute and the ContactEmail attribute. I use the Customer Data Management page and verify that the import successfully imported contact and contact email. I prefer to manage the contact and contact email for each account on the Manage Customers page, but can't view these attributes on this page.

Manage Customers doesn't support managing contact and contact email for each account.

I encounter an error message.

Order xxx will not be imported due to the following error:
An order was not created due to an unknown error. null. 
Request Id: 1018270 
Batch Name: SOF1 
Source System: OPS 
Order Number: null 
Allow Auto Purge: Y 
Number of orders that were imported: 0. 
Check the run time user interface for processing status. 

Number of orders that did not pass validation: 1. 

Some of these orders may be available in the order entry user interface. Overall Result : ERROR

Set the RollupFlag attribute to N on the DOO_ORDER_CHARGES_INT tab of the order import template.

It takes a long time to create the CSV file when I do file-based data import.

For example, every day I import over 300 sales orders from my source system into Order Management. I can load the header details in the first worksheet with no problems, but after I after import about 1,900 lines from the second worksheet, DOO_ORDER_LINES_ALL_INT, the server performance declines to 15 to 20 seconds delay for each line.

I wait for over an hour but its still processing the lines.

Try this on the computer you're using when you create the CSV file.

  • Install the latest version of Microsoft Visual C++ Redistributable Packages.

  • Disable hardware acceleration in Excel.

  • Disable Excel add-ins that you don't need.

I import a sales order, but then encounter an error when I use the Order Management work area to change an attribute on the order, such as price, date, quantity, and so on.

You cannot save the draft Order because of following error: You cannot edit this Sales Order because you can not modify the Price, Tax Or the Shipping Charge. You cannot edit this Sale Order because it was created in a different Source System.

Disable the DOO_IMPORTED_DRAFT_HEADER_UPDATE processing constraint.

Note that, if you disable the constraint, and if you import a sales order that you already priced, and if you then use the Order Management work area to change the quantity or any other attribute that affects price, then Order Management doesn't reprice the order.

Problems with Scheduled Processes

Assume you run the Import Sales Orders scheduled process, it finishes running and reports status Error.

For example.

scheduled process Import Sales Orders.

Note.

  1. On the Scheduled Processes page, in Search Results, click the row that's in error.

  2. In the Log and Output area, next to Attachment, click the link.

  3. Open the attachment and examine the error message.

For example.

Request Id: 65735
Batch Name: 10810
Source System: null
Order Number: null
Allow Auto Purge: Y
Order PMC_IMP_161208_002 will not be imported due to the following error: An order was not created because no matching row for attribute ProductNumber with the value AS54888777 was found for the source order with the following details: source order PMC_IMP_161208_002, source order line 1, source order schedule 11. Check the attribute value, and resubmit the order..
Number of orders that were imported: 0. Check the run time user interface for processing status.
Number of orders that did not pass validation: 1. Some of these orders may be available in the order entry user interface.
Overall Result : ERROR

This error occur because data in your order import template isn't correct. For example, ProductNumber contains AS54888777 but the Oracle database contains AS54888. Use SQL to query the Oracle database and identify the correct data to import.

For another example.

Request Id: 65699
Batch Name: 10810
Source System: null
Order Number: null
Allow Auto Purge: Y
Order PMC_IMP_161208_001 will not be imported due to the following error: An order was not created because the value 300,000,001,469,001,777 provided for the attribute SOLD_TO_PARTY_ID is invalid for the source order with the following details: source order PMC_IMP_161208_001. Check the attribute value, and resubmit the order..
Number of orders that were imported: 0. Check the run time user interface for processing status.
Number of orders that did not pass validation: 1. Some of these orders may be available in the order entry user interface.
Overall Result : ERROR

This error occur because the SOLD_TO_PARTY_ID attribute contains 300,000,001,469,001,777 but the Oracle database contains 300000001469001. Use SQL to query the Oracle database and identify the correct data to import.

Problems with Configured Items

You might encounter an error where your import can't find part of a configured item, such as a configuration node. For example, you encounter an error.

Cannot find a matching configuration node for item 12345

A configuration node is part of a configured item. A configure option is an example of a configuration node. This error might occur even if the node exists in the structure of a configured item that includes an instance type of Optional Single Instance. The order import process does a search that validates and creates the structure that it includes in the sales order even if a node, such as Option Classes, is missing in the order import data that defines the structure.

However, if the root of the configured item contains a reference model that you set up as Optional Single Instance, or if its part of an option class, and if the order import data doesn't include the absolute path to the node, then the search won't find the node.

To avoid this problem, use the Product Information Management work area to modify the instance type of the structure from Optional Single Instance to Required Single Instance. Your modification won't affect functional behavior. You must also set order management parameter Use Configurator for Order Import Validation to Yes.

For example, assume the order import data includes M1, M1.M2, M1.M2.SI2, and the Product Information Management includes this structure for a configured item.

M1
|_M2 (Optional Single Instance)
   |_OC1
      |_SI2

The order import search won't find the complete structure, it will create an error during order import, and it will add an entry in the Order Import log that's similar to this entry.

The order import process failed for source order source_order_identifier for the following reason: Cannot find a matching configuration node for item item_number on order line number order_line_number.

where

  • source_order_identifier identifies the source order

  • item_number identifies the item

  • order_line_number identifies the order line

This entry indicates that the search couldn't find a matching configure option in the Optional Single Instance node.

For another example, assume the order import data includes M1, M1.M2, M1.M2.SI1, and the Product Information Management contains this structure.

M1
|_OC1
  |_M2 (Optional Single Instance)
    |_SI1

The order import search will fail in the same way it failed in the first example.

Problems with Cross-References

Can't Find a Cross-Reference Value for an Attribute

I encounter an error on the Manage Order Orchestration Messages page.

A cross-referenced value was not found for attribute CURRENCY_CODE in source system XXXXXXX

You might also encounter this error in the response to your import payload.

<bpelFault>
<faultType>1</faultType>
<processResponse xmlns="http://xmlns.oracle.com/apps/scm/doo/decomposition/receiveTransform/receiveSalesOrder/DooDecompReceiveOrderComposite">
<part name="payload">
<processResponse xmlns:client="http://xmlns.oracle.com/apps/scm/doo/decomposition/receiveTransform/receiveSalesOrder/DooDecompReceiveOrderComposite" xmlns="http://xmlns.oracle.com/apps/scm/doo/decomposition/receiveTransform/receiveSalesOrder/DooDecompReceiveOrderComposite">
<client:OrchestrationOrderResponse>
<ns4:SourceTransactionNumber xmlns:ns4="http://xmlns.oracle.com/apps/scm/doo/decomposition/receiveTransform/receiveSalesOrder/model/">HITECH0001</ns4:SourceTransactionNumber>
<ns4:SourceTransactionIdentifier xmlns:ns4="http://xmlns.oracle.com/apps/scm/doo/decomposition/receiveTransform/receiveSalesOrder/model/">36466323</ns4:SourceTransactionIdentifier>
<ns4:SourceTransactionSystem xmlns:ns4="http://xmlns.oracle.com/apps/scm/doo/decomposition/receiveTransform/receiveSalesOrder/model/">ORA_BM_CPQ</ns4:SourceTransactionSystem>
<ns4:ReturnStatus xmlns:ns4="http://xmlns.oracle.com/apps/scm/doo/decomposition/receiveTransform/receiveSalesOrder/model/">ERROR</ns4:ReturnStatus>
<ns4:MessageName xmlns:ns4="http://xmlns.oracle.com/apps/scm/doo/decomposition/receiveTransform/receiveSalesOrder/model/">env:Server</ns4:MessageName>
<ns4:MessageDescription xmlns:ns4="http://xmlns.oracle.com/apps/scm/doo/decomposition/receiveTransform/receiveSalesOrder/model/">A cross-referenced value was not found for attribute CURRENCY_CODE in source system ORA_BM_CPQ.</ns4:MessageDescription>
</client:OrchestrationOrderResponse>
</processResponse>
</part>
</processResponse>
</bpelFault>

This problem occurs because the source system, such as CPQ, doesn't require cross references but the Enable Data Cross-Reference option is enabled on the Manage Planning Source Systems page in the Setup and Maintenance work area.

To fix the problem, disable the Enable Data Cross-Reference option.

disable option Enable Data Cross-Reference

Orchestration Message Error

I encounter an error on the Manage Order Orchestration Messages page.

Cross-Referenced Value Not Found for UOM_CODE

My import payload includes. . .

<ns2:OrderedQuantity>1</ns2:OrderedQuantity>
<ns2:OrderedUOMCode>EA</ns2:OrderedUOMCode>

Two reasons might cause this problem.

  • You didn't collect data from the source system for Global Order Promising.

  • Your import payload doesn't include the correct UOM code.

First, in the Setup and Maintenance work area, open the Review Collected Order Reference Data page, click Units of Measure, then search for the unit of measure that your import payload references. If you can't find it, then you must collect data. For details, see the Quick Start to Implement Order-to-Cash topic.

Next, run SQL against the Order Management database.

select
  mai.instance_id,
  mai.instance_code,
  muom.unit_of_measure,
  muom.uom_code
from
  msc_units_of_measure MUOM,
  msc_apps_instances MAI
where
MAI.instance_id = MUOM.SR_Instance_id;

This SQL determines whether the inventory and data collection tables contain the UOM you're importing.

Assume the query returns. . .

INSTANCE_ID INSTANCE_CODE UNIT_OF_MEASURE UOM_CODE

300000000120910

OPS

EA

AbC

Next, run SQL to get the unit of measure that the UOM code references.

SELECT uom_code,
  uom_class,
  base_uom_flag,
  unit_of_Measure,
  description
FROM inv_units_of_measure_B iuomb,
  inv_units_of_measure_tl iuomtl
WHERE iuomb.unit_of_measure_id = iuomtl.unit_of_measure_id
and iuomtl.language = 'US'
ORDER BY UOM_code;

Assume the query returns. . .

UOM_CODE UOM_CLASS BASE_UOM_FLAG UNIT_OF_MEASURE DESCRIPTION

AbC

1

Y

EA

EACH

Modify your input payload so it uses the UOM_CODE that the query returns. For example, replace. . .

<ns2:OrderedQuantity>1</ns2:OrderedQuantity>
<ns2:OrderedUOMCode>EA</ns2:OrderedUOMCode>

. . . with. . .

<ns2:OrderedQuantity>1</ns2:OrderedQuantity>
<ns2:OrderedUOMCode>AbC</ns2:OrderedUOMCode>

As an alternative, modify your input payload or so it uses the OrderedUOM attribute instead of OrderedUOMCode, and references the value from UNIT_OF_MEASURE instead UOM_CODE.

<ns2:OrderedQuantity>1</ns2:OrderedQuantity>
<ns2:OrderedUOM>EA</ns2:OrderedUOM>

Compare Import Data to Oracle Database Data

Query the Oracle database to determine whether your import data meets database requirements.

Assume you run the ProcessOrderRequest operation on the ReceiveOrderRequestService web service at https://server:port/soa-infra/services/default/DooDecompReceiveOrderExternalComposite/ReceiveOrderRequestService.

Assume the header section of the payload includes this code.

<ns1:OrchestrationOrderRequest>
<ns2:BuyingPartyName>XXXXXXXXXX</ns2:BuyingPartyName>
<ns2:BuyingPartyId>7777777777</ns2:BuyingPartyId>

And the order line section of the payload includes this code.

<ns2:OrchestrationOrderRequestLine>
<ns2:BillToCustomerName>ZZZZZZZZZZ</ns2:BillToCustomerName>
<ns2:BillToCustomerIdentifier>8888888888</ns2:BillToCustomerIdentifier>
<ns2:BillToAccountSiteUseIdentifier>9999999999</ns2:BillToAccountSiteUseIdentifier>

Run an SQL query to determine whether these values are correct. For details, see the Use SQL to Query Order Management Data topic.

Here's how you can map.

Attribute in Payload SQL

BuyingPartyName

PARTY_NAME

BuyingPartyId

PARTY_ID

BillToCustomerName

PARTY_NAME

BillToCustomerIdentifier

CUST_ACCOUNT_ID

BillToAccountSiteUseIdentifier

ORIG_SYSTEM_REFERENCE

Error with SOLD_TO_PARTY_ID

Assume you encounter an error.

An order was not created because a value was not provided for the required attribute SOLD_TO_PARTY_ID in the source order with the following details: source order 12345. Provide a value for SOLD_TO_PARTY_ID, and resubmit the order.

Run SQL to identify the correct data you should use.

SELECT  HZ.PARTY_ID                            ,
        CUSTOMERACCOUNTSITEPEO.CUST_ACCOUNT_ID ,
        HZ.PARTY_NAME                          ,
 lOCATIONPEO.ADDRESS_STYLE              ,
 lOCATIONPEO.COUNTRY ||','|| LOCATIONPEO.ADDRESS1 ||','|| LOCATIONPEO.CITY ||','|| LOCATIONPEO.POSTAL_CODE LOCATION       ,
        CUSTOMERACCOUNTSITEPEO.STATUS "Account Site Status"     ,
        CUSTOMERACCOUNTSITEPEO.BILL_TO_FLAG                     ,
        CUSTOMERACCOUNTSITEPEO.SHIP_TO_FLAG                     ,
        CUSTOMERACCOUNTSITEUSEPEO.SITE_USE_CODE                 ,
        CUSTOMERACCOUNTSITEUSEPEO.PRIMARY_FLAG                  ,
        CUSTOMERACCOUNTSITEUSEPEO.STATUS "Cust_Site_Use Status" ,
        CUSTOMERACCOUNTSITEUSEPEO.ORIG_SYSTEM_REFERENCE         ,
        CUSTOMERACCOUNTSITEUSEPEO.CUST_ACCT_SITE_ID             ,
        CUSTOMERACCOUNTSITEPEO.SET_ID
FROM    fusion.HZ_PARTIES HZ                                 ,
        fusion.HZ_PARTY_SITES PartySitePEO                   ,
        fusion.HZ_LOCATIONS LocationPEO                      ,
        fusion.HZ_CUST_ACCT_SITES_ALL CustomerAccountSitePEO ,
        fusion.HZ_CUST_SITE_USES_ALL CustomerAccountSiteUsePEO
WHERE   HZ.PARTY_ID = PARTYSITEPEO.PARTY_ID
        AND
        (PARTYSITEPEO.LOCATION_ID = LOCATIONPEO.LOCATION_ID)
        AND
        (PARTYSITEPEO.PARTY_SITE_ID = CUSTOMERACCOUNTSITEPEO.PARTY_SITE_ID)
        AND
        (CUSTOMERACCOUNTSITEPEO.CUST_ACCT_SITE_ID = CUSTOMERACCOUNTSITEUSEPEO.CUST_ACCT_SITE_ID)
        and upper(HZ.PARTY_NAME) like upper('&CUSTOMER_NAME%')

Error with BILL_TO

Assume you encounter an error.

An order was not created because a value was not provided for the required attribute BILL_TO_CUSTOMER_ID in the source order with the following details: source order XXXXXXXXX, source order line 1, source order schedule 1. Provide a value for BILL_TO_CUSTOMER_ID, and resubmit the order.

Or this error.

An order was not created because a value was not provided for the required attribute BILL_TO_SITE_USE_ID in the source order with the following details: source order XXXXXXXXX, source order line 1, source order schedule 1. Provide a value for BILL_TO_SITE_USE_ID, and resubmit the order.

Then run SQL to identify the correct data you should use.

SELECT  accounts.party_id           ,
        accounts.account_name       ,
        accounts.account_number     ,
        party_sites.party_site_name ,
        sites.cust_acct_site_id     ,
        sites.cust_account_id       ,
        site_uses.site_use_code     ,
        site_uses.primary_flag      ,
        site_uses.site_use_id       ,
        site_uses.location          ,
 locations.ADDRESS1 || ' ' || locations.ADDRESS2 || ' ' || locations.ADDRESS3 || ' ' || locations.ADDRESS4 || ' ' || locations.CITY || ' ' || locations.POSTAL_CODE || ' ' || locations.STATE ||
 ' ' || locations.country , 
        territory.territory_short_name
FROM    fusion.hz_cust_accounts accounts       ,
        fusion.hz_cust_acct_sites_all sites    ,
        fusion.hz_party_sites party_sites      ,
        fusion.hz_cust_site_uses_all site_uses ,
        fusion.hz_locations locations          ,
        fusion.fnd_territories_vl territory
WHERE   sites.cust_account_id           = accounts.cust_account_id
        AND party_sites.party_site_id   = sites.party_site_id
        AND site_uses.cust_acct_site_id = sites.cust_acct_site_id
        AND locations.location_id       = party_sites.location_id
        --    AND site_uses.site_use_code = 'BILL_TO'
        --    AND site_uses.primary_flag = 'Y'
        AND site_uses.STATUS  = 'A'
        AND accounts.STATUS   = 'A'
        AND sites.STATUS      = 'A'
        AND locations.COUNTRY = territory.territory_code
        AND EXISTS
        (
                SELECT  1
                FROM    fusion.fnd_setid_assignments
                WHERE   set_id                   = sites.set_id
                        AND reference_group_name = 'HZ_CUSTOMER_ACCOUNT_SITE'
                        AND determinant_type     = 'BU'
        )
        and upper(accounts.account_name ) like upper('&CUSTOMER_NAME%')

Example SQL Output

Assume SQL returns results.

PARTY_ID ACCOUNT_ID PARTY_NAME SITE_USE_CODE ORIG_SYSTEM_REFERENCE

300000001469001

300000001469002

Computer Service and Rentals

SHIP_TO

300000001469006

300000001469001

300000001469002

Computer Service and Rentals

BILL_TO

300000001469016

300000001469001

300000001469002

Computer Service and Rentals

BILL_TO

300000002494053

300000001469001

300000001469002

Computer Service and Rentals

BILL_TO

300000002494059

300000001469001

300000001469002

Computer Service and Rentals

SHIP_TO

300000002494060

Correct the Problem

Here's the mapping you can use to correct the problem.

Attribute in Payload Value from SQL

BuyingPartyName

Computer Service and Rentals

BuyingPartyId

300000001469001

BillToCustomerName

Computer Service and Rentals

BillToCustomerIdentifier

300000001469002

BillToAccountSiteUseIdentifier

300000001469016

Here's the corrected payload for the order header . . .

<ns1:OrchestrationOrderRequest>
<ns2:BuyingPartyName>Computer Service and Rentals</ns2:BuyingPartyName>
<ns2:BuyingPartyId>300000001469001</ns2:BuyingPartyId>

. . . and the order line. . .

<ns2:OrchestrationOrderRequestLine>
<ns2:BillToCustomerName>Computer Service and Rentals</ns2:BillToCustomerName>
<ns2:BillToCustomerIdentifier>300000001469002</ns2:BillToCustomerIdentifier>
<ns2:BillToAccountSiteUseIdentifier>300000001469016</ns2:BillToAccountSiteUseIdentifier>

Update or Close Fulfillment Lines That Remain Open

Close a fulfillment line that remains open when it should be closed.

Order Management Cloud closes a fulfillment line when it finishes all steps of the orchestration process. In some situations, an orchestration process step might indicate that fulfillment is done, such as shipping is done for a shipping step. The indicator might mean your organization considers fulfillment done when the orchestration process reaches this step, but the fulfillment line is still open.

If the Update or Close Sales Orders scheduled process hasn't run since Order Management closed the fulfillment line, then Order Management might display sales orders and order lines as open even if it closed all the fulfillment lines that these orders and lines reference. You can run the scheduled process to fix the problem.

Assume you administer a call center that's open 9AM to 5PM, and you must process all order headers that Order Management creates during the open hours. You also must run the process every day for the 2018 fiscal year, and run the process after the call center closes.

Update or close fulfillment lines that remain open.

  1. In the Navigator, under the Tools section, click Scheduled Processes.

  2. On the Scheduled Process page, click Actions > Schedule New Process.

  3. In the Schedule New Process dialog, click the down arrow, click Search, then search for the value.

    Attribute Value

    Name

    Update or Close Sales Orders

  4. Click OK > OK.

  5. Make sure at least one sales order is open that meets the values you set in the next step. If no sales order meets the criteria you set, then the process might return an error.

  6. In the Process Details dialog, set values.

    Attribute Value

    Entity Name

    Required. Enter one.

    • Header. For sales order.

    • Line. For order line.

    For this example, enter Header.

    Entity ID

    To process one.

    • Order header, enter the ID for the order header.

    • Order line, enter the ID for the order line.

    If you don't enter a start date, end date, or interval hours, then you must enter an entity ID. You can run a query to get the entity ID.

    For this example, leave Entity ID empty.

    Start Date and End Date

    Use Start Date and End Date to specify the time period to consider when updating or closing the entity.

    • Start Date. Specify the earliest time and date when Order Management created the entity.

    • End Date. Specify the latest time and date when Order Management created the entity.

    For example, if you set Header as the entity, and if you set.

    • Noon yesterday as the Start Date, and 4PM yesterday as the End Date, then the scheduled process updates all order headers that Order Management created yesterday on or after Noon and on or before 4PM.

    • Noon yesterday as the Start Date but don't specify the End Date, then the scheduled process updates all order headers that Order Management created on or after Noon yesterday up to the current time.

    • Noon yesterday as the End Date but don't specify the Start Date, then the scheduled process updates all order headers that Order Management created on or before Noon yesterday.

    If you enter interval hours, then don't enter a start date or end date.

    For this example, leave these attributes empty.

    Interval Hours

    Period of time in hours to count backward from the time when the process starts. The scheduled processes uses this interval to identify the entities it processes.

    For example, if you enter 8 for interval hours, and if you enter Header, and if you leave all other attributes empty, then the scheduled process processes all entities that Order Management created in the eight hours immediately before you click Submit.

    For this example, enter 10 in the Interval. The call center is open 9 to 5, which is 8 hours. You will set the scheduled process to start at 5:30 so the Order Entry Specialists can finish creating any sales orders that they're currently adding. Using 10 as the interval will pick up these sales orders, and also any sales orders created after 7:30 AM.

  7. Click Advanced > Using a Schedule, then set values.

    Attribute Value

    Frequency

    Daily

    Every

    1 Day

    Start Date

    1/1/18 5:30 PM

    End Date

    12/31/18 5:30 PM

  8. Click Submit.

Filter Lines In Your Extensions, Rules, and Constraints

Make sure you filter out lines that you don't want to revise when you create an order management extension or business rule, and that you constrain the changes you allow on the fulfillment line.

For example.

  • Filter out order lines that are canceled, closed, on backorder, or that Order Management has sent to billing when you create a business rule that modifies a value on a fulfillment line that's still in progress.

  • Filter out order lines you already fulfilled. For example, filter out lines you already shipped for outbound lines or lines you already received and delivered for return lines.

  • Filter so you only process changes that you make to billing attributes, for example, on the Billing tab of the order line, and only if you haven't sent the order line to billing. For example, only modify Accounting Rule, Payment Terms, Receivable Transaction Type, and so on. Don't modify any other attributes.

  • Avoid the NullPointerException error. If your logic depends on using an attribute value as part of a calculation, then filter out lines that include an attribute that doesn't contain a value.

  • Filter according to line category code. For example, to process only order lines, not return lines, filter the categoryCode attribute on the fulfillment line according to ORDER. To process only returns, filter it according to the value RETURN.

  • If you use an order management extension, pretransformation rule, or posttransformation rule to set the default values for attributes, then filter out fulfillment lines that reference the original return when you populate the value for the Accounting Rule attribute and Invoicing Rule attribute.

Here are some more topics you might find useful.

  • Filter out lines that aren't shippable. Don't attempt to ship an item that isn't shippable, such as a warranty. For an example that filters out lines that aren't shippable, see topic Select Fulfillment Lines for Orchestration Process Steps.

  • Filter out lines that reference a coverage item, such as a service agreement. To reserve means you reserve an item in inventory. You don't store a service agreement in inventory because its not a physical item, so don't reserve it. For details, see topic Another Example of Using Extensible Flexfields In Line-Selection Rules.

  • Filter out return lines that you don't want to ship on an outbound sales order. See topic Prevent Orchestration Process from Shipping Return Lines.

  • Filter out lines that already passed trade compliance. If the line passed, then don't send a request to screen the line for trade compliance. For details, see topic Use Extensible Flexfields in Line-Selection Rules.

Create Filters In an Order Management Extension

Assume you're revising a line that Order Management is currently fulfilling, so you don't want to revise lines that are closed, canceled, shipped, or that Order Management has sent to accounts receivable. Write an extension that filters the lines.

//
//===========================================================
import oracle.apps.scm.doo.common.extensions.ValidationException;

def lines = header.getAttribute("Lines");
                               
while( lines.hasNext() ) {
  def line = lines.next();
  Long referenceFlineId = line.getAttribute("ReferenceFulfillmentLineIdentifier");

  // If the reference line is null then this isn't a revision.
  if(referenceFlineId != null) {
    // Get running line if this is a revision.
    def runningLine = getLinesFromRunningOrder(referenceFlineId);

    if( runningLine == null ) {
      // We have an error condition. No fline found with referenceFlineId.
      throw new ValidationException("Something's not right. Couldn't find line using reference fline id.");
    }
   
    if (runningLine.getAttribute("FulfillLineStatusCode") == "CLOSED" ||
        runningLine.getAttribute("FulfillLineCanceledFlag")  == "Y" ||  //Line is cancelled.
        runningLine.getAttribute("FulfillLineShippedQty") != null ||  //Line is shipped.
        runningLine.getAttribute("FulfillLineInvoiceInterfacedFlag") == "Y" ){  //Line is interfaced to invoicing.
        // This line isn't valid for setting default values.
        continue;
    }
  }
  else {
    // This sales order doesn't have a revision.
    //Its ok to set the default value for attributes.
  }
  //Put your defaulting logic here.
  //line.setAttribute(<attribute name>, <value>);
}

Object getLinesFromRunningOrder(Long runningLineId) {

  // Create an instance of the FulfillLinePVO public view object (PVO).
  def flinePVO = context.getViewObject("oracle.apps.scm.doo.publicView.analytics.FulfillLinePVO");
 
  // Create a view criteria object.
  def vc = flinePVO.createViewCriteria();

  // Create a view criteria row.
  def vcrow = vc.createViewCriteriaRow();

  // Set query conditions on the view criteria row.
  vcrow.setAttribute("FulfillLineId", runningLineId);
  vc.add(vcrow);

  def rowset = flinePVO.findByViewCriteriaWithBindVars(vc, -1, new String [0], new String [0]);
 
  if (rowset.hasNext()) {
      def fline = rowset.first();     
      return fline;
  }
} 

Create Filters in Business Rules

Write a business rule that filters fulfillment lines, such as in a pretransformation rule, posttransformation rule, line-selection criteria, or assignment rule.

Here's an example line-selection criteria.

Write business rules that filter fulfillment lines.

The line-selection criteria filters out lines that can't ship so Order Management only sends shippable lines to the fulfillment system that processes shippable lines, such as the shipping system or Global Order Promising.

Note.

  • Use the Manage Orchestration Process Definitions task in the Setup and Maintenance work area.

  • Use the line-selection criteria to add the rule.

  • Add the rule to each orchestration process step that shippable affects, as necessary. For example, if the item is a warranty, then it isn't shippable. To filter out the line that isn't shippable, you probably want to add the rule to each step that references a schedule, reserve, or ship task, such as the Schedule step, the Create Reservation step, Create Shipment Request step, and so on.

  • The entire If statement isn't visible in the screen capture. Here are the entire statements.

    • DooSeededOrchestrationRules.DOOFLine.categoryCode is "ORDER"

    • DooSeededOrchestrationRules.DOOFLine.shippableFlag is "Y"

  • You can't use Visual Information Builder to select fulfillment lines. You must edit the orchestration process and use Oracle Business Rules.

Example of a Pretransformation Rule

Write a pretransformation rule where you set the value for an attribute, but only after you filter lines. For example.

  • If the order line isn't closed, canceled, shipped, or already sent to billing, then set the default value for the requested ship date attribute.

For details about how to create a posttransformation rule, see the Transformation Rules topic.

Constrain Changes You Allow on Fulfillment Lines

Constrain the changes that you allow on the fulfillment
line.

Note.

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

  • Set the Entity attribute to Order Fulfillment Line.

  • Use the Details area to add your filters.

    Assume you don't want your users to modify a fulfillment line value, such as Ship-to Site, if the line is closed or canceled, or if it already shipped or already invoiced.

    Attribute Name Validation Operation Value String

    Canceled

    Equal To

    Yes

    Invoiced

    Equal To

    Yes

    Shipped Quantity

    Is Not Null

    -

    Status

    Equal To

    Closed

You can also create a constraint that prevents the user from submitting a sales order that doesn't include payment terms for lines that meet a specific criteria. For example, the line isn't a return line, or the line is for an internal transfer. For details, see the Control Payment Terms section in topic Guidelines for Controlling Customer Details in Order Management.