Skip to content

Uptime Maximizer Compliancy Tools

Note: This feature will be available with IFS Cloud 25R2 GA. However, any preparation work required needs to be done starting from EA.

Build Time Uptime Maximizer Compliancy Tool

In addition to the EBR Compliancy tool, this tool facilitates some additional validations ensuring that compliancy standards are met by developers who use the uptime maximizer feature.

The Uptime Maximizer Compliancy Tool is packaged as a JAR and is automatically invoked during the build process only for online deployments. Its purpose is to scan DML-related files within the build home and verify that they are Edition-Based Redefinition (EBR) compliant.

The uptime maximizer compliancy is determined manually by developers, who must annotate each compliant PL/SQL block with the comment, --SAFE_FOR_ONLINE_DEPLOYMENT. The tool inspects each block within the scanned files and validates the presence of this marker to ensure compliance.

File locations and types

build-home/database

.ins Files

All .ins files in the database folder are scanned and validated.

Sample valid file: accrul/source/accrul/database/AccrulDocumentConnection.ins

-----------------------------------------------------------------------------------------
--
--  Module:       ACCRUL
--
--  File:         AccrulDocumentConnection.ins
--
--  Localization: Needed, search for the expression LOCALIZE HERE!
--
--  Date    Sign    History
--  ------  ------  ---------------------------------------------------------------------
--  040525  PPerse  Created
--  080616  Nugalk  Bug 72589 Corrected. Removed the duplicate entry for Voucher LU with VOUCHER_ROW_QRY view
--  080616          and updated the keys to the basic data in VoucherRow with ROW_NO 
--  090120  Jakalk  Bug 78024 Corrected. Updated the key reference in LU MultiCompanyVoucherRow by adding ROW_NO 
--  090120          Rearranged the order of key reference of VoucherRow LU to comply with docman.  
--  100217  Jobase  EAFH-2099, Clean up in object connection enabling.  
--  200709  ALWOLK  FIXTEND-3234, Moved object connections to Voucher LU, VoucherRow LU. 
--  170525  Kgnalk  FIDEV-37096, Changes done to support NZD(handle INS files).
-----------------------------------------------------------------------------------------

SET SERVEROUT ON

PROMPT Registrates Document Connections

--SAFE_FOR_ONLINE_DEPLOYMENT(2025-07-17, kgnalk, PRE_25R2_PATCH_REGISTERED)
BEGIN
   IF Code_Registration_SYS.Is_Not_Registered('ACCRUL', 'AccrulDocumentConnection', '1', 'INS') THEN
      DBMS_OUTPUT.PUT_LINE('Deploying code block 1.');

      BEGIN
         Edition_Strategy_SYS.Enable_Edition_Strategy('FINANCE_DOC_REG_TAB');

         Finance_Doc_Reg_API.Insert_Basic_Data( 'Voucher' );
         Finance_Doc_Reg_API.Insert_Basic_Data( 'VoucherRow' );
      END;

      Code_Registration_SYS.Register('ACCRUL', 'AccrulDocumentConnection', '1', 'INS');
      COMMIT;
   ELSE
      DBMS_OUTPUT.PUT_LINE('Skipping Code block 1 because it has already been deployed.');
   END IF;
END;
/
COMMIT;

POST SQL Files

All deploy.ini files are scanned to identify applicable POST SQL files based on their versioning conditions. The selected files are then validated.

Identifying Applicable POST SQL Files from deploy.ini

The Uptime Maximizer Compliancy tool selects relevant POST SQL files by evaluating the version tags specified in the [PostInstallationData] section of the deploy.ini file. A file is selected for validation if any of the following conditions are met:

Selection Criteria:

  • The file has no version tag.
  • The version tag includes Always or AnyUpgrade.
  • The version tag includes a version that is greater than 25R2 (25.2.0)

Example deploy.ini Content:

[PostInstallationData]
File1=POST_FNDBAS_File1.sql
File2=POST_FNDBAS_File2.sql {Always}
File3=POST_FNDBAS_File3.sql {FreshInstall}
File4=POST_FNDBAS_File4.sql {AnyUpgrade}
File5=POST_FNDBAS_File5.sql {FreshInstall;AnyUpgrade}
File6=POST_FNDBAS_File6.sql {7.0.0-OG; 7.0.0}
File7=POST_FNDBAS_File7.sql {21.1.0;21.2.0;22.1.0;22.2.0;23.1.0}
File8=POST_FNDBAS_File8.sql {25.2.1}
File9=POST_FNDBAS_File9.sql {26.1.0}
Selected files:

File1=POST_FNDBAS_File1.sql
File2=POST_FNDBAS_File2.sql {Always}
File4=POST_FNDBAS_File4.sql {AnyUpgrade}
File5=POST_FNDBAS_File5.sql {FreshInstall;AnyUpgrade}
File8=POST_FNDBAS_File8.sql {25.2.1}
File9=POST_FNDBAS_File9.sql {26.1.0}
These files will be scanned and validated.

Sample valid file: fndsch\POST_Fndsch_UpdateBasicData.sql

