Expand my Community achievements bar.

Adobe Campaign Classic Integration with Journey Orchestration

Avatar

Administrator

10/6/21

Author: Pulkit Chadha

Banner image.jpeg

In the post, we will look at how you can orchestrate real-time customer journeys with Adobe’s Journey Orchestration and deliver these experiences through Adobe Campaign Classic.

In today’s digital-first environment, customers expect consistent messages across all digital and physical touchpoints. However, businesses struggle to leverage their existing investment in Marketing Technology solutions to cater to these evolving needs of their customers. Some of these challenges are:

  • Data needs to be transferred for one system to the other, causing latencies and the inability for Marketers to orchestrate Realtime customer journeys.
  • Legacy solutions talk in different languages (JSON, XML, etc.), needing custom integration to be built.
  • Point solutions and in-house built custom integrations increase technical debt and fragility to the Marketing Technology architecture.

In the rest of this blog, we will discuss how Adobe solutions can help elevate these challenges. We will be looking at :

  • How to use Adobe Journey Orchestration, Adobe’s real-time orchestration engine that allows businesses to build and execute customer journeys improved by contextual data from events on any channel and system.
  • How businesses can leverage existing omnichannel messages built on Adobe Campaign Classic with Journey Orchestration to automate marketing and customer communication processes in real-time.
  • How Adobe I/O Runtime, a serverless platform offering by Adobe, allows businesses to deploy custom code right in the cloud quickly, all in an auto-scaling, no server set-up.

Figure 1: IntroductionFigure 1: Introduction

Considerations

Before we proceed, there are specific considerations/callouts to be aware of. These vary based on the customer ACC implementation architecture, consider the following discovery questions:

  • Does the customer have more than one Message Centers provisioned? Your implementation of the middleware will be based on how many message center instances are provisioned and in use.
  • Is the customer using a load-balanced instance to distribute the load between multiple message center instance? The authentication method used to let Journey Orchestration/middleware trigger ACC messages center templates will depend on whether a load balancer is used.
  • How is the customer triggering message center messages? Is the operator access restricted based on static IP addresses? Actions in JO and Adobe I/O Runtime cannot be restricted based on static IP addresses. Consult with your customer to check whether static IP whitelisting can be lifted for this integration.

Below is a table summarizing these considerations:

A table.png

Solutions

This is a step by step guide how to implement the solution

1. Adobe Campaign Classic

  • Create a message center only operator

    Message center operator.png

  • Make sure to select public network under security settings

Warning: we cannot use Private network users. Adobe I/O Runtime is serverless and as such does not use static IPs

2. Adobe I/O Runtime

Adobe I/O Runtime is a server-less platform available to Adobe customers. Adobe Experience Cloud Customer can request access by filling out a form here: https://adobeio.typeform.com/to/RWhT8Y

Two actions deployed on Adobe I/O Runtime are detailed below. The code for these actions can be found here: https://github.com/PulkitXChadha/acc4jo

Serverless Functions/Actions

acc4jo-0.0.1/getACCSessionToken

  • This is an Authenticated endpoint that returns a session token.
  • The Deployment of the action reuses the basic authentication mechanism; this data is base64 encoded to avoid the need to transfer credentials in plain text.
  • The instance URL is a query parameter.

acc4jo-0.0.1/sendMessageCenterEmail

  • Deploy ACC send transaction Email actions
  • This action is required to transform the JSON payload received and translate it into SOAP API body
  • The response of this call will be the XML response from ACC
  • The Deployment of the action reuses the basic authentication mechanism used by ACC SOAP API calls
  • The instance URL, eventType and email are required fields in the body
  • The CTX object can contain as many attributed for personalization as needed.

3. Adobe Journey Orchestration

Actions

Adobe Campaign Classic Message Center Email Action (i.e. sendMessageCenterEmail)

