EMEA PUG Challenge
The European Progress User Groups are holding their annual PUG Challenge in Cologne, Germany on November 18 & 19, 2010 and I will be there.
I will be doing a presentation on the work that I have done integrating OpenEdge, Progress FUSE, and Microsoft Exchange Server.
I will also be conducting a 2-hour hands-on workshop on OpenEdge Object-Orientation and Exception handling.
So join me and a hundreds of other Progress geeks in Cologne, Germany for the premier conference for the Progress community in 2010.
http://pugchallenge.eu
Recent Posts
- Exchange Web Services Example – Part 4 – Subscriptions and Notifications
- Exchange Web Services Example – Part 3 – Exchange Impersonation
- OpenEdge GUI for .NET – Testing the Bridge
- Exchange Web Services Example – Part 2 – Creating Appointments
- Exchange Web Services Example – Part 1 – Introduction and Set up
- I forgot how hard exam prep is! Studying for the TOGAF 9 certification exam. This is a LOT of stuff! 05:05:02 PM August 04, 2010 from Twitter for BlackBerry®
- Been on a TOGAF 9 training course this week. 01:07:05 AM July 30, 2010 from Twitter for BlackBerry®
- I love the way you can easily forward engineer a schema and then keep it in synch with the model 07:01:49 AM July 18, 2010 from Twitter for BlackBerry®
- Just finished building the logical data model for my #Exchange Web services solution in #ERWin 07:00:50 AM July 18, 2010 from Twitter for BlackBerry®
- Some products just carry on working. 20 years later #ERWin is still my data modeling tool of choice 06:59:20 AM July 18, 2010 from Twitter for BlackBerry®
Tags
4GL ABL Application Server AppServer AVM CMS Content Management Systems Drupal Dynamic OpenClient EAI Enterprise Application Integration Enterprise Architecture EWS Exchange 2007 Exchange 2010 Exchange EWS Exchange Server 2007 Exchange Server 2010 Exchange Web Services Java Java 5 Java 6 Java EE 6 Java OpenClient Joomla Microsoft Exchange 2007 Microsoft Exchange 2010 Microsoft Windows OpenEdge OpenEdge AppServer OpenEdge OpenClient open source Progress Progress AppServer Progress OpenClient PVM SOA Social Media Social Networking Twitter Web Development Web Security Windows Windows 7 Windows 7 64-bit


