Skip to main content

How to Remove/Disable OA Framework Personalizations


However, after creating the personalization, the page is no longer accessible and you need to back-out or remove this personalization to allow access to the page. There are a few methods to remove the 'faulty' personalization from the OA Framework page.

Introduction:

Before starting to delete personalizations it's useful to understand some background how these are stored in Applications.

All page definitions for OAF pages are stored as (XML) document in the MDS repository (located in the database). The reference to this is a document name with following format:

/oracle/apps/<product>/<subcategories>/<pagename>

For example the Home Page document name is:
/oracle/apps/fnd/framework/navigate/webui/HomePG

When creating personalizations in the OAF page the above mentioned document is not changed. Instead a separate document is created in the MDS repository containing the personalization(s) done. For each 'level' of personalization one document is stored with following format

/oracle/apps/<product>/<subcategoris>/customizations/<personalizationlevel>/<personalizationid>/<pagename>

For example for the OA Framework home page the following document may exist
  
Personalizations made at SITE level are saved in following document

  /oracle/apps/fnd/framework/navigate/webui/customizations/site/0/HomePG

Personalizations made for Function = OAHOMEPAGE are saved in following document
/oracle/apps/fnd/framework/navigate/webui/customizations/function/OAHOMEPAGE/HomePG

Personalizations made for Organization = 204 are saved in following document
/oracle/apps/fnd/framework/navigate/webui/customizations/org/204/HomePG

Beware that each document may include multiple personalization actions. When adding a personalization at SITE level the customization document for that level is updated. This makes that if adding a specific personalization introduces a problem and the personalization document is deleted also all other personalizations made at that level will be lost!!

Method 1 - Using responsibility Functional Administrator > Personalization 

This is the recommended method to remove personalization (if it's not possible to access the OAF page anymore). It uses the default pages for maintaining personalization and only affects the OAF page involved.

1) Login to Oracle Applications as SYSADMIN

2) Select Functional Administrator [resp] > Personalization [tab]

3) Fill in the criteria to locate the OA Framework page and press Go
    Tip: Check 'Personalized' checkbox to only query the pages having a personalization

4) Identify the correct page from the results returned

5) Depending on the situation you have following options:
 
    Cause of failure is known (e.g. last change made) and can be removed

  • Click pencil "Personalize Page" and confirm personalization levels.
  • Revert the personalization step causing the problem
  • Apply the changes
  • Retest if the page is now accessible again.
   Cause of the failure is unknown  or can not be simply removed
  • Click pencil "Manage Personalizations"
  • Now Deactivate or Delete the personalization document (*)
(*) The difference between Deactivate and Delete is that in the case of Deactivating the personalization document in the MDS repository is not removed, while this is the case for Delete. Especially when there are multiple personalization documents, but it's not clear which causes the problem the 'Deactivate' allows these to be tested individually without the need to reload or recreate the personalization documents.

Method 2 - Temporary disable all Personalizations

In case it's not possible to determine the exact document name of the OAF page failing the following method can be used. The caveat of this method however is that during the change of profile option mentioned this makes *all* personalizations will be disabled so will also affect other pages. So only to be used on TEST environment or during maintenance window for PROD environment.

1) Login to Oracle Applications as SYSADMIN and select System Administrator [resp] > Profile - System

2) Update the Profile Option: "Disable Self-Service Personal" = YES
    This can be set at SITE and APPLICATION level

3) Navigate to the OAF page personalized (may be done using another user)
    It should now open since personalizations are not taken into account

4) Enter the personalization UI using the 'Personalize' link

5) Depending on the situation you have following options:
  
    Cause of the failure is known (e.g. last change made)

  • Revert the personalization step causing the problem
  • Apply the changes
    Cause of the failure is unknown   
  • Click pencil "Manage Personalizations"
  • Now Deactivate or Delete the personalization document (*)
(*) The difference between Deactivate and Delete is that in the case of Deactivating the personalization document in the MDS repository is not removed, while this is the case for Delete. Especially when there are multiple personalization documents, but it's not clear which causes the problem the 'Deactivate' allows these to be tested individually without the need to reload or recreate the personalization documents.

6) Login again and select System Administrator responsibility

7) Update the Profile Option: "Disable Self-Service Personal" = NO (for the level it was set to YES)

8) Retest the OAF page is rendered fine again

Method 3 - Removing personalization document in the database using JDR_UTILS package

This method only requires access to the database and must be used with great care to ensure the correct document is deleted. For this method you need to know the document name of the OAF page with the personalization (See Introduction section)

1) Login to SQLPlus as APPS user

2) Run the following commands to show the available personalization documents

SQL> set serverout on;
SQL> exec jdr_utils.listcustomizations('/oracle/apps/<product>/<subcategories>/<pagename>');

e.g.
SQL> exec jdr_utils.listcustomizations('/oracle/apps/fnd/framework/navigate/webui/HomePG');

3) This returns the documentnames of the personalization document for this OAF page. For example for SITE level on Homepage

     /oracle/apps/fnd/framework/navigate/webui/customizations/site/0/HomePG

