Viet Anh Nguyen
Mar 31, 2026
  586
(3 votes)

Upgrade Guide: Commerce 14 to Commerce 15 preview

This document provides step-by-step instructions to upgrade a Commerce site from Commerce 14/CMS 12 to Commerce 15/CMS 13 preview. 

Overview 

This upgrade includes: 

  • Commerce: 14.15.3 → 15.0.0-preview1 

  • CMS: 12.31.2 → 13.0.0-preview4 

  • .NET: 8.0 → 10.0 

Prerequisites 

  • Visual Studio 2022 with .NET 10.0 SDK 

  • SQL Server (LocalDB or full instance) 

  • Basic understanding of Optimizely Commerce and CMS 

Step 1: Create a new Commerce 14 empty site from template 

To create a baseline Commerce 14 site from template: 

  • Run the template command:  
dotnet new epi-commerce-empty --name CoCo14 --force
  • Open the project, restore packages, and build it 

Verification: Ensure the site is running without errors before proceeding. 

Step 2: Update Project Configuration 

File Modified: [CoCo14.csproj] 

Target Framework 

<TargetFramework>net10.0</TargetFramework>  <!-- was net8.0 -->

Package References 

Before (Simple metapackage approach): 

<PackageReference Include="EPiServer.CMS" Version="12.31.2" /> 
<PackageReference Include="EPiServer.Commerce" Version="14.15.3" /> 

After (Explicit package references): 

Commerce packages: 

<PackageReference Include="EPiServer.Commerce" Version="15.0.0-preview1" />

CMS packages (all version 13.0.0-preview4): 

<PackageReference Include="EPiServer.OptimizelyIdentity" Version="13.0.0-preview4" /> 
<PackageReference Include="EPiServer.CMS.UI.AspNetIdentity" Version="13.0.0-preview4" /> 
<PackageReference Include="Optimizely.Graph.Cms" Version="13.0.0-preview4" /> 
<PackageReference Include="EPiServer.Cms.UI.ContentManager" Version="13.0.0-preview4" /> 
<PackageReference Include="EPiServer.Hosting" Version="13.0.0-preview4" /> 
<PackageReference Include="EPiServer.Cms.UI.VisitorGroups" Version="13.0.0-preview4" /> 
<PackageReference Include="EPiServer.CMS.Shell.UI" Version="13.0.0-preview4" /> 
<PackageReference Include="EPiServer.CMS.UI" Version="13.0.0-preview4" /> 
<PackageReference Include="EPiServer.ImageLibrary.ImageSharp" Version="13.0.0-preview4" /> 
<PackageReference Include="EPiServer.Events.ChangeNotification" Version="13.0.0-preview4" /> 
<PackageReference Include="EPiServer.Cms.AspNetCore.TagHelpers" Version="13.0.0-preview4" /> 
<PackageReference Include="EPiServer.Cms.AspNetCore.HtmlHelpers" Version="13.0.0-preview4" /> 
<PackageReference Include="EPiServer.Cms.TinyMce" Version="13.0.0-preview4" />


Step 3: Update Startup Configuration 

File Modified: [Startup.cs] 

Update Service Registration 

Before (Commerce 14 - Simple metapackage registration): 

services 
    .AddCmsAspNetIdentity<ApplicationUser>() 
    .AddCommerce() 
    .AddAdminUserRegistration() 
    .AddEmbeddedLocalization<Startup>(); 

 
After (Commerce 15 - Explicit service registration): 

services 
    .AddCmsHost() 
    .AddCmsCore() 
    .AddCmsAspNetIdentity<ApplicationUser>() 
    .AddCmsHtmlHelpers() 
    .AddCmsTagHelpers() 
    .AddCmsUI() 
    .AddAdmin() 
    .AddCmsImageSharpImageLibrary() 
    .AddTinyMce() 
    .AddContentGraph() 
    .AddContentManager() 
    .AddCommerce() 
    .AddVisitorGroupsMvc() 
    .AddVisitorGroupsUI() 
    .AddAdminUserRegistration() 
    .AddEmbeddedLocalization<Startup>(); 
 
services.Configure<DataAccessOptions>(options => 
{ 
    options.UpdateDatabaseCompatibilityLevel = true; 
}); 


Step 4: Update Application Settings 

File Modified: [appsettings.json] 

