📚 Product Knowledge
Platform And Customization
📖 Docs

Platform and Customization - Optimizely CMS 12

Exam Area: Content Area 1 – Product Knowledge (15%)
Reference: https://docs.developers.optimizely.com/content-management-system/docs/getting-started


1. What is Optimizely Content Cloud?

Optimizely Content Cloud (also known as CMS 12) is an enterprise content management system (CMS) built on ASP.NET Core (.NET 6+). It is the successor to EPiServer CMS.

Key Features:


2. Technology Stack

ComponentTechnology
FrameworkASP.NET Core (.NET 6 / .NET 7)
LanguageC#
DatabaseMicrosoft SQL Server
ORMEF Core (partial) + custom data layer
Frontend UIDojo JavaScript Framework (CMS UI)
DI ContainerMicrosoft.Extensions.DependencyInjection
Package managerNuGet
SearchOptimizely Search & Navigation (EPiServer.Find)

3. Core NuGet Packages

<!-- Core CMS packages -->
<PackageReference Include="EPiServer.CMS" Version="12.*" />
<PackageReference Include="EPiServer.CMS.Core" Version="12.*" />
<PackageReference Include="EPiServer.CMS.UI" Version="12.*" />
<PackageReference Include="EPiServer.CMS.AspNetCore" Version="12.*" />

<!-- Template/Alloy starter -->
<PackageReference Include="EPiServer.CMS.TinyMce" Version="*" />
<PackageReference Include="EPiServer.Cms.WelcomeIntegration.UI" Version="*" />

NuGet Package Families:


4. High-Level Architecture

┌────────────────────────────────────────────────┐
│              Optimizely CMS 12                  │
├─────────────────┬──────────────────────────────┤
│   Edit/Admin UI │    Delivery (MVC/Razor)       │
│   (Dojo JS)     │    ASP.NET Core               │
├─────────────────┴──────────────────────────────┤
│           Content API (IContentRepository)      │
├────────────────────────────────────────────────┤
│       EPiServer Framework (DI, Events,          │
│       Caching, Globalization, Scheduling)       │
├────────────────────────────────────────────────┤
│            Microsoft SQL Server                 │
└────────────────────────────────────────────────┘

5. CMS 12 Project Structure

MyOptimizelySite/
├── Models/
│   ├── Pages/           # Page content types
│   ├── Blocks/          # Block content types
│   ├── Media/           # Media types
│   └── ViewModels/      # View models
├── Views/
│   ├── Pages/           # Views for page types
│   ├── Blocks/          # Views for block types
│   └── Shared/          # Shared views
├── Controllers/         # MVC controllers
├── Business/            # Business logic
├── Infrastructure/      # Initialization modules, etc.
├── wwwroot/             # Static assets
├── Program.cs           # App startup
├── appsettings.json     # Configuration
└── module.config        # CMS module config

6. Startup Configuration (CMS 12 / ASP.NET Core)

// Program.cs
var builder = WebApplication.CreateBuilder(args);

builder.Services.AddCmsAspNetUI();
builder.Services.AddCms();
// Add other services

var app = builder.Build();

app.UseStaticFiles();
app.UseRouting();
app.UseAuthentication();
app.UseAuthorization();
app.MapControllerRoute(name: "default", pattern: "{controller}/{action}/{id?}");
app.MapContent();  // CMS routing

app.Run();

7. Customization

Key Customization Points:

  1. Content Types – Define page/block types using C# classes
  2. Initialization Modules – Custom startup logic at application start
  3. Event Handlers – React to CMS events (publish, delete, etc.)
  4. Custom Properties – Create custom property types
  5. Scheduled Jobs – Tasks that run on a schedule
  6. Add-ons – NuGet packages that extend functionality
  7. UI Extensions – Extend the CMS UI (gadgets, menu items, views)

8. CMS vs DXP

FeatureCMS (PaaS)DXP (SaaS-like Cloud)
HostingSelf-hostedOptimizely Cloud
DatabaseSelf-managedManaged
DeploymentAutomatedDeployment API
CDNOptionalBuilt-in
ScalingSelf-configuredAutomatic

Review Questions

  1. What framework does CMS 12 use? (.NET 6+ / ASP.NET Core)
  2. What is the core NuGet package for CMS? (EPiServer.CMS.Core)
  3. Which database is officially supported? (Microsoft SQL Server)
  4. What is the key difference between CMS 11 and CMS 12? (ASP.NET Core vs ASP.NET MVC 5)
  5. Where are AddCms() and AddCmsAspNetUI() called? (Program.cs / Startup.cs)