Problems with Container Based Content Model

Containers are a common approach when designing CMS content models. They allow Authors and Content Editors to organize content hierarchically. While containers allow contributors to group, reorder, and organize content easily, they also add a lot of dependencies to the content across the system.

Containers add complex scenarios for simple tasks, including:

  • Publishing
  • Delete + Unpublish + Localize + Unlocalize
  • Workflow
  • Translation

Effects of using a container model:

  • “Where Used” filters are used extensively
  • Large amount of content dependencies lead to performance issues
  • Large amount of content manager transactions while publishing to ensure content integrity lead to stability issues
  • Multiple Database Transactions during Publishing
  • Complex content unpublish and deletion
  • Complex Experience Manager implementations (Experience Manager is not designed to use Containers)

Content Integrity Example:

In the scenario below, Tridion will attempt to maintain content integrity by publishing all pages using component instances. This example would cause a link propagation issue if the following conditions were met:

  1. Text Block – With image component is published within a page
  2. Application Include Container component is published within a page
  3. Buttons Actions tray component is published within a page
  4. Button App Include is published within a page

containerImage

The schemas are the easy bit… right?

After you have been developing with SDL Tridion for a while, its easy to be a bit blas√© about Schemas. Thats the easy bit right? Bung a few fields in, mandatory or not? multi-value? Configure the RTF fields a bit and off we go… on to the tricky parts: templates, integrations with 3rd party systems, automation etc. etc.

Making a schema is so simple that it is easy to forget how complex good schema design is. In this article I hope to bring a reminder to implementors of all levels of ability just what makes good schema design. 

Continue reading