Previous  Next          Contents  Index  Navigation  Glossary  Library

Function Security Loader

The Function Security Loader (FNDSLOAD) is a concurrent program that can move Oracle Applications function security information between database and text file representations. The following sections describe the operation of the Function Security Loader.

Use the Function Security Loader to preserve custom responsibility and menu information across upgrades by downloading files before the upgrade and then uploading them afterward.

Supported Operations

The Function Security Loader allows you to move function security data between the database (where it is used for runtime operation) and a text file representation (where it can be used for distribution). Specifically, you can:

Download database information to a text file

The text file is human-readable and portable, and can be examined and modified with any editor. Generally, a "developer key" is used to identify records written out to text files. In other words, the FUNCTION_NAME, not the FUNCTION_ID, is used to identify records.

Upload (merge) the information in a text file to the database

If a row is already correct in the database, it is not touched. If a row exists, but has different attributes, the row is updated. If a row does not exist, a new row is inserted. No rows are deleted, even if they are absent from the uploaded file.

These download and upload capabilities allow function security information that is defined in one database to be easily propagated to other databases. This is useful for delivering Oracle Applications seed data to customers, as well as for copying customer function security definitions from a primary site to other sites.

The text file version of function security data is also useful for bulk editing operations, which can be accomplished more efficiently with a text editor than with a form.

Usage

The Function Security Loader takes the following arguments:

FNDSLOAD <username/password> 0 Y 
  [{ LOCAL <filepath> } | 
   { <appsname> <subdir>/.../<subdir>/<fname>.ext<}]
  [UPLOAD | {DOWNLOAD <menuname> ... <menuname>}]

where

<username/ password> is the APPLSYS account

<appsname> is an application short name or "LOCAL"

<fname> is the file that will be read or written

<menuname> is a list of menu names to download
The location of the file is determined by the <appsname> and <fname> arguments. <appsname> indicates whether the file is in the install/import directory for a particular application, or whether it is in the local directory.

Appsname File Location
<APP> <file> $<APP_TOP>/install/import/<file>.slt
LOCAL <file> <file>


Examples

FNDSLOAD applsys/fnd 0 Y FND install/import/sysadmin.slt UPLOAD

references file "$FND_TOP/install/import/sysadmin.slt"

FNDSLOAD applsys/fnd 0 Y LOCAL sysadmin.slt UPLOAD

references file "sysadmin.slt"

UPLOAD and DOWNLOAD

The loader works in either upload or download mode. In UPLOAD mode the entire file is read and merged into the database. (Any existing entries for a menu are deleted in favor of the entry list in the file, if conflicts occur.)

In DOWNLOAD mode the menu tree rooted at each <menuname> listed is read from the database and written to the file, along with every function and form referenced by any menu. Note the <menuname> is the actual menu name, not the User Menu Name.

FNDSLOAD applsys/fnd 0 Y FND sysadmin.slt DOWNLOAD FND_NAVIGATE4.0

will download all menus under "FND_NAVIGATE4.0" to the file sysadmin.slt

FNDSLOAD applsys/fnd 0 Y FND sysadmin.slt UPLOAD

will upload everything in the file sysadmin.slt to the database

Function Security File Format

Function security information is stored in text file format by writing out a series of "records" for each form, function, and menu. The file is plain text that can be viewed and edited with any standard text editor. You need to understand this file format only if you plan to edit the file.

The file consists of a series of text lines, each of which must be less than 1024 bytes in length (when written, no line will exceed 80 bytes in length).

A line may be a comment line, meaning it has no effect on the data contained in the file. Comment lines begin with a "#" and end with a newline.

# This is a comment line

The information in the file consists of a series of tokens delimited by white space. Note that a token may itself contain a space, in which case it is delimited with double-quote marks. Tokens may not contain non-printing characters unless they are preceded by the "escape" character, which is a backslash. Predefined escapes are:

String Meaning
\e Escape
\n Newline
\r Carriage return
\b Backspace
\v Vertical tab
\f Form feed
\" The double quote itself
\\ The backslash itself

