Selecting the Wrong CMS Costs $2M+ in Replatforming

We've advised on 20+ enterprise CMS evaluations. Our vendor-agnostic assessment evaluates your content model, team skills, integration landscape, and 5-year TCO — not vendor marketing claims.

Fixed-fee engagements • Affiliate/partner revenue disclosed • Reference clients available

Request CMS Selection Workshop

Tell us about your content model, team, and timeline. We'll match you with a certified enterprise CMS architect who's implemented at your scale.

Fields marked with asterisk are required.

By submitting, you agree to be connected with a certified enterprise DXP implementation partner. Privacy Policy

Executive Summary: The 2026 CMS Landscape

The enterprise CMS market has bifurcated into two architectural philosophies:

  • Integrated Suite (AEM, Sitecore, Optimizely): CMS + DAM + Personalization + Analytics in one license. Single vendor, single contract, deep integration — but high lock-in and $500K-$3M+ annual cost.
  • Composable / Best-of-Breed (Contentful, Sanity, Strapi + DXP): Headless CMS as a service, decoupled from presentation and personalization. Lower upfront cost, best-of-breed flexibility — but integration burden falls on your team.

Liferay and Acquia occupy a third category: Open-source core (LGPL/GPL) with commercial enterprise editions. Source code access eliminates lock-in but shifts operational burden to your team unless you buy managed cloud (Liferay Cloud, Acquia Cloud).

Quick Selection Matrix

If Your Priority Is...Primary RecommendationRunner-Up
Marketing-led personalization + experimentationOptimizelySitecore
Deep Adobe ecosystem integration (Analytics, Target, Creative Cloud)Adobe Experience Manager
Portal/intranet + content + low TCO + source ownershipLiferay DXPAcquia
.NET ecosystem, composable, mid-market budgetKentico XperienceOptimizely
Developer-first headless, modern stack, usage-based pricingContentful / SanityAcquia (Drupal)
Regulated industries, air-gapped, on-prem mandateLiferay DXPAEM (On-Prem)

CMS Architecture Patterns: Technical Deep Dive

1. Monolithic Coupled (Traditional)

Examples: AEM 6.5 (classic), Sitecore XP 9.x/10.x, Liferay 7.x (traditional), Kentico 12/13.

Single deployable unit: CMS, rendering, personalization, search, workflow all in one JVM/.NET process. Tight coupling between content model and presentation (JSP/HTL/Razor). Scaling = vertical or sticky-session horizontal. Deployment: Single WAR/EAR or IIS site. Upgrade risk: High — any change touches everything.

2. Decoupled / Hybrid Headless

Examples: AEM as a Cloud Service (headless + SPA editor), Sitecore XM Cloud, Optimizely CMS 12 (SaaS), Acquia Drupal (headless + Decoupled Drupal).

CMS manages content + preview + personalization; frontend consumes via API (GraphQL/REST). CMS still owns routing, preview, and in-context editing. Key challenge: Preview synchronization — CMS must render SPA preview via iframe or sidecar. Architecture: CMS (author) → CDN → Frontend (Next.js/React/Angular) → API Gateway → CMS (delivery).

3. Pure Headless / Composable (SaaS-First)

Examples: Contentful, Sanity, Strapi Cloud, Kontent.ai, Storyblok.

No rendering layer. Content modeled as structured documents (Contentful), schema-less JSON (Sanity), or Git-based (Netlify CMS, TinaCMS). API-first: GraphQL, REST, webhooks, realtime subscriptions. No preview — preview is a frontend concern (Visual Editing via contentful-preview, @sanity/visual-editing). Personalization: External (Ninetailed, Uniform, Croct) or build your own.

4. Open-Source Core + Commercial Cloud (Liferay, Acquia)

Source code available (LGPL/GPL). Self-host = full control, full ops burden. Commercial cloud (Liferay Cloud, Acquia Cloud) = managed Kubernetes, automated CI/CD, compliance certifications. Critical difference: You can self-host forever if vendor pivots or prices spike. Migration path: export content → import to any compatible platform.

Platform Deep Dives

Adobe Experience Manager (AEM) as a Cloud Service

