Guidelines for Setting Up Holds on Sales Orders
Use these guidelines to help set up a sales order hold.
Determine the Type of Hold You Need
You can apply different types of holds.
Type |
Description |
---|---|
Generic |
Hold that you apply on any step of an orchestration process. It doesn't apply a hold for a specific task. You enable Hold All Services when you create the hold code. |
Service |
Hold that you apply on a specific task type and service, such as the Create Billing Lines service of the Invoice task type. You specify the service when you create the hold code. |
System |
Hold that Oracle Order Management automatically applies and releases. Here are some examples:
|
Use an Extension or REST API
Use an order management extension or REST API to apply your hold.
If You Apply the Hold | Then |
---|---|
Immediately after you create a new sales order, and then submit it. | Use an Order Management Extension. For more, see Use Order Management Extensions to Apply Holds. |
Immediately after you revise a sales order, and then submit it. |
Use REST API For more, see Use REST API to Apply and Release Holds. |
Create Your Hold Code
Note
-
Use the Setup and Maintenance work area to manage hold codes, orchestration processes, and task types.
-
Use the hold code to specify the task to hold, such as creating the invoice.
-
Specify the service, or specify the task type.
-
Set the attributes:
Attribute
Description
Applicable Roles
Use the Applicable Roles tab to specify who can apply and release the hold, such as the Order Manager.
Note that you can't specify a role for applying a system hold, but you can specify a role to release a DOO_CreditCheck hold.
Set
As an option, use the hold code's Set attribute to specify the business unit where Order Management applies the hold. You can also use Set to create a set of hold codes and apply them all to the same business unit.
Hold Tasks In Progress
Order Management automatically enables the Hold Tasks In Progress option when you select it on the Order page in the Order Management work area or when you import a hold. Disable this option only if you haven't set up your fulfillment system to correctly interpret it.
End Date
Don't set the End Date attribute for a predefined, system hold code, such as HOLD_FOR_CHANGE_REQUEST.
Order Management uses these codes. If you set the end date on one, you might introduce errors in your implementation. Examine the description to determine whether a predefined hold code is a system hold code. The description usually identifies a system hold. For example, here's the description for HOLD_FOR_CHANGE_REQUEST:
System defined hold code used in change management process
If you set the End Date for a hold code, then you can't apply the hold after the end date happens, but you can release the hold after the end date happens.
Example Hold Codes
Here are some examples you might find useful.
Code
Name
Task Type
Service to Hold
DOO_ACTIVTY
HOLD CREATE ACTIVITY
Activity
Create Activity.
DOO_SCHDL
SCHLD
Schedule
Create Scheduling and Cancel Scheduling.
DOO_SCHLD_ALL
SCHLD_ALL
-
All scheduling services.
DOO_RSRV
RESRV
Reservation
Create Reservation and Cancel Reservation.
DOO_RSRV_ALL
RESRV_ALL
-
All reservation services.
DOO_SHIP_CREATE
HOLD CREATE SHIP
Shipment
Create Shipping.
DOO_SHIP_ALL
SHIP_ALL
-
All shipping services.
DOO_RCV_CREATE
HOLD CREATE RECEIVE
Return
Create Expected Receipt Advice.
DOO_INVOICE_CREATE
HOLD CREATE INVOICE
Invoice
Create Billing Lines.
Consider the Hold All Services Option
If You Don't Enable the Hold All Services Option |
If You Enable the Hold All Services Option |
---|---|
The service that you specify affects each orchestration process step that references the service. Assume you:
Your hold affects only step 300 of the ShipOrderGenericProcess orchestration process because step 300 is the only step that references the Create Shipping service. Use this option when you want some of the services of the task type to run but not others. For example, you want to put a hold on Create Shipping until you verify the orchestration process successfully created the shipment request, but you want the process to automatically do the Wait for Shipment task after you remove the hold for Create Shipping. |
The task type that you specify affects each orchestration process step that references the task type. Assume you:
Your hold affects step 300 and step 400 because these steps reference the Shipment task type. Use this option when you don't any part of the task to run. Let's say you're shipping a highly flammable, dangerous item. Before shipping, you place a hold to verify the carrier is licensed to handle hazardous material. Enable the Hold All Services option on the shipping task type to make sure no part of shipping runs. |
Use a Wait Step
-
An orchestration process that references a service that does a Wait operation is a wait step. To determine which services do a wait operation, go to the Manage Task Types page in the Setup and Maintenance work area, click the row that includes your task type of interest, such as Shipment, then, in the Details area, examine the services. Look for services that do a Wait operation.
-
If you create a hold code for a long-running task, such as a shipping or invoicing task, then set it up so Order Management applies it on a wait step.
Using this approach will help to avoid a concurrency problem that happens when the user revises a sales order while a long-running task is running. Placing the hold on a wait step helps to make sure any actions that were in process finish before you can revise the order.
-
Apply the hold on the Wait for Shipment service for a shipment task, and the Wait for Billing service for an invoice task. Each of these services do a wait operation.
Apply and Release Holds on Shipment Sets
If you apply or release a hold on any source line that's part of a shipment set, then Order Management applies or releases the hold on all lines that are part of the set.
If you apply a hold on a line that's part of a shipment set, then Order Management queries the database to determine whether other lines in the same shipment set exist on the sales order. If it doesn't find any other lines in the set, then it applies the hold only on the line that you specify in the payload. The same behavior applies when you release a hold.
Assume shipment set n includes lines x, y, and z. If your import applies a hold on line x, then Order Management applies the same hold on lines y and z. Order Management applies the hold on lines y and z even if you don't include them in your payloads.
You can't apply or release a hold on only one or only some of the lines in a shipment set. If you do, then Order Management will release it on all lines in the set.
Apply Holds on Drop Shipments and Purchase Orders
If Order Management applies a hold on a fulfillment line, and if the line involves a drop shipment and a purchase order, then the Order Management work area displays a hold icon on that line. Order Management displays the icon even if it applied the hold on only on one line in the purchase order.
Assume your sales order has these fulfillment lines:
- Line 1, purchase order 1
- Line 2, purchase order 2
- Line 3, purchase order 1
If you use the Order Management work area to apply a hold on line 1, then the work area will display a hold icon on lines 1 and 3 because the entire purchase order is now on hold in Oracle Procurement. If you then release the hold on line 1 or line 3, then the work area will remove the icon from lines 1 and 3 because the entire purchase order is no longer on hold.
See Where You Can Release Holds
If I Apply Hold Through |
Can I Release it on Create Order or Revise Order Page in Order Management Work Area |
Can I Release It in Fulfillment View in Order Management Work Area |
Can I Release It Through Web Service |
Can I Release It Through REST API |
---|---|---|---|---|
Create Order or Revise Order page in the Order Management Work Area |
Yes |
Yes |
Yes, but only if you applied the hold on the order header or order line. You can't use the web service to release a hold that you apply on a fulfillment line on the Revise Order page. |
Yes, but only if you applied the hold on the order header or fulfillment line. |
Fulfillment View |
Yes, but only if you applied the hold on the order header or fulfillment line. You can't use the Revise Page to release a hold that you applied on an order line because you already submitted the order, and Order Management transformed the order line to a fulfillment line. |
Yes |
Yes, but only if you applied the hold on the order header. You can't use the web service to release a hold that you apply on a fulfillment line in a fulfillment view. |
Yes, but only if you applied the hold on the order header or fulfillment
line. You can't use REST API to release a hold that you apply on a order line in a fulfillment view. |
Web Service |
Yes, but only if you applied the hold on the order header. You can't use the Create page or Revise page to release a hold that you apply on an order line or fulfillment line through the web service. |
Yes |
Yes |
Yes, but only if you applied the hold on the order header. |
REST API |
Yes, but only if you applied the hold on the order header or fulfillment line. |
Yes, but only if you applied the hold on the fulfillment line. |
Yes, but only if you applied the hold on the order header. You can't use the web service to release a hold that you applied on a fulfillment line through REST API. |
Yes |
And Yet More Points to Consider
-
Order Management comes with a number of predefined hold codes that hold a variety of task types and services. Add your own hold code only if the predefined ones don't meet your needs.
-
If you don't see the task type and the service that you need on the Services tab, then use the Manage Task Types page to specify the tasks and services that you can select for the hold. You must set the Hold Enabled option to make the service display on the Services tab. You can't enable some services for hold, such as Billing Response or Wait for Billing. For details, see Use Your Own Task Type to Apply Holds.
- If you apply a hold on the order header, then Order Management will also apply the hold on all order lines that are currently open in that sales order, but it won't apply a hold on lines that are closed or cancelled.
-
Order Management ignores a hold that you apply on a pause task. The pause task will resume according to its own conditions.
For a configured item, make sure you apply the hold on the configured item. Don't apply a hold on a configure option. For details, see Sales Order Hold.
-
Your downstream fulfillment system can't finish the task until you release the hold.
- If the total shipped quantity in Order Management doesn't equal the shipped quantity in Shipping, then Order Management rejects the hold request and displays an error.
- If you apply a hold on a change order, then we recommend you apply it only after you receive the Compensation Completed event for the change order from Order Management. Order Management won't hold any task that it's currently compensating. For background, see Overview of Managing Change That Happens During Order Fulfillment.
- Order Management won't process a hold request or release request on a sales order or order line that's in error recovery. You must fix the error, then retry the hold.
-
Save time. You can migrate your hold setups. For details, see Copy Setups Between Instances of Order Management.
Make Sure You Have the Privileges
A job role has privileges. Examine the job role and make sure you have its privileges.
What I Need to Do |
Job Role |
Formal Name of Job Role |
---|---|---|
Set up a hold code. |
Order Administrator |
ORA_DOO_ORDER_ADMINISTRATOR_JOB |
Apply, release, or view a hold on a sales order, order line, or fulfillment line on the Create Order page, Revise Order page, or in a fulfillment view. |
Order Entry Specialist or Order Manager |
ORA_DOO_ORDER_ENTRY_SPECIALIST_JOB ORA_DOO_ORDER_MANAGER_JOB |
View a hold on an orchestration process in a fulfillment view. |
Order Manager |
ORA_DOO_ORDER_MANAGER_JOB |
Apply or release a hold through a web service. |
Create your own role. |
Add privileges to your role.
|
Apply a hold through REST API. | Create your own role. |
Add privileges to your role.
|
Release a hold through REST API. | Create your own role. |
Add privileges to your role.
|
This topic uses predefined job roles. You must create your own job roles, depending on your security requirements. For details, see Privileges That You Need to Implement Order Management.