none
What's wrong with my configuration for ACK. RRS feed

  • Question

  • I'm configuring BizTalk to generate the ACK, but while UNB9 value is not 1, the ACK cannot be generated.

    If the UNB9 value to be 1, the generated ACK file, in UNH+14+CONTRL:4:1:UN' segment, the value is not I want,
    I want the UNH value to be UNH+14+CONTRL:D:97A:UN:ED2'.

    I have enabled Generate Technical ACK and Generate Fuctional ACK in Party as Interchange Sender-->Validation and ACK Generation.

    Also I have set the UNH value in Party as Interchange Sender-->EDIFACT Interchange Processing Properties, but the UHN value still be:UNH+14+CONTRL:D:97A:UN:ED2'.

    Final questions, can BizTalk generate ACK with UCM segment?

    Thanks.



    Tuesday, May 5, 2009 9:24 AM

Answers

  • Hi,
        First answer to your final question is Biztalk generate ACK with UCM segment for more information you can follow this link http://msdn.microsoft.com/en-us/library/bb226372.aspx .

    You are saying that ACK is not generated if UNB9 is not 1 but it should be the case . Please check your setting for party as sender it must resolve to party if you  are using party to generate functional ACK. If party will not get resolved then it goes to global party most probably in your case it is happening.

    And about the UNH segement:
    Which UNH segement you are talking is it Messag's UNH segemnt ot ACK's UNH segment?
    For ACK's UNH segment it is define as :


    UNH2   
    The subcomponents are:

        * 1 = CONTRL

        * 2 = 4

        * 3 = 1

        * 4 = UN


    you can see it at th documentation : http://msdn.microsoft.com/en-us/library/bb226372.aspx



    Thanks
    Gyan
    If this answers your question, please mark it as "Answered".
    • Marked as answer by Sinosky_Lin Thursday, May 7, 2009 6:09 AM
    Tuesday, May 5, 2009 9:56 AM
  • Hi Sinosky,
                    You can use the following type of code to do this:
               
                pInMsg.Context.Write("OverrideEDIHeader", systemPropertiesNamespace, true);
                pInMsg.Context.Write("ISA01", systemPropertiesNamespace, "99");
                pInMsg.Context.Promote("OverrideEDIHeader", systemPropertiesNamespace, true);
                pInMsg.Context.Promote("ISA01", systemPropertiesNamespace, "99");

    This code in the custom pipeline will promote ISA01 to 99 and OverrideEDIHeader to true . Then EDIsend pipeline will override the ISA01 and it will come 99 as output.
    In the same way you can do for your fields. But you can not override all the field you can only override some fields. For more information you can to the link

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

    Thanks
    Gyan

    If this answers your question, please mark it as "Answered".
    • Marked as answer by Sinosky_Lin Thursday, May 7, 2009 6:09 AM
    Wednesday, May 6, 2009 5:10 AM
  • Hi,
        In documentation of the EDIFACT control message you can see:

    A UCM segment that identifies a message segment (encapsulated by the UNH header and UNT trailer) and indicates the nature of any error.


    So UCM segment will be present if there is any error in the document. If there is not any error in the document then it will not generate the UCM segment.



    Thanks
    Gyan
    If this answers your question, please mark it as "Answered".
    • Marked as answer by Sinosky_Lin Thursday, May 7, 2009 6:09 AM
    Wednesday, May 6, 2009 5:39 AM
  • Hi,
         For code "70" . It's not a standard code but Biztalk generates it's own custom codes those are not defined by standards. you can see the code list here :
    http://msdn.microsoft.com/en-us/library/bb226540.aspx

    And for UCM segment please see the documentation : http://msdn.microsoft.com/en-us/library/bb226372.aspx




    Thanks
    Gyan
    If this answers your question, please mark it as "Answered".
    • Marked as answer by Sinosky_Lin Thursday, May 7, 2009 6:09 AM
    Wednesday, May 6, 2009 7:38 AM
  • Hi,
         You can get it from the Biztalk EDI application . Go to the schema node. Inside it you can find the all the control schema(ACK) realted schema for 997 and EDIFACT.

    One more thing I want to say to you is that go for the setting "Generate SG1/SG4 loop for accepted transaction set(.......)  " . this option is related to UCM segment may be this will help you related to UCM segment problem.



    Thanks
    Gyan
    If this answers your question, please mark it as "Answered".
    • Marked as answer by Sinosky_Lin Thursday, May 7, 2009 6:09 AM
    Wednesday, May 6, 2009 10:00 AM
  • Hi Gyan,

       Your post is very professional. It helped me.

       For UCM, it is true that it will appear when there is any errors in the document. But it still cannot appear when the document is fine. I have Checked "Generate SG1/SG4 loop for accepted transaction set(.......)  ", but no effect. and the generate ACK with UCS, UCD segment, actually, we don't need these 2 segments. Is there any ways to control it?

    Thanks again.
    • Marked as answer by Sinosky_Lin Thursday, May 7, 2009 6:10 AM
    Thursday, May 7, 2009 12:30 AM