Java/OSGiSaaS Only (since 2021)JCR/OakGraphQL + REST

Architecture

Multi-tenant SaaS on Adobe Managed Services (AWS/Azure). Three-tier topology: Author (single-tenant, ~200GB Oak segment tar), Publish (auto-scaled farm, Oak composite blob store → S3/Blob Storage), Preview (ephemeral). Dispatcher (Apache + mod_dispatcher) at edge — cache invalidation via Sling Resource Invalidation (SRI) with ~100ms global propagation.

Content Model & APIs

  • Content Fragments: Structured, channel-agnostic content with variation support. GraphQL schema auto-generated from CF models.
  • Experience Fragments: Reusable page regions (header, footer, promo) — not headless-friendly.
  • Assets: Native DAM (AEM Assets) with Smart Tags (Adobe Sensei), dynamic media (Scene7), rendition workflows.
  • GraphQL: Persisted queries only (no ad-hoc in production). Endpoint: /graphql/execute.json. Supports fragments, unions, interfaces.

Hidden Costs & Gotchas

  • Dispatcher config management: Git-based, but dispatcher-sdk validation runs in Cloud Manager pipeline — 30-45 min per deploy.
  • Content migration: No native bulk import API for Content Fragments. Use aem-content-package-maven-plugin or RTE-based scripts.
  • Search: Oak Lucene indexes — custom indexes require Adobe Support ticket for production deployment.
  • Forms: AEM Forms = separate license ($100K+/yr). Not included in Sites license.

When to Choose

You're all-in on Adobe: Analytics, Target, Campaign, Creative Cloud. You need asset-centric workflows (creative → DAM → Sites → Target). Budget >$500K/yr. Team has/scan hire AEM specialists (rare, expensive).

Sitecore XM Cloud / XM / XP

.NET / Next.jsSaaS (XM Cloud) / Self-HostedHeadless-FirstGraphQL + REST

Architecture

XM Cloud (SaaS): Content Management (CM) hosted by Sitecore on Azure. Content Delivery via Edge (global CDN + GraphQL/REST APIs at edge locations). XM (Self-Hosted): CM + CD on your Kubernetes/IIS. XP (Full DXP): XM + xConnect (CDP) + Personalize + CDP (Boxever) + Send (email) + OrderCloud (commerce).

Content Model & APIs

  • Content Hub: Separate DAM/PIM/CMP product (acquired Stylelabs). Integrates via webhooks/API. Not unified with XM content tree.
  • Items & Fields: Template-based (like AEM templates). Helix architecture enforces feature/foundation/project layer separation.
  • GraphQL: /sitecore/api/graph/edge (Edge) or /api/graphql (self-hosted). Supports connected GraphQL (federated schemas).
  • Layout Service: JSON rendering of presentation details for JSS (Next.js, React, Vue, Angular).

Hidden Costs & Gotchas

  • Content Hub licensing: Separate $50K-$150K/yr. Required for enterprise DAM.
  • xConnect operational complexity: Separate SQL + Solr + xConnect collection/search/processing roles. Most XP customers underutilize.
  • Upgrade path XP → XM Cloud: Not automated. Content migration via Sitecore Content Serialization + custom scripts. Budget 6-12 months.
  • Personalize (Boxever): Event streaming architecture — requires dedicated data engineering for real-time profiles.

When to Choose

You need best-in-class personalization/CDP, have .NET/React team, want composable adoption path (start with XM Cloud, add CDP/Commerce later). Budget $200K-$600K/yr.

Optimizely CMS 12 (SaaS) / CMS 11 (PaaS)

.NET 8 / .NET CoreSaaS (CMS 12) / DXP (PaaS)Content CloudGraphQL + REST

Architecture

CMS 12 (SaaS): Multi-tenant control plane on Azure. Your data isolated in dedicated SQL + Blob + Search (Azure AI Search). CMS 11 / DXP: Your Azure subscription — App Service (Linux containers), Azure SQL, Azure AI Search, Redis Cache, Service Bus. Experimentation: Feature flags + A/B testing built into CMS (not separate product).

