Thursday Feb 19, 2015

Different ways of sending workflow notifications


There are various ways of sending workflow notifications using Workflow Activities like Notification Activity with 'Expand Roles' flag checked, Notification Activity without 'Expand Roles' flag checked, APIs like WF_NOTIFICATION.Send, WF_NOTIFICATION.SendGroup, and using Business Event System Subscription Action Type 'Send Notification'.

Using Workflow Activities

A notification can be sent by running a workflow process having the notification activity. The recipient of the notification can be set by using the Performer attribute in the notification activity, and the message template can be set using the Message attribute. If the performer value is a role, then the 'Expand Roles' flag will be used to decide whether to send the same copy to all the users of the role or a different copy.

Notification Activity without "Expand Roles"

 The 'Expand Roles' flag will be unchecked by default, sends the same copy of notification to all its users and that notification is visible in the notification queue of all the users in that role. If one user in that role responds to or closes that notification, the notification is removed from the notification queue of all other users in that role.

Notification Activity with "Expand Roles"

The 'Expand Roles' flag when checked, sends a different copy of the notification to all its users. The notification remains in a user's notification queue until the user responds to or closes the notification. By both checking Expand Roles and specifying a post-notification function, you can create a voting activity. A voting activity is a notification activity that first sends a notification message to a group of users in a role and then executes a PL/SQL post-notification function to tally the users' responses and determines the transition to the next activity.

Refer to WF dev guide for more details about voting activity.

Using APIs

A notification with the specified message can be sent to the role by calling the WF_NOTIFICATION.send() and WF_NOTIFICATION.sendGroup() APIs without actually launching the workflow process. The message template that needs to be sent has to be defined within a workflow item type .


This function sends the specified message to a user/role and returns a notification ID if successful. The specification of the function is shown below.

function SEND
 (role in varchar2, 
  msg_type in varchar2, 
  msg_name in varchar2,
  due_date in date default null,
  callback in varchar2 default null,
  context in varchar2 default null,
  send_comment in varchar2 default null
  priority in number default null)
 return number;


  nid number;
  msg_type varchar2(100) := 'WFTESTS';
  msg_name varchar2(100) := 'PLSQL_MSG';
  role varchar2(320) := 'TESTUSER';
   nid := wf_notification.send(role, msg_type, msg_name);  


This function sends a separate copy of notification to all the users assigned to the specified role and returns the notification group ID if successful. All the notifications have the same group id, which is the first notification id sent.

function SendGroup
  (role in varchar2,
   msg_type in varchar2,
   msg_name in varchar2,
   due_date in date default null,
   callback in varchar2 default null,
   context in varchar2 default null,
   send_comment in varchar2 default null
   priority in number default null)
  return number;
  nid number;
  msg_type varchar2(100) := 'WFTESTS';
  msg_name varchar2(100) := 'PLSQL_MSG';
  role varchar2(320) := 'TESTUSER';
   nid := wf_notification.SendGroup(role, msg_type, msg_name);  

Using Business Event System Subscription Action Type

The notification can also be sent by raising the business event for which the subscription action type is specified as 'Send Notification - Send a notification using a standard or custom message template'. As part of the subscription definition, the workflow item type and message name for the message you want to send and role that should receive the notification must be specified. In this approach, you do not need to define or run a workflow process to send a notification from a subscription. However, you do need to define the message you want to send within a workflow item type. The list of values for the Message Name field includes only the messages within the item type you specify.

Following are the subscription mandatory parameters

  • Message Type - An item type that contains the message definition
  • Message Name- An message template for the notification you want to send
  • Recipient  - A role that should receive the notification
  • Priority - Normal, High, or Low as the priority for the message.

Following are the subscription optional parameters

  • Callback - Custom callback function you want the Notification System to use for communication of SEND and RESPOND source message attributes.
  • Context - The context information for a workflow process instance that needs to passed to the callback function. The context information consists of the item type, item key, and activity ID in the following format:
  • Comment - A comment to send with the message

Monday Jan 19, 2015

New Features to Global Worklist Header in 12.2.4

Enhancements to Global Worklist Header

  • In 12.2.4 Skyros UI, a new branding profile "FND_BRANDING_SIZE" is introduced to control the layout of the global header. Worklist header is part of the universal global header and hence is controlled by this profile.
  • The default value for "FND_BRANDING_SIZE" is "Icons Only". This renders the worklist header as bell icon along with badge of open notifications count. On click of the bell icon, the worklist menu is displayed.
  •  If value for "FND_BRANDING_SIZE" is "Links only", the worklist header renders as "Worklist(<open notifications count>)" text link. On click of the "Worklist" link, the worklist menu is displayed. 

  • If value for "FND_BRANDING_SIZE" is "Both Links and Icons", the worklist header renders as a bell icon along with a badge of open notifications count of the user and the "Worklist" link below the icon. On click of the bell icon or "Worklist" link, the worklist menu is displayed. 

  • The layout of the worklist menu is enhanced and the recent 8 open notifications of the user are displayed. Each notification section has From user and Sent Date in the first row, Subject and Due Date in the second row. The worklist menu has a better look and feel with enhanced styles compared to its older 12.2.3 version.
  • On page reload or refresh, the worklist header is rendered to display the current open notification count of the user.


  • The worklist header enhancements are available across all OAF and JTT pages by default from Oracle E-Business Suite Release 12.2.4
  • It is i18n enabled and also supports more accessibility features. User can open the worklist menu by pressing keys like Enter, Space Bar, Up and Down Arrow on the worklist icon/link in the global header.
  • The Global worklist header enhancements are available in all supported browsers of Oracle E-Business Suite Release 12.2.4


