This way then:

<call name='To application Rest' target='To application REST' async='0'>
  <request type='EnsLib.REST.GenericMessage' >
    <assign property="callrequest.Stream" value='##class(%Stream.GlobalCharacter).%New()'/>
    <assign property="status"  value='callrequest.Stream.CopyFrom(request.StreamFC)' action="set" />
    <assign property="status"  value='callrequest.HTTPHeaders.SetAt("application/xml", "Content-Type")' action="set" />
    <assign property="status"  value='callrequest.HTTPHeaders.SetAt(callrequest.Stream.Size, "Content-Length")' action="set" />
    <assign property="status"  value='callrequest.HTTPHeaders.SetAt("POST", "HttpRequest")' action="set" />
  </request>
</call>

Try to send it like this:

<call name='To application Rest' target='To application REST' async='0'>
  <request type='EnsLib.REST.GenericMessage' >
    <assign property="status"  value='callrequest.Stream.CopyFrom(request.StreamFC)' action="set" />
    <assign property="status"  value='callrequest.HTTPHeaders.SetAt("application/xml", "Content-Type")' action="set" />
    <assign property="status"  value='callrequest.HTTPHeaders.SetAt(callrequest.Stream.Size, "Content-Length")' action="set" />
    <assign property="status"  value='callrequest.HTTPHeaders.SetAt("POST", "HttpRequest")' action="set" />
  </request>
</call>

Also I think you can skip Content-Length - it's appended to the request automatically.

I had a similar requirement (only for automatic docs generation).

As each BH setting is also a class property, you can query %Dictionary for them. And build your CSVs from these queries.

 
Queries

I'm running:

store/intersystems/iris-ml-community:2021.1.0.215.0

And $zv is:

IRIS for UNIX (Ubuntu Server LTS for x86-64 Containers) 2021.1 (Build 215U) Wed Jun 9 2021 12:37:06 EDT

Are $zv for ml and non ml builds the same? How can I distinguish if my app is running on ml or non ml build?

I would like to know if I can move only user database or default databases as well??

All databases can be moved

what sort of permission do I need to change for new directory path

irisusr should have RW access to the folder. The easiest way is to check what access (owner, group, permissions) is set for existing files/folders and then recreate the same in a new location.

and what all files I need to copy at new location??

IRIS.DAT and stream subfolder if it exist.

Please suggest if modification in iris.cpf file can do this all operation  

Absolutely.