Contents

“Can I Bring Someone?” Solving Plus-One Waitlisting in Customer Insights Journeys (Part 1)

Events are rarely a solo experience.

In many scenarios, attendees want to bring a guest — a colleague, a partner, or a friend. But in Dynamics 365 Customer Insights – Journeys, handling “plus one” scenarios is not supported out-of-the-box.

This creates a real problem:

  • Your event shows 1 registration
  • But 2 people actually show up

Multiply that across dozens of attendees… and suddenly your event is over capacity.

In this article, I’ll show you how to solve this using:

  • The built-in waitlist feature
  • A Power Automate flow to create companion registrations

TL;DR:
  • Customer Insights Journeys includes a built-in waitlist for events
  • It works well for single attendees but not for “plus one” scenarios
  • We can extend it with Power Automate to create and manage companion registrations

The Problem with Plus-One Registrations

The typical flow looks like this:

  1. A contact registers and selects “I’ll bring someone”
  2. A single registration is created
  3. The event capacity increases by 1
  4. In reality, 2 people attend

This leads to:

  • Overbooked venues
  • Poor attendee experience
  • Manual corrections by organizers

Possible Approaches (and Why They Fall Short)

❌ Disable plus-one option

Simple, but negatively impacts user experience.

❌ Manual registration handling

Works for small events, but not scalable.


The Solution

We extend the standard process with:

  • A new “Companion” role in Event Registration
  • A Power Automate flow that:
    • Detects plus-one selections
    • Creates an additional registration
    • Applies waitlisting when needed

How does the process look like

Before diving into the implementation, here’s the idea:

  1. The attendee registers normally
  2. We detect if they selected “plus one”
  3. We create an additional registration:
    • If capacity allows → Registered
    • If not → Waitlisted
  4. We assign a custom role (Companion) to distinguish it

This keeps the event capacity accurate and leverages the native waitlist logic.


How to make this happen

This solution involves only one customization:

  • Adding a new option in the “Primary Role” of the registration

/posts/customer-insights-waitlist-1/image1.png

If this sounds too heavy, you can use a ready-made solution: Companion Role Solution in Github.

Once created, you’ll see the new option in the registration form.


/posts/customer-insights-waitlist-1/image2.png
If companion it's not a correct word for an acompañante/Begleitungperson, I'm sorry, not a native english speaker 😅


Setup of the Form

For setting up the form, you’ll need an unmapped field in the form (I recommend of type Dropdown) with the options to come alone or with a plus one.

⚠️ Important: ** Save the logical field name, this will be used to fetch the response in Power Automate

Make sure:

  • The field is required
  • Default value is “No, I’m coming alone” (recommended)

/posts/customer-insights-waitlist-1/image3.png

Also ensure:

The event has waitlist enabled — otherwise, everyone will be registered

/posts/customer-insights-waitlist-1/image4.png

Power Automate Flow for creating the extra registrations

Now we build the flow that will handle plus-one registrations automatically

1. Trigger

We’ll set up the following:

  • Change type –> Added
  • Table Name –> Event Registrations
  • Scope –> Organization
  • Filter Rows –> msevtmgt_primaryrole eq null

/posts/customer-insights-waitlist-1/image5.png


2. Retrieve Field Submissions

We’ll add the List Rows Action for the Table Field Submissions:

/posts/customer-insights-waitlist-1/image6.png

Then it’s easier and more efficient to use a fetchxml query, you just have to modify the [LOGICALNAME] for the logical field name that you gave in your form while setting it up

<fetch top="1">
  <entity name="msdynmkt_marketingfieldsubmission">
    <attribute name="msdynmkt_localizedfieldvalue" />
    <filter>
      <condition attribute="msdynmkt_localizedfieldname" operator="like" value="[LOGICALNAME]" />
    </filter>
    <order attribute="msdynmkt_localizedfieldname" />
    <link-entity name="msdynmkt_marketingformsubmission" from="msdynmkt_marketingformsubmissionid" to="msdynmkt_marketingformsubmissionid" alias="Formsubmission">
      <filter>
        <condition attribute="msdynmkt_eventregistration" operator="eq" value="@{triggerOutputs()?['body/msevtmgt_eventregistrationid']}" />
      </filter>
    </link-entity>
  </entity>
</fetch>

3. Update Primary Registration

We’ll Update a Row with of the entity Event Registrations. With this action, we’ll update the current registration to give the role of the Attendee. In the Row ID, make sure to choose the Event Registration from the trigger a.k.a @{triggerOutputs()?['body/msevtmgt_eventregistrationid']}

/posts/customer-insights-waitlist-1/image7.png


4. Add a condition

We’ll add a condition where we check if the Localized Value Field (1) or in technical name @items('Apply_to_each')?['msdynmkt_localizedfieldvalue'] is equal to 2 (2) (which is the value os the second dropdown normally).

Be sure to use string(2) when you’re comparing it, as the value in the localized value field will be a string.

/posts/customer-insights-waitlist-1/image8.png


5. Add a Registration for the plus one

Add a new Row, where the following elements are there:

  • Table Name –> Event Registrations
  • Event (Events) –> /msevtmgt_events/@{triggerOutputs()?['body/_msevtmgt_eventid_value']}
  • Contact (Contacts) –> /contacts/@{triggerOutputs()?['body/_msevtmgt_contactid_value']}
  • Registration ID –> @null (this is an expression)
  • Primary Role –> Companion
  • Status code –> Registered

/posts/customer-insights-waitlist-1/image9.png
The names might differ from the picture as my marketing environment is in german, as I'm based in Switzerland


6. Add a waitlisted registration for the plus one

Add a new Row, where the following elements are there:

  • Table Name –> Event Registrations
  • Event (Events) –> /msevtmgt_events/@{triggerOutputs()?['body/_msevtmgt_eventid_value']}
  • Contact (Contacts) –> /contacts/@{triggerOutputs()?['body/_msevtmgt_contactid_value']}
  • Registration ID –> @null (this is an expression)
  • Primary Role –> Companion
  • Status code –> Waitlisted

But the main point of this action, it’s that it should run only when the previous action has failed (this happens due to an event being over capacity).

The steps can be found in this Microsoft Learn Article, but basically can be summarized in:

... –> Configure run after –> has failed

After configuring this, you should see a different line connecting your two “Add a Row”

/posts/customer-insights-waitlist-1/image10.png


Stay tuned for the Part 2

Great! This has been the first part of the “Can I Bring Someone?” Series. We’d gone over:

  • How to capture plus-one intent in forms
  • How to extend registration roles
  • How to automate companion registrations with Power Automate

In Part 2, we’ll take it further:

  • Notify users if their plus one is waitlisted
  • Allow them to cancel if needed
  • Send updates when spots become available

I hope this first part helps you build a cleaner and more reliable registration process. In the next article of the series, we’ll look at how to communicate the outcome to attendees and make the experience smoother when plus ones are involved.

Until then, take care 🐣