This repository is the Optimizely Foundation reference implementation, upgraded from CMS 12 / .NET 6 to CMS 13 / .NET 10.
| Component | Version |
|---|---|
| Optimizely CMS | 13.0.1 |
| Optimizely Commerce | 15.0.0-preview1 |
| .NET target framework | net10.0 |
| Optimizely Graph (replaces Find) | 13.0.1 |
| EPiServer.Forms | 6.0.0 |
| Node.js (front-end build) | 16+ |
| Package | Version | Notes |
|---|---|---|
EPiServer.CMS |
13.0.1 | Core CMS |
EPiServer.Cms.UI.AspNetIdentity |
13.0.1 | Identity / auth |
EPiServer.CMS.TinyMce |
13.0.1 | Rich text editor |
EPiServer.Cms.UI.VisitorGroups |
13.0.1 | Visitor groups |
EPiServer.Commerce |
15.0.0-preview1 | Commerce |
EPiServer.Forms |
6.0.0 | Forms (requires explicit AddForms() in Startup) |
EPiServer.Hosting |
13.0.1 | Hosting infrastructure |
EPiServer.ImageLibrary.ImageSharp |
13.0.1 | Image processing |
EPiServer.Cms.UI.ContentManager |
13.0.1 | Built-in Content Manager UI |
Optimizely.Graph.Cms |
13.0.1 | Search / indexing (replaces EPiServer.Find) |
Optimizely.Graph.Cms.Query |
13.0.1 | C# fluent query API for Graph |
Advanced.CMS.AdvancedReviews |
2.0.0 | Editorial reviews |
SixLabors.ImageSharp |
3.1.12 | Image processing library |
Wangkanai.Detection |
6.11.3 | Device detection |
Serilog.AspNetCore |
6.1.0 | Structured logging |
| Removed package | Reason |
|---|---|
EPiServer.Find.Cms / .Commerce |
No CMS 13 version — replaced by Optimizely Graph |
EPiServer.ContentDeliveryApi.* |
Requires CMS UI Core < 13.0.0 |
EPiServer.Marketing.Testing |
Explicitly requires CMS < 13.0.0 |
EPiServer.Personalization.Commerce |
No CMS 13 version |
Geta.NotFoundHandler.Optimizely |
No CMS 13 version |
Geta.Optimizely.Categories |
No CMS 13 version |
EPiServer.Social.Framework |
Deprecated |
UNRVLD.ODP.VisitorGroups |
No CMS 13 version |
Advanced.CMS.BulkEdit / GroupingHeader |
No CMS 13 version |
EPiServer.Forms.Samples |
Requires Forms < 6.0.0 |
- .NET 10 SDK
- Node.js 16+
- SQL Server (local instance at
.) - IIS with ASP.NET Core Module v2
Copy src/Foundation/appsettings.example.json to src/Foundation/appsettings.Development.json and fill in real values:
{
"ConnectionStrings": {
"EPiServerDB": "Server=.;Database=<cms-db>;User Id=<user>;Password=<password>;TrustServerCertificate=True",
"EcfSqlConnection": "Server=.;Database=<commerce-db>;User Id=<user>;Password=<password>;TrustServerCertificate=True"
},
"Optimizely": {
"ContentGraph": {
"GatewayAddress": "https://cg.optimizely.com",
"AppKey": "<graph-app-key>",
"Secret": "<graph-secret-base64>",
"SingleKey": "<graph-single-key>"
}
}
}
appsettings.Development.jsonis gitignored — never commit it.
Set ASPNETCORE_ENVIRONMENT=Development on your IIS app pool so that appsettings.Development.json is loaded:
Import-Module WebAdministration
Set-ItemProperty 'IIS:\AppPools\<your-app-pool>' -Name 'environmentVariables' `
-Value @{name='ASPNETCORE_ENVIRONMENT';value='Development'}dotnet build src/Foundation/Foundation.csproj -c Release
dotnet publish src/Foundation/Foundation.csproj -c Release -o publish
Point your IIS site at the publish/ directory.
Run setup.cmd (Windows) or setup.sh (Mac/Linux) to create and seed the SQL databases.
setup.cmd
Default CMS login: admin@example.com / Episerver123!
Connection strings and Graph credentials are injected automatically by the DXP platform — no values need to be set in appsettings.json for hosted environments.
Foundation offers a starting point that is intuitive, well-structured and modular, allowing developers to explore CMS, Commerce, Personalization, Search and Navigation, Data Platform and Experimentation on the Optimizely platform.
Based on the public episerver/Foundation reference implementation.