Content Model & APIs

  • Content Types: POCO classes with [ContentType] attributes. Block types for composition. Strongly-typed models via IContent.
  • Content Delivery API: REST (/api/episerver/v3.0/content) + GraphQL (/api/episerver/graphql). Supports content versions, language fallback, personalization preview.
  • Visual Builder: In-context editing for SPA (Next.js via @episerver/visual-builder). Renders editable overlay via postMessage.
  • DAM: Integrated (Content Cloud) or connect Bynder, Cloudinary, Aprimo via connectors.

Hidden Costs & Gotchas

  • Find (Search): Separate license. Azure AI Search indexes — powerful but query syntax differs from Lucene.
  • Forms: Included in CMS 12. CMS 11 requires Forms add-on.
  • Commerce: Separate product (Optimizely Commerce / B2B Commerce). Not unified content model.
  • Deployment API: CMS 12 uses Deployment API for content sync between environments — not Git-based.

When to Choose

.NET shop wanting SaaS CMS with built-in experimentation. Mid-market to enterprise ($150K-$400K/yr). Team prefers Visual Studio, strongly-typed models, Azure-native.

Kentico Xperience 13 (Refresh)

.NET 8 / ASP.NET CoreOn-Prem / Private Cloud / SaaS (Xperience by Kentico)MVC / Razor Pages / HeadlessGraphQL + REST

Architecture

Two products: Xperience 13 (traditional, on-prem/PaaS, ASP.NET Core MVC) and Xperience by Kentico (SaaS, headless-first, .NET 8). Xperience 13 = Page Builder, Form Builder, Marketing Automation, Email Marketing, A/B Testing, Web Analytics — all in one. Xperience by Kentico = headless CMS + marketing automation (separate).

Content Model & APIs

  • Content Tree: Hierarchical (pages) + reusable content items. Page types = classes. Strongly-typed via generated code.
  • Headless API: GraphQL (/graphql) with preview support. REST for content items, media, taxonomy.
  • Page Builder: Widget-based (MVC/Razor). Editable areas, sections, widgets. Works in headless mode via @Kentico.PageBuilder.Web.Mvc.
  • Marketing Automation: Visual workflow designer. Contact management, scoring, email marketing, AB testing — native, no integration needed.

Hidden Costs & Gotchas

  • SaaS vs On-Prem feature parity: Xperience by Kentico lacks Page Builder, some marketing features. Roadmap convergence in 2025-26.
  • Upgrade 12 → 13: Breaking changes (ASP.NET Core, DI, configuration). Not in-place — side-by-side migration.
  • Licensing: Per-server (on-prem) or per-environment (SaaS). Additional contacts/emails for marketing automation.

When to Choose

.NET team wants single platform for CMS + marketing automation + email + analytics. Mid-market ($80K-$250K/yr). Don't need enterprise CDP.

Acquia Drupal Cloud (Drupal 10/11)

PHP 8.2+ / SymfonySaaS (Acquia Cloud) / Self-HostedHeadless-FirstJSON:API + GraphQL

Architecture

Acquia Cloud Platform: Kubernetes (GKE/EKS/AKS) managed by Acquia. Drupal in containers. Acquia CDP: Separate product (acquired AgilOne) — unified profiles, segmentation, activation. Acquia DAM: Separate (acquired Widen). Acquia Personalization: Client-side (Lift) or server-side.

Content Model & APIs

  • Entities & Fields: Drupal's Entity API — nodes, taxonomy, paragraphs, media, custom entities. Fieldable, revisionable, translatable.
  • JSON:API: Core since Drupal 8.7. Zero-config, follows spec. /jsonapi/node/article. Supports sparse fieldsets, inclusion, filtering, pagination.
  • GraphQL: graphql module. Schema from entity types. Persisted queries, subscriptions (via Mercure).
  • Next-Drupal: Official Next.js integration (next-drupal SDK) for preview, image optimization, incremental static regeneration.

