---
title: Upgrade Optimizely Mail 10 to CMS 11
slug: cms-11/dev-docs/upgrading-optimizely-mail-10-to-cms-11
docTags: 
createdAt: 2026-07-22T19:45:18.981Z
---

## Alloy MVC site

1. Install **CMS 7.5** and **Optimizely Mail** through the Deployment Center.
2. Use Visual Studio to open your recently created website and press **Ctrl** + **Shift** + **S** to save your solution.
3. Change the project target framework to **4.6.1**.
4. Install:
   - `EPiServer.CMS.UI`
   - `EPiServer.CMS.Core`
   - `EPiServer.Framework`
   - `EPiServer.ServiceLocation.StructureMap`
   - `EPiServer.XForms`
5. If you have installed Search on your site, install `EPiServer.Search` and `EPiServer.Search.CMS`
6. Remove the solution references to `EPiServer.BaseLibrary` and `EPiServer.Implementation`.
7. Delete the following DLLs in the `bin` folder:
   - `EPiServer.BaseLibrary.dll`
   - `EPiServer.Implementation.dll`
   - `EPiServer.WorkflowFoundation.dll`

\{/*-*/}

7. Right-click on your project and select **Project properties** > **Build**. Set **Treat warnings as error** to **None**.
8. Fix the obsoleted or missing functions/APIs.
   - In `AlloyContentAreaRenderer.cs`, change:

```csharp
public AlloyContentAreaRenderer(IContentRenderer contentRenderer, TemplateResolver templateResolver, IContentAreaItemAttributeAssembler attributeAssembler)
            
: base(contentRenderer, templateResolver, attributeAssembler)
```

to

```csharp
public AlloyContentAreaRenderer(IContentRenderer contentRenderer, TemplateResolver templateResolver, IContentAreaItemAttributeAssembler attributeAssembler, IContentRepository contentRepository, IContentAreaLoader contentAreaLoader)
            
: base(contentRenderer, templateResolver, attributeAssembler, contentRepository, contentAreaLoader)
```

```javascript
*   In `ContactPage.cs`, change:  
    \[EmailAddress\] to \[Business.EmailAddress\]
*   In PropertyStringList:, remove function CreatePropertyControl().
*   Download [ClonedContentProvider.cs](/epiui/CMS/Content/contentassets/12869e5429c54816abd285c1c62254c2/clonedcontentprovider.cs,,188093?epieditmode=False) and replace the existing file in your solution with this.
*   Download [CategorizableExtensions.cs](/epiui/CMS/Content/contentassets/12869e5429c54816abd285c1c62254c2/categorizableextensions.cs,,188092?epieditmode=False) and replace the existing file in your solution with this.
*   Download [DependencyResolverInitialization.cs](/epiui/CMS/Content/contentassets/12869e5429c54816abd285c1c62254c2/dependencyresolverinitialization.cs,,188094?epieditmode=False) and replace the existing file in your solution with this.
*   Download [ServiceLocatorDependencyResolver.cs](/epiui/CMS/Content/contentassets/12869e5429c54816abd285c1c62254c2/servicelocatordependencyresolver.cs,,188096?epieditmode=False) and add it to folder Initialization and include it in your project.
```

9. Install `EPiServer.Packaging.UI`.
10. In the Visual Studio Package Manager Console, run:
    `Move-EPiServerProtectedModules`
11. Install `EPiServer.Mail 10.x.x`.
12. If you have Microsoft.AspNet.Mvc version="5.2.3":
    - Check `web.config` in Views, and change all version in section group:
      `sectionGroup name="system.web.webPages.razor"` from Version=2.0.0.0 to Version=3.0.0.0.
      **Example:**

```xml
<sectionGroup name="system.web.webPages.razor" type="System.Web.WebPages.Razor.Configuration.RazorWebSectionGroup, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
            
<section name="host" type="System.Web.WebPages.Razor.Configuration.HostSection, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
            
<section name="pages" type="System.Web.WebPages.Razor.Configuration.RazorPagesSection, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
            
</sectionGroup>
```

13. If you have Microsoft.AspNet.Mvc version="4.x.x" (**Note**: from CMS 11, MVC 5 is required!):
    - Check the `web.config` of the site, and update `bindingRedirect` of `System.Web.Mvc`.
      Example, change from:

```xml
<bindingRedirect oldVersion="0.0.0.0-4.0.0.0" newVersion="4.0.0.0"/>
```

