Something like this:

set status = ##class(Ens.Director).CreateBusinessService("My.BusinessService", .instance)
set status = instance.SendRequestAsync("My.BusinessProcess", request, .response)

I would get a bundle from patient X for each resource that you want to move and send a post for the patient Y with a bundle formed by the resources that you got modifying the reference to the patient Y.

Here you can find an example about a jdbc connection, in the example is with MySQL, you only need to change the jar file and the class name.

You can kill the process from the process manager of Windows looking for the id of process that you got from IRIS.

And from my experience with IntegratedML... Is not very fast but not so slow.

You can find more trainings related to interoperability and development in the same web. Our training team is doing a great job!

I'm not sure, but I think that it's a default behaviour of SOAP responses, it returns always the response wrapped in a tag with the name of the method that was invoked. Can't you manage it from the application who sent the request?

You can see a similar example here. In your case you can set in pResponse the name of the file created and read it from the business process.

Maybe is there whitespaces in context.Prov? Have you tried to remove it? 

if $ZSTRIP(context.Prov,"<>W") = $ZSTRIP(context.ProvName,"<>W")