BTS2004 Delivery Notifications

Scenario: You create a business process that receives a message and send it to multiple target systems.  For whatever reason the send from the business process fails ie. the message exists the business process and a later pipeline or adapter fails.

This failure could be pretty important information that you might want to make available to the orchestration for further decision making pr altering the flow. So how to you make that scenario work in BTS 2004?

1. In the orchestration designer right click on the port surface and create a new port

2. In the properties windows choose “Send“

3. Notice the new property delivery notification. Choose “transmitted“.

4. Create a scope

5. Create a send and hook it up to the port inside a scope

6. Right click on the scope and create an exception handler

7. Select the exception handler and enter the exception objectname: “myException“ (ie. whatever you want) and the ExceptionObjectType as Microsoft.XLANGs.BaseTypes.DeliveryFailureException

8. Inside the exception handler drop in a terminate shape and assign the error as “delivery failed“.

Now test your scenario by creating an exception in a pipeline component/adapter.

Pretty cool huh?

Comments (10)

  1. Jody says:

    Is there any way to get more detail about the reason for the exception? We can see DeliveryFailureException, but we would like to know why.

  2. Mike says:

    If you have two send ports and let’s say both of them use the SQL Adapter, can you have both act as one transaction? If one SQL Insert fails, I want both of the sends to roll back.

  3. Joris says:

    Scott, Which build do you use? We use build 4712, but can’t seem to find the property you are talking about.

  4. Joris says:

    Let me refrase my question: Which build do you use, because in build 4712 it doesn’t seem to work. I tried your example and added a send after the exception (in a decide shape), but it won’t work.

  5. Brian Loesgen says:

    Yes, VERY cool Scott. I’m using this approach in a solution that sends files by FTP. If the site goes down, now I can handle it intelligently.

    So, what about in the other direction? Ie: if I have a receive location that’s an FTP site, (and that receive location goes to an activating receive shape) and the site goes down, I want to handle it. Presumably the same approach won’t work as the orchestration has not been instantiated. Is there any way I trap and handle this condition?

  6. Amadeu Campanelli says:


    did you find the delivery notification property? I’m new to BizTalk and I didn’t this property too.


    Could you help me?

  7. Amit Sawant says:


    We have some doubt in Exception handling with MSMQT.

    we have a scenario wherein we receive a flat file from a MSMQT port,transform it by using map

    and transmit it to MSMQ of another m/c.

    While transmiting we initialize a correlation set inorder to correlate the response of this transmit.

    The send shape and receive shape for sending the message and receiving the response message are in same scope shape.

    We have added a exception handler to this scope shape which handles System.Exception and which transmit the original message to temporary folder.

    Orchestration works fine and we get desired output.

    BUt if we remove the network code from the m/c(so that it cannot access the MSMQ of another m/c) the send should fail and

    message should be transmited to temp folder.

    The orchestration consumes the input file but doesn’t raise an exception.No error are seen in event log also.

    we also tried DeliveryFailure Exception,general exception in the exception object type.

    Send port as delivery notification property =Trasmitted.

    Number of retry=0

    Why there are no error’s in eventlog ???

    why this exception is not handled ??



  8. Commonality says:

    When you are invoking WebServices from your BizTalk Server 2004 orchestrations, you might need to ensure that two things happen…