to

```xml
<bindingRedirect oldVersion="0.0.0.0-4.0.0.1" newVersion="4.0.0.0"/>
```

14. In `EPiServerMail\\MasterPages\\Mail.Master`, replace:
    `<%= Page.DojoConfig(false, true) %>` with `<%= Page.ConfigureDojo(false, true, false) %>`.
15. If you have Search installed, change:
    return `SearchSettings.Config.Active;` to return `SearchSettings.Options.Active;`.

## Alloy Web Forms site

1. Install **CMS 7.5** and **Optimizely Mail** through the Deployment Center.
2. Use Visual Studio to open your recently created website and press **Ctrl** + **Shift** + **S** to save your solution.
3. Change the project target framework to **4.6.1**.
4. Install:
   - `EPiServer.CMS.UI`
   - `EPiServer.CMS.Core`
   - `EPiServer.Framework`
   - `EPiServer.ServiceLocation.StructureMap`
   - `EPiServer.XForms`
5. If you installed your site with Search, install `EPiServer.Search` and `EPiServer.Search.CMS.`
6. Remove the solution references to EPiServer.BaseLibrary and EPiServer.Implementation.
7. Delete the following DLLs from the `bin` folder:
   - `EPiServer.BaseLibrary.dll`
   - `EPiServer.Implementation.dll`
   - `EPiServer.WorkflowFoundation.dll`
8. Right-click on your project and select **Project properties** > **Build**. Set **Treat warnings as error** to **None**.
9. Fix the obsoleted or missing functions/APIs:
   - In the `PropertyStringList:`, remove the function `CreatePropertyControl()`.
   - Download the file [ClonedContentProvider.cs](/epiui/CMS/Content/contentassets/12869e5429c54816abd285c1c62254c2/clonedcontentprovider.cs,,188093?epieditmode=False) and replace the existing file in your solution with this.
   - Download the file [CategorizableExtensions.cs](/epiui/CMS/Content/contentassets/12869e5429c54816abd285c1c62254c2/categorizableextensions.cs,,188092?epieditmode=False) and replace the existing file in your solution with this.
   - Download the file [PageList.ascx](/epiui/CMS/Content/contentassets/12869e5429c54816abd285c1c62254c2/pagelist.ascx,,188095?epieditmode=False) and replace the existing file in your solution with this.
10. Install `EPiServer.Packaging.UI`.
11. In the Visual Studio Package Manager Console, run:
    `Move-EPiServerProtectedModules`
12. Install `EPiServer.Mail 10.x.x`.
13. Change:
    - `PermanentLinkMapStore to using EPiServer.Web.Internal; return DataFactory.Instance.GetPage(pageLink, languageSelector);`
    - to `return DataFactory.Instance.GetPage(pageLink, new LoaderOptions { new LanguageLoaderOption { Language = languageSelector.Language } });`
14. Add:
    - `using EPiServer.Templates.Alloy.Helpers;` to the top of the `ProductPageTemplate.aspx.cs` file
    - `using EPiServer.Templates.Alloy.Helpers;` to the top pf the `MainNavigation.ascx.cs` file
15. Right-click on your project and select **Project properties** > **Build Events**. In **Post-build event command line**, add:
    `"$(MSBuildBinPath)\\msbuild.exe" "$(ProjectDir)\[MSBuild\]\\Scripts.xml"`
    `"$(MSBuildBinPath)\\msbuild.exe" "$(ProjectDir)\[MSBuild\]\\Stylesheets.xml"`
16. In `EPiServerMail\\MasterPages\\Mail.Master`, replace:
    `<%= Page.DojoConfig(false, true) %>` with `<%= Page.ConfigureDojo(false, true, false) %>`.
17. If you have Search installed, change:
    `return SearchSettings.Config.Active;` to `return SearchSettings.Options.Active;`.

### Troubleshoot

- Check that you have not removed `EPiServer.Mail.Sources.EPiServerCommunitySearch.dll` from the `bin` folder.
- You must be a member of one of the **MailAdmins**, **MailEditors**, or **Administrators** groups.
- If your log is not working, search for `ILog` and change it to `ILogger`, and remove `using LogManager = log4net.LogManager;`. Also, change: `Logger.DebugFormat` to `Logger.Debug` and `Logger.ErrorFormat` to `Logger.Error`.
