---
title: Example - Integration connector
related:
  - https://docs.kentico.com/k12sp/integrating-3rd-party-systems/using-the-integration-bus/creating-integration-connectors.md
  - https://docs.kentico.com/k12sp/integrating-3rd-party-systems/using-the-integration-bus/managing-integration-tasks.md
  - https://docs.kentico.com/k12sp/integrating-3rd-party-systems/using-the-integration-bus/integration-bus-overview.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).

The default installation of Kentico provides a sample integration connector. The connector implements **two subscriptions for outgoing tasks**:

- Synchronization of user objects
- Synchronization of all pages on all websites in the system

The connector's purpose is purely demonstrative – it only logs events in the **Event log** application for each creation, modification or deletion of a user or page.

## Adding the sample connector to your web project

1. Open your Kentico installation directory (by default _C:\Program Files\Kentico\\_).
2. Expand the _CodeSamples\CustomizationSamples\Classes\\_ sub-directory.
3. Copy the **SampleIntegrationConnector.cs** file into the **CMS\App\_Code** folder of your web project.

> **Info:** **Information for web application projects**
>
> If your Kentico project was installed as a web application, copy the sample file into the **Old\_App\_Code** folder instead.
>
> You must also manually include the sample class files into the project:
>
> 1. Open your application in Visual Studio.
> 2. Click **Show all files** at the top of the Solution Explorer.
> 3. Expand the _Old\_App\_Code_ folder, right-click the new file and select **Include in Project**.

## Viewing the connector code

To see how the sample connector is implemented:

1. Open your web project in Visual Studio.
2. Expand the _\~/App\_Code/_ folder and edit the _SampleIntegrationConnector.cs_ class.

```csharp

public class SampleIntegrationConnector : BaseIntegrationConnector
{
    #region "Initialization (subscribing)"

    /// <summary>
    /// Initializes the connector name and registers subscriptions.
    /// </summary>
    public override void Init()
    {
        // Initializes the connector name (must match the code name of the connector object in the system)
        ConnectorName = GetType().Name;

        // Creates subscription for all user objects (predefined method)
        SubscribeToObjects(TaskProcessTypeEnum.AsyncSnapshot, UserInfo.OBJECT_TYPE);

        // Create subscription for all pages on all sites (predefined method)
        SubscribeToAllDocuments(TaskProcessTypeEnum.AsyncSimpleSnapshot, TaskTypeEnum.All);

        // Demonstrates how to create subscriptions manually
        // ObjectIntegrationSubscription objSubscription = new ObjectIntegrationSubscription(ConnectorName, TaskProcessTypeEnum.AsyncSnapshot, TaskTypeEnum.All, null, PredefinedObjectType.USER, null);
        // SubscribeTo(objSubscription);

        // DocumentIntegrationSubscription pageSubscription = new DocumentIntegrationSubscription(ConnectorName, TaskProcessTypeEnum.AsyncSimpleSnapshot, TaskTypeEnum.All, null, null, null, null);
        // SubscribeTo(pageSubscription);
    }

...

```

> **Note:** To be functional, every connector must have the **ConnectorName** property initialized in the _Init()_ method. The value must match the code name of the connector object registered in the system. The sample connector uses the name of the ConnectorName – _SampleIntegrationConnector_.

The sample connector is defined in the App\_Code folder, so the file contains code that allows the system to load the class when working with the connector — the **RegisterCustomClass** assembly attribute declared above the _SampleIntegrationConnector_ class. See [Loading custom classes from App\_Code](https://docs.kentico.com/k12sp/custom-development/loading-custom-classes-from-app_code.md) for more information.

```csharp

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

```

The _RegisterCustomClass_ attribute accepts two parameters:

- The first parameter is a string identifier representing the name of the connector class. The name must match the value of the **Class name** field specified for the given connector object in the system (_SampleIntegrationConnector_ in this example).
- The second parameter specifies the type of the class as a **System.Type** object.

## Registering the connector

1. Open the **Integration bus** application in the Kentico administration interface.
2. Select the **Connectors** tab.
3. Click **New connector**.
4. Fill in the following properties:

   - **Display name**: Sample integration connector
   - **Provider class - Assembly name**: (custom classes)
   - **Provider class - Class**: SampleIntegrationConnector
   - **Enabled**: Yes (selected)
5. Click **Save**.

## Testing the connector

1. Open the **Settings** application.
2. Select the **Integration -> Integration bus** category.
3. Adjust the [settings](https://docs.kentico.com/k12sp/integrating-3rd-party-systems/using-the-integration-bus/enabling-the-integration-bus.md) as follows:

   - **Enable system integration bus**: Yes (selected)
   - **Enable logging of outgoing tasks**: Yes (selected)
   - **Enable processing of outgoing tasks**: No (cleared)

> **Info:** The sample connector only generates outgoing tasks, so you can leave the handling of incoming tasks disabled. Disabling processing of outgoing tasks allows you to see the integration tasks in the user interface. If you enable processing, the system executes the tasks immediately, and you only see the results in the [event log](https://docs.kentico.com/k12sp/developing-websites/troubleshooting-websites/working-with-the-system-event-log.md).

4. Click **Save**.
5. Try creating and modifying some pages and [user accounts](https://docs.kentico.com/k12sp/managing-users/user-management.md).
6. Open the **Integration bus** application. On the **Outgoing tasks** tab, you can see a list of tasks logged for your actions. The **Synchronize** () action is grayed out since processing of tasks is disabled in the system settings.

   ![Viewing outgoing integration tasks](https://docs.kentico.com/docsassets/k12sp/example-integration-connector/Integration_Tasks.png "Viewing outgoing integration tasks")
7. Go back to **Settings -> Integration -> Integration bus**, check **Enable processing of outgoing tasks** and click **Save**.
8. Return to **Integration bus -> Outgoing tasks**. The **Synchronize** () action is now enabled.
9. To execute all tasks:
   1. Select **All tasks** in the first selector below the list.
   2. Choose the **Synchronize** action.
   3. Click **OK**.

You can see the events logged by the integration tasks in the **Event log** application.

![Events logged by the sample integration connector](https://docs.kentico.com/docsassets/k12sp/example-integration-connector/Integration_Event_Log.png "Events logged by the sample integration connector")
