---
title: "Setting up and monitoring an integration"
slug: "setting-up-an-integration"
updated: 2025-10-21T16:45:03Z
published: 2025-10-21T16:45:03Z
canonical: "support.lusid.com/setting-up-an-integration"
---

> ## Documentation Index
> Fetch the complete documentation index at: https://support.lusid.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Setting up and monitoring an integration

You can set up, run, and manage your LUSID integrations via **Integrations > Dashboard** in the LUSID web app. [Read more about our Partnerships and Integrations.](/v1/docs/introduction-to-partnerships-and-integrations)

## Setting up an integration

To set up an integration instance:

1. [Contact us](https://www.finbourne.com/contact) to enable access to your chosen integration. Note most integrations require you to have a third party licence to ingest data.
2. Navigate to **Integrations > Dashboard** and select **Create instance**. ![](https://cdn.document360.io/d575ad81-c0ed-4980-bbd1-d59ac5c3de82/Images/Documentation/image(890).png)
3. Choose an integration from the list.
4. Follow the prompts in the **Integration settings** to configure your integration. The configurable settings can vary across integrations; if you require assistance, [contact us](https://www.finbourne.com/contact). Note the following:
  - You can select the **View imported fields** button and inspect the **Source Fields** and **Transformation Description** columns to see how LUSID maps your data. ![](https://cdn.document360.io/d575ad81-c0ed-4980-bbd1-d59ac5c3de82/Images/Documentation/image(891).png)
  - You can select the **Edit imported properties** button to specify additional properties you wish to add or remove from your data import. You cannot remove mandatory properties. ![](https://cdn.document360.io/d575ad81-c0ed-4980-bbd1-d59ac5c3de82/Images/Documentation/image(892).png)
  - You may edit your integration at any time. The changes will take effect from the next run.

## Running an integration

Your scheduled integration instances run automatically, but you can also choose to run an instance using one of the following methods:

Web appAPILuminesce

You can run an integration manually via **Integrations > Dashboard**. Simply locate the integration instance you want to run, and click the **Menu** icon > **Run**.

![](https://cdn.document360.io/d575ad81-c0ed-4980-bbd1-d59ac5c3de82/Images/Documentation/image-IZXWH7B9.png)

Call the [ExecuteInstance](https://www.lusid.com/docs/api/horizon/endpoints/integrations/ExecuteInstance) API, for example:

```shell
curl -X POST 'https://<your-domain>.lusid.com/horizon/api/integrations/instances/<your-integration-instance-ID>/execute'
  -H 'Content-Type: application/json' 
  -H 'Authorization: Bearer <your-API-access-token>'
```

Write a Luminesce query using the `Integration.Execute` provider and execute it using a tool such as the LUSID web app, for example:

```sql
select * from Integration.Execute where InstanceId ='<your-integration-instance-ID>';
```

## Monitoring integration runs

### Monitoring the latest run

Once set up, you can monitor the most recent run of an integration via **Integrations > Dashboard**.

The **Last run time** and **Last run result** columns show you when the integration last ran, and whether it completed successfully.

![](https://cdn.document360.io/d575ad81-c0ed-4980-bbd1-d59ac5c3de82/Images/Documentation/image(899).png)

### Viewing and troubleshooting all runs

You can view further details for runs of all your integrations via **Integration > Runs**.

> [!NOTE]
> Note
> 
> You can also monitor your integration runs using dedicated Luminesce providers. [Read more.](/v1/docs/readwrite-integration-instances-integrationx)

The dashboard displays information on each run, such as the number of data attributes:

- Mapped
- Loaded
- Skipped
- Failed
- Missing

![](https://cdn.document360.io/d575ad81-c0ed-4980-bbd1-d59ac5c3de82/Images/Documentation/image(901).png)

Every run has a unique **Run ID** that you can click on to view in-depth information that can assist troubleshooting, including:

- The progress of the import at various stages
- If an integration supplies data via a file, which file LUSID has used
- At what stage in the process an error occurred
- Why LUSID skipped certain items

![](https://cdn.document360.io/d575ad81-c0ed-4980-bbd1-d59ac5c3de82/Images/Documentation/image(895).png)

*****Click to expand more information on status logs*****

#### Payload

Payload logs relate to the overall payload (for example a CSV or nugget) delivered to or received by LUSID from the integration source system.

- `PayloadAcquired`: LUSID successfully acquired the payload from the integration source system.
- `PayloadFailed`: LUSID could not acquire the payload, or LUSID acquired the payload but could not extract it; for example if the payload fails one or more data integrity checks.
- `PayloadExtracted`: LUSID successfully extracted the records contained in the payload. After this log, you should see a `Resource` log for each extracted record.

#### Resource

Resource logs relate to each individual record of the primary resource for the integration, for example a trade from a trade nugget, or an instrument from a CSV of instruments.

- `ResourceExtracted`: LUSID successfully extracted the record.
- `ResourceMapped`: LUSID successfully mapped the record’s attributes to target attribute names, as per your configuration.
- `ResourceSkipped`: LUSID skipped the record as per your configuration; for example if your integration instance is configured to only load particular instrument types from a CSV.
- `ResourceResolved`: LUSID matched the record to an existing LUSID resource, or has established that a new LUSID resource must be created.
- `ResourceLoaded`: LUSID successfully loaded the record and its attributes.
- `ResourcePartLoaded`: LUSID successfully loaded the record but could not load one or more of its attributes.
- `ResourceFailed`: LUSID could not load the record, for example if the record is missing a required attribute.

#### Attribute

Attribute logs relate to a particular attribute of a resource, for example a credit rating for an instrument.

- `AttributeMapped`: LUSID successfully mapped the attribute to a field name in LUSID.
- `AttributeSkipped`: LUSID skipped the attribute as per your configuration, for example if LUSID skipped the resource for the attribute.
- `AttributeLoaded`: LUSID successfully loaded the attribute.
- `AttributeFailed`: LUSID could not load the attribute.
- `AttributeMissing`: The source data is missing an optional property you’ve selected for your integration instance.

#### DefaultAttribute

Default attribute logs relate to a particular attribute that does not exist in the resource from the integration source system, but has a default value in your configuration.

You can filter on the **Ref Run ID** column to see all automatic retries that LUSID attempts for a given initial integration run.

![](https://cdn.document360.io/d575ad81-c0ed-4980-bbd1-d59ac5c3de82/Images/Documentation/image-FCYKTIOY.png)

> [!NOTE]
> Note
> 
> To see the **Ref Run ID** column on your dashboard, you may need to [reorder your columns](/v1/docs/how-do-i-customise-dashboard-columns-and-share-views#rearranging-dashboard-columns).

### Subscribing to `IntegrationRunEnded` system events

In addition to monitoring integration runs via the LUSID web app, you can [subscribe to](/v1/docs/how-do-i-subscribe-to-an-event) the `IntegrationRunEnded` system event. This allows you to trigger automated processes or receive notifications when an integration instance run completes.

LUSID emits an `IntegrationRunEnded` event regardless of whether the run succeeds or fails.

You can view the complete event schema, including the fields you can filter on, by calling the [GetEventType](https://www.lusid.com/docs/api/notification/endpoints/event-types/GetEventType) API.

#### Example

The following example contains the request body you might send to subscribe to `IntegrationRunEnded` events for a particular integration instance by [filtering](/v1/docs/using-lusid-filtering-syntax-to-subscribe-to-events-conditionally) with `Body.InstanceId`:

```json
{
  "id": {
    "scope": "IntegrationRunEnded",
    "code": "BloombergDLPS"
  },
  "displayName": "Bloomberg DLPS Complete",
  "description": "Subscription for Bloomberg DLPS integration completion events",
  "status": "Active",
  "matchingPattern": {
    "eventType": "IntegrationRunEnded",
    "filter": "Body.instanceId eq '44d096c6-39d2-43db-952c-f5f65e30a74d'"
  },
  "useAsAuth": "00uji4ve5haBc1Hlf2p7"
}
```

Once you have a subscription, you can create:

- A notification to specify how you want to be informed
- An event handler in the [Workflow Service](/v1/docs/how-do-i-use-system-event-handlers-to-automatically-create-or-update-tasks) that creates tasks

You can use [mustache templates](/v1/docs/using-mustache-templates-to-enrich-notifications) to include event fields dynamically in your notification messages.

[Read more on system events and notifications.](/v1/docs/notification-service)

LUSID emits a system event when an internal operation completes. This can be within LUSID itself, or in one of its ecosystem applications such as Drive, Scheduler or Luminesce. For example, when you call the CreatePortfolio API (either directly, or via an SDK, Luminesce, the LUSID web app or any other proxy), LUSID emits a PortfolioCreated system event providing the operation succeeds.

You can create a notification and attach it to a subscription. A notification can trigger people via email or SMS, or a service via Amazon SQS or a webhook. This service can be LUSID itself, or a third party API.

An occurrence of the workflow defined in a task definition. You can create multiple tasks from one task definition, typically with changing input values, for example you might create one task per LUID for securities to be screened.
