Adobe Campaign and Microsoft Dynamics: How to Implement an API-Based Integration for Lead Synchronization

Marc Meewis
Feb 4 · 4 min read

Adobe Campaign is a powerful cross-channel campaign management solution that helps you align your online and offline strategies to create personalized customer experiences. It offers a platform for managing campaigns that allows you to control the entire process of creating, executing, and tracking cross-channel campaigns, as well as sending messages that are personalized according to the profile, behavior, preferences, and needs of the clients. You can easily orchestrate, model, and automate the entire marketing process, and integrate with other Adobe solutions. In combination with Microsoft Dynamics 365, Adobe Campaign lets you orchestrate your outbound calling campaigns.

The use case for an Adobe Campaign integration with Microsoft Dynamics

After running a personalized cross channel marketing campaign (email, push and in-app message) to drive cross selling, an organization wants to contact specific customers via a call center agent. The call center agents work with Microsoft Dynamics to manage and follow up their calls. The customers (profiles in Adobe Campaign) that they would like to call, are the ones that either:

  • clicked a product link in an email
  • opened a push notification
  • clicked an in-app message

and then

  • viewed the product (*) but
  • did not buy the product (*)

(*) online behavior tracked with Adobe Analytics and synchronized with Adobe Campaign

Customers that match the above criteria should be created as leads in Microsoft Dynamics and their corresponding lead-id should be registered as part of the Adobe Campaign profile. The latter requires a bi-directional data exchange.

The challenge to solve

Identifying the customers (profiles) that meet the above criteria is quite easy to do in Adobe Campaign because of its advanced segmentation capabilities. Next to that, Adobe Campaign has some powerful data management capabilities for transforming and exporting data. The result of such an export is a CSV file that can be uploaded to an S3 or an SFTP destination as part of a data management workflow. So far, the easy part.

Once the CSV-file is available, it can be uploaded to Microsoft Dynamics using its Data Import Wizard. Remember that we also need the lead-id assigned to the uploaded customer data and to store it into Adobe Campaign. Should we upload the CSV in Dynamics using its “data import” wizard capability? Who is going to execute this wizard in time? How will we retrieve the assigned lead-id’s and get them into Adobe Campaign?

As you can read, transferring the data involves some challenges. That’s why we need an automated integration that relies on API based exchange and is driven by an Adobe Campaign data management workflow.

As we want to use API based integration with Microsoft Dynamics, we need to transform the extracted Adobe Campaign data into the Dynamics’ JSON format. Vice versa, we need to transform Dynamics’ response (lead-id) into a CSV format for Adobe Campaign.

The Adobe Campaign solution

An Adobe Campaign data management workflow can upload CSV data to an S3 bucket and download CSV data from an HTTP endpoint. When we implement the CSV download as an Adobe I/O Runtime serverless function we can:

  • trigger the data exchange as part of our Adobe Campaign workflow
  • read the CSV data from an S3 bucket (campaign data)
  • transform the CSV data into Dynamics’ JSON format
  • transform and write Dynamics’ response to a CSV (to obtain the lead-id)
  • store the CSV in an S3 bucket
  • return the CSV

If you implement the serverless function as a sequence of atomic actions (see below), you can reuse the actions to assemble new integrations (functions). The config, authentication, S3 and return actions are basically the same for every integration between Adobe Campaign and Dynamics, but the transform actions might be different. As such, the implementation of the function would look like:

Sequence of actions

Because of the serverless function, we can control the bi-directional data exchange between Adobe Campaign and Microsoft Dynamics from within an Adobe Campaign workflow:

Adobe Campaign Workflow that invokes the web action to sync the profile data

Use campaign’s capability to download a .CSV from an HTTP endpoint as part of workflow activity — this download link is a serverless function that does the .CSV to JSON transformation and, as a result, returns the profile’s dynamics lead-id as a .CSV formatted file. In the remainder of the workflow, the Adobe Campaign profile is updated with the returned lead-id.

The configuration of the download activity

Configure the download activity with web action endpoint

We could also implement an additional serverless function that uses the lead-id to update Adobe Campaign profiles with any information available in Dynamics (for example, contact date and result of call).

This example illustrates how Adobe I/O Runtime can automate data exchange between systems that are optimized to handle large amounts of data in bulk (data import/export via CSV in Adobe Campaign) and environments that provide API’s (Microsoft Dynamics). This Adobe I/O Runtime serverless function approach lets you integrate Adobe Campaign with virtually any API driven environment as part of an Adobe Campaign workflow.

Marc Meewis

Written by

Adobe Tech Blog

News, updates, and thoughts related to Adobe, developers, and technology.

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade