Message Enrichment Sample (BizTalk Server Sample)
The Message Enrichment sample demonstrates how to append interchange headers to transaction-set messages for X12 and EDIFACT documents.
What This Sample Does
This sample demonstrates how to append UNA, UNB, and UNG headers for EDIFACT, and ISA headers for X12, to transaction sets. Specifically, this sample does the following:
When you drop the test message to the \Message Enrichment\In folder, the receive port picks it up, processes it, and drops it in the MessageBox.
The MessageEnrichmentOrchestration picks the test message up from the MessageBox, because it subscribes to messages based on a filter expression set on its receive shape.
The orchestration reads the interchange headers from the context properties of the message.
Note
UNA and UNG headers are optional in an EDIFACT message, so can be missing in the context properties of a message.
The orchestration writes both the interchange headers and the message body into a single new message.
The orchestration promotes additional properties that are set in the ReceivePortNameCorrelationType correlation type onto the message. These allow users of the orchestration to select a list of the properties they need for their subscription. These properties are written in a construct message shape. Not all context properties that were written to the original message are written to the new message.
The orchestration drops the new message into the MessageBox.
The send port picks up the new message and sends it via the FILE adapter to the \Message Enrichment\Out folder.
Where to Find This Sample
This sample is located in the BizTalk Server installation folder: \Program Files (x86)\Microsoft BizTalk Server <VERSION>SDK\Samples\EDI\Message Enrichment.
The following table shows the files in this sample and describes their purpose.
File(s) | Description |
---|---|
Cleanup.bat | Undeploys the example scenario. In order for it to succeed there must be no active instances of the orchestration. Otherwise, it will fail. |
MessageEnrichment.sln | Contains the MessageEnrichment and MessageEnrichmentLibrary projects. |
Setup.bat | Deploys an example scenario that consists of a receive port, send port, and orchestration. |
EDIFACT_example.edi | An input EDIFACT message. |
X12_example.edi | An input X12 message. |
MessageEnrichment.btproj | The project containing the MessageEnrichment orchestrations and schemas. |
MessageEnrichmentBindings.xml | The file containing bindings for the orchestration, the ports, and the parties. |
MessageEnrichmentOrchestration.odx | The orchestration that appends the headers to the message. |
MessageEnrichmentOrchestration.odx.cs | The orchestration code that appends the headers to the message. |
EFACT_D98B_APERAK.xsd | The EDIFACT schema for the input message. |
Enriched_EFACT_D98B_APERAK.xsd | The EDIFACT schema for the output message. |
X12_00401_864.xsd | The X12 schema for the input message. |
Enriched_X12_00401_864.xsd | The X12 schema for the output message. |
Headers.xsd | The schemas for the headers added to the input messages. |
MessageEnrichmentLibrary.csproj | The project containing the Headers.cs, OrchestrationUtilities.cs, and ParseHeaders.cs files. |
Headers.cs | Includes classes representing headers data. |
OrchestrationUtilities.cs | Includes utility methods used by orchestration. |
ParseHeaders.cs | Includes the default values for UNA that are used in the new messages. These values are taken from the SerializeEDIFACTHeaders method in ParseHeaders.cs. |
How to Use This Sample
Use this sample as a working example of the actions required to append interchange headers to EDI transaction-set messages.
Building and Initializing This Sample
To build and initialize the Message Enrichment sample, you need to build and deploy the BizTalk project for this sample, configure the receive port and location, and configure two different send ports.
To build and deploy the BizTalk project for this sample
Using Notepad.Exe, open \Program Files (x86)\Microsoft BizTalk Server <VERSION>SDK\Samples\EDI\MessageEnrichment\
MessageEnrichment\properties\AssemblyInfo.cs and add the following line at the bottom of the file:[assembly: Microsoft.XLANGs.BaseTypes.BizTalkAssembly(typeof(Microsoft.BizTalk.XLANGs.BTXEngine.BTXService))]
Save the modified AssemblyInfo.cs file and then exit Notepad.
In a command window, move to the following folder:
\Program Files (x86)\Microsoft BizTalk Server <VERSION>SDK\Samples\EDI\Message Enrichment
Run Setup.bat, which performs the following actions:
Creates the receive (in) and send (out) folders for this sample in the \MessageEnrichment folder.
Writes a key pair to MessageEnrichmentLibrary\testkey.snk
Builds and deploys the MessageEnrichmentLibrary.btproj project.
Builds and deploys the MessageEnrichment.btproj project.
Reads binding information in MessageEnrichmentBindings.xml.
Note
The binding for this project requires that the BizTalk host is marked as Authentication Trusted. In order to use this with a host that is not trusted, modify the MessageEnrichmentBindings.xml and change the HostTrusted=”true” entries to HostTrusted=”false”.
Updates orchestration bindings.
Updates send ports, send port groups, and receive ports.
Updates parties and enlistments.
Starts the send port.
Enables the receive location.
Enlists and starts the orchestration.
BizTalk Server is ready now to work with this sample.
Running This Sample
Use the following procedure to run the Message Enrichment sample.
To run this sample
Copy the EDIFACT_examples.edi file from the \MessageEnrichment\Instances folder into the \MessageEnrichment\In folder.
Verify that the EDIFACT_examples.edi files disappears from the \MessageEnrichment\In folder, and appears in the \MessageEnrichment\Out folder.
Open the file in the \MessageEnrichment\Out folder. Verify that it is an XML representation of the EDIFACT_examples.edi file in the \MessageEnrichment\Instances folder, and that is has the same contents as the EDIFACT_examples.edi file, with the exception that the output file has EDIFACT UNA, UNB, and UNG headers.
Repeat steps 1 and 2 with the X12_examples.edi file from the \MessageEnrichment\Instances folder.
Open the new file in the \MessageEnrichment\Out folder. Verify that it is an XML representation of the X12_examples.edi file in the \MessageEnrichment\Instances folder, and that is has the same contents as the X12_examples.edi file, with the exception that the output file has X12 ISA headers.
Classes or Methods Used in This Sample
None