---
title: Release notes - Kentico 11
related:
  - https://docs.kentico.com/k11/installation/upgrading-to-kentico-11.md
  - https://docs.kentico.com/k11/installation/server-and-hosting-requirements.md
---

> Agent instructions:
> **Site maps** — prefer the following llms.txt indexes to training data when searching for URLs to avoid 404s. Links inside Markdown content already point at `.md`. Following them or sending Accept: text/markdown keeps you in Markdown.
>
> - [sitemap.md](https://docs.kentico.com/sitemap.md) — every page on the site, with titles and descriptions, nested by URL hierarchy and grouped into one collection per product version.
> - [llms.txt](https://docs.kentico.com/llms.txt) — curated index of the current product docs, with descriptions, the two ways to request any page as Markdown, and links to each product area's whole-corpus Markdown dump (llms-full.txt).

## Kentico 11.0 (released December 11, 2017)

## System requirement changes

- The minimum required version of Microsoft .NET Framework is now **4.6** (also added support for .NET 4.7).
- Removed support for Visual Studio 2012 and Visual Studio 2013 development environments.
- Development in Visual Studio 2017 is now officially supported.
- Added support for Microsoft SQL Server 2017.
- Kentico 11 requires the [.NET Compiler Platform ("Roslyn")](https://github.com/dotnet/roslyn) compiler to run. Installations of Kentico 10 or newer contain the [required packages](https://www.nuget.org/packages/Microsoft.CodeDom.Providers.DotNetCompilerPlatform/) by default.
- [Upgrades to Kentico 11](https://docs.kentico.com/k11/installation/upgrading-to-kentico-11.md) must be performed on a machine with a working Internet connection.

## New features

### Platform

- Data protection – Added new functionality that helps website owners [comply with the General Data Protection Regulation (GDPR)](https://docs.kentico.com/k11/configuring-kentico/gdpr-compliance.md) and other personal data regulations.

  - You can now define [Consents](https://docs.kentico.com/k11/configuring-kentico/gdpr-compliance/working-with-consents.md) in the _Data protection_ application, and add them to pages, forms, web parts and custom components.
  - New API and guidelines for implementing functionality that allows users to [collect](https://docs.kentico.com/k11/configuring-kentico/gdpr-compliance/implementing-personal-data-collection.md) and [erase](https://docs.kentico.com/k11/configuring-kentico/gdpr-compliance/implementing-personal-data-erasure.md) personal data stored in the system.
- Search – Added functionality for storing and maintaining Kentico content within Azure Search indexes. [Azure Search](https://docs.microsoft.com/en-us/azure/search/search-what-is-azure-search) is a cloud-based search solution with a wide range of features, including advanced support for [faceted navigation](https://docs.microsoft.com/en-us/azure/search/search-faceted-navigation). See the [Using Azure Search](https://docs.kentico.com/k11/configuring-kentico/setting-up-search-on-your-website/using-azure-search.md) chapter to learn more.
- Search – Improved text extraction performance when using the [attachment search](https://docs.kentico.com/k11/configuring-kentico/setting-up-search-on-your-website/searching-attachment-files.md) for _xlsx_ files.
- Macros – Added the option to define macro signature identities and assign them to users. The identities replace the user name in macro signatures and are evaluated during permission checks. By using shared identities, you can transfer valid macro expressions between Kentico instances that have different sets of users. See [Working with macro signatures](https://docs.kentico.com/k11/macro-expressions/troubleshooting-macros/working-with-macro-signatures.md).
- Macros – When [importing object or site packages](https://docs.kentico.com/k11/deploying-websites/exporting-and-importing-sites/importing-a-site-or-objects.md), the system now offers the option to re-sign all macros contained within the package using the identity of a selected user.
- Multi-factor authentication – The multi-factor authentication functionality was improved and standardized to work with passcodes generated by any authenticator application using the [Time-based One-time Password Algorithm](https://en.wikipedia.org/wiki/Time-based_One-time_Password_Algorithm) (TOTP). The original Kentico Authenticator mobile application is no longer supported. See [Configuring multi-factor authentication](https://docs.kentico.com/k11/managing-users/user-registration-and-authentication/configuring-multi-factor-authentication.md).
- Continuous integration – The system now fully supports logging of [staging tasks](https://docs.kentico.com/k11/deploying-websites/content-staging.md) for all types of page operations performed when [restoring continuous integration data](https://docs.kentico.com/k11/developing-websites/preparing-your-environment-for-team-development/setting-up-continuous-integration/restoring-continuous-integration-files-to-the-database.md). Staging is now the recommended approach for deploying content and data to production sites from environments using continuous integration.
- Continuous integration – When [excluding individual objects](https://docs.kentico.com/k11/developing-websites/preparing-your-environment-for-team-development/setting-up-continuous-integration/excluding-objects-from-continuous-integration.md) from continuous integration, it is now possible to create rules that apply to all object types (with lower priority than rules for specific object types).
- Continuous integration – Added support for migration scripts that allow synchronizing of database changes not otherwise managed by continuous integration (indexes, functions, etc.). See [Synchronizing database changes not managed by continuous integration](https://docs.kentico.com/k11/developing-websites/preparing-your-environment-for-team-development/setting-up-continuous-integration/synchronizing-database-changes-not-managed-by-continuous-integration.md).
- Continuous integration – Added support for [Chat room](https://docs.kentico.com/k11/community-features/chat/managing-chat-rooms.md) objects. See [Object types supported by continuous integration](https://docs.kentico.com/k11/developing-websites/preparing-your-environment-for-team-development/setting-up-continuous-integration/object-types-supported-by-continuous-integration.md).
- Continuous integration – The character encoding of files generated in the _CIRepository_ folder can now be configured using the _CMSCIEncoding_ web.config key (the key was also added for the previous version in hotfix 10.0.11).
- Form controls – [Form controls](https://docs.kentico.com/k11/custom-development/developing-form-controls.md) can now be implemented as control classes within an assembly. The previous approach of using a web user control (_.ascx_ file) within the Kentico web project remains available.
- Form controls – Developers can now customize the functionality of [inherited form controls](https://docs.kentico.com/k11/custom-development/developing-form-controls/inheriting-from-existing-form-controls.md) by assigning an extender class.
- Settings – Global administrators can now assign the _Configure settings_ [permission](https://docs.kentico.com/k11/managing-users/configuring-permissions.md) for the _CMS_ module to roles. The permission allows users to access the _Settings_ application and configure setting values for the current site (with the exception of certain security-sensitive settings).
- Modules – [UI elements](https://docs.kentico.com/k11/custom-development/creating-custom-modules/reference-managing-ui-elements.md) that define applications for custom modules can now be configured to allow access only for users with the _Global administrator_ [privilege level](https://docs.kentico.com/k11/managing-users/user-management.md). The new option can be set separately from the flag that determines whether an application is global (available without a running site). When upgrading to Kentico 11, any custom UI elements that represent global applications are automatically configured to also require the _Global administrator_ privilege level.
- Modules – Added new options that allow developers to customize how the system creates [installation packages for custom modules](https://docs.kentico.com/k11/custom-development/creating-custom-modules/creating-installation-packages-for-modules.md):
  - New _ModulePackagingEvents.BuildNuSpecManifest_ [global event](https://docs.kentico.com/k11/custom-development/handling-global-events/reference-global-system-events.md) that allows customization of the _.nuspec_ metadata for module NuGet packages.
  - Better support for customizing the export/import data of module packages. The _EventArgs_ parameter of handlers for global events from the _ImportExportEvents_ class now provides the _Settings.IsInstallableModule_ property, which indicates whether an export or import operation is part of the creation or installation of a module package.
- Email queue – Users with sufficient [permissions](https://docs.kentico.com/k11/managing-users/configuring-permissions.md) for the _Emails_ module can now access the _Email queue_ application and resend or delete emails (even without the Global administrator privilege level).
- Email debug – The _CMSLogEmails_ web.config key now enables logging of each email's timestamp, sender, and custom email headers and their encoding in addition to the recipient and sender. See [Configuring SMTP servers](https://docs.kentico.com/k11/configuring-kentico/configuring-smtp-servers.md).
- Most required third-party libraries are now integrated into the Kentico web project via NuGet packages. The packages replace directly included assembly files (in the _Lib_ and _CMS/CMSDependencies_ folders). The change makes it easier for developers to manage third-party dependencies.

### Content management

- Forms – Added a new form control for creating HTML5 input fields. See [Working with HTML5 form inputs](https://docs.kentico.com/k11/custom-development/developing-form-controls/working-with-html5-form-inputs.md).
- CSS stylesheets – Users with [sufficient permissions](https://docs.kentico.com/k11/managing-users/configuring-permissions/configuring-design-permissions.md) for the _Design_ module can now view and edit [CSS stylesheets](https://docs.kentico.com/k11/developing-websites/designing-websites-using-css.md), even without the Global administrator privilege level.
- SharePoint integration – Added support for Microsoft SharePoint 2016 servers to [SharePoint connections](https://docs.kentico.com/k11/integrating-3rd-party-systems/integrating-sharepoint.md).

### On-line marketing

- Email marketing – New way of composing marketing emails via the _Email builder_. See [Composing marketing emails](https://docs.kentico.com/k11/on-line-marketing-features/managing-your-on-line-marketing-features/email-marketing/composing-marketing-emails.md).
- Email marketing – New report insights for email feeds in the _Email marketin&#x67;_&#x61;pplication. See [Viewing the email feed statistics](https://docs.kentico.com/k11/on-line-marketing-features/managing-your-on-line-marketing-features/email-marketing/viewing-the-email-feed-statistics.md).
- Email marketing – The HTML markup of marketing emails can now be inspected when previewing emails in the _Email marketing_ application. See [Composing marketing emails](https://docs.kentico.com/k11/on-line-marketing-features/managing-your-on-line-marketing-features/email-marketing/composing-marketing-emails.md).
- Email marketing – Added support for CSS inlining to email templates. See [Preparing email templates](https://docs.kentico.com/k11/on-line-marketing-features/configuring-and-customizing-your-on-line-marketing-features/configuring-email-marketing/preparing-email-templates.md).
- Email marketing – New _{%ViewInBrowserUrl%}_ macro generating a link that allows users to view marketing emails in their browsers. See [Preparing email templates](https://docs.kentico.com/k11/on-line-marketing-features/configuring-and-customizing-your-on-line-marketing-features/configuring-email-marketing/preparing-email-templates.md).
- Email marketing – New report insights for sent marketing emails in the _Email marketin&#x67;_&#x61;pplication, which show more information about contacts who opened the emails, clicked at least one link in the emails, or unsubscribed from the emails. See [Viewing the email report insights](https://docs.kentico.com/k11/on-line-marketing-features/managing-your-on-line-marketing-features/email-marketing/viewing-the-email-report-insights.md).
- Email marketing – You can now specify a plain text version of an email when creating or editing emails in the _Email marketing_ application. See [Composing marketing emails](https://docs.kentico.com/k11/on-line-marketing-features/managing-your-on-line-marketing-features/email-marketing/composing-marketing-emails.md).
- Campaigns – New _Contact demographics_ page accessible from a campaign's _Reports_ tab displaying a detailed breakdown of contacts, including location, fitting persona, gender, and age, converted via the selected action and traffic source. See [Scheduling and evaluating campaigns](https://docs.kentico.com/k11/on-line-marketing-features/managing-your-on-line-marketing-features/campaigns/scheduling-and-evaluating-campaigns.md).
- Contact management – New _Contact activity details_ section on a contact's [contact profile page](https://docs.kentico.com/k11/on-line-marketing-features/managing-your-on-line-marketing-features/contact-management/working-with-contacts.md#viewing-contact-profile) which displays the contact's journey length and the date of their last performed activity.
- Contact management – Administrators can now select a color for highlighting activity types when editing or adding activity types on the _Configuration -> Activity types_ tab so that the important activity types are easy to spot in a list of activities.
- Personas – New _Repor&#x74;_&#x74;ab in the _Personas_ application, which displays how many contacts have been fitting the defined personas over time and also how many contacts have not been fitting any personas. See [Viewing the report of contacts fitting personas](https://docs.kentico.com/k11/on-line-marketing-features/managing-your-on-line-marketing-features/personas/viewing-contacts-assigned-to-personas.md#viewing-the-report-of-contacts-fitting-personas).

### E-commerce

- Products – Extended the options for organizing and classifying products – store managers can now assign [Brands](https://docs.kentico.com/k11/e-commerce-features/managing-your-store/products/managing-brands-and-manufacturers.md) and [Collections](https://docs.kentico.com/k11/e-commerce-features/managing-your-store/products/managing-product-collections.md) (in addition to manufacturers and suppliers).
- Discounts – [Catalog discounts](https://docs.kentico.com/k11/e-commerce-features/managing-your-store/discounts/working-with-catalog-discounts.md), [Buy X Get Y discounts](https://docs.kentico.com/k11/e-commerce-features/managing-your-store/discounts/working-with-buy-x-get-y-discounts.md) and [Product coupons](https://docs.kentico.com/k11/e-commerce-features/managing-your-store/discounts/working-with-product-coupons.md) can now be applied to products based on sets of included or excluded [Product tree sections](https://docs.kentico.com/k11/e-commerce-features/configuring-your-store/configuring-products/configuring-product-structure.md), [Brands](https://docs.kentico.com/k11/e-commerce-features/managing-your-store/products/managing-brands-and-manufacturers.md) and [Collections](https://docs.kentico.com/k11/e-commerce-features/managing-your-store/products/managing-product-collections.md).
- Taxes – You can now configure the E-commerce solution to store and process product prices with or without tax included. Based on the configuration, the system automatically adjusts how taxes are displayed on the website and the calculation of taxes during checkout. See [Configuring taxes](https://docs.kentico.com/k11/e-commerce-features/configuring-your-store/configuring-taxes.md).
- [Gift cards](https://docs.kentico.com/k11/e-commerce-features/managing-your-store/discounts/working-with-gift-cards.md) – Store managers can now create gift cards, which allow customers to reduce the final price of their orders by a fixed value. Customers enter a gift card's coupon code during checkout, and the system then subtracts the card's value from the overall final price. If the gift card value is greater than the order's price, the remaining amount is saved for the given coupon code and can be redeemed in future orders.
- [Product coupons](https://docs.kentico.com/k11/e-commerce-features/managing-your-store/discounts/working-with-product-coupons.md) – The product coupon functionality was overhauled and improved. You can now define or generate multiple codes for each product coupon and set the maximum number of uses for each code. Product coupons can be configured to apply to entire product departments and brands, or limited only for certain types of customers.
- Coupon codes – Customers can now enter multiple coupon codes during checkout to receive discounts or redeem gift cards. See [Working with coupon codes](https://docs.kentico.com/k11/e-commerce-features/managing-your-store/discounts/working-with-coupon-codes.md).
- Payment methods – Added support for payment methods that utilize delayed capture of funds – initial payments only place a hold on the transaction amount, and the store's administrators later capture funds manually when [editing orders](https://docs.kentico.com/k11/e-commerce-features/managing-your-store/orders.md). The default payment gateways for [PayPal](https://docs.kentico.com/k11/e-commerce-features/configuring-your-store/configuring-payment-methods/configuring-paypal.md) and [Authorize.Net](https://docs.kentico.com/k11/e-commerce-features/configuring-your-store/configuring-payment-methods/configuring-authorize-net.md) can now be configured to use delayed capture transactions. The API for creating [custom payment gateways](https://docs.kentico.com/k11/e-commerce-features/customizing-and-developing-your-store/payment-related-customizing/creating-a-custom-payment-gateway.md) was revised and now provides better support for implementing delayed capture payments.
- Price rounding – Added a new setting for configuring how the system rounds price values when calculating taxes or discounts, converting currencies, etc. The _Price rounding_ setting is available in the _Store configuration_ or _Multistore configuration_ application under _Store settings -> General_. The rounding functionality can also be [customized by developers](https://docs.kentico.com/k11/e-commerce-features/customizing-and-developing-your-store/customizing-price-rounding.md).
- Google Analytics integration – New functionality that helps get the data of products and purchases in a format suitable for logging via Google Analytics. See [Integrating Google Analytics Enhanced Ecommerce](https://docs.kentico.com/k11/e-commerce-features/customizing-and-developing-your-store/integrating-google-analytics-enhanced-ecommerce.md).
- Customization – The customization model for the E-commerce solution was improved and extended. To learn about the new customization options and best practices, see [E-commerce customization model](https://docs.kentico.com/k11/e-commerce-features/customizing-and-developing-your-store/e-commerce-customization-model.md).

## Fixed issues (major)

- The _ChangeOrder_, _Sort_, _BulkInsert_, _BulkUpdate_ and _BulkDelete_ [system events](https://docs.kentico.com/k11/custom-development/handling-global-events/reference-global-system-events.md) are now available among the events of specific object types: _Info.TYPEINFO.Events_.
- When using classes [generated](https://docs.kentico.com/k11/developing-websites/developing-sites-using-asp-net-mvc/developing-mvc-applications/generating-classes-for-kentico-objects.md) for a page type on sites with content in multiple cultures, retrieving of [related pages](https://docs.kentico.com/k11/developing-websites/defining-website-content-structure/page-types/advanced-content-modeling.md) assigned into fields of the _Pages_ type did not work correctly. Related pages were incorrectly retrieved in the preferred culture selected by the current user (stored in the _CMSPreferredCulture_ cookie). Now related pages are loaded according to the culture of the base page. Additionally, developers can now use the [DocumentQuery](https://docs.kentico.com/k11/custom-development/working-with-pages-in-the-api.md) API to parametrize the retrieval within the _get_ accessor of the corresponding property in the generated class (for the pages returned by the internally called _GetRelatedDocuments_ method).

> **Info:** Additionally, all bugs fixed within the Kentico 10 hotfixes are included in version 11. See the [Bugtracker on DevNet](http://devnet.kentico.com/download/hotfixes) for a full list (click **Fixed Bugs**).

## &#x20;Breaking changes (functionality, data structure, API)

### Platform

- The _Kentico Authenticator_ mobile application used for multi-factor authentication is no longer supported.After upgrading, all users who have multi-factor authentication enabled need to initialize a different authenticator application (the system displays a new secret key during each user's first sign-in). See [Configuring multi-factor authentication](https://docs.kentico.com/k11/managing-users/user-registration-and-authentication/configuring-multi-factor-authentication.md).
- The _Kentico.Libraries.Dependencies_ NuGet package will not be released for Kentico 11. Instead, the integration packages that provide the Kentico API (e.g. _Kentico.Libraries_) now directly have dependencies on other NuGet packages that provide the required third-party libraries.
- The _Kentico.Libraries.Tests_ NuGet package used to create [automated tests](https://docs.kentico.com/k11/custom-development/writing-automated-tests.md) now requires [NUnit 3.6.1](https://www.nuget.org/packages/NUnit/) (the dependency was updated from version 3.2).
- The [ASP.NET AJAX Control Toolkit](http://www.ajaxcontroltoolkit.net/) used by the Kentico project was updated to version 17.1.1.

  - Any occurrences of the _ajaxToolkit:ToolkitScriptManager_ control in custom code need to be replaced by the _asp:ScriptManager_ control.
  - The system no longer links the default AJAX Control Toolkit CSS styles onto website pages. If your site uses the default styles to set the appearance of the _Tabs layout_ web part or any custom components that use AJAX Control Toolkit controls, you need to replace the styles in your own stylesheets.
  - For detailed information, see the [Upgrading from v7.x and below](https://github.com/DevExpress/AjaxControlToolkit/wiki/Upgrading-from-v7.x-and-below) article.
- The jQuery library used by the Kentico administration interface was updated to version 2.2.4 (may affect scripts used in the interface of custom modules).
- The default character encoding used when generating XML files in the continuous integration repository was changed to UTF-8. If necessary, you can change the encoding back to UTF-16 using the _CMSCIEncoding_ web.config key.
- The _\~/CMSPages/scheduler.aspx_ system page was removed from the web project. The [automatic scheduler](https://docs.kentico.com/k11/configuring-kentico/scheduling-tasks/configuring-scheduled-task-execution.md) now uses the _\~/CMSPages/Scheduler.ashx_ route instead (registered and handled by code in the _CMS.Scheduler.dll_ assembly).
- Functionality related to filtering of URL query string parameters was removed (including the _CMSCheckParameters_ and _CMSReportCheckParameters_ web.config keys, and _CMS/parameters.config_ file). If necessary, use [Request Filtering](https://www.iis.net/configreference/system.webserver/security/requestfiltering) on the IIS level or custom code (for example [RequestEvents handlers](https://docs.kentico.com/k11/custom-development/handling-global-events/reference-global-system-events.md#requestevents)).
- The _bootstrap-additional.css_ and _bootstrap-additional.less_ stylesheet files in the _CMS\App\_Themes\Default_ folder were removed and their content merged into the _bootstrap.css/.less_ files. Any customizations made in the removed files need to be manually transferred to _bootstrap.css/.less._
- The _CMS.DataProviderSQL.dll_ assembly was merged into _CMS.DataEngine.dll_ and   _CMS.FileSystemStorage.dll_ was merged into _CMS.IO.dll_  . Any manually added references to the old assemblies from custom projects need to be removed (add a reference to _CMS.DataEngine.dll_ or _CMS.IO.dll_ if necessary). The merge does not change the  _CMS.DataProviderSQL_ and   _CMS.FileSystemStorage_   namespaces or the related API.
- The _Numeric up/down_ [form control](https://docs.kentico.com/k11/custom-development/developing-form-controls.md) no longer supports the option to load values using a web service. The related properties (_ServiceDownPath_, _ServiceDownMethod_, etc.) were removed from the form control.
- The _Security code_ [form control](https://docs.kentico.com/k11/custom-development/developing-form-controls.md) is now implemented by a class within the _CMS.FormEngine.Web.UI_ assembly. The original _\~/CMSFormControls/Captcha/SecurityCode.ascx_ user control file was removed. If your project contains custom web forms or user controls that use the original _SecurityCode.ascx_ file, you need to remove the related _@ Register_ directives after upgrading to Kentico 11.
- The _classname_, _postforumid_ and _postforumgroupid_ fields in [search indexes](https://docs.kentico.com/k11/configuring-kentico/setting-up-search-on-your-website/using-locally-stored-search-indexes/creating-local-search-indexes.md) of the _Forums_ type were renamed to _\_classname_, _\_postforumid_ and _\_postforumgroupid_ respectively. When upgrading existing projects, you need to adjust any filtering options or search conditions using the given fields.
- The content field of [custom smart search indexes](https://docs.kentico.com/k11/configuring-kentico/setting-up-search-on-your-website/using-locally-stored-search-indexes/creating-local-search-indexes/creating-custom-smart-search-indexes.md) was renamed from _\_customcointent_ to _\_customcontent_.
- It is no longer possible to disable the [CSRF token security mechanism](https://docs.kentico.com/k11/securing-websites/developing-secure-websites/cross-site-request-forgery-csrf-xsrf.md) for specific pages by setting the _CsrfProtectionDisabledOnPage_ key in the _Page.Items_ property within page code (Page.Items\["CsrfProtectionDisabledOnPage"] = true).
- The _Cookie law consent_ web part was renamed to _Cookie law and tracking consent_. The _Preview cookie level_ property was removed from both _Cookie law and tracking consent_ and _Simple cookie law consent_ – use the live site to test the web part's functionality.
- The _Default user cookie level_ property was removed from the _Cookie law and tracking consent_ and _Simple cookie law consent_ web parts. The _CMSDefaultCookieLevel_ web.config key was also removed. The default cookie level can be now set for each site in the _Settings_ application in the _System_ category.

### Content management

- The _\~\App\_Data\CMSModules\DeviceProfiles\devices.xml_ file is now obsolete and the _Devices_ selector previously available when editing [device profiles](https://docs.kentico.com/k11/developing-websites/developing-websites-for-mobile-devices/creating-device-profiles.md) in the _Device profiles_ application was removed.
- 51Degrees device detection was removed from the system by default. If you wish to use advanced device detection, you need to [integrate 51Degrees](https://docs.kentico.com/k11/developing-websites/developing-websites-for-mobile-devices/configuring-51degrees-device-detection.md) through NuGet packages.
  - The _CMSEnable51D_ web.config key was removed and is now obsolete.
  - The _Current device is mobile_ and _Current device max screen size is in range_  [macro rules](https://docs.kentico.com/k11/macro-expressions/writing-macro-conditions/creating-macro-rules.md) were removed. If you need to replace them, integrate 51Degrees and create your own custom rules.
- The _CurrentDevice_  [macro object](https://docs.kentico.com/k11/developing-websites/developing-websites-for-mobile-devices/device-macros.md) no longer directly provides device parameters as properties. Instead, you need to access the properties in the _CurrentDevice.Data\[""]_ format. If you want to continue using the original _CurrentDevice_ property macros, you need to [integrate 51Degrees](https://docs.kentico.com/k11/developing-websites/developing-websites-for-mobile-devices/configuring-51degrees-device-detection.md) through NuGet packages and create a custom _CurrentDevice_ class.
- The system no longer supports the Flash format (it is not possible to insert Flash files [using the editor](https://docs.kentico.com/k11/managing-website-content/working-with-pages/editing-pages/using-the-editor/inserting-media-content-using-the-editor.md)). When an audio or video file is inserted into a page, the system now renders appropriate HTML5 markup (see [Configuring media libraries](https://docs.kentico.com/k11/managing-website-content/configuring-the-environment-for-content-editors/configuring-media-libraries.md)).
- The following web parts were removed: _WMP Video_, _Quick time_, _Flash_(together with the _Flash_ widget), _Search engine results highlighter_ and _Search accelerator (for IE8 and higher)_.
- The _\~/CMSModules/Content/CMSPages/MultiFileUploader.ashx_ and _\~/CMSModules/MediaLibrary/CMSPages/MultiFileUploader.ashx_ files were removed from the web project. The same URLs are now handled by routes registered in the _CMS.DocumentEngine.Web.UI.dll_ and _CMS.MediaLibrary.Web.UI.dll_ assemblies.
- The _CustomTableForm_ control no longer checks for a _Read_ permission when editing custom table records. If you have any custom functionality that uses this control and wish to check for permissions when editing custom table records, you need to manually add the permission check to the page or component that contains the control.
- The XML files defining web part and widget system properties were moved from the  _\~/App\_Data/CMSModules/PortalEngine/Properties_  folder into the  _CMS.PortalEngine.dll_  assembly. Customization of these properties is now only possible in the administration interface (edit individual objects on the  _System properties_ tab in the Web parts or Widgets application).
- The _Web part zone_ web part no longer provides any of the properties from the _Always visible settings_ category. Use custom CSS instead if you wish to display the web part zone content at a fixed location.
- The system no longer assigns browser version CSS classes to the body element of all pages (see [Browser and language-specific styles](https://docs.kentico.com/k11/developing-websites/designing-websites-using-css.md#browser-and-languagespecific-styles)). Additionally, the assigned browser type CSS classes may be different than in previous versions (the _HttpBrowserCapabilities_ class of the .NET Framework is now used for browser detection).

#### Translation services

- The authentication process for the Microsoft translator service changed, as the service moved from Microsoft DataMarket to Microsoft Azure. For more information about configuring the translation service provided by Microsoft, see [Machine translation - Microsoft Translator](https://docs.kentico.com/k11/multilingual-websites/configuring-translation-services/machine-translation-microsoft-translator.md).
- The option to set the priority of translation submissions for the [Translations.com](https://docs.kentico.com/k11/multilingual-websites/configuring-translation-services/human-translation-services-translations-com.md) service is no longer supported.
- The data format used for the [Translations.com](http://Translations.com) service was changed. When upgrading sites with an already set up translation project using the [Translations.com](http://Translations.com) service, you need to contact a [Translations.com](http://Translations.com) representative and inform them about the upgrade to Kentico 11. [Translations.com](http://Translations.com) will update the configuration of your Project Director.

### REST service

- The system generates [authentication hash](https://docs.kentico.com/k11/integrating-3rd-party-systems/kentico-rest-service/authenticating-rest-requests.md) values differently for REST URLs containing a virtual directory. Any REST requests with an old authentication hash and a virtual directory in the URL become invalid – you need to generate new authentication hashes in the _Settings_ application.
- The REST service now processes decimal and double values in the en-US culture (with the period character as the decimal separator). If you send REST requests containing decimal values in other culture formats (e.g. with a comma as the decimal separator), you need to update your request source to use the en-US format. Otherwise the system may process the values into different numbers than expected.

### On-line marketing

- The system no longer stores IP addresses for logged activities. As a result, it is no longer possible to specify [activity scoring rules](https://docs.kentico.com/k11/on-line-marketing-features/managing-your-on-line-marketing-features/contact-management/scoring-contacts/managing-contact-scores.md#assigning-score-points-based-on-activities) based on the IP address of the contact who performed the activity.
- The obsolete _\~/CMSPages/WebAnalyticsService.asmx_ web service endpoint was removed. If you need to perform custom logging of [web analytics](https://docs.kentico.com/k11/on-line-marketing-features/managing-your-on-line-marketing-features/web-analytics.md), use the _\~/cmsapi/webanalytics_ route instead. The original _LogSearch_ and _LogHits_ methods of the endpoint also need to be replaced by the _LogSearchHit_ and _LogHit_ methods respectively, for example: _\~/cmsapi/webanalytics/logsearchhit_

#### Email marketing

- Kentico 11 sites have a maximum limit on the number of created email feeds, based on the used [License Edition](https://www.kentico.com/purchase/configure-your-license) (5 newsletters for Kentico CMS Base, 10 newsletters for Kentico CMS Ultimate, unlimited newsletters and email campaigns for Kentico EMS). See the [Email marketing](https://docs.kentico.com/k11/on-line-marketing-features/managing-your-on-line-marketing-features/email-marketing.md) page for detailed information.
- Kentico 11 sites have a maximum limit on the number of marketable recipients for each email feed, based on the used [License Edition](https://www.kentico.com/purchase/configure-your-license) (500 for Kentico CMS Base, 5000 for Kentico CMS Ultimate, unlimited for Kentico EMS).
- The possibility to create page-based (dynamic) newsletters was removed from the system. Existing page-based newsletters are unaffected when upgrading to Kentico 11, but are no longer supported.
- The _ActivationLink, ActivationUrl, Email, FirstName, LastName, UnsubscribeFromCampaign,_ and _UnsubscribeFromAllCampaigns_ email marketing macro expressions were removed. Their equivalents are now exposed via the _Recipient, Email,_ and _EmailFeed_ objects. See [Reference - Email marketing macro expressions](https://docs.kentico.com/k11/on-line-marketing-features/configuring-and-customizing-your-on-line-marketing-features/configuring-email-marketing/reference-email-marketing-macro-expressions.md).
- Email marketing [templates](https://docs.kentico.com/k11/on-line-marketing-features/configuring-and-customizing-your-on-line-marketing-features/configuring-email-marketing/preparing-email-templates.md) can no longer be edited using a WYSIWYG editor. Instead, the interface provides a more suitable HTML code editor (also allows designers to insert [email widgets](https://docs.kentico.com/k11/on-line-marketing-features/configuring-and-customizing-your-on-line-marketing-features/configuring-email-marketing/preparing-email-widgets.md)).
- The _Newsletter archive_ web part was removed.
- The option to set default and additional templates for [email feeds](https://docs.kentico.com/k11/on-line-marketing-features/managing-your-on-line-marketing-features/email-marketing.md) was removed. Each email feed now has assigned templates without distinction between default and additional templates.
- It is no longer possible to configure links tracked in marketing emails to use case-sensitive URL paths (the _CMSLinkTrackerKeepUrlCase_ web.config key was removed). Two same URL paths (in a case-insensitive manner) are now always represented by an identical tracking link.
- The _Newsletter_ [editor toolbar set](https://docs.kentico.com/k11/managing-website-content/configuring-the-environment-for-content-editors/configuring-the-editor/personalizing-the-editor-toolbars-and-buttons.md) was removed. Instead, use the new email builder and email widgets to [compose](https://docs.kentico.com/k11/on-line-marketing-features/managing-your-on-line-marketing-features/email-marketing/composing-marketing-emails.md) the content of marketing emails.

### E-commerce

- Kentico 11 sites have a maximum limit on the number of enabled products (SKUs), based on the used [License Edition](https://www.kentico.com/purchase/configure-your-license). Initially, the limit is 100 for _Kentico CMS Base_, 500 for _Kentico CMS Ultimate_, and unlimited for _Kentico EMS_. After evaluating feedback from partners and clients, Kentico has decided to release [hotfix 11.0.15](https://devnet.kentico.com/download/hotfixes), which increases the limits (500 for _Kentico CMS Base_, unlimited for _Kentico CMS Ultimate_ and _Kentico EMS_). See the [Products](https://docs.kentico.com/k11/e-commerce-features/managing-your-store/products.md) page for detailed information.
- All e-commerce fields that store prices or other monetary values now use the decimal data type, with a precision of 18 total digits and 9 decimal places. The changes affect objects such as products, shopping carts, orders, payments, discounts, shipping costs, taxes, currency exchange rates, etc.
- [Orders](https://docs.kentico.com/k11/e-commerce-features/managing-your-store/orders.md) in Kentico 11 use a different data structure and calculation model than in previous versions. As a result, the system does not fully support upgrading or import of existing orders – the final price totals of the orders remain the same, but you may notice inconsistencies when viewing the details of upgraded orders or the values of specific columns in the _COM\_Order_ or _COM\_OrderItem_ database tables (item prices, various subtotals, discounts, etc.). If you need to keep archives of existing orders with full details, we recommend exporting the order data to an external system or file.
- Kentico no longer provides any functionality for collecting and tracking donations. The _Donation_ product representation was removed for SKUs, along with all related web parts (Donate, Donations), and reports. When upgrading to Kentico 11, any existing Donation products are converted to Standard products. See [Collecting donations](https://docs.kentico.com/k11/integrating-3rd-party-systems/collecting-donations.md) to learn about the current recommendations for managing donations.
- The system no longer allows users to input prices with more decimal places than allowed by the site's [main currency](https://docs.kentico.com/k11/e-commerce-features/configuring-your-store/configuring-currencies.md). This should no longer be necessary as a workaround for tax calculations – the system can now be [configured](https://docs.kentico.com/k11/e-commerce-features/configuring-your-store/configuring-taxes.md) to store and process price values that already include tax.
- The supported signatures of transformation methods for getting product prices and other related values were changed. Most of the methods can now only be called without parameters. For detailed information, see [Reference - Transformation methods](https://docs.kentico.com/k11/developing-websites/loading-and-displaying-data-on-websites/writing-transformations/reference-transformation-methods.md) (_ASCX_ transformations) and [Reference - Macro methods](https://docs.kentico.com/k11/macro-expressions/reference-macro-methods.md) (_Text / XML_ transformations). The related _Display price including catalog discounts_ and _Display price including taxes_ settings were removed.
- The final price of purchases is now stored in the new _GrandTotal_ field of shopping cart and order objects instead of the _TotalPrice_ field. Unlike the _TotalPrice_ field, the _GrandTotal_ includes reductions from [gift cards](https://docs.kentico.com/k11/e-commerce-features/managing-your-store/discounts/working-with-gift-cards.md). The change affects both the API and macro expressions. When upgrading sites, we recommend replacing occurrences of the _TotalPrice_ field with _GrandTotal_ in macros (for example in invoices and order notification email templates) and in custom code.
- Shopping cart item objects no longer provide the _UnitPriceAfterDiscount, UnitPriceAfterDiscountInMainCurrency, UnitTotalPrice_ and _UnitTotalPriceInMainCurrency_ properties. The change affects both the API and macro expressions. When upgrading sites, replace occurrences in macros with the _UnitPrice_ (the price of a single item, including catalog discounts) or _TotalPrice_ (the unit price multiplied by the number of items) properties, for example: _{% ShoppingCartItem.UnitPrice %}_
- The _Shopping cart totals_ web part no longer supports the following options for its _Total to display_ property:

  - _Products excl. tax total_
  - _Products tax total_
  - _Shipping excl. tax total_
  - _Shipping tax total_
  - _Buy X Get Y and Order discounts total_
  - _Buy X Get Y and Order discounts summary_
  - _Discounts total_

    > **Info:** Taxes are now included in the _Products total_ and _Shipping total_ values according to the site's _Prices include tax_ [ setting](https://docs.kentico.com/k11/configuring-kentico/managing-sites/configuring-settings-for-sites/settings-e-commerce.md). After upgrading to Kentico 11, any instances of the _Shopping cart totals_ web part using the removed _Total to display_ values will not display any content and need to be re-configured to one of the valid options or removed.
- The system now performs all shopping cart calculations in the currency selected for the given shopping cart. Macros for accessing shopping cart and shopping cart item values (or order and order item values) in the site's main currency are no longer available, for example: _{% ECommerceContext.CurrentShoppingCart.TotalShippingInMainCurrency %}_. Instead, you need to work in the shopping cart's currency and use the corresponding properties without the _InMainCurrency_ suffix.
- The _IsProductInShoppingCart_ macro method of shopping cart objects was removed.
- Kentico 11 introduces many changes that affect the processing of product prices. To ensure that prices are calculated and displayed correctly, always use the appropriate macro methods or ASCX transformation methods rather than directly accessing values from price columns or properties (such as _SKUPrice_).
- When [editing orders](https://docs.kentico.com/k11/e-commerce-features/managing-your-store/orders.md) in the administration interface, the system no longer recalculates the unit prices of existing order items (for example based on the current [catalog](https://docs.kentico.com/k11/e-commerce-features/managing-your-store/discounts/working-with-catalog-discounts.md) or [volume discounts](https://docs.kentico.com/k11/e-commerce-features/managing-your-store/discounts/working-with-volume-discounts.md)). Any required changes of unit prices in existing orders need to be done manually by store administrators.
- [Currencies](https://docs.kentico.com/k11/e-commerce-features/configuring-your-store/configuring-currencies.md) that have an empty value in their _Decimal places_ property now allow 2 decimal places by default (in Kentico 10 or older, an empty value did not allow any decimal places).

#### Discounts

- [Volume discounts](https://docs.kentico.com/k11/e-commerce-features/managing-your-store/discounts/working-with-volume-discounts.md) now require a _Minimum quantity_ of at least 2 (it is no longer possible to create volume discounts for 1 item). After upgrading to Kentico 11, any volume discounts with a minimum quantity of 1 do not apply.
- The _TotalDiscount_ property of shopping cart item objects no longer includes discounts that affect the price of individual product units ([catalog](https://docs.kentico.com/k11/e-commerce-features/managing-your-store/discounts/working-with-catalog-discounts.md) and [volume discounts](https://docs.kentico.com/k11/e-commerce-features/managing-your-store/discounts/working-with-volume-discounts.md)), but only applied [Buy X Get Y discounts](https://docs.kentico.com/k11/e-commerce-features/managing-your-store/discounts/working-with-buy-x-get-y-discounts.md) and [product coupons](https://docs.kentico.com/k11/e-commerce-features/managing-your-store/discounts/working-with-product-coupons.md). The change affects both the API and macro expressions.
- The _ShoppingCartCouponCode_ and _HasUsableCoupon_ properties of shopping cart objects, and the _OrderCouponCode_ property of order objects were removed. The change affects both the API and macro expressions. If you used these properties to display coupon codes on your site's pages, we recommend displaying the related discounts instead as described in   [Displaying shopping cart details on pages](https://docs.kentico.com/k11/e-commerce-features/configuring-your-store/checkout-process/displaying-shopping-cart-details-on-pages.md).
- The _Discount coupon_ web part was renamed to _Coupon codes_ (Display name only) and now requires a transformation to display the applied coupon codes. When upgrading sites that contain the web part, you need to prepare a suitable transformation for your site's design, configure each instance of the web part, and assign the transformation. See [Working with coupon codes](https://docs.kentico.com/k11/e-commerce-features/managing-your-store/discounts/working-with-coupon-codes.md).
- If a store manager changes an existing order in the _Orders_ application, the recalculation evaluates the validity of discounts using the date and time when the order was created, not the current time.
- The following breaking changes affect [order discount macro rules](https://docs.kentico.com/k11/e-commerce-features/customizing-and-developing-your-store/configuring-discount-rules.md):

  - The default  _Shopping cart contains product_ and _Shopping cart contains products_ macro rules were removed. Use the new  _Order contains products_ rule instead.
  - The default _Total weight of order is under_ macro rule was updated to use a different macro condition. When upgrading websites to Kentico 11, you need to re-save any existing conditions using the rule.
  - The _ShoppingCart_ object is no longer available when writing conditions of custom order discount macro rules. Instead, the macro context directly provides properties related to the shopping cart or order calculation, such as _Currency_, _Customer_, _PaymentOption_, _ShippingOption_, _GrandTotal_, etc.
  - See [Configuring discount rules](https://docs.kentico.com/k11/e-commerce-features/customizing-and-developing-your-store/configuring-discount-rules.md) and [Adding a discount rule with a custom method](https://docs.kentico.com/k11/e-commerce-features/customizing-and-developing-your-store/configuring-discount-rules/adding-a-discount-rule-with-a-custom-method.md) for more information.
- The following breaking changes affect [Product coupons](https://docs.kentico.com/k11/e-commerce-features/managing-your-store/discounts/working-with-product-coupons.md):
  - Global product coupons are no longer supported (i.e. product coupons must always be related to a specific site).
  - The _Product coupons_ application and the related objects now require the _Read discounts_ and _Modify discounts_ permissions for the _E-commerce_ module instead of the _Read data_ and _Modify data_ permissions.
  - The system now applies product coupon discounts to individual shopping cart or order items, rather than the shopping cart or order as a whole (affects related properties in macros and the API).
  - The _DiscountCoupon_ macro object is no longer available in the context of [invoices](https://docs.kentico.com/k11/e-commerce-features/configuring-your-store/configuring-invoices.md) or [e-commerce email templates](https://docs.kentico.com/k11/e-commerce-features/configuring-your-store/configuring-e-commerce-email-notifications.md). After upgrading, invoice configurations and email templates need to be updated. If you wish to display detailed information about applied product coupons, use the _DiscountSummary_ object available for individual _ContentTable_ items.
  - When upgrading to Kentico 11, existing product coupon data is transferred, but without global product coupons and coupons assigned to products using the _All products except for these_ option. See [Upgrading to Kentico 11](https://docs.kentico.com/k11/installation/upgrading-to-kentico-11.md) for details.
- The following breaking changes affect [Buy X Get Y discounts](https://docs.kentico.com/k11/e-commerce-features/managing-your-store/discounts/working-with-buy-x-get-y-discounts.md):
  - The system now applies Buy X Get Y discounts to individual shopping cart or order items, rather than the shopping cart or order as a whole (affects related properties in macros and the API).
  - The _OrderRelatedDiscountSummaryItems_ macro collection is no longer available in the  context of [invoices](https://docs.kentico.com/k11/e-commerce-features/configuring-your-store/configuring-invoices.md) or [e-commerce email templates](https://docs.kentico.com/k11/e-commerce-features/configuring-your-store/configuring-e-commerce-email-notifications.md)  .  After upgrading, invoice configurations and email templates need to be updated.  If you wish to display detailed information about applied Buy X Get Y discounts, use  the _DiscountSummary_ object available for individual _ContentTable_ items.
  - Buy X Get Y discounts can no longer be displayed on pages using the _Shopping cart totals_ web part. Instead, see the recommendations in [Displaying shopping cart details on pages](https://docs.kentico.com/k11/e-commerce-features/configuring-your-store/checkout-process/displaying-shopping-cart-details-on-pages.md).
- The following breaking changes affect [Order discounts](https://docs.kentico.com/k11/e-commerce-features/managing-your-store/discounts/working-with-order-discounts.md):
  - Order discounts are now always percentage-based (i.e. flat value order discounts are no longer supported, use [gift cards](https://docs.kentico.com/k11/e-commerce-features/managing-your-store/discounts/working-with-gift-cards.md) for this purpose).
  - When upgrading to Kentico 11, the system converts all flat order discounts to percentage-based and disables them.
  - When calculating the price of shopping carts and orders, the system now applies order discounts after other types of discounts, but before adding shipping costs and taxes.
  - Details of individual order discounts applied to the current shopping cart can no longer be displayed on pages using the _Shopping cart totals_ web part.  Instead, see the recommendations in [Displaying shopping cart details on pages](https://docs.kentico.com/k11/e-commerce-features/configuring-your-store/checkout-process/displaying-shopping-cart-details-on-pages.md).

#### Taxes

- [Products](https://docs.kentico.com/k11/e-commerce-features/managing-your-store/products.md), [departments](https://docs.kentico.com/k11/e-commerce-features/managing-your-store/products/categorizing-products/departments.md), and [shipping options](https://docs.kentico.com/k11/e-commerce-features/configuring-your-store/configuring-shipping-options.md) can now only have one [tax class](https://docs.kentico.com/k11/e-commerce-features/configuring-your-store/configuring-taxes.md) assigned. After upgrading to Kentico 11, only one of the taxes remains assigned for objects that originally had multiple taxes.
- The system no longer stores or displays tax values separately for individual items in shopping carts and orders (only the total overall tax). After upgrading, you may need to update any custom transformations applied to _ContentTable_ data in [invoices](https://docs.kentico.com/k11/e-commerce-features/configuring-your-store/configuring-invoices.md) or [e-commerce email templates](https://docs.kentico.com/k11/e-commerce-features/configuring-your-store/configuring-e-commerce-email-notifications.md).
- The _ContentTaxesTable_ and _ShippingTaxesTable_ macro objects are no longer available in the context of [invoices](https://docs.kentico.com/k11/e-commerce-features/configuring-your-store/configuring-invoices.md) or [e-commerce email templates](https://docs.kentico.com/k11/e-commerce-features/configuring-your-store/configuring-e-commerce-email-notifications.md). After upgrading, invoice configurations and email templates need to be updated to use the new _TaxSummary_ object instead. If using custom transformations to display the tax items, you need to update the transformation code to use _Name_ and _Value_ properties instead of the original _TaxClassDisplayName_ and _TaxSummary._

#### Payment methods

- The functionality of the default PayPal payment provider was modified. The changes introduce different requirements, configuration steps and settings. Follow the instructions in [Configuring PayPal](https://docs.kentico.com/k11/e-commerce-features/configuring-your-store/configuring-payment-methods/configuring-paypal.md) to set up the payment provider in Kentico 11.
- The functionality of the default Authorize.Net payment provider was modified. The changes introduce different requirements, limitations and configurations steps. Follow the instructions in [Configuring Authorize.NET](https://docs.kentico.com/k11/e-commerce-features/configuring-your-store/configuring-payment-methods/configuring-authorize-net.md) to set up the payment provider in Kentico 11.
- Due to changes in the custom payment gateway API, any custom payment gateways need to be rewritten for Kentico 11. See [Creating a custom payment gateway](https://docs.kentico.com/k11/e-commerce-features/customizing-and-developing-your-store/payment-related-customizing/creating-a-custom-payment-gateway.md).
- The provider classes of the default payment gateways were moved to the _CMS.Ecommerce_ assembly and namespace. When upgrading, any [payment methods](https://docs.kentico.com/k11/e-commerce-features/configuring-your-store/configuring-payment-methods.md) using the original class locations are automatically updated.
  - [PayPal](https://docs.kentico.com/k11/e-commerce-features/configuring-your-store/configuring-payment-methods/configuring-paypal.md): CMS.Ecommerce.CMSPayPalProvider
  - [Authorize.Net](https://docs.kentico.com/k11/e-commerce-features/configuring-your-store/configuring-payment-methods/configuring-authorize-net.md): CMS.Ecommerce.CMSAuthorizeNetProvider
  - [Customer credit](https://docs.kentico.com/k11/e-commerce-features/configuring-your-store/configuring-payment-methods/configuring-customer-credit.md): CMS.Ecommerce.CMSCreditPaymentProvider

### Social & Community

- The _Site name_ and _Event scope_ properties of the _Event management_ [dashboard widget](https://docs.kentico.com/k11/configuring-kentico/working-with-widget-dashboards.md) were removed. The widget now displays all events from the current site by default.

### Database

#### General

- The following columns were removed from the _CMS\_User_ database table due to the changes in [multi-factor authentication](https://docs.kentico.com/k11/managing-users/user-registration-and-authentication/configuring-multi-factor-authentication.md):
  - _UserTokenID_
  - _UserTokenIteration_
- The following columns were removed from the _CMS\_UserSettings_ database table:
  - _UserDataComUser_
  - _UserDataComPassword_
- The following columns were removed from the _CMS\_Email_ database table:
  - _EmailSetName_
  - _EmailSetRelatedID_
- The obsolete _CMS\_InlineControl_ database table was completely removed.

#### E-commerce

- The following database columns were removed:
  - _COM\_SKU_ table
    - _SKUPrivateDonation_
    - _SKUMinPrice_
    - _SKUMaxPrice_
  - _COM\_Order_ table
    - _OrderCouponCode_ (renamed to _OrderCouponCodes_ – orders can now have multiple coupon codes applied)
    - _OrderDiscountCouponID_
    - _OrderExchangeRate_
    - _OrderShippingTaxes_ (shipping taxes are now included within the data of the new _OrderTaxSummary_ column)
    - _OrderTotalDiscountInMainCurrency_
    - _OrderTotalShippingInMainCurrency_
    - _OrderTotalTaxInMainCurrency_
  - _COM\_OrderItem_ table
    - _OrderItemIsPrivate_
    - **OrderItemPrice**
    - _OrderItemSKU_
    - _OrderItemUnitTotalTaxInMainCurrency_
    - _OrderItemUnitTotalDiscountInMainCurrency_
  - _COM\_ShoppingCart_ table
    - _ShoppingCartCouponCode_ (coupon codes of shopping carts are now stored separately in the _COM\_ShoppingCartCouponCode_ table)
  - _COM\_ShoppingCartSKU_ table
    - _CartItemIsPrivate_
    - _CartItemPrice_
- The following database tables were removed, because [products](https://docs.kentico.com/k11/e-commerce-features/managing-your-store/products.md), [departments](https://docs.kentico.com/k11/e-commerce-features/managing-your-store/products/categorizing-products/departments.md) and [shipping options](https://docs.kentico.com/k11/e-commerce-features/configuring-your-store/configuring-shipping-options.md) now only allow a single tax class:
  - _COM\_SKUTaxClasses_ – the assigned tax class is now stored in the _COM\_SK&#x55;_&#x74;able in the _SKUTaxClassID_ column (new column)
  - _COM\_DepartmentTaxClass_ – the assigned tax class is now stored in the _COM\_Department_ table in the _DepartmentDefaultTaxClassID_ column (existing, previously unused column)
  - _COM\_ShippingOptionTaxClass_ – the assigned tax class is now stored in the _COM\_ShippingOption_ table in the _ShippingOptionTaxClassID_ column (new column)
- The _COM\_DiscountCoupon_ and _COM\_SKUDiscountCoupon_ database tables were removed. Data related to [Product coupons](https://docs.kentico.com/k11/e-commerce-features/managing-your-store/discounts/working-with-product-coupons.md) is now stored in the _COM\_MultiBuyDiscount_, _COM\_MultiBuyCouponCode, COM\_MultiBuyDiscountSKU_ and _COM\_MultiBuyDiscountDepartment_ tables, together with the data of [Buy X Get Y discounts](https://docs.kentico.com/k11/e-commerce-features/managing-your-store/discounts/working-with-buy-x-get-y-discounts.md). Product coupon records in the _COM\_MultiBuyDiscount_ table can be identified by the value of the _MultiBuyDiscountIsProductCoupon_ column, which is set to 1 (true).

#### On-line marketing

- The following columns were removed from the _Newsletter\_EmailTemplate_ database table and replaced by the new _TemplateCode_ column:
  - _TemplateBody_
  - _TemplateStylesheetText_
  - _TemplateHeader_
  - _TemplateFooter_
- The _NewsletterTemplateID_ column was removed from the _Newsletter\_Newsletter_ database table. Email feeds no longer have a default email template.
- The _IssueShowInNewsletterArchive_ column was removed from the _Newsletter\_NewsletterIssue_ database table.
- The _ActivityIPAddress_ column was removed from the _OM\_Activity_ database table.

## &#x20;API

> **Note:** Search the [API changes](http://devnet.kentico.com/documentation/api-changes/kentico-11) page on DevNet to find all possible breaking changes in the API.

- The _UserName_ property of the _EvaluationContext_ class in the macro engine API no longer provides a reliable identifier of the macro's author (the value is empty for macro expressions signed by a user with an assigned macro signature identity). When implementing security conditions for [custom macro methods](https://docs.kentico.com/k11/macro-expressions/extending-the-macro-engine/registering-custom-macro-methods.md) or [fields](https://docs.kentico.com/k11/macro-expressions/extending-the-macro-engine/adding-custom-macro-fields.md), always check the _User_ property of _EvaluationContext_ instead. The _User_ property contains a _UserInfo_ object representing the correct user for both types of macro signatures (user name and macro signature identity).
- The default _InfoProvider_ classes no longer contain virtual _GetInfoInternal, SetInfoInternal_ and _DeleteInfoInternal_ methods. For any [custom providers](https://docs.kentico.com/k11/custom-development/customizing-providers.md) inheriting from a default _InfoProvider_ class that contain overrides of these methods, override the following methods instead:
  - _GetInfoById_ (and/or _GetInfoByCodeName, GetInfoByGuid)_
  - _SetInfo_
  - _DeleteInfo_
- The behavior of the _Columns_ parameter method was changed for the DocumentQuery API. When retrieving pages with the _Columns_ query parameter, the system automatically adds _ClassName_ to the list of retrieved columns. See [Working with pages in the API](https://docs.kentico.com/k11/custom-development/working-with-pages-in-the-api.md).

### E-commerce

- The type of members in the e-commerce API that represent prices and other monetary values was changed from _double_ to [decimal](https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/decimal) (affects object properties, method parameters and return types, etc.).
- The overall customization model was changed for many types of e-commerce functionality. Instead of inheriting from provider classes and overriding methods, you now need to create and register custom implementations of appropriate interfaces. See [E-commerce customization model](https://docs.kentico.com/k11/e-commerce-features/customizing-and-developing-your-store/e-commerce-customization-model.md) to learn more.
- If you perform shopping cart calculations in your custom code, you now need to explicitly call the _ShoppingCartInfo.Evaluate()_ method. The _Evaluate()_ method must also be called after setting _ShoppingCartInfo_ properties that affect the calculation results to ensure that all values are up to date. The  _InvalidateCalculations()_ method of _ShoppingCartInfo_ was removed.
- The API for implementing custom payment gateways was revised (without backward compatibility). Any custom payment gateways need to be rewritten for Kentico 11. See [Creating a custom payment gateway](https://docs.kentico.com/k11/e-commerce-features/customizing-and-developing-your-store/payment-related-customizing/creating-a-custom-payment-gateway.md).
- The following Info and InfoProvider classes were removed, because [products](https://docs.kentico.com/k11/e-commerce-features/managing-your-store/products.md), [departments](https://docs.kentico.com/k11/e-commerce-features/managing-your-store/products/categorizing-products/departments.md) and [shipping options](https://docs.kentico.com/k11/e-commerce-features/configuring-your-store/configuring-shipping-options.md) now only allow a single tax class:

  - _SKUTaxClassInfo_ and _SKUTaxClassInfoProvider_
  - _DepartmentTaxClassInfo_ and _DepartmentTaxClassInfoProvider_
  - _ShippingOptionTaxClassInfo_ and _ShippingOptionTaxClassInfoProvider_
- The Info and InfoProvider classes originally used by [product coupons](https://docs.kentico.com/k11/e-commerce-features/managing-your-store/discounts/working-with-product-coupons.md) were removed (_DiscountCouponInfo, DiscountCouponInfoProvider, SKUDiscountCouponInfo_, _SKUDiscountCouponInfoProvider_). Use the _MultiBuyDiscount_ Infos and InfoProviders instead. See the [Discount API examples](https://docs.kentico.com/api11/e-commerce/discounts.md).
- The API used to customize  the evaluation or application of [Buy X Get Y discounts](https://docs.kentico.com/k11/e-commerce-features/managing-your-store/discounts/working-with-buy-x-get-y-discounts.md)  was changed:
  - Custom classes that inherit from _MultiBuyDiscountsEvaluator_ now need to be registered  as the implementation of the  _IMultiBuyDiscountsEvaluator_ interface  using the _RegisterImplementation_ assembly attribute  (instead of registration within a custom inherited  _MultiBuyDiscountInfoProvider_ ). Additionally, the signatures of the base class's virtual methods were changed to match the new e-commerce API.
  - Inheriting from the  _MultiBuyDiscountsApplicator_ class is no longer possible. For advanced custom scenarios related to discount application, we recommend creating a separate step (_IShoppingCartCalculator_ implementation) in the overall shopping cart calculation process. See [Customizing the shopping cart calculation](https://docs.kentico.com/k11/e-commerce-features/customizing-and-developing-your-store/shopping-cart-related-customizing/customizing-the-shopping-cart-calculation.md).

### On-line marketing

- When creating a new _IssueInfo_ object, you need to set its _IssueDisplayName_ property before it is saved to the database, i.e., before calling the _SetIssueInfo_ method.
