---
title: Creating integration connectors
related:
  - https://docs.kentico.com/k11/integrating-3rd-party-systems/using-the-integration-bus/integration-bus-overview.md
  - https://docs.kentico.com/k11/integrating-3rd-party-systems/using-the-integration-bus/example-integration-connector.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).

You can add integration connector classes into your application in two ways:

- [In a separate project (assembly)](#creating-connectors-in-a-separate-project)
- [In the App\_Code folder](#creating-connectors-in-the-app_code-folder)

## Creating connectors in a separate project

1. Create a **Class Library** project in Visual Studio (for example name it _CustomIntegrationConnector_).
2. Add references to the Kentico libraries:
   - If the connector project is standalone, install the _Kentico.Libraries_ NuGet package (see [Using the Kentico API externally](https://docs.kentico.com/k11/integrating-3rd-party-systems/using-the-kentico-api-externally.md) for details).
   - If you are adding the connector project to your Kentico solution, reference the DLL files directly:
     1. Right-click the project and select **Add reference...**
     2. Click **Browse...**
     3. Add at least the following references from the project's _Lib_ directory:
        - CMS.Base
        - CMS.DataEngine
        - CMS.DocumentEngine
        - CMS.Helpers
        - CMS.SiteProvider
        - CMS.Synchronization
        - CMS.SynchronizationEngine
        - CMS.WorkflowEngine
3. Reference the custom class library project from the Kentico application.

   > **Note:** **Implementing outgoing synchronization for MVC sites**
   >
   > When implementing [outgoing synchronization](https://docs.kentico.com/k11/integrating-3rd-party-systems/using-the-integration-bus/creating-integration-connectors/implementing-outgoing-synchronization.md) for [MVC sites](https://docs.kentico.com/k11/developing-websites/developing-sites-using-asp-net-mvc.md), you need to reference the custom class library from **both** the MVC and Kentico administration projects. This ensures that the synchronization works for objects created or modified by the MVC live site application (for example users, form data, customers and their orders).
4. Edit and rename the default class in the project and set the class to inherit from **BaseIntegrationConnector**.
5. Override the **Init()** method and set the **ConnectorName** property within this method.

   - The value of the _ConnectorName_ property must match the code name of the connector object registered in the administration interface.

     ```csharp

     using CMS.Synchronization;
     using CMS.SynchronizationEngine;

     public class CMSIntegrationConnector : BaseIntegrationConnector
     {
         /// <summary>
         /// Initializes the connector name.
         /// </summary>
         public override void Init()
         {
             // Initializes the connector name (must match the code name of the connector object in the system)
             // GetType().Name uses the name of the class as the ConnectorName
             ConnectorName = GetType().Name;
         }
     }

     ```
6. Build the solution.

With the connector class prepared, you now need to:

- Implement [outgoing](https://docs.kentico.com/k11/integrating-3rd-party-systems/using-the-integration-bus/creating-integration-connectors/implementing-outgoing-synchronization.md) and/or [incoming](https://docs.kentico.com/k11/integrating-3rd-party-systems/using-the-integration-bus/creating-integration-connectors/implementing-incoming-synchronization.md) synchronization
- [Register the connector in the system](#registering-connectors-in-the-system)

## Creating connectors in the App\_Code folder

> **Note:** **Note**: You cannot create your connectors in the _App\_Code_ folder if you wish to synchronize incoming tasks from external applications logged directly using the API (without a custom communication service). In these scenarios, the external application must be able to reference the connector class, which requires a separate project (and DLL).

1. Open your Kentico web project in Visual Studio (using the **WebSite.sln** or **WebApp.sln** file).
2. Create a new class in the _App\_Code_ folder (or _Old\_App\_Code_ on web application installations).
3. Set the class to inherit from **BaseIntegrationConnector**\*.\*
4. Override the _Init()_ method and set the **ConnectorName** property within this method.
5. Ensure that the system loads the appropriate class when working with the connector using the **RegisterCustomClass** assembly attribute. See [Loading custom classes from App\_Code](https://docs.kentico.com/k11/custom-development/loading-custom-classes-from-app_code.md) for more information.

   ```csharp

   using CMS;

   [assembly: RegisterCustomClass("CMSIntegrationConnector", typeof(CMSIntegrationConnector))]


   ```
6. On web application projects, build the solution.

With the connector class prepared, you now need to:

- Implement [outgoing](https://docs.kentico.com/k11/integrating-3rd-party-systems/using-the-integration-bus/creating-integration-connectors/implementing-outgoing-synchronization.md) and/or [incoming](https://docs.kentico.com/k11/integrating-3rd-party-systems/using-the-integration-bus/creating-integration-connectors/implementing-incoming-synchronization.md) synchronization
- Register the connector in the system

You can find an example of a basic connector class on the [Example - Integration connector](https://docs.kentico.com/k11/integrating-3rd-party-systems/using-the-integration-bus/example-integration-connector.md) page.

## Registering connectors in the system

Once the connector's class is ready, you need to register the connector as an object in the system:

1. In the Kentico administration interface, open the **Integration bus** application.
2. Select the **Connectors** tab.
3. Click **New connector**.
4. Fill in the **Display name**, **Assembly name** and **Class** and select the **Enabled** check box.

   | Property       | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
   | -------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
   | Display name   | The name of the connector displayed in the user interface.                                                                                                                                                                                                                                                                                                                                                                                                                            |
   | Code name      | Sets a unique identifier for the connector. Must match the value of the **ConnectorName** property declared in the connector's class.                                                                                                                                                                                                                                                                                                                                                 |
   | Provider class | Specifies the class where the connector class is implemented:<br>**Assembly name** - the assembly (project) containing the connector class. Select _(custom classes)_ for connectors implemented in the App\_Code (or Old\_App\_Code) folder.<br>**Class** - the exact class (including any namespaces) that defines the functionality of the connector. For App\_Code classes, the value must match the first parameter of the _RegisterCustomClass_ attribute that loads the class. |
   | Enabled        | Indicates if the connector logs and processes integration tasks. Logging and processing of tasks must also be [enabled](https://docs.kentico.com/k11/integrating-3rd-party-systems/using-the-integration-bus/enabling-the-integration-bus.md) in **Settings -> Integration -> Integration bus**.                                                                                                                                                                                      |
5. Click **Save**.

> **Note:** **Note**: When you add, edit or delete a connector, the system re-initializes all defined connectors.

The system displays a warning icon () next to connectors that are not registered correctly. The most common causes of problems are:

- The value of the **ConnectorName** property in the connector class's **Init** method does not match the **Code name**.
- Incorrect assembly or class name.
- App\_Code classes are not loaded correctly. See [Loading custom classes from App\_Code](https://docs.kentico.com/k11/custom-development/loading-custom-classes-from-app_code.md) for more information.
