Optimizely Content Management System (CMS 12) was built to support ASP.NET Core and is very similar to CMS 11 to make upgrading as simple as possible. Upgrading to CMS 12 does not require a data migration, and most packages and APIs are identical, so you could upgrade from the NuGet Package Manager.
ASP.NET Core is different from .NET 4 in significant ways - including how configuration works, serialization, dependency injection, logging, and other important differences - so before you upgrade, see [Why upgrade to Optimizely Content Management System (CMS 12)?](🔗) and related topics. See also [Upgrade to ASP.NET Core](🔗) and [About .NET](🔗)
At a high level, the migration has three main phases:
Run the [Upgrade Assistant](🔗).
The Upgrade assistant is a [dotnet tool](🔗) from Microsoft that converts a .NET 4 codebase to ASP.NET Core. CMS extended the tool specifically for CMS with [additional rules and code fixes](🔗).
Fix code issues.
The Upgrade assistant takes care of a lot of basic issues, but usually leaves you with several remaining issues depending on the codebase. Fixing remaining code issues might be trivial or it might not. For example, you may have dependencies on other .NET 4 components that do not support ASP.NET Core, in which case you need to find replacements or live without those components. You may have a lot of .NET 4 code of your own to upgrade which the Upgrade assistant cannot help you with. You may depend on [deprecated CMS packages](🔗).
The [Breaking changes in Optimizely Content Management System (CMS 12)](🔗) can help you figure out where you may need to do some work. You could also run the Upgrade assistant to see what you are left with.
Upgrade the service environment.
After the codebase is upgraded to ASP.NET Core, and everything works locally, DXP customers need to migrate their service environment to the latest version using migration tool that will soon be available in [the portal](🔗).
## Related topics
[Optimizely ASP.NET Core information hub](🔗)
[Optimizely ASP.NET Core Apps](🔗)
[Upgrade to ASP.NET Core](🔗)