biztalkbiztalk-2009

BizTalk: Knowing send port finished write file


I has a problem with send port and an application: The process cannot access the file because another process has locked a portion of the file.

I guess the problem is while BizTalk send port is writing a file, the application pickup this file and process.

My scenario:

I think: While file send port is writing and not yet finished, the orchestration does not wait but continue next step - calling application. And this leads to above error.

Is my assumption correct?

And how can I solve this problem?


Solution

  • You are absolutely correct your orchestration basically throws the message in your send port and continues, but you can change this behavior and I'll give you a really simple solution here it is
    * Set your Logical send port like this DeliveryNotification=transmitted

    Now your orchestration will wait for delivery ACK

    *To make things cleaner Create a scope and catch the Microsoft.XLANGs.BaseTypes.DeliveryFailureException which occurs when you don't get an ACK

    *Also add in your catch block a suspend Orchestration shape so you can resume your orchestration if your message doesn't get to its destination :)

    This works with both File and FTP protocol, (I didn't test others)