Richard Seroter has a few good
recommendations
here on how to diagnose the confusing “Internal SOAP Processing
Failure” message you get when a call to a WebService exposed from BizTalk fails. As
he mentions, it can be quite confusing and sometimes quite hard to get to the
root of the cause if you’re not familiar with the system.

Other recommendations I’d add to Richard’s list would include:

  • Make sure the URL specified in the receive location matches the one where the service
    is actually deployed. An simple typo here can make your life miserable.
  • Make sure the receive location is enabled (it never hurts to mention it :-))
  • If the service is request/response, make sure the orchestration is not taking too
    long to send the response message back and is not causing the service to fail with
    a timeout.
  • Make sure that you haven’t done any changes to the schemas used by the orchestration
    and didn’t run the Web Service Publishing wizard again to generate the WebService
    and the associated messaging. I’ve seen plenty of people having their exposed Web
    Service failed because of a schema change that causes the incoming message not to
    trigger the right subscription, or have it cause the orchestration to fail when it
    tries to access a missing field.

Besides this, I always recommend developers that any orchestration that is going to
be exposed as a Web Service should have extremely strong error handling built-in,
hopefully to ensure it always returns a response message (either a real response or
a failure message). Otherwise, an unhandled exception will cause the orchestration
instance to be suspended which will cause the Web Service to timeout.