Tuesday Dec 30, 2014

New Version of Approvals Smartphone App is Available - Version 1.1.0

What's New?

A new version (1.1.0) of Approvals for EBS smartphone app is available on Apple App Store. This new version provides following updates.

- Improvements to login and configuration flow
- Ability to change server URL without reinstalling the app.
- *Diagnostics improvements.
- After updating to version 1.1.0, you are required to reconfigure the app to implement the configuration and login improvements included in this version.

Note: The latest app version will work with earlier server-side patches. However, the latest server-side patches must be applied to enable new features and fixes that require those patches, marked by an asterisk (*).

For more information on these updates, see My Oracle Support Note 1641772.1.

Support for Demilitarized Zone (DMZ)

If your mobile users need to access the Oracle E-Business Suite mobile apps over the Internet, your Oracle E-Business Suite environment must be set up in a DMZ configuration.

  • For DMZ configuration instructions on Oracle E-Business Suite Release 12.1, see My Oracle Support Note 380490.1.

  • For DMZ configuration instructions on Oracle E-Business Suite Release 12.2, see My Oracle Support Note 1375670.1.

Additionally, when setting up the configuration file for your mobile app as described in Section 2.2.1, ensure that the service endpoint (or server host URL in Oracle E-Business Suite Mobile Foundation releases earlier than Release 2.1) is set to your external web entry point.


New versions of the smartphone app Approvals for EBS has been released. Refer to following posts.

Please go to the blog post for latest version of Approvals app and post your comments.

Thursday Dec 11, 2014

e-Signing a Workflow Notification fails on Internet Explorer on Windows 7

With the launch of Windows 7 Operating system, Microsoft has ceased to support CAPICOM DLL. CAPICOM is an ActiveX control used to digitally sign data, display certificates from browser and to encrypt and decrypt data. In Oracle Workflow Notification System, CAPICOM has been used to digitally sign Notification data in Workflow Notifications. This is only used when signing a workflow notification from Internet Explorer. Now that this DLL is not included in Windows 7 and further versions of Windows OS, the signing process of a Workflow Notification, requiring certificate based signature, errors out with the following message:

"Verification of signature has failed"

Oracle Workflow provides a solution to this issue. The patch numbers for obtaining this solution on the following code-lines are as follows:

  • Release - 18921580
  • Release 12.1.3 - 18921687:R12.OWF.B
  • Release 12.2.3 - 19410235:R12.OWF.C

Due to the removal of dependency on an ActiveX control, there are certain subliminal changes in the user interface for signing a workflow notification. The following are two changes:

1. Change in the look of Certificate Selection window. The list of certificates to be selected are now loaded in an Applet. This is as shown below:

2. A small time lag after clicking on Sign button. A informative message conveying the same is displayed. The screenshot of the same is as shown below.Please wait for the applet to be loaded after clicking on "Sign". There would be an applet loaded as shown in earlier image a user can select certificate for signing the notification data.

Apart from these negligible changes, the whole signing experience is in parity with that which existed before Windows 7 plus Internet Explorer as browser.

Tuesday Nov 11, 2014

Scheduling Workflow Mailer Stop and Start events as good practice

The Workflow Notification Mailer runs on the generic service called Workflow Mailer Service, which in turn uses the Standard workshift, active 24 hours every day. This means the notification mailer runs non-stop.

 Not allowing the mailer to restart periodically may present some issues:

  • The corresponding log file corresponding to the Workflow Mailer Service will grow several gigabytes large and eventually the OS will error due to I/O file handling.
  • Some SMTP servers and IMAP servers used for outbound and inbound processing respectively, have time limits to the sessions connected to them. If the mailer reaches those time limits it will encounter a connection error and will be abnormally brought down.
  • Similarly the same might happen to the session the mailer establishes to retrieve HTML and framework content from the application server. This is less likely though but it has been seen.
  • The size of the INBOX folder in the IMAP server won't get expunged as long as the mailer does not refreshes the session. For a purged INBOX folder it takes the mailer to restart - and for parameter Expunge Inbox on Close to be set to Yes.