Hidden Costs & Gotchas

  • Module maintenance burden: 40K+ contrib modules. Security updates = your responsibility (unless Acquia Cloud Site Factory).
  • Acquia Cloud pricing: Per-environment, per-CPU. Enterprise tiers start $150K/yr. Site Factory (multi-site) = $300K+.
  • CDP/DAM/Personalization: All separate contracts. Integration = webhooks/API + identity resolution.
  • PHP talent: Easier to hire than AEM/Sitecore specialists, but Drupal expertise specific.

When to Choose

You want open-source flexibility, have PHP/Symfony team, need multi-site (Site Factory), or want lowest license cost with commercial support option. Budget $100K-$400K/yr.

Liferay DXP 7.4 (Content Management)

Java 21 / OSGiOn-Prem / K8s / Liferay CloudHeadless + TraditionalGraphQL + REST

Architecture

OSGi modular runtime (Apache Felix). Content = JournalArticle (WCM) + DLFileEntry (Documents) + Content Structures/Templates (Dynamic Data Mapping). Headless: /o/headless-delivery/v1.0 (REST, JSON:API) + /o/graphql (GraphQL). Search: Elasticsearch 8 via portal-search-elasticsearch8 module.

Content Model & APIs

  • Structures/Templates: XML definitions (DDM) → FreeMarker/Velocity templates. Versionable, localizable, workflow-enabled.
  • Fragments: Reusable HTML/CSS/JS components for Page Fragments (visual page builder). Developer-authored, marketer-assembled.
  • Asset Libraries: Document & Media — folder-based, metadata, versions, permissions, viral sharing.
  • GraphQL: Auto-generated from Structures. Supports nested fragments, image transformations via arguments.

Hidden Costs & Gotchas

  • No visual page builder for marketers: Fragments require developer. Page composition = drag fragments onto canvas (limited).
  • Personalization: Audience Targeting (rules) + Analytics Cloud (separate $25K/yr). No native ML recommendations.
  • Upgrade 7.x → 7.4: JDK 11→21, Tomcat 9→10 (javax→jakarta), Elasticsearch 7→8. Module compatibility audit required.
  • Commerce: Liferay Commerce (separate module, Elastic Path-based). B2B-focused (punchout, quotes, contracts).

When to Choose

Portal/intranet primary use case, Java team, need source code ownership, regulated/air-gapped deployment. TCO advantage at scale.

Contentful (Composable Reference — Not a DXP)

SaaS OnlyHeadless-OnlyGraphQL + REST + RealtimeUsage-Based Pricing

Architecture

Pure headless CMS. Content model = Content Types (JSON schema) → Entries → Locales. Space = tenant. Environments = aliases (master, staging, feature branches). Content Preview API (draft) + Content Delivery API (published) + Content Management API (write). GraphQL: Single endpoint, persisted queries, Apollo federation ready.

Key Differentiators

  • App Framework: React apps embedded in Contentful UI (custom sidebar, field editors, entry actions). Deploy to Contentful CDN.
  • Compose: Page-based editing experience (separate product) for marketers who need visual assembly.
  • Launch: Scheduled publishing with content calendars, release management.
  • Ecosystem: 100+ integrations (Vercel, Netlify, Gatsby, Next.js, Uniform, Ninetailed, Algolia).

When to Choose (as CMS Layer in Composable DXP)

Developer-first team, modern stack (Next.js/Remix/Astro), usage-based pricing aligns with traffic, need best-in-class authoring UX for structured content. Pair with: Uniform (composition), Ninetailed (personalization), Algolia (search), Segment (CDP). Budget: $50K-$300K/yr.

Headless Maturity Matrix (2026)

