Exam Area: Area 2 – Installation, Operation & Configuration (20%) Reference: https://docs.developers.optimizely.com/content-management-system/docs/upgrading
CMS 12 components are distributed as NuGet packages. Update via .NET CLI or Package Manager:
# Check for outdated packages
dotnet list package --outdated
# Update specific packages
dotnet add package EPiServer.CMS --version 12.x.x
dotnet add package EPiServer.CMS.UI --version 12.x.x
dotnet add package EPiServer.CMS.Core --version 12.x.x
dotnet add package EPiServer.CMS.TinyMce --version 12.x.x
# Or update all in Visual Studio: right-click solution → Manage NuGet Packages
MAJOR.MINOR.PATCH e.g. 12.4.2
MAJOR → Breaking change (e.g. CMS 11 → CMS 12)
MINOR → New features, backward compatible
PATCH → Bug fixes and security patches, backward compatible
CMS 12 uses the format:
EPiServer.CMS 12.MINOR.PATCH
↑
Always 12 (the major version we're studying)
Checklist:
CMS automatically applies database schema changes on application startup:
Application starts → CMS checks DB schema version
↓
If schema version < required version:
→ Runs pending migration scripts automatically
→ Logs: "Database upgrade from version X.Y to X.Z complete"
↓
Application continues startup
Exam tip: You do not need to run SQL scripts manually. CMS handles DB migrations automatically. However, always backup first.
For deployments to the Optimizely DXP (Azure PaaS):
1. Create deployment package (.zip via msdeploy or Deployment API)
2. Upload to Integration environment
3. Smoke test Integration
4. Promote to Preproduction
5. Full regression test on Preproduction
6. Schedule maintenance window (if needed)
7. Promote to Production
8. Monitor Application Insights for errors
# Using Optimizely Deployment API CLI
epi-deployment deploy \
--environment integration \
--package ./deploy.zip \
--project-id <your-project-id>
If an update causes issues:
DXP Portal → Deployments → Previous deployment → Re-deploy
→ Optionally restore database from pre-upgrade backup
Warning: Rolling back the application without also restoring the database can cause schema mismatch if the new code ran DB migrations.
After updating CMS core, check add-on compatibility:
# Common add-ons that need version matching:
EPiServer.Find → Must match major CMS version
EPiServer.Forms → Check release notes
Optimizely.CMS.UI.React → Check release notes
Best practices for production updates with minimal downtime:
/health) to verify each server before switching traffic