Sunday, January 25, 2009

Migrating personalizations

//////////////////////////////////////////////////////////////////////////////////
MIGRATING PERSONALIZATIONS
============================
Profile Options used for Personalization are:
1. Disable Self-Service Personal: Default is "NO". If set to YES, it disables all personalizations. LINK VISIBLE. Revert back to the vanilla implementation.
2. FND: Personalization Region Link Enabled - Disables Region Personalize Links.
3. Personalize Self-Service Defn - Shows / Hides the global Personalize Page Link.
4. FND: Diagnostics (YES/NO) - Shows / Hides "ABOUT THIS PAGE" link.

Usual Production Profile Option settings -
Disable Self-Service Personal - NO
FND: Personalization Region Link Enabled - NO
Personalize Self-Service Defn - NO
FND: Diagnostics - NO

You have two options:
(a) Do personalizations manually, which is good if there are a very few of these.
(b) Migrate the personalizations to various instances if there are many.

STEPS
=====
1> Get the System Profile values for "FND: Personalization Document Root Path" on Source(X) and Destination(Y) servers. Under this Path, the personalized document is present.
Let us take these values as (X: "/a/b/c/") and (Y: "/p/q/r/") for this blog posting.
Profile value on X=?
Profile value on Y=?
2> On Source:
Logon to Functional Administrator responsibility ->Personalization Tab -> Import / Export -> Select the Page u have personalized -> export to file system
This automatically adds it under the corresponding folder inside "/a/b/c/".
It will show the path where it exported.
For example personalizing IExpense HomePG=> /a/b/c/oracle/apps/ap/oie/webui/customizations/site/0/HomePG.xml
3> Copy the file (PG.xml) and transfer it to the Destination server.
For the HomePG=> /p/q/r/oracle/apps/ap/oie/webui/customizations/site/0/HomePG.xml
4> Logon to Functional Administrator responsibility->Personalization Tab->Import / Export -> Exported Personalizations -> Select the PG.xml -> chose IMPORT FROM FILE SYSTEM.
This now allows the usage of the personalised page.
5> Soft Bounce the server (Clear Cache).

Enable / Disable / Delete Personlization
============================
When there is an error with the page, you will not be able to open the page to use Personalize the page. In this case you use:
Functional Administrator responsibility -> Personalization -> select the path of the doc (/oracle/apps/ap/oie/webui)-> Manage Personalizations -> Deactivate / Delete


Since Personalizations happen in separate folders than the seeded pages, they are not impacted by oracle apps patching.

Personlize Branding Image
===================
Profile Option Name: FND: Branding Size
# cd $OA_MEDIA/FNDSSCORP.gif
Set the profile option Corporate Branding Image for Oracle Applications to the name of an image file (GIF) that contains your corporate image.
Or, create an administrative-level personalization, for a specific page by setting the Image URI property on the corporateBranding page element to adifferent image file. This updates the image only for the specific usage on that page.

Bounce Server
============
1. Soft Bounce: Functional Administrator responsibility -> Core Services -> CACHING FRAMEWORK -> Global configuration -> Clear All Cache
2. Apache Bounce: The self service[OA framework] sessions will get killed. Form sessions will not be killed.
$COMMON_TOP/admin/scripts/adapcctl.sh stop
$COMMON_TOP/admin/scripts/adapcctl.sh start
3. Hard mid-tier Bounce: Not only the self service, but also D2K sessions [jInitiator] will be killed.

What and When to Bounce
===================
1. Changes to files in $JAVA_TOP requires an apache bounce.
2. Changes to files in MDS will require a Hard Bounce. Example, OA pages.
You can avoid this by coding this in CO or VO.
3. Personalization done through screen does not require bounce.
4. Personalizations imported require Soft bounce.
5. BC4J substitutions require Hard Bounce.

JDR_UTILS
==========
1. List all OA framework documents (personalizations, extensions, documents. etc) in a path (partial or full path).
DECLARE
BEGIN
jdr_utils.listdocuments('/oracle/apps/ap/oie',TRUE);
END;
2. List all Personalizations, extentions etc at various levels for a specific object.
DECLARE
BEGIN
jdr_utils.listcustomizations(p_document => '/oracle/apps/ap/oie/test/webui/HomePG');
END;
3. List all personlization and extention details in XML format.
DECLARE
BEGIN
jdr_utils.printdocument(p_document => '/oracle/apps/ap/oie/test/webui/customizations/site/0/HomePG');
END;
4. Delete document, personlization, extentions. You need the full path.
DECLARE
BEGIN
jdr_utils.deletedocument(p_document => '/oracle/apps/per/irc/candidateSelfService/server/customizations/site/0/VisitorAM');
END;

JDeveloper Version
==============
1. select 'Download patch 4573517' from ad_bugs where bug_number = '4125550' ;
If this returns a record, then download patch 4573517.
2. select 'Download patch 4141787' from ad_bugs where bug_number = ‘4017300' ;
If both the above SQL’s do not return a record, then download patch 4045639.
3. Select bug_number from ad_bugs where bug_number in ('4334965','4125550','4676589','5473858');

OA Framework package naming convention
===============================
Default Package name = [Your_Name].oracle.apps.[Module_Name].[Project_Name]
Page (PG) = [Your_Name].oracle.apps.[Module_Name].[Project_Name].webui
Controller (CO) = [Your_Name].oracle.apps.[Module_Name].[Project_Name].webui
Application Module (AM) = [Your_Name].oracle.apps.[Module_Name].[Project_Name].server
View Object (VO) = [Your_Name].oracle.apps.[Module_Name].[Project_Name].server
Entity Object (EO) = [Your_Name].oracle.apps.[Module_Name].[Project_Name].schema.server Association Object (AO) = [Your_Name].oracle.apps.[Module_Name].[Project_Name].schema.server
LOV = [Your_Name].oracle.apps.[Module_Name].[Project_Name].lov.server

Miscellaneous
===========
1. Using Functional Administrator responsibility -> Core Services -> Profiles to set profile "Personalize Self-Service Defn" and "FND: Personalization Region Link Enabled" will have it take effect faster and without soft bounce. This is better than using System Administrator responsibility.
These are used to enable Personalize link for Site and Region.
2. Extended COntroller should call the super() of parent controller class to be upgrade safe. This way, the code in parent class will be run (even after upgrade) and you will be able to do changes as you need.
4. Login screen in Oracle Apps uses APPLSYSPUB to connect and validate credentials. Selfservice screens connect to APPS schema using GUEST username (FND_USER). You can get this password by:
Profile Option: Guest User Password
JAVA: webappscontext.getEnvStore().getEnv("GUEST_USER_PWD")
SQL: select fnd_profile.value('GUEST_USER_PWD') from dual

SPEL (simplest possible expression language)
=================================
>> SPEL returns True/False.
>> SPEL can be used to hide a field conditionally; like field "a" will be displayed only when field "b" value > 0 . This can be achived by using SPEL expression in "Rendered"/"Read Only"/ "Enabled"/"Required" attribute of the field.
>> Examples:
${oa.FunctionSecurity.XX_TESTS} will return true if user is currently accessing OAF screen from function named XX_TESTS.
${oa.ViewObjectName.IsDunningYes} if VO attribute "IsDunningYes" value is FALSE then, the field will be disabled/hidden/non-required, depending upon where what field attribute you are writing the SPEL for.

No comments:

Post a Comment