You are on page 1of 92

Customization Reduction with Forms and OA Framework Personalizations

Written 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!


Less Development Time Declarative Menu Driven Business User Friendly Survives patching 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 Reduce Upgrade Costs

Reduce Processing Time

Reduce Training Time

Reduce Audit 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 Personalization
1 100 Reusable Form or Function

Forms Personalization Condition 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 Personalization Standard 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 Personalization Standard 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 Personalization Condition 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 Responsibility User Use this for testing rules Industry (For future use)

Tip: For initial development, set context to your user id

Forms Personalization Property 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
Enter header details

Condition is checked when the user accesses the journal name field

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 1: Display Message


Result

Click OK to continue

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_id FROM ap_suppliers pv , fnd_user fusr WHERE 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 doesnt 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-FORMINSTANCE for visual changes Such as establishing menu entries

Example 3: 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


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 fragment

Example 3: Menu Entries


Result
Choose new menu item

Example 3: Menu Entries


Result
Message, i.e. Invoice ID is displayed

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


How
Change form appearance at WHEN-NEWFORM-INSTANCE

Example 4: Masking Data


CONCEAL_DATA replaces data with asterisks

Dont need to know object name Use Select By Text button to find correct object by prompt

Example 4: Masking Data


Result

But. now must prevent data from being seen in LOV

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 Personalization Other 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 Personalizations
Profile 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 Personalizations Profile 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

FND: Personalization Region Link Enabled = Yes

Personalize Self-Service Defn = 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


How Click Personalize Page button

Start with Personalize Page

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

Remove Button - Results


Shown is now null since rendered = false

Button is gone

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

How to find Personalizations


About this Page, Personalizations tab

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 7: Change Prompts


Change Prompt at the desired level in this case, site level

Example 7: Change Prompts


Result prompt changed

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


Set Rendered = false

Duplicate column is gone

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:Enable
Defaults 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


How

Go to about this page to see if buyer field exists

Example 10: Add a Field


Scroll down to find the view object

Expand All Click on PoRequisitionLinesVO This is the view object. This name will be needed later

Example 10: Add a Field


The suggested buyer id is available for this page

A LOV will translate buyer id to buyer name


Scroll 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 below
This 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 following
Enter 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


LOV Mappings for Buyer Name and Buyer ID

Example 10: Add a Field


Click the create icon again shown on slide 79 Create a Form Value to store the Buyer ID

Example 10: Add a Field


Result Buyer with associated LOV

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!

THEN TEST IT AGAIN!

***BUT NOT IN PRODUCTION***

Migration to Other Instances Forms 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 Instances OA 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 Developers Guide Oracle Applications System Administrators Guide Oracle Applications User Guide Oracle Applications Framework Developers 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

You might also like