---
title: Creating integration connectors
related:
  - https://docs.kentico.com/k10/integrating-3rd-party-systems/using-the-integration-bus/integration-bus-overview.md
  - https://docs.kentico.com/k10/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/k10/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. 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. Edit and rename the default class in the project and set the class to inherit from **BaseIntegrationConnector**.
4. 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;
         }
     }

     ```
5. Build the solution.

With the connector class prepared, you now need to:

- Implement [outgoing](https://docs.kentico.com/k10/integrating-3rd-party-systems/using-the-integration-bus/creating-integration-connectors/implementing-outgoing-synchronization.md) and/or [incoming](https://docs.kentico.com/k10/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/k10/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/k10/integrating-3rd-party-systems/using-the-integration-bus/creating-integration-connectors/implementing-outgoing-synchronization.md) and/or [incoming](https://docs.kentico.com/k10/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/k10/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/k10/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/k10/custom-development/loading-custom-classes-from-app_code.md) for more information.