Adobe Campaign Classic Message Center Actions.png

  • URL: This is the Adobe I/O Runtime API endpoint to trigger the ACC message center email.
    For example, the runtime API endpoint deployed for one of the instances is:
    https://<<Adobe I/O Namespace>>.adobeioruntime.net/api/v1/web/acc4jo-0.0.1/sendMessageCenterEmail
  • Method: This method for this Action call is going to be a POST.
  • Headers: There are no additional header parameters required for this API call.
  • Authentication: We have two options to authenticate with the ACC message center instance.
    1. Persisted Session Token — This the recommended method as the sessionToken can be persisted for up to 24 hrs. resulting in fewer authentication calls to ACC. Below are details on how to leverage this method while connecting Adobe Campaign Classic message center with JO:
    2. Select Custom Authentication

      Select Custom Authentication.png

  • The custom authentication payload to be used is below. Note: update the runtime endpoint, the username and passwords for your instance and the instance URL
    {
    “type”: “customAuthorization”,
    “authorizationType”: “Bearer”,
    “endpoint”: “https://<<ORG_TENANT_ID>>.adobeioruntime.net/api/v1/web/acc4jo-0.0.1/getACCSessionToken”,
    “method”: “POST”,
    “headers”: {
    “Authorization”:”Basic EncodeBase64(<<User Name of MC Operator>>:<<Password of MC Operator>>)”
    },
    “body”: {
    “bodyType”: “form”,
    “bodyParams”: {
    “accIntanceURL”:”<<ACC MC Instance URL>>”
    }
    },
    “tokenInResponse”:”json://sessionToken”,
    “tokenTarget”: “sessionToken”,
    “cacheDuration”: {
    “duration”:86399,
    “timeUnit”:”seconds”
    }
    }
  • As soon as you save, Journey Orchestration will send a test API call. If the authentication were successful, you would get a Successful Test message like below

    Successful Test message.png

  • Basic Username and password — While session token is recommended, if the customer has a load balancer to distribute the incoming requests on multiple message center instance, the session token authentication method cannot be used. In this case, the basic username and password methods are used. Below are details on how to leverage this method when connecting ACC message center with JO:
  • Select Basic authentication

    Select Basic authentication.png

  • Input the Username and password of the message center execution operator

    Input the Username and password.png

  • Message Parameters: the values may depend on your use case. Below is an example.

    Note: accInstanceURL is just the domain of the message center server, i.e. “adobeamericas91.adobedemo.com

    {
    “accIntanceURL”: “<<ACC Message Center URL>>”,
    “eventType”: {
    “toBeMapped”: true,
    “dataType”: “string”,
    “label”: “ACC Event Type”
    },
    “email”: {
    “toBeMapped”: true,
    “dataType”: “string”,
    “label”: “Email Address”
    },
    “externalId”: {
    “toBeMapped”: true,
    “dataType”: “string”,
    “label”: “Recipient ID”
    },
    “ctx”: {
    “firstName”: {
    “toBeMapped”: true,
    “dataType”: “string”,
    “label”: “First Name”
    },
    “lastName”: {
    “toBeMapped”: true,
    “dataType”: “string”,
    “label”: “Last Name”
    }
    }
    }
  • Authentication, eventType, and email address are required fields.
  • ExternalID — This is an optional field mapping. When supplied, this will allow for the reconciliation of a known recipient in ACC’s marketing instance. We have chosen to use CRM ID as our externalID.
  • CTX object: in the parameter can have as many key-value pairs as needed to the personalization of the email. Note, the key-value pairs within the ctx object will vary based on your implementation and the number of personalization columns you want to use.
  • To use the action in a Journey drag and drop the action and map the message parameters

Journey

Website Sign Up Journey

  • For our use case, we will be going throw a welcome journey.
  • Drag the event that will trigger the journey
  • Drag a Condition activity and condition on the use case, we will be using a high likelihood to subscribe score to send new registration emails to profiles.
  • Drag and drop the accMCEmail action we created.

Website Sign Up Journey.png

  • Map all of the personalization fields needed on the action payload.

    Note: email address and eventType are required fields to send a transactional email.

  • Finally, the action call will look something like this.

    the action call.png

  • The Final journey will look like this

    The Final journey.png

Limitations

Resources

  1. Adobe I/O Runtime:https://www.adobe.io/apis/experienceplatform/runtime/docs.html
  2. Adobe I/O Runtime Quick Start: https://www.adobe.io/apis/experienceplatform/runtime/docs.html#!adobedocs/adobeio-runtime/master/qui...
  3. Adobe Journey Orchestration: https://www.adobe.com/experience-platform/journey-orchestration.html
  4. Adobe Journey Orchestration Quick Start Guide: https://docs.adobe.com/content/help/en/journeys/using/starting-with-journeys/get-started.html
  5. Adobe Journey Orchestration Capping API:https://docs.adobe.com/content/help/en/journeys/using/working-with-apis/capping.html
  6. Adobe Journey Orchestration Custom Action Limitations:https://docs.adobe.com/content/help/en/journeys/using/action-journeys/action-third-party/custom-acti...

Note: Your Adobe Campaign Architect and Implementation Team will need to consider your specific architecture and address any IP Allowed List requirements for this solution. As stated above, Adobe I/O Runtime and Journey Orchestration don’t have static IP addresses and, as such, will need Adobe Campaign Classic to allow list a wide range of IP addresses.

Originally published: Aug 6, 2020