none
AS2 MDN to sender on receive response - party won't resolve RRS feed

  • Question

  •  

    Using a two-way static receive-response port over which we get an AS2 XML message.  I want to return an
    synchronous MDN.

    The send pipeline gives up an error that it can't resolve the party.
    But in the Party properties it only lets me include send ports, not
    the receive/response port that I'm using to send the MDN back on the
    response. 2006 R2 Can anybody point me in the right direction?

    Error below:

    Event Type:     Error
    Event Source:   BizTalk Server 2006
    Event Category: BizTalk Server 2006
    Event ID:       5815
    Description:
    A response message sent to adapter "HTTP" on receive port
    "TwoWayAS2" with URI "/foo/BTSHttpReceive.dll" is
    suspended.
     Error details: There was a failure executing the response(send)
    pipeline: "Microsoft.BizTalk.EdiInt.DefaultPipelines.AS2Send,
    Microsoft.BizTalk.Edi.EdiIntPipelines, Version=3.0.1.0,
    Culture=neutral, PublicKeyToken=31bf3856ad364e35" Source: "AS2
    encoder" Receive Port: "TwoWayAS2" URI: "/foo/
    BTSHttpReceive.dll" Reason: Unable to access party using send port:
    TwoWayAS2  Error: The party was not found..

    Thursday, November 20, 2008 8:14 PM

Answers

  • I meant that you can see the actual stream contents of the MDN that you send back to your partner. For a 500 server error on their end maybe the MDN is malformed or getting garbled or something like this. Or for some reason it is getting sent over https rather than http, etc. Also, did you check to compress the MDN and your partner cannot decompress it?

     

    Another idea is that in the AS2 headers they may be sending an address for async MDN that is different from the address for sending an outbound message to. You want to look at the AS2 property for "Disposition-Notification-To".

     

    Thanks,

     

    Friday, November 21, 2008 8:58 PM
    Moderator
  • Hi Ben,

     

    I finally solved it yesterday. The partner was set up to not allow lines in the http header to fold.  How obscure is that?

     

    Then try to find a BizTalk setting for header folding...nothing.

     

    Turns out there is in the Party AS2 properties page,  a check box for "Unfold headers", apparently folding the headers is the default.  Checked that box, and the async MDN was automagically accepted.

     

    And after two weeks of struggling with this, one of the people on the trading partner's side said, "Oh yeah, I remember other partners having this same problem..."  Good thing it was over the phone, so he couldn't see the look on my face.

     

    As for the actual content of the MDN, that turned out to be stupid easy:  just create a subscription port that uses the file adapter.  Use the AS2Send pipeline and you get the entire content sent down the wire, use the PassThruTransmit pipeline to just see the XML package.  It was after I did that and sent over the content that went down the wire in an email to the partner that one of their people noticed the header lines wrapping.

     

    Thanks for your suggestions, hope I can return the favor some time.

     

    Regards,

     

    Ron

     

     

    Wednesday, December 3, 2008 6:55 PM

