BizTalk Server is a message-based system; it is both data agnostic and transport agnostic, meaning that it can connect to a wide range of different transport protocols and systems and process a wide variety of different data formats. When receiving data from systems, you typically need to do something with the data that you receive. Often, you will need to parse that data and convert it into a common format that is easier to work with. Similarly, when you communicate with a system, you will need to format the data that you pass to that system into the format that the receiving system is expecting. The lion's share of this parsing and formatting of data in BizTalk is performed in pipelines.
Pipelines are the conduits through which messages pass, and as messages pass through, the data that they represent can be changed — metadata may be extracted from the message data and inserted into the message context, or, conversely, message context data may be inserted into the message content. In this chapter, we are going to cover an overview of the pipeline architecture and then cover how to write a custom pipeline component that respects the core pipeline principles.