Interesing BizTalk Pitfall

Today I faced a really interesting problem when redeploying a BizTalk application:

In an orchestration I map the Response of a WebService call together with another message to an outbound message. Everything went fine until I changed the WebService. I put the WebMethod into another WebService (called method and return parameter remained the same as before), deleted the whole webreference, added the webreference to the new WebService and changed the types of my Webservice request and response messages to the new webmessagetypes. After a successfull rebuild a deployed it without an error.

When starting a test I stepped through the process with orchestration debugger and discovered that the WebService successfully returned data but the Outbound message was empty. (the part that originated from the WebService)

Some investigation showed me that in Visual Studio the maps input type still pointed to the namespace and the node of the old WebService. But there was no build error or warning since the the type of the WebService response message was the same as before. There also was no error when running the process - the map simply did not copy data in the destination message because it found no corresponding namespace in the source message.

Such a case can be tricky because there is no error or hint that something is wrong. The map also does not indicate that there was a change of the webservice response.

Specify how Credentials are used in Dynamic SOAP Messages

When calling a WebService from BizTalk, beside specifying Username and Passwort, one has to set the form of authentication (Anonymous, Basic, NTLM, etc.) too. This can be done either on the Sendport Configuration or - when using a dynamic port - by the following code (example for using NTLM = Windows Integrated Authentication) in an expression shape:

MessageName(SOAP.AuthenticationScheme) = "NTLM";

«August»
SunMonTueWedThuFriSat
2930311234
567891011
12131415161718
19202122232425
2627282930311
2345678