All replies

  • First of all, are you using AS2Send for the send pipeline of the 2-way port? If not, what pipeline are you using?

     

    Next, I would check the AS2 party as sender properties, it sounds like perhaps this was not setup. You need to check to override the inbound properties and then check "Generate MDN" and any related signing options that are valid for your situation.

     

    A really helpful thing for checking the outbound MDN is to enable the AS2 status reporting. See the following link for more information on this: http://msdn.microsoft.com/en-us/library/bb226464.aspx. After you enable AS2 status reporting you can go back to your AS2 party and click "store outbound MDN in non repudiation database." There are also other options for EDI or AS2 for storing data to be viewable in the status reports. This can be helpful because the reports help you correlate the inbound message with what was sent back out as the MDN.

     

    Let me know if you have any trouble enabling the AS2 status reporting.

     

    Thanks,

    Friday, November 21, 2008 7:15 PM
    Moderator
  • Hi -

     

    I'm using AS2 Send for the outbound pipeline.  In fact, I can send it asynchronously using a dynamic one way send port that subscribes to the async messages (but then I get a connection closed unexpectedly error from the other end, grrr).

     

    I have the AS2 party set up correctly because I can send (and receive) messages other than the MDN, they get signed and encrypted correctly. 

     

    I have turned on AS2 reporting for the non-repudiation database, although I haven't looked in there yet for anything. Once I set up BAM the AS2 reporting setup was just fine.

     

    So...I can't get it to work sync, and when I try to send asynch the other server returns a 500 error. 

     

    Thanks for the response, I keep looking in to every possible combination but this really has me stumped.  The other party is a hue retailer that uses this same setup with hundreds of vendors, so I'm certain they are correctly set up to process these on their staging system.

     

    Thanks,

     

     

    Ron

    Friday, November 21, 2008 7:24 PM
  • I have had a very hard time getting the sync MDNs to work too for a VAN for some EDI messages. I eventually just switched to async MDNs and it worked fine. I think I used the 2-way AS2 port with async MDN without needing a separate 1-way dynamic send port with filter.

     

    The next thing I would check is if the async MDN HTTP address for where the MDN should be sent is set correctly. That's weird that you can send but get a 500 for when trying to send for async MDN.

     

    Do you have any points in the process where the context properties might be dropped (like writing out to a FILE port)? This would be one reason that the "partner not found" message occurs.

     

    Thanks,

    Friday, November 21, 2008 8:02 PM
    Moderator
  • I gave up on the sync MDN and went to asynch.  Why the synch stuff doesn't work, who knows, but the partner doesn't care if it is sync or asynch.  

     

    My process goes like this:

     

    I get an order from the partner.  I try to send an MDN to their AS2 address.  It fails

     

    I process the order in our system, then I send an order fulfillment response to the same AS2 address that I try to send the MDN.  That succeeds. 

     

    So I can send to the exact same address, in both cases using the AS2 send pipeline, signing with the same certificate.  The XML package responding to the order goes out fine, but the MDN fails.  And as I said, this is a huge retailer, so they are successfully doing this with hundreds of vendors already, which puts the ball in my court.

     

    Thanks for the suggestions Ben, and please keep 'em coming.

     

     

    Friday, November 21, 2008 8:18 PM
  • Ok, my mistake, I looked back at my implementation and I am using a separate send port with a filter to relay the async MDN back.

     

    For your async MDN which fails with a 500, definitely look in AS2 status reporting because you can see exactly what was sent back - this should help you identify the problem. You might also ask your trading partner for information from their logs. When I setup a system to work with a VAN they said sync or async was ok but in their system it was not listening for async until I told them it was coming in async. Maybe ask them if they are listening/expecting for async.

     

    Thanks,

     

    Friday, November 21, 2008 8:29 PM
    Moderator
  • This retailer has a partner web site that lets you set up all of that stuff yourself, so I verified it was set to async.  I have set the MDN to go in to the non-repuidiation database, I'm going to look there, and try posting it via a little windows console app I have that will do a post. 

     

    When you say "what was sent back" I'm not sure what you're referring to - this is my first AS2 project in BizTalk.  Is there some place that will give me a more detailed error than I see from the event log? 

     

    Friday, November 21, 2008 8:32 PM
  • Maybe this means something (?) - I have one partner defined, which is the partner we receive orders from.

     

    When I look in AS2 reporting at messages we receive from them, they are listed as the sender party and the receiver party.  Perhaps that sets the parties wrong in the MDN going back to them? Which makes their system reject it?

     

    I assume I need to set up a party that represents us, and then somehow (how?) get it to recognize that as the receiver party on inbound messages.  Does that sound right?

     

    Friday, November 21, 2008 8:53 PM
  • I meant that you can see the actual stream contents of the MDN that you send back to your partner. For a 500 server error on their end maybe the MDN is malformed or getting garbled or something like this. Or for some reason it is getting sent over https rather than http, etc. Also, did you check to compress the MDN and your partner cannot decompress it?

     

    Another idea is that in the AS2 headers they may be sending an address for async MDN that is different from the address for sending an outbound message to. You want to look at the AS2 property for "Disposition-Notification-To".

     

    Thanks,

     

    Friday, November 21, 2008 8:58 PM
    Moderator
  •  

    I checked the disposition notification to. 

     

    The MDN stream - I see one report on the hub page at the bottom for AS2/MDN correlation, so I assume it is via this.  But when I right click on an individual entry, I just get an option to see the decoded message, not the MDN.  The docs refer to some place you can see an MDN, but I would think the option would be in this report somewhere.  Can you point me to the right place to see the actual MDN content? 

     

    Thanks again for the helpful suggestions.

    Friday, November 21, 2008 9:27 PM
  • I was just checking back in to see how the AS2 integration was going. I am not sure of a better place to find the actual content of the MDN. Were you able to resolve the 500 server error?

     

    Thanks,

    Wednesday, December 3, 2008 6:45 PM
    Moderator
  • Hi Ben,

     

    I finally solved it yesterday. The partner was set up to not allow lines in the http header to fold.  How obscure is that?

     

    Then try to find a BizTalk setting for header folding...nothing.

     

    Turns out there is in the Party AS2 properties page,  a check box for "Unfold headers", apparently folding the headers is the default.  Checked that box, and the async MDN was automagically accepted.

     

    And after two weeks of struggling with this, one of the people on the trading partner's side said, "Oh yeah, I remember other partners having this same problem..."  Good thing it was over the phone, so he couldn't see the look on my face.

     

    As for the actual content of the MDN, that turned out to be stupid easy:  just create a subscription port that uses the file adapter.  Use the AS2Send pipeline and you get the entire content sent down the wire, use the PassThruTransmit pipeline to just see the XML package.  It was after I did that and sent over the content that went down the wire in an email to the partner that one of their people noticed the header lines wrapping.

     

    Thanks for your suggestions, hope I can return the favor some time.

     

    Regards,

     

    Ron

     

     

    Wednesday, December 3, 2008 6:55 PM