BTARN Receive Pipeline
Microsoft BizTalk Accelerator for RosettaNet (BTARN) performs RosettaNet Implementation Framework (RNIF) message reception with the RNIFReceive pipeline (RNIFReceive.btp). The receive pipeline includes the following components:
ReceiveMessageNonRepudiate
RNMimeDecoder (MIME Preprocessor/Decoder)
RNDAsm (XML Disassembler)
RNPartyRes (Party Resolution component)
MessageUpdater
ReceiveMessageNonRepudiate
This component stores the received message in the MessageStorageIn table. This component performs the non-repudiation processing required by the RNIF standards.
RNMimeDecoder
This component is based on the native BizTalk Server MIME Preprocessor/Decoder. RNMimeDecoder adds the following functionality for RNIF processing:
For RNIF 2.01, decrypts the service content and attachments, if they are present.
For RNIF 1.1, handles the 8-byte header and the detached signature header at the end of the payload.
For more information about the native BizTalk Server preprocessor/decoder, see "MIME/SMIME Decoder Pipeline Component" in BizTalk Server Help.
RNDAsm
This component is based on the native BizTalk Server XML Disassembler. RNDAsm adds the following functionality for RNIF processing:
If an incoming document has a DOCTYPE header, this component generates a namespace from it and moves all nodes in the incoming document to that namespace.
Performs message correlation to determine whether an incoming message is a duplicate, and generates an error message if the message is a duplicate.
Stores attachments as additional parts of the message.
Promotes message properties.
For more information about the native BizTalk Server Disassembler, see "XML Disassembler Pipeline Component" in BizTalk Server Help.
RNPartyRes
This component is based on the native BizTalk Server Party Resolution component. RNPartyRes adds the following functionality for RNIF processing:
Maps the sender certificate if the incoming message is signed to a BizTalk party. If the incoming message is not signed, and the trading partner agreement allows for it, this component retrieves the sender party from the Delivery header for RNIF 2.01 or the Service header for RNIF 1.1.
Validates that the sender exists and that the sender has a trading partner agreement with the home organization.
For more information about the native BizTalk Server party resolution component, see "Party Resolution Pipeline Component" in BizTalk Server Help.
MessageUpdater
This component adds the following functionality for RNIF processing:
Updates the MessageStorageIn table with details about the PIP Code, PIP Version, Source Party, Destination Party, and Message Tracking ID of the wire message that was stored by the ReceiveMessageNonRepudiate component.
If the PIP does not require non-repudiation, marks the record for deletion, setting
ToBePurged = True
.
Message Flow
The message flow through the BTARN receive pipeline is as follows:
The HTTP adapter receives an RNIF 1.1 object or an RNIF 2.01 business message through HTTP POST.
If the adapter successfully receives the message, the adapter extracts the RosettaNet object or business message, and routes it to the receive pipeline.
If the object or business message is signed, the MIME Preprocessor/Decoder removes the signature.
If the signature is valid, the disassembler reads the preamble.
If the message is an action message, and non-repudiation is required (the Non-Repudiation of Origin and Content setting in the process configuration settings is
True
), the Decoder calculates and persists the digest.The disassembler validates the preamble (with message (MSG) guidelines and the preamble schema in the global variables).
For RNIF 2.01, the disassembler reads the delivery header, and validates the header using the MSG guidelines and the delivery header schema in the global variables.
For RNIF 2.01, the disassembler extracts the partner information from the delivery header, and examines the signature to verify that it belongs to the partner.
For RNIF 2.01, if the payload is encrypted, the decoder decrypts the payload container.
The disassembler reads the service header, and validates the header using the MSG guidelines and the service header schema in the global variables.
For RNIF 1.1, the disassembler extracts the partner information from the service header, and examines the signature to verify that it belongs to the partner.
The disassembler checks whether the partner is authorized for the PIP. If not, the disassembler will reply an HTTP POST with an HTTP 403 status message, if necessary, and post an error.
If the message is a signed action message and Non-Repudiation of Origin and Content is set to
True
, the ReceiveMessageNonRepudiate component persists the original message in the MessageStorageIn table.If the message is a signed signal message and Non-Repudiation Required is set to
True
, the ReceiveMessageNonRepudiate component persists the signal message in the MessageStorageIn table.If the message was persisted in the MessageStorageIn table for non-repudiation, the MessageUpdater updates the MessageStorageIn table with properties of the process configuration of the message.
If the message is an action message that is a duplicate of a previously processed action message, BTARN will post an error.
For RNIF 2.01, the decoder will decrypt the payload if the action message is encrypted and there is a match between the HTTP synchronicity and PIP synchronicity requirements.
The disassembler reads the service content, and validates it using the MSG guidelines and the schema.
For RNIF 2.01, the disassembler verifies that the manifest is valid and the content ID is present.
For RNIF 2.01, the disassembler will read any attachments.
BTARN routes the RosettaNet headers, service content, and attachments to the public process.