Kentico Xperience 13 (released October 27, 2020)
System requirement changes
- The minimum required version of Microsoft .NET Framework is now 4.8 (for the Xperience administration application and MVC 5 live site projects).
- Ended support of Internet Explorer (11) for the Xperience administration interface and live site components.
- Microsoft SQL Server for Xperience databases:
- Version 2008 R2 is no longer supported (2012 or newer is required)
- Added support for version 2019
- Server operating systems:
- Ended support for: Windows 7, Windows 8 (8.1 remains supported), Windows 2008 R2
- Added support for Windows Server 2019
- Added support for developing live site applications using ASP.NET Core.
- Page URLs and routing
- New content tree-based URL routing mode. The system can now automatically generate URLs for pages based on their position in the content tree and the configuration of their page types. See Content tree-based routing.
- If you want to switch from custom routing based on URL patterns to content tree-based routing while preserving the former URLs, you can do so by manually executing a prepared code snippet. See Enabling content tree-based routing.
- Added support for configuring the format of URLs on multilingual sites using the content tree-based routing mode. For multilingual URLs, you can use separate domains or language prefixes. See Configuring URLs for multilingual websites.
- New Former URLs application, which enables automatic tracking of changes made to the URL paths of pages (e.g. by changing a URL slug). Old URLs are stored and the system handles redirection to the current URLs. See Managing page URLs.
- New content tree-based URL routing mode. The system can now automatically generate URLs for pages based on their position in the content tree and the configuration of their page types. See Content tree-based routing.
- Added support for creating linked pages on MVC and ASP.NET Core sites. Linked pages allow content to be reused in various scenarios, for example to simplify editing in the content tree when data stored in a page is displayed within multiple parts of the website.
- New navigation feature for page types and individual pages, which allows content editors to choose which pages are displayed in navigation menus. For more information, see Building website navigation.
- Improved support for editing and handling metadata for pages. The new metadata feature for page types allows administrators to control which pages provide metadata editing, and developers can use new extension methods to render metadata tags when displaying page content.
- Added settings and support for reflecting page permissions on the live site. Page-level permissions are now automatically reflected on sites using the content tree-based routing mode. It is also possible to create authenticated sections that are enforced on the live site.
- On sites using custom routing, developers can utilize methods from the Xperience API to check page permissions and authentication and authorization of users to access pages. See Implementing page permission checks.
- The language version comparison mode used for viewing and editing two different language versions of pages side-by-side is now supported for MVC and ASP.NET Core sites.
- MVC and ASP.NET Core sites now support validation of HTML, CSS, links, and accessibility for pages via built-in validators.
- New security web.config key for accepting all certificates when validating website code or accessibility (e.g. CSS validation) using a 3rd party validation service over a secured protocol (HTTPS): CMSValidationAcceptAllCertificates. See Reference - Web.config application keys.
- New IPageRetriever service that simplifies loading of page data within live site applications. Supports dependency injection, automatically provides caching, and ensures default parameterization of the resulting page query for common scenarios.
- Page URLs and routing
- Improved API for getting the live site URLs of pages from the Xperience content tree (new IPageUrlRetriever service and extension methods). For more information, see Displaying page content.
- New system constraint SiteCultureConstraint that automatically detects and sets the current culture for each request on multilingual websites that use custom routing based on URL patterns. The constraint has a property HideLanguagePrefixForDefaultCulture that enables hiding language prefixes for default content culture URLs.
- New Kentico().PageCanonicalUrl() extension method that helps developers render Canonical link elements for pages with alternative URLs or for linked pages. The method replaces the PageMainUrl() extension method used previously for this purpose. As a result, the PageMainUrl() method is now obsolete.
- Media libraries – Improved API for retrieving and configuring URLs of media library files. For more information, see Displaying content from media libraries.
- Page attachments – Improved API for retrieving and configuring URLs page attachments. For more information, see Displaying page attachments.
- The system now provides the Rich text widget out-of-the-box (for Kentico 12, the widget was available through a NuGet package as an extension). The Rich text widget allows content editors to add stylized text content to pages. See Using the Rich text widget. The same rich text editor can also be used by developers within custom components, as described in Configuring the rich text editor for page builder.
- Developers can now limit which sections are allowed in page builder editable areas (in addition to limiting widgets). See Creating pages with editable areas.
- New API for rendering widgets directly within the views of pages or other page builder components. For more information, see Rendering widgets in code and Extending widgets.
- The API now allows developers to add visibility conditions to the properties of page and form builder components (widgets, page templates, personalization conditions, etc.). For more information, see Adding visibility conditions for builder component properties.
- Added support for accessing the data of the current page within custom controller actions that handle POST requests (for both pages and page builder components, such as widgets, sections, and page templates). When handling such requests, the persisted page data can be accessed via the new IPageDataContextRetriever service. For more information, see Developing widgets, Developing page builder sections, Developing page templates.
- Added support for accessing the properties of page builder components (widgets, sections, page templates) from within custom controller actions that handle POST requests. For more information, see Defining widget properties.
- New Multiple choice form component that offers checkbox options, and allows users to select multiple options at the same time. See Reference - System form components.
- Development – Added dependency injection support for classes that implement form components. Components can now automatically resolve dependencies from the application's service container.
- Site domains
- Domain aliases can now specify alternative Presentation URLs for the live site (MVC). See Setting domain names for sites.
- You can now specify a Preview presentation URL for each Administration domain name alias. The Preview presentation URL is then used when previewing live site content within the scope of the administration interface. This can be useful, for example, when preparing environment for content staging.
- The system now validates the Presentation URL of sites for uniqueness. Different running sites (or their domain aliases) can no longer have matching Presentation URL values.
- All Membership & Security and Passwords settings set via the Settings application now also affect the configuration of the Xperience membership OWIN integration API used by the live site application. Password policies, password reset token validity intervals, cross-site user account sharing, and other features can now be controlled directly from the Settings application without the need to synchronize such changes with the configuration of the live-site application.
- New API for managing user avatars. See User avatars for more information.
- The Kentico.Membership.User object used by the system's ASP.NET Identity integration now also maps the 'UserInfo.FullName' property. See Adding custom fields to users.
- Licensing – Reworked how Xperience controls the maximum number of web farms allowed by site license keys. The number of allowed web farm servers is now counted separately for the live site and administration applications. For example, a license key for a live site hosted on domain.com that allows up to 3 web farm servers allows you to scale the corresponding application to up to three instances. To scale the connected administration instance (e.g., hosted on admin.domain.com), you need a license key for admin.domain.com with its web farm allowance. In previous versions, the scaling model enabled arbitrary distribution of web farm servers allowed by a single license across both applications. See How licensing works for more information and examples illustrating various hosting configurations.
- Added SameSite mode configuration options for cookies. Due to stricter enforcement of the SameSite configuration of cookies adopted by major browsers, it is now possible to configure the SameSite mode of cookies set via the system's API (for both system and custom cookies). By default, Xperience uses the Lax mode for all system cookies, which is sufficient if the live site and administration are hosted on a single domain. However, if the applications comprising your site are hosted across multiple domains, you need to explicitly force the None mode to ensure the preview mode functionality and all dependent features, such as the page builder, work correctly. See:
- Updated the available macro methods to allow resolving by both the administration and live site application (with the exception of methods that only have a specific function within the administration interface). Certain methods that are no longer relevant were removed and others were made obsolete. To learn about the current macro methods, refer to Reference - Macro methods.
- The macro report available in System -> Macros -> Report was extended to report occurrences of removed or obsolete macro methods used in the administration application. See Searching for macros.
- Scheduled tasks – The system now allows scheduling and running of site-specific tasks on the side of the live site (MVC) application. For example, you can use this option for tasks that work with the application memory or the local file system. See Processing scheduled tasks on the live site.
- Event log – It is now possible to specify custom event logging destinations via event log writers. See Customizing event logging for more information.
- When generating URLs with hash parameter authentication for REST requests, the system now allows administrators to set an expiration date for individual URLs.
- Hash parameters generated for authenticating REST requests can now be invalidated.
- New CacheAsync method added to the CacheHelper API that allows loading and caching of Xperience data in asynchronous code. See Caching in custom code.
- New IProgressiveCache service that provides a full alternative to the static CacheHelper API. Supports dependency injection and makes it easier to cache data within the code of unit tests.
- Performance – The general performance of ObjectQuery calls was slightly improved (such calls are used to load object data within the system and in custom code).
- SharePoint integration – New API that allows developers to retrieve the URLs of SharePoint files and display the files on the live site.
- Added automatic registration of secured (HTTPS) endpoints for the WCF services used by the marketing automation designer and advanced workflow designer (when the administration application is running over HTTPS). Manual configuration is only required in scenarios with advanced environment configurations. See Configuring Windows Communication Foundation for more information.
- Data API
- The API now contains interfaces (services) for most InfoProvider classes, which are used for basic loading and management of Xperience objects. For example, IUserInfoProvider for UserInfoProvider. The new services can be added using dependency injection or accessed through the Provider property of the corresponding Info class. The original static InfoProvider methods that have replacements are now obsolete. See Database table API.
- Xperience objects can now be loaded asynchronously using the GetAsync method of the new IInfoProvider interfaces.
- The DocumentQuery and ObjectQuery classes provide a new GetEnumerableTypedResultAsync method, which allows asynchronous execution of queries that load Xperience pages or objects.
- The query parameterization methods available for the DocumentQuery and ObjectQuery API are now virtual. This allows developers to call the methods when creating mocked data in automated unit tests (for example when using Substitute.For with query objects).
- Marketing automation
- New and improved visual design and overall interface for the automation process designer. The steps for managing the flow of processes (conditions, etc.) were simplified and streamlined.
- New Time-based triggers, which can be used to start automation processes. Such triggers schedule the process to run for a specified set of contacts, either once at a specified time or recurring based on a set interval.
- Automation processes can now be saved as templates and then later used as a starting point for creating new processes. The system provides several predefined templates to help quickly create processes that cover common scenarios (Send birthday message, Re-engagement campaign, Abandoned cart reminder). See Managing automation process templates.
- Improved editing interface for process triggers – triggers are now displayed and managed directly within the process designer interface as part of the Start step.
- Improved analytics for automation processes, including reports showing the demographics of contacts handled by the process, and a visual representation of the journey that individual contacts have taken through the steps of the process.
- Marketers can now document and annotate automation processes by adding notes to the process graph. See Working with the automation process designer for more information.
- Action steps can now retrieve data and display the resulting information to users in the automation process designer interface. For example, the system's default Send marketing email action step loads and displays available statistics for the related email (number of sent emails, open and link click rate). For more information about implementing data retrieval for custom steps, see Developing custom marketing automation actions.
- The automation process designer newly displays a warning icon and message for steps with required parameters that are not configured.
- Users can now duplicate steps within an automation process, including their current configuration.
- The Web analytics feature is now supported for MVC and ASP.NET Core sites. Allows marketers to measure and analyze key metrics of websites directly in the Xperience administration interface.
- New and improved API for developers who wish to log custom events as web analytics. See Adding custom web analytics.
- Email marketing
- The Custom table form submit activity is now supported for MVC and ASP.NET Core sites (logged automatically when calling the appropriate custom table API).
- New macro rules:
- Rule that evaluates whether a contact has their birthday on the current, preceding or following day.
- Rule that evaluates whether a contact has been inactive for a specified number of days (i.e. was created at least X days ago and has not performed any activities in the last X days).
- Personas – The staging, export/import, and continuous integration features now support persona data. If you want to synchronize, import or export data of personas that use custom activities in their rule definitions, you need to make sure each custom activity has its Activity item object type configured in Contact management -> Configuration -> Activity types -> Edit -> Scoring rule configuration section. Additionally, you need to manually resave all scoring rules that use such custom activities.
- Published the Kentico Xperience item on the Azure Marketplace, which can be used to quickly deploy and evaluate a sample website as an Azure Web App. See Deploying a sample Xperience application from the Azure Marketplace.
Updates and changes
- The Preview mode feature for pages is now always active and no longer needs to be enabled on the side of the live site application (the UsePreview method of the ApplicationBuilder instance is obsolete). Developers may still need to adjust the configuration and code of the application to ensure that the preview mode works correctly, as described in Adding preview mode support.
- The WYSIWYG editor used for rich text fields in the administration interface was updated to CKEditor version 4.14.0.
- The jQueryUI library used in the administration application was updated to v1.11.4.
- The jQuery library used by the form builder feature was updated to v3.5.1.
- The Licenses application in the Xperience administration interface was renamed to License keys.
- Marketing automation – The following types of steps for marketing automation processes were streamlined and renamed:
- Standard – renamed to Approve progress.
- First win – renamed to If/Else.
- Condition – merged into the If/Else step type (automatically converted when upgrading sites).
- Multi-choice – removed, we recommend using the If/Else step type (occurrences in existing processes remain when upgrading sites).
- User choice – renamed to Manual choice.
- Start process – renamed to Start another process.
- Countries – The country of Saint Martin (MF, MAF) was split into:
- Saint Martin (French part) (MF, MAF) with the SaintMartin code name.
- Sint Maarten (Dutch part) (SX, SXM) with the SintMaarten_DutchPart code name.
- Countries – The following countries were added to the system:
- Bonaire, Saint Eustatius and Saba (BQ, BES) with the Bonaire_SintEustatiusAndSaba code name.
- Curacao (CW, CUW) with the Curacao code name.
- Administration interface is a new application that merges the functionality of the following Portal Engine applications used to customize the Xperience interface:
- Widgets (renamed to Dashboard widgets)
- Web parts
- Page layouts
- Page templates
- Form controls
- Due to the removal of community features and groups, any group-related media libraries are converted to regular media libraries when upgrading.
- E-commerce – If a tax exemption for customers was created by registering a custom ICustomerTaxClassService implementation, it was only applied for products with a tax class that had the Zero tax if tax ID is supplied property enabled. The property no longer affects custom tax exemptions (unless checked in the code of the custom implementation).
All bugs fixed within the Kentico 12 hotfixes up to version 12.0.90 are included in Xperience 13. See the Bugtracker on DevNet for a full list (click Fixed Bugs).
Breaking changes (functionality, API, data structure)
All NuGet packages used for MVC development and general integration of the Xperience API were renamed (rebranded). When upgrading projects, you need to uninstall the original Kentico 12 packages and replace them with the equivalent packages for Xperience 13.
Kentico 12 Xperience 13 Kentico.AspNet.Mvc Kentico.Xperience.AspNet.Mvc5 Kentico.AspNet.Mvc.Libraries Kentico.Xperience.AspNet.Mvc5.Libraries Kentico.Libraries Kentico.Xperience.Libraries Kentico.Libraries.Web.UI The package was removed. The contained Web.UI libraries are only intended for use within the Xperience administration application. If necessary, you can access the libraries in the Lib folder of Xperience projects. Kentico.LanguagePack.English The package was removed. Localization files are now part of application assemblies (included as part of the Kentico.Xperience.AspNet.Mvc5.Libraries package). Kentico.Libraries.Tests Kentico.Xperience.Libraries.Tests Kentico.Glimpse Kentico.Xperience.Glimpse
- Azure Search
- The Microsoft.Azure.Search NuGet package provided in Xperience projects was updated to version 10.1.0 (both in the Xperience web project and as a dependency of the Kentico.Libraries NuGet package). For this version update, the Azure Search SDK contains minor breaking changes that should not impact your project's integration with Xperience. However, version 9 of the SDK (cumulatively applied with this update) contains potentially significant breaking changes. For example, all non-generic types derived from SearchResultBase, DocumentSearchResultBase, SuggestResultBase, DocumentSuggestResultBase, IndexBatchBase and IndexActionBase were removed from the provided API. The derived types were meant to be used in "dynamically-typed" scenarios and assumed usage of the Microsoft.Azure.Search.Models.Document class. For dynamically-typed scenarios in the newest version, use SearchResult<Document>, DocumentSearchResult<Document>, and so on (explicitly specify Microsoft.Azure.Search.Models.Document as the type's generic parameter). For a detailed description of all changes and recommended upgrade process, see Upgrading to the Azure Search .NET SDK version 9 and Upgrading to the Azure Search .NET SDK version 10 in the official Microsoft Azure documentation. The Azure Search API provided by Xperience (CMS.Search.Azure namespace) remains unchanged.
- The Microsoft.Azure.Storage.* NuGet packages were updated to version 11.2.2. There are no expected breaking changes associated with this update.
- External authentication – To work with Xperience 13, the Microsoft.Owin.Security NuGet packages that provide middleware components for external authentication on the live site must use version 4.0.0 or newer. If using an older version and upgrading to Xperience 13, you need to update the packages.
- Scheduled tasks
- Automatic scheduling based on a timer is now the default mode for processing scheduled tasks (instead of processing at the end of web requests). See Configuring scheduled task execution.
- When creating scheduled tasks, the system no longer provides the option to create a copy of the task for all web farm servers (the scenario did not work correctly in dynamic web farm scenarios and was potentially misleading).
- The CMSSchedulerUrl web.config key is no longer handled – setting a custom automatic scheduler route is no longer a supported scenario.
- Localization – Resource string files that contain the default English localization strings used by the application (CMS.resx, Kentico.Builder.resx, Kentico.PageBuilder.resx, Kentico.FormBuilder.resx, Kentico.Components.resx) are no longer a part of the Kentico.Xperience.LanguagePack.English NuGet package, which was removed. Instead, they are delivered as embedded resources in application assemblies. If you need access to these files for purposes of application localization, contact us at firstname.lastname@example.org or email@example.com. Upgrading the live site project to Xperience 13 NuGet integration packages removes the files from the file system. Existing localizations implemented according to our localization practices remain unaffected.
- Monitoring of online users and contacts is no longer supported (in the Users and Contact management applications). This feature was never available for MVC sites.
- Mapping the entire filesystem to external (shared) storage via the CMSExternalStorageName web.config key is no longer supported due to potential deadlock issues. If the key is detected on application startup, the system logs a warning to the event log. Instead, map only the parts of the file system your project uses often using the StorageProvider class. For example, the media library and form data submission folders. This avoids the need to synchronize large volumes of data over web farms while keeping the main parts of the application file systems separate.
- The Banned IPs application and related functionality were removed from the system. This feature was never available for MVC live sites.
- Introduced an additional layer of security for virtual context links (used in the administration interface when previewing or editing live site pages). The system now additionally stores the username of the current user on the client in a new CMSVirtualContextIdentity cookie (in addition to the URL itself). When processing requests for virtual context links, the system checks the username in the cookie against the username present in the URL.
- Page type settings for configuring custom administration interface pages in the Pages application were removed (New/Edit, Preview and Listing mode pages).
- Removed the CSS Stylesheets application, and the option to manage system stylesheets through the administration interface.
- Search indexes of the Pages crawler type no longer allow configuration of the domain on which content is indexed. The crawler now always uses the main live site URL of the indexed page (the domain may be different between culture versions of pages).
- The Membership - Forgotten password (obsolete) email template was removed from the system, along with the related macro resolver, and the Forgotten password template type. This template was obsolete and no longer used by the system's password reset functionality.
- The Membership - Registration, Membership - Registration waiting for approval, and Membership - Registration confirmation email templates were removed from the system. These email templates were not used during the user registration process on MVC sites. To send emails regarding user registration or changes in account status, use the corresponding API provided by the KenticoUserManager class. See Enabling user registration.
- Domain aliases for sites no longer provide the option of setting a redirection URL.
- The option to save sites as web templates is no longer supported. If required, we recommend using the export and import feature for sites.
- The setting that ensured internal site prefixes for user names was removed and this option is no longer supported.
- The entire Health Monitoring functionality was removed from the system. The corresponding Windows services and performance counter registrations are automatically removed during the upgrade.
- The following font icons (used to display graphics in the administration interface) were renamed:
- @icon-parent-child-scheme > @icon-parent-children-scheme-3
- @icon-parent-child-scheme-2 > @icon-parent-child-scheme-inverted
- @icon-parent-child-scheme2 > @icon-parent-child-scheme
- @icon-parent-children-scheme > @icon-parent-children-scheme-2
- The Portal Engine and ASPX template development models for websites are no longer supported. Related features and components (web parts, widgets, page templates, controls, etc.) were removed from the system.
- Web parts can no longer be used to build website pages. They remain in the system as components for administration interface pages.
- Portal Engine page templates can no longer be assigned to website pages. They remain in the system as a way to build administration interface pages. Ad-hoc templates dedicated to individual pages are no longer supported. When upgrading projects, all page templates except for UI and dashboard templates are removed, and any ad-hoc UI templates are converted to global shared templates.
- All support for the original Portal Engine widgets was removed for live site content. This includes editor, user and group widgets, as well as inline widgets (adding widgets into editable text areas via the editor). Widgets can still be used on dashboards within the administration interface.
- Removed support for web part and widget containers.
- Transformations are no longer intended for displaying data on the live site. The ASCX, XSLT, and jQuery transformation types are no longer supported, and any existing transformations of these types are deleted when upgrading projects. If you use such transformations, you need to create equivalent macro-based transformations.
- On-site editing mode is no longer supported (the feature was never available for MVC sites).
- Some tabs used when editing pages in the Pages application were reorganized (e.g., the content of the General tab was reworked, the tags functionality was moved to a separate Tags tab, etc.). As part of this reorganization, some UI elements in the Pages application were also rearranged. If upgrading from an older version, we recommend that you check that any UI personalization configuration or custom UI elements are still valid.
- The Sites application no longer provides the option to switch sites to off-line mode (the feature never worked for MVC sites).
- On-line forms created on Portal Engine sites (without the MVC form builder) are no longer supported.
- Removed permanent URL functionality for pages. URLs served via the /getdoc handler are no longer supported.
- The Sites application no longer provides the option to select a CSS stylesheet applied to the content of rich text fields edited through the WYSIWYG editor. Instead, a stylesheet can be configured for this purpose using the new CSS stylesheet for WYSIWYG editor setting in Settings -> Content -> Content management (accepts the stylesheet's absolute URL or virtual path based on the MVC application's Presentation URL). See Styling the editor for rich text fields.
- Attachments and media library files now have separate settings for configuring URLs in the URLs and SEO category of the Settings application.
- The built-in components and functionality for content notifications was removed (the feature was never available for MVC sites). Additionally, the original API for developing notification gateways in Xperience is no longer supported.
- Removed support for Device profiles (a mobile development approach originally usable by Portal Engine sites). This includes all related applications, settings, components and integration with 51Degrees device detection.
- The WebDAV integration feature used for collaborative editing and file management on remote web servers is no longer supported.
- The searchattachments and searchdocuments SQL queries originally placed under the CMS.Root page type were moved and renamed. The queries are now named Search and available under the Attachment (cms.attachment) and Page (cms.document) classes of the system's Pages module.
- The Default page and Default alias path settings were removed. The option to set a Default alias path for domain aliases was also removed. Redirection to your website's home page is now configured via the Home page and Home page URL behavior settings. See Settings - URLs and SEO for more information.
- The Redirect invalid case URLs to their correct versions setting was removed. To configure how the system handles the letter case of characters in URLs, set the Enforce lowercase URLs setting. See Settings - URLs and SEO for more information.
- The translations.com translation service is no longer supported.
- Removed the functionality that allowed a watermark to be configured for images managed by the system (media library files, page attachments, object metafiles).
- Marketing automation
- Newly created or imported automation processes are now inactive by default. Processes need to be enabled in the process designer interface before they can start running for contacts.
- Send marketing email action steps within automation processes can now only send marketing emails that are specifically flagged for marketing automation purposes (via a new Use in Marketing automation property). Such emails cannot be sent directly from the Email marketing application.
- Marketing automation process steps of the Multi-choice type are no longer available. We recommend using the If/Else step type to create conditions in automation processes. When upgrading sites, any occurrences of Multi-choice steps remain in existing processes.
- The reports for automation processes no longer support the option to directly save or print the report content, or subscribe to receive email notifications about the report status. Additionally, any custom modifications made in the Reporting application under the Online marketing -> Automation report category no longer apply.
- Multivariate testing of pages is no longer supported (the feature was never available for pages on MVC sites). We recommend using A/B testing instead.
- The following macros related to personas were removed or modified:
- GlobalObjects.PersonaScores – removed
- GlobalObjects.Personas.PersonaScore – changed to GlobalObjects.Personas.Scores
- It is no longer possible to assign personas to pages (the binding between content tree nodes and personas was removed).
- Banner management functionality is no longer supported, and all related components were removed from the system (applications, web parts, widgets, settings, etc.).
Social & Community
- Community features were removed from the system, along with all related components (web parts, widgets, email templates, form controls, settings) and API:
- Abuse report
- Bad words
- Content rating
- Flood protection
- Message boards
- User badges and activity points
- User contribution web parts
- The following functionality related to user avatars was removed from the system: the Avatars application, management of pre-defined avatars, Gravatar support. It is still possible to manage user avatars using the API. For more information, see User avatars.
- All components and functionality related to displaying e-commerce data and shopping carts on Portal Engine sites were removed (includes macro methods, transformation methods, web parts, widgets, settings, etc.). See the Developing on-line stores documentation to learn how to implement equivalent functionality on MVC sites.
- Strands Recommender integration is no longer supported (the feature was never available for MVC sites).
API – Breaking changes
Search the API changes page on DevNet to find all possible breaking changes in the API.
Platform (live site API)
- Kentico.Membership – The UserManager, UserStore, and SignInManager types from the Kentico.Membership namespace are now obsolete. Use KenticoUserManager, KenticoUserStore, and KenticoSignInManager instead. The new types support a generic parameter that allows you to work with customized Kentico.Membership.User objects (e.g., containing additional properties corresponding to custom or existing fields of user objects) in the Xperience ASP.NET Identity implementation. See Adding custom fields to users for more information.
- Form builder
- All selector form components (e.g., SelectorFormComponent, CompareToFieldSelectorComponent) now work with collections of Kentico.Web.Mvc.HtmlOptionItem instead of System.Web.Mvc.SelectListItem. Affected members are marked as obsolete with the corresponding alternative provided in the obsolete information message. To convert collections of HtmlOptionItems to SelectListItems, use the Kentico.Web.Mvc.ToSelectListItems extension method.
- The GetEditorHtmlAttributes extension method no longer directly extends ViewData but is provided under the ViewData.Kentico() extension point instead. Replace all usages of ViewData.GetEditorHtmlAttributes with ViewData.Kentico().GetEditorHtmlAttributes. The old approach is marked obsolete and will be removed in future versions.
Platform (general API)
- The static methods of most InfoProvider classes used for basic loading and management of Xperience objects are now obsolete. Instead, the API provides interface equivalents (services) for each InfoProvider. For example, use IUserInfoProvider instead of UserInfoProvider. The new interfaces (services) can be added using dependency injection or accessed through the Provider property of the corresponding Info class.
- All system API methods working with uploaded files now take IUploadedFile instead of HttpPostedFile. The IUploadedFile interface acts as a wrapper that encapsulates properties of posted binary data. Use the provided ToUploadedFile extension methods (CMS.Base.UploadExtensions namespace) to convert HttpPostedFile types.
- The event logging API exposed by the EventLogProvider class is now obsolete. To log events into the application's event log, use IEventLogService instead. See the event log API Examples.
- The properties of the CoreServices class, used to provide access to a set of core system services (IAppSettingsService, IEventLogService, ILocalizationService, etc.), are now obsolete. Use Service.Resolve<ServiceType>() to access these services instead. For example, use Service.Resolve<IAppSettingsService>() to get an instance of the service that works with a project's web.config setting keys.
- The DataExportHelper.ExportToExcel, DataExportHelper.ExportToCSV, and DataExportHelper.ExportToXML methods no longer close the System.IO.Stream object passed to them as a parameter. Correctly disposing of the stream is now the responsibility of the calling code.
- Materializing an ObjectQuery call (typically by enumerating through the results) now triggers the SqlEvents.ExecuteReader global event instead of the SqlEvents.ExecuteQuery event. This is not the case for DocumentQuery calls, which still trigger the ExecuteQuery event. You need to accordingly adjust any custom event handlers of these events.
- Using period character ('.') prefixes in role code names to specify global roles is no longer supported when loading roles in custom code. Instead, use 0 as the value of the site ID parameter in the corresponding API call. For example: RoleInfo.Provider.Get("RoleName", 0)
- All QR code functionality was removed from the system, including the related API (CMS.Helpers.ImageHelper.GetQRCodeUrl, CMS.UIControls.QRCodeGenerator, etc.), the entire ThoughtWorks.QRCode.dll library, and support for loading QR codes via the GetResource.ashx handler.
- ObjectTypeInfo properties related to macros (CheckPermissions, ContainsMacros, MacroCollectionName) were moved into a new separate MacroProcessingSettings class, available under the new MacroSettings property of ObjectTypeInfo. The original properties are now obsolete.
- Page builder
- The API for limiting widgets and assigning default sections in page builder editable areas has been improved and updated. The previous approach (using optional parameters of the EditableArea method) is now obsolete and should not be used.
- The ComponentController.GetPage methods used to access the data of the page where a component is rendered are now obsolete. Use the IPageDataContextRetriever service and its Retrieve<TPageType> method to access the page data instead. See, for example, Developing widgets.
- The ComponentController.GetProperties methods used to access the properties of components in controller actions are now obsolete. Use the IComponentPropertiesRetriever service and its Retrieve<TComponentProperties> method the access the properties instead. See, for example, Defining widget properties. To access the properties of page templates, use IPageTemplatePropertiesRetriever.Retrieve<TTemplateProperties>.
- The KenticoFormWidgetController.WIDGET_IDENTIFIER constant containing the registered identifier of the system's Form widget is now obsolete. Instead, access the widget's identifier via the SystemComponentIdentifiers class (Kentico.Content.Web.Mvc namespace). This class aggregates the identifiers of all default system widgets (Form, Rich text, etc.).
- Page attachments – the GetPath extension method used to resolve the relative URL of page attachments is now obsolete. Use the IPageAttachmentUrlRetriever service to resolve page attachment URLs instead. See Displaying page attachments.
- The ImageUrl extension method used to generate and parameterize absolute URLs from relative URLs is now obsolete. Instead, use WithSizeConstraint and WithOptions extension methods on the IFileUrl object. The object is returned by general URL "retriever" services for page attachments and media library files. In cases where you only have the relative path to an image available (e.g., product images, manufacturer logos), you can construct an IFileUrl object manually. For example, see the Adjusting product image size section in Displaying product listings.
- The GetFileUrl method of the CMS.AmazonStorage.File and CMS.AzureStorage.File classes, used for obtaining URLs to media files stored on Amazon S3 and Microsoft Azure external storages, now returns the URL in a virtual path format (e.g. ~/CMSPages/GetAmazonFile.aspx?...) instead of the previous absolute path format. You can resolve the virtual relative URLs depending on your needs.
- The IABTestLogger service that performed conversion logging for A/B tests is now obsolete. Instead, use the IABTestConversionLogger service (available in the CMS.OnlineMarketing namespace).
- When developing custom tax exemptions for customers, the GetTaxClass method in ICustomerTaxClassService implementations now has an additional TaxClassInfo parameter and the returned CustomerTaxClass value was changed to an enum. Such customizations now correctly apply even for products under a tax class with the Zero tax if tax ID is supplied property disabled.
- The IRoundingService and ISettingService services were removed from the set of system service managed by dependency injection. The instances of these service are intended to be resolved using the corresponding IRoundingServiceFactory and ISettingServiceFactory services. If you injected or resolved these services directly (using Service.Resolve<TType>()), replace them with the intended service factory methods.
Database – Breaking changes
- The following database tables were removed (the related features are no longer supported in Xperience 13):
- The following columns were removed from the CMS_Avatar database table due to updated and simplified User avatar functionality:
- The following columns were removed from the CMS_FormUserControl database table:
- The following columns were removed from the CMS_Layout database table due to page layouts being simplified only for use with administration templates:
- The following columns were removed from the CMS_PageTemplate database table due to page templates being simplified only for use within the administration interface:
- The WebPartDefaultConfiguration column was removed from the CMS_WebPart database table.
- The following columns were removed from the CMS_Widget database (the original widgets can now only be used on administration dashboards):
- The following columns were removed from the CMS_Role database table due to dropped support for community groups:
- The UserVisibility column was removed from the CMS_User database table.
- The following columns were removed from the CMS_UserSettings database table due to dropped Portal Engine functionality:
- The following columns were removed from the CMS_SearchIndex database table due to updated search index functionality:
- The following columns were modified in the CMS_Site database table due to dropped support for Portal Engine sites:
SiteDefaultStylesheetID – removed
SiteDefaultEditorStylesheet – removed
SiteIsOffline – removed
SiteOfflineRedirectURL – removed
SiteOfflineMessage – removed
SiteIsContentOnly – removed
SitePresentationURL – no longer allows null values (modified to not null)
- The following columns were modified in the CMS_SiteDomainAlias database table due to dropped support for Portal Engine sites:
SiteDomainDefaultAliasPath – removed
SiteDomainRedirectUrl – removed
SiteDomainAliasName – no longer allows null values (modified to not null)
- The following columns were removed from the CMS_Transformation database table (transformations are now only intended for use within macro expressions):
- The PersonalizationDocumentID column was removed from the CMS_Personalization database table.
- The following columns were removed from the SharePoint_SharePointConnection database table (the SharePoint integration now only supports SharePoint Online):
- The following columns were removed from the CMS_Class database table due to updated Page type functionality:
- The following columns were removed from the CMS_Document database table due to dropped support for the Portal Engine development model:
- The following columns were removed from the CMS_Tree database table due to dropped support for the Portal Engine development model:
- The following columns were removed from the CMS_VersionHistory database table:
- The ScopeAllowABVariant column was removed from the CMS_DocumentTypeScope database table.
- The following columns were modified in the CMS_Form database table:
- FormDevelopmentModel – removed
- FormLogActivity – no longer allows null values (modified to not null)
- The LibraryGroupID column was removed from the Media_Library database table due to dropped support for community groups.
- The size of the AlternativeUrlUrl column in the CMS_AlternativeUrl database table was reduced from 450 to 400.
- The TranslationServiceGenerateTargetTag column was removed from the CMS_TranslationService database table.
- The following database tables were removed:
- Analytics_Conversion (conversions for A/B testing and Campaigns use a different storage format and location)
OM_ABVariant (A/B testing variants for pages are now persisted in the OM_ABVariantData table)
OM_MVTCombination (multivariate testing is no longer supported in Xperience 13)
OM_PersonalizationVariant (personalization variants were only stored for Portal Engine content, see Content personalization to learn about personalization on MVC sites)
Personas_PersonaNode (assigning personas to pages is no longer supported)
- The following columns were modified in the Analytics_ExitPages database table due to updated functionality for exit page logging:
- ExitPageNodeID – removed
- SessionIdentificator – renamed to ExitPageSessionIdentifier
- The ActivityMVTCombinationName column was removed from the OM_Activity database table due to dropped support for multivariate testing.
- The ActivityTypeIsHiddenInContentOnly column was removed from the OM_ActivityType database table due to dropped support for Portal Engine sites.
- The ScoreBelongsToPersona column was removed from the OM_Score database table (the table contains a new ScorePersonaID reference column instead).
- The PersonaScoreID column was removed from the Persona_Persona database table.
- The following columns were removed from the COM_SKU database table
Social & Community
- The following database tables were removed (the related community features are no longer supported in Xperience 13):
Was this page helpful?