In order for the issues above to be minimized, a good practice is to schedule the Mailer to automatically go down and start up periodically, daily preferably. This can be done by using the event schedule feature provided in the Workflow Mailer configuration. This can be done as follows:

First, connect to EBS using the responsibility Workflow Administrator Web Applications and go to Workflow Manager

Then edit the Notification Mailer configuration. Continue going through the train stages until you reach the Schedule Events stage:

Use the corresponding link/button to create two events, one for stopping the mailer and one for starting it up:

In the screen shot above the stopping event is set to happen at 11:50 PM and the starting event at 11:55 PM, and these are set to repeat every using 1440 minutes as the interval. If no interval value is specified the stop/start events are raised just once.

Wednesday Oct 15, 2014

Improving worklist notification response performance by deferring the processing


When the user responds to a notification from self-service worklist, the control will be returned back to the responder only after processing the subsequent function activities and other synchronous activities until the next blocking activity. If there is any costly activity defined after the notification activity user can experience performance problems. There is a feature available from E-Business Suite Release 12.2 onwards to defer the response processing to a later time and the control will be returned back immediately so that the response time will be faster.

When a notification is responded in a deferred mode, a message with event name '' and other required properties will be enqueued in to WF_NOTIFICATION_IN queue for later processing, and the notification will be closed immediately. The 'Workflow Inbound Notification Agent Listener' dequeues the message from WF_NOTIFICATION_IN queue and executes its subscription to complete the notification activity and the subsequent activities.

Notification Response mode

The Workflow Administrator actually determines the response processing mode for their application whether to process all the workflows synchronously or to defer all the workflows or only some specific workflow types. There is a section available in the Workflow Administration page to select the required processing mode.

There are 3 options available

  • NONE - None of the workflows response processing will be deferred. This is the default behavior.
  • ALL - All the workflows will be deferred for processing
  • SPECIFIC - Only the specified workflows will be deferred. There are buttons available to Add or Delete or Search for the required item types

Tracing the responded notification

The responded notification processing can be traced in the below sequence.

  • Check the STATUS column in WF_NOTIFICATIONS table                                                                                                The notification status will be changed to CLOSED once the control returns back to the worklist and a message will be enqueued to WF_NOTIFICATION_IN queue with READY state                      
    select notification_id, status from wf_notifications where notification_id = <nid>;
  • Check the message state in WF_NOTIFICATION_IN queue                                                                                               The 'Workflow Inbound Notification Agent Listener' component processes the messages in WF_NOTIFICATION_IN queue and the message state will be changed to PROCESSED                                       select win.user_data.GET_STRING_PROPERTY('NOTIFICATION_ID') NID, msg_state, enq_time, deq_time from$wf_notification_in win where win.user_data.GET_STRING_PROPERTY('NOTIFICATION_ID') = <nid>;
  • Check the notification activity status in WF_ITEM_ACTIVITY_STATUSES table                                                             The notification activity status will be COMPLETE once the message is processed by the 'Workflow Inbound Notification Agent Listener' component                                                                                                                         SELECT notification_id, activity_status FROM wf_item_activity_statuses where notification_id = <nid>;

Handling Errors

When there is any error occurs during the deferred response processing, WFERROR/NTF_DEFER_RESP_PROCESS_ERROR workflow process will be launched and an error notification will be sent to the Workflow Administrator role. The ERROR notification contains the information about the Errored notification details, Error message and Error stack.

The Error notification contains two response attributes 'Retry' and 'Resolved'.


When the problem that is causing the error is fixed and no longer exists, submit the 'Retry' response so that the actual notification will be enqueued to WF_NOTIFICATION_IN queue and will be processed again.


When the problem that is causing the error is resolved now and the notification is COMPLETE, then submit the 'Resolved' response so that the error notification will also be closed.

IMPORTANT NOTE: The 'Workflow Inbound Notification Agent Listener' component should be up and running for the above feature to work

Thursday Oct 09, 2014

Global Worklist Header - New Feature on 12.2.3


Global worklist header is a new feature available from Oracle E-Business Suite Release 12.2.3 in Skyros look and feel.

  • Worklist header icon is the bell icon which is displayed by default in all HTML based pages in the global header, the worklist header icon is an alternative to including a worklist region in the Oracle E-Business Suite home page. Users can select the icon to view a summarized list of recent notifications, and then click to view and respond to each notification in the notification details page.
  • With this feature, users can view the recent notifications from any HTML page by default instead of navigating back to homepage and checking the homepage worklist for any recent notifications.
  • The open notification count is displayed next to worklist header icon in the global header and the count gets updated on page reload or refresh.
  • On click of the worklist header icon, the worklist menu opens up, which displays the recent 10 notifications. Each notification section shows from user, notification subject link,  sent date and due date of the notification.
  • Users can navigate to notification details page on click of the notification subject link and can review and respond to the notification. The subject text is displayed up to 45 characters and on hover of the subject link, the full subject text is shown.
  • The worklist menu also displays the ‘Go to Full Worklist’ link at the bottom and on click of link, user is taken to the advanced worklist page.
  • The worklist menu can be closed by clicking anywhere outside the menu.
  • If the open notification count for the user is zero, then on click of the worklist header icon, the worklist menu still opens up and displays the message ‘No open notifications found for the user’ along with the ‘Go to Full Worklist’ link at the bottom.


