---
title: Lab 1. Payment Reminder Campaign
slug: aida-hol/lab-1-payment-reminder-campaign
docTags: 
createdAt: 2026-05-11T11:28:27.723Z
---

:::hint{type="info"}
**Focus area**
Adobe Journey Optimizer

**Features**
Orchestrated Campaign

Ad Hoc Targeting

Data driven email activation

Multiple messages per profile

**Difficulty**
Easy
:::

## Use case description

In the German cruise market, customers typically confirm their booking by paying a deposit of around 20% of the total amount. They are then required to make additional payments at regular intervals to settle the remaining balance.

As a marketer, I want to keep customers informed about their payment schedule: automated notifications will be sent 30 days before the departure date, followed by a phone reminder 15 days prior to departure.

## Resources

**Relational data model**
Data engineers have designed a relational data model and populated it with sample data.

There are 3 main entities: **Booking**, **Cruise&#x20;**&#x61;nd **Customer**

Each entity has been described with a **Relational&#x20;**&#x73;chema.

The relationships between entities have been defined with these cardinalities:&#x20;

- 1 customer has booked 0..N booking(s)
- 1 cruise has been booked in 0..N booking(s)

The Entity Relational Diagram is visible in `Data management > Schemas > Relationships `

![Relational data model](https://api.archbee.com/api/optimize/1Jp0iolWv35Z_mkI7oUiT/OSn9lREaJfAKPf3KHn2lS_image.png "Relational data model")

**Email template**

A Web Agency has provided an email template named **\[Example] Payment Reminder Template&#x20;**&#x61;vailable in the Content template library in `Content Management > Content template > All template` folder.

## Solution Design

This page describes a solution based on **Orchestrated Campaign&#x20;**&#x70;rocessing data solution.

A marketer uses a visual web interface to define the key tasks required to automate booking data processes and keep customers informed about their payment schedule.

Every day, execute these tasks:

- Filter booking records
- Calculate the number of days before the departure date
- Split the records based on the number of days before departure date
- Deliver a personalized message to one segment
- Save another segment as an audience in RT-CDP, that can be activated to a destination like a Call Center application

The following sections outline the activities a marketer needs to perform to automate this marketing flow.

First, create a new **Orchestrated Campaign** flow:

- In the menu on the left side, under **Campaigns**, click on **Orchestration** tab
- Click on the **Create campaign** button
- Select **Orchestration - Marketing and Transactional** and click o&#x6E;**&#x20;Confirm**
- Set the name to `[your name] Pre Cruise - OnBoard Revenue Campaign- Lead times > 16 months`
- Click on **Save**

:::hint{type="warning"}
This solution has been designed to illustrate **capabilities&#x20;**&#x6F;f the product. The implementation details could change in real life conditions.
:::

## Step 1 - Ad Hoc Targeting

:::hint{type="info"}
**Goal**
Filter the bookings with a balance due > 0

Create 3 segments:

- Bookings with a departure day in 30 days
- Bookings with a departure day in 15 days
- The other cases

**Highlight**

Build audience, Enrichment, Split
:::

### Filter booking records

- Click on the + icon to display the list of activities



::Image[]{src="https://api.archbee.com/api/optimize/1Jp0iolWv35Z_mkI7oUiT/V2IJwvmO7lER0x3nZyjWQ_image.png" size="50" width="339" height="356" darkWidth="339" darkHeight="356" position="center" showCaption="false"}

- Select the **Build audience** activity
- Set the Targeting dimension to **booking**
- Click on **Create audience** button
- Click on **Add condition**
- Select the attribute **Balance due**, click on **Confirm**
- Set the operator to **greater than** and set the value to 0.0
- Click on **Calculate&#x20;**&#x74;o get a count of records

![](https://api.archbee.com/api/optimize/1Jp0iolWv35Z_mkI7oUiT/9H6I7OW2SmAjkaV8u_iXv_image.png)

- Click on **Confirm**
- Click on **Start&#x20;**&#x74;o start queries in a simulation mode

![](https://api.archbee.com/api/optimize/1Jp0iolWv35Z_mkI7oUiT/FNa6DwbbXCmdXPo3EZwti_image.png)

- Click on the **Result&#x20;**&#x62;ox in the green transition link and click on **Preview results** button to see the results

### Calculate the number of days before the departure date

Every day, the flow calculates the number of days remaining until the departure date (i.e., departure date minus the current date) using a function called `DaysDiff(date1, date2)`

This calculated field will be calculated and added to the target using an Enrichment activity

Follow these tasks:

- Click on the + icon to display the list of activities&#x20;
- Select **Enrichment**
- Click on the **+ Add enrichment** data button
- Click on **Edit expression** button
- Click on **Fx &#x20;**(Helper functions) icon and set this expression

:::Paragraph{indent="1"}
`DaysDiff([target/cruise/@departureDate],GetDate())`
:::

- Click on **Confirm** button
- Click on **Resume&#x20;**&#x62;utton to let the engine execute the Enrichment activity

![](https://api.archbee.com/api/optimize/1Jp0iolWv35Z_mkI7oUiT/W_qHTP7FdvX5q13YwnJrq_image.png)

- Click on the **Result&#x20;**&#x62;ox in the green transition link and click on **Preview results** button to see the results

![](https://api.archbee.com/api/optimize/1Jp0iolWv35Z_mkI7oUiT/IYSY8MY8J94HypbUGBzv0_image.png)

### Split the records in 3 segments

- Click on the + icon to display the list of activities&#x20;
- Select the **Split&#x20;**&#x61;ctivity
- Define 3 segments and filter with the calculated field
  - Bookings with a departure day in 30 days
  - Bookings with a departure day in 15 days
  - Enable the **Generate complement&#x20;**&#x6F;ption and set the label to **Exclude - not the right day**

:::hint{type="info"}
The general complement segment contains all records that have not been selected by the other segments.
:::

****

![](https://api.archbee.com/api/optimize/1Jp0iolWv35Z_mkI7oUiT/siNV3UHCPlMwhM2hVawZa_image.png)

- Click on **Resume&#x20;**&#x62;utton

![](https://api.archbee.com/api/optimize/1Jp0iolWv35Z_mkI7oUiT/ZqicQjvrClsVUHRi3qoJv_image.png)

:::hint{type="warning"}
Depending on the Lab day, the results will change
:::



## Step 2 - Send one email per booking

:::hint{type="info"}
**Goal**
Send messages to recipients, not bookings

Send 1 email per booking- 1 recipient can receive multiple messages

Add personalization data in the email like **balance due** and **cruise stops**

**Highlight**

Enrichment of the target with a collection of ports where the ship will stop

Change dimension to find people who have booked

Email personalization
:::

### Enrichment of the target

This section describes how to add data in the target in order to personalize the message. It's possible to add attributes and to add a collection of data like all the ports where the ship will stop.

- Go back to the Enrichment activity&#x20;
- Click on **Add enrichment data** button and select the attribute:
  - `Targeting dimension > cruise > Departure date`
- Click on **Add enrichment data** button and select the attribute
  - `Targeting dimension > cruise > Cruise name`
- Click on **Add enrichment data** button and select the attribute
  - `Targeting dimension > Balance due`

![](https://api.archbee.com/api/optimize/1Jp0iolWv35Z_mkI7oUiT/QEISu_1pNGV43li38jZ_7_image.png)

- Click on **Add enrichment data** button and select the attribute
  - `Targeting dimension > cruise > stops > port > Port name`
- Keep the configuration **Collect data**
- Set the number of lines to retrieve to **5**
- Set the alias to **portName**
- Click on the **Add attribute** button
- Add the **Port Description** attribute
- Set the alias to **portDesc**
- Enable the sorting box and sort the lines by **orderStop** ascending

::Image[]{src="https://api.archbee.com/api/optimize/1Jp0iolWv35Z_mkI7oUiT/463uqP9riavYI5ggIg7v4_image.png" size="80" width="540" height="713" position="center" darkWidth="540" darkHeight="713" showCaption="false"}

- Click on **Save**
- Select the Split activity, set the label to `Segment by departure` date and enable the **Pause&#x20;**&#x6D;ode - this is the 2nd icon after the delete/bin icon

![](https://api.archbee.com/api/optimize/1Jp0iolWv35Z_mkI7oUiT/RAIdaKTxRoV-xa0dfNX5e_image.png)

- Click on the **Restart&#x20;**&#x62;utton
- Wait for the flow execution, check that the Split activity has not run and is in paused state
- Look at the data by clicking on **Preview results** button



![](https://api.archbee.com/api/optimize/1Jp0iolWv35Z_mkI7oUiT/YQjBg0MrcDT0laoeYIxfi_image.png)

- 5 new columns have been added in the target; these 5 columns match the 5 first ports where the ship will stop



:::hint{type="success"}
**The target contains personalization data**

Email messages will be personalized with all the data that have been added in this list.
:::

### Change the dimension

Select individuals based on booking data. Communications should be delivered to people, not to bookings.

Follow these steps:

- Click on the + icon to add an **Change dimension** activity
- Select customer as the new target dimension
- Change the label to **Find people from bookings**

![](https://api.archbee.com/api/optimize/1Jp0iolWv35Z_mkI7oUiT/TZFZqeXHifvstpUKUxPym_image.png)

- Click on **Save**
- Click on the **Result&#x20;**&#x74;ransition and look at the schema structure
- Click on the Targeting dimension
- Check that the attributes are the customer's ones like CRM ID

![](https://api.archbee.com/api/optimize/1Jp0iolWv35Z_mkI7oUiT/NeNMboQhAy0hMVUPlx_aP_image.png)

:::hint{type="success"}
**The new targeting dimension is now Customer**

The first column of the target is the **CRM ID&#x20;**&#x66;ield that has been tagged as the identity field in the schema, used to make a reconciliation with profiles in the Real-time Profile Store.
:::

:::hint{type="warning"}
**Notes about "Change dimension"**

The **Change dimension** activity allows you to change the targeting dimension as you are building an audience. It shifts the axis depending on the data template and the input dimension. For example, you can switch from the booking dimension to the customer dimension.

This step is **required&#x20;**&#x74;o prepare the target in order to let the product deliver messages (email, push, SMS, direct mail). The engineers are working to improve the process and this step will become optional soon.
:::

### Personalize an email message

Follow these steps:

- Click on the + icon to add an **Email** activity
- Set the category to **Transactional**
- Click on **Edit email** button
- In the **Actions** tab, select the configuration named **config-email-customer-bookings-communication**

:::hint{type="info"}
**Channel configuration&#x20;**

The `config-email-customer-bookings-communication` channel has been set to deliver one email per booking record and to use the profile's personal email address.



![](https://api.archbee.com/api/optimize/1Jp0iolWv35Z_mkI7oUiT/7S7pAvogPfrbhk6JZnGsy_image.png)
:::

- Click on **Edit content** button
- Click on **Content template** button, then **Apply content template**
- Select the template named `[Example] Payment Reminder Template`
- Click on **Confirm&#x20;**&#x62;utton to apply the template
- Edit the subject line and replace \[FIRST\_NAME] by the profile's first name

::Image[]{src="https://api.archbee.com/api/optimize/1Jp0iolWv35Z_mkI7oUiT/244CJtQN0rYvt-PZUM-Xk_image.png" size="70" width="383" height="67" darkWidth="383" darkHeight="67" position="center" showCaption="false"}

- Click on **Edit email body&#x20;**&#x61;nd replace personalization fields with **Target attributes**
- Replace \[CRUISE\_NAME] by the target attribute named `{{target.enrichment.cruiseName}}`

![](https://api.archbee.com/api/optimize/1Jp0iolWv35Z_mkI7oUiT/zIwMmtLErjPjuT32ZCQZu_image.png)

- Look at the Grid component and check the cruise stops fields:

![](https://api.archbee.com/api/optimize/1Jp0iolWv35Z_mkI7oUiT/zTNmHy8-2M6utcy5-yhmb_image.png)

:::hint{type="success"}
**No-Code needed - Marketer Self-Service**

This process lets a Marketer do the personalization without writing any line of code.
:::

### Simulate the content

- Select the Split activity named `Segment by departure date`
- Disable the Pause mode, enable the Resume mode
- Click on the **Restart&#x20;**&#x62;utton&#x20;
- Wait for the execution of the flow until the Email activity
- Select the Email activity, click on **Edit email** button
- Go to the **Content&#x20;**&#x74;ab and click on the **Simulate content > Simulate content** button
- Click on **Manage test profiles** button
- Search for a test profile that exists in the target:
  - Identity namespace = `Demo System - CRMID`
  - Identity value = `nW6oaO8Y`
- Go back to the Simulate (Email) screen and check the personalization of the content

![](https://api.archbee.com/api/optimize/1Jp0iolWv35Z_mkI7oUiT/EO1EOWlrt2FrDlpy_aOjk_image.png)

- Check the 5 first Cruise stops

![](https://api.archbee.com/api/optimize/1Jp0iolWv35Z_mkI7oUiT/Vf5Z0DFjlTDDOSjBGgmEj_image.png)

:::hint{type="success"}
**Simulate the content with target data**

This process lets a Marketer simulate the preview of a message by directly use target data.
:::

## Step 3 - Save the Target as an Audience&#x20;

:::hint{type="info"}
**Goal**
Save the **Target&#x20;**&#x61;s an **Audience**

An Audience can be activated to CRM destination, as usual in AEP RT-CDP

**Features**

Copy and paste, Deduplicate, Save audience
:::

### Copy & Paste an activity

- Select the Change dimension activity
- Click on the **Copy&#x20;**&#x69;con - the 3rd icon after the delete/bin icon
- Go to the segment named `Departure day in 15 days`
- Click on the + button
- Select **Paste 1 activity**



::Image[]{src="https://api.archbee.com/api/optimize/1Jp0iolWv35Z_mkI7oUiT/8MqxgW52Gy-Gulnusistt_image.png" size="40" width="314" height="540" position="center" darkWidth="314" darkHeight="540" showCaption="false"}

### Deduplication&#x20;

- Click on the + button
- Add the **Deduplication&#x20;**&#x61;ctivity
  - Primary set = `Find people from bookings`
  - Attribute 1 = `CRM ID`
  - Deduplication method = `Random selection`

![](https://api.archbee.com/api/optimize/1Jp0iolWv35Z_mkI7oUiT/Q5atZ7hoENVICFgEp4lyc_image.png)

- Click on the **Restart&#x20;**&#x62;utton
- Click on the **Preview the results** button to check that the records have been deduplicated by CRM ID

![](https://api.archbee.com/api/optimize/1Jp0iolWv35Z_mkI7oUiT/JJ0VCSx5M0qVwvjrBBUAk_image.png)

### Save the audience

- Add a **Save audience** activity
  - Set the name to `[your name] Customers who have to pay`
  - Set the profile mapping field to: `customer - crmid`

![](https://api.archbee.com/api/optimize/1Jp0iolWv35Z_mkI7oUiT/dTsB6YrD8JBdCYJO9g6Es_image.png)

This activity creates an audience with Campaign Orchestration as its origin:

![](https://api.archbee.com/api/optimize/1Jp0iolWv35Z_mkI7oUiT/DmK3bDI1D-m9YV0BwqWZ4_image.png)

:::hint{type="info"}
The Target cannot be saved as an Audience in the simulation mode. The Orchestrated Campaign flow has to be published in order to save the audience. This audience can be activated to a CRM destination for instance, to let the Customer Care people phone the bookers and ask for a payment.
:::

****

## Step 4 - Schedule and Publish&#x20;

:::hint{type="info"}
**Goal**
Schedule the execution of the Orchestrated Campaign flow

Publish the messages templates

Publish the exportation of data (Save audience)

**Highlight**

It's possible to execute the flow daily and every day of the month

Publish is a restricted feature and requires a permission.
:::

### Schedule

- Click on the **As soon as possible** button
- Schedule the execution of the flow `Daily `and `Every day` of the month



::Image[]{src="https://api.archbee.com/api/optimize/1Jp0iolWv35Z_mkI7oUiT/K2r1wT4UZ7sRcuPdGoqF2_image.png" size="80" width="601" height="541" position="center" darkWidth="601" darkHeight="541" showCaption="false"}

### Publish permission

- The **Publish&#x20;**&#x62;utton is restricted to the operators who have the **Publish Orchestrated Campaigns&#x20;**&#x70;ermission&#x20;

![](https://api.archbee.com/api/optimize/1Jp0iolWv35Z_mkI7oUiT/K_9j3BvijV9fpJVfHJIOn_image.png)

:::hint{type="success"}
**Congratulations** on successfully completing the exercise!&#x20;

This lab focused on these topics:

- Multi-Entity & Relational Data Processing
- Orchestrated Campaign Spirit
- Audience Creation & Ad-hoc Targeting
- Data-Driven Email Activation & Templates
:::

## Appendix

### Select the preferred channel

It's possible to select the preferred channel using the **Split&#x20;**&#x61;ctivity:

![](https://api.archbee.com/api/optimize/1Jp0iolWv35Z_mkI7oUiT/JbyufNdiQPxUbRyP2ettz_image.png)



### Deliver the same message across multiple channels

It's possible to deliver the same message across multiple channels using the **Fork&#x20;**&#x61;ctivity



![](https://api.archbee.com/api/optimize/1Jp0iolWv35Z_mkI7oUiT/3WQ5kYFfYk2bDKDTPhAjW_image.png)

