Optimizely CMS 12 Known Issues and Gotchas
A practitioner reference of documented issues, root causes, and workarounds for Optimizely CMS 12 (and CMS 13 preview where relevant).
Issue 1: Deep ContentArea Nesting Performance Cliff
Section titled “Issue 1: Deep ContentArea Nesting Performance Cliff”Symptoms: Pages with deeply nested ContentAreas (blocks within blocks within blocks) load slowly (5-10+ seconds).
Root Cause: N+1 query problem — each nested block loads separately.
Workaround:
Use bulk loading with IContentLoader.GetItems():
// BAD: Lazy loading (N+1 queries)foreach (var item in mainContentArea.FilteredItems){ var block = _contentLoader.Get<IContent>(item.ContentLink); // Process block}
// GOOD: Bulk loading (single query)var contentReferences = mainContentArea.FilteredItems .Select(item => item.ContentLink) .ToList();
var blocks = _contentLoader.GetItems(contentReferences, new LoaderOptions()) .ToList();
foreach (var block in blocks){ // Process block}Status: Inherent architectural limitation, mitigated by bulk loading pattern.
Issue 2: Background Task DbContext Conflicts (Fixed in 2026)
Section titled “Issue 2: Background Task DbContext Conflicts (Fixed in 2026)”Symptoms: Background tasks (scheduled jobs) fail with DbContext conflicts:
System.InvalidOperationException: A second operation started on this context before a previous operation completedRoot Cause: Multiple background tasks sharing DbContext instance.
Fix: Fixed in 2026 release (CMS-46456): All background tasks now execute in isolated context.
Impact: Resolved for CMS 12 sites on 2026+ releases.
Issue 3: CMS 13 Content Graph Mandatory (Cannot Disable)
Section titled “Issue 3: CMS 13 Content Graph Mandatory (Cannot Disable)”Symptoms: CMS 13 site won’t start without Content Graph credentials configured.
Root Cause: Content Graph is enabled by default in CMS 13 and cannot be disabled.
Workaround:
Add Content Graph configuration to appsettings.json (even if not using headless):
{ "EPiServer": { "ContentGraph": { "GatewayAddress": "https://cg.optimizely.com/", "Secret": "your-content-graph-secret-key", "AppKey": "your-app-key", "SingleKey": "your-single-key" } }}Obtain credentials from Optimizely Cloud portal, Content Graph settings.
Impact: Medium — requires Content Graph setup for all CMS 13 projects.
Issue 4: Assembly Version Mismatch After Migration
Section titled “Issue 4: Assembly Version Mismatch After Migration”Symptoms: Content types fail to load after CMS 11 to 12 migration:
TypeLoadException: Could not load type 'MyProject.Models.ArticlePage'Root Cause: Content types stored in database reference old assembly versions.
Fix:
Update assembly versions in database or use assembly binding redirects in appsettings.json.
Issue 5: Find Index Rebuilds Take Hours
Section titled “Issue 5: Find Index Rebuilds Take Hours”Symptoms: Optimizely Find index rebuild for 100,000+ content items takes 4-8 hours.
Workaround:
- Use incremental indexing (index changes only)
- Schedule full rebuilds during off-peak hours
- Split large indexes into multiple smaller indexes (by content type)