What we are seeing is that IRIS.WorkQueue globals are being defined for these calls but then the IRIS.WorkQueue is not being cleaned up and taking up large amounts of Memory.

You mention IRIS.WorkQueue globals consuming/using memory, but globals don't consume memory, they reside on disk.

I never seen any IRIS.WorkQueue globals, can you provide some detail?
What component is creating/using these globals?

You need to check the Storage defined in your class, typically automatically generated when the class is first compiled.

For example I have created a ConfigUtils.ConfigSettingsTable class:

Class ConfigUtils.ConfigSettingsTable Extends %Persistent
{

Property Name As %String;

Storage Default
{
<Data name="ConfigSettingsTableDefaultData">
<Value name="1">
<Value>%%CLASSNAME</Value>
</Value>
<Value name="2">
<Value>Name</Value>
</Value>
</Data>
<DataLocation>^ConfigUtils.ConfigSetti1ADBD</DataLocation>
<DefaultData>ConfigSettingsTableDefaultData</DefaultData>
<IdLocation>^ConfigUtils.ConfigSetti1ADBD</IdLocation>
<IndexLocation>^ConfigUtils.ConfigSetti1ADBI</IndexLocation>
<StreamLocation>^ConfigUtils.ConfigSetti1ADBS</StreamLocation>
<Type>%Storage.Persistent</Type>
}

}

In this case the globals used by my class are:

^ConfigUtils.ConfigSetti1ADBD (Data)
^ConfigUtils.ConfigSetti1ADBI (Indices)
^ConfigUtils.ConfigSetti1ADBS (Streams)
 

Instead of the 3 single globals, you can map ^ConfigUtils.ConfigSetti1ADB*

Note that you MUST check the actual global(s) name(s) used by your class.

If your class extends another persistent class, then the storage is defined in the superclass that define the extent (the first persistent class in class hierarchy).

To send JSON with an HTTP POST request using InterSystems ObjectScript, you can use the %Net.HttpRequest class. Here is a sample code snippet demonstrating how to do this:

Create an HTTP request object.
Set the server URL and other necessary properties.
Write the JSON payload to the request’s entity body.
Send the POST request.

Here is an example:

Set Body={}
Set Body.Name="John Smith"
Set Body.Address="ISC Dev community"
Set Body.SomeProperty="Some content"
Set Request = ##class(%Net.HttpRequest).%New()
Set Request.Server = "server"
Set Request.Location = "location"
Set Request.ContentType = "application/json"
// Convert the object to JSON and write it to the request's entity body
Do Body.%ToJSON(Request.EntityBody)

// Send the POST request
Set Status = Request.Post()

This is the expected behavior as documented in Message Contents

Management Portal displays only the first 20000 characters of the message by default, this can be changed as documented in Changing the Character Limit for XML Messages in the Contents Tab

So, in your case for only EnsLib.HTTP.GenericMessage you can:

Set ^EnsPortal.Settings("All","MessageContents","OutputSizeLimit","EnsLib.HTTP.GenericMessage")=<whatever size you feel appropriate>

or for any class:

Set ^EnsPortal.Settings("All","MessageContents","OutputSizeLimit")=<whatever size you feel appropriate>

Where are you seeing "DTL response = <ID scope='Message'>3</ID>"?

What you see is the "representation", the "export" of your XML enabled class rendered by...whatever you are using to view/display it, the quotes are not part of the content.

How are you using/consuming your target (DTL response)? Some XML (SOAP? REST?) message? If so, I believe that you won't find single quotes when you will use it.

This is just guessing, because you don't provide any context/detail.

Following your enthusiasm I implemented a little test 😁

Class Community.Array.Base Extends (%RegisteredObject, %XML.Adaptor, %JSON.Adaptor)
{

Property Slide As list Of Community.Array.Slide(XMLPROJECTION = "ELEMENT");

ClassMethod test()
{
	Set Base=##class(Community.Array.Base).%New()
	For i=1:1:3 {
		Set Slide=##class(Community.Array.Slide).%New()
		Set Slide.Name="Name"_i
		Do Base.Slide.Insert(Slide)
	}
	Do Base.XMLExport(,",indent")
	Write !,"JSON: ",!
	Do Base.%JSONExport()
}

}

Class Community.Array.Slide Extends (%RegisteredObject, %XML.Adaptor, %JSON.Adaptor)
{

Property Name As %String;

}

The output is:

USER>Do ##class(Community.Array.Base).test()
<Base>
  <Slide>
    <Name>Name1</Name>
  </Slide>
  <Slide>
    <Name>Name2</Name>
  </Slide>
  <Slide>
    <Name>Name3</Name>
  </Slide>
</Base>
 
JSON:
{"Slide":[{"Name":"Name1"},{"Name":"Name2"},{"Name":"Name3"}]}

Is this what you need?

We are not InterSystems support team, we are a Developer Community. 😊

You can download it from WRC (Worldwide Response Center) portal, the official InterSystems Support.

If your system is under support/maintenance you should have access to it.

If you your system is not covered by support/maintenance, you are not entitled to updates.

For testing purpose you may use/download IRIS Community Edition.