Follow us: Connect on YouTube Connect on YouTube Connect on YouTube


Wednesday, 28 December 2016

Form-Personalization in Oracle Applications

The Form Personalization feature allows you to declaratively alter the behavior of Forms-based screens, including
  • Changing properties
  • Executing built-ins
  • Displaying messages
  • Adding menu entries

Why Personalization

  • Personalization is stored in tables rather than files
  • Will not have a bigger impact when you upgrade or apply patches to the environment
  • Can be moved easily through FNDLOAD from one instance to other
  • Can be restricted at site/responsibility/user level
  • Easy to disable/enable with click of a button.
  • Personalization will store who columns with which we have the ability to track who created   /modified it where as in CUSTOM.PLL we don’t have that ability.
  • Can be applied to new responsibilities/users easily.
  • Can be restricted to function or form


  • Pass data from one form to another through global variables.
  • Change LOV values dynamically
  • Enable/Disable/Hide fields dynamically
  • Display user friendly messages when required
  • Launch URL directly from oracle form
  • Execute PL/SQL programs through FORM_DDL package
  • Call custom libraries dynamically


  • You cannot create new items
  • You cannot move items between canvases
  • You cannot display an item which is not on a canvas (thus, individual flexfield segments cannot be displayed)
  • You cannot set certain properties such as the Data type of an Item.
  • You cannot change frames, graphics, or boilerplate
  • You cannot hide the item that currently has focus

  Profiles Options

Oracle has provided a very useful utility called Diagnostics in Oracle Application which can be used to debug the code. There are few profile which must be set in enable this utility. These are:
Hide Diagnostics menu entry: If the profile option is set as ‘No’, Only then it will appear in the help menu
Utilities: Diagnostics: If set to ‘Yes’, No APPS schema password is required otherwise APPS password required to use any of its feature

Sections of form personalizationSections of form personalization

Rules administer the personalization needs to be implemented on the form. Each rule contains a sequence number and the description. The rule can be activated or de-activated using the “Enabled” checkbox. The rule can be deleted when no longer needed.

Seq: The sequence in which rules will be processed. This is a value between 1 and 100, with 1 being processed first. The sequence of rules does not have to be unique. 

Description: Use this field to document the personalization you are making.

Enabled: Uncheck this checkbox to temporarily disable processing of a Rule. 


Conditions decide the event the rule to be executed. Each condition mainly contains three sections i.e. Trigger Event, Trigger Object and Condition.
Trigger Event: Select the event at which you want the Rule to be processed. You can pick from the list of standard events, or type in a specific event unique to the form.

Following are the events for triggering event
MENU1 to MENU15 Under ‘Tools’
SPECIAL1 though 15: under ‘Tools’
SPECIAL16 though 30: under ‘Reports’
SPECIAL31 though 45: under ‘Actions’

Trigger Object: Depending on the Trigger Event, this field may be Disabled, or Enabled and Required in which case it will validate against a List of Values.
Condition: This is an optional SQL code fragment that is evaluated when the Event occurs; if it evaluates to TRUE then the Actions are processed. The condition can contain any of the following:    

SQL functions and operators, such as AND, OR, TO_CHAR, DECODE, and NVL
References to bind variables (:block.field), including :system, :global and :parameter values. Use the 'Add Item...' button to assist with item names.
Calls to server-side functions that do not have OUT parameters

Enter-Query Mode: This checkbox controls whether the Rule should be processed if the event occurs during enter-query mode processing.


Context manages to whom the personalization should apply. This is similar to the concept of using profile options in Oracle Applications. The various levels are

  • Site
  • Responsibility
  • Industry
  • User


Actions decide the exact operation to be performed when the conditions and context return true during the runtime. Usually each rule should be associated with at least one action.
The types of actions available are…
  • Property
  • Message
  • Builtin
  • Special

Action Type: Property

The action type “Property” is used to set the properties of the objects. The various objects include “Item, Window, and Block etc”.
Actual object name defined in the form should be entered after selecting the object type.
Action Type Property

Select By Text: This button allows the user to select an object based on text appearing on the screen at the point in time that the Personalization form is invoked, including any changes that current rules might have performed.
Object Type: the type of object, including Item, Window, Block, Tab Page, Canvas, Radio button, View, Global Variable, Parameter, LOV, and Local Variable.

Target Object: based on the Object Type, the internal name of the object
Property Name: based on the Object Type, the properties that can be personalized.