Though worklist header icon is rendered by default, the icon rendering in the global header can be controlled at user, responsibility, application, site levels using profile ‘WF_ENABLE_WORKLIST_HEADER’. By setting the profile value, the worklist header icon can be rendered on/off at various levels.


  • The worklist header feature is available across all OAF and JTT pages by default from Oracle E-Business Suite Release 12.2.3
  • It is i18n enabled and also supports accessibility features. The opening and closing of the worklist menu and the navigation to each notification component, full worklist link, navigation to notification details page, advanced worklist page from the worklist menu links can be fully controlled by keyboard. The navigation with the keyboard is the same as in any HTML page. In addition, user can navigate through the notifications using key up and key down as well.
  • The global worklist header feature is available in all supported browsers of Oracle E-Business Suite Release 12.2.3


Additional Resources

Release 12.2.3 is currently available on My Oracle Support as Patch 17020683. This patch needs to be applied on top of Oracle E-Business Suite Release 12.2.2. Instructions for downloading and applying the patch are in the Oracle E-Business Suite Release 12.2.3 Readme, Note 1586214.1

'The signing operation has failed' - common error with Password Based Signatures in Workflow Notifications


Oracle Workflow Notifications can be digitally signed in two ways.

  1. Password Based Signature
  2. X.509 Certificate Based Signature.

Following are the authentication mechanisms categorized based on whether or not a user subscribes to Single Sign-On (SSO).


  1. Pure E-Business Suite User (Otherwise called FND User)
  2. Pure SSO user
  3. Hybrid Mechanism (Both E-Business Suite and SSO)

Issues and Reasons

Time and again we have encountered a problem with Password Based signatures failing with the error: 'The signing operation has failed'. This happens when the notification is signed using SSO credentials i.e., the logged in user is an SSO user. The profile option APPS_SSO_LOCAL_LOGIN, controls the type of authentication mechanism to be used for a user at the time of user-creation. More information about SSO can be found here

The possible values of this profile option are:

  • LOCAL - Login is only allowed via Oracle E-Business Suite local login.
  • SSO - Login is only allowed through Single Sign-On. The password is set to ‘EXTERNAL’ after a single sign-on account and an application account are linked.
  • BOTH - Login can be through both Single Sign-On and Oracle E-Business Suite. (Please note this is only a separate authentication mechanism but not a different class of users created for it)

Now based on the type of login/authentication mechanism, the signing differs.


  • For a FND User, the validation utility validates the credentials by fetching password from FND_USER table from ENCRYPTED_USER_PASSWORD column.
  • For a pure SSO user, the ENCRYPTED_USER_PASSWORD column is set to 'EXTERNAL' in FND_USER table and the Validation utility fetches the password from OID to validate it.
  • For a user using both types of authentication mechanisms, the Validation utility validates it as it does in the case of a FND User i.e., comparing the ENCRYPTED_USER_PASSWORD from FND_USER table. This implies that when the user uses authentication mechanism for both FND User and SSO user then the password for FND User is used for validation.

Also, it is to be noted that the password for SSO user is case sensitive and the password for FND user depends upon a profile option SIGNON_PASSWORD_CASE. In short:


  • An SSO user password is case-sensitive.
  • An FND User password is by default case insensitive. It depends upon the value of profile option 'SIGNON_PASSWORD_CASE' to have it case sensitive or case insensitive.
  • For a user which uses both authentication mechanisms, the password for FND user is used for signing. It would be good if these passwords are maintained in sync.
Hence, when one encounters the error mentioned here, the starting point to investigate is to see what type of user it is. Mostly it would be user using authentication mechanism for both FND User and SSO User. In that case the FND User password should be used and not the SSO password. Also the case of the password should be heeded to as that can well be the cause of the issue. 



Thursday Sep 18, 2014

Business event does not raise - event raises and does nothing

Frequently, new functionality is created using the Business Event System or existing functionality is changed by adding new subscriptions, changing subscription phases, changing underlying java or PLSQL code, etc, and inexplicably it is found that raising the business event does not produce the desired result, as if the event was not raised.

The execution of an event consists basically of two parts: raising the event and do all required validation, and then finding the subscriptions to that event and execute them. The first one barely ever fails while the second one is more pron to issues and it is the one that we are mostly interested in as it has the code/behavior we want to see.

The following steps will allow to identify the actual cause of the issue by making use of the FND debugging options provided in EBS.

