diff --git a/SAILPOINT/Functions/ES_V2_ENABLE_USER.sql b/SAILPOINT/Functions/ES_V2_ENABLE_USER.sql
index 08ea264..1dcad6c 100644
--- a/SAILPOINT/Functions/ES_V2_ENABLE_USER.sql
+++ b/SAILPOINT/Functions/ES_V2_ENABLE_USER.sql
@@ -1 +1,98 @@
-âÅã@×ÁãÈ@\ÓÉÂÓ@^@
%
%ÃÙÅÁãÅ@ÖÙ@ÙÅ×ÓÁÃÅ@ÆäÕÃãÉÖÕ@âÁÉÓ×ÖÉÕãKÅâmåòmÅÕÁÂÓÅmäâÅÙ@M@
%ÁäãÈÖÙÉéÁãÉÖÕÕÁÔÅ@åÁÙÃÈÁÙMñð]@]@
%ÙÅãäÙÕâ@ÃÓÖÂMòñô÷ôøóöô÷]@@@
%ÓÁÕÇäÁÇÅ@âØÓ@
%â×ÅÃÉÆÉÃ@âÁÉÓ×ÖÉÕãKåòmÅâÅÕÂÓäâÙ@
%ÕÖã@ÄÅãÅÙÔÉÕÉâãÉÃ@
%ÔÖÄÉÆÉÅâ@âØÓ@ÄÁãÁ@
%ÃÁÓÓÅÄ@ÖÕ@ÕäÓÓ@ÉÕ×äã@
%ÕÖã@ÆÅÕÃÅÄ@
%âÅã@Ö×ãÉÖÕ@@ÁÓæÂÓÒ@~@\ÁÓÓÙÅÁÄ@k@
%ÁÓæÃ×èÄãÁ@~@\Ö×ãÉÔÉéÅ@k@
%ÃÖÔÔÉã@~@\ÕÖÕÅ@k@
%ÄÂÇåÉÅæ@~@\âÖäÙÃÅ@k@
%ÄÅÃÙÅâäÓã@~@Móñk@óñk@ðð]@k@
%ÄÓè×Ù×@~@\ÕÖ@k@
%ÄèÕÄÆãÃÖÓ@~@\ÕÖ@k@
%ÄèÕäâÙ×ÙÆ@~@\ÖæÕÅÙ@k@
%âÙãâÅØ@~@\ÈÅç@@@
%ÂÅÇÉÕ@
%ÄÅÃÓÁÙÅ@ÃÔÄmÖäã×äã@ÃÓÖÂ@M@öô@Ò@]@ÄÅÆÁäÓã@}}@^@
%ÄÅÃÓÁÙÅ@ÃÔÄmâãÔã@åÁÙÃÈÁÙ@M@õñò@]@ÄÅÆÁäÓã@}}@^@
%ÄÅÃÓÁÙÅ@ÅÙÙÖÙmÙÅâ×ÖÕâÅ@ÃÓÖÂ@M@ò@Ç@]@ÄÅÆÁäÓã@}}@^@
%``@ä•‰†–™”@…™™–™@ˆ�•„“…™@`@™…£¤™•¢@—™…`‚¤‰“£@…™™–™@ÑâÖÕ@
%ÄÅÃÓÁÙÅ@ÃÖÕãÉÕäÅ@ÈÁÕÄÓÅÙ@ÆÖÙ@âØÓâãÁãÅ@}óøððñ}@ÙÅãäÙÕ@ÅÙÙÖÙmÙÅâ×ÖÕâÅ@^@
%``@È�•„“…@ØÃÔÄ@…§ƒ…—£‰–•@Móøõðñ@~@…§£…™•�“@™–¤£‰•…@…™™–™]@
%ÄÅÃÓÁÙÅ@ÅçÉã@ÈÁÕÄÓÅÙ@ÆÖÙ@âØÓâãÁãÅ@}óøõðñ}@
%ÙÅãäÙÕ@ÑâÖÕmÖÂÑÅÃã@M@
%}„�£�}@z@ÑâÖÕmÁÙÙÁè@M@]@k@
%}…™™–™¢}@z@ÑâÖÕmÁÙÙÁè@M@ÑâÖÕmÖÂÑÅÃã@M@
%}¢£�£¤¢}@z@ôðô@k@
%}”…¢¢�‡…}@z@}ä¢…™@—™–†‰“…@•–£@†–¤•„@–™@ƒ–””�•„@†�‰“…„}@
%]@]@
%]@^@
%``@Â¤‰“„@£ˆ…@ƒ–””�•„@
%âÅã@ÃÔÄmâãÔã@~@}ÃÈÇäâÙ×ÙÆ@äâÙ×ÙÆM}@OO@ãÙÉÔ@M@ÁäãÈÖÙÉéÁãÉÖÕÕÁÔÅ@]@OO@
%}]@âãÁãäâM\ÅÕÁÂÓÅÄ]}@^@
%``@Å§…ƒ¤£…@¥‰�@ØÃÔÄ@�•„@ƒ�—£¤™…@–¤£—¤£@
%âÅã@ÃÔÄmÖäã×äã@~@ÃÉâãÖÖÓâ@K@ØÃÔÄ@M@ÃÔÄmâãÔã@]@^@
%``@Ãˆ…ƒ’@‰†@�•¨@Ã×ÆaÃ×Ä@…™™–™¢@…§‰¢£@MÃ×Æ~†�‰“¤™…k@Ã×Ä~„‰�‡•–¢£‰ƒk@Ã×Ã~ƒ–”—“…£‰–``•a¢¤ƒƒ…¢¢]@
%ÉÆ@ÃÔÄmÖäã×äã@ÓÉÒÅ@}lÃ×Æl}@
%ÖÙ@ÃÔÄmÖäã×äã@ÓÉÒÅ@}lÃ×Äl}@ãÈÅÕ@
%``@Â¤‰“„@…™™–™¢@�™™�¨@†™–”@�““@…™™–™@“‰•…¢@‰•@–¤£—¤£@
%âÅã@ÅÙÙÖÙmÙÅâ×ÖÕâÅ@~@M@
%âÅÓÅÃã@ÑâÖÕmÖÂÑÅÃã@M@
%}„�£�}@z@ÑâÖÕmÁÙÙÁè@M@]@k@}…™™–™¢}@z@ÑâÖÕmÁÙÙÁèÁÇÇ@M@
%ÑâÖÕmÖÂÑÅÃã@M@
%}¢£�£¤¢}@z@
%ÃÁâÅ@
%æÈÅÕ@ÆÙÁÇÔÅÕã@ÓÉÒÅ@}lÃ×Æòòðôl}@ãÈÅÕ@ôðô@
%æÈÅÕ@ÆÙÁÇÔÅÕã@ÓÉÒÅ@}lÃ×Æòòñól}@ãÈÅÕ@ôðó@
%æÈÅÕ@ÆÙÁÇÔÅÕã@ÓÉÒÅ@}lÃ×Æòòñ÷l}@ãÈÅÕ@ôòó@
%ÅÓâÅ@õðð@
%ÅÕÄ@k@}”…¢¢�‡…}@z@
%ÃÁâÅ@
%æÈÅÕ@
%ÆÙÁÇÔÅÕã@ÓÉÒÅ@}lÃ×Æòòðôl}@
%ãÈÅÕ@}ä¢…™@—™–†‰“…@•–£@†–¤•„}@
%æÈÅÕ@ÆÙÁÇÔÅÕã@ÓÉÒÅ@}lÃ×Æòòñól}@ãÈÅÕ@
%}Õ–£@�¤£ˆ–™‰©…„@£–@ƒˆ�•‡…@¤¢…™@—™–†‰“…}@
%æÈÅÕ@
%ÆÙÁÇÔÅÕã@ÓÉÒÅ@}lÃ×Æòòñ÷l}@
%ãÈÅÕ@}Õ–£@�‚“…@£–@�““–ƒ�£…@¤¢…™@—™–†‰“…}@
%ÅÓâÅ@ãÙÉÔ@M@ÆÙÁÇÔÅÕã@]@
%ÅÕÄ@
%]@
%]@
%]@
%ÆÙÖÔ@ãÁÂÓÅ@M@
%ÃÉâãÖÖÓâ@K@â×ÓÉãmâãÙÉÕÇ@M@ÃÔÄmÖäã×äã@k@ç}òõ}@]@
%]@Áâ@ã@
%æÈÅÙÅ@ÆÙÁÇÔÅÕã@ÓÉÒÅ@}lÃ×Æl}@
%ÖÙ@ÆÙÁÇÔÅÕã@ÓÉÒÅ@}lÃ×Äl}@]@^@
%âÉÇÕÁÓ@âØÓâãÁãÅ@}óøððñ}@^@
%ÅÕÄ@ÉÆ@^@
%``@â¤ƒƒ…¢¢@`@™…£¤™•@¤¢…™@‰•†–@
%ÙÅãäÙÕ@
%M@
%âÅÓÅÃã@ÑâÖÕmÖÂÑÅÃã@M@
%}„�£�}@z@ÑâÖÕmÁÙÙÁè@M@ÑâÖÕmÖÂÑÅÃã@M@
%}�¤£ˆ–™‰©�£‰–•Õ�”…}@åÁÓäÅ@ÁäãÈÖÙÉéÁãÉÖÕmÕÁÔÅ@k@
%}¢£�£¤¢}@åÁÓäÅ@âãÁãäâ@k@
%}“�¢£ä¢…„ã‰”…¢£�”—}@åÁÓäÅ@ÓÁâãmäâÅÄmãÉÔÅâãÁÔ×@
%]@]@k@}…™™–™¢}@z@ÑâÖÕmÁÙÙÁè@M@]@
%]@
%ÆÙÖÔ@Øâèâò@K@äâÅÙmÉÕÆÖ@Á@
%æÈÅÙÅ@ÁäãÈÖÙÉéÁãÉÖÕmÕÁÔÅ@~@ä××ÅÙ@M@ÁäãÈÖÙÉéÁãÉÖÕÕÁÔÅ@]@]@^@
%ÅÕÄ@@^@
%
%ÇÙÁÕã@ÁÓãÅÙ@k@ÅçÅÃäãÅ@@@
%ÖÕ@â×ÅÃÉÆÉÃ@ÆäÕÃãÉÖÕ@âÁÉÓ×ÖÉÕãKåòmÅâÅÕÂÓäâÙ@
%ãÖ@ÁÔÁ×ÉÃâ@æÉãÈ@ÇÙÁÕã@Ö×ãÉÖÕ@^@
%
%ÇÙÁÕã@ÅçÅÃäãÅ@@@
%ÖÕ@â×ÅÃÉÆÉÃ@Æ
\ No newline at end of file
+SET PATH *LIBL ; 
+
+CREATE OR REPLACE FUNCTION SAILPOINT.ES_V2_ENABLE_USER ( 
+	AUTHORIZATIONNAME VARCHAR(10) ) 
+	RETURNS CLOB(2147483647)   
+	LANGUAGE SQL 
+	SPECIFIC SAILPOINT.V2_ESENBLUSR 
+	NOT DETERMINISTIC 
+	MODIFIES SQL DATA 
+	CALLED ON NULL INPUT 
+	NOT FENCED 
+	SET OPTION  ALWBLK = *ALLREAD , 
+	ALWCPYDTA = *OPTIMIZE , 
+	COMMIT = *NONE , 
+	DBGVIEW = *SOURCE , 
+	DECRESULT = (31, 31, 00) , 
+	DLYPRP = *NO , 
+	DYNDFTCOL = *NO , 
+	DYNUSRPRF = *OWNER , 
+	SRTSEQ = *HEX   
+	BEGIN 
+DECLARE CMD_OUTPUT CLOB ( 64 K ) DEFAULT '' ; 
+DECLARE CMD_STMT VARCHAR ( 512 ) DEFAULT '' ; 
+DECLARE ERROR_RESPONSE CLOB ( 2 G ) DEFAULT '' ; 
+-- Uniform error handler - returns pre-built error JSON 
+DECLARE CONTINUE HANDLER FOR SQLSTATE '38001' RETURN ERROR_RESPONSE ; 
+-- Handle QCMD exception (38501 = external routine error) 
+DECLARE EXIT HANDLER FOR SQLSTATE '38501' 
+RETURN JSON_OBJECT ( 
+'data' : JSON_ARRAY ( ) , 
+'errors' : JSON_ARRAY ( JSON_OBJECT ( 
+'status' : 404 , 
+'message' : 'User profile not found or command failed' 
+) ) 
+) ; 
+-- Build the command 
+SET CMD_STMT = 'CHGUSRPRF USRPRF(' || TRIM ( AUTHORIZATIONNAME ) || 
+') STATUS(*ENABLED)' ; 
+-- Execute via QCMD and capture output 
+SET CMD_OUTPUT = CISTOOLS . QCMD ( CMD_STMT ) ; 
+-- Check if any CPF/CPD errors exist (CPF=failure, CPD=diagnostic, CPC=completio--n/success) 
+IF CMD_OUTPUT LIKE '%CPF%' 
+OR CMD_OUTPUT LIKE '%CPD%' THEN 
+-- Build errors array from all error lines in output 
+SET ERROR_RESPONSE = ( 
+SELECT JSON_OBJECT ( 
+'data' : JSON_ARRAY ( ) , 'errors' : JSON_ARRAYAGG ( 
+JSON_OBJECT ( 
+'status' : 
+CASE 
+WHEN FRAGMENT LIKE '%CPF2204%' THEN 404 
+WHEN FRAGMENT LIKE '%CPF2213%' THEN 403 
+WHEN FRAGMENT LIKE '%CPF2217%' THEN 423 
+ELSE 500 
+END , 'message' : 
+CASE 
+WHEN 
+FRAGMENT LIKE '%CPF2204%' 
+THEN 'User profile not found' 
+WHEN FRAGMENT LIKE '%CPF2213%' THEN 
+'Not authorized to change user profile' 
+WHEN 
+FRAGMENT LIKE '%CPF2217%' 
+THEN 'Not able to allocate user profile' 
+ELSE TRIM ( FRAGMENT ) 
+END 
+) 
+) 
+) 
+FROM TABLE ( 
+CISTOOLS . SPLIT_STRING ( CMD_OUTPUT , X'25' ) 
+) AS T 
+WHERE FRAGMENT LIKE '%CPF%' 
+OR FRAGMENT LIKE '%CPD%' ) ; 
+SIGNAL SQLSTATE '38001' ; 
+END IF ; 
+-- Success - return user info 
+RETURN 
+( 
+SELECT JSON_OBJECT ( 
+'data' : JSON_ARRAY ( JSON_OBJECT ( 
+'authorizationName' VALUE AUTHORIZATION_NAME , 
+'status' VALUE STATUS , 
+'lastUsedTimestamp' VALUE LAST_USED_TIMESTAMP 
+) ) , 'errors' : JSON_ARRAY ( ) 
+) 
+FROM QSYS2 . USER_INFO A 
+WHERE AUTHORIZATION_NAME = UPPER ( AUTHORIZATIONNAME ) ) ; 
+END  ; 
+
+GRANT ALTER , EXECUTE   
+ON SPECIFIC FUNCTION SAILPOINT.V2_ESENBLUSR 
+TO AMAPICS WITH GRANT OPTION ; 
+
+GRANT EXECUTE   
+ON SPECIFIC FUNCTION SAILPOINT.V2_ESENBLUSR 
+TO PUBLIC ; 
+