Data Architecture – Getting Back to Basics
In the book, Data Strategy, by Sid Adelman, Larissa Moss, and Majid Abai, the authors make the following statement:
What astounds me is how a risk that seems so blatantly obvious is completely missed by the majority of enterprises. In a recent study by Forrester Research, they found that 74% of over 400 companies surveyed view data strategy as critical or very important, but only 17% of them had a mature data strategy in place – (Topic Overview: Information Architecture by Gene Leganza, January 21, 2010, Forrester Research).
When you consider that most enterprises are outsourcing a substantial part of their core business systems, it is frightening that they do not have a strategy in place. The result is that each of their vendors defines their own view of the data and the enterprise loses control of what happens with their application infrastructure.
Scott Busse, in an article entitled Describing a Data Strategy to a Business Leader, called this uncontrolled, evolutionary data strategy a "waxy build-up" that leads to "higher costs, rigid processes, and a lack of insight into enterprise data" – (para 4).
In this article we will briefly look at what Data Strategy is, and then focus on how data architectural integrity can be maintained in the Enterprise Architecture process.
The Scope of this Article
While the data architecture discipline owns the responsibility for the overall data strategy, I want to narrow data architecture for the purposes of this discussion. A formal, mature data strategy supports the enterprise by providing at least the following:
This is far more than I plan to focus on in this article. I want to talk about how you go about deriving the Enterprise Data Model components and the Canonical Model from the business process models that were created for the Exchange Integration Project that I blogged about a week or two ago.
The Business Process
The process at left deals with what happens when a sales person initiates a call with a prospect. The sales person initiates the call.
If the call does not succeed (i.e. the call fails, or the prospect is not available to take the call), the sales person documents the fact that the call was attempted in the system.
If the call goes through (i.e. the prospect is available for a conversation), a discussion is had and the sales person documents the conversation. Once the call is complete, the sales person documents the details of the call and determines the next steps to be taken, including any follow-up calls.
There is no question about the fact that I am way over-simplifying the business process in this discussion, but in order to keep this post as concise as possible, I need to do that. You can assume that some of the items that are noted as activities really need to be spelled out in more detail, and the business processes that are documented in the System swim-lane need a lot more information, but please cut me that slack… I need to keep this explanation short.
The Business Entities
One of the first things we can do with this model is define some of the business entities in this enterprise. In this process we have two entities who are really actors in the process:
There are also several pieces of information that we care about that are flowing between these entities:
So let's take these entities and model them to get an idea of what they look like.
Now clearly, there is a lot more work that can be done to dig into each of these entities and refine them. Through an iterative cycle with the business, it is not hard to understand that a sales person is generally responsible for a prospect.
Moreover, a sales person is technically either an employee or contractor. That means that their information is available from other sources and in this context, they are simply performing a role in the business.
By the same token, a prospect may very well be an existing customer, in which case you want make sure that the information that you have for this prospect is stored for the customer. When the customer is a large organization, the prospect may, in fact, be a new department in the organization to which you have not sold before.
If a lead management system is present, the prospect may be an existing lead. So what is the difference between a prospect and a lead? Well a lead is a tip that you get about someone who may be interested in the product. A prospect is a lead for which the prospect-to-customer conversion process has already begun.
A call is simply a way of interacting with a prospect. Other ways are by means of meetings, e-mails, letters, and other communication devices. Thus, the call is really an interaction.
Lastly, the call next step may be related to an appointment in the sales person's calendar, an order, or a quote.
So as you dig into each of these entities in more detail, it becomes clear that the model is significantly more complex and detailed than the business entity model we started defining above.
The point that is worth bearing in mind, though, is that these business entities were fairly easy to derive from the business process model that we discussed above. Although this process becomes more complex as the business processes are more complex, the same basic rules apply:
Entity-Event Matrix
Once the business entities have been defined, it is important to understand the impact that each business process has on a business entity. To do this, I like to use a tool known as an Entity-Event Matrix. It is effectively a table with the list of entities across the top and the list of processes down the side. Each cell contains the actions that may be performed by that process on the entity. In the following table I have restricted my actions to create, read, update or delete, but in reality this becomes set of actions that specify the details of the changes made.
This matrix evolves as the model that it is associated with grows. Once the matrix has been completed for all business processes and aggregated together, any entity can be extracted from the matrix and a life-cycle for the entity can be produced.
At this point we have only discussed things from a business point of view. In a mature organization, the above deliverables are a function of the Business Architecture discipline (and I'm lumping Business Architecture and Business Analysis together).
The next step is to take these business entities and compare them against the Enterprise Data Model to determine whether there are any gaps.
The Enterprise Data Model
The terms "Enterprise Data Model," "Enterprise Conceptual Data Model," "Enterprise Logical Data Model," and "Canonical Model" are often bandied about in the industry somewhat interchangeably. So to make sure we are on the same page, I am going to define the Enterprise Data Model as follows:
There are several key things to bear in mind about the enterprise data model:
These are just four of the things that the Enterprise Data Model is; there are several others, but they are not germane to this discussion.
The model shown at left deliberately excludes attributes to simplify the diagram, but in this model, the data architect has taken the business entity model, mapped the entities and attributes to the enterprise entities and attributes, and identified any gaps in the enterprise data model. For these purposes, the calendar item entity is the only one that was missing.
In a mature organization, the enterprise data model is subject to a rigorous release cycle, much the same way as application software is.
Of course, the enterprise data model is not only affected by changes that are introduced by new business requirements. Often times, during the process of building components of the enterprise solution, additional entities and attributes are identified that should be included in the enterprise data model. Generally, this will trigger an architectural review of the enhancement as it is likely that other, more serious gaps exist. Nonetheless, it is very possible that additional entities and attributes can be introduced from sources outside business architecture.
Once the enterprise data model changes are approved, focus shifts to the canonical model.
The Canonical Model
Perhaps the most misunderstood, maligned concept in service-oriented architectures is the idea of a canonical model. Gregor Hohpe and Bobby Woolf spoke of the concept has a design pattern for enterprise integration in their book Enterprise Integration Patterns. While they were probably the first to document the pattern, there is nothing new about the idea. Many people have been using it for a very long time.
For example, about 12 years ago I was working on an EDI integration with a number of external parties. Each of the parties had a different standard and each of them needed data from one or more of the other parties. The simplest way to achieve that integration was to transform the data format from one party to a common format and then transform it to another format for the receiving party. This had nothing to do with SOA.
A canonical model is therefore a layer above all applications to which each application is able to transform their data to integrate with other systems.
In the context of our example, the canonical model is responsible for providing the transformation layer between the CRM application, the LDAP Server and the Microsoft Exchange Server. To create a calendar item in Microsoft Exchange Server, we need to draw data from the CRM application and the LDAP Server and then send it across to Microsoft Exchange in the correct format.
The CRM application has the Call Next Step data in a certain format. The LDAP server has directory information about the organizer and the attendees for the calendar item that needs to be created in Microsoft Exchange Server.
By creating a Calendar Item in the canonical model that conforms to a certain standard format, we can extract data from CRM and LDAP, transform it and store it in a canonical Calendar Item, ship the calendar item to the Microsoft Exchange Server, and transform it into the Exchange Web Service Item form that does not mean anything to anyone other than Exchange. Other systems that wish to make use of the Calendar Item can also perform their own transformations to their native formats.
More than just data, the canonical model also contains the methods that operate on canonical model objects. Moreover, the canonical model is often implemented as a relational model, an object-relational model, and an XML model.
Persistence Models
Up until now, we have not dealt with persistence models at all – that is, models that are created to persist the data to a physical data store. As the canonical model effectively defines the entities and attributes for the enterprise, it can often be easily adapted for use as the physical database schema for an application. Clearly, the database architecture specialist for the type of database being used should be involved in defining and implementing the persistence store for his platform.
Benefits
Hopefully, by now, the value of a data architecture is becoming clear. Among other things, it provides:
Once the data entities in an enterprise have been defined, the enterprise is much more able to adapt to changes in the business.
Where do you start?
Most data architecture initiatives fail very quickly because the sponsors fail to realize the following:
Ideally you need to start with executive sponsorship from CxO-level people. That doesn't always happen, but often it is possible to start by using the approach I have highlighted here. Derive your business entities for a project, build these into an enterprise data model that can grow over time, implement a canonical model that will also grow as the business evolves, and be fastidious about making sure that you know what all the processes are that operate on the data.
At the beginning of this article I talked about Data Strategy as opposed to data architecture. Ideally you want to attack the architecture as part of an overall strategy that addresses the issues that I raised above. The key thing that data architecture can help with, is better quality data and that is the lifeblood of modern business. If the data is correct, it is easy to extract virtually any intelligence that can be used to support business decisions, and that is the focus of information architecture.
loading...
Tags: Canonical Model, Data Architecture, Database Design, Enterprise Application Integration, Enterprise Architecture, Enterprise Data Model
This entry was posted on May 5, 2010, 7:50 pm and is filed under Business Architecture, Commentary, Data Architecture, Enterprise Architecture, Information Architecture. You can follow any responses to this entry through RSS 2.0. You can leave a response, or trackback from your own site.