Yes, it can, ECP seems to be compatible between IRIS and Ensemble (or Cache)
We will use it for migration to IRIS too, first add an IRIS ASync member to the mirror and then later promote it.
We only have done this in a test scenario, so no guarantee ;-)


The only way you could accomplish this is by watching the journal files, there would be journals like "Set Global" and "Kill Global"

This seems to work:

Method %OnNew(InitVal As %String) As %Status
Do ..HTMLZIPDoc.%LocationSet("c:\temp\zips")
Return $$$OK

Open the ClassDefinition: Set ClassDef=##class(%Dictionalry.ClassDefinition).%OpenId(ClassName)
Add the Parameter

Set Parm=##class(%Dictionary.ParameterDefinition).%New(ClassName_":"_ParameterName)
Set Parm.Default=ParameterValue
Do ClassDef.Parameters.Insert(Parm)

Find the desired method in ClassDef.Methods collection by MethDef.Name
Use the MethDef.Implementation stream to manipulate the code
Compile the class.

I don't know if this is the case, but be sure not to output anything before setting Content-Type or HTTP status.
In my case it was a debug Write statement that wrote directly to the current TCP stream.
Because of IO redirect when something is written to the stream (the HTTP body) first the headers must be written and those are at that time the default values.

But it's not about the front-end, you can use any you like.
The power of CSP is in the back-end: hybrid server-side rendering, seamless integration with Classes, #server/#call.
If you are developing an InterSystems-only web application, not using CSP would be foolish.
You can still use Bootstrap, Tailwind, etc for the UI sugar, but for data integration and routing there's no match.

Did you put a space (or a tab) at the beginning of the line ?
<tab>Write "xxx"