I have a similar orchestration, External users submit data to a SOAP endpoint and need to always receive a response.
I resolved this by creating one response message schema that can handle both sucess and failure situations.
I also make calls from the orchestration to other services that may fail. Those calls I wrap in a non-transacted scope, with an exception handler for the scope that subscribes to a fault message that I add to the action on the send/recieve port.
If an exception occurs in one of the calls to external resources, I store information about it in variables.
At the end of the orchestation I create the response message using the data gathered throughout processing and return it.