I have done this before, but I am getting a coercion error in this particular process.
I have a document variable that contains data submitted as XDP. I can verify during playback that the content is XML. I need to access data in this. I first am using a setValue to move it to an XML variable. This is where I am getting the coercion error.
This is in a sub process. I have now moved the failing setValue mapping back into the parent long lived process and it works.
Other differences is the variable in the sub process is a document and a Document Form in the parent process. I was passing the Document Form in then trying to get the data out of it. I am now moving the data out into an xml variable, then to an xfaForm and passing in the xfaForm. The reason I would prefer the first way is I am calling the sub process multiple times and have to add the extra set value step in front of most of them.
I had even tried using a script step instead of a setValue. I tried using getInputStream off the document object as well the read methods. All I got was three characters total.
I believe the core issue was that the content type on the document was not set. I already changed my process and got around the issue another way, but ran into another similar issue where setting the content type fixed it.
I would bet the coercion utility uses the content type to decide what to do.