CMS / Graph 13.3.0 parallelizes the producer that held back full synchronization to Optimizely Graph. Measured against 13.2.0 on a copy of a large production database: up to 3.5× faster, roughly 2,000 documents per minute on an image-heavy DAM section, and more than a third less SQL work.
Notes from the architect's bench.
Real-world write-ups on shipping Optimizely DXP, headless CMS, Azure infrastructure, and pragmatic .NET engineering. No fluff - just what worked, what broke, and what I'd do differently.
latest writing
A correct ACL in the CMS is not enough: Graph evaluates access against the state available to it. That state can lag behind the CMS, and every cache between Graph and the browser adds a window of its own.
Graph filters by role for you. The hard part is everything around that check: drafts, ACL propagation, races, and content next to the gate.
Unblocked bot traffic on Optimizely DXP is a billable page view, and the Cloudflare zone managed by Optimizely is not yours to configure. Three levers remain: robots.txt, Optimizely Support, and bringing your own Cloudflare zone (Orange-to-Orange) for AI Crawl Control. Plus the trap in Cloudflare's July 2026 change: from 15 September, blocking Training also affects mixed-purpose crawlers such as Googlebot, Applebot and BingBot.
A pre-registration, published before the data exists. A 3-arm test on Optimizely Feature Experimentation asks whether any AI assistance beats keyword search - and whether Bielik, a self-hosted sovereign Polish 11B model, can match a hosted global model on the same prompt, retrieval and corpus. The method is frozen with a hash; a one-day dress rehearsal on real hardware (Bielik-11B on an A100 vs gpt-4o-mini on Azure OpenAI) already produced the first latency, token and cost numbers - and one genuine config bug.
Part 2 ran the experiment against Everyone. Part 3 wires the same Content Variations to two different audience engines - CMS Audiences and FX Audiences - measures what each one actually does, and finds the boundary where a personalized block vanishes from Optimizely Graph entirely.
Part 1 made the case for Content Variations. This is the follow-up: wiring them to Feature Experimentation, proving the 33/33/34 split actually holds, and serving the same experiment from an MVC head and a headless Next.js head with zero coordination code.
Notes on the CMS 13 feature that didn't get the keynote, but probably should have plus where the sharp edges are and how we wrapped them.
Field notes from a live CMS 12 to CMS 13 and .NET 10 upgrade: the ecosystem is moving fast, with key add-ons already shipped and most blockers now in active upgrade branches.
Dozens of projects, clean build, green tests. The real work wasn't the framework jump-it was the dependency graph. Lessons on old hacks, transitive dependencies, and why 'new' isn't always the goal.
Honest notes from the field: the platform is solid, but migration complexity lives in the ecosystem, not the core. Database collation, legacy validators, third-party packages-the real work.
Major rollout for Digital Experience Platform complete. Product navigation working harder, documentation downloads up, dealer traffic growing.
Successfully migrated from legacy Windows to Optimizely DXP Cloud-native Linux. Cross-platform compatibility, WAF rules, and Infrastructure as Code.
A full migration of a large multi-brand estate off a legacy CMS onto headless Optimizely, GraphQL and Next.js on Azure - with Front Door routing brands across incrementally instead of a big-bang switch.