Great!

I see you are using this query:

SELECT %Actions, %Message, %Priority, %Subject, TaskStatus_TimeCreated, ID 
FROM EnsLib_Workflow.TaskResponse 
WHERE TaskStatus_AssignedTo = ? 
  AND TaskStatus_IsComplete = 0

So it returns only uncompleted tasks assigned to a current user (by the way UserName is a valid sql variable so you don't need to pass it as an argument from ObjectScript). It does not return unassigned tasks - do you autoassign tasks in production? If so, how?

Create subscript level mappings for a correct database.

%ALL global mapping is higher priority than namespace mapping: if %ALL has ^a global mapped to db A and your namespace has ^a mapped to db B, global ^a from db A would be used when you access it from your namespace.

But, subscript mapping is higher priority than global mapping: if %ALL has ^a global mapped to db A and your namespace has ^a(1) mapped to db B, global ^a(1) from db B would be used when you access ^a(1) from your namespace.

There are two formats for LUT:

Old one:

<?xml version="1.0" encoding="UTF-8"?>
<Export generator="IRIS" version="26" zv="IRIS for UNIX (Red Hat Enterprise Linux 7 for x86-64) 2022.1 (Build 209U)" ts="2024-03-03 06:05:36">
    <Document name="LUT_NAME.LUT">
        <lookupTable>
            <entry table="LUT_NAME" key="KEY">VALUE</entry>
            <entry table="LUT_NAME" key="KEY2">VALUE2</entry>
        </lookupTable>
    </Document>
</Export>

New one:

<?xml version="1.0"?>
<lookupTable>
    <entry table="LUT_NAME" key="KEY">VALUE</entry>
    <entry table="LUT_NAME" key="KEY2">NALUE2</entry>
</lookupTable>

Looks like you're importing old format using new importer. Here's the code to import both versions:

ClassMethod ImportLUT(dir)
{
	#include %occErrors
	write "Lookup Tables import from: " _ dir
	set rs = ##class(%File).FileSetFunc(dir, "*.xml;*.XML;*.lut;*.LUT")
	while rs.%Next() {
		set tablePath = rs.Get("Name")
		write "Importing: " _ tablePath,!
		// table is the full path, the last part (denoted by *) is the actual file name
		set tablePathNoExtension = $PIECE(tablePath, "/", *)
		// asking for $PIECE with just delimiter asks for the first part, thus ignore anything after the .
		set tablePathNoExtension = $PIECE(tablePathNoExtension, ".")
		write "Importing Lookup Table in " _ tablePathNoExtension,!
		// lookup table should be named the file name (without extension)
		//do ##class(Ens.Util.LookupTable).%ClearTable(tablePathNoExtension)
		
		// Try the new import first.
		set sc = ..ImportLUTFile(tablePath)
			
		// If we got an error, try legacy import
		if $$$ISERR(sc) {
			write "New import failed. Trying legacy import",!
			set sc=##class(Ens.Util.LookupTable).%Import(tablePath)
			if $$$ISOK(sc) {
				write "Import successful",!
			}
		}
		
		// Error remains unfixed. Fail.
		if $$$ISERR(sc) {
			write "Lookup Table import failure: ", $System.Status.GetErrorText(sc),!
			do $system.Process.Terminate(, 1)
		}
	}
}

/// Adapted from EnsPortal.LookupSettings:Import
/// Import lookup tables from file <var>Filename</var>
ClassMethod ImportLUTFile(Filename As %String) As %String
{
	Set tRS = ##class(%ResultSet).%New("%RoutineMgr:ImportItemList")
	Set tSC = tRS.Execute(Filename)
	Quit:$$$ISERR(tSC) tSC
	Set tSC = $$$OK
	Kill Select
	For  {
		Quit:'tRS.Next(.tSC)
		Set Name = tRS.Get("Name")
		If $E(Name,*-3,*)=".LUT" {
			Lock +^Ens.LookupTable(Name):2
			If '$T Set tSC = $$$ERROR($$$LockFailedToAcquireRead,$Name(^Ens.LookupTable(Name))) Quit
			Set Select($E(Name,1,*-4)) = ""
		}
	}
	Quit:$$$ISERR(tSC) tSC
	Quit:'$D(Select) $$$ERROR($$$GeneralError,"This file does not contain any lookup tables")
	Set tSC = $system.OBJ.Load(Filename,"-d", .Err, .Loaded, 0)
	Set Name = ""
	For  {
		Set Name = $O(Select(Name))
		Quit:Name=""
		Lock -^Ens.LookupTable(Name)
	}
	Quit tSC
}

You need to iterate on value:

 // extract json content from the request:
 set dynRequestJsonPayload = {}.%FromJSON(%request.Content)
 #dim JsonIterator As %Iterator.AbstractIterator
 set JsonIterator = dynRequestJsonPayload.%GetIterator()
 
 // iterate on json structure:
 if dynRequestJsonPayload '= "" {
    while JsonIterator.%GetNext(.key, .value, .NodeType) { 
      if NodeType = "string" {
        do GlobalTrace("NodeType: " _ NodeType _ "; key: " _ key _ "; value: " _ value)
      } elseif NodeType = "array" {
         // i want to iterate on this array...
         // the following line throws the exeception "ERREUR #5002: Erreur ObjectScript: &lt;INVALID OREF&gt;traitementUFI+34^common.REST.1"
         set JsonIteratorSecondary = value.%GetIterator()
      } else {
	      // Do something
      }

    }
}