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
orAnyUpgrade
. - 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}
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}
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.