NAcks or Negative Acknowledgments are small SOAP messages that exist in BizTalk when a messaging error occurs.  This happens when adapters fail, pipelines fail, messages do not match subscriptions, ect.



These messages can be subscribed to and a business process can be written to react to all of these messages or specific error codes. 



This sample Orchestration shows how simple it is to catch these messages.  To subscribe to a NAck, just create a subscription to: BTS.AckType = NACK.  It’s that easy!



Download: NAck Catching Sample



Setup: Download and extract the solution.  Create a receive port that causes a routing failure.  Drop a message and watch for the output in the Out folder.



For a routing failure NAck, the following properties are available in the message context and could be accessed inside the Orchestration:


AckDescription


AckFailure Category


AckFailure Code


AckID


AckInboundTransportLocation


AckOwnerID


AckReceivePortID


AckReceivePortName


AckType



With this information, logic could be included inside the Orchestration to extract / reprocess a message or log the error to an additional notification facility (other then the event log since it would already be logged there).