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.

I'm trying to convert date - 2023-09-28T20:35:41Z to BST/GMT format.

Please note that BST and GMT are not "format" and (may) have different values.
From your answer to @Robert Cemper it seems you need to covert to BST value (not GMT) and to "yyyymmddhhmmss" format.

To answer your question, is BST your system local timezone?

If you don't like the default behavior, change it. 😊

You can change it system wide from Management Portal, System Administration -> Security -> System Security -> System-wide Security Parameters
There you can change "Inactive limit" to 0 (zero), this way accounts never expire.

You can also change it for any individual user accounts in Management Portal, System Administration -> Security -> Users -> (select the user)
There you can enable the checkbox "Account Never Expires".

You have a superclass with some logging method. Now every time the logging method is called from a child class it logs the name of the superclass instead of the Child class?

No

If so the issue is that $CLASSNAME returns the name of the class where the method is located not where a method is called from.

Wrong, it returns the class name where it is called from.

Your first sample method works just fine, no need for method generator.

I suggest you to make a quick test.