1. Adjust the subscription phase

Since subscriptions with phase higher than 100 are deferred you would need to raise the event on one session and then go to another session and debug it. It is easier if you can set the phase to a value lower than 100, say 99, and then raise the event in the session. This way you will be able to see everything the happens related to this event subscription, a nothing else.

Remember to ensure that the business event has an error subscription so that if something happens it does not go silent. By adding an ERROR subscription the system administrator would be able to see as notification explaining any failures. See here for more on error subscription definitions. 

2. Raise the event

Do so either from the application or from java or PLSQL. Here is an example from PLSQL.

Note: you can make use of wf_log_pkg.init to enable the FND: Debug option for this session only, so there is no need to change the corresponding profile options. The last parameter ('wf%') means the debug is enabled for the WF code, which the BES belongs to.

  l_parameters wf_parameter_list_t := wf_parameter_list_t();
  --execute immediate 'truncate table applsys.fnd_log_messages';
  --Add your parameters here
  wf_log_pkg.init(1, null, 1, 'wf%');
  wf_event.addparametertolist(p_name          => 'NOTIFICATION_ID',
                              p_value         => '123',
                              p_parameterlist => l_parameters);
  wf_event.raise(p_event_name => '',
                 p_event_key  => '123',
                 p_event_data => NULL,
                 p_parameters => l_parameters,
                 p_send_date  => sysdate);

anonymous block completed 

3. Find the logging details 

Now, within the same session check the log messages generated by the Business Event System:

SELECT 'Level: '||log_level||
       ' Module: '||module||
       ' Time: '||to_char(timestamp, 'DD-MON-RR HH24:MI:SS')||
       '>>> Message: '||message_text
FROM   fnd_log_messages
WHERE  audsid  =  sys_context('userenv', 'SESSIONID')
ORDER BY log_sequence



The final lines found in the query above and the error notifications sent to the system administrator will point out to the error causing the event to look as it did not fire.

Wednesday Aug 06, 2014

Now Available: Oracle Mobile Approvals for iOS - Version 1.0.0


Oracle Mobile Approvals for Oracle E-Business Suite lets you respond on-the-go to your pending approval requests. From your phone, anywhere and anytime, take quick action on approval requests for expenses, requisitions, purchase orders, recruitment vacancies and offers, and more.

- Quickly filter approval requests by sender or subject
- Review at a glance header and line item details, action history, and comments
- Approve or reject with or without comments, or request more information

Oracle Mobile Approvals for Oracle E-Business Suite is compatible with Oracle E-Business Suite 12.1.3 and 12.2.3 and above. To use this app, you must be a user of Oracle E-Business Suite, with mobile services configured on the server side by your administrator.



Oracle Mobile Approvals for Oracle E-Business Suite 1.0.0 is available on Apple's iTunes Store  for download.

This app works against Oracle E-Business Suite Release 12.1.3 and above and 12.2.3 and above.


Oracle Mobile Approvals requires set up on Oracle E-Business Suite instance to support connections from the mobile app. Following patches are required to be applied.


Additional Resources


New versions of the smartphone app Approvals for EBS has been released. Refer to following posts.

Please go to the blog post for latest version of Approvals app and post your comments.

Friday Aug 16, 2013

Understanding Workflow Errors - Part 2

This post is a follow up to Understanding Workflow Errors - Part 1 that deals with some of the most common errors raised when some of the Workflow Engine APIs are used. 

The way to trap and continue processing upon finding these errors is the same: evaluate the content of global variable WF_CORE.error_name.

Error message: 3103 Attribute 'ATTRIBUTE' does not exist for item 'TYPE/KEY'


The most likely reason for this to happen is a change in the Workflow definition. For instance, an attribute is added to the definition while there are open workflows  not having it. Then you attempt to set a value for it and notice new processes have no issues but the ones created before the change will fail.

Whenever possible these regressions should be foreseen and addressed in the design of the Workflow definition. A possible workaround is to add the supporting plsql code to check for the exception:

    if WF_CORE.error_name='WFENG_ITEM_ATTR' then
    end if;

Error message: 3120 Activity 'TYPE/ACTID' has no performer


All performers of notification activities are taken from view WF_ROLES. The most typical reason for this error is the originally assigned user/role has been expired. While the correct fix is to unexpire the performer and let the workflow complete, there are two possible ways to go around:

1. Change the value to the attribute holding the name of the performer. For instance, if there is an item attribute RECIPIENT pointing to expired user JSMITH then change it to an active user/role, say JHOPKINS. You will need to call this from a SQL*Plus session:

   WF_ENGINE.SetItemAttrText(<type>, <key>, 'RECIPIENT', 'JHOPKINS');