Capability AEM Cloud Sitecore XM Cloud Optimizely CMS 12 Acquia Drupal Liferay 7.4 Kentico Xperience Contentful
GraphQL (Production)GA (Persisted)GA (Edge)GAGA (Module)GA (7.4)GAGA
Visual Editing (SPA)SPA Editor (React)JSS + Next.jsVisual BuilderNext-DrupalFragments (Limited)Page BuilderCompose (Add-on)
Preview (Draft)Dedicated Preview TierEdge PreviewDeployment APIJSON:API PreviewHeadless Preview APIPreview ModePreview API
Content Fragments/BlocksContent FragmentsContent BlocksBlocksParagraphsDDM StructuresWidgets/Content ItemsEntries/References
Image Transformation APIDynamic Media (Scene7)Image ServiceImage ServiceImage Styles + CDNImage ProcessorImage ResizerImages API
Webhooks / RealtimeSling Events → I/O EventsWebhooks + SignalREvent Grid / WebhooksWebhooks + MercureMessage BusWebhooksRealtime (GraphQL Sub)
Multi-Environment SyncCloud Manager PipelinesSerialization + CLIDeployment APIAcquia CLI / BLTLAR + Content PortletCI/CD + DB SyncEnvironments (Native)
SDK/Starter KitsWKND / AEM HeadlessJSS Next.js / ReactNext.js StarterNext-DrupalReact WidgetsNext.js StarterNext.js / Remix / Astro

Deployment Models & Operational Reality

SaaS (AEM Cloud, Sitecore XM Cloud, Optimizely CMS 12, Contentful, Acquia Cloud, Liferay Cloud)

VendorInfra ControlCustom Code DeployScalingComplianceLock-in
AEM CloudNone (Adobe managed)Cloud Manager (Git → Build → Deploy)Auto (Publish farm)SOC2, ISO, HIPAA, FedRAMPHigh (Dispatcher, Oak, proprietary APIs)
Sitecore XM CloudLow (CM only)Vercel/Netlify for frontend; CM via Deploy AppEdge (global)SOC2, ISO, HIPAAMedium (Edge API, Content Hub separate)
Optimizely CMS 12LowDeployment API (content) + PaaS Portal (code)Auto (App Service)SOC2, ISO, HIPAAMedium (Azure-specific services)
Acquia CloudMedium (K8s access via CLI)Acquia CLI / PipelinesHPA (K8s)SOC2, ISO, HIPAA, FedRAMPLow (Standard Drupal + K8s)
Liferay CloudMedium (K8s, GitOps)GitOps (Helm + ArgoCD)HPA (K8s)SOC2, ISO, HIPAALow (Standard K8s, OSGi)
ContentfulNoneN/A (SaaS only)Auto (Global CDN)SOC2, ISO, HIPAA, GDPRHigh (Proprietary APIs, no export)

Self-Hosted / Private Cloud (AEM 6.5, Sitecore XP/XM, Optimizely DXP, Liferay, Kentico, Drupal)

You own: Kubernetes clusters, databases, search clusters, CDN config, SSL certs, patching, backups, DR, compliance audits. Team required: 2-4 DevOps + 1-2 Platform Engineers + DBA. Annual infra cost (AWS/Azure/GCP): $150K-$500K depending on scale. Advantage: Data residency, air-gapped, custom kernel/modules, no vendor price hikes.

3-Year Total Cost of Ownership Comparison

Assumptions: Enterprise deployment, 3 environments (dev/stage/prod), 500K monthly visits, 50 content authors, 2-3 developers, 1 DevOps. USD 2026.

Cost ComponentAEM CloudSitecore XM CloudOptimizely CMS 12Acquia CloudLiferay CloudKentico SaaS Headless (Contentful)
License (3yr)$1.5M-$3M$600K-$1.5M$450K-$1.2M$450K-$1.2M$270K-$600K$180K-$600K
Implementation (Y1)$800K-$2M$400K-$1M$300K-$800K$300K-$800K$400K-$1M$200K-$500K
Infra/Hosting (3yr)IncludedIncludedIncludedIncludedIncludedIncluded
Team (3yr, 3-5 FTE)$1.35M-$2.25M$1.35M-$2.25M$1.35M-$2.25M$1.35M-$2.25M$1.35M-$2.25M$1.35M-$2.25M
Support/Premium$150K-$300K$100K-$200K$75K-$150K$100K-$200K$75K-$150K$50K-$100K
TOTAL 3-YR$3.8M-$7.55M$2.5M-$5.15M$2.17M-$4.4M$2.2M-$4.45M$2.1M-$4M$1.78M-$3.45M

