---
title: Upgrading to Kentico 11
related:
  - https://docs.kentico.com/k11/installation/upgrading-to-kentico-11/upgrading-custom-code.md
  - https://docs.kentico.com/k11/installation/upgrading-to-kentico-11/upgrading-projects-under-source-control.md
  - https://docs.kentico.com/k11/custom-development/best-practices-for-customization.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).

This page provides instructions for upgrading Kentico projects from version 10 to 11.

> **Info:** **Upgrading non-standard projects**
>
> - If you are upgrading a project hosted on Microsoft Azure, please follow the instructions on the [Upgrading Microsoft Azure projects](https://docs.kentico.com/k11/installation/upgrading-to-kentico-11/upgrading-microsoft-azure-projects.md) page.
> - If you are upgrading a source code instance, see [Upgrading source code instances](#upgrading-source-code-instances) for a general outline of the recommended process.

1. [Check the prerequisites and Upgrade overview](#prerequisites)
2. [Install the upgrade procedure](#installing-the-upgrade-procedure)
3. [Perform the required steps before the upgrade](#steps-before-you-start-the-upgrade)
4. [Apply the upgrade to your Kentico project](#applying-the-upgrade)
5. [Perform the required steps after the upgrade](#steps-after-performing-the-upgrade)

> **Warning:** **Warning**
>
> Using the [Export and Import](https://docs.kentico.com/k11/deploying-websites/exporting-and-importing-sites.md) features to move sites from older versions of Kentico is NOT a valid way to perform the upgrade. During such imports, you risk overwriting database objects and files with older equivalents that may not be compatible. The import may prevent your site and the system as a whole from working correctly.
>
> Importing of packages from older versions is supported to allow transferring of single objects or basic data, not as a way to upgrade entire sites.

## Prerequisites

Before you start the upgrade, please make sure that your environment fulfills the requirements of Kentico 11. See [Server and hosting requirements](https://docs.kentico.com/k11/installation/server-and-hosting-requirements.md) for details.

The upgrade must be performed on a machine with a working Internet connection.

**Note**: The upgrade must be applied to complete projects that use the standard folder structure (the _CMS_ and _Lib_ sub folders) and names of key files (the solution file, _csproj_ project file, _web.config_, _packages.config_, _GlobalAssemblyInfo.cs_). You cannot directly upgrade web site deployments of the CMS folder – first upgrade the original complete project and then create a new deployment.

## Upgrading across multiple versions

If you are upgrading from a Kentico version lower than 10, you need to go through a separate upgrade procedure for each version. Check the instructions for each upgrade version, and perform the required steps before and after the upgrade.

For each version, you always need to  _**open the upgraded website in a browser before starting the upgrade for the next version**_  and verify that the site loads correctly. During the first request after the upgrade, the system performs certain tasks required to finish the upgrade, including the import of new objects.

The same requirement applies even if you are only updating to a newer patch version by applying a [hotfix](https://devnet.kentico.com/download/hotfixes) to the upgraded project.

## Upgrade overview

The following is a summary of the most important changes that the upgrade performs. To learn how to replace any removed features or components that you use, see the linked documentation or the required steps before and after the upgrade on this page.

> **Note:** This does not include all Kentico 11 features and changes – see [Release notes - Kentico 11](https://docs.kentico.com/k11/release-notes-kentico-11.md) for a comprehensive list.

- If your project uses .NET 4.5.2 or older, the upgrade sets the project’s version to 4.6 (the minimum .NET version supported by Kentico 11).
- The upgrade integrates required third-party libraries by installing the following NuGet packages into the Kentico project (and their dependencies):
  - [AjaxControlToolkit](https://www.nuget.org/packages/AjaxControlToolkit/) 17.1.1.0
  - [AjaxMin](https://www.nuget.org/packages/AjaxMin/) 5.14.5506.26202
  - [AngleSharp](https://www.nuget.org/packages/AngleSharp/) 0.9.9
  - [AWSSDK.S3](https://www.nuget.org/packages/AWSSDK.S3/) 3.1.9
  - [Castle.Windsor](https://www.nuget.org/packages/Castle.Windsor/) 4.0.0
  - [Facebook](https://www.nuget.org/packages/Facebook/) 6.4.2
  - [GlobalLink.Connect](https://www.nuget.org/packages/GlobalLink.Connect/) 4.18.3.1
  - [Microsoft.AspNet.WebApi.WebHost](https://www.nuget.org/packages/Microsoft.AspNet.WebApi.WebHost/) 5.2.3
  - [Microsoft.Azure.Search](https://www.nuget.org/packages/Microsoft.Azure.Search/) 3.0.2
  - [Microsoft.SharePointOnline.CSOM](https://www.nuget.org/packages/Microsoft.SharePointOnline.CSOM/) 16.1.6621.1200
  - [Mono.Cecil](https://www.nuget.org/packages/Mono.Cecil/) 0.9.6.1
  - [Newtonsoft.Json](https://www.nuget.org/packages/Newtonsoft.Json/) 7.0.1
  - [NuGet.Core](https://www.nuget.org/packages/NuGet.Core/) 2.14.0
  - [PayPal](https://www.nuget.org/packages/PayPal/) 1.8.0
  - [System.Data.HashFunction.CRC](https://www.nuget.org/packages/System.Data.HashFunction.CRC/) 1.8.2.2
  - [WindowsAzure.Storage](https://www.nuget.org/packages/WindowsAzure.Storage/) 7.2.0

> **Info:** If your Kentico project already contains a different version of one of these NuGet packages, the upgrade either updates the package to the required version (for older versions) or does not change the version (for newer versions).
>
> In both cases, a [binding redirect](https://docs.microsoft.com/en-us/dotnet/framework/configure-apps/file-schema/runtime/bindingredirect-element) is automatically added to the project's _web.config_ file for the related assembly (either from your old version to the required version, or from the required version to your newer version).

- Custom files in the original project are transferred to the upgraded project.
- Customized Kentico files are preserved (does not apply if you choose to overwrite all files when applying the upgrade):
  - For each customized file, the upgrade creates the new Kentico 11 version (with the _.new_ extension). You need to manually transfer your customizations to the new files and then replace the original ones.
  - Customized files that no longer exist in Kentico 11 remain in the file system, with an added _.deleted_ extension. These files are not included in the _CMSApp_ project in web application projects.
- If your Kentico project uses Windows authentication (integrated security) for its database connection, the database upgrade scripts automatically set the _Default schema_ of the database user matching the current Windows account (i.e. the user who runs the upgrade utility) to the schema used by the objects in your Kentico database (_dbo_  by default).
- The upgrade disables [web farm](https://docs.kentico.com/k11/configuring-kentico/optimizing-website-performance/setting-up-web-farms.md) and [continuous integration](https://docs.kentico.com/k11/developing-websites/preparing-your-environment-for-team-development/setting-up-continuous-integration.md) functionality. You can re-enable the features after you complete the upgrade.

#### Class fields

- The upgrade overwrites the form definitions of the default fields of system classes and their alternative forms. Custom fields from the previous version are transferred over.

#### Default objects

- The upgrade procedure imports new versions of the following default objects (overwrites existing objects):
  - Web parts
  - Web part layouts
  - Widgets
  - Reports
  - Time zones
- The default [Form control](https://docs.kentico.com/k11/custom-development/developing-form-controls.md) objects are overwritten (both the source files and form control objects in the system).

#### 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 upgrade does not preserve the content of existing marketing emails and email templates. The templates and emails need to be created again after the upgrade using the new [email builder](https://docs.kentico.com/k11/on-line-marketing-features/managing-your-on-line-marketing-features/email-marketing/composing-marketing-emails.md) functionality.

#### 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.
- The overall customization model was changed for many types of e-commerce functionality. If your project contains e-commerce customizations, you may need to perform significant updates of your code as part of the upgrade. We recommend reading the [E-commerce customizations](#e-commerce-customizations) section and the other related steps after the upgrade.
- [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 upgrade of existing orders is not fully supported – the final price totals of orders remain the same as before the upgrade, 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 before you perform the upgrade.
- Donation products (SKUs) are no longer supported in Kentico 11. For all existing donation products, the upgrade changes the product representation value from _Donation_ to _Standard product_. Values of donation-specific properties are lost (_Minimum donation_, _Maximum donation_, _Allow private donation_). See [Collecting donations](https://docs.kentico.com/k11/integrating-3rd-party-systems/collecting-donations.md) to learn about the current recommendations for managing donations.
- Flat value [order discounts](https://docs.kentico.com/k11/e-commerce-features/managing-your-store/discounts/working-with-order-discounts.md) are no longer supported (use the new [gift cards](https://docs.kentico.com/k11/e-commerce-features/managing-your-store/discounts/working-with-gift-cards.md) for this purpose). The upgrade procedure transforms all existing flat order discounts to percentage-based and disables them.
- The data structure and configuration of [Product coupons](https://docs.kentico.com/k11/e-commerce-features/managing-your-store/discounts/working-with-product-coupons.md) changes significantly in Kentico 11. The upgrade transfers existing product coupon data, but skips global product coupons (no longer supported) and coupons assigned to products using the _All products except for these_ option. See the [E-commerce - Product coupons](#e-commerce-product-coupons) section in the steps before the upgrade.
- Kentico 11 stores the default payment gateway provider classes ([PayPal](https://docs.kentico.com/k11/e-commerce-features/configuring-your-store/configuring-payment-methods/configuring-paypal.md), [Authorize.NET](https://docs.kentico.com/k11/e-commerce-features/configuring-your-store/configuring-payment-methods/configuring-authorize-net.md), [Customer credit](https://docs.kentico.com/k11/e-commerce-features/configuring-your-store/configuring-payment-methods/configuring-customer-credit.md)) in a different assembly and namespace (_CMS.Ecommerce_). The upgrade automatically updates all [payment methods](https://docs.kentico.com/k11/e-commerce-features/configuring-your-store/configuring-payment-methods.md) that use the original class locations.

## Installing the upgrade procedure

1. Download the [Kentico 11 upgrade](http://download.kentico.com/CMSUpgrades/Upgrade/Upgrade_10_0_11_0.exe).
2. Run **Upgrade\_10\_0\_11\_0.exe**.
3. Install the upgrade procedure (the installer places the upgrade into the _C:\Program Files\Kentico\11.0\Upgrade100\_110_ folder by default).

## Steps before you start the upgrade

### Custom code analysis

> **Info:** See the [Release notes](https://docs.kentico.com/k11/release-notes-kentico-11.md#releasenoteskentico11-breakingapi) for highlights of the breaking changes in the Kentico 11 API.

If your project contains any custom code (including virtual objects such as [transformations](https://docs.kentico.com/k11/developing-websites/loading-and-displaying-data-on-websites/writing-transformations.md)), we strongly recommend using the **Kentico code upgrade tool** before you start the upgrade procedure.

Download the tool from the [API Changes](http://devnet.kentico.com/documentation/api-changes/kentico-11) page on the DevNet portal. See [Upgrading custom code](https://docs.kentico.com/k11/installation/upgrading-to-kentico-11/upgrading-custom-code.md) to learn more.

The tool has the following functionality:

- Detects custom code that is no longer valid in version 11
- Provides recommendations for each occurrence of invalid code
- Can automatically convert the majority of code to the Kentico 11 API

The code upgrade tool’s output will help you update your custom code after you perform the upgrade.

### Required .NET Compiler Platform

Kentico 11 requires the [.NET Compiler Platform ("Roslyn")](https://github.com/dotnet/roslyn) compiler to run. Installations of Kentico 10 or newer contain the [Microsoft.CodeDom.Providers.DotNetCompilerPlatform](https://www.nuget.org/packages/Microsoft.CodeDom.Providers.DotNetCompilerPlatform/) NuGet package by default, which provides the required functionality.

However, if your project is upgraded from Kentico 9 or older, you may be missing the package. In these cases, you need to install the package before applying the upgrade:

1. Open your Kentico solution in Visual Studio.
2. Right-click the main web project in the Solution Explorer and select **Manage NuGet Packages**.
3. Install the  **Microsoft.CodeDom.Providers.DotNetCompilerPlatform**  NuGet package (version 1.0.2 or newer).

### Deployment mode and Source control

If your system stores virtual objects on the file system (due to enabled [deployment mode or source control](https://docs.kentico.com/k11/deploying-websites/deployment-mode-for-virtual-objects.md) options), you need to return the files to the database before performing the upgrade.

You can re-enable deployment mode or source control after you finish the upgrade.

### Staging, integration and export tasks

If your project uses [staging](https://docs.kentico.com/k11/deploying-websites/content-staging.md) or the [integration bus](https://docs.kentico.com/k11/integrating-3rd-party-systems/using-the-integration-bus.md), you need to synchronize all staging and integration tasks before starting the upgrade procedure. Synchronization of existing tasks from older Kentico versions may fail after you perform the upgrade. To perform the synchronization, use the **Staging** or **Integration bus** applications.

If you have the **Settings ->  [Versioning & Synchronization](http://localhost/Kentico82_1124/CMSModules/Settings/Pages/Categories.aspx)  -> Staging -> Log export tasks** setting enabled, the system logs _delete tasks_ when objects are deleted. These tasks can then be included in [export](https://docs.kentico.com/k11/deploying-websites/exporting-and-importing-sites.md) packages and used to delete objects on other instances during the import. The data of logged delete tasks is NOT updated during upgrades, so existing tasks may not work correctly after you upgrade to a newer version.

We recommend clearing all delete tasks before you start the upgrade – go to **Sites -> View export history -> Tasks** and click **Delete all tasks**.

### Object version history and recycled objects

The upgrade does NOT update the data of:

- Deleted objects in the [Recycle bin](https://docs.kentico.com/k11/configuring-kentico/working-with-object-versioning/objects-recycle-bin.md)
- Previous [versions of objects](https://docs.kentico.com/k11/configuring-kentico/working-with-object-versioning.md)

After you perform the upgrade, it may not be possible to correctly restore or roll back certain types of objects from the recycle bin or version history. Before you start the upgrade, we recommend reviewing the content of your recycle bin and version history:

1. Recover any data that you wish to use after the upgrade.
2. Permanently delete the remaining data.

> **Note:** **Page version history and workflow**
>
> The instructions above only apply to the version history of non-page objects.
>
> If your website's content uses [workflow](https://docs.kentico.com/k11/managing-website-content/configuring-the-environment-for-content-editors/configuring-workflows.md) (or page versioning without workflow), you do NOT need to clear the version history of pages before starting the upgrade. Existing page versions and pages under workflow should work correctly after performing the upgrade.
>
> Note that [product pages](https://docs.kentico.com/k11/e-commerce-features/managing-your-store/products.md) under workflow are an exception. The product-specific (SKU) data in the page version history is not handled by the upgrade.

### Macro security

To successfully complete the upgrade, you will need to re-sign all macros after applying the upgrade. The upgrade procedure also re-signs the macros within certain object types automatically.

This can potentially be a security vulnerability, so we strongly recommend checking your system for invalid macros before you start the upgrade:

1. In the **System** application, select the **Macros -> Report** tab.
2. Enable **Report problems** and click **Search**.

If you detect any macros that have invalid signatures or are otherwise suspicious, fix or delete them. For more information, see [Working with macro signatures](https://docs.kentico.com/k11/macro-expressions/troubleshooting-macros/working-with-macro-signatures.md).

### Large database tables and timeouts

If some of your database tables contain very large amounts of data, timeout problems can occur when applying the database upgrade or during the processing of the first request after the upgrade. This may prevent the upgrade procedure from finishing successfully.

To avoid timeout-related issues, you can either increase the timeout settings of your SQL server for the duration of the upgrade, or try to clear unnecessary data.

For example, contact management features can generate a very large volume of [contact](https://docs.kentico.com/k11/on-line-marketing-features/managing-your-on-line-marketing-features/contact-management/working-with-contacts.md) and [activity](https://docs.kentico.com/k11/on-line-marketing-features/managing-your-on-line-marketing-features/contact-management/tracking-contact-activities.md) data on high‑traffic websites (in the _OM\_Contact_ and _OM\_Activity_ tables). You can trim down the data by running [automatic deletion of contacts](https://docs.kentico.com/k11/on-line-marketing-features/configuring-and-customizing-your-on-line-marketing-features/configuring-contacts/setting-up-automatic-deletion-of-contacts.md) that meet certain conditions and are no longer relevant.

### Full-text search for Kentico database tables

If you are using full-text search catalogs for any Kentico database tables, you need to remove the catalogs before starting the upgrade. The procedure drops and recreates indexes for most tables. You can set up the full-text search again after the upgrade is complete.

### Email marketing – Email and template content

The upgrade does not preserve the content of existing marketing emails and email templates. For templates, the _TemplateBody_, _TemplateStylesheetText_, _TemplateHeader_ and _TemplateFooter_ columns are removed from the _Newsletter\_EmailTemplate_ database table and replaced by the new _TemplateCode_ column.

If you want to transfer your existing email and template content, you need to back it up before starting the upgrade. After the upgrade is complete, use the content to create new templates and emails for your [email campaigns](https://docs.kentico.com/k11/on-line-marketing-features/managing-your-on-line-marketing-features/email-marketing/creating-email-campaigns.md) and [newsletters](https://docs.kentico.com/k11/on-line-marketing-features/managing-your-on-line-marketing-features/email-marketing/creating-newsletters.md) (based on the new [email builder](https://docs.kentico.com/k11/on-line-marketing-features/managing-your-on-line-marketing-features/email-marketing/composing-marketing-emails.md) functionality).

### E-commerce – Single tax per product, department, and shipping option

Kentico 11 allows assigning of only one tax per [product](https://docs.kentico.com/k11/e-commerce-features/managing-your-store/products.md), [department](https://docs.kentico.com/k11/e-commerce-features/managing-your-store/products/categorizing-products/departments.md), and [shipping option](https://docs.kentico.com/k11/e-commerce-features/configuring-your-store/configuring-shipping-options.md). If you have multiple taxes assigned to any of the specified objects, change your [tax class settings](https://docs.kentico.com/k11/e-commerce-features/configuring-your-store/configuring-taxes.md) so that the final tax amount corresponds with the previous state.

For example, if you use tax _A_ with the amount set to 5% and tax _B_ with the amount set to 10%, both assigned to your products, create a new tax with the amount set to 15% and assign just this new tax to your products.

If you leave multiple taxes assigned to products, departments or shipping options, the upgrade procedure leaves only one of the taxes assigned to each object and the final tax amount will be different from the original state.

### E-commerce – Product coupons

The data structure and configuration of [Product coupons](https://docs.kentico.com/k11/e-commerce-features/managing-your-store/discounts/working-with-product-coupons.md) changes significantly in Kentico 11. The upgrade transfers existing product coupon data, but does not process **global** product coupons (no longer supported) and coupons assigned to products using the **All products except for these** option.

To ensure that all product coupon data is preserved correctly through the upgrade, perform the following in the **Product coupons** application:

- For any global product coupons, recreate the same coupon on all sites in the system.
- For any product coupons using the **All products except for these** option on the **Products** tab, switch to **Only the following products** and adjust the product selection correspondingly.

**Notes**:

- For product coupons assigned to products that have [variants](https://docs.kentico.com/k11/e-commerce-features/managing-your-store/products/working-with-product-variants.md), the upgrade replaces the assigned base product with all available product variants. If necessary, you can adjust the product assignment of coupons after the upgrade.
- After the upgrade, the _Product coupons_ application and the related objects require the **Read discounts** and **Modify discounts** [permissions](https://docs.kentico.com/k11/e-commerce-features/configuring-your-store/configuring-e-commerce-permissions.md) for the _E-commerce_ module, instead of the _Read data_ and _Modify data_ permissions. Assign the given permissions to the appropriate roles to ensure that your users retain access to product coupons.

### Removed web parts

The upgrade removes the following web parts:

- _Flash_(together with the _Flash_ widget)
- _Donate_
- _Donations_
- _Newsletter archive_
- _Quick time_
- _Search engine results highlighter_
- _Search accelerator (for IE8 and higher)_
- _WMP video_

You need to replace or remove instances of these web parts on your site's page templates. Use the following process:

1. Open the **Web parts** application.
2. Select the given web part and view the **Usage** tab.
3. Remove or replace any occurrences of the web part on your site.
4. If a web part is used by a  [widget](https://docs.kentico.com/k11/developing-websites/preparing-widgets-for-users.md) or [inherited web part](https://docs.kentico.com/k11/custom-development/developing-web-parts/creating-inherited-web-parts.md), perform these steps for the given components (use the **Widgets** application for widgets).

After you remove or replace all occurrences of a web part, we strongly recommend that you delete it in the **Web parts** application.

> **Info:** The upgrade procedure deletes all source files of the listed web parts, but in most cases leaves their database records. If you do not manually delete them, these non-functional web parts may remain in your database after the upgrade, with a _(Removed)_ suffix added to the display name.

## Applying the upgrade

We strongly recommend using the [Kentico Upgrade Utility](https://docs.kentico.com/k11/external-utilities/kentico-hotfix-and-upgrade-utility.md) to perform the upgrade automatically.

> **Info:** **Manual upgrade**
>
> If you cannot run the automatic upgrade utility, you can perform the upgrade manually. See [Upgrading Kentico manually](https://docs.kentico.com/k11/installation/upgrading-to-kentico-11/upgrading-kentico-manually.md).

**Note**: Before you run the upgrade utility, close any instances of Visual Studio where the target Kentico solution is opened.

1. Open the folder where you installed the upgrade.
2. Run the **Kentico Upgrade Utility** (_Upgrade.exe)_.
3. Enter the path to your Kentico 10 web project folder (you can select a folder using the **Browse** button).
4. Use the utility to back up your project files and/or database if you have not done so already.
5. Select whether you want to upgrade files, the database or both. To successfully perform the upgrade, you need to update both the project files and the database. Only change the settings in special scenarios (for example when performing part of the process manually).

   > **Note:** **Important**: If you use a [separated on-line marketing database](https://docs.kentico.com/k11/on-line-marketing-features/configuring-and-customizing-your-on-line-marketing-features/separating-the-contact-management-database.md), you need to disable the SQL script part of the upgrade:
   >
   > 1. Click **Switch to advanced mode**.
   > 2. Clear the **SQL script** checkbox.Run the SQL scripts manually after the upgrade utility updates the project files (see [Upgrading separated on-line marketing databases](#upgrading-separated-on-line-marketing-databases) below).

> **Note:** **Warning**: If you enable the **Overwrite all files** option in _advanced mode_, the upgrade replaces all project files with the default Kentico 11 files, regardless of customizations. This includes the **web.config** file, which you need to configure again after applying the upgrade.

6. On _web application_ projects, the upgrade utility rebuilds the solution at the end of the upgrade by default. If your project contains custom code that is no longer supported in Kentico 11, or has certain modules uninstalled, the rebuild will not be successful. You can disable the **Rebuild web project** option on customized projects, and perform the rebuild manually once you update the project after the upgrade.
7. Choose a method of taking the project offline and bringing it back online.
8. Click **Next** to start the upgrade procedure.
9. After the upgrade finishes, click **Next** to view any conflicts of customized files that occurred during the upgrade process. By default, the upgrade utility does not overwrite modified files in order to preserve your customizations (unless you enabled the _Overwrite all files_ option in the upgrade utility):
   - For each customized file, the upgrade creates the new Kentico 11 version (with the _.new_ extension). You need to manually transfer your customizations to the new files and then replace the original ones.
   - Customized files that no longer exist in Kentico 11 remain in the file system, with an added _.deleted_ extension. These files are not included in the _CMSApp_ project in web application projects.
10. The upgrade attempts to automatically update your project’s **web.config** file (unless you enabled the _Overwrite all files_ option in the upgrade utility). The process may fail if your web.config contains certain types of customizations. In this case, a new web.config file is created in the web project’s CMS folder with the _.new_ extension. You need to:
    1. Edit the new web.config and transfer over any customizations and the connection string from the original web.config.
    2. Move your original web.config to a different location.
    3. Rename _web.config.new_ to _web.config_.

Close the upgrade utility.

### Upgrading separated on-line marketing databases

If your project uses a [separated on-line marketing database](https://docs.kentico.com/k11/on-line-marketing-features/configuring-and-customizing-your-on-line-marketing-features/separating-the-contact-management-database.md), you need to manually run the upgrade SQL scripts after updating the project files:

1. Open the upgrade installation directory (_C:\Program Files\Kentico\11.0\Upgrade100\_110_ by default).
2. Expand the **SQL\Separation** folder.
3. Manually run the script files _in the following order:_

   1. **separated.sql** (against the separated on-line marketing database)
   2. **default.sql** (against your main Kentico database)

> **Info:** **Note**: Kentico uses database objects with the **dbo** schema by default. If your database uses a different or no schema, you need to modify any schema occurrences in the script accordingly.

Once the databases are successfully upgraded, continue with the steps after the upgrade.

## Steps after performing the upgrade

After you apply the upgrade to your project, please check the following sections and perform the required actions. Go through the sections in the listed order.

> **Warning:** **Important**
>
> After you apply the upgrade, **clear your browser cache** before you open the website or Kentico administration interface.

### API changes

You need to update your custom code according to the new API of Kentico 11, including:

- Custom or customized code files in the web project
- Virtual objects in Kentico, such as [transformations](https://docs.kentico.com/k11/developing-websites/loading-and-displaying-data-on-websites/writing-transformations.md) and [page layouts](https://docs.kentico.com/k11/developing-websites/developing-websites-using-the-portal-engine/editing-page-layouts.md)

Use the output of the Kentico code upgrade tool (described in [Custom code analysis](#custom-code-analysis)) to find occurrences of invalid code and recommendations on how to fix or replace them.

**Tip**: Enable [Deployment mode](https://docs.kentico.com/k11/deploying-websites/deployment-mode-for-virtual-objects.md) and fix the code of virtual objects in the corresponding physical files. This makes it easier to update the code of virtual objects according to the output of the code upgrade tool. Disable deployment mode to return the updated virtual objects back into the database.

You can also search for specific API resolutions on the [DevNet portal](http://devnet.kentico.com/documentation/api-changes/kentico-11).

### E-commerce customizations

Kentico 11 introduces significant changes in the e-commerce functionality and API. You may need to update any related custom code or components after performing the upgrade.

- The type of all API members that store or return 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.
- 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).
- If you have customized 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) :

  - For custom classes that inherit from **MultiBuyDiscountsEvaluator**, you need to perform the following:
    - Update your class's code according to the new signatures of the virtual methods in the base class.
    - Register your class as the implementation of the **IMultiBuyDiscountsEvaluator** interface using the **RegisterImplementation** assembly attribute (instead of registering the class in a custom inherited  _MultiBuyDiscountInfoProvider_ ).
    - Verify that your customization works as intended with the updated e-commerce functionality.
  - If you have a custom inherited **MultiBuyDiscountsApplicator** class, you need to revise the entire customization. In these scenarios, we recommend implementing your custom discount functionality as 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) for more information.

### InfoProvider customizations

The default _InfoProvider_ classes in Kentico 11 no longer contain virtual _GetInfoInternal, SetInfoInternal_ and _DeleteInfoInternal_ methods (in most cases). 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_

### NuGet package consolidation

If your project uses a higher **Target framework** than _.NET Framework 4.6_, we strongly recommend that you consolidate the target framework version for all installed NuGet packages:

1. Open your Kentico project in Visual Studio.
2. Open the **Package Manager Console** (under **Tools > NuGet Package Manager**).
3. Run the following [Update-Package](https://docs.microsoft.com/en-us/nuget/tools/ps-ref-update-package) command:

   ```csharp

   Update-Package -reinstall

   ```

The command reinstalls all NuGet packages with the appropriate target framework version for your project.

### Assembly references

Kentico 11 brings the following assembly changes:

- **CMS.DataProviderSQL.dll** merged into **CMS.DataEngine.dll**
- **CMS.FileSystemStorage.dll** merged into **CMS.IO.dll**

You need to remove any manually added references from custom projects to the old assemblies. If necessary, add new references to the assemblies into which the code was merged. The changes do not impact the related API and namespaces (_CMS.DataProviderSQL_ and _CMS.FileSystemStorage_).

### Security code form control

In Kentico 11, the **Security code** [form control](https://docs.kentico.com/k11/custom-development/developing-form-controls.md) is implemented by a class within the **CMS.FormEngine.Web.UI** assembly. The upgrade removes the original _\~/CMSFormControls/Captcha/SecurityCode.ascx_ user control file.

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.  You can continue using the **** control from the _CMS.FormEngine.Web.UI_ assembly.

If you have customized the   _\~/CMSFormControls/Captcha/SecurityCode.ascx_   file, it remains in the project with the _.deleted_ extension. To continue using your modified security code control, remove the _.deleted_ extension and register the file as a custom form control.

### Kentico 11 setup files

The upgrade converts your web projects to version 11, but does not provide the associated setup files (i.e. the Kentico program files that are separate from individual web projects). The setup files contain [external utilities](https://docs.kentico.com/k11/external-utilities.md), sample files, and allow you to install new Kentico 11 web projects.

To obtain the installer and setup files for Kentico 11:

1. Download the [Kentico 11 installer](http://download.kentico.com/Kentico_11_0.exe).
2. Run **Kentico\_11\_0.exe**.
3. Read and accept the License Terms and Conditions and click **Custom installation**.
4. Select **Install only program files** and click **Install**.

### Clearing session state data

Objects that are stored in the server-side session state may have a different structure in the upgraded version. The changes may cause errors for users who access the upgraded site with outdated session data.

If your application uses a session state mode that preserves data through application restarts _(StateServer, SQLServer_ or _Custom)_, you need to manually clear any existing session data after you perform the upgrade:

- **StateServer** – restart the session state service.
- **SQLServer** – delete the content of the session state database.
- **Custom** – depends on the implementation of the custom storage provider.

### Running the website - First request

**Important**: This step must be performed **before you apply any hotfixes** to the upgraded project.

Open the upgraded website in a browser. When handling the first request (i.e. on application start), the system performs certain tasks required to finalize the upgrade. Processing of the first request may take longer than usual. The first request also includes the automatic  _**import**_  of new web part, widget, report and time zone objects.

Once the website loads, log in to the administration interface and open the **Event log** application. Check for the presence of any errors or exceptions between the  _**Upgrade - Start**_  and  _**Upgrade - Finish**_  events:

- If you find errors related to the object import, open the **Sites** application, click **Import site or objects** and try to import the _upgrade\_100\_110.zip_ package manually.
- If any other errors are present or if the log does not contain the  _**Upgrade - Finish**_  event at all, the upgrade may not be fully applied. Please contact [Kentico support](http://devnet.kentico.com/support) and provide the details of the errors.

### Licenses

You need to add Kentico version 11 licenses for the domains used by your sites:

1. In the Kentico administration interface, open the **Licenses** application.
2. Delete the old version 10 licenses.
3. Click **New license** to add your licenses for version 11.

### Macros

To ensure that macros and the administration interface work correctly after the upgrade:

1. Sign in to the Kentico administration interface as a global administrator.
2. Open the **System** application.
3. Select the **Macros -> Signatures** tab.
4. Enable the **Sign all macros** option.
5. Click **Update macro signatures**.

The system resigns all macros. The new security signatures of all macros contain the username of your administrator account.

Validate that all macros in the system work correctly:

1. In the **System** application, select the **Macros -> Report** tab.
2. Enable **Report problems** and click **Search**.

For more information, see the [Macro expressions](https://docs.kentico.com/k11/macro-expressions.md) chapter.

### 51Degrees device detection

51Degrees device detection is no longer included in Kentico 11 by default, and is replaced by the functionality of the .NET Framework _HttpBrowserCapabilities_ class. If you want to continue using [device macros](https://docs.kentico.com/k11/developing-websites/developing-websites-for-mobile-devices/device-macros.md) (on the live site, in device profiles, in transformations, etc.), you have two options:

- Utilize the system's [default functionality](https://docs.kentico.com/k11/developing-websites/developing-websites-for-mobile-devices/device-macros.md) (properties of the _HttpBrowserCapabilities_ class)

  - Update your device macros from the _CurrentDevice._ format to: _CurrentDevice.Data\[""]_
  - Use properties of the _HttpBrowserCapabilities_ class. Some of the original 51Degrees properties may not be available and some may be named differently.– OR –
- [Integrate](https://docs.kentico.com/k11/developing-websites/developing-websites-for-mobile-devices/configuring-51degrees-device-detection.md) 51Degrees through NuGet packages

  - Update your device macros from the _CurrentDevice._ format to: _CurrentDevice.Data\[""]_
  - Alternatively, register a [custom](https://docs.kentico.com/k11/developing-websites/developing-websites-for-mobile-devices/configuring-51degrees-device-detection.md) _CurrentDevice_ class and use the original macro format.

Additionally, 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](https://docs.kentico.com/k11/macro-expressions/writing-macro-conditions/creating-macro-rules.md). You also need to update and re-save any existing macro condition fields that use the given rules.

### Web farms

The upgrade procedure automatically disables [web farm](https://docs.kentico.com/k11/configuring-kentico/optimizing-website-performance/setting-up-web-farms.md) functionality. If your Kentico instance runs on a web farm, you need to enable web farms after you complete the upgrade.

We recommend that you enable the web farm on **one server** or instance and after that you add the remaining servers to the web farm.

1. In the Kentico administration interface, open the **Settings** application.
2. Expand the **Versioning & Synchronization -> Web farm** category.
3. Select the **Web farm mode**:
   - Automatic – if you wish to let the system handle the configuration of web farms servers.
   - Manual – if you need to control the web farm manually. See [Configuring web farm servers](https://docs.kentico.com/k11/configuring-kentico/optimizing-website-performance/setting-up-web-farms/configuring-web-farm-servers.md).
4. Click **Save**.

### UI personalization

If you have [UI personalization](https://docs.kentico.com/k11/managing-users/ui-personalization.md) enabled for your site, we recommend reviewing the settings for all available roles. You may wish to enable access to new UI elements added by the upgrade (applications, tabs, etc.).

### E-commerce – Getting the final price of purchases

After upgrading, the system stores the final price of purchases in the new **GrandTotal** field of shopping cart objects instead of the _TotalPrice_ field. The _TotalPrice_ field remains available, but does not include 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](https://docs.kentico.com/k11/macro-expressions.md). We recommend that you replace occurrences of the _TotalPrice_ field with _GrandTotal_ in:

- Any custom code working with _ShoppingCartInfo_ objects (use the **GrandTotal** property instead of _TotalPrice_)
- Macros accessing the total price from the shopping cart, for example: _{% EcommerceContext.CurrentShoppingCart.GrandTotal %}_
- Macros accessing the total price in [invoices](https://docs.kentico.com/k11/e-commerce-features/configuring-your-store/configuring-invoices.md) or [order notification email templates](https://docs.kentico.com/k11/e-commerce-features/configuring-your-store/configuring-e-commerce-email-notifications.md), for example: _{% GrandTotal.Format(Currency.CurrencyFormatString) %}_

### E-commerce – Product price transformations

Kentico 11 introduces many changes that affect the processing of product prices. After applying the upgrade, you need to check the [transformations](https://docs.kentico.com/k11/developing-websites/loading-and-displaying-data-on-websites/writing-transformations.md) used on your site and replace any invalid code for getting product prices and other related values.

The supported signatures of the following **ASCX** transformation methods were changed. See [Reference - Transformation methods](https://docs.kentico.com/k11/developing-websites/loading-and-displaying-data-on-websites/writing-transformations/reference-transformation-methods.md) for details.

- GetSKUPrice
- GetSKUFormattedPrice
- GetSKUListPrice
- GetSKUFormattedListPrice
- GetSKUPriceSaving
- GetSKUFormattedPriceSaving

Most of the methods can now only be called without parameters. The parameters from previous versions are no longer necessary – the methods always calculate with any [catalog discounts](https://docs.kentico.com/k11/e-commerce-features/managing-your-store/discounts/working-with-catalog-discounts.md) that apply and taxes are handled 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). If you wish to load price values from custom columns, you need to customize the system as described in [Customizing product prices](https://docs.kentico.com/k11/e-commerce-features/customizing-and-developing-your-store/product-related-customizing/customizing-product-prices.md) (the customizations apply to transformation methods).

For **Text / XML** type transformations, we recommend replacing occurrences of the **GetPrice** macro method with the **GetSKUPrice** method. See [Reference - Macro methods](https://docs.kentico.com/k11/macro-expressions/reference-macro-methods.md).

> **Note:** **Important**: To ensure that product prices are calculated and displayed correctly, always use the methods mentioned above rather than directly accessing values from price columns or properties (such as _SKUPrice_).

### E-commerce – Invoice and email notification templates

#### Item tax transformations

Kentico 11 no longer stores or displays tax values separately for individual items in shopping carts and orders (only the total overall tax). Instead, entire sites can be configured to include taxes directly in the prices of items (using the  **Prices include tax** [setting](https://docs.kentico.com/k11/configuring-kentico/managing-sites/configuring-settings-for-sites/settings-e-commerce.md) ).

If you use custom [transformations](https://docs.kentico.com/k11/developing-websites/loading-and-displaying-data-on-websites/writing-transformations/using-transformations-in-macro-expressions.md) for **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), you may need to remove transformation code that works with tax values (the _UnitTotalTax, TotalTax, UnitTotalTaxInMainCurrency_ and _TotalTaxInMainCurrency_ data fields).

#### Tax summaries

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, you need to update your store's invoice configuration and email templates (if custom) to use the new **TaxSummary** object instead. If you use custom [transformations](https://docs.kentico.com/k11/developing-websites/loading-and-displaying-data-on-websites/writing-transformations/using-transformations-in-macro-expressions.md) to format the tax items, you also need to update their code to use the new properties available for the items within _TaxSummary_:

| Old property (TaxesTable) | New property (TaxSummary) |
| ------------------------- | ------------------------- |
| TaxClassDisplayName       | Name                      |
| TaxSummary                | Value                     |

#### Product coupons and Buy X Get Y discounts

The **DiscountCoupon** macro object and   **OrderRelatedDiscountSummaryItems**    macro collection  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).

If you display detailed information about applied [product coupons](https://docs.kentico.com/k11/e-commerce-features/managing-your-store/discounts/working-with-product-coupons.md) or [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), update your store's invoice configuration and email templates to use the **DiscountSummary** property, which you can access in the [transformations](https://docs.kentico.com/k11/developing-websites/loading-and-displaying-data-on-websites/writing-transformations/using-transformations-in-macro-expressions.md) applied to individual order items within the **ContentTable** data.

The _DiscountSummary_ collection contains items with **Name** and **Value** properties (the name of the applied product coupon or Buy X Get Y discounts, and its total discount value for the given order item).

### E-commerce – Shopping cart totals

After upgrading, 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

Any instances of the web part using the removed options will not display any content. You need to re-configure the web parts and set the **Total to display** property to the  _**Products total**_ ,  _**Shipping total**_  or  _**Order discounts total**_  options instead.

The _Products total_ and _Shipping total_ values now automatically include tax (or not) 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) . The web part no longer provides a way to display the product or shipping portion of the tax, only the overall _Tax total_ for the entire shopping cart.

Buy X Get Y discounts are now applied to individual shopping cart items, not the entire cart. For more information about displaying discount totals and summaries on shopping cart pages, see [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).

> **Tip:** **Tip**: To find occurrences of the web part on your site's templates, open the **Web parts** application, select the _E-commerce -> Checkout process -> Shopping cart totals_ web part and view the **Usage** tab.

### E-commerce – Coupon codes

Kentico 11 allows customers to enter multiple coupon codes when making purchases.

The web part that allows customers to enter coupon codes on pages was renamed from _Discount coupon_ to **Coupon codes** and now requires a [transformation](https://docs.kentico.com/k11/developing-websites/loading-and-displaying-data-on-websites/writing-transformations.md) to display the applied coupon codes. When upgrading sites that contain the web part, you need to:

1. Prepare a suitable transformation for displaying coupon codes according to your site's design. See   [Working with coupon codes](https://docs.kentico.com/k11/e-commerce-features/managing-your-store/discounts/working-with-coupon-codes.md) for more information.
2. Configure every instance of the _Coupon codes_ web part and assign the transformation.

> **Tip:** **Tip**: To find occurrences of the _Coupon codes_ web part on your site's templates, open the **Web parts** application, select the _E-commerce -> Checkout process -> Coupon codes_ web part and view the **Usage** tab.

Additionally, t he _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).

### E-commerce – Tax classes for products under workflow

Kentico 11 allows assigning of only one tax per [product](https://docs.kentico.com/k11/e-commerce-features/managing-your-store/products.md).

The upgrade procedure cannot automatically handle that tax class assignment for products under [workflow](https://docs.kentico.com/k11/managing-website-content/working-with-pages/using-workflows.md), which store the related data in the page version history. The tax class may be displayed as _(none)_ for such products. We recommend checking any products under workflow and manually assigning an appropriate tax class.

### E-commerce – Order discount macro conditions

The upgrade makes the following changes to the default  [order discount macro rules](https://docs.kentico.com/k11/e-commerce-features/customizing-and-developing-your-store/configuring-discount-rules.md):

- **Shopping cart contains product** and **Shopping cart contains products** – removed. Use the new **Order contains**   **products** rule instead.
- **Total weight of order is under** – macro condition updated.

If you use the removed or updated macro rules in the conditions of existing discounts, you need to update and re-save the conditions.

For any custom order discount rules, you need to update the **Condition** macro code to reflect the following changes:

- The **ShoppingCart** object is no longer available when writing   order discount rule   conditions. Instead, the macro context directly provides properties related to the shopping cart or order calculation, such as _Currency_, _Customer_, _PaymentOption_, _ShippingOption_, _GrandTotal_, etc.
- To check whether an order contains specific products, call the **Data.ContainsProducts** macro method.

> **Info:** For more information, see:
>
> - [Configuring discount rules](https://docs.kentico.com/k11/e-commerce-features/customizing-and-developing-your-store/configuring-discount-rules.md)
> - [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)

### E-commerce – PayPal payment gateway

Kentico 11 changes the functionality of the default PayPal payment provider. See [Configuring PayPal](https://docs.kentico.com/k11/e-commerce-features/configuring-your-store/configuring-payment-methods/configuring-paypal.md) to learn about the new requirements, configuration steps, and settings.

The following is a summary of the changes:

- The provider now requires a **PayPal Business account**  and an associated  **PayPal REST API app** (create and manage apps in the [PayPal Developer Portal](https://developer.paypal.com)).
- Settings in **Settings -> E-commerce -> Payment Gateways -> PayPal**:

  - The original **Business** setting was removed.
  - New required settings for entering the **Client ID** and **Client secret** API credentials of the PayPal REST API app.
  - The **Return URL** and **Cancel return URL** settings are now always required.
  - New **Transaction type** setting that allows you to use either direct payments or authorization with delayed capture.
  - The original **Notify URL** setting was removed (the provider no longer utilizes Instant Payment Notification).
  - To perform test payment transactions, set the new **Account type** setting to _Sandbox_ and use Sandbox API credentials.
- The new **PayPal payment execution** web part must be placed onto the page specified by the **Return URL** setting.
- The **Payment gateway URL** property no longer has any effect for [payment methods](https://docs.kentico.com/k11/e-commerce-features/configuring-your-store/configuring-payment-methods.md) that use the default PayPal provider.
- The default PayPal provider no longer utilizes Instant Payment Notification and the _\~/CMSModules/Ecommerce/CMSPages/PayPalIPN.aspx_ system page was removed. If you require payment notifications for any custom functionality or integrations, you need to configure the related options for your PayPal Business account and implement the required handlers (either within the Kentico web project or a custom project).

### E-commerce – Authorize.Net payment gateway

Kentico 11 changes the functionality of the default Authorize.Net payment provider. See [Configuring Authorize.NET](https://docs.kentico.com/k11/e-commerce-features/configuring-your-store/configuring-payment-methods/configuring-authorize-net.md) to learn about the new requirements, limitations and configuration steps.

The following is a summary of the changes:

- Your website must use [HTTPS](https://docs.kentico.com/k11/securing-websites/deploying-websites-to-a-secure-environment/configuring-ssl.md) and the server (IIS) must support the **TLS 1.2** protocol.
- The default Authorize.Net provider can only process payments correctly for a single currency (every Authorize.Net account is configured to use one specific currency in the Authorize.Net Merchant Interface). If your store uses multiple [currencies](https://docs.kentico.com/k11/e-commerce-features/configuring-your-store/configuring-currencies.md):
  - **Important**: The system always sends price values to Authorize.Net in the currency selected by the customer for the given order (shopping cart). If this currency is different than the one configured for your Authorize.Net account, the customer will be charged an incorrect (unconverted) amount of money.
  - You can customize the system to offer the Authorize.Net payment method to customers only if they have the appropriate currency selected – follow the general approach described in [Making payment methods dependent on shipping options](https://docs.kentico.com/k11/e-commerce-features/customizing-and-developing-your-store/payment-related-customizing/making-payment-methods-dependent-on-shipping-options.md).
- You need to update the **Payment gateway URL** property of your Authorize.Net [payment method](https://docs.kentico.com/k11/e-commerce-features/configuring-your-store/configuring-payment-methods.md):

  - For real payments on production websites:  _https://api.authorize.net/xml/v1/request.api_
  - For test transactions (sandbox account):  _https://apitest.authorize.net/xml/v1/request.api_
- Settings in **Settings -> E-commerce -> Payment Gateways -> Authorize.NET**:
  - The **Use test mode** setting was removed. To perform test payment transactions, use the API login and Transaction key of a [Sandbox account](https://sandbox.authorize.net/) and the appropriate _Payment gateway URL_ for the payment method.
  - New **Transaction type** setting that allows you to use either direct authorize and capture transactions or authorization with delayed capture.

### Browser-specific CSS styles

The browser-related CSS classes that the system automatically assigns to the __ element of pages work differently in Kentico 11:

- Browser version classes are not assigned at all
- Browser type classes may be different than in previous versions (the _HttpBrowserCapabilities_ class of the .NET Framework is now used for browser detection)

See [Browser and language-specific styles](https://docs.kentico.com/k11/developing-websites/designing-websites-using-css.md#browser-and-languagespecific-styles) for more information.

If your website uses custom CSS that relies on the __ browser classes, you need to update your stylesheets.

### Multi-factor authentication

The multi-factor authentication in Kentico 11 no longer supports the original _Kentico Authenticator_ mobile application. Instead, passcodes can be 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). See [Configuring multi-factor authentication](https://docs.kentico.com/k11/managing-users/user-registration-and-authentication/configuring-multi-factor-authentication.md) for details.

The upgrade resets the multi-factor secret key (token) of each user. If your website has users who sign-in with multi-factor authentication, inform them that they need to set up a different authenticator application for generating passcodes, for example [Google Authenticator](https://support.google.com/accounts/answer/1066447?hl=en). The system displays a new secret key during each user's first sign-in, which can be used to initialize an authenticator application.

### Translation services

#### Translations.com service

When upgrading sites with an already set up translation project using the [Translations.com service](https://docs.kentico.com/k11/multilingual-websites/configuring-translation-services/human-translation-services-translations-com.md), 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.

#### Microsoft Translator service

The authentication process for the Microsoft translator service changed, as the service moved from Microsoft DataMarket to Microsoft Azure. If your website already uses the Microsoft translator service, follow the instructions at [Machine translation - Microsoft Translator](https://docs.kentico.com/k11/multilingual-websites/configuring-translation-services/machine-translation-microsoft-translator.md) to properly configure the service. 

### REST authentication hash values

Kentico 11 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. If your site's URL contains a virtual directory and you use REST requests with hash authentication, you need to generate new authentication hashes in the **Settings** application and replace the values in your requests.

## Upgrading source code instances

Kentico does not provide an upgrade package for source code instances. We recommend using the following process if you need to upgrade a source code project:

1. Obtain the new version of the source code solution.
2. [Install the upgrade procedure](#installing-the-upgrade-procedure).
3. Perform any relevant [steps before the upgrade](#steps-before-you-start-the-upgrade).
4. Merge all customizations from your old source code solution into the new one.
   - This mainly includes updates of custom API, verification of its relevance in the new version, and testing.
5. [Apply](#applying-the-upgrade) the database upgrade.
6. Open the upgrade installation directory (_C:\Program Files\Kentico\11.0\Upgrade100\_110_ by default), and copy the **CMS\CMS\CMSSiteUtils\Import\Upgrade\_100\_110.zip** file into the **CMS\CMSSiteUtils\Import** folder of the new Kentico 11 project.
7. Perform all relevant [steps after the upgrade](#steps-after-performing-the-upgrade).