2. The other alternative is to change all references in ALL the workflow runtime tables to change anything related to JSMITH and change it to the taking over user JHOPKINS:

  l_attributes wf_parameter_list_t;
  WF_EVENT.AddParameterToList('OLD_USER_NAME', 'JSMITH', l_attributes);
  WF_EVENT.AddParameterToList('USER_NAME', 'JHOPKINS', l_attributes);
  WF_LOCAL_SYNCH.Propagate_Role(p_orig_system    => <orig system>, --for instance, 'FND_USR' or 'PER'
                                p_orig_system_id => l_orig_system_id, --for instance, 29984
                                p_attributes     => l_attributes);

As always, use care and try these APIs on a test environment before using them in production

Error message: 3133 Activity instance 'NAME' is not a notified activity for item 'TYPE/KEY'.


When it is needed that the processing of a workflow stops to wait for something to happen a BLOCK function can be used. When the block function runs the activity goes into NOTIFIED status. Then, to resume the processing, an explicit call to WF_ENGINE.CompleteActivity must be made. But if the activity is not in notified status then the API will raise WFENG_NOT_NOTIFIED.

There is no straightforward action to deal with this error. Rather, troubleshooting must be made to see why the activity did not go into NOTIFIED status. Sometimes the reason is that the workflow process continued to the next activity, leaving it complete or did not even reach it. A good way to understand what the workflow process has done is to run the seeded script wfstat.sql. Check the output and follow the execution path.

Friday Apr 12, 2013

Understanding Workflow Errors - Part 1

Workflow Engine and other public APIs throw a variety of user-defined exceptions to indicate specific Engine conditions. It is important that Workflow Developers and Administrators understand the meaning of these errors and know how to deal with them. In this post, we will cover some of the important Workflow Engine related errors and understand how to deal with them.

Engine Errors

3122: Duplicate item 'ITEM_TYPE/ITEM_KEY' could not be created


Cause: This error may be thrown from WF_ENGINE.CreateProcess when you attempt to create a new instance of a workflow item. This error indicates that the Item Type and Item Key combination you have used to launch a new workflow instance already exists.

Fix: Use an unique item key for that item type

3136: Item 'ITEM_TYPE/ITEM_KEY' cannot be accessed while synchronous process in progress.


Cause: This error may be thrown from WF_ENGINE.CreateProcess when attempt to create a new synchronous workflow instance while another synchronous workflow  instance is already running in the same session. All synchronous workflow instances are created with item key #SYNCH to make sure the workflow instances starts and completes in the same session.

Fix: Wait till the existing synchronous workflow instance completes before creating another one.

3146: Commit happened in activity/function 'ACTIVITY/FUNCTION'


Cause: While a workflow instance was executing, a commit was issued inside a PLSQL procedure associated to a workflow function activity before or after an error occurred in that PLSQL procedure. The Workflow Engine traps errors produced by function activities by setting a savepoint before each function activity. If an activity produces an unhandled exception, the engine performs a rollback to the savepoint, and sets the activity to the ERROR status. 

Fix: You should never commit within the PL/SQL procedure of a function activity. The Workflow Engine never issues a commit as it is the responsibility of the calling application to commit.

How to Catch these Errors?

Each error above is associated to an Error Code. Within your PLSQL code, you should following method to capture the specific error based on the error code to act on it.

   Wf_Engine.CreateProcess('ITEM_TYPE', 'ITEM_KEY', 'PROCESS_NAME');
    when others then
if (wf_core.error_name = 'WFENG_ITEM_UNIQUE') then
        -- Item already exists, use a unique item key
        Wf_Engine.CreateProcess('ITEM_TYPE', 'ITEM_KEY', 'PROCESS_NAME');
      end if;

Thursday Jan 17, 2013

Oracle Workflow - E-Business Suite vs Standalone

Oracle Workflow has following components that together provide business process management capabilities.

  • Workflow Builder - Windows desktop tool to create and customize workflow processes
  • Workflow Loader - Commandline tool to load workflow definition to database
  • Workflow Engine - PLSQL engine to execute workflow processes definitions
  • Workflow Notification Mailer - Background program to send e-mail notifications
  • Workflow Business Event System - PLSQL and Java based engine to process business events
  • Workflow Agent Listeners - Background program to process business events

Oracle Workflow has been available in two flavors until about 2007.

  1. Workflow Embedded in E-Business Suite
  2. Workflow Standalone

This post is aimed at clarifying how Oracle Workflow in E-Business Suite and Standalone were versioned and the current status of these two flavors.

Workflow Embedded in E-Business Suite

In E-Business Suite, Oracle Workflow is an integral part of foundation modules (FND) alongside Profiles, Concurrent Programs, OA Framework and so on and is shipped in ATG patchsets. For example, Workflow's Java classes are available under $JAVA_TOP like any other FND module, it's PLSQL packages are compiled into APPS schema, datamodel is available under APPLSYS schema and so on. This flavor is also called Embedded Workflow, meaning it was embedded in E-Business Suite.


