Search from 700 + Posts

Jun 8, 2013

How to Manage Oracle Application Workflow Background Process Concurrent Program

In this post I will talk about concurrent program (CP)  "Workflow background process" , available in all the 11i and R12i releases.This is very critical and important program.

Purpose of this program is to progress any of the workflow activity which is in following status.

2.Time Out

This CP has 2 Required Parameters and 3 Optional Parameters.Majority of the customers schedule this CP at frequency any time between 3 minutes to 1 hour.

And most of the issues that I have heard about this CP are related to performance( Though another area where I heard complaint is this CP is not picking the lines that are in Deferred status , but I will not talk about that in this post , please check my other posts if you want to know more about  reason why this CP is not picking lines ) .As per issues related to performance my take is this is a a stable program and work as per expectations if scheduled to run in proper manners. Based on my discussions with many customers I noticed that customer encounters performance issues because of the way they scheduled this CP.

Parameters for this CP are .
1.Item Type
2.Minimum Threshold
3.Maximum Threshold
4.Process Deferred
5.Process Timeout
6.Process Stuck

# 1
If we don't specified "Item Type" parameters then workflow background process will execute all eligible workflow across all the Oracle Modules (like OM/WSH/PO/AP etc.....) and that might rmeans processing 100s of lines (based on your transaction volumes) and hence poor performance. I don't see any business justification to run this CP with "Item Type" as Blank.
Best recommendation are 

  • Schedule separate CP for every Oracle Module and don't leave item type BLANK
  • In case you really has need to run this program with Item type Blank then run that during off-peak hours ( in Night/week end)

Do not run this CP with  Parameter

4.Process Deferred  = Yes
5.Process Timeout   = Yes
6.Process Stuck       = Yes

Why on earth someone want to process TOGETHER all the workflow that are  at
Deferred, timeout and Stuck activity , especially when you have scheduled this CP for every 5 - 20 minutes range.(These are possibility that some of the activities that are Time out for valid reason and should not be process after every 5 minutes), but with the above setting CP will pick all the lines for processing , though lines that are Timeout etc will not be processed till they reach their timeout thresh hold ( but still picked).

Best recommendation are 
It is good choice to process Deferred , Timeout & stuck activities separately .

Most of time business need is to process the Deferred records quite often and process Time Out/Stuck once -twice (at least not after every 5 minutes) in a Day

Schedule this CP for a appropriate frequency. E.g if your volume load is to process 20,000-30,000 lines in 1 hour then it is good idea to schedule it after every 5 minutes .Scheduling it after every 1 hour with this much volume is not a good Idea.

IMPORTANT - Above are my view & experience
Note - Pls. Refer Oracle Apps documentations /Guides for  More details.
If you need addtional details feel free to contact me at


  1. Why cant we discuss about the threshold here?. I think most deveopers have difficulty in understanding those parameters.

  2. Hi Robert

    Thanks for visiting my blog.
    If Question is what is Threshold and How to manage that, the Answer is.
    First of the purpose of the workflow background process is to do the execution at the backend/backdoor rather doing executing at runtime (that might results in HUNG screen).
    Secondly If we are dealing with the Workflow, we can tell the workflow engine to DEFER few of the activities (as per our requirement) by setting the Cost > = 50 hundredths of a second.
    So that means if in your workflow there is activity that you don't want to execute immediately, but want workflow background process to process that set the Cost of that activity in workflow builder greater that 50.
    Above were just some basics.
    Now let's come to your question, Let’s says we have a multiple workflow branches for a process Name PROCESS-1.Let's take example of multiple flows. Below are examples

    Now In all these Process, let's says we have one Defer activity D_ACTIVITY_1 and , as we know when we run workflow background process pick anything which is in DEFEER status, so that means if all the 4 process are in D_ACTIVITY_1, then execution of WF background process will pick all the 4 and process. But business requirement is, they don’t want to process all the 4 branches all together , but they want to execute theses process branches separately.

    In that case set the cost of D_ACTIVITY_1 in each process different
    Lets says

    1.PROCESS-1_Main_frames - 60
    2.PROCESS-1_AS400 -70
    4.PROCESS-1_SAP -90

    So when you run your WF background process, pass the mix threshold parameter = 60 and max = 75
    In that case it will pick the Process 1 and 2 and not the 3 and 4, so that way you can control what to process and what not,

    Hope that helps.