Canonical Data Model
Therefore, design a Canonical Data Model that is independent from any specific application. Require each application to produce and consume messages in this common format.
Store message data in a persistent store and pass a Claim Check to subsequent components. These components can use the Claim Check to retrieve the stored information.
Use a specialized transformer, a Content Enricher, to access an external data source in order to augment a message with missing information.
Use a Content Filter to remove unimportant data items from a message leaving only important items.
Use a Envelope Wrapper to wrap application data inside an envelope that is compliant with the messaging infrastructure. Unwrap the message when it arrives at the destination.
Use a special filter, a Message Translator, between other filters or applications to translate one data format into another.
Use a Normalizer to route each message type through a custom Message Translator so that the resulting messages match a common format.