Receive Pipeline Error

Home Page Forums BizTalk 2004 – BizTalk 2010 Receive Pipeline Error

Viewing 1 reply thread
  • Author
    Posts
    • #17127

      I have created a custom pipeline to receive files.  I would use the default pipeline, but different files from this vendor contain the same root element which forces me to create custom pipelines.

      The application builds and deploys just fine, but I receive this error when I drop my file.  I've looked over the file and even created a new file to match the schema.  The schema was actually generated from the original xml file.

      There was a failure executing the receive pipeline: "FlatFileTest.ReceivePaymentsInPort, FlatFileTest, Version=1.0.0.0, Culture=neutral, PublicKeyToken=ea895c3799b5f29e" Source: "Flat file disassembler" Receive Port: "FlatFileTest_1.0.0.0_FlatFileTest.WachoviaPayment_PaymentInPort_ea895c3799b5f29e" URI: "d:\installs\biztalk\*.payment" Reason: Unexpected data found while looking for:
      $Delimited$

      The current definition being parsed is Header. The stream offset where the error occured is 0. The line number where the error occured is 1. The column where the error occured is 0.

      Any suggestions are appreciated.  Thanks.
       

    • #17128

      Michael

       does your flat-file schema correctly validate a test document in the schema editor? And does this test document fail when submitted through the receive location?

       John D.

      • #17129

        Hi John,

        The test document does validate successfully against the schema.  I am able to generate an instance successfully as well.  When I drop this test document in the receive location, it gets picked up and the above error message shows up in the administrator console.

        • #17131

          Hi,

          Could you create the "Validate Instance" for your test case? I think input file is missing the mandatory filed "$Dilimeter$". If it is not mandatory then you should put "0" for minimum in schema. Can you post the test input and shema structure here?

          Another reason i could think is if you select the "$Dilimeter$" as looping then you may get this kind of error. Did you set up the root propertys for "Complexity", early termination true, and so on?

          I get same kind of error when the filed is missing. I am using that case as error handling since my input must have that field.

          Siva

          • #17132

            Hi Siva,

            Yes, I was able to successfully create the "Validate Instance" for the test file.  Where would I look to set the "$Dilimeted$" field, or Complexity, early termination, etc.?  I've also looked around to find where to set the "minimum" in schema and haven't seen it.  Where does that get set?  I've seen this mentioned in other posts, but never found it.

            Here is my schema and test file.  Thanks for looking at these for me.

            <?xml version="1.0" encoding="utf-16"?>
            <xs:schema xmlns:b="http://schemas.microsoft.com/BizTalk/2003&quot; xmlns="FlatFileTest.payment" attributeFormDefault="unqualified" elementFormDefault="qualified" targetNamespace="FlatFileTest.payment" xmlns:xs="http://www.w3.org/2001/XMLSchema"&gt;
              <xs:element name="Header">
                <xs:complexType>
                  <xs:sequence>
                    <xs:element minOccurs="1" maxOccurs="1" name="PaymentAdjustment">
                      <xs:complexType>
                        <xs:attribute name="RecordType" type="xs:string" use="required" />
                        <xs:attribute name="Type" type="xs:string" use="required" />
                        <xs:attribute name="Date" type="xs:string" use="required" />
                        <xs:attribute name="Reference" type="xs:string" use="required" />
                        <xs:attribute name="Principal" type="xs:long" use="required" />
                        <xs:attribute name="OtherIncome" type="xs:long" use="required" />
                        <xs:attribute name="Interest" type="xs:long" use="required" />
                        <xs:attribute name="Cost" type="xs:long" use="required" />
                        <xs:attribute name="AgencyFeesDue" type="xs:long" use="required" />
                        <xs:attribute name="AgencyCostDue" type="xs:long" use="required" />
                        <xs:attribute name="AccountNumber" type="xs:string" use="required" />
                      </xs:complexType>
                    </xs:element>
                  </xs:sequence>
                  <xs:attribute name="RecordType" type="xs:unsignedByte" use="required" />
                  <xs:attribute name="Date" type="xs:date" use="required" />
                  <xs:attribute name="BankName" type="xs:string" use="required" />
                  <xs:attribute name="AgencyCode" type="xs:string" use="required" />
                  <xs:attribute name="AgencyName" type="xs:string" use="required" />
                  <xs:attribute name="ARecordCount" type="xs:unsignedByte" use="required" />
                  <xs:attribute name="BRecordCount" type="xs:unsignedByte" use="required" />
                  <xs:attribute name="DRecordCount" type="xs:unsignedByte" use="required" />
                  <xs:attribute name="JRecordCount" type="xs:unsignedByte" use="required" />
                  <xs:attribute name="NRecordCount" type="xs:unsignedByte" use="required" />
                  <xs:attribute name="PRecordCount" type="xs:unsignedByte" use="required" />
                  <xs:attribute name="RRecordCount" type="xs:unsignedByte" use="required" />
                  <xs:attribute name="GRecordCount" type="xs:unsignedByte" use="required" />
                  <xs:attribute name="CRecordCount" type="xs:unsignedByte" use="required" />
                  <xs:attribute name="QRecordCount" type="xs:unsignedByte" use="required" />
                  <xs:attribute name="ERecordCount" type="xs:unsignedByte" use="required" />
                  <xs:attribute name="FRecordCount" type="xs:unsignedByte" use="required" />
                  <xs:attribute name="YRecordCount" type="xs:unsignedByte" use="required" />
                  <xs:attribute name="XRecordCount" type="xs:unsignedByte" use="required" />
                  <xs:attribute name="WRecordCount" type="xs:unsignedByte" use="required" />
                  <xs:attribute name="TRecordCount" type="xs:unsignedByte" use="required" />
                  <xs:attribute name="HRecordCount" type="xs:unsignedByte" use="required" />
                  <xs:attribute name="URecordCount" type="xs:unsignedByte" use="required" />
                  <xs:attribute name="SRecordCount" type="xs:unsignedByte" use="required" />
                  <xs:attribute name="ClientControlNumber" type="xs:unsignedShort" use="required" />
                  <xs:attribute name="BankId" type="xs:string" use="required" />
                  <xs:attribute name="ACSInterfaceNumber" type="xs:unsignedByte" use="required" />
                  <xs:attribute name="ACSImportControlNumber" type="xs:unsignedByte" use="required" />
                  <xs:attribute name="ACSExportBatchNumber" type="xs:unsignedByte" use="required" />
                  <xs:attribute name="AgencyCbBatch" type="xs:string" use="required" />
                </xs:complexType>
              </xs:element>
            </xs:schema>

             

            <Header
             RecordType="0"
             Date="20060122"
             BankName="FIRST BANK, NATIONAL ASSOCIATION"
             AgencyCode="C2MJH"
             AgencyName="MJH ASSOCIATES, INC"
             ARecordCount="0000000000"
             BRecordCount="0000000000"
             DRecordCount="0000000000"
             JRecordCount="0000000000"
             NRecordCount="0000000000"
             PRecordCount="0000000054"
             RRecordCount="0000000000"
             GRecordCount="0000000000"
             CRecordCount="0000000000"
             QRecordCount="0000000000"
             ERecordCount="0000000000"
             FRecordCount="0000000000"
             YRecordCount="0000000000"
             XRecordCount="0000000000"
             WRecordCount="0000000000"
             TRecordCount="0000000000"
             HRecordCount="0000000000"
             URecordCount="0000000000"
             SRecordCount="0000000000"
             ClientControlNumber="00041611"
             BankId="FUNB1"
             ACSInterfaceNumber="0000000000"
             ACSImportControlNumber="00000000000000000000"
             ACSExportBatchNumber="00000000000000000000"
             AgencyCbBatch="4">
              <PaymentAdjustment
                 RecordType="P"
                 Type="1"
                 Date="20060119"
                 Reference="376222601 HER CK"
                 Principal="000000009856"
                 OtherIncome="000000000000"
                 Interest="000000000000"
                 Cost="000000000000"
                 AgencyFeesDue="000000003942"
                 AgencyCostDue="000000000000"
                 AccountNumber="540000159200" />
            </Header>

            Many thanks

            • #17140

              Are you using a Flat file for input or XML?

              Are you setting the "Validate Instance Input Type" correctly in the Schema General Properties?

              Are you using a Flat file disassembler when you need an XML Disassembler?

              Does this XML and schema represent the actual input file or XML generated from Validating the Flat file instance?

              • #17153

                It is an XML file.  I've tried both XML Disassembler as well as the flat file disassembler.

                The "Validate Instance Input Type" is OK.

                The error shown above is when I use the flat file disassembler.  When I try the XML disassembler I get this error:

                "FlatFileTest_1.0.0.0_FlatFileTest.WPayment_PaymentInPort_ea895c3799b5f29e" URI: "d:\installs\biztalk\*.payment" Reason: No Disassemble stage components can recognize the data. 

                Which approach is more appropriate to take?  I've Googled this message and it appears that I need to convert the file to UTF-8 from UTF-16 to get around it.  Is there another way?  This workaround seems very strange to me.

                Thanks.  This is very helpful.
                 

                • #17154

                  Michael,

                  First thing is to use the XML Disassembler if you need one in the first place.  You should not use the Flat file disassembler for an XML file.

                  Then my obvious question, and forgive me for not knowing this already, is can you parse this message without a pipeline?  There are so many choices here to receive and map your input.  I found that I only add complexity when required.

                  • Is there no way to add inbound maps to your Receive port to help distinguish the schema or even to map to your own internal schema that you control…thus isolating you from external changes?
                  • Are there so many potential schemas that make using multiple receive ports impractical?
                  • Can you elaborate on what you're doing with the messages once you receive them?  Are you combining data, passing through, writing to a DB, etc?

                  I'm not sure I'd go down the path of UTF-8 v. UTF-16 until you verify the simple things first.  I think I (we all) can help some more but I think the understanding the pattern/solution you're trying to accomplish would help.

                  • I would suggest if you want to or need to use an XML disassembler, first try with something REALLY simple and add complexity after testing it a few times.  This one process has saved me days of wheel spinning when trying something new.
                  • #17165

                    Great advice.

                    This piece of the application reads the XML file, maps it to another message that will be passed to a web service.  I'll get a response back, but I only check it for verification/debugging.  This whole process is in its own orchestration and is very simple at this point.  The rest of the orchestration should work (famous last words) if I could only get past loading my XML file.

                    The overall application will be handling a few different XML files.  All of the XML files have a root element of "Header".  I started using the default XMLReceive pipeline, but since all of the XML files coming in have the same root element it seemed that I needed to create a custom pipeline for each XML file type.  There are not many schemas that I'm working with, so I don't have a problem with multiple custom receive pipelines.

                    I just tried adding an inbound map to the receive port.  The same error came up as before ("No Disassemble stage components can recognize the data.").

                    Your suggestions and questions are a great help.  Much appreciated. 

                    • #17166

                      I should have a few cycles this evening to test this scenario for myself to see what the problem could be.  If I don't see a post that you've solved this I'll test it and provide any feedback I can.

                      • #17177

                        Sorry I didn't sign this.  I'll be setting this up in an hour or 2.

                      • #17179

                        Using: <xs:attribute name="Date" type="xs:date" />, I received a validation error…

                        Header.xml: error BEC2004: The 'Date' attribute is invalid – The value '20060122' is invalid according to its datatype 'http://www.w3.org/2001/XMLSchema:date&#039; – The string '20060122' is not a valid XsdDateTime value.

                        When I used xs:string, it validated fine.

                        xs:string, it validated fine.

                        Can you confirm you're not having the same problem by just using your sample xml file as your "Input Instance Filename" and that "Validate Input Instance Type" is XML?

                      • #17181

                        I've just verified that my "Input Instance Filename" is pointing to my test XML file and "Validate Input Instance Type" is XML.

                        I've also played around with the type of the attributes.  My schema validates successfully when the Date attribute is a date type as well as a string type.

                        Thanks for all your time and effort. 

                      • #17189

                        I want to be clear that I'm still receiving the message that No Disassemble stage components can recognize the data.

                        Thanks again

Viewing 1 reply thread
  • The forum ‘BizTalk 2004 – BizTalk 2010’ is closed to new topics and replies.