4) Backup the personalization document by exporting it to a file (so it can be reloaded if needed). Make sure you are backing up the correct document. It should have "/customizations/" in the document name.

From the web server, use the OS command:

adjava -mx128m -nojit oracle.jrad.tools.xml.exporter.XMLExporter \
/oracle/apps/<product>/<subcategories>/customizations/<personalizationlevel>/<personalizationid>/ /<pagename> \
-username apps \
-password <appspwd> \
-dbconnection "(description=(address_list=(ADDRESS=(PROTOCOL=TCP)(HOST=<myHost>)(PORT=<port>)))(CONNECT_DATA=(SID=<SID>)))" \
-rootdir /tmp
  
This create an XML document in the /tmp directory, like

/tmp/oracle/apps/<product>/<subcategories>/<personalizationlevel>/<personalizationid>/<pagename>.xml

5) Delete the personalization document. Be VERY careful you are deleting the personalization and not the base document.


SQL> exec jdr_utils.deletedocument('/oracle/apps/<product>/<subcategories>/customizations/<personalizationlevel>/<personalizationid>/<pagename>');

For the home page example this is:
SQL> exec jdr_utils.deletedocument('/oracle/apps/fnd/framework/navigate/webui/customizations/site/0/HomePG');

6) Restart Apache to ensure that Java caching is cleared

7) Retest the issue and confirm that OAF page is not accessible again

8) To restore the personalization document deleted, use the command (optional)

-adjava -mx128m -nojit oracle.jrad.tools.xml.importer.XMLImporter \
/tmp/oracle/apps/<product>/<subcategories>/<personalizationlevel>/<personalizationid>/<pagename>.xml \
-username apps \
-password apps \
-dbconnection "(description=(address_list=(ADDRESS=(PROTOCOL=TCP)(HOST=<myHost>)(PORT=<port>)))(CONNECT_DATA=(SID=<SID>)))" \

-rootdir /tmp

Comments

Popular posts from this blog

SQL Query to extract Oracle Purchase Order Information

SELECT   poh.po_header_id,    poh.type_lookup_code PO_TYPE,   poh.authorization_status PO_STATUS,   poh.segment1 PO_NUMBER,   pov.vendor_name SUPPLIER_NAME,   povs.vendor_site_code Location,   hrls.location_code Ship_To,   hrlb.location_code Bill_to,   pol.line_num ,   msib.segment1 Item,   pol.unit_price,   pol.quantity,   pod.amount_billed Amount,   pod.destination_subinventory,   ppf.full_name Buyer_Name,   poh.closed_Code  FROM   PO_HEADERS_ALL poh,   PO_LINES_ALL pol,   mtl_system_items_b msib,   PO_LINE_LOCATIONS_ALL poll,   PO_DISTRIBUTIONS_ALL pod,   po_vendors pov,   po_vendor_sites_All povs,   hr_locations_all hrls,   hr_locations_all hrlb,   per_all_people_f ppf,   po_line_types polt WHERE   1                         =1 AND polt.line_type_id    = pol.line_type_id AND povs.vendor_site_id     = poh.vendor_site_id AND pov.vendor_id           = poh.vendor_id AND pol.item_id             = msib.inventory_item_id AND msib.organization_id  

Query to find Operating Unit, Business Group and Legal Entity Information

SELECT   DISTINCT   hrl . country ,                  hroutl_bg . name              bg ,                  hroutl_bg . organization_id ,                  lep . legal_entity_id ,                  lep . name                    legal_entity ,                  hroutl_ou . name              ou_name ,                  hroutl_ou . organization_id   org_id ,                  hrl . location_id ,                  hrl . location_code ,                  glev . flex_segment_value FROM     apps . xle_entity_profiles   lep ,         apps . xle_registrations   reg ,         apps . hr_locations_all   hrl ,         apps . hz_parties   hzp ,         apps . fnd_territories_vl   ter ,         apps . hr_operating_units   hro ,         apps . hr_all_organization_units_tl   hroutl_bg ,         apps . hr_all_organization_units_tl   hroutl_ou ,         hr_organization_units   gloperatingunitseo ,         apps . gl_legal_entities_bsvs   glev WHERE    lep . transacting_entity_flag   =   'Y'         AND   l

List of iExpenses Tables

List of iExpenses Tables  Table Name Description AP_EXPENSE_REPORT_HEADERS_ALL Expense report header information AP_EXPENSE_REPORT_LINES_ALL Expense report lines information AP_EXP_REPORT_DISTS_ALL Expense report distribution information. It contains the accounts against each expense report line. AP_CREDIT_CARD_TRXNS_ALL Table to store the corporate credit card transactions that are sent by the banks. These lines are saved as expense lines when the user creates the expense lines for credit cards AP_NOTES Table to store the comments entered by approvers and auditors     Setup tables   AP_EXPENSE_REPORTS_ALL This table contains the header level information about the expense templates AP_EXPENSE_REPORT_PARAMS_ALL This table contains the detail level information about the expense templates AP_POL_CAT_OPTIONS_ALL Table to store the policy options AP_POL_CONTEXT Table to store the policy context     AP_POL_LOCATIONS_TL Table