Cumulative update information
This issue was first fixed in the following cumulative update of BizTalk Server:
For this feature
The new feature applies to send ports only. After you install the hotfix, the behavior will be based on the acceptable ACK code that you select in the drop-down list instead of the code that is provided by the downstream system.
The MLLP send port checks the ACK code in the ACK (
MSA.1_AcknowledgmentCode field of MSA segment) that is returned by the downstream system and compares it with the acceptable ACK codes that are set in the MLLP send port's configuration properties. Current acceptable ACK codes that are supported by the MLLP send port include AA, CA, AE, CE, AR, and CR. You can select all ACK codes or a combination of them. For example, you can select the following as valid:
- AA and CA
- AA, CA, AE, and CE
- AA, CA, AR and CR
However, there is no option to enter an acceptable ACK code combination.
An additional
Acceptable ACK codes value that is named "Custom" is added in the drop-down list in the
Acceptable ACK Codes property. All previous combinations remain and are applied as they were before the new feature was added.
After
CUSTOM is selected, you must also enter the new values in the
Acceptable Custom ACK Codes property. Each of these new ACK values must be separated by a comma (,).
After you install the hotfix, the behavior will depend on the
Acceptable ACK Codes setting that is selected. If the ACK code that is returned matches the selected acceptable code, processing occurs successfully. Standard ACK codes are retried. And, any ACK code that's not listed is suspended. (This will make that ACK code a nonstandard or non-custom ACK code.)
The following table represents this scenario. A written interpretation follows the table.
For AA and CA, message processing always succeeds regardless of any acceptable ACK codes setting that is selected. More information about
Acceptable ACK Codes settings is as follows:
- AA, CA: Retries AE, CE, AR, and CR, and suspends any other.
- AA, CA, AE, CE: Accepted and successful: AA, CA, AE, and CE, and retries AR and CR. Suspends any other.
- AA, CA, AR, CR: Accepted and successful: AA, CA, AR, and CR, and retries AE and CE. Suspends any other.
- AA, CA, AR, CR, AE, CE: Accepted and successful: AA, CA, AR, CR, AE, and CE, and no other is returned. ACK is retried, and message is suspended.
- Custom (values are entered and separated by a comma): Example: AA, AE, Foo, ZZ, ZZZ. Accepted and successful: AA, CA, and AE, plus any other entered custom ACK such as, in this case, Foo, ZZ, or ZZZ . Retries CE, AR.
- Any ACK code that's not specified in Acceptable Custom ACK Codes is not retried and is suspended.
When a standard ACK is not entered under
Acceptable ACK Codes, an error that resembles the following is returned:
The adapter failed to transmit message going to send port "<SendPortName>" with URL "127.0.0.1:33000". It will be retransmitted after the retry interval specified for this Send Port. Details:"Message with MessageID: <MessageID>, received with acknowledgement type: Error and with ACK code: CE.
The out-of-the-box ACK schema must be changed by adding to the existing list of standard ACKs (AA,AE,AR,CA,CE,CR). Any additional acceptable custom ACKs (XX and ZZ, for example) must be added to the
MSA.1_AcknowledgementCode field of the ACK schema. If the additional custom ACKs are not added to the schema, the pipeline validation fails with a “Table value not found” error.