Other escapes consist of octal values preceded by the backslash, as in "\007". If a line is too long to fit within 80 characters, the line is broken into as many "continuation" lines as necessary. A line ending with a single backslash is taken to be continued on the next line. In such a case, the newline following the backslash is ignored, rather than being taken as a white space delimiter. The line following such a line is taken to be a continuation of the "broken" line, and such a line can itself end in a backslash, indicating further continuation. Note that in the case of continuation lines, a leading "#" is not taken as a comment indicator, but rather as part of the continued data item.

The file starts with three lines as follows:

LANGUAGE = "AMERICAN"
CODESET = "WE8ISO8859P1"
TRANSLATED = "Y"

These lines indicate the NLS_LANG language and codeset of the file and the current translation status of any translated column values.

Then there is a series of object definitions of the format:

BEGIN <object type> <object identifier>
 <attribute> = <value>
 ...
BEGIN <sub-object type> <object identifier>
 ...
END <sub-object type>
 ...
END <object type>

There are three main object types, and one sub-object type. The main objects are FORMs, FUNCTIONs, and MENUs, and the sub-object is ENTRY. Each object type has some identifier, and then a series of attribute values. If an attribute value is not specified, it is assumed to be NULL.

FORM record

Form information is written out in the following format:

BEGIN FORM <app_short_name> <form_name>
 USER_FORM_NAME = "<user_form_name: 80 char            translated>"
 DESCRIPTION = "<description: 240 char translated>"
END FORM

Forms are identified by app_short_name and form_name. A FORM record is written out for each form referenced by the menus being downloaded.

Example:

BEGIN FORM SQLGL GLXJEENT
 USER_FORM_NAME = "Enter Journals/Encumbrances    "
 DESCRIPTION = "Enter journals/encumbrances  "
END FORM

FUNCTION record

Function information is written out in the following format:

BEGIN FUNCTION <function_name>
 FORM = <app_short_name> <form_name>
 TYPE = <type:30 char>
 PARAMETERS = "<parameters: 240 char>"
 USER_FUNCTION_NAME = "<user_function_name: 80 char    translated>"
 DESCRIPTION = "<description: 240 char translated>"
END FUNCTION

Functions are identified by the developer function_name. A FUNCTION record is written out for each function referenced by the menus being downloaded.

Example:

BEGIN FUNCTION SQLGL_GLXJEENT_A
 FORM = SQLGL GLXJEENT
 TYPE = FORM
 PARAMETERS = "actual_flag=\"A\"                       HELP_TARGET=\"GLXJEENT_A\""
 USER_FUNCTION_NAME = "Enter Journals"
 DESCRIPTION = "Enter journals"
END FUNCTION

MENU record

Menu information is really a compound record that consists of an MENU record, which contains (encloses) some number of ENTRY records. Menu information is formatted as follows:

MENU <menu_name>
 USER_MENU_NAME = "<user_menu_name: 80 char            translated>"
 DESCRIPTION = "<description: 240 char translated>"
 BEGIN ENTRY
  PROMPT = "<prompt: 30 char translated>"
  DESCRIPTION = "<description: 240 char translated>"
  SUBMENU = <sub_menu_name>
  FUNCTION = <function_name>
 END ENTRY
 ... more entry records ...
END MENU

Example:

MENU GL_SUPERVISOR_GUI
 USER_MENU_NAME = GL_SUPERVISOR_GUI
 BEGIN ENTRY
  PROMPT = Journals
  DESCRIPTION = "Enter and post actual and               encumbrance journals"
  SUBMENU = GL_SU_JOURNAL_GUI
 END ENTRY
 BEGIN ENTRY
  PROMPT = Budgets
  DESCRIPTION = "Define and enter budgets"
  SUBMENU = GL_SU_BUDGET_GUI
 END ENTRY
 BEGIN ENTRY
  PROMPT = "Run Reports"
  DESCRIPTION = "Run a report"
  FUNCTION = SQLGL_FNDRSRUN_GLMODE
  END ENTRY
END MENU

Menus are identified by the developer menu name. Menu entries have no identification per se, but are assumed to be sequenced based on the order in which they are defined, and thus the sequence number forms an implicit identifier. Each listed menu is downloaded along with all referenced submenus (recursively).

Sample Function Security File

