Content Modeling Demystified

Posted on: Tue, 2014-08-12 08:57

Content Modeling Demystified

Content Modeling Lead ImageJust about any solution that is built using an Enterprise Content Management (ECM) System will require that a content model be designed.  The content model in an ECM system is analogous to the Schema of a database system.  It defines the structure of the content in the repository.  It is the basis on which the user interfaces, search capabilities and applications associated with the system are built. Any team that has to build an ECM based solution must be able to design, build and deploy a content model.

Who Designs the Content Model?

As is true in any development effort, the design of a content model is generally a collaborative process. Here are some of the players

  • Business Analysts - They will generally come up with the requirements that will be used to drive the design.
  • Information Architects - They will have a major role in designing the content model and ensuring that the model meets the requirements.  They will also ensure that the content model meets any implied enterprise level requirements regarding classification of documents and flow of information. Information architects may also be responsible for designing enterprise wide models that can be re-used across a wide range of projects.
  • Developers - They will participate in the design process with an eye towards implementation.  The developer may recommend changes to the model to simplify the implementation and improve performance.  The developer will also have a hand in deploying the content model into a repository.
  • Repository Administrators - Repository administrators may also participate in the design, or have some responsibility for reviewing the design and implementation. If the repository hosting the content model is a shared repository, the repository administrator will have some governance responsibility.  As part of the governance responsibility the administrator might be responsible for avoiding naming conflicts and making new projects aware of any existing content models that could be re-used. 

Given the far reach of content modeling, it is important that the process be fully understood by the project team.

We Often Subconsciously Design Content Models

We really do a bit of informal content modeling any time we have to organize large amounts of content.  Let's look at some examples:

Business Document Folders

Many of us have folders on our computer (or even in our physical file cabinets) for things like expense reports, invoices, receipts or work documents.  The folder structure that you pick is an example of an implicit content model. When you organize by, date or customer or project, the folder structure has embedded information about your content that helps you categorize and find content.

Photo Album

Many of us use on-line photo albums.  Many of these on line photo albums allow us to add date, location and a list of people in the photo.  When we make choices on which fields to fill in, we are in effect building a model around our content based on what is important to us.

If you tried to replicate this on a file system, you might have trouble coming up with a folder structure and naming convention for this, you might be left scratching your head. 

The problem with these ad-hoc models is that the model is generally loosely defined in our head and not enforced.  The model is generally useful for manual operations rather than automated processes.

Enterprise Content Management (ECM) Systems provide the tools that allow system designers to express the design in a way that allows applications to understand, leverage and enforce the information architecture that the content model implies.

ECM systems differ from file systems in that rather than limiting the system designer to files and folders, it gives the designer the ability to define the objects that will be housed in the repository.  ECM systems still have files and folders but they are just objects in the repository.  The definition of the object includes the metadata or properties that each object has.

Looking back at your photo album app, you might define a photo object which has the following properties.

  • Location
  • Time/Date
  • Title
  • Caption
  • List of people in the photo 

Your photo album object might be a folder that contains the photos.  The properties of the album might be:

  • Title
  • Caption
  • Visibility (public/private)

Notice that the ability to define properties, means that we do not have to come up with some complex folder structure or naming convention to categorize our photos any more.

A Structured Approach to Content Model Design

Armed with the ability to add properties to each object in the repository, it is possible to approach content model design in a very structured manner.  I tend to follow loosely the process below (or some variation of it).

Enumerate the Elements

In this phase the designer would:

  • List the object types
  • Define the relationships between different object types (e.g. a photo album contains photos)
  • Define the properties for each object type

Refine the Design

During this phase, the design is refined for implementation purposes. The actual steps taken in this phase will depend on a number of factors such as:

  • The content management system being used
  • Any performance requirements
  • Requirements of any downstream systems
  • Enterprise wide standards
  • Re-use opportunities.

Implementing the Design

Once the design is completed, the content model must be built, and deployed to the repository. This process is dependent upon the repository, but in general a well specified content model can be quickly converted into a deployable format.

Getting Started (If you are New to this)

There are many ways for a team, that is new to content modeling, to complete their design.

Get Training

This approach is best for a team that wants to "own" their design.  This is usually best for teams that have some time (well a day or two) to invest in themselves, and really are looking to minimize the amount of work that they delegate to outside parties.  This provides the maximum transfer of skills and knowledge and can be used in combination with any of the methods listed below.  If you want to ensure that your team is enabled for long-term success, it is best for them to get the skills they need through formal training with an expert.

Hire an expert to coach them through it

This is a reasonable approach when the team needs to get started quickly and may have to maintain the solution after it goes into production. This is also good for teams that may be uncomfortable with taking on something new by themselves.  In the end, the team should end up with a certain level of enablement around content modeling but this option may not set them up for success to maintain the solution post-production.

Hire an expert to do it for them

This is a suitable approach if the ECM project is really a one off and that will not be revisited, or if it is a function that is so different from the team's normal function, that any investment in team enablement would be inappropriate. The drawback to this approach is that the team does NOT gain any skill or knowledge that will allow them to become self sufficient.

Taking the Opportunity to put in a Shameless Plug :)

For the past 6 months, I have had the opportunity to split my time between Alfresco consulting and curriculum development for Alfresco University.  It has allowed me to bring my field experience into the education department and learn a bit about instructional design.  One of the courses that I have been working on is the Content Modeling Course.  This course will debut at Alfresco Summit.  The first half of the course will focus on the design of the content model, through a number of exercises.  The second half of the course will concentrate on building, deploying, refining and troubleshooting the model.  This course includes exercises that are targeted for developers, information architects and system administrators.

I am personally excited about the opportunity to launch this course at Alfresco Summit, and am looking forward to seeing you there.  If you would like to attend please visit our Alfresco Summit Training page for registration information.