none
Custom Segments Validation RRS feed

  • Question

  • Hi! I deployed my biztalk projet to run some test. I configured the PAM and my test were successful. Unfortunatelly, my tests were executed with edi files that I create myseft, so the information header match exactly with the information in the PAM. The problem is that my partners can send message with the right ISA6 and ISA8, but they don't care about the ISA5 and ISA7 so they put a value that doesn't match with what is in the PAM. Is that possible to customize the header validation of my edi messages?

    I know that I could ask the partner to be edi compliant when he sends a message, but I CANNOT ask him to modify anything.

    Merci!

    Friday, April 15, 2011 2:11 PM

Answers

  • It depends on how and what are you using the ISA5 and ISA7 for.

    I would suggest creating a custom property schema with properties as CISA5 and CISA7

    Read the ISA5 and ISA7 from the EDI Message in the custom component and write to CISA5 and CISA7.

    Change the EDI message with ISA5 and ISA7 as "ZZ".

    When the message goes through EDI Disassembler it will disassemble with ISA5 and ISA7 as ZZ at the same time CISA5 and CISA7 will have the original values.

    Down the line if you are using the message in the Orchestration, you access the CISA5 and CISA7 values from the context property.

    If the process in only messaging scenario then you make use of the Context Accessor functoid to get the CISA5 values in the map.

    I think it's not possible to disable validation for ISA5 and ISA7, as they are one of the key values in the Trading partner agreements.


    Sathish - http://blog.tsathish.com - Please Indicate "Mark as Answer" if this Post has Answered the Question
    Friday, April 15, 2011 2:54 PM

All replies

  • If the ISA5 and ISA7 sent by your partner is  present in the list of ID qualifier, then you can change trading partner setting's to set the ISA5 and ISA7 values.

    However if it's not present in the list of qualifier's, you can create a custom pipeline component to read the EDI message and change the ISA5 and ISA7 values according to trading partner settings.

    Place the custom pipeline component before EDI Disassembler.


    Sathish - http://blog.tsathish.com - Please Indicate "Mark as Answer" if this Post has Answered the Question
    Friday, April 15, 2011 2:21 PM
  • I wanted to do that (to change in the PAM the new value of the trading partner) but that partner could send a EDI message with ISA5=01 and in an other message ISA05=ZZ

    If I change the information thru a pipeline, the message will be valid, I agree, but when I will "debatch" the transactions, the header information that are present in each file will not be the same than the original file:

    <ns0:X12_00401_820 xmlns:ns0="http://schemas.microsoft.com/BizTalk/EDI/X12/2006">
    	<ISA>
    		<ISA01>##</ISA01>
    		<ISA02>##########</ISA02>
    		<ISA03>##</ISA03>
    		<ISA04>##########</ISA04>
    		<strong><ISA05>01</ISA05>
    </strong>		<ISA06>PARTNERNAME  </ISA06>
    		<strong><ISA07>ZZ</ISA07>
    </strong>		<ISA08>PARTNERNAME  </ISA08>
    		<ISA09>000000</ISA09>
    		<ISA10>0801</ISA10>
    		<ISA11>U</ISA11>
    		<ISA12>00400</ISA12>
    		<ISA13>000000001</ISA13>
    		<ISA14>0</ISA14>
    		<ISA15>T</ISA15>
    		<ISA16>:</ISA16>
    	</ISA>
    

     

    It's why I would like to customize the header validation. I want that whatever the partner writes in ISA5 and ISA7, I don't want those fields to be validated with the values in the PAM

     

    Friday, April 15, 2011 2:37 PM
  • It depends on how and what are you using the ISA5 and ISA7 for.

    I would suggest creating a custom property schema with properties as CISA5 and CISA7

    Read the ISA5 and ISA7 from the EDI Message in the custom component and write to CISA5 and CISA7.

    Change the EDI message with ISA5 and ISA7 as "ZZ".

    When the message goes through EDI Disassembler it will disassemble with ISA5 and ISA7 as ZZ at the same time CISA5 and CISA7 will have the original values.

    Down the line if you are using the message in the Orchestration, you access the CISA5 and CISA7 values from the context property.

    If the process in only messaging scenario then you make use of the Context Accessor functoid to get the CISA5 values in the map.

    I think it's not possible to disable validation for ISA5 and ISA7, as they are one of the key values in the Trading partner agreements.


    Sathish - http://blog.tsathish.com - Please Indicate "Mark as Answer" if this Post has Answered the Question
    Friday, April 15, 2011 2:54 PM
  • OK, I find a way to do what I needed, it's simple, but you have to know that it's not gonna work with Biztalk 2010, you have to use previous version.

    What is important here, is to understand how party agreement resolution works. Many sites specify that if there is no match between the ISA5, ISA6, ISA7 and ISA8 from the message with the data in the PAM, so the match is gonna be done with the fallback agreement properties. But there is an extra step in the middle:

    "If step 1 does not succeed, resolve the agreement by matching just the sender qualifier and identifier in the interchange header with those in the properties of an agreement. Also, because the first step did not succeed, it is safe to assume that BizTalk Server will be receiving the message. Hence, BizTalk Server tries to match the receiver qualifier and identifier with the following:" http://msdn.microsoft.com/en-ca/library/bb246089

    So that means that you can set ISA7 in the PAM for the partner MyPartner to Not Defined and ISA7 and ISA8 aren't going to be validate. You can validate the ISA8 thru a pipeline. This is the only workaround I've found. I hope that it's gonna be useful to someone.

    Friday, May 13, 2011 4:13 PM