| Canonical Data Model |
Pattern Catalog | ![]() |
|
| Site Home Patterns Home Table of Contents |
I am designing several applications to work together through Messaging. Each application has its own internal data format.
How can you minimize dependencies when integrating applications that use different data formats?

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.
The Canonical Data Model provides an additional level of indirection between application's individual data formats. If a new application is added to the integration solution only transformation between the Canonical Data Model has to created, independent from the number of applications that already participate.
...Related patterns: Introduction to Message Routing, Messaging
![]() |
Find the full description of this pattern in: Enterprise Integration PatternsGregor Hohpe and Bobby Woolf ISBN 0321200683 650 pages Addison-Wesley |
| Home Patterns Table of Contents |
| © 2003 Bobby Woolf All rights reserved. |