There is no data migration required; updating to Optimizely Content Management System (CMS) version 11 is no different from updating to the feature updates delivered previously via NuGet. To make sure the upgrade is as smooth as possible, there are a few steps that you may want to take that are discussed in the next sections.
## Breaking changes, what are they and how to deal with them
A breaking change is a change that might cause other components to fail. When a breaking change is done to the signature of a method/class/interface, the old signature is often kept intact but set as obsolete and may cause a warning message in Visual Studio. As long as the Visual Studio project setting "Treat Warnings as Errors" is not enabled in Visual Studio, you can postpone fixing these warnings to a later time.
Classes that expose constructors that take dependencies are normally deleted without an obsolete warning in major releases, since the compiler gives enough information about what to change. Keeping them makes dependency injection complex since there are multiple constructors to choose from that, over time, might or might not overlap.
In each major version, old obsolete methods are removed permanently to make sure that the API is kept clean and usable over time, so even if you can postpone fixing warning messages, it is good practice to make sure all warning messages are fixed before upgrading to a major version. For CMS 11, many methods that were made obsolete in 10.0 are now deleted.
See [Breaking changes (CMS 11)](🔗).
## Upgrade apps
Apps (add-ons) managed via Visual Studio can be upgraded together with the platform via NuGet. Apps that are installed via the user interface have to be upgraded via the user interface.
It is recommended that apps that are installed via the user interface are converted to NuGet apps after the upgrade to CMS 11. A tool is available that can automatically convert apps that were previously managed via the user interface to be managed as NuGet packages via Visual Studio. For more instructions on how to convert user interface apps to NuGet apps, see Linus Ekström's blog post [Upgrading your site and add-ons to EPiServer CMS 8 pre-release](🔗).
Incompatible apps installed via the user interface must be disabled to be able to reach the user interface and the update functionality. An exception message is shown with information on how to disable an app that blocks startup.