#
# $Header$
#
LANGUAGE = "AMERICAN"
CODESET = "WE8ISO8859P1"
TRANSLATED = "Y"
BEGIN FORM FND FNDCPQCR
  USER_FORM_NAME = "View Requests"
  DESCRIPTION = "User form to view personal, explicit concurrent requests"
END FORM
BEGIN FORM FND FNDPOMSV
  USER_FORM_NAME = "Update Personal Profile Values"
  DESCRIPTION = "User form to set a personal profile option"
END FORM
BEGIN FORM FND FNDRSRUN
  USER_FORM_NAME = "Run Reports"
END FORM
BEGIN FORM FND FNDCPDIA
  USER_FORM_NAME = "Request Help"
  DESCRIPTION = "Request Diagnostics Form (also View Reports)"
END FORM
BEGIN FORM FND FNDRSSET
  USER_FORM_NAME = "Administer Report Sets"
  DESCRIPTION = "System Administrator form to administer all report sets"
END FORM
BEGIN FUNCTION FND_FNDCPQCR
  FORM = FND FNDCPQCR
  TYPE = FORM
  USER_FUNCTION_NAME = "Concurrent Requests: View All"
  DESCRIPTION = "Concurrent Requests: View Form"
END FUNCTION
BEGIN FUNCTION FND_FNDPOMSV
  FORM = FND FNDPOMSV
  TYPE = FORM
  USER_FUNCTION_NAME = "Profile User Values"
  DESCRIPTION = "Profile User Values Form"
END FUNCTION
BEGIN FUNCTION FND_FNDRSRUN
  FORM = FND FNDRSRUN
  TYPE = FORM
  USER_FUNCTION_NAME = "Requests: Submit"
  DESCRIPTION = "Requests: Run Form"
END FUNCTION
BEGIN FUNCTION FND_FNDCPDIA_VIEW
  FORM = FND FNDCPDIA
  TYPE = FORM
  PARAMETERS = "MODE=\"VIEW\""
  USER_FUNCTION_NAME = "Concurrent Requests: View Completed"
  DESCRIPTION = "Concurrent Request Diagnostics Form: View Requests Mode"
END FUNCTION
BEGIN FUNCTION FND_FNDRSSET_USER
  FORM = FND FNDRSSET
  TYPE = FORM
  PARAMETERS = "MODE=\"USER\""
  USER_FUNCTION_NAME = "Request Sets (User Mode)"
  DESCRIPTION = "Request Sets: User Mode Form"
END FUNCTION
BEGIN MENU GL_SU_MANAGER_GUI
  USER_MENU_NAME = GL_SU_MANAGER_GUI
  DESCRIPTION = "Called by GL_SUPERUSER4.0, GL_USER4.0, GL_SUPERVISOR4.0, GL_B\
UDGETUSER4.0, GL_BUDGETSUPER4.0"
  BEGIN ENTRY
    PROMPT = Requests
    DESCRIPTION = "Review concurrent manager requests"
    FUNCTION = FND_FNDCPQCR
  END ENTRY
  BEGIN ENTRY
    PROMPT = Profile
    DESCRIPTION = "Review personal profile options"
    FUNCTION = FND_FNDPOMSV
  END ENTRY
  BEGIN ENTRY
    PROMPT = Report
    DESCRIPTION = "Group and request standard reports"
    SUBMENU = FND_REPORT4.0
  END ENTRY
END MENU
BEGIN MENU FND_REPORT4.0
  USER_MENU_NAME = "FND_REPORT 4.0"
  DESCRIPTION = "Standard Report Submission and view report for Forms 4.0"
  BEGIN ENTRY
    PROMPT = Run
    DESCRIPTION = "Submit requests"
    FUNCTION = FND_FNDRSRUN
  END ENTRY
  BEGIN ENTRY
    PROMPT = View
    DESCRIPTION = "View completed requests"
    FUNCTION = FND_FNDCPDIA_VIEW
  END ENTRY
  BEGIN ENTRY
    PROMPT = Set
    DESCRIPTION = "Define standard request sets"
    FUNCTION = FND_FNDRSSET_USER
  END ENTRY
END MENU


         Previous  Next          Contents  Index  Navigation  Glossary  Library