none
EDI Send Pipeline Message generation RRS feed

  • Question

  • The EDI file is getting generated in the FILE location eventhough some segment level errors are being raised in the EDISend Pipeline. How can the message generation be stopped when any validation errors are being raised???

    Regards, Vivin.

    Wednesday, October 1, 2014 7:07 AM

Answers

  • So your message is transmitted to the PROCESS folder even when you have the error above?
    That would be quite surprising as the error clearly states that your message is being suspended by the BizTalk engine.

    Are there any other processes/ports sending to that same folder? Maybe you are seeing other files being moved around... 


    Glenn Colpaert - MCTS BizTalk Server - Blog : http://blog.codit.eu

    • Marked as answer by Vivin Muthu Monday, October 20, 2014 7:13 AM
    Wednesday, October 1, 2014 7:52 AM

All replies

  • Hi Vivin,

    You need to enable the EDI type validation. (EdiDataValidation property)

    If you deactivate the EDI type validation, the EDI receive pipeline or EDI send pipeline will process data elements that have errors checked by the EDI type validation without suspending the message being processed.

    Link: http://msdn.microsoft.com/en-us/library/bb226537.aspx

    Rachit

    If this answers your question please mark it accordingly. If this post is helpful, please vote as helpful by clicking the upward arrow mark next to my reply.

    Wednesday, October 1, 2014 7:27 AM
    Moderator
  • The EDI type validation is enabled already but still the file is getting generated.

    Regards, Vivin.

    Wednesday, October 1, 2014 7:31 AM
  • Can you post the errors your are seeing?

    Glenn Colpaert - MCTS BizTalk Server - Blog : http://blog.codit.eu

    Wednesday, October 1, 2014 7:38 AM
  • My application is designed like below,

    1) I generate the EDI file by transmitting the message to a PROCESS folder using the EDISend Pipeline.

    2) The File from the folder will be copied to a separate SUCCESS folder using a filter expression.(BTS.ReceivePortName)

    I have validation errors such as invalid value in data element but the file is getting copied in the SUCCESS folder.

    Note: I have tried disabling the moving of file from PROCESS to SUCCESS folder but at that time the file is not available in the PROCESS folder.


    Regards, Vivin.

    Wednesday, October 1, 2014 7:39 AM
  • I get this error but still the file is getting generated in the SUCCESS folder

    Regards, Vivin.

    Wednesday, October 1, 2014 7:42 AM
  • So your message is transmitted to the PROCESS folder even when you have the error above?
    That would be quite surprising as the error clearly states that your message is being suspended by the BizTalk engine.

    Are there any other processes/ports sending to that same folder? Maybe you are seeing other files being moved around... 


    Glenn Colpaert - MCTS BizTalk Server - Blog : http://blog.codit.eu

    • Marked as answer by Vivin Muthu Monday, October 20, 2014 7:13 AM
    Wednesday, October 1, 2014 7:52 AM
  • This is the only application sending message to that folder. Any idea how this is happening??

    Regards, Vivin.

    Wednesday, October 1, 2014 8:43 AM

  • 2) The File from the folder will be copied to a separate SUCCESS folder using a filter expression.(BTS.ReceivePortName)


    Hi,

    When you set the BTS.ReceivePortName filter on the send port, the send port subscribes directly to the receive port and sends the original message without it being processed by the orchestration.

    Obviously file will be copied to the SUCCESS folder.

    Rachit

    Wednesday, October 1, 2014 8:48 AM
    Moderator
  • Hi Rachit,

    The EDI file will be generated in the PROCESS folder after the processing done in the orchestration. Those files are then copied to the SUCCESS folder using the BTS.ReceivePortName filter.


    Regards, Vivin.

    Wednesday, October 1, 2014 8:54 AM
  • Hi,

    1) Check the PROCESS folder is empty.

    2) Try stopping the send port which moves file from PROCESS to SUCCESS folder and then generate the EDI file to your PROCESS folder and check if you see the file generated above pending to be picked up from PROCESS folder?

    Note: I am asking you to do this just to check whether actually file is created in your PROCESS folder or not.

    I think you subscribing to the same receive port for both PROCESS and SUCCESS folder processing.

    Rachit


    Wednesday, October 1, 2014 9:00 AM
    Moderator
  • Hi Rachit,

    The PROCESS folder is empty only and even after disabling the send port which moves the files from PROCESS to SUCCESS too.


    Regards, Vivin.

    Wednesday, October 1, 2014 9:14 AM
  • Your message will not arrive in the PROCESS folder because you have EDI validation errors and your message is being suspended. Hence the error you posted before.

    Your orchestration tries to write a message to the PROCESS folder, but the message will never arrive in your folder because of the EDI validation errors, you should see your message in the suspended instances list.
    So you receive port listening on the PROCESS folder will not receive any file and therefor your send port filtering on your receive port will not be triggered and therefor you will not have any file in your SUCCESS folder.

    I would re-validate your setup because I assume there is another process writing to your SUCCESS folder. Because your orchestration will not be able to write to the PROCESS folder because of the EDI validation errors.



    Glenn Colpaert - MCTS BizTalk Server - Blog : http://blog.codit.eu

    Wednesday, October 1, 2014 9:30 AM
  • Hi,

    Exactly!

    Try to understand, if you have stopped the send port which moves the files from PROCESS to SUCCESS folder that means that their is no subscriber to pick messages from PROCESS folder. So if EDISend Pipeline was actually writing file to PROCESS folder that file should be present there (as their is no subscriber to subscribe that message), but its not.

    Pls check the value of BTS.ReceivePortName filter on your send port. You must be using the same receive port name from where u have initiated the process.

    Hence, the file is picked twice,

    1) by the orchestration which process message to PROCESS folder. (Fails)

    2) By the send port which writes file to SUCCESS folder. (Writes file to location)

    Rachit




    Wednesday, October 1, 2014 9:31 AM
    Moderator
  • Actually the process is in orchestration is

    1) Data From OracleDB ==> MAP ==> COPARN EDI File.

    The file is sent to the PROCESS folder. Then i have a receive port mapped to the same PROCESS folder path. Then i have a send port with SUCCESS directory path which has the BTS.ReceivePortName filter.


    Regards, Vivin.

    Wednesday, October 1, 2014 9:45 AM
  • Can you pls share

    1) How many receive ports and receive locations you have in the application?

    2) Names of all the receive ports?

    3) Value of BTS.ReceivePortName filter on the send port?

    Rachit


    Wednesday, October 1, 2014 9:49 AM
    Moderator
  • Hi Rachit,

    1) I have two receive ports and two locations.

    2) PollingRcvPort (To poll data from DB) and   CoparnProcessRcvPort (To pick up files from PROCESS folder).

    3) The filter is BTS.ReceivePortName == CoparnProcessRcvPort.


    Regards, Vivin.

    Wednesday, October 1, 2014 9:58 AM
  • This looks fine.

    Can you pls explain

    1) why you want to pick the file from PROCESS folder and dump it to SUCCESS folder?

    2) why cant you directly write the file to SUCCESS folder?

    3) Is their any processing happening on the file picked up from PROCESS folder before writing to SUCCESS folder?

    Rachit

    Wednesday, October 1, 2014 10:21 AM
    Moderator
  • The files will be generated in the PROCESS folder. From where it will be moved to SUCCESS and UPLOAD folders. The SUCCESS folders is for our future reference. And the UPLOAD folder is for the receiver to pick the file for their processing.

    Regards, Vivin.

    Wednesday, October 1, 2014 11:47 AM
  • Hi Glenn,

    This is my process flow

    * Orchestration generates COPARN file with data from Oracle DB into PROCESS folder.
    * A receive port is linked with receive location with PROCESS folder as the URI.
    * Two send ports are available to move the file generated in the PROCESS folder to the SUCCESS folder and UPLOAD folder based on the filter expression.

    Now even when I am having some EDI validation errors the file is being available in the SUCCESS and UPLOAD folder. I tried disabling the receive location which moves the file from PROCESS to SUCCESS and UPLOAD folder and the file is not getting generated in the PROCESS folder.

    Note: Also there is no other process writing the files to the SUCCESS and UPLOAD folder. I have even verified the contents of the file and they are the same.

    Kindly assist as why the file is being generated even when EDI validation errors are available.


    Regards, Vivin.

    Wednesday, October 8, 2014 6:37 AM
  • How does your orchestration put the files in the PROCESS folder. Are you using direct binding or specify later?


    Glenn Colpaert - Microsoft Integration MVP - Blog : http://blog.codit.eu

    Wednesday, October 8, 2014 6:44 AM
  • I have used the specify later option to configure it in the admin console

    Regards, Vivin.

    Wednesday, October 8, 2014 7:01 AM
  • What filters are specified on your sendports?

    • Sendport that sends to SUCCESS
    • Sendport that sends to PROCESS
    • Sendport that sends to UPLOAD

    I still assuming there is something weird going on with the setup of your filters, that's why I am verifying this...


    Glenn Colpaert - Microsoft Integration MVP - Blog : http://blog.codit.eu

    Wednesday, October 8, 2014 9:58 AM
  • Hi Glenn,

    Sendport that sends to SUCCESS - PROCESS_ReceivePortName

    Sendport that sends to UPLOAD - PROCESS_ReceivePortName

    Sendport that sends to PROCESS - It has no filter expression. This port is linked with the orchestration.


    Regards, Vivin.

    Wednesday, October 8, 2014 10:40 AM
  • Still the file is being copied to the SUCCESS and UPLOAD folder. Kindly advice on this error.

    Regards, Vivin.

    Tuesday, October 14, 2014 4:30 AM
  • Hi Vivin,

    The only concern I see is the Send Port(SUCCESS) Filter - please check once again if it's pointing to the receive port which is linked with receive location with PROCESS folder as the URI.

    Secondly, is there any send port group in your application? If yes please check the send ports in it and remove the send port pointing to Process folder from it.

    If no, then I would suggest to restart the application and host instance.

    _____________________________________________________________________________

    Tuesday, October 14, 2014 5:10 AM
  • Hi Mahesh,

    I rechecked the filter expression in the send port and also there is no send port group in my application.I tried restarting the application and host instance too but still the problem persists.


    Regards, Vivin.

    Tuesday, October 14, 2014 9:23 AM
  • Hi Vivin,

    Ok, do following (last thing):

    1. Delete the Send Port (pointing to Sucess and Upload Folder)

    2. Restart the application and host instance

    3. Test with one good file to check if file is going to Process Folder and other with file with error to suspend the message

    4. After that add send port pointing to Sucess folder and perform step 3 and check if you get desired result

    5. Add the send port pointing to Upload folder and repeat step 3.

    You got it right, I am asking you to redo (sometimes , somewhere some references don't get deleted and cause the issue like you are facing). It's not ideal way but I think it shouldn't harm as well.

    _____________________________________________________________________________

    Tuesday, October 14, 2014 9:41 AM
  • Hi Mahesh,

    I am still facing the same issue even after following the steps u said


    Regards, Vivin.

    Tuesday, October 14, 2014 10:47 AM
  • The issue was since biztalk reads and writes the files in streams the receive location subscirbes the message even before it is completely written and validated. I have used temporary file for writing in the PROCESS port and picked the files .EDI extension in the Receive location for the process folder.

    Regards, Vivin.

    Monday, October 20, 2014 7:12 AM
  • The issue was since biztalk reads and writes the files in streams the receive location subscirbes the message even before it is completely written and validated.
    To be perfectly clear, that's not how it works unless you're using a custom component somewhere.  The FILE Adapter would not release the lock until the file is completely written.
    Monday, October 20, 2014 11:25 AM
  • Hi John,

    When we even used the temporary file while writing the partial temporary file was being copied to the SUCCESS folder. Is there any link where the working of the FILE adapter is well explained??


    Regards, Vivin.

    Thursday, October 23, 2014 9:04 AM