Customization Reduction o Aug Small

92
Customization Reduction with Forms and OA Framework Personalizations Written by Susan Behn Edited and Presented by Karen Brownfield

description

Customization

Transcript of Customization Reduction o Aug Small

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 Personalization

Form orFunction

1 – 100Reusable

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 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_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 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-NEW-FORM-INSTANCE

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

Start with Personalize Page

How – Click Personalize Page button

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

Button is gone

Shown is now null since rendered = false

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: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• How

Go to about this page to see if buyer field exists

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• 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 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