Kentico 12.0 (released November 27, 2018)
System requirement changes
- The minimum required version of Microsoft .NET Framework is now 4.6.1.
- Removed support for Visual Studio 2015 development environments.
- Kentico 12 requires version 2.0.1 or newer of the Microsoft.CodeDom.Providers.DotNetCompilerPlatform NuGet package (.NET Compiler Platform ("Roslyn") compiler). When upgrading from older versions, the package is updated automatically.
- MVC – New page builder feature that allows content editors and other non-technical users to create content using widgets on MVC sites directly from the Pages application. Developers need to create a suitable set of widgets for the site.
- MVC – New form builder feature for composing forms on MVC (content-only) websites.
- Allows the creation of forms containing "smart fields", which are only displayed on repeated views of a form, as a replacement for other fields that were already filled in by a given visitor. See Using smart fields in forms.
- Developers can extend the available form options by creating custom form components, validation rules, visibility conditions, etc. See Form builder development.
- Forms – The On-line form web part and widget has a new property that determines whether the HTML output of the resulting form consists of a table or <div> elements. The property only applies to forms that use the automatically generated layout (forms with a custom layout are not affected).
- Coupon codes – Transformations for displaying coupon codes added now provide an IsApplied data property, which can be used to evaluate whether codes are still valid. This functionality was also added for the previous version in hotfix 11.0.29.
Social & Community
- Facebook integration – Added support for app secret proof parameters when communicating with integrated Facebook apps. See Connecting Kentico to social media and Facebook authentication. This functionality was also added for the previous version in hotfix 11.0.8.
All bugs fixed within the Kentico 11 hotfixes are included in version 12. See the Bugtracker on DevNet for a full list (click Fixed Bugs).
Breaking changes (functionality, data structure, API)
NuGet packages for MVC development
- The NuGet integration packages used for the development of MVC sites were reorganized. Most of the packages will not be released for Kentico 12, and their content is either combined into the new Kentico.AspNet.Mvc package, or replaced by API provided as part of the Kentico.Libraries package.
- Kentico.Activities – l
- Kentico.ContactManagement – tracking of contacts in MVC projects is now performed via the CMS.ContactManagement API provided by Tracking contacts on MVC sites. . See
- Kentico.Ecommerce – to work with product data and perform other e-commerce actions, use the CMS.Ecommerce API provided by the Kentico.Libraries NuGet package. See the Developing on-line stores chapter.
- Kentico.MediaLibrary – tDisplaying content from media libraries. Note that the GetPermanentUrl method now generates URLs with extensions based on the site's URLs and SEO -> Files friendly URL extension setting. See
- Kentico.Newsletters – to manage email feed subscriptions in MVC projects, use the CMS.Newsletters API provided by the Kentico.Libraries NuGet package. See Handling newsletter subscriptions on MVC sites.
- Kentico.Search – to search through locally stored indexes in MVC projects, call the SearchHelper.Search method available in the CMS.Search namespace (provided as part of Building a search interface for local indexes in MVC. . See
- Installation of the new Kentico.AspNet.Mvc package does NOT automatically perform certain actions, which were done by the original Kentico.Web.Mvc package. Most importantly:
- Enabling of individual Kentico MVC integration features (within an automatically added ApplicationConfig.cs file). All such features need to be enabled manually on application start using the methods of the ApplicationBuilder instance. An empty ApplicationConfig.cs file is included within new MVC projects created via the installer.
- Setting the runAllManagedModulesForAllRequests="true" attribute for the <modules> element in the <system.webServer> section of the MVC project's main web.config file. Instead, individual handlers are added for specific paths that require custom extensions (getattachment, getmedia, etc.). If you require the runAllManagedModulesForAllRequests attribute, you need to enable it manually.
- The NotFoundHandler feature for handling of 404 errors on MVC sites was removed. We recommend handling 404 errors via IIS.
- The demo code files for responsive images were removed from the App_Code (or Old_App_Code) folder of the Kentico web project. Instead, the same code samples are available under the CodeSamples folder in the Kentico program files directory, and integrated into the default web project as part of the removable CMS.DancingGoat.Samples.dll assembly.
- When retrieving page data using the REST service, the CombineWithDefaultCulture parameter is now always set to false when called together with the AllCultures culture constant. Requests with the AllCultures constant will retrieve page versions in all available cultures regardless of the CombineWithDefaultCulture parameter being set or not.
Social & Community
- The Friends and Messaging features were removed from the system, along with all related components (web parts, widgets, email templates, form controls). See the Upgrade instructions for detailed information about the removed web parts.
- The Facebook integration functionality was updated according to changes and new security requirements in the Facebook API. See Connecting Kentico to social media and Facebook authentication. This updated functionality was also added for the previous version in hotfix 11.0.42.
- Integration with the goo.gl URL shortener for social media posts was removed from the system. The Google URL Shortener service is discontinued and its API will stop working after March 30, 2019. Before upgrading existing instances to Kentico 12, you need to remove all usage of the goo.gl shortener (see Upgrading to Kentico 12 for details).
- The GetBoardMessagesCount transformation method was removed (both the ASCX transformation method and the macro method for Text / XML transformations). If you need to display the number of messages posted on a board, implement a custom transformation method or macro method and call the BoardMessageInfoProvider.GetMessagesCount method within its code (located in the CMS.MessageBoards namespace).
- The following columns were removed from the CMS_PageTemplate database table due to removing of the obsolete MVC functionality:
- Columns that reference order addresses (OrderBillingAddressID, OrderCompanyAddressID, OrderShippingAddressID) were removed from the COM_Order database table. Instead, each order address record in the COM_OrderAddress table now references the related order via the AddressOrderID and AddressType columns.
Social & Community
- The following database tables and columns were removed along with the Friends and Messaging features:
- Community_Friend table
- Messaging_ContactList table
- Messaging_IgnoreList table
- Messaging_Message table
- UserMessagingNotificationEmail column from the CMS_UserSettings table
- Community_Friend table
- The FacebookAccountPageUrl column was removed from the SM_FacebookAccount database table.
Search the API changes page on DevNet to find all possible breaking changes in the API.
MVC – Platform
- The approach used to register Kentico services into dependency injection containers on MVC sites was changed. Instead of registering service types from assemblies with the Kentico. prefix, you need to implement on-the-fly registration for all services from the Kentico API (integrated via the Kentico.Libraries NuGet package). Additionally, the Kentico.Core NuGet package will not be released for Kentico 12 – if you wish to use interfaces for custom service or repository classes, create your own equivalents of the original IService and IRepository interfaces. See Initializing Kentico services with dependency injection.
- Extension methods for registering specific routes used by Kentico features on MVC sites are now obsolete (such as MapActivitiesRoutes, MapOpenedEmailHandlerRoute and MapEmailLinkHandlerRoute). Instead, the Kentico().MapRoutes() extension method now automatically maps all required routes based on the set of features enabled via the ApplicationBuilder instance. As a result, enabling of Kentico MVC features must always be done before routes are registered into the application's RouteTable.
- The initialization of the Kentico API was moved to an earlier phase (Application_Start) for MVC applications that use the Kentico.AspNet.Mvc integration package. As a result, it is no longer possible to assign handlers to the ApplicationEvents.Initialized event within the Application_Start method of the HttpApplication class in Global.asax. If you used this approach, instead assign the event handlers within the OnInit method of a custom module class.
MVC – On-line marketing
- The Kentico().MapActivitiesRoutes() extension method, which maps page activity logging routes on MVC sites, is now obsolete. Instead, call the UseActivityTracking method of the ApplicationBuilder instance to enable the activity tracking feature, and the general Kentico().MapRoutes() method then automatically registers the required routes. See Logging activities on MVC sites.
- The Kentico().MapOpenedEmailHandlerRoute() and Kentico().MapEmailLinkHandlerRoute() extension methods, which map marketing email tracking routes on MVC sites, are now obsolete. Instead, call the UseEmailTracking method of the ApplicationBuilder instance to enable the email tracking feature, and the general Kentico().MapRoutes() method then automatically registers the required routes. See Tracking marketing emails on MVC sites.
- The way web farm synchronization tasks are registered and created within the system has changed. In Kentico 12, web farm tasks are represented by strongly typed classes that inherit from the WebFarmTaskBase base class. The classes encapsulate both the task's synchronization data and its execution logic. See Creating custom web farm synchronization tasks for more information and an example.
- The Attachment class is now obsolete and should be replaced with the DocumentAttachment class in any custom code. For all page types containing File or Attachment fields, Info and InfoProvider classes should be re-generated. Alternatively, you can replace occurrences of the Attachment class in the code of these page types manually.
- The ProductPrices and ProductCatalogPrices classes representing calculated prices no longer provide setters for their properties. If you need to update an existing object of this type, create a new instance of the given class with the required values set in the constructor.
- The IAddress interface unifying the AddressInfo and OrderAddressInfo classes was removed. Use the AddressInfo class to work with customer addresses and the OrderAddressInfo class to work with order addresses.