Embedded Workflow's packaging, release, installation and configuration follows standard E-Business suite's processes. Embedded Workflow is  not identified with it's own version in E-Business Suite, instead it's codelevel is always identified using the current ATG Patchset level.

For example, if a Customer is on E-Business Suite Release 12.1.3, then their Workflow codelevel is R12.ATG_PF.B.Delta.3 (in addition to any Workflow specific one-offs that may have applied on the baseline) which is a standard way of identifying any FND module.

Current Status

Oracle Workflow embedded in E-Business Suite has the same lifetime as the ATG Patchset in that Oracle E-Business Suite. For example, if a Customer is on Oracle E-Business Suite 12.1.3, the workflow module being integral part of Oracle E-Business Suite installation, has no different lifetime or support policy than the R12.ATG_PF.B Patchset. When looking at Oracle Workflow module from E-Business Suite standpoint, it should not be viewed as a separate product rather at the ATG Patchset level.

For more information please refer to 

Workflow Standalone

All of Oracle Workflow's sub-components and the underlying data model were packaged, released, installed and configured completely independent of E-Business Suite until about late 2007.  A Workflow Standalone installation results in a special database schema like OWF_MGR specific to workflow alone unlike the standard APPS and APPLSYS schemas of E-Business Suite.

Oracle Workflow Standalone however was not shipped on it's own but using following release vehicles.

  • Oracle Database - Upto 10gR2
  • Oracle iAS - Upto 10.1.2
  • Oracle Warehouse Builder - Still packaged with OWB 11g

Oracle Workflow standalone product was available as part of above product offerings which helped non-E-Business Suite Customers to have Workflow (Business Process Management) capabilities such as implementing custom approval flows, document approval routing, sending notifications and so on.


Workflow Standalone had it's own versioning mechanism that was completely unrelated to E-Business Suite's. For example, following were some of the recent verisons.

  • Oracle Database 10gR2 - Oracle Workflow 2.6.4
  • Oracle iAS 10.1.2 - Oracle Workflow
  • Oracle iAS 9.0.4 - Oracle Workflow 2.6.3

Current Status

With the advent of better Business Process Execution standards and tools, Oracle Workflow was ceased to be shipped with Oracle Database and Oracle iAS. Oracle BPEL Process Manager (in Oracle SOA Suite 10g) and Oracle SOA Suite 11g are the recommended technologies to be considered by Customers who were using Oracle Workflow Standalone to implement their business processes.

To this effect, MOS Doc 391546.1 was published to announce obsolescence of Workflow Standalone with Oracle Database 10gR2 as the terminal release vehicle for the product. This note applies only to Workflow as a standalone product and does not affect Workflow embedded in E-Business Suite.

Workflow Standalone Obsolescence Notice

MOS Doc 391546.1 clarifies that Workflow as a standalone product will not be shipped in Oracle Database 11g and above. Since Oracle Database 10gR2 is the last release Workflow Standalone was shipped in, existing Oracle Database 10gR2 Customers who also use Workflow Standalone will continue to receive support as per Oracle Database 10gR2 support policies. This obsolescence notice should not be confused with support for Workflow embedded in E-Business Suite.


Oracle Workflow embedded in E-Business Suite is being actively maintained and enhancements implemented based on Customer requirements. We have some exciting days ahead of us for Oracle Workflow embedded in E-Business Suite.

Friday Nov 16, 2012

New Worklist features on 12.1.3

Following new Worklist features are available on E-Business Suite 12.1.3 via Patch 13646173.

Ability to view comments on top of a notification

If an action is performed on a notification such as Reassign, Request for Information or Provide Information, the recipient of the notification will see who performed the last action and the associated comment on top of the notification.

Reassigning a request for information notification

If an approver requests more information on a notification from it's submitter, the submitter now has two options

  1. Answer Request for More Information
  2. Transfer Request for More Information

If the submitter thinks the requested information can be provided by another user, he/she can transfer the request to the other user. Please note that only Transfer is supported for Request for More Information. Once transferred, the submitter cannot access the notification and provide the requested information.

Use actual sent date when reassigning a notification

The Sent field in notification header always showed the date on which the notification was first created. If the notification was later reassigned, the Sent date was not updated to show the last action date. This caused problems in following scenario

  1. Approval notification was sent to JACK on 01-JAN-2012
  2. JACK waited for 10 days before reassigning to JILL on 10-JAN-2012
  3. JILL does not see the notification as sent on 10-JAN-2012, instead sees it as sent on 01-JAN-2012
  4. Although the notification was originally created on 01-JAN-2012, it was sent to JILL only on 10-JAN-2012

The enhancement now shows the correct sent date in Worklist and Notification Details page.

Figure 1 - Depicts all the above 3 features

Related Action History for response required notification

So far it was possible to embed Action History of an response-required notification into another FYI notification using #RELATED_HISTORY attribute (Please refer to Workflow Developer Guide for details about this attribute). The enhancement now enables developers to embed Action History of one response-required notification into another response-required notification.

