Design your automated integration strategy


This article describes how to integrate data for your contacts from your CRM system. The example discussed in this article assumes that you need the interactions of your customers from your support center, which is a separate system.

The following chart outlines the integration logic:

Automated data import

To implement these integrations, you need to define the following:

Data sources

Usually, each integrated system is represented by a dedicated data source. This is because when integrating external data, Sitefinity Insight needs the unique identifier of the data source. These identifiers are the identifiers used in the respective system. To avoid accidental collisions of the same identifiers for different contacts in different systems, the data must be imported in different data sources.

In this example, there are two data sources, named CRM and Support.
You can choose other names. To ensure that the data from different data sources maps to a single contact, you need to provide the corresponding email for the contact to at least one of the imports. Sitefinity Insight will automatically map this data to the unified contact profile.

Import types

The import type represents one type of data that can change at its own rate in the source system.

This example assumes that you get both the contacts and purchases associated with these contacts. The example assumes the following:

  • The contacts can be created and updated separately.
  • The contacts have a field named LastModifiedOn to keep track of the time when the record has been modified.
  • The purchases can happen without any modifications of the contact record.
  • The purchase record has Timestamp fields associated with it, named Created, PaidOn, ShippedOn, which are different from the last modification date of the contact.

You must set up two different Import types that follow the changes of the respective data entity and are responsible for importing them.

After the first data import completes for a given Import type, Sitefinity Insight parses the data and keeps track of the latest timestamp of the processed data. When the same import runs again, the process starts with retrieving this timestamp, extracting the data that has been modified since the last recorded timestamp, transforming the data in the Insight’s CSV format for importing Interactions and Contact Properties, and loading it into Insight data center.

Transforming the data

Automated data imports allow you to import interactions, contact properties, or both at the same time. For more information, see Import data from a CSV file.

In this example, for the contacts import type you are pulling only contact properties and the transformation is simply mapping the field from the contact entity to the desired contact properties in Sitefinity Insight. In the CRM, you must set the required UniqueId field as the identifier of the contact.

The field mappings look like the following:

  • Contact.Id => UniqueId
  • Contact.Email => Email
  • Contact.Adress => Address
  • Contact.LastModifiedOn => Timestamp

With the second import type, you are importing Interactions, based on the Purchases entity.
You need to make sure that the UniqueId field of the interaction is the same as the UniqueId field of the contact imported from the import type.

When you are importing interactions, you must pass the following fields that describe it:

  • Predicate
    It can be a fixed static string like Purchased.
  • Object
    It describes the product.

You can use the date when the purchase was paid as a timestamp for the interaction as this is a strong enough indicator that the purchase process has been completed.

The field mappings look like the following:

Purchase.ContactId => UniqueId
“Purchased” = > Predicate
Purchase.ProductName => Object
Purchase.PaidOn => Timestamp

For the third import, you need to pull the email of the person who opened a support request. In this example, this information is not directly available in the Ticket entity of the support system, and you need to get it from the related contact entity.

The field mappings look like the following:

  • Ticket.SubmitedById => UniqueId
  • Ticket.SubmitedBy.Email => Email
  • “Support Case” = > Predicate
  • Ticket.Subject => Object
  • Ticket.CreatedOn => Timestamp

Frequency of execution

You set up the frequency of the imports, depending on how fresh the data in Sitefinity Insight should be.

Implement the imports

Once you have set up the information mapping, you use Azure Data Factory to implement the imports. For more information, see Import Salesforce data into Sitefinity Insight using Azure Data Factory.

RECOMMENDATION: We recommend importing your data manually at least once to check that all records and mappings are correct and automate the process afterwards.

Was this article helpful?

Next article