Thanks. I will take a look at it. I have some issues on a server where too many "delocks" are created because a lot of persistent objects are created in a long term transaction. I would like to avoid refactoring all the code to bypass persistent objects and use globals directly (which will require a lot of work).

Both are set to "deu8". I checked properties : 

The only difference is in collation tables. Both are set to "German2", but "Additional" column is not the same : 
CACHE : Cache standard, German1, German3
IRIS : German1, German3, German5, IRIS standard
I guess that's the reason. Not sure how it can be fixed (so CACHE behave like IRIS). All "edit" buttons are grayed.

I forgot to mention I am on Windows.

"iris terminal" works somehow. There is several issues with this approach :

- it does not redirect input/output (eg: echo 50 | iris terminal IRIS). One workaround is to put commands into a routine and call it explicitly : iris terminal IRIS MYROUTINE %SYS

- it does not block/wait until completion (which is an issue since I use that command from a deployment tool that need to know once it's done)

- there is no way to provide custom credentials (eg: execute commands with a specific user)

Thanks. This is the same trick as what I found in "InterSystems IRIS Adoption Guide".

If I wrote this in command line (eg: iris session IRIS), it outputs the command line documentation (which indicate something went wrong). "iris console IRIS" works by the way. Do I need to enable something before I can use session parameter ?

EDIT : it seems that irissession.exe is the equivalent on Windows.

Here is some code example

<form name="WWW" id="WWW" action="/csp/foo.cls" method="POST">
    <textarea id="PARAM1" name="PARAM1"></textarea>
</form>
document.WWW.submit();

Which will result in the following request :

POST https://something/csp/foo.cls?PARAM1=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX HTTP/1.1
Accept: */*
Content-Type: text/html;charset=UTF-8
Referer: https://something/
Content-Length: 0
Connection: Keep-Alive
Cache-Control: no-cache

As you can see, input value is added to the url, just like a GET.

I found the following XSD file which seems to be what I want :

C:\InterSystems\Cache\bin\cacheexport.xsd

It's much more complex than what I thought. Maybe exporting all cache files as UDL (as Dmitriy suggested) is a better approach. I don't know if SyncTool is able to export cache entities in that format directly. If not, I will need a second pass (that convert xml to udl).