Property Name for Items:
PROMPT_TEXT: the prompt of the item, typically next to or above the item
DISPLAYED: if False, the item is hidden
INITIAL_VALUE: the value to default on a new record. This can only be set in the WHEN-NEW-RECORD-INSTANCE event

UPDATE_ALLOWED: if False, prevents the user from changing the value on a queried row
LABEL: the label of a button, checkbox or radio button
NEXT and PREVIOUS_NAVIGATION_ITEM: to control the behavior of Tab and Shift+Tab
REQUIRED: if True, the user must enter a value
TOOLTIP_TEXT: the bubble tip on the item
X and Y_POS: the location on the canvas, in inches
WIDTH: the width, in inches
VALUE: copy a value into the item, as if the user typed it.

Property Name for Tab Pages:
DISPLAYED: If False, the tab page is hidden. Note that keyboard navigation may need to be changed to prevent access to items on the page
LABEL: the title of the tab
Property Name for Canvasses:
TOPMOST_TAB_PAGE: Determines the currently selected Tab Page
Property Name for Windows:
TITLE: the title of the window
X and Y_POS: the location within the MDI window, in inches

Property Name for Blocks:

  • DEFAULT_WHERE: the WHERE clause of the SQL statement controlling queried records
  • ORDER_BY: the ORDER_BY clause of the SQL statement of the queried records
  • INSERT_ALLOWED: if False, prevents the user from creating new records
  • UPDATE_ALLOWED: if False, prevents the user from updating any item in a queried record
  • DELETE_ALLOWED: if False, prevents the user from deleting queried records
Value: the new value. The appearance and validation of this field changes based on whether the property accepts Boolean values (True/False), numbers, a restricted set of values, or a string (See Evaluation of Strings below)
Get Value: This button gets the current property value of the object.

Action Type: Message

Message Type: either 'Show', 'Hint', ‘Warn’, 'Error', or ‘Debug’.
  • Show: displays a message of type Note, with an OK button.
  • Hint: displays text on the status bar
  • Error: displays a message of type Error, with an OK button. Processing is aborted afterwards.
  • Debug: displays a message of type Note, with an OK button. Only displays when ‘Display Debug messages’ is checked.
  • Warn: displays a message of type Question, with OK and Cancel buttons. If the user selects Cancel, processing is aborted.
Message Text: The text you want to display in the message.

Action Type: Builtin

Builtin Type: Name of the builtin, such as
Launch SRS Form – launches a concurrent program
Launch a Function – launches another form function
Launch a URL – launches any URL
DO_KEY – execute a form builtin
Execute a Procedure – execute any procedure using syntax exactly as you would in pl/sql code
GO_ITEM – navigate to a specific item
GO_BLOCK – navigate to a specific block
FORMS_DDL – issue dynamic sql statements
EXECUTE_TRIGGER – call a trigger.
SYNCHRONIZE – synchronize form on client and middle tiers
Call Custom Library – call a specific event you have coded directly in CUSTOM.pll
Create Record Group from Query – creates a record group dynamically. Assign this new record group to a list of values to limit data returned in the list.
Action Type: Menu

  • Menu Entry: SPECIAL1 through SPECIAL45
  • Menu Label: the text for the menu entry
  • Render Line before menu: will draw a line above the menu entry
  • Icon Name: the name of a .ico file
  • Enabled In Block(s): the blocks for which the menu entry should be enabled. Leave blank for all blocks .  
    Action Type Menu

Custom.pll Vs Form Personalization

Task/Business Requirement
Forms Personalization
Change LOV Query
<!--[if !supportLineBreakNewLine]-->
a. Create a New Record Group
b. Attach new RG to LOV
Change field properties like Mandatory/Display etc
Zoom to another screen
a. Enable Menu
b. Trap the Menu event
Disable a Menu entry when certain conditions are met
See Note-1
Display messages, warnings, hints etc
Display message with Questions, and conditionally execute code based on users response to the question
Execute PL/SQL Stored procedures
Change Navigation and Navigational Properties
Change block properties like “Query Where Clause” etc
Change is applicable across multiple screens, like Changing window title for all screens within one Organization/Responsibility
See Note
Show FND Messages with their tokens replaced
See Note-3
<!--[if !supportLineBreakNewLine]-->



Form Personalization Tables

                            Tables for Form Personalization


Share this article :


  1. Oracle Apps R12 and Oracle Fusion Cloud Self Paced Online Training Videos Published on Udemy with Life Time Access & Live Meeting Support to Clear your Queries. Avail 25% to 80% discount. Please Check for Never Before Offers and Discount Coupon Codes.