You are on page 1of 12

Optimizing Performance for the Order Management Booking Process

Rich Mercer Oracle Corporation: Oracle Support Services Revised May 2011

The intent of this document is to discuss methods to consider when streamlining the booking process within the Oracle Order Management application. There are a number of variables to consider when trying to improve performance for booking, such as, tax calculation, pricing strategy, hold definitions, etc. Therefore, this document will certainly grow as the booking process performance is refined. For the inception of this paper, the first variable discussed involves scheduling.

Defer Scheduling
In order to pick release a sales order line, a schedule date is required. As if Release 11i, if no schedule date is populated on the order then scheduling code must be run in order to populate this required field. The scheduling routine uses pertinent information from the order line to derive the best schedule date. The minimum information from the order line includes the Item, Quantity, Unit of Measure and Request Date. Optional information may include more detailed data such as the Inventory Organization (Warehouse) and the requested Schedule Date. This information is used to perform a query mainly against the MSC_DEMANDS, MSC_SALES_ORDERS and MSC_SUPPLIES tables to determine the appropriate schedule date. The request and/or results are temporarily stored in the MRP_ATP_SCHEDULE_TEMP and MRP_ATP_DETAILS_TEMP tables for the ORDER_LINE_ID. This scheduling code may be invoked in a variety ways.

Method 1 AutoScheduling: If Autoscheduling is turned on, the scheduling function is automatically run to populate the schedule date when the line is first saved to the database. To determine quickly if the AutoScheduling is defaulted to on, query up a sales order line and choose Tools from the Menu, if the AutoScheduling is checked then it is turned on by default.

Method 2 Specify a Schedule Ship Date - If a Schedule Ship Date is specified on the order line, it is validated through the scheduling routine when the order line is saved. For entering and booking functions, the Schedule Ship Date is an optional field. It is only required in order to Pick Release the order line. The Schedule Ship Date may be manually entered or automatically populated by the Defaulting Rules. Method 3 Workflow Function - Finally, Scheduling may be invoked through a function call as part of a workflow activity. In the seeded workflow process, Line Flow Generic, the scheduling function is not deferred after the booking function is run. Therefore, scheduling is immediately performed as the end user waits for control to return to the form. This is equivalent to running the scheduling function as if AutoScheduling were turned on, only it is done after booking and not upon the first commit of the line.

This scheduling routine can be a very time consuming process, and the question needs to be asked, In our production environment, is it important to our business flow that the scheduling routine be done prior to (or as part of) the order being booked? or more simply stated, In our production environment can we defer the scheduling of the order to a background process? If it is determined that the scheduling process can be done in the background rather than online while the data entry clerk waits, then there is a way to configure your Order Management system to significantly improve performance when booking an order. The approach taken here is not so much to decrease the latency of getting an order to a pick release eligible state, but to increase the throughput, by breaking up the order flow process into smaller pieces. The following diagram illustrates this point.

Time to Book Booking Validation and Scheduling

Booking Validation Time to Book


Deferred to WF Background

We see that when we reduce the overhead associated with the booking process we reduce the online wait time incurred by the user. This allows the user to process a new sales order instead of waiting for the scheduling code to run, thus increasing throughput. To the left of the boxes above the order is in a state of Book Eligible, and to the right is the state of Eligible to be Pick Released. Configuring the system to defer scheduling requires the following steps:

Turn AutoScheduling Off Ensure the Schedule Date is not populated by Default Rules or manually entered Modify the Line Process Flow to Defer Scheduling.

Turn AutoScheduling Off

AutoScheduling can be invoked in a number of ways. In order to turn the defaulting of AutoScheduling Off involves looking at a profile option and the definition of the Order Transaction Type.

First ensure that the profile for OM: AutoSchedule is set to No. Do this from the Assign Profile Values form (Sysadmin: Profiles + System).

To validate that AutoScheduling is not defaulted to Yes for the Transaction Types, go to the Define Transactions Form in Order Management (OM: Setup + Transactions + Define). Under the Shipping tab, ensure the AutoSchedule checkbox is Off for the Order Transaction Type.

Finally, the AutoSchedule feature can be turned off manually on the form. This is also a good way to validate that the defaulting of AutoScheduling is indeed set to Off. Open the Sales Order form and enter the Order Type field. Next, check the value of the AutoSchedule checkbox in the Tools Menu.

Ensuring the Schedule Date is not populated