To embed Action History of one response-required notification into another, create message attribute #RELATED_HISTORY. To this attribute set a value during run-time in the following format.


The TITLE, ITEM_TYPE and ITEM_KEY are optional values.

  1. TITLE is used as Related Action History header title. If TITLE is not present, then a default title "Related Action History" is shown.
  2. If ITEM_TYPE is present and ITEM_KEY is not, For Example: {TITLE}[ITEM_TYPE]PROCESS_NAME:ACTIVITY_LABEL_NAME , the Related Action History is populated from parent item type of the current item.
  3. If both ITEM_TYPE and ITEM_KEY is present, For Example: {TITLE}[ITEM_TYPE:ITEM_KEY]PROCESS_NAME:ACTIVITY_LABEL_NAME , the Related Action History is populated from that specific instance activity.

Figure 2 - Depicts Related Action History feature

Tuesday Nov 13, 2012

Using GMail's SMTP and IMAP servers in Notification Mailer


GMail offers free, reliable, popular SMTP and IMAP services, because of which many people are interested to use it. GMail can be used when there are no in-house SMTP/IMAP servers for testing or debugging purposes. This blog explains how to install GMail SSL certificate in Concurrent Tier, testing the connection using a standalone program, running Mailer diagnostics and configuring GMail IMAP and SMTP servers for Workflow Notification Mailer Inbound and Outbound connections.

GMail servers configuration

SMTP server

Host Name
SSL Port  465
TLS/SSL required  Yes
User Name  Your full email address (including or
Password  Your gmail password

 IMAP server

 Host Name
 SSL Port
TLS/SSL Required
 User Name
 Your full email address (including or
 Password Your gmail password

GMail SSL Certificate Installation

The following is the procedure to install the GMail SSL certificate

  • Copy the below GMail SSL certificate in to a file eg: gmail.cer


  • Install the SSL certificate into the default JRE location or any other location using below command
  • Installing into a dfeault JRE location in EBS instance
        # keytool -import -trustcacerts -keystore $AF_JRE_TOP/lib/security/cacerts  -storepass changeit -alias gmail-lnx_chainnedcert -file gmail.cer
  • Install into a custom location

        # keytool -import -trustcacerts -keystore <customLocation>  -storepass changeit -alias gmail-lnx_chainnedcert -file gmail.cer
       <customLocation> -- directory in instance where the certificate need to be installed

  • After running the above command you can see the following response

        Trust this certificate? [no]:  yes
        Certificate was added to keystore

Running Mailer Command Line Diagnostics

  • Run Mailer command line diagnostics from conccurrent tier where Mailer is running, to check the IMAP connection using the below command

$AFJVAPRG -classpath $AF_CLASSPATH -Dprotocol=imap -Ddbcfile=$FND_SECURE/$TWO_TASK.dbc -Dport=993 -Dssl=Y -Dtruststore=$AF_JRE_TOP/lib/security/cacerts -Daccount=<gmail username> -Dpassword=<password> -Dconnect_timeout=120 -Ddebug=Y -Dlogfile=GmailImapTest.log -DdebugMailSession=Y

  • Run Mailer command line diagnostics from concurrent tier where Mailer is running, to check the SMTP connection using the below command 

 $AFJVAPRG -classpath $AF_CLASSPATH -Dprotocol=smtp -Ddbcfile=$FND_SECURE/$TWO_TASK.dbc -Dport=465 -Dssl=Y -Dtruststore=$AF_JRE_TOP/lib/security/cacerts -Daccount=<gmail username> -Dpassword=<password> -Dconnect_timeout=120 -Ddebug=Y -Dlogfile=GmailSmtpTest.log -DdebugMailSession=Y

Standalone program to verify the IMAP connection

Run the below standalone program from the concurrent tier node where Mailer is running to verify the connection with GMail IMAP server. It connects to the GMail IMAP server with the given GMail user name and password and lists all the folders that exist in that account. If the GMail IMAP server is not working for the  Mailer check whether the PROCESSED and DISCARD folders exist for the GMail account, if not create manually by logging into GMail account.

Sample program to test GMail IMAP connection

 The standalone program can be run as below

 $java GmailIMAPTest GMailUsername GMailUserPassword           

Standalone program to verify the SMTP connection

Run the below standalone program from the concurrent tier node where Mailer is running to verify the connection with GMail SMTP server. It connects to the GMail SMTP server by authenticating with the given user name and password  and sends a test email message to the give recipient user email address.

Sample program to test GMail SMTP connection

The standalone program can be run as below

 $java GmailSMTPTest GMailUsername GMailPassword recipientEmailAddress   


  • As is an external domain, the Mailer concurrent tier should allow the connection with GMail server
  • Please keep in mind when using it for corporate facilities, that the e-mail data would be stored outside the corporate network


« July 2016