Upgrade to Kentico 8.1: Breaking changes

As you may know already, we’re going to release updated versions of Kentico more often. The next version will be a minor release named Kentico 8.1. You are probably sitting at your desk right now wondering, “How easy will it be to upgrade to this new version?” This article describes how we will approach breaking changes in Kentico 8.1 as well as in other minor versions.
What is the breaking change? I believe that there is no simple answer to this question. Almost every change in the system can be a potential issue for someone. Our goal is to prepare the easiest possible way for you to upgrade to the latest version of Kentico without breaking your website or integration. In other words, applying an upgrade procedure for a minor version should not be more difficult than implementing a hotfix today.
The way in which we are going to achieve this is by dividing the changes in the Kentico code and database into two groups:
  • Safe changes – those we will perform without any limitations because we believe that they will not cause any problems, or, the changes are covered by an upgrade procedure (e.g. code changes which are covered by a Kentico code upgrade tool).
  • Problematic changes – these can potentially create some issues for you, so we will keep their number at a minimum and they will be all documented.

Safe changes

The following list describes safe changes:
  • Library: Add new public member or public type to a class.
  • Library: Move or rename a public type.
  • Library: Move or rename a public static member.
  • Library: Rename public non-static member.
  • Library: Add new protected member.
  • App_Code UI extender: Add new protected member.
  • App_Code Transformation: Add new member.
  • ASP.NET page: All changes.
  • ASP.NET control: Base class – see library. Members not included in base class - all changes.
  • 3rd party library: No restrictions – calls should be done through Kentico API.
  • Default data in the database: All changes.
  • JavaScript: All changes.
  • Database: Add new table.
  • Database: Add new column (column has default value or can be NULL).
  • Database: Changes in procedures and functions which are not part of any default report.
  • UI CSS Styles: All changes.
  • Output HTML Pages: All changes.
  • Sample sites: All changes.
  • XML definition of Unigrid: Add new configuration.
  • Web.config application key: Add new key.
  • Setting key: Add new setting key.
  • Permission: Add new permission.
  • Module: Add new module.
  • REST service: Add new functions.
  • Other web services: All changes.

Problematic changes

The following list describes problematic changes:
  • Library: Remove member/type.
  • Library: Change signature to incompatible signature.
  • Library: Change or remove protected member.
  • App_Code extender: Change or remove member.
  • App_Code transformation: Change or remove member.
  • ASP.NET control: See library.
  • 3rd party library: Direct reference to it.
  • Database: Table schema change or table remove.
  • Database: Column change (name, type) or remove.
  • Database: Any change in object used in a sample report.
  • Output HTML Controls: All changes.
  • Web.config key: Change of the name of the web.config key or remove web.config key.
  • Setting key: Change of the name of the setting name or remove setting key.
  • Permission: Permission name change or remove permission.
  • Module: Module name change or remove module.
  • Code name or GUID: All changes.
  • REST service: Change or remove function.
  • Interface: All changes.
What is your opinion on this? Are there any safe changes that you think will be problematic to your projects? Are we missing anything important in the list? Any feedback would be highly appreciated. You can either leave a comment or contact me directly at dominikp@kentico.com.
Share this article on   LinkedIn

Dominik Pinter

I'm a fan of cloud computing (primarily Windows Azure) and I really like to dig into web application security. My blog is focused on everything related to Kentico, .NET Framework, Cloud platforms and web application security.