Release notes - Kentico 11

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”) compiler to run. Installations of Kentico 10 or newer contain the required packages by default.
  • Upgrades to Kentico 11 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) and other personal data regulations.

    • You can now define Consents 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 and erase personal data stored in the system.
  • Search – Added functionality for storing and maintaining Kentico content within Azure Search indexes. Azure Search is a cloud-based search solution with a wide range of features, including advanced support for faceted navigation. See the Using Azure Search chapter to learn more.

  • Search – Improved text extraction performance when using the attachment search 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.

  • Macros – When importing object or site packages, 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 (TOTP). The original Kentico Authenticator mobile application is no longer supported. See Configuring multi-factor authentication.

  • Continuous integration – The system now fully supports logging of staging tasks for all types of page operations performed when restoring continuous integration data. 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 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.

  • Continuous integration – Added support for Chat room objects. See Object types supported by continuous integration.

  • 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 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 by assigning an extender class.

  • Settings – Global administrators can now assign the Configure settings permission 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 that define applications for custom modules can now be configured to allow access only for users with the Global administrator privilege level. 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:

    • New ModulePackagingEvents.BuildNuSpecManifest global event 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 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.

  • 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

On-line marketing

  • Email marketing – New way of composing marketing emails via the Email builder. See Composing marketing emails.
  • Email marketing – New report insights for email feeds in the Email marketingapplication. See Viewing the email feed statistics.
  • Email marketing – The HTML markup of marketing emails can now be inspected when previewing emails in the Email marketing application. See Composing marketing emails.
  • Email marketing – Added support for CSS inlining to email templates. See Preparing email templates.
  • Email marketing – New {%ViewInBrowserUrl%} macro generating a link that allows users to view marketing emails in their browsers. See Preparing email templates.
  • Email marketing – New report insights for sent marketing emails in the Email marketingapplication, 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.
  • 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.
  • 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.
  • Contact management – New Contact activity details section on a contact’s contact profile page 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 Reporttab 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.

E-commerce

  • Products – Extended the options for organizing and classifying products – store managers can now assign Brands and Collections (in addition to manufacturers and suppliers).
  • Discounts – Catalog discounts, Buy X Get Y discounts and Product coupons can now be applied to products based on sets of included or excluded Product tree sections, Brands and Collections.
  • 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.
  • Gift cards – 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 – 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.
  • 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. The default payment gateways for PayPal and Authorize.Net can now be configured to use delayed capture transactions. The API for creating custom payment gateways 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.
  • 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.
  • 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.

Fixed issues (major)

  • The ChangeOrder, Sort, BulkInsert, BulkUpdate and BulkDelete system events are now available among the events of specific object types: <name>Info.TYPEINFO.Events.
  • When using classes generated for a page type on sites with content in multiple cultures, retrieving of related pages 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 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).

Additionally, all bugs fixed within the Kentico 10 hotfixes are included in version 11. See the Bugtracker on DevNet for a full list (click Fixed Bugs).

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.

  • 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 now requires NUnit 3.6.1 (the dependency was updated from version 3.2).

  • The ASP.NET AJAX Control Toolkit 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 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 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 on the IIS level or custom code (for example RequestEvents handlers).

  • 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 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 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 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 was renamed from _customcointent to _customcontent.

  • It is no longer possible to disable the CSRF token security mechanism 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 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 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 were removed. If you need to replace them, integrate 51Degrees and create your own custom rules.
  • The CurrentDevice macro object no longer directly provides device parameters as properties. Instead, you need to access the properties in the CurrentDevice.Data[“<property>”] format. If you want to continue using the original CurrentDevice property macros, you need to integrate 51Degrees 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). When an audio or video file is inserted into a page, the system now renders appropriate HTML5 markup (see Configuring media libraries).
  • The following web parts were removed: WMP VideoQuick timeFlash(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). 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.
  • The option to set the priority of translation submissions for the Translations.com service is no longer supported.
  • The data format used for the Translations.com service was changed. When upgrading sites with an already set up translation project using the Translations.com service, you need to contact a Translations.com representative and inform them about the upgrade to Kentico 11. Translations.com will update the configuration of your Project Director.

REST service

  • The system generates authentication hash 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 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, 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 (5 newsletters for Kentico CMS Base, 10 newsletters for Kentico CMS Ultimate, unlimited newsletters and email campaigns for Kentico EMS). See the Email marketing 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 (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.
  • Email marketing templates 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).
  • The Newsletter archive web part was removed.
  • The option to set default and additional templates for email feeds 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 was removed. Instead, use the new email builder and email widgets to compose 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. 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, which increases the limits (500 for Kentico CMS Base, unlimited for Kentico CMS Ultimate and Kentico EMS). See the Products 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 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 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. This should no longer be necessary as a workaround for tax calculations – the system can now be configured 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 (ASCX transformations) and Reference - Macro methods (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. 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

      Taxes are now included in the Products total and Shipping total values according to the site’s Prices include tax setting. 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 in the administration interface, the system no longer recalculates the unit prices of existing order items (for example based on the current catalog or volume discounts). Any required changes of unit prices in existing orders need to be done manually by store administrators.

  • Currencies 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 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 and volume discounts), but only applied Buy X Get Y discounts and product coupons. 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.

  • 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.

  • 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:

    • 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 and Adding a discount rule with a custom method for more information.
  • The following breaking changes affect Product coupons:

    • 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 or e-commerce email templates. 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 for details.
  • The following breaking changes affect Buy X Get Y discounts:

    • 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 or e-commerce email templates . 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.
  • The following breaking changes affect Order discounts:

    • Order discounts are now always percentage-based (i.e. flat value order discounts are no longer supported, use gift cards 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.

Taxes

  • Products, departments, and shipping options can now only have one tax class 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 or e-commerce email templates.
  • The ContentTaxesTable and ShippingTaxesTable macro objects are no longer available in the context of invoices or e-commerce email templates. 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 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 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.
  • The provider classes of the default payment gateways were moved to the CMS.Ecommerce assembly and namespace. When upgrading, any payment methods using the original class locations are automatically updated.

Social & Community

  • The Site name and Event scope properties of the Event management dashboard widget 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:
    • 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, departments and shipping options now only allow a single tax class:
    • COM_SKUTaxClasses – the assigned tax class is now stored in the COM_SKUtable 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 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. 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.

API

Search the API changes 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 or fields, 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 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.

E-commerce

  • The type of members in the e-commerce API that represent prices and other monetary values was changed from double to 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 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.

  • The following Info and InfoProvider classes were removed, because products, departments and shipping options 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 were removed (DiscountCouponInfo, DiscountCouponInfoProvider, SKUDiscountCouponInfo, SKUDiscountCouponInfoProvider). Use the MultiBuyDiscount Infos and InfoProviders instead. See the Discount API examples.

  • The API used to customize the evaluation or application of Buy X Get Y discounts 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.

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.