none
Biztalk 2010 HIS problem RRS feed

  • Question

  • I am running into a problem with the new 2010 HIS. I have an application project that was converted from 2006 to 2010 Biztalk environment, it used a .NET assembly and an ElmLink in TI Manager to call a program in CICS.

     

    Per this article (http://msdn.microsoft.com/en-us/library/gg162891(v=bts.70).aspx), I converted the HIS 2006 .NET assembly (.dll) to HIS 2010 using TIConversionTool.exe. The conversion tool reported success.

     

    But, after referring to the converted DLL in TI manager and our Host Apps adapter send port, these are the errors I get sending data through.

     

    Event Log Errors: 

     

    HISETBG0001 Application Integrator has intercepted an exception in method TestModule.  Following is the exception description: Index was outside the bounds of the array.

     

    The adapter failed to transmit message going to send port "DanS_Host" with URL "Connection String". It will be retransmitted after the retry interval specified for this Send Port. Details:"Non-Transactional Call ProgID = 'CreateTestCase.ICreateTestCase.1', Method = 'TestModule' failed, error: 'The call to Transaction Integrator returned 'Index was outside the bounds of the array.'.'".

     

    So my question is how to fix this??

    • Moved by Ben Cline1 Tuesday, March 29, 2011 9:26 PM Related to HIS (From:BizTalk Server General)
    Tuesday, March 29, 2011 3:13 PM

Answers

  • It appears that this is the same issue that was opened with HIS Support, therefore I thought I would share the cause and solution of the problem. After troubleshooting, we were able to determine that the cause of the problem was related to an incorrect value in the length field in the ELM Reply message.

    The ELM Reply Message format is documented at http://msdn.microsoft.com/en-us/library/gg163803(v=BTS.70).aspx.

     

    The key portion is bolded in Red below.

     

    The following table shows the contents of the reply message.

    ELM reply msg length

    Formatted field length

    Formatted field code

    Data

    4

    4

    1

    0-n

     

    Note

    The formatted field length, formatted field code, and data can be repeated multiple times in a single message.

    ELM reply msg length

    The total length of the ELM reply message. This length is the sum of all the lengths of the formatted fields that follow in the message and does not include the length of the ELM reply msg length field itself.

    Formatted field length

    The length of the formatted field.

    The formatted field length is the sum of the combination of the Formatted field code length and the Data length.

    Formatted field code

    A 1-byte code that describes the information passed from the Concurrent Server back to the client.

    You cannot change the Formatted field code.

    The field codes are specific to the communication handling between the WIP and HIP TCP Transports and the MSCMTICS, MSHIPLNK and TCP Concurrent Server programs.

    Data

    0 or more bytes of information that is associated with a specific formatted field.

    You may change the information stored in Data. If you change Data, be sure that you also change the TRM Reply and the Formatted Field Length to the new values.

    The length of Data is equal to the formatted field length minus the size of the formatted field code.

     

    In the failing case, the FF (formatted field) length field was set to a value that was one byte less than it needed to be.. It needed to be 1-byte longer because it needed to include the length of the data being returned by the mainframe plus the length of the Formatted Field Code which is 1 byte.

    In looking at our sample host code (CICSTCPMSCMTICS.CBL under SDK\Samples\Adapters\HostApplications\CICSPrograms), we have the following for the FF-MSCMTICS-VERSION field:

     

           01 FF-MSCMTICS-VERSION.

              05 FF-MV-LENGTH                   PIC S9(8) COMP VALUE 47.

              05 FF-MV-CODE                     PIC X.

              05 FF-MV-DESCRIPTION              PIC X(46)

                  VALUE 'MSCMTICS: MICROSOFT LINK CONCURRENT SERVER 4.0'.

     

    The “'MSCMTICS: MICROSOFT LINK CONCURRENT SERVER 4.0” string is 46 bytes. Therefore the FF-MV-LENGTH has to be 47 bytes to account for the 46 bytes data string and the 1-byte Formatted Field Code (FF-MV-CODE).

     

    Once the additional 1-byte was accounted for, the problem no longer occurred.

     

    This same solution was working when using HIS 2006, so it appears that soem code changes between the versions resulted in the error. However, the HIS 2006 scenario would have been incorrect as well since the length field here should include the contents as the documentation states. The fact that an error did not occur seems to have been one of those times where luck was on the side of the customer. <g>

    Thanks...


    Stephen Jackson - MSFT
    Thursday, May 12, 2011 5:52 PM

All replies

  • We'll likely need more details on this to help out. Was the converted assembly a .NET assembly on HIS 2006 or was it a TLB? Are you going from 32-bit to 64-bit as this can sometimes have an affect on things?

    For the TestModule method, I would likely need to see details on this because it is probably due to some difference in how some structure or property is being handled in HIS 2010. What types of data or structures are used in the method?

    For these types of things, customers usually provide us with he application code (working and failing) so that we can have a look at it. Some of the time, TI WIP tracing will help us see what is happening as well. A user dump of the exception could also help.

    Thanks...

     


    Stephen Jackson - MSFT
    Friday, April 1, 2011 5:40 PM
  • It appears that this is the same issue that was opened with HIS Support, therefore I thought I would share the cause and solution of the problem. After troubleshooting, we were able to determine that the cause of the problem was related to an incorrect value in the length field in the ELM Reply message.

    The ELM Reply Message format is documented at http://msdn.microsoft.com/en-us/library/gg163803(v=BTS.70).aspx.

     

    The key portion is bolded in Red below.

     

    The following table shows the contents of the reply message.

    ELM reply msg length

    Formatted field length

    Formatted field code

    Data

    4

    4

    1

    0-n

     

    Note

    The formatted field length, formatted field code, and data can be repeated multiple times in a single message.

    ELM reply msg length

    The total length of the ELM reply message. This length is the sum of all the lengths of the formatted fields that follow in the message and does not include the length of the ELM reply msg length field itself.

    Formatted field length

    The length of the formatted field.

    The formatted field length is the sum of the combination of the Formatted field code length and the Data length.

    Formatted field code

    A 1-byte code that describes the information passed from the Concurrent Server back to the client.

    You cannot change the Formatted field code.

    The field codes are specific to the communication handling between the WIP and HIP TCP Transports and the MSCMTICS, MSHIPLNK and TCP Concurrent Server programs.

    Data

    0 or more bytes of information that is associated with a specific formatted field.

    You may change the information stored in Data. If you change Data, be sure that you also change the TRM Reply and the Formatted Field Length to the new values.

    The length of Data is equal to the formatted field length minus the size of the formatted field code.

     

    In the failing case, the FF (formatted field) length field was set to a value that was one byte less than it needed to be.. It needed to be 1-byte longer because it needed to include the length of the data being returned by the mainframe plus the length of the Formatted Field Code which is 1 byte.

    In looking at our sample host code (CICSTCPMSCMTICS.CBL under SDK\Samples\Adapters\HostApplications\CICSPrograms), we have the following for the FF-MSCMTICS-VERSION field:

     

           01 FF-MSCMTICS-VERSION.

              05 FF-MV-LENGTH                   PIC S9(8) COMP VALUE 47.

              05 FF-MV-CODE                     PIC X.

              05 FF-MV-DESCRIPTION              PIC X(46)

                  VALUE 'MSCMTICS: MICROSOFT LINK CONCURRENT SERVER 4.0'.

     

    The “'MSCMTICS: MICROSOFT LINK CONCURRENT SERVER 4.0” string is 46 bytes. Therefore the FF-MV-LENGTH has to be 47 bytes to account for the 46 bytes data string and the 1-byte Formatted Field Code (FF-MV-CODE).

     

    Once the additional 1-byte was accounted for, the problem no longer occurred.

     

    This same solution was working when using HIS 2006, so it appears that soem code changes between the versions resulted in the error. However, the HIS 2006 scenario would have been incorrect as well since the length field here should include the contents as the documentation states. The fact that an error did not occur seems to have been one of those times where luck was on the side of the customer. <g>

    Thanks...


    Stephen Jackson - MSFT
    Thursday, May 12, 2011 5:52 PM