My Best Practices in Content Modeling

Over the past years I was present at the start of various content migration projects (migration from one CMS to another) and I got the chance to influence a few of these projects. A crucial step in these projects was the establishment of the content architecture. In this post I summarize the questions that I ask/consider during the creation of the content model for a reset or a brand new web experience. The post may contain a few Adobe specifics but should be applicable to any other CMS.

Although I learnt most of this from greater minds, I’m proud that I could establish my own task/check list below.

My steps and best practices

Inputs that influence the content model:

  • Requirements (epics, main journeys)
  • Sitemap
  • Designs
  • Clickable prototypes
  • Author UX
    • Note: I have never seen author UX as input. In most of the cases, author UX is suggested by architects or left for the developers – and often fails.
  • User groups and editorial/approval needs
  • Regulatory constraints
  • Platform

Considerations, tasks



Establish a landscape of content types

  • What contents will be in the system? Pages, digital assets, data, …
    • What contents, seen on the designs needs to be modeled?
    • What are content managed?
    • What comes from external feeds? E.g. stock exchange rate, social feed, etc.
  • What are the key content relationships? Examples:
    • Articles have authors, authors have bio pages, …
    • Navigation components, breadcrumbs
    • Teasers, carousels are used for displaying features contents on landing pages
    • Assets are used on web pages
  • What contents are unique enough to get their own structure?
  • What needs to be reusable? Examples:
    • News releases may be shared among multiple sites
    • Contents generated may be reused in monthly digests
    • Marketing campaigns (email campaign)
  • How to cope with user generated contents (UGC)?
    • Can use cloud storage or shared repository by multiple instances when the site is UGC heavy
  • What taxonomy will be used?
  • What parts of the content will be personalized?

How is the content represented in the system?

  • This is influenced by all of the functional and non-functional considerations
  • Go down to content properties level (title, subtitle, author, publication date, …)
  • What drives the folder structure?
  • What will be tagged?
  • What is best for searching, filtering (on the author consoles and by end customers)?
  • How to export contents to e.g. translation, external systems, etc.
  • Structure the contents in the way that sections of it can be personalized
  • What metadata will be necessary?
    • Application specific metadata, custom metadata
    • What is manually set, what is written by e.g. workflows?
  • Globalization
    • My suggestion is to plan for globalization in the content model even if the need is not foreseen. E.g. /content/somecompany/business-> /content/somecompany_uk/en_gb/business
    • Shared, reused, translated contents, locally vs. centrally managed contents
    • We may need blueprint sites (e.g. country site template)
  • David’s guide for content modelling in Java Content Repository:

De-composition into content elements (pages, components)

  • How many different page templates and structure components are needed?
    • Adobe recommends minimizing the number of page templates (more precisely: page components)
    • Provide a configurable grid system (or use AEM 6.1+ layout mode)
    • Setup as many templates (from the same page component) as needed (no need to spare on templates if they share the same page component)
    • There is template editing mode for authors from AEM 6.2 (it used to be development task in the past)
  • How many content components are needed?
    • Generic components with many authoring options
    • Generic but extensible components (e.g. listings, where the rendering items can be plugged in later)
    • Specific components
    • How atomic should the components be?
    • Smart components

How is content entered into the system?

  • Page templates (Add new page -> Choose template -> …)
  • “Scaffolding” forms: allow creating multiple pages that share the same design, with validations at content entering time
  • Creation of reusable content/experience fragments
  • Importing external feeds
  • Automated migration (e.g. groovy script, spreadsheet, etc.)
  • Workflow e.g. translation
  • Wizards
  • Blueprintsrollout (sites, products)
  • How will URLs be assigned to pages (SEO)
  • How to mark up content properties?

How will the contents be published?

  • Reviews
  • Approvals
  • Instant / scheduled activation (on/off)

Further considerations (non-functional)

  • Permissions
    • Must be taken into account from the very beginning (ACLs, CUGs)
    • Don’t forget that AEM uses the same platform for content authoring and delivery
    • The easiest is to apply folder level settings in AEM
    • Different tools of AEM use different APIs to determine permissions, so prefer using OOB ACL, CUG, etc. and avoid using specific API like e.g. Sling ResourceAccessGate to determine permissions in AEM
  • Maximize the cache ability of contents
    • There are requirements that highly impact caching, for example
      • Personalization
      • Reusability
      • User generated contents
  • Who delivers initial contents?
    • Development team or content editors?
  • Content quality (markup, SEO, accessibility, …)
    • Automated checks
  • Go live considerations (in case of migration)
    • Do not go 100% live until there is possible degradation in functionality and/or revenue
    • Double publishing (old / new system)
  • Support A/B testing, MVT
  • How will contents be moved between various environments
    • We should test against the live site contents in lower environments already (not only in pre-prod)
    • Do we want some content backfeed from production?
  • Backup of contents

Leave a Reply

Your email address will not be published. Required fields are marked *

Pin It on Pinterest