We are not WRC, it is developer community.

As Tom already mentioned, in Caché class is not just as routine, it is like a bunch of objects defined in %Dictionary package, methods code can be found with %Dictionary.MethodDefinition or %Dictionary.CompiledMethodDefinition, depends on the situation.

But it is possible to get a text of class like you can in Studio

%Compiler.UDL.TextServices with methods GetTextAsStream, GetTextAsFile and etc., and convert back from text to class

In versions since 2016.2 you can use export to file in UDL format with $system.OBJ.ExportUDL()

I would recommend to use more suitable class for it. %Stream.FileCharacter when you can set TranslateTable property

Set stream=##class(%Stream.FileCharacter).%New()
Set sc=stream.LinkToFile("c:\myfile.txt")
Set stream.TranslateTable = "UTF8"
While 'stream.AtEnd {
	Set line=stream.Read()
	; Process the chunk here
}

And you don't need any conversions after that

Collation 20 is Portuguese2. Looks like windows was localized in Portuguese or regional settings when Ensemble was installed. But later changed locale definition to something else. You should return back because the database was created with this collation, and if you want to use new collation you should create a new one and move all data to the new database.

I think your original locale was ptbw, so, you should choose it and press install, and in confirmation press install again.

Looks like you want to get more than just hide CSPCHD. It is still possible. You can achieve with URL rewrite in IIS or Apache.

Let's say if you configure your DNS for lcda.omnidata.com.au or any other as you want, or just *.omnidata.com.au for all subdomains, to the same server. You can configure URL Rewrite's for the particular domain to another path.

Rewrite is different from Redirect, when Redirect will show new URL, when Rewrite works hidden and even can redirect to some internal server not available from outside.

I would suggest using JSON in another way.

If you caught some errors, please provide more details, sometimes it is quite difficult to predict whats going on, and it helps to find the solution faster.

If you doing SOAP, it should be XML. If you need JSON response it could not be SOAP, it can be REST.

Why did you use altJSONProvider  instead of jsonProvider

I think it is possible to do, with little coding.

  • Set Inactive limit in system security settings.
  • While Inactive limit is a system-wide setting, you have to check  Account Never Expires  for those users who should not be expired.
  • InterSystems Cache has special task SecurityScan which executes every day, and disable expired users.
  • Create new system task, and schedule it to start after SecurityScan. This task should find disabled users in table Security.Users, and enable them and set flag ChangePassword, which will say to change a password on next login.

In CSP-Application you should choose Use Cookie for Session: Always

Or you can control it programmatically in %session with Property UseSessionCookie 

property UseSessionCookie as %Integer [ InitialExpression = 1 ];

Indicates whether sessions should be maintained using cookies or not. There are three possible values:
  • 0 - Never use cookies. This will pass the CSPCHD parameter around in all the url links and as hidden fields in the <FORM> elements.
  • 1 - Auto detect cookie support. This will start by trying to insert a cookie into the browser, if this fails it will switch to mode 0 and never use cookies for this session. The initial page will send both cookies to the browser and it will include the CSPCHD parameter in all links and forms.
  • 2 - Always use cookies. This will only use cookies so if the browser does not accept the cookie then the session state will not be maintained.