SLS enabled in R12.1.3 to R12.2 Upgrade

If you upgrade from R12.1 (or earlier) to R12.2 you will be thrown in the world of editionable objects for "Online Patching".

If you have SLS (Subledger Security) enabled on some tables in your R12.1 environment you will find that after the upgrade these policies have been duplicated to the editionable objects.

For example if in R12.1 you have 2 policies defined on the following tables

  • PO_REQUISITION_HEADERS_ALL
  • PO_HEADERS_ALL

you will find that after performing the upgrade to R12.2 you will all of a sudden have 4 policies, specifically on :

  • PO_REQUISITION_HEADERS_ALL
  • PO_HEADERS_ALL
  • PO_REQUISITION_HEADERS_ALL#
  • PO_HEADERS_ALL#

and any selects or operations in screens on po_requisition_headers_all or po_headers_all will fail with an

ORA-028113 : policy predicate has error

this because the SLS generated functions ( something like IGI_SLS_1_FUN ) contains a reference to a rowid that does not exist.

To fix this problem just drop the incorrect policies.

for example :

BEGIN
DBMS_RLS.DROP_POLICY('PO', 'PO_REQUISITION_HEADERS_ALL#', 'IGI_SLS_21_POL');
DBMS_RLS.DROP_POLICY('PO', 'PO_HEADERS_ALL#', 'IGI_SLS_1_POL');
END;

If you want you can rerun the SLS security concurrent program but it is not needed.

concurrent program : Subledger Security - Apply Security with parameter REFRESH run from under System administrator

All new SLS security rules made in R12.2 are by default not created on the editionable object.

Hope it helps !

Reuben