All replies

  • Hi,
        First answer to your final question is Biztalk generate ACK with UCM segment for more information you can follow this link http://msdn.microsoft.com/en-us/library/bb226372.aspx .

    You are saying that ACK is not generated if UNB9 is not 1 but it should be the case . Please check your setting for party as sender it must resolve to party if you  are using party to generate functional ACK. If party will not get resolved then it goes to global party most probably in your case it is happening.

    And about the UNH segement:
    Which UNH segement you are talking is it Messag's UNH segemnt ot ACK's UNH segment?
    For ACK's UNH segment it is define as :


    UNH2   
    The subcomponents are:

        * 1 = CONTRL

        * 2 = 4

        * 3 = 1

        * 4 = UN


    you can see it at th documentation : http://msdn.microsoft.com/en-us/library/bb226372.aspx



    Thanks
    Gyan
    If this answers your question, please mark it as "Answered".
    • Marked as answer by Sinosky_Lin Thursday, May 7, 2009 6:09 AM
    Tuesday, May 5, 2009 9:56 AM
  • Hi Gyan,

    Thanks for your response, for the UNH segment, I mean ACK's UNH,

    The client require us to send UNH with value: UNH+001+CONTRL:D:97A:UN:ED2'

    But the automatically generate UNH value is UNH+001+CONTRL:4:1:UN'

    So I would like to how can I generate UNH with value:UNH+001+CONTRL:D:97A:UN:ED2'.

    Thanks again.

    Tuesday, May 5, 2009 10:16 AM
  • Hi,
        It is already define in the EDIFACT contrl schema UNH2 header. This will always be UNH+001+CONTRL:4:1:UN' . You can not change through the PAM settings or any other configurations. In the documentation it is said that this is fixed .


    Thanks
    Gyan

    If this answers your question, please mark it as "Answered".
    Tuesday, May 5, 2009 10:52 AM
  • So I have to develop the ACK myself instead of automatically generated??? It is not good.

    Thanks Gyan again.

    Tuesday, May 5, 2009 2:09 PM
  • Hi,
        This is according to design that you can not change the format of ACKs. Can you tell me why do you want to do make custom ACKs? What is your scenario?


    Thanks
    Gyan
    If this answers your question, please mark it as "Answered".
    Tuesday, May 5, 2009 3:14 PM
  • Hi,

       Outr customer send us DELFOR edi, and they required the ACK to them.  I configure BizTalk Server to generate the ACK automatically. But the ACK cannot accepted by customer, one issues is the UNH segment as I said in the previous, another issues is our ACK donot have the UCM segment, finally, the sender and receiver information in UNB and UCI are in reverse.
    Thanks.

    Wednesday, May 6, 2009 12:58 AM
  • Hi,
        You can accomplish this work in BTS2009 easily by using override feature. you need to only promote the context properties with your desired value with promoting EdiOverride.edi_properties to true. Then Biztalk will automaticlly override your promoted properties.

    If you are using Biztalk server 2006 R2 then you have to write your custome component to create your desired ACKs.


    Thanks
    Gyan

    If this answers your question, please mark it as "Answered".
    Wednesday, May 6, 2009 3:50 AM
  • Hi Gyan,

    H'm using BTS2009, how can I do the operation you said, I mean where can I set the EdiOverride.edi_properties to be true?

    Thanks.
    Wednesday, May 6, 2009 3:58 AM
  • Hi Sinosky,
                    You can use the following type of code to do this:
               
                pInMsg.Context.Write("OverrideEDIHeader", systemPropertiesNamespace, true);
                pInMsg.Context.Write("ISA01", systemPropertiesNamespace, "99");
                pInMsg.Context.Promote("OverrideEDIHeader", systemPropertiesNamespace, true);
                pInMsg.Context.Promote("ISA01", systemPropertiesNamespace, "99");

    This code in the custom pipeline will promote ISA01 to 99 and OverrideEDIHeader to true . Then EDIsend pipeline will override the ISA01 and it will come 99 as output.
    In the same way you can do for your fields. But you can not override all the field you can only override some fields. For more information you can to the link

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

    Thanks
    Gyan

    If this answers your question, please mark it as "Answered".
    • Marked as answer by Sinosky_Lin Thursday, May 7, 2009 6:09 AM
    Wednesday, May 6, 2009 5:10 AM
  • Hi Gyan,

    Thanks for your detail information, I will try it later.

    Another quesions, why all my ACKs automatically generate by BTS don't have the UCM segments?

    Thanks.
    Wednesday, May 6, 2009 5:34 AM
  • Hi,
        In documentation of the EDIFACT control message you can see:

    A UCM segment that identifies a message segment (encapsulated by the UNH header and UNT trailer) and indicates the nature of any error.


    So UCM segment will be present if there is any error in the document. If there is not any error in the document then it will not generate the UCM segment.



    Thanks
    Gyan
    If this answers your question, please mark it as "Answered".
    • Marked as answer by Sinosky_Lin Thursday, May 7, 2009 6:09 AM
    Wednesday, May 6, 2009 5:39 AM
  • Hi Gyan,

    Tanks again for your patine in this.

    One more questions:

    Now the UCM can be generated because I make some errors manually. But UCM segment missed so much values, such as: UCM1, UCM2.1. UCM2.2, UCM2.3, UCM2.4, like: UCM+++4+70' , and UCM1&UCM2 elements is required when UCM segment apppear, also UCM4 is an unecessary value and "70" is the unknow code for EDI. Can this issued be configured?

    Thanks again.

    Wednesday, May 6, 2009 7:35 AM
  • Hi,
         For code "70" . It's not a standard code but Biztalk generates it's own custom codes those are not defined by standards. you can see the code list here :
    http://msdn.microsoft.com/en-us/library/bb226540.aspx

    And for UCM segment please see the documentation : http://msdn.microsoft.com/en-us/library/bb226372.aspx




    Thanks
    Gyan
    If this answers your question, please mark it as "Answered".
    • Marked as answer by Sinosky_Lin Thursday, May 7, 2009 6:09 AM
    Wednesday, May 6, 2009 7:38 AM
  • Hi Gyan,

    According to the information in your link:

    The CONTRL message contains several mandatory data elements that will be copied from the received interchange. If the data element in the interchange is missing or is syntactically invalid, a syntactically valid CONTRL message cannot be generated. The error must then be reported by some means other than a CONTRL message.

    It seems some element has benn missed, but why it will be mssed, and how can I get back these missed element? How can I do for it?

    Thanks
    Wednesday, May 6, 2009 8:55 AM
  • Also, where is the ACK schema stored? Can I get the ACK schema that BizTalk used to generated ACK automatically.
    Wednesday, May 6, 2009 9:02 AM
  • Hi,
         You can get it from the Biztalk EDI application . Go to the schema node. Inside it you can find the all the control schema(ACK) realted schema for 997 and EDIFACT.

    One more thing I want to say to you is that go for the setting "Generate SG1/SG4 loop for accepted transaction set(.......)  " . this option is related to UCM segment may be this will help you related to UCM segment problem.



    Thanks
    Gyan
    If this answers your question, please mark it as "Answered".
    • Marked as answer by Sinosky_Lin Thursday, May 7, 2009 6:09 AM
    Wednesday, May 6, 2009 10:00 AM
  • Hi Gyan,

       Your post is very professional. It helped me.

       For UCM, it is true that it will appear when there is any errors in the document. But it still cannot appear when the document is fine. I have Checked "Generate SG1/SG4 loop for accepted transaction set(.......)  ", but no effect. and the generate ACK with UCS, UCD segment, actually, we don't need these 2 segments. Is there any ways to control it?

    Thanks again.
    • Marked as answer by Sinosky_Lin Thursday, May 7, 2009 6:10 AM
    Thursday, May 7, 2009 12:30 AM
  • Something unusual, the generated ACK file is output the sender and receiver information as I configure in Party As Interchange Receiver-->UNB Segment Definition, not the configuration in Party As Interchange Sender-->EDIFACT Interchange Processing Properties.

    As my understanding, the party is sending ACK, it is being the sender, it should output the information configure in Party As Interchange Sender. Maybe it is the reason about UCM issues.

    Thursday, May 7, 2009 1:05 AM
  • Hi,
         It is not unusual that genearated ACK file contains the information as you configure in Party As Interchange Receiver -->UNB Segment Definition . It is by design. When the party is resolved then Biztalk will apply party properties to the message in the send side.
         
    second thing that you do not have any control using party settings on the ACKs , So if you do not want some segments in the ACK then you have to write custom components.

    Thanks
    Gyan
    If this answers your question, please mark it as "Answered".
    Thursday, May 7, 2009 4:35 AM
  • Thank you very much, Gyan, finally I used custom XSLT to develop a map to transform the value I want and delete the segment I don't want. It is OK now.
    Thursday, May 7, 2009 6:08 AM