Add the following Optimizely configuration section for Content Graph 

"Optimizely": { 
  "ContentGraph": { 
    "GatewayAddress": "https://cg.optimizely.com", 
    "AppKey": "<app-key>", 
    "Secret": "<secret>", 
    "SingleKey": "<single-key>", 
    "AllowSendingLog": "true" 
  } 
} 


Important
: Replace the placeholder values (<app-key><secret><single-key><instance-id>) with your actual credentials from the Optimizely portal.

Step 5: Restore, Build, and Run Migration 

After making all the changes: 

  • Restore packages: 

dotnet restore
  • Build the project: 

dotnet build
  • Run the application: 

    • Press F5 in Visual Studio, or 

    • Run dotnet run from the command line 

  • Run Commerce migration: 

    • This will update the database schema and migrate data to Commerce 15 format 


Step 6: Verify the Upgrade
 

Important Notes 

Code Compatibility 

  • Depending on your Commerce solution, you may need to update source code due to API changes in CMS 13 and Commerce 15. See the CMS 13 Pre-Release overview for details. 

  • Commerce 15-compatible versions for popular Commerce add-ons will be released later 

Preview Versions 

  • Commerce 15.0.0-preview1 and CMS 13.0.0-preview4 are pre-release versions 

  • Not recommended for production use 

  • Use for evaluation and testing purposes only 

Additional Resources 

Mar 31, 2026

Comments

jamesgarforth
jamesgarforth Apr 9, 2026 04:14 PM

Hi there,

I'm following these instructions however the dotnet restore is failing on my build, specifically due to the error

    C:\projects\commerce-15\commerce-15.csproj : error NU1102:
      Unable to find package EPiServer.Commerce.ODP with version (= 15.0.0-preview1)
        - Found 52 version(s) in optimizely [ Nearest version: 14.45.3 ]
        - Found 0 version(s) in nuget.org

It would appear no pre-release version of the Commerce.ODP package has been published and the preview version depends on this.

Am I doing something wrong?

Thanks,

James

Viet Anh Nguyen
Viet Anh Nguyen Apr 10, 2026 03:05 AM

Hi James,
EPiServer.Commerce.ODP is not included in the preview1 release, it will be added to the final version 

jamesgarforth
jamesgarforth Apr 10, 2026 09:27 AM

Thanks Viet Anh,

I have managed to get a commerce 15 site running locally now. 

If others are running into the same issue I was, my resolution was to go to the installed package for the preview version in .nuget\packages\episerver.commerce\15.0.0-preview1 and update episerver.commerce.nuspec to modify the dependency for EPiServer.Commerce.ODP to be <dependency id="EPiServer.Commerce.ODP" version="[14.0.0, 15.0.0-preview1]" />

Viet Anh Nguyen
Viet Anh Nguyen Apr 14, 2026 02:03 AM

Thanks James,

Yes, ODP and other addons (like Service API) packages will be published soon after the Commerce Core packages.

Please login to comment.
Latest blogs
Optimizely migration from CMS 12 to CMS 13

Upgrading from Optimizely CMS 12 to CMS 13 alongside moving the runtime from .NET 8.0 to .NET 10.0 is far more than a routine version upgrade. It i...

Sanjay Kumar | Apr 24, 2026

Optimizely CMS 13 host(s) management

One of the features I found most impressive is the way Optimizely CMS 13 handles hosts with clear definition and intent. It may sound low level...

Harish Yadav | Apr 23, 2026

Building Opal tools on Optimizely Connect Platform: a Mailchimp walkthrough

About the Mailchimp Opal Tool The  Mailchimp Opal Tool  is an Optimizely Connect Platform app that brings Mailchimp audience operations directly in...

Sanjay Kumar | Apr 22, 2026

📣 Build, Automate, and Scale Content Operations with CMS REST API v1 - now live!

Now available for both CMS13 and CMS SaaS We are excited to announce the  v1 release of our CMS REST API —a major milestone in delivering a stable,...

Kathy Copeland | Apr 21, 2026

Introducing AI Assistant v4 for Optimizely CMS 12 and 13

Epicweb AI Assistant v4.0 adds full support for Optimizely CMS 13 on .NET 10 while staying compatible with CMS 12 on .NET 8, plus new AI Chat tools...

Luc Gosso (MVP) | Apr 20, 2026 |