Customization Reduction o Aug Small
description
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 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• 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