Customization Reduction with Forms and OA Framework
PersonalizationsWritten by Susan Behn
Edited and Presented by Karen Brownfield
Agenda⢠Why
â Business Benefit⢠What
â Overview of Personalization Tools⢠How
â Forms Personalization Examplesâ OA Framework Personalization Examplesâ Migration to other instances
⢠Whereâ References
Business Benefit - $aves Money!Declarative Menu DrivenBusiness User Friendly
Adapt terminology to your business without coding
Speed up data entry âmove or eliminate fields
Attach extensions âseamless processing power
Add validations âreduced error correction
Implement security policies
Survives patching
Less Development
Time
Reduce Processing
Time
Reduce Audit Costs
Reduce Training Time
Reduce Upgrade
Costs
Overview⢠Personalizations â declaratively alter behavior or
appearance using tools provided by Oracle⢠Personalization Tools
â Forms personalizations⢠Professional Forms 6i or 10g
â OA Framework Personalizationâ CUSTOM.pll
⢠Programmatic tool prior to 11.5.10⢠Professional forms only⢠Not supported in 11g database⢠Requires Unix access
Forms Personalizations⢠Requires Superuser â may require some sql skills⢠Post patch/upgrade validation process
â Survives most patches / upgrades⢠Can do most changes formerly done in
CUSTOM.pll⢠Effective immediately â no coding, no compiling⢠Better environmental security â done through the
forms⢠If CUSTOM.pll still in use, forms personalizations
will fire first for the same event
Forms Personalizations CanâŚâ˘ Speed up data entry
â Hide fields, tabsâ Set default valuesâ Provide information, call other pages/forms
(zoom), execute processes from Tool menu⢠Improve security
â Make fields requiredâ Restrict insert or update
⢠Adapt to your business processâ Change prompts, labelsâ Enforce Uppercaseâ Alter List of Values (LOV)
OA Framework Personalizations⢠Used in self-service forms⢠Standard starting with 11.5.10⢠Superuser with minimal technical expertise⢠Effective immediately â no coding, no
compiling⢠Done through the forms
Framework Personalizations CanâŚâ˘ Speed up data entry
â Hide Columnsâ Reorder Columnsâ Set default values
⢠Improve securityâ Remove Buttonsâ Change Field Attributes â make fields required
⢠Adapt to your business processâ Change prompts, labels, headers, button namesâ Add Items (Buttons, Fields, Tips and more)
Forms Personalizations⢠Hide Diagnostics menu entry
â Set to No to see the menu⢠Utilities: Diagnostics
â Set to No to require apps password
Accessing Forms Personalization ⢠Access the form or function needing personalization⢠Help Diagnostics Custom Code Personalize
Forms PersonalizationCondition Tab
⢠Trigger event determines when the rule firesâ Use standard trigger events (see next slide)â Can use specific events unique to the form *Caution*
⢠Find these events using Help Diagnostics Custom Code Show Custom Events
⢠Trigger object depends on trigger eventâ Example: WHEN-NEW-BLOCK-INSTANCE requires block name
Forms PersonalizationStandard Trigger Events
⢠WHEN-NEW-FORM-INSTANCEâ Security rules, Navigation rules, Visual attributes
⢠WHEN-NEW-BLOCK-INSTANCEâ Same as WHEN-NEW-FORM-INSTANCEâ Message rules
⢠WHEN-NEW-RECORD-INSTANCEâ Default values
⢠WHEN-NEW-ITEM-INSTANCEâ Message rulesâ Default values dependent on entry of another
item
Forms PersonalizationStandard Trigger Events
⢠WHEN-VALIDATE-RECORDâ Populate hidden fieldsâ Additional validations
⢠SPECIALnâ Populate tools menu (SPECIAL 1-15)â Populate reports menu (SPECIAL 16-30)â Populate actions menu (SPECIAL 31-45)
⢠MENUnâ Populate tools menu (MENU1-15)
Forms PersonalizationCondition Tab
⢠Conditionâ Optional SQL code fragment to limit scope of ruleâ References bind variables (:block.field)
⢠Processing Modeâ Whether rule should be invoked in query mode,
or entry mode, or both
Forms Personalization - Context⢠Who does this rule apply to? ⢠Level at which rule will apply
Site ResponsibilityUser â Use this for testing rulesIndustry (For future use) Tip: For initial
development, set context to your user id
Forms PersonalizationProperty Actions
⢠Sequence â non unique (1 â 100)⢠Type â property, message, built-in, menu⢠Description â (Optional)⢠Language â use to change prompts for language
Prompts change depending on action type
Example 1: Display Message⢠What
â GL Journal Entry â Remind users to change the period name the first 20 days of the fiscal year
⢠Period name defaults to latest open period⢠Why
â During year end close, the final period is held open longer resulting in journals being keyed to wrong period
â Delays in closing resulting in lost time and moneyâ Reduce time for training through use of
automated messages
Example 1: Display Message⢠How
Condition is checked when the user accesses the journal name field
Enter header details
Message appears Jan 1 â Jan 20 every year
Example 1: Display Message
⢠Message Typesâ Show â Informational Messageâ Hint â Appear on status barâ Error â Requires user response â raises form_trigger_failureâ Debug â Only displays if debug mode is set to Show Debug
Messagesâ Warn â Informational message with caution symbol â raises
form_trigger_failure
Example 2: Restrict Data Access⢠What
â Restrict users from entering or retrieving invoice if user is the supplier
⢠Whyâ Audit controlâ Theft prevention
⢠Howâ Requires minimal SQL skills
Example 2: Restrict Data Access⢠Enter header and condition tab details⢠WHEN-NEW-BLOCK-INSTANCE for the invoice
block controls access as the invoice header level
Example 2: Restrict Data Access
⢠Change the default where clause for the invoice block to prevent retrieval of employee invoices based on user id
vendor_id NOT IN(SELECT vendor_idFROM ap_suppliers pv ,
fnd_user fusrWHERE fusr.user_id = fnd_profile.value('USER_ID') AND fusr.employee_id = pv.employee_id )
Example 3: Menu Entries⢠What
â Create ability to display invoice id from Tools menu
⢠Whyâ Invoice approval workflow doesnât set a user
key and thus invoice_id is required to find the workflow
Example 3: Menu Entries⢠How
â Step 1 â establish the menu entry⢠Trigger Event = WHEN-NEW-FORM-INSTANCE
Use WHEN-NEW-FORM-INSTANCE for visual changesSuch as establishing menu entries
⢠Menu action type only displays the menu
Use add block button to choose blocks where this menu will be enabled or leave null for all blocks
Example 3: Menu Entries
Example 3: Menu Entries⢠Step 2 â create the action for the menu entry
Trigger Event = MENU# from previous slide
Example 3: Menu Entries⢠Step 2 â create the action for the menu entry
Use validate button to check sql fragmentUse validate button to check sql fragment
Example 4: Masking Data⢠What
â Mask the Supplier tax id on the Invoice Inquiry form
⢠R12 Supplier form masks this ID⢠Why
â Uniformity in securing sensitive data
Example 4: Masking Data⢠CONCEAL_DATA replaces data with asterisks
Use Select By Text button to find correct object by prompt
Donât need to know object name
Example 4b: Block Entry into Field⢠Add 2nd sequence to same rule to block
opening LOV
Same rule used to conceal the data
Example 5: Changing LOVs⢠What
â Remove Supplier Taxpayer ID from the LOV for the Supplier Name on the find window
⢠R12 Supplier form masks this ID⢠Why
â Uniformity in securing sensitive data⢠How
â Requires SQL originally used for LOV
Example 5: Changing LOVs⢠Taxpayer ID is on LOVs for Supplier Name in
Find windowsâ Supplier form has moved to OA Framework in R12
Example 5: Changing LOVs⢠Create a new record group replacing tax id with end date
Must have the same number of fields as existing Record group
Example 5: Changing LOVs⢠Assign the new record group to the LOV used
for Supplier name
Record group created in previous slide
Example 5: Changing LOVs
⢠Result
⢠Additional stepsâ Mask the tax id here and on the find windowâ Replace the tax id with the end date for the
supplier number LOV
Forms PersonalizationOther Frequently Used Built-ins
⢠Launch SRS Form â runs concurrent request⢠Launch a Function â call another form⢠Launch a URL⢠DO_KEY
â DO_KEY(âNEXT_BLOCKâ) will force query execution for find window
⢠Execute a Procedure â use to execute any plsql code⢠GO_ITEM, GO_BLOCK â change navigation⢠EXECUTE_TRIGGER
â Execute form trigger, not database triggerâ Use after setting default values to ensure internal code executes
Forms Personalization - Tips⢠If you disable a tab page, you may need to disable items
on the tab page⢠Exit and re-open the form to see personalization
changes⢠Help Diagnostics Custom Show Custom Events
- shows what events are firing⢠Use debug messages before and after events⢠Apply Now button - see the results
â Does not always work if dependant on the results of another action
⢠Turn custom code off - Help Diagnostics Custom Code Off
Forms Personalization - Upgrades⢠After upgrades, go to the personalization for each form
and choose Tools Validate All ⢠Tools Administration will show personalized forms
â Press the Find button with the Form Name blank
OA Framework PersonalizationsProfile Options â Impacts Definition
⢠Personalize Self-Service Defnâ Yes to allow âPersonalizeâ button to appear at the top of the page
⢠FND: Personalization Region Link Enabledâ Yes to display all the regional links above each region â Minimal to display key regional links
⢠Disable Self-Service Personalâ Yes will disable all personalizations at any level
⢠FND:OA:Enable Defaultsâ Yes will allow defaulting via personalizations
⢠FND: Diagnosticsâ Turns on âAbout this Pageâ
⢠Shows existing personalizations
OA Framework PersonalizationsProfile Options â Impacts Migration
⢠FND: Personalization Document Root Pathâ Required to migrate personalizationsâ Set this profile option to a tmp directory with open (777) permissions
⢠FND Xliff Export Root Pathâ Where Xliff files are exported for translated personalizations
⢠Xliff Import Root Pathâ Where Xliff files are uploaded from for translated personalizations
Personalize Self-Service Defn = Yes
FND: Personalization Region Link Enabled= Yes
FND: Diagnostics = Yes
OA Framework Examples⢠Remove button⢠Change prompt⢠Hide/reorder column⢠Set initial value⢠Display a field
Example 6: Remove Button⢠What
â Remove the Import Spreadsheet button in iExpenses for responsibility utilized for procurement card transactions
⢠Whyâ Remove buttons that could lead to errors
⢠No cash or out of pocket transactions for procurement cards
Example 6: Remove Button⢠Biggest challenge â finding the item to personalize
â Search
â Simple View
â Complete View
â Expand All
â Collapse All
â Focus
â <ctrl>F
Example 6: Remove Button⢠Our favorite â Complete View, Expand All,
then <crtl> F
Click pencil to edit
Example 6: Remove Button⢠Set rendered = False, click Apply button
Options for personalization change based on object type
Personalization Levels / Inheritance⢠Default/original values are shown in the first
column, current value and level in last column⢠Values inherit the definition from the level
immediately above unless changed⢠Personalizations at lower levels override
personalizations at higher levels⢠Order of precedence from highest to lowest:
â Functionâ Siteâ Operating Unitâ Responsibility
Default Current / level
Example 7: Change Prompts⢠What
â Change Job to Job Short Name on Contractor Request in iProcurement
⢠Whyâ Clarify name of field to avoid confusion and to
match terminology used in the business
Example 7: Change Prompts⢠How
â Click the Personalize Page button and find the Job item using <ctrl> F
Example 8: Hide/Reorder Columns in a Table
⢠Whatâ Hide the Duplicate column to prevent users
from duplicating expense reportsâ Reorder the columns
⢠Whyâ Hastily duplicating expense reports increased
error ratesâ For the procurement card usage of
iExpenses, this functionality did not applyâ Reorder columns to match desired data entry
flow for faster entry
Example 8: Hide/Reorder Columns in a Table
⢠Howâ Click the Personalize Page butteonâ Use strategies on next slide to find the
Duplicate column
Example 8: Hide/Reorder Columns in a Table
⢠The button to duplicate is called a Switcherâ Switchers allow a user to âswitchâ to another
function⢠Finding tip
â Look for other columns in same table ⢠Report Total⢠Purpose
Click pencil to edit
Example 8: Hide/Reorder Columns in a Table
⢠Find the table to reorder table columns
Click the reorder icon at the table level
Example 8: Hide/Reorder Columns in a Table
⢠Check personalization level⢠Use arrows to move fields up or down
Example 9: Set Initial Values⢠What
â Set the initial value for the Purpose at the Responsibility level as follows:
⢠Expense report responsibilitiesâ Purpose = âInternet Expensesâ
⢠Procurement card responsibilitiesâ Purpose = âProcurement cardâ
⢠Whyâ Save time
⢠Streamline data entryâ Ensure purpose is correct
Example 9: Set Initial Values⢠How
â Remember to set profile option FND:OA:EnableDefaults to Yes
Example 9: Set Initial Values⢠Set the initial value based on the
responsibilityâ In this case, the value is set at the
responsibility level
Example 10: Add a Field⢠What
â Add Suggested Buyer to first page of Contractor Request and include LOV
⢠Whyâ Field not available for checkout for Contractorâ Users want to enter all information for request
on the same screen
Example 10: Add a Field⢠Scroll down to find the view object
Click on PoRequisitionLinesVO This is the view object.This name will be needed later
Expand All
Example 10: Add a Field⢠The suggested buyer id is available for this page
⢠A LOV will translate buyer id to buyer nameScroll down more to find available view attributes
Example 10: Add a Field⢠LOV available on checkout page of Requisition
â Note: although not same tab, still same formâ If LOV not available somewhere in form, must be
created in JDeveloper
To find the LOV, choose Diagnostics
Example 10: Add a Field⢠Finding the LOV
â Choose Show Log on Screen with Statement (1) log level
â Navigate back to the checkout screen and click on the LOV
Example 10: Add a Field⢠Scroll down opened LOV to see the
diagnostics⢠LOV path for suggested buyer is shown
belowThis will be needed later
Example 10: Add a Field⢠Return to Create Contractor Request, Click the
Personalize Page button⢠Find the table layout and click create item icon
Click create item icon
Example 10: Add a Field⢠Enter the following values
Select Message Lov Input to make this a LOV validated field
Enter any unique name
LOV Path from slide 78
Example 10: Add a Field⢠Scroll down and continue entering the
followingEnter Prompt
Enter View Attribute from slide 75
Enter View Object from slide 74
Example 10: Add a Field⢠The item is now created, but the LOV must
be mappedâ Define 1st map as shown on next page, then
click this icon again to create 2nd map as shown on next page Click on the
mapping icon
Example 10: Add a Field⢠Click the create icon
again shown on slide 79⢠Create a Form Value to
store the Buyer ID
Other Items That Can Be Added⢠DFFs (if in query)⢠Buttons⢠Text and Images⢠Messages (Data Fields) of many styles⢠Tips⢠Raw Text
Customizations or Personalizations, whether they are protected or non protected, allow you to fundamentally
change the behavior of the application.
This could interfere with intended functionality.
Use with caution!
TEST! TEST! TEST! TEST! TEST!
Migration to Other InstancesForms Personalizations
⢠Download for a specific form:â FNDLOAD <userid>/<password> 0 Y DOWNLOAD
$FND_TOP/patch/115/import/affrmcus.lct <filename.ldt> FND_FORM_CUSTOM_RULES form_name=<form name>
⢠Download all personalizationsâ FNDLOAD <userid>/<password> 0 Y DOWNLOAD
$FND_TOP/patch/115/import/affrmcus.lct <filename.ldt> FND_FORM_CUSTOM_RULES
⢠Uploadâ FNDLOAD <userid>/<password> 0 Y UPLOAD
$FND_TOP/patch/115/import/affrmcus.lct <filename.ldt>
Migration to Other InstancesOA Framework Personalizations
⢠Migrate OA Framework Personalizations from the Functional Administrator Responsibilityâ Export to directory defined in FND: Personalization Document
Root Path â FTP to target instanceâ Import from Document Root Path directory
References⢠Oracle Application Framework Personalization
Guide⢠Oracle Applications User Interface Standards for
Forms-Based Products⢠Oracle Applications Developerâs Guide⢠Oracle Applications System Administratorâs
Guide⢠Oracle Applications User Guide⢠Oracle Applications Framework Developerâs
Guide Release 12.1.3â MOS ID 1107973.1â Look for Personalization hints
My Oracle Support Documents⢠1315510.1 - Oracle Application
Framework Profile Optionsâ 275876.1 â Release 11.5.10 RUP5 to RUP7â 395445.1 â Release 12 to 12.1.1â 975459.1 â Release 12.1.2â 1107970.1 â Release 12.1.3
⢠See Personalization and Defaulting sections
⢠279034.1 â Forms Personalization