Master your data
Jul 30, 2014
Defining master data for an information service in an organization can be a tedious task. It usually involves many meetings with all the different departments in the organization and they all have different aspects of the business object that is being defined, e.g. a customer. A customer will often mean different things for the sales division and the manufacturing division, so both departments will need to be interviewed and have their needs satisfied before the customer definition is implemented.more–>
This approach will often lead to a rigid construct and a system that is hard and costly to maintain. This scenario can lead to an abandonment of the whole effort of implementing master data in the organization and go back to a scenario where each application in the organization keeps a local version of the data, defined so that it supports that application only. This is usually a bad thing that will drive integration costs and will result in duplications of data in the organization where you have a hard time figuring out which is the latest version.
The agile approach
There is a way to both keep the cookie and eat it. The solution is to define the master data in an agile way and use tailored communication patterns for each application. The work starts with one division, e.g. sales, and defines their view on a business object, e.g. customer. Then the sales applications negotiate a communication pattern with the information service. The next division that wants to use the customer service adds its needs to the customer object and then negotiate a separate communication pattern with the service so that only information relevant to that application is communicated.
Defining master data with this approach enables different parts of the organization to start using the service and get their needs satisfied without the big data definition up front. Another aspect is that the communication patterns will be separate for each application so you will always have the confidence to change the data contracts and communication pattern for one application without breaking anything for the other applications.