Search Results substitute_predicate




Overview

The APPS.FND_DATA_SECURITY package body implements the core runtime engine of Oracle E-Business Suite's data security (also known as "data security" or "row-level security") framework. It is the PL/SQL layer that translates the security rules configured against objects (tables or views) and object instance sets into predicates that restrict which rows a user may see or modify. In Oracle EBS, objects such as FND_RESPONSIBILITY or application tables can be secured against instance sets defined per user, responsibility, or global grant. This package resolves the effective security predicate for a given object and instance set, applies it against the compiled function/menu hierarchy, and caches the results for performance.

In addition to pure predicate generation, the package validates menu and function access by checking the user's granted roles and responsibilities. It is referenced by 51 other database objects, making it one of the most load-bearing packages in the Applications Technology stack for access control. Its status is VALID in the ETRM registration, and it is owned by the APPS schema.

Key Procedures and Functions

The documented interface exposes 18 procedures and functions. Their purposes (parameter lists omitted) are:

Tables Accessed

The package reads and writes through APPS synonyms. Its dependency list includes FND_FORM_FUNCTIONS and FND_COMPILED_MENU_FUNCTIONS (function/menu metadata), FND_GRANTS (grant definitions for users and responsibilities), FND_MENU_ENTRIES_TL (translated menu entries), FND_OBJECTS and FND_OBJECT_INSTANCE_SETS (the security object model), FND_RESPONSIBILITY and FND_RESP_FUNCTIONS (responsibility-to-function mappings), and FND_USER. User and role resolution leverages WF_LOCAL_ROLES, WF_USER_ROLES, and WF_DIRECTORY. Dynamic SQL is executed via DBMS_SQL, and utility access is made to V$INSTANCE and internal PL/SQL tables (PLITBLM, FND_TABLE_OF_NUMBER).

Usage Notes

FND_DATA_SECURITY is most commonly invoked indirectly. Oracle Forms calls it through the standard security event and FND_FUNCTION navigation paths to enforce menu and instance-set restrictions whenever a user opens a form or query. Concurrent programs and OAF pages that support data-secured objects rely on the generated predicate to append WHERE clauses at query time. Custom PL/SQL code may call GET_SECURITY_PREDICATE or GET_SECURITY_PREDICATE_W_BINDS to build secure SQL, and GET_INSTANCES to retrieve authorized instance values. Because the package is referenced by 51 other objects, changes to its behavior should be treated as system-wide; any customization should use the supported public API rather than modifying the package body, which would invalidate the ETRM registration.