Sep 10, 2016

EBS: How to view Workflow processes and Notifications owned by all users

Workflow “Status Monitor” page in EBS is a “go to page” for developers/admins to view the workflow transactions/system generated emails/errors/transaction retries. This page can be accessed by any of the following navigation 
System Administrator -> Workflow -> Administer Workflow -> Status Monitor
Workflow Administrator -> Administer Workflow -> Status Monitor

By default, this page defaults to, processes owned by oneself (except sysadmin login). “Workflow Owned By” field become read only and defaults to the person name logged in.


Sysadmin login to the same function will show workflow owned by “All Employees and Users”. Here is the snapshot of page from sysadmin login.


Assigning the “System Administrator” or “Workflow Administrator” will not enable access to view all the processes by default. You can try any of the following 3 options to enable access.

Option-1) Login as Sysadmin and navigate to “User Management” responsibility -> users screen, locate user and assign role “Workflow Administrator Web (New)”.


Option-2) Go ahead and assign the responsibility “Workflow Administrator Web Applications”. This should enable the option of monitoring workflow processes owned by all.


Option-3) Login as Sysadmin -> navigate to “System Administrator” -> Workflow -> Administer Workflow -> Administration page, go to “Workflow Configuration” sub tab and change the value for field “Workflow System Administrator” to '*'.


Note that Option-3 will enable all users who have access to workflow monitor page to view workflow processes owned by all users. Keep that as your last bet.

Leave a comment below, if you find it useful.



Mar 14, 2016

EBS Error: Personalization is currently disabled. Your application might not work as expected


Hi there, are you on this page to debug the error "Personalization is currently disabled. Your application might not work as expected"? Is your EBS instance showing this warning?

Here are the screenshots of the error. 





First you need to find out the scope of this warning. Is it, shown on every EBS page (site level) or specific to a localization (application level).

You need to check the value of this profile option "Disable Self-Service Personal"


Profile: "Disable Self-Service Personal"

If you set to "Yes" at Site level all the OA Framework Extensions will be disabled. If you set to "Yes" at Application level then Personalizations related to localization will be disabled.

It should be set to No, so that all personalizations are back to active state.

Please leave a comment, if you find it useful.

Thanks

Mar 8, 2016

AME Rule migration from one instance to another

There are many articles that explains how to migrate AME rule from one instance to another using FNDLOAD. But very few emphasize on the correct order of migration of it's sub components.

To start with, there is no single seeded LCT file, that completely migrates AME rule. It's a mess if the correct order is not followed while migration.

This screenshot explains the order of AME rule sub components and corresponding LCT files for a simple AME rule migration. If you have new action types, approval groups etc, then find out correct LCT from the available list at 
$AME_TOP/patch/115/import
By default, AME rule becomes seeded on the target instance after migration. It's because, the owner name while exporting from source instance is set to seeded user 'Oracle 12.1.3'. If you don't want it as seeded rule, make sure you replace the owner name in all ldt files before running FNDLOAD UPLOAD commands.




Here are the sample FNDLOAD commands of each step.

Download from Source Instance
FNDLOAD apps/`pwd` 0 Y DOWNLOAD $AME_TOP/patch/115/import/amesmatt.lct ame_attribute1.ldt AME_ATTRIBUTES ATTRIBUTE_NAME="IREC_APPL_NEW_STATUS" TRANSACTION_TYPE_ID="IRCNTFAPPROVALS" APPLICATION_SHORT_NAME="PER"
 FNDLOAD apps/`pwd` 0 Y DOWNLOAD $AME_TOP/patch/115/import/amesmatr.lct ame_attribute_usages1.ldt AME_ATTRIBUTE_USAGES ATTRIBUTE_NAME="IREC_APPL_NEW_STATUS" TRANSACTION_TYPE_ID="IRCNTFAPPROVALS" APPLICATION_SHORT_NAME="PER"
FNDLOAD apps/`pwd` 0 Y DOWNLOAD $AME_TOP/patch/115/import/amesconk.lct ame_condition1.ldt AME_CONDITIONS APPLICATION_SHORT_NAME="PER" TRANSACTION_TYPE_ID="IRCNTFAPPROVALS" CONDITION_KEY="703735219:10280"
 FNDLOAD apps/`pwd` 0 Y DOWNLOAD $AME_TOP/patch/115/import/amespdan.lct ame_action1.ldt AME_ACTIONS APPLICATION_SHORT_NAME="PER" TRANSACTION_TYPE_ID="IRCNTFAPPROVALS" ACTION_TYPE_NAME="production rule" VARIABLE_NAME="IRECRUITMENT NOTIFICATION MSG SUBJECT" VARIABLE_VALUE="IRC_APPL_SUBMITTED_SUB"