To prevent the scheduling code from being run requires that a schedule date not be populated on the order line of the order. Direct the users not to insert the schedule date when entering order lines. The other method of entering the schedule date is to allow the defaulting rules to populate the field. There is no seeded defaulting rules for the schedule ship date, and you must be certain that a customized rule was not entered. This can be easily confirmed by querying the Defaulting Rules form (OM: Setup + Rules + Defaulting) for the Order Line entity. With your cursor on the Schedule Ship Date field click on the Defaulting Rules button. Validate that no rules exists as shown below:

Modifying the Line Process Flow to Defer Scheduling

The most time intensive change to implement deferred scheduling is to modify the Workflow process for the line. For those experienced in using Workflow Builder, this is a trivial task.

For detailed instructions on implementing this change using the Workflow Builder, see Appendix A of this document. The summary of steps required are: 1. Copy existing workflow process 2. Replace the Schedule Line process activity with Schedule Line, Deferred** 3. Save the process off to the database 4. Assign lines from the Transaction Types form to use the new Line process. The Before and After definitions of the line processes follow:



** As of Release 12, a new scheduling sub-process named 'Schedule-Line, Manual' was introduced to control scheduling manually after the order is booked. If the new sub-process is used in the line workflow, then after booking the order, lines are blocked at the 'Schedule - Eligible' activity. From 'Schedule - Eligible' activity the lines can be progressed from Sales Orders window or the Schedule Orders concurrent program can be used to schedule the lines.

In order to use the newly defined line flow called Line Flow Generic, Scheduling Deferred, the line types used on the order for the applicable order type must be modified. Do this by returning to the Define Transaction Types form for the order type and choose the Assign Lines button. End date the existing line flows and insert the new line flows.

Testing the New Flow

To test, enter a new sales order line which utilizes the new line flow. To get a better perspective of how much of an improvement we will realize in the booking process, first save the record using the yellow disk icon on the toolbar. Prior to clicking on the Book Order button, ensure once again that AutoScheduling is turned Off beneath the Tools Menu and that no Schedule Date is entered. Click on the Book Order button and observe the improvement. Exercising the scheduling in a deferred state dramatically improved performance on my test system (by a factor of 6). To make sure that the scheduling function was not run, return to the order line and validate that the Schedule Date field is still blank for the booked order line. The difference between the state of the 2 lines just mentioned is that the first line is not ready for pick release until the scheduling code has run. To allow the line to pass through the scheduling activity in workflow requires that we run the Workflow Background Process for the OM Order Line as shown below (Sysadmin: Requests + Run).

In a production environment this would not be done is such a manual fashion, but rather be setup as a scheduled request to be run at an interval that suits your business flow. Once the request is completed the line will have a schedule date (verified in the Sales Order form), and the line will be ready for Pick Release.

Appendix A: - Modifying the Workflow Process to Defer Scheduling

1. Loading Workflow Builder 2.5 or higher onto your client machine. If this has not been done or you cannot connect to the database from your client machine please seek the help of your System Administrator and/or DBA to configure your system accordingly.

Steps to Modify the Process within Workflow Builder

1. Open the Workflow Builder on your client machine (Start > Programs > Oracle > Oracle Workflow Builder) 2. Choose the Open folder icon or choose File + Open 3. Next choose the Database radio button and enter the appropriate connect string:

4. Choose OK and you will get a list of all the Item Types loaded into the database. The Item Type you are concerned with currently is the OM Order Line. Choose to Add it to the Visible side of the window as shown.

5. Choose OK and wait for them to be loaded. Notice at this time that the small apps@vis11i icon is representative of a database disk.

This means that saving changes to the workflow definition will be done to the database. You want to be careful to coordinate these changes with any other users who may be using the Workflow Builder at the same time. 6. Expand the Processes branch and locate the Line Flow Generic workflow process.

7. Using the right mouse button, click on this process and choose Copy. 8. Again, click on the right mouse button and choose Paste. Do not be alarmed at the error message.

Once you choose OK you will have the opportunity to change the internal name to a unique value. Change it to the following values as shown below:

9. Click OK and you will have a newly created workflow process called Line Flow Generic, Defer Scheduling which is currently identical to the Order Flow Generic.

10. Double click on your new process to open it in the Process Window as shown below.

11. Click on the Schedule Line process (within the process window) highlighted above and choose the Delete button the toolbar (red X).

12. Now drag the Schedule - Line, Deferred process from the Navigator and drop it onto the Process Window.

13. Now draw the arrow directing the flow from the Enter Line process to the Schedule Line, Deferred process. Do this by using the right mouse button to click on the Enter Line process and while continuing to hold the mouse button down drag the arrow to the Schedule Line, Deferred process and then release the mouse button.

14. Repeat step 13 for drawing the flow arrow from Schedule Line, Deferred to Create Supply Line processes.

15. Save this off to the database using the File + Save option from the Menu.