The Minimal Lower Layer Protocol MLLP) send port checks the acknowledgment (ACK) code in the ACK (that is, the MSA.1_AcknowledgmentCode
field of the MSA segment) that's returned by the downstream system and compares it with the acceptable ACK codes that are set in the MLLP send port's configuration properties. The ACK codes that are currently supported by MLLP send port are as follows:
You can select all ACK codes or a combination of them. For example, the following codes are all valid:
- AA and CA
- AA, CA, AE, and CE
- AA, CA, AR, and CR
However, you cannot enter any additional acceptable ACK codes.
After you apply this hotfix, a new acceptable ACK code that's named Custom
is added in the Acceptable ACK Codes
list. Additionally, a new text box is added in which you can enter the acceptable custom ACK codes.
- The custom codes should be separated by a comma (,). For example: AE,CE,AR,CR,XX,ZZ.
- If one of the standard combinations (a non-custom option) is selected, you do not have to enter any values in the Acceptable Custom ACK Codes property.
- To make sure that the pipeline validation succeeds for the custom ACK codes, you must add the required custom ACK codes to the corresponding ACK schema.
- You can use the BizTalk Tracking feature (by enabling tracking) to track the message by using the MessageID property that is logged in the event log when the message is retried or suspended.
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.
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.
Microsoft has confirmed that this is a problem in the Microsoft products that are listed in the "Applies to" section.