FNDLOAD apps/`pwd` 0 Y DOWNLOAD $AME_TOP/patch/115/import/amesrulk.lct ame_rule1.ldt AME_RULES APPLICATION_SHORT_NAME="PER" TRANSACTION_TYPE_ID="IRCNTFAPPROVALS" RULE_KEY="703735219:10240"
 FNDLOAD apps/`pwd` 0 Y DOWNLOAD $AME_TOP/patch/115/import/amesacus.lct ame_action_usages1.ldt AME_ACTION_USAGES APPLICATION_SHORT_NAME="PER" TRANSACTION_TYPE_ID="IRCNTFAPPROVALS" RULE_KEY="703735219:10240"
Condition_key and Rule_key can be found from AME_CONDITIONS and AME_RULES tables. They help avoid hard coding ID values. If there already exists condition or rule with the key, FNDLOAD end dates existing and creates new date tracked entry.

Upload to Target Instance
Upload commands are pretty straight forward. Just need to use the right LCT file.

 FNDLOAD apps/`pwd` 0 Y UPLOAD $AME_TOP/patch/115/import/amesmatt.lct ./ame_attribute1.ldt
FNDLOAD apps/`pwd` 0 Y UPLOAD $AME_TOP/patch/115/import/amesconk.lct ./ame_condition1.ldt
FNDLOAD apps/`pwd` 0 Y UPLOAD $AME_TOP/patch/115/import/amesconk.lct ./ame_condition1.ldt
FNDLOAD apps/`pwd` 0 Y UPLOAD $AME_TOP/patch/115/import/amespdan.lct ./ame_action1.ldt
FNDLOAD apps/`pwd` 0 Y UPLOAD $AME_TOP/patch/115/import/amesrulk.lct ./ame_rule1.ldt
FNDLOAD apps/`pwd` 0 Y UPLOAD $AME_TOP/patch/115/import/amesacus.lct ./ame_action_usages1.ldt


Leave a comment below, if you find it useful.

Thanks


Feb 24, 2016

EBS: Application message changes not reflected?



Oracle Applications use messages to communicate with users. Typical messages include warnings and error messages, brief instructions, and informative messages on self-service pages, progress of concurrent requests, work done and anything else of interest or helpful to users.

It’s very common for developers to modify the AOL messages. Sometimes, it’s frustrating, when an it is modified and changes are not reflected as expected. This is the most common hurdle, for developer dealing with FND messages in combination with Workflow/AME. Clearing application cache and even apache bounce may not reflect the changes in workflow process. Newly created messages may not have this problem and reflected in application without any problem. If you are also facing such problem, this article might help you, keep reading…. :-)

Before we learn how to solve this problem, here is a quick introduction about AOL messages. Information about AOL messages is stored in three different repositories, each of which has its own format and significance.

1) Database: When you navigate to Application Developer -> Application -> Messages form and edit the changes, they are saved directly to database. Table name: FND_NEW_MESSAGES
When you query an AOL message with PLSQL functions, FND_MESSAGE.set_token or FND_MESSAGE.get etc…, most likely it returns the latest message changes because, it directly hits database.

2) Runtime: A runtime binary file stores the messages for a single application and a single language. The file is optimized for rapid lookup of individual messages by message NAME. For example, all Human Resources, English language messages are stored at 
$PER_TOP/$APPLMSG/US.msb aka $PER_TOP/mesg/US.msb
When you change a message via application developer -> messages form, corresponding .msb file is not updated automatically. You will have to run “Generate Messages” program for a specific language and application with a specific option of “DB_TO_ RUNTIME”. This would generate and replace the .msb file with the latest contents. Generally, OC4J OAF pages use the .msb files, for message lookup and fetching the message text. So, running this concurrent program and clearing global application cache via functional administrator, should reflect the new changes. 

3) Script: Messages stored in .msg files. Usually, not used by application but used by developers and DBAs to transfer messages from one instance to another, especially during upgrades and migrations. Once the msg files are copied to new instance, “Generate Messages” concurrent program should be run with eighter “SCRIPT_TO_DB” or “SCRIPT_TO_RUNTIME” options, which would eventually load the messages to database or msb file. 

OK, enough of theory, let’s discuss the actual problem, message changes are not reflected in workflow processes. Workflow process maintains it’s own version of AOL object cache and won’t reset upon clear application cache and OC4J server bounce. That’s why, even a PLSQL function to get FND message that is part of workflow process will return the cached message text.

Try the following steps in the same sequence to reflect the new changes in workflow/AME process.
a) Changes to AOL message via application developer

b) Run “Generate Messages” with “DB_TO_RUNTIME” option and make sure US.msb file is overwritten at $PER_TOP/mesg (path for human resources for example)

c) Navigate to System Administrator -> Concurrent -> Manager -> Administer form and query for “Workflow Agent Listener Service”, click on Restart button and wait for it complete. If it is struck at restart, click on Activate button to re-activate. This would clear the workflow AOL object cache and should reflect the latest changes.

d) If the message changes are still not reflected, don’t blame me… just not your lucky day today, go for apache bounce and try your luck. :-)

Screenshot


Did that help? Or want to correct/add something, please write a comment below.



Cheers
Suresh