Critical insight: License cost is only 20-35% of TCO. Team cost dominates. AEM's higher license is offset by larger ecosystem (more implementers, faster hiring). Contentful's lower license is offset by integration build cost (compose your own DXP). Liferay Cloud has lowest license + infra but requires Java/OSGi talent (scarce).

Vendor Selection Framework: 12 Evaluation Criteria

Score each criterion 1-5. Weight by organizational priority. Total >50 = strong fit.

#CriterionWeightKey Questions
1Content Model FlexibilityHighNested structures? References? Localization? Versioning granularity?
2Headless API MaturityHighGraphQL + REST? Preview? Persisted queries? Image transform? Webhooks?
3Authoring ExperienceHighVisual editing? In-context preview? Workflow? Collaboration? Asset management?
4Personalization & ExperimentationMedium-HighNative or integration? Server/client-side? ML? A/B testing? Feature flags?
5Search & DiscoveryMediumFaceted? Semantic? ML ranking? Synonyms? Multi-language? Index control?
6Multi-Site / Multi-BrandMediumShared content? Site factory? Brand governance? Permission isolation?
7Integration & ExtensibilityHighWebhooks? Events? Custom APIs? Marketplace? SDK quality? Upgrade safety?
8Deployment & Ops ModelHighSaaS/PaaS/On-prem? GitOps? Blue-green? Rollback? DR? Compliance certs?
9Team Skills AlignmentCriticalJava/.NET/PHP/JS? CMS-specific talent available? Training investment?
10Vendor Stability & RoadmapMediumPublic roadmap? Release cadence? Deprecation policy? Financial health?
11Total Cost of OwnershipHighLicense + infra + team + support + migration risk + exit cost.
12Exit Strategy / Lock-inMediumContent export fidelity? API standards? Source access? Migration tools?

Want This Scored for Your Organization?

Get your weighted vendor scorecard, 5-year TCO estimate, and matched implementation partners in 15 minutes — free.

Start Free Assessment →

Migration Patterns: From Legacy to Modern

Pattern 1: Big Bang (Legacy → SaaS)

From: WordPress multisite, Drupal 7/9, AEM 6.5, Sitecore 9, custom CMS. To: AEM Cloud, Sitecore XM Cloud, Optimizely 12, Contentful.

Approach: Content freeze → Export/Transform/Load → QA → DNS cutover. Timeline: 4-8 months. Risk: High — all-or-nothing. Mitigation: Parallel run with traffic shadowing (mirror 10% traffic to new).

Pattern 2: Strangler Fig (Gradual Decoupling)

From: Monolithic CMS (any). To: Headless CMS + Modern Frontend.

Approach: New pages/features built in headless CMS + Next.js. Legacy CMS serves existing routes. Reverse proxy (NGINX/Cloudflare Workers) routes by path. Migrate section by section. Timeline: 12-24 months. Risk: Low. Cost: Higher (dual systems).

Pattern 3: Platform Upgrade (In-Place)

From: AEM 6.5 → AEM Cloud, Sitecore 9/XP → XM Cloud, Liferay 7.2 → 7.4, Drupal 9 → 10/11.

Approach: Code refactor (OSGi/Helix/Module) + Content migration (Oak/Content Hub/LAR/Migrate API) + Infra rebuild. Timeline: 6-18 months. Risk: Medium-High (custom code breakage).

Pattern 4: Composable Assembly (Best-of-Breed)

From: Monolith DXP. To: Contentful (CMS) + Uniform (Composition) + Ninetailed (Personalization) + Algolia (Search) + Segment (CDP) + Vercel (Frontend).

Approach: Define composition layer first. Migrate content to headless CMS. Build composition APIs. Swap personalization/search/CDP incrementally. Timeline: 18-36 months. Risk: Integration complexity, vendor sprawl.

Stop Guessing. Start Scoring.

Every week of indecision costs $50K+ in delayed value and technical debt. Get your vendor shortlist in 15 minutes:

  • Weighted Scorecard: 12 criteria, auto-weighted to your priorities
  • TCO Model: 5-year projection with sensitivity analysis
  • Migration Strategy: Pattern recommendation + timeline + risk register
  • Partner Matches: Certified implementation partners for your top vendors
Start Free Assessment →