Oracle EBS R12 How to List and Interpret OAF Personalization

Overview The purpose of this document is to describe an option to review forms personalizations made in OAF pages.

Content How To Retrieve Programmatically ..............................................................................3 Script Output - Examples...............................................................................................4 Part 1: Soft Personalizations ......................................................................................4 Part 2: Hard Personalizations.....................................................................................6

Overview OAF Personalizations are an easy and fully supported way to adapt a certain page in Oracle EBS to fit better certain business needs. With OAF Personalizations can do a lot, but not in all cases such a change can be seen as easy. Personalizations can be very complex, especially when you use your own custom code to change the underlying validations. This HowTo concentrates on the option to validate which personalizations have been added to the screens. It allows you to get a better understanding how to read a personalization entry. To review if a certain page has been personalized, use the “about this page” link.

Volker Eckardt, Oracle Corporation

12/02/2011

In the upcoming screen go to the tab ‘Personalization’, here you can find further details. In the case below a personalization has been implemented in May 7, 2011, on function level. The object customized is the user summary table.:

Volker Eckardt, Oracle Corporation

12/02/2011

How To Retrieve Programmatically
I am using a simple script to derive the OAF personalization’s.
set serverout on DECLARE CHUNK VARCHAR2(32000); DOCID JDR_PATHS.PATH_DOCID%TYPE; V_POS NUMBER; V_LEN NUMBER; v_user_id varchar2(100); V_USER_NAME VARCHAR2(100); -- can be site, function, responsibility or user V_LEVEL VARCHAR2(100); -- example only FULLNAME VARCHAR2(200); CURSOR C1 IS SELECT * FROM JDR_PATHS WHERE -- CREATED_BY != 'INTERNAL' AND PATH_TYPE = 'DOCUMENT' --- this date determines where to start -vvv AND CREATION_DATE > SYSDATE - 300; -FUNCTION WHO (p_user_id varchar2) return varchar2 IS v_user_name varchar2(100); BEGIN SELECT USER_NAME INTO V_USER_NAME FROM FND_USER WHERE USER_ID = P_USER_ID; RETURN V_USER_NAME; EXCEPTION WHEN OTHERS THEN RETURN p_user_id; end; BEGIN DBMS_OUTPUT.ENABLE(100000); FOR R1 IN C1 LOOP FULLNAME := JDR_MDS_INTERNAL.GETDOCUMENTNAME(R1.PATH_DOCID); V_POS:= INSTR(FULLNAME,'/user/'); V_LEN:= LENGTH('/user/'); IF V_POS > 0 THEN V_LEVEL := 'Single User'; V_USER_ID := SUBSTR(FULLNAME,V_POS+V_LEN,INSTR(SUBSTR(FULLNAME,V_POS+V_LEN),'/')-1); v_user_name := who (V_USER_ID); END IF; V_POS:= INSTR(FULLNAME,'/responsibility/'); V_LEN:= length('/responsibility/'); IF V_POS > 0 THEN V_LEVEL := 'Single Responsibility'; V_USER_ID := SUBSTR(FULLNAME,V_POS+V_LEN,INSTR(SUBSTR(FULLNAME,V_POS+V_LEN),'/')-1); select responsibility_name into v_user_name from fnd_responsibility_vl where responsibility_id = V_USER_ID; END IF; V_POS:= INSTR(FULLNAME,'/function/'); V_LEN:= LENGTH('/function/'); IF V_POS > 0 THEN V_LEVEL := 'Single Function'; v_user_name := SUBSTR(FULLNAME,V_POS+V_LEN,INSTR(SUBSTR(FULLNAME,V_POS+V_LEN),'/')-1); END IF; V_POS:= INSTR(FULLNAME,'/site/'); IF V_POS > 0 THEN V_LEVEL := 'Site'; v_user_name := Null; END IF; CHUNK := JDR_MDS_INTERNAL.EXPORTDOCUMENTASXML(FULLNAME); IF INSTR(CHUNK,'replace with=') > 0 OR INSTR(CHUNK,'modifica') > 0 then DBMS_OUTPUT.PUT_LINE(RPAD('-',80,'-')); DBMS_OUTPUT.PUT_LINE('Path: '||FULLNAME); DBMS_OUTPUT.PUT_LINE('Level: '||V_LEVEL); IF V_USER_NAME IS NOT NULL THEN DBMS_OUTPUT.PUT_LINE('Name: '||V_USER_NAME); END IF; DBMS_OUTPUT.PUT_LINE('Date: created='||R1.CREATION_DATE||', last_updated='||R1.LAST_UPDATE_DATE); DBMS_OUTPUT.PUT_LINE('Who: created='||who(r1.created_by)||', last_updated='||who(r1.last_updated_by)); DBMS_OUTPUT.PUT_LINE(rpad('-',80,'-')); DBMS_OUTPUT.PUT_LINE(CHUNK); end if; END LOOP; -- DOCID := JDR_MDS_INTERNAL.GETDOCUMENTID(FULLNAME, TRUE, TRUE); -- doc_id := 79030; END; /

Volker Eckardt, Oracle Corporation

12/02/2011

Script Output - Examples
Generally we divide between ‘soft’ and ‘hard’ personalizations. The ‘soft’ version just moves a field around or sets a field to required, the ‘hard’ changes underlying code by code substitution. Although also the softversion may have to be retested after standard patching, the hard version is definitely a candidate for custom code review, because in this case you have changed the page behaviour and this has to be reimplemented in the latest shipped code again.

Part 1: Soft Personalizations
Example 1-1: Enable Region

In module PO, in Order area, the OrderlineDetails page has been touched 29th April by INTERNAL (can be anyone). He enabled the DetailsHdr area (rendered=true). Example 1-2: Add default Search Criteria

In module OZF, tradeplanning, on user level (for RSPILLEM only) in the dashboard, a default search criteria has been added to Party Name = Peugeot France.

Volker Eckardt, Oracle Corporation

12/02/2011

Example 1-3: Disable Elements

In a custom module XXTRV, in the request area of page Request details, three fields have been disabled. Example 1-4: Required Fields

In the Bank Area (IBY), on responsibility level ‘Purchasing Super User’, 4 fields have been set to required. Example 1-5: Field Prompts

In a custom module two prompts have been renamed.

Volker Eckardt, Oracle Corporation

12/02/2011

Example 1-6: Function Security

In the supplier area, a button “Create Site” has been disabled conditionally, based on an existing function XXPOS_ALLOW_SITE_CREA. This button will become visible if this function is assigned to you (via menu or grant).

Part 2: Hard Personalizations
Example 2-1: Substitute View Object

In this case the standard VO = View Object has been substituted with a custom VO. Usually such a change adds additional columns, or makes the underlying view more restrictive. Example 2-2: Substitute Entity Object

Here the standard EO = Entity Object has been substituted with a custom EO.

Please contact me if you need any further explanation!

Oracle Corporation Email: volker.eckardt@oracle.com Linkedin: http://de.linkedin.com/pub/volker-eckardt/0/8a7/430

Volker Eckardt, Oracle Corporation

12/02/2011

Sign up to vote on this title
UsefulNot useful