Tagged: .NET10

Optimizely : Missing Language Manager Gadget Fix in CMS 12 After Upgrading to .NET 10

Recently, while upgrading an Optimizely CMS solution to .NET 10, we came across an issue where the Language Manager gadget completely disappeared from CMS Edit Mode.

The application was functioning normally, content editing worked as expected, and there were no build or startup errors. However, editors noticed that the Language Manager gadget was no longer available.

What made the issue difficult to troubleshoot was the complete absence of meaningful error messages.

In this blog, I will walk through the issue, the troubleshooting journey, and the simple configuration change that ultimately resolved it.

Environment

The affected solution was running the following versions:

  • .NET 10
  • Optimizely CMS 12.34.4
  • EPiServer.CMS.UI 12.34.4
  • EPiServer.Labs.LanguageManager 5.5.3

Immediately after the upgrade, the Language Manager gadget disappeared from the CMS editing interface.

Symptoms

Editors reported the following:

  • Language Manager gadget missing from Edit Mode
  • Gadget not available in the “Add Gadgets” list
  • Reinstalling the package did not help
  • Browser cache clearing had no effect
  • Application started successfully without errors

The issue was consistent across environments and users.

Initial Checks

As part of the troubleshooting process, we verified the obvious areas first.

Verify Package Installation

The Language Manager package was installed correctly.

<PackageVersion Include="EPiServer.Labs.LanguageManager" Version="5.5.3" />

No package restore issues were identified.

Verify Language Configuration

We confirmed that all required languages were enabled within Optimizely Admin Mode.

Since multilingual content was configured correctly, the problem was clearly elsewhere.

What Was Causing the Issue?

After working with Optimizely Support, the investigation pointed towards a .NET build configuration setting that was affecting assembly discovery.

The application itself was running correctly, but dependency information required by certain Optimizely add-ons was being trimmed during the build process.

Because of this, Language Manager was not being initialized correctly, resulting in the gadget disappearing from the CMS UI.

The tricky part was that there were:

  • No compilation errors
  • No startup failures
  • No obvious exceptions

The feature simply disappeared.

The Fix

The issue was resolved by adding the following property to the project file:

<PropertyGroup>
<TrimDepsJsonLibrariesWithoutAssets>false</TrimDepsJsonLibrariesWithoutAssets>
</PropertyGroup>
 

After adding the setting:

  1. Rebuild the solution
  2. Redeploy the application
  3. Restart the site

The Language Manager gadget immediately became visible again.

Happy Optimizing! 
0

Optimizely: Upgrade Opti-ID and .NET 10 in CMS 12

Many Optimizely customers are planning their roadmap around a future migration to Optimizely CMS 13. As a result, upgrades such as Opti ID adoption and .NET modernization are often postponed until the CMS 13 project begins.

However, waiting for CMS 13 is not necessary.

Organizations running Optimizely CMS 12 can upgrade to Opti ID and move to .NET 10 today, gaining immediate security, performance, and operational benefits while reducing the complexity of a future CMS 13 migration.

Why Modernize on CMS 12?

Instead of combining multiple transformations into a single CMS 13 project, organizations can:

  • Improve security immediately
  • Standardize authentication
  • Modernize the application platform
  • Reduce future migration complexity
  • Enable newer Optimizely SaaS capabilities

A phased modernization approach is typically lower risk than a large-scale platform upgrade.

Part 1: Implementing Opti ID in CMS 12

What is Opti ID?

Opti ID is Optimizely’s centralized authentication platform that provides:

  • Single Sign-On (SSO)
  • Multi-Factor Authentication (MFA)
  • Centralized user administration
  • Unified access across Optimizely products
  • Improved security and compliance

Required NuGet Packages

Depending on your CMS 12 version, install or upgrade the following packages.

Core CMS Packages

Install-Package EPiServer.CMS
Install-Package EPiServer.CMS.AspNetCore
Install-Package EPiServer.CMS.UI

Identity Packages

Install-Package EPiServer.CMS.UI.AspNetIdentity
Install-Package Microsoft.AspNetCore.Authentication.OpenIdConnect
Install-Package Microsoft.Identity.Web

Always align package versions with the Optimizely-supported package matrix for your CMS version.

Step 1: Enable Opti ID in Optimizely

Within the Optimizely Admin Portal:

  1. Navigate to Administration
  2. Enable Opti ID
  3. Configure organization users
  4. Assign product access
  5. Configure MFA policies

Step 2: Configure Authentication

Update Program.cs.

Add Authentication Services

builder.Services
.AddAuthentication(options =>
{
options.DefaultScheme = CookieAuthenticationDefaults.AuthenticationScheme;
options.DefaultChallengeScheme = OpenIdConnectDefaults.AuthenticationScheme;
})
.AddCookie()
.AddOpenIdConnect(options =>
{
options.Authority = configuration["Authentication:Authority"];
options.ClientId = configuration["Authentication:ClientId"];
options.ClientSecret = configuration["Authentication:ClientSecret"];

options.ResponseType = "code";

options.SaveTokens = true;
});
 

Step 3: Configure appsettings.json

{
"Authentication": {
"Authority": "https://login.optimizely.com",
"ClientId": "xxxxx",
"ClientSecret": "xxxxx"
}
}

Step 4: Configure Authorization

Map Opti ID users to CMS roles.

Example:

services.AddAuthorization(options =>
{
options.AddPolicy("CmsEditors",
policy => policy.RequireRole("WebEditors"));
});
Validate:
  • WebEditors
  • Administrators
  • ContentApprovers
  • MarketingUsers

Part 2: Upgrading CMS 12 to .NET 10

Why Upgrade?

Benefits include:

  • Improved performance
  • Better security
  • Long-term support alignment
  • Reduced technical debt
  • Better cloud-native capabilities

Step 1: Upgrade Development Environment

Install:

  • .NET 10 SDK
  • Visual Studio 2026 (or latest supported version)

Step 2: Update Project Files

Update:

<TargetFramework>net10.0</TargetFramework>

Step 3: Upgrade NuGet Packages

CMS Packages

<PackageReference Include="EPiServer.CMS.Core" Version="12.24.0" />
<PackageReference Include="EPiServer.CMS.UI" Version="12.34.4" />

Microsoft Packages  

<PackageReference Include="Microsoft.Extensions.*" />
<PackageReference Include="Microsoft.AspNetCore.*" />
<PackageReference Include="Microsoft.Identity.Web" />

Hope this helps.

Happy Optimizing!
0