-----------------------------------------------------------------------------
--  Module : FNDSCH
--
--  File   : POST_Fndsch_UpdateBasicData.sql
--
--  IFS Developer Studio Template Version 2.6
--
--  Date     Sign    History
--  ------   ------  --------------------------------------------------
--  250612   TGUNLK  AUTO-11592, Pre 25R2 Patch Registered.
--  240208   CLHASE  PACZSECA-6330, Tag FNDSCH permission sets as 'IFS_MANAGED'.
--  230817   CLHASE  AUTO-10011, Removed 'Machine Learning' from FND_ADMIN_FNDSCH role name.
--  ------   ------  --------------------------------------------------
-----------------------------------------------------------------------------

SET SERVEROUTPUT ON

EXEC Database_SYS.Log_Detail_Time_Stamp('FNDSCH','POST_Fndsch_UpdateBasicData.sql','Timestamp_1');
PROMPT Updating FND_ADMIN_FNDSCH role description
--SAFE_FOR_ONLINE_DEPLOYMENT(2025-06-12, tgunlk, PRE_25R2_PATCH_REGISTERED)
BEGIN
   IF Code_Registration_SYS.Is_Not_Registered('FNDML', 'POST_Fndsch_UpdateBasicData', '1', 'POST_SQL') THEN 
      DECLARE
         role_        VARCHAR2(30) := 'FND_ADMIN_FNDSCH';
         description_ VARCHAR2(2000);
      BEGIN
         description_ := Fnd_Role_API.Get_Description(role_);
         IF (description_ IN ('Role needed for Workbench Administrator users', 'Grants to Scheduling Optimization and Machine Learning Administration forms')) THEN
            UPDATE fnd_role_tab
            SET description = 'Grants to Scheduling Optimization Administration forms'
            WHERE ROLE = role_;       
         END IF;
      END;
      Code_Registration_SYS.Register('FNDML', 'POST_Fndsch_UpdateBasicData', '1', 'POST_SQL');
      COMMIT;
   END IF;
END;
/

EXEC Database_SYS.Log_Detail_Time_Stamp('FNDSCH','POST_Fndsch_UpdateBasicData.sql','Timestamp_2');
PROMPT Updating FNDSCH permission sets AS 'IFS_MANAGED'
--SAFE_FOR_ONLINE_DEPLOYMENT(2025-06-12, tgunlk, PRE_25R2_PATCH_REGISTERED)
BEGIN
   IF Code_Registration_SYS.Is_Not_Registered('FNDML', 'POST_Fndsch_UpdateBasicData', '2', 'POST_SQL') THEN 
      BEGIN
         FOR rec_ IN (SELECT ROLE
            FROM   fnd_role_tab
            WHERE  ROLE IN ('FNDSCH_RUNTIME', 'FNDSCH_ADMIN', 'FNDSCH_WEBSERVICE', 'FND_ADMIN_FNDSCH')
            AND    fnd_role_delivery_type != Fnd_Role_Delivery_Type_API.DB_IFS_MANAGED)
         LOOP
            Security_SYS.Set_Role_Delivery_Type(rec_.role, Fnd_Role_Delivery_Type_API.DB_IFS_MANAGED);
            COMMIT;
         END LOOP;
      END;
      Code_Registration_SYS.Register('FNDML', 'POST_Fndsch_UpdateBasicData', '2', 'POST_SQL');
      COMMIT;
   END IF;
END;
/
COMMIT
/

EXEC Database_SYS.Log_Detail_Time_Stamp('FNDSCH','POST_Fndsch_UpdateBasicData.sql','Done');

.cdb Files

All .cdb files in the database folder are scanned and validated. If there are .cdb files that contain content, the developer should verify that they are EBR compliant and add the --SAFE_FOR_ONLINE_DEPLOYMENT(date,username,reason) comment in the beginning of the file, before the code, after the verification.

build-home/source

.plsql Files (Post_Installation_Data Procedures)

All .plsql files that define the Post_Installation_Data procedure are scanned and validated.

Sample valid file: fndbas\database\FndbasInstallation.plsql

--SAFE_FOR_ONLINE_DEPLOYMENT(2025-06-12, savnlk)
@UncheckedAccess
PROCEDURE Post_Installation_Data
IS
BEGIN
   IF Installation_SYS.Get_Installation_Mode = FALSE
   OR Module_API.Is_Affected_By_Delivery('FNDBAS') THEN
      Fndbas_Security_Data___;
      Handle_Quick_Report_Refresh___;
   END IF;

   IF Module_API.Is_Affected_By_Delivery('FNDBAS') THEN
      Fndbas_Dac___;
   END IF;

   Navigator_SYS.Insert_Navigator_Entries;
END Post_Installation_Data;

The Uptime Maximizer Compliancy Tool Output

The Uptime Maximizer Compliancy tool logs all validation errors to the _ifs_ant_generatedb.log and _nzd_validator.log files. If any validation errors are detected, the tool exits with an error code, causing the build process to halt.

Uptime Maximizer Deployment Time Compliancy Check

Since it is not practically possible capture all scenarios where a delivery affects the running application breaking the necessary Uptime Maximizer compliancy, a deployment time compliancy check is also performed. This is enabled in the Use Place environments for Uptime Maximizer customers.

After the delivery is applied, this checks if any intrusive DDL operations had happened against the running application edition, e.g. removal of columns, or changes to editionable objects in the running application edition.

For remote customers, this validation can be triggered in their test environments by passing the --set raiseNZDNonCompliant=true to the installer call.