<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Martin P. Lopez — Writing</title><description>Independent Dynamics 365 Architect and Customer Insights expert, specialized in Customer Insights – Journeys. I help marketing teams at medium-to-large enterprises ship CI-J properly.</description><link>https://martinplopez.com/</link><language>en</language><atom:link href="https://martinplopez.com/rss.xml" rel="self" type="application/rss+xml"/><item><title>Teams Webinar V2 in Customer Insights Journeys: First Lessons Learned</title><link>https://martinplopez.com/writing/teamsv2-customer-insights-journeys-lessons/</link><guid isPermaLink="true">https://martinplopez.com/writing/teamsv2-customer-insights-journeys-lessons/</guid><description>Two months after setting up Teams Webinar V2 authentication for Customer Insights - Journeys, here is what actually broke, what the documentation does not tell you about real customer setups and the checks I now run before every webinar.</description><pubDate>Fri, 07 Aug 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;In June I wrote about &lt;a href=&quot;/writing/teamsv2-customer-insights-journeys/&quot;&gt;how to set up Teams Webinar V2 authentication for Customer Insights - Journeys&lt;/a&gt;: the app registration, the federated credentials, the Graph permissions, the access policy.&lt;/p&gt;
&lt;p&gt;Since then, that article has done something I didn’t fully expect. People don’t ask me &lt;em&gt;how&lt;/em&gt; to set it up anymore. &lt;strong&gt;They ask why it still doesn’t work&lt;/strong&gt; 🙋&lt;/p&gt;
&lt;p&gt;And the interesting part is that it’s almost always the same short list of things. Not the setup itself, which most admins get through fine, but the gap between “the configuration is saved” and “my webinar actually behaves the way I promised the business it would”.&lt;/p&gt;
&lt;p&gt;So this is the follow-up: &lt;strong&gt;the first lessons from running this in the wild&lt;/strong&gt;, and the checklist I now run before anyone books a webinar.&lt;/p&gt;
&lt;hr&gt;
&lt;div class=&quot;markdown-alert markdown-alert-note&quot; dir=&quot;auto&quot;&gt;
&lt;p class=&quot;markdown-alert-title&quot; dir=&quot;auto&quot;&gt;&lt;svg class=&quot;octicon&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot; height=&quot;16&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M0 8a8 8 0 1 1 16 0A8 8 0 0 1 0 8Zm8-6.5a6.5 6.5 0 1 0 0 13 6.5 6.5 0 0 0 0-13ZM6.5 7.75A.75.75 0 0 1 7.25 7h1a.75.75 0 0 1 .75.75v2.75h.25a.75.75 0 0 1 0 1.5h-2a.75.75 0 0 1 0-1.5h.25v-2h-.25a.75.75 0 0 1-.75-.75ZM8 6a1 1 0 1 1 0-2 1 1 0 0 1 0 2Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;NOTE&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;TL;DR:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The Teams Webinar V2 setup itself is not what breaks.&lt;/strong&gt; Two months of follow-ups later, the configuration from the June article has held up. The problems all sit in the gap between “the configuration is saved” and “the webinar behaves the way I promised the business it would”.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Most custom event forms are missing the Meeting Options control.&lt;/strong&gt; They were last edited before Webinar V2 existed, so the button simply isn’t there. It’s not a drag-and-drop control: you have to copy &lt;code&gt;MeetingOptions&lt;/code&gt; from the out-of-the-box form into your own form XML.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;A greyed-out Meeting Options button is a security role gap.&lt;/strong&gt; Custom event management roles usually lack the read privilege on &lt;strong&gt;Event teams properties&lt;/strong&gt; (&lt;code&gt;msevtmgt_eventteamsproperties&lt;/code&gt;).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The Graph permissions must be Application permissions, not Delegated.&lt;/strong&gt; Adding them as delegated looks complete and saves without complaint, but the app can’t use them and the error you get downstream never mentions consent.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;If everything is by the book and it still fails, clear the browser cache and sign in again.&lt;/strong&gt; And plan for the real bottleneck: the setup touches Customer Insights, Entra ID and Teams, which in most organisations means three owners, three change processes and three weeks for one hour of technical work.&lt;/p&gt;
&lt;/div&gt;
&lt;hr&gt;
&lt;h2 id=&quot;what-held-up&quot;&gt;What held up&lt;/h2&gt;
&lt;p&gt;Two things from the June article I’d write exactly the same way again.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;One app registration for the whole tenant is enough.&lt;/strong&gt; Nobody has come back to me with a case that needed one app per Customer Insights environment. Adding a separate federated credential per environment on the same registration has been the right shape every time, and it keeps the permission grant and the consent in one place instead of three.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The setup is a one-time cost.&lt;/strong&gt; Once it’s correct, it stays correct. None of the problems below came from the configuration drifting on its own. They came from customer setups that differ from the out-of-the-box configuration, which, in my experience, is much more common than not.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;the-lessons&quot;&gt;The lessons&lt;/h2&gt;
&lt;h3 id=&quot;1-the-form-doesnt-display-the-meeting-options&quot;&gt;1. The Form doesn’t display the Meeting Options&lt;/h3&gt;
&lt;p&gt;This is the most common error and it happens to people that followed the recommended guidelines and do their form customizations in a separate form, not the out-of-the-box form. The problem with this is that probably, by the time that the form was last edited, the Webinar V2 option was not available, so many customers have the problem that the Meeting Options button directly doesn’t show:&lt;/p&gt;
&lt;p&gt;&lt;img __ASTRO_IMAGE_=&quot;{&amp;#x22;src&amp;#x22;:&amp;#x22;./image1.png&amp;#x22;,&amp;#x22;alt&amp;#x22;:&amp;#x22;nowhere to be found&amp;#x22;,&amp;#x22;index&amp;#x22;:0}&quot;&gt;&lt;/p&gt;
&lt;p&gt;The problem with this issue is that it’s not a drag-and-drop control that you can put in a form directly, so you will have to go through the form.xml underneath to do this.&lt;/p&gt;
&lt;p&gt;If you ever edited an XML Form of Dynamics 365, you’ll know they are very easy to break. So I used the help of AI to insert the control named MeetingOptions inside the existing XML.&lt;/p&gt;
&lt;p&gt;The best way I found to do this (so far) is to provide the AI with the out-of-the-box form and then your custom form that you use normally, and ask it to copy the MeetingOptions control into your normal custom form. This will have a good result in my experience.&lt;/p&gt;
&lt;p&gt;I’m a bit old school, so I used a tool in the XrmToolbox called &lt;a href=&quot;https://www.xrmtoolbox.com/plugins/MscrmTools.FormXmlEditor/&quot;&gt;Form Xml Editor&lt;/a&gt; to extract the Xml of the forms and to upload the form with the Meeting Options control&lt;/p&gt;
&lt;div class=&quot;markdown-alert markdown-alert-tip&quot; dir=&quot;auto&quot;&gt;
&lt;p class=&quot;markdown-alert-title&quot; dir=&quot;auto&quot;&gt;&lt;svg class=&quot;octicon&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot; height=&quot;16&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8 1.5c-2.363 0-4 1.69-4 3.75 0 .984.424 1.625.984 2.304l.214.253c.223.264.47.556.673.848.284.411.537.896.621 1.49a.75.75 0 0 1-1.484.211c-.04-.282-.163-.547-.37-.847a8.456 8.456 0 0 0-.542-.68c-.084-.1-.173-.205-.268-.32C3.201 7.75 2.5 6.766 2.5 5.25 2.5 2.31 4.863 0 8 0s5.5 2.31 5.5 5.25c0 1.516-.701 2.5-1.328 3.259-.095.115-.184.22-.268.319-.207.245-.383.453-.541.681-.208.3-.33.565-.37.847a.751.751 0 0 1-1.485-.212c.084-.593.337-1.078.621-1.489.203-.292.45-.584.673-.848.075-.088.147-.173.213-.253.561-.679.985-1.32.985-2.304 0-2.06-1.637-3.75-4-3.75ZM5.75 12h4.5a.75.75 0 0 1 0 1.5h-4.5a.75.75 0 0 1 0-1.5ZM6 15.25a.75.75 0 0 1 .75-.75h2.5a.75.75 0 0 1 0 1.5h-2.5a.75.75 0 0 1-.75-.75Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;TIP&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;This is the (new) way&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;This issue will very likely not be solved with an export in the near future.&lt;/p&gt;
&lt;p&gt;With the evolution of the &lt;a href=&quot;https://github.com/microsoft/Dataverse-skills&quot;&gt;Dataverse Skills&lt;/a&gt;, you can do this with an AI directly, I just didn’t try it this use case&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;If you take one thing from this note: &lt;strong&gt;Make sure to add the controls that you use from the out-of-the-box event form to your custom form (if you use one)&lt;/strong&gt;.&lt;/p&gt;
&lt;h3 id=&quot;2-meeting-options-appears-but-the-button-is-disabled&quot;&gt;2. Meeting Options appears, but the button is disabled&lt;/h3&gt;
&lt;p&gt;&lt;img __ASTRO_IMAGE_=&quot;{&amp;#x22;src&amp;#x22;:&amp;#x22;./image2.png&amp;#x22;,&amp;#x22;alt&amp;#x22;:&amp;#x22;greyed out button&amp;#x22;,&amp;#x22;index&amp;#x22;:0}&quot;&gt;&lt;/p&gt;
&lt;p&gt;If your marketing people are using a security role that is not out of the box, for instance, if you have defined an event management security role, it might look like you have a meeting options button that shows disabled. They will need the permission to read “Event teams properties” (msevtmgt_eventteamsproperties), which you can give directly to the group.&lt;/p&gt;
&lt;p&gt;&lt;img __ASTRO_IMAGE_=&quot;{&amp;#x22;src&amp;#x22;:&amp;#x22;./image3.png&amp;#x22;,&amp;#x22;alt&amp;#x22;:&amp;#x22;security role setup&amp;#x22;,&amp;#x22;index&amp;#x22;:0}&quot;&gt;&lt;/p&gt;
&lt;p&gt;This will give the permissions that were missing for it to work properly.&lt;/p&gt;
&lt;h3 id=&quot;3-i-set-up-the-graph-permissions-but-it-still-doesnt-work&quot;&gt;3. I set up the Graph permissions but it still doesn’t work&lt;/h3&gt;
&lt;p&gt;The Graph permissions step is where I see the most silent failures.&lt;/p&gt;
&lt;p&gt;Adding delegated permissions only to the app registration is sadly not making the cut. An admin normally would doubt to give Application Permissions as it can lead to a security threat and it might require an approval process, so he normally adds everything the documentation lists, saves, sees the full list as delegated permissions, and reasonably concludes the step is done.&lt;/p&gt;
&lt;p&gt;It isn’t. Until &lt;strong&gt;Application permissions&lt;/strong&gt; is granted for the tenant, the app can’t actually use those permissions, and the failure you get downstream doesn’t say “consent is missing”. It says something much vaguer about the webinar not being created.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Make sure the Application Permissions are not Delegated permissions.&lt;/strong&gt; That’s the whole lesson.&lt;/p&gt;
&lt;h3 id=&quot;4-we-did-everything-in-the-documentation-we-still-get-the-error-message&quot;&gt;4. We did everything in the documentation, we still get the error message&lt;/h3&gt;
&lt;p&gt;Sometimes it can take a bit of time for Dynamics 365 to apply these application setups, but mostly what I see is just a cache problem.&lt;/p&gt;
&lt;p&gt;Make sure that after you did everything in the documentation, you &lt;a href=&quot;https://its.uiowa.edu/services/how-clear-cache-and-cookies-your-web-browser&quot;&gt;clear the cache completely in the browser&lt;/a&gt;, or even sign out and sign in again. That normally makes it work.&lt;/p&gt;
&lt;h3 id=&quot;5-the-real-bottleneck-is-the-security-process&quot;&gt;5. The real bottleneck is the security process&lt;/h3&gt;
&lt;p&gt;I said this at the end of the June article and two months of follow-ups have only made me more confident about it.&lt;/p&gt;
&lt;p&gt;The setup touches Customer Insights, Entra ID and Teams, and in most organisations those are three different people with three different change processes. The technical work is maybe an hour. &lt;strong&gt;Getting those three people in the same conversation, make them understand which permissions they really need and get approval is the part that takes three weeks.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;If you’re a marketer or a functional consultant, the useful move is not to learn the setup, it’s to start the conversation early and bring the June article with you. If you’re the admin who owns all three, you already know how much easier your life is 😅&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;my-lessons-learned-checklist&quot;&gt;My lessons learned checklist&lt;/h2&gt;
&lt;p&gt;The short version I now run through before anyone commits to a date:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Open the event form your marketers actually use and confirm the Meeting Options control is there&lt;/strong&gt; → if it’s a custom form, assume it isn’t until you’ve seen it.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Check the security role behind a greyed-out button&lt;/strong&gt; → read on Event teams properties (&lt;code&gt;msevtmgt_eventteamsproperties&lt;/code&gt;), not just the standard event privileges.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Confirm the Graph permissions are Application permissions and granted for the tenant&lt;/strong&gt; → the permission list looking complete is not the same as the app being able to use it.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Clear the cache and sign out and in again before declaring it broken&lt;/strong&gt; → a good part of the “we did everything and it still fails” cases end here.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Get the Customer Insights, Entra and Teams owners into the same conversation early&lt;/strong&gt; → before a date is promised to anyone.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Steps 1 to 4 are maybe an hour of work. Step 5 is the one that decides whether that hour happens this week or in three weeks, and it’s the one people start last.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;conclusion&quot;&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;None of these are hard problems. What do they have in common?&lt;/p&gt;
&lt;p&gt;The form saves without the control it needs. The role saves without the privilege it needs. The permissions save as delegated and the list looks exactly as complete as it would if they were right. Everything looks like it worked, right up until someone asks why they don’t see the meeting Options button or they see it, but is greyed out. That’s a bad place to discover a misconfiguration, luckily it happens before the webinar goes live and you have the chance to fix it.&lt;/p&gt;
&lt;p&gt;I wish these kinds of problems would be included in the official documentation, but until then, if this article can help someone, I’m happy to write it 😊&lt;/p&gt;
&lt;p&gt;If you haven’t done the setup yet, start with the &lt;a href=&quot;/writing/teamsv2-customer-insights-journeys/&quot;&gt;full walkthrough from June&lt;/a&gt; → this note assumes you’ve already been through it.&lt;/p&gt;</content:encoded><category>Dynamics 365 Customer Insights Journeys</category><category>Marketing Automation</category><category>Power Platform</category><category>Webinar</category><category>Microsoft Teams</category><category>Microsoft Entra</category></item><item><title>Beyond the Default: Set Up and Brand a Customer Insights - Journeys Event Web App</title><link>https://martinplopez.com/writing/cij-webapp-setup-branding/</link><guid isPermaLink="true">https://martinplopez.com/writing/cij-webapp-setup-branding/</guid><description>Learn how to configure, customize, and deploy a Dynamics 365 Customer Insights - Journeys event web app using AI-assisted branding and static hosting.</description><pubDate>Fri, 17 Jul 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;After writing the article on how to create a &lt;a href=&quot;/writing/build-event-website-power-pages-dynamics-365&quot;&gt;branded portal in 20 minutes in Power Pages&lt;/a&gt;, I discovered this feature from Customer Insights Journeys.&lt;/p&gt;
&lt;p&gt;You can create a web app directly from Customer Insights Journeys and then deploy it to your hosting service, like Azure or Vercel. To test it, I created &lt;a href=&quot;https://events.roastingflow.com&quot;&gt;the event page of Roasting Flow&lt;/a&gt; which will display the events of my fake coffee shop 😉&lt;/p&gt;
&lt;p&gt;I find the idea super interesting especially with the possibilities of extending and branding the application with AI. Because you host the site yourself, you do not need Power Pages capacity for the public event website. You are still responsible for your hosting costs and the licensing of Customer Insights - Journeys.&lt;/p&gt;
&lt;p&gt;In this article, I go over how to set up a web app, run it locally, how I branded it so it aligns with my branding, and then tips to publish it online.&lt;/p&gt;
&lt;hr&gt;
&lt;div class=&quot;markdown-alert markdown-alert-note&quot; dir=&quot;auto&quot;&gt;
&lt;p class=&quot;markdown-alert-title&quot; dir=&quot;auto&quot;&gt;&lt;svg class=&quot;octicon&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot; height=&quot;16&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M0 8a8 8 0 1 1 16 0A8 8 0 0 1 0 8Zm8-6.5a6.5 6.5 0 1 0 0 13 6.5 6.5 0 0 0 0-13ZM6.5 7.75A.75.75 0 0 1 7.25 7h1a.75.75 0 0 1 .75.75v2.75h.25a.75.75 0 0 1 0 1.5h-2a.75.75 0 0 1 0-1.5h.25v-2h-.25a.75.75 0 0 1-.75-.75ZM8 6a1 1 0 1 1 0-2 1 1 0 0 1 0 2Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;NOTE&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;TL;DR:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Customer Insights – Journeys can generate a lightweight event web app built with HTML, CSS, and JavaScript. Create separate web application records for &lt;code&gt;http://localhost:3000&lt;/code&gt; and your production HTTPS domain, authenticate both domains, and download the application.&lt;/p&gt;
&lt;p&gt;You can then run it locally with Node.js, customize its branding, and deploy the contents of the &lt;code&gt;public&lt;/code&gt; directory to a static hosting provider such as Azure Static Web Apps. Before deployment, verify the production values in &lt;code&gt;public/js/config.js&lt;/code&gt;, and make sure each live event is published to the correct web application.&lt;/p&gt;
&lt;/div&gt;
&lt;hr&gt;
&lt;h2 id=&quot;what-are-the-event-web-apps-from-customer-insights-journeys&quot;&gt;What are the Event Web Apps from Customer Insights Journeys?&lt;/h2&gt;
&lt;p&gt;The event web apps from Customer Insights Journeys are a feature where you can easily create a lightweight website to display your events directly integrated with dynamics customer insights. When you create one web application, you are able to download a zip file that contains the whole website in a lightweight web application built with HTML, CSS, and JavaScript. Once you have it downloaded locally, you can edit it and brand it to your needs.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/writing/cij-webapp-setup-branding/image.gif&quot; alt=&quot;new web application&quot;&gt;&lt;/p&gt;
&lt;p&gt;This allows you to be pretty flexible with regards to what you can do in the portal with the events, or not, or how to display them, apply some filters, sorting options, or searching options, as you are fully in control of your website. As well as multi-language options, which I think it’s better handled than in Power Pages.&lt;/p&gt;
&lt;h2 id=&quot;why-not-just-stick-to-power-pages&quot;&gt;Why not just stick to Power Pages?&lt;/h2&gt;
&lt;p&gt;Power Pages provides a low-code, managed option within the Power Platform and includes an event registration template for Customer Insights - Journeys. It is a good option when you want to build and maintain the website primarily through Power Pages Studio rather than working directly with the source code.&lt;/p&gt;
&lt;p&gt;However, hosting your own web application gives you more control over the front-end experience, deployment process, and hosting provider. You can modify how events are displayed, introduce custom functionality, and use the development tools and frameworks that best fit your requirements.&lt;/p&gt;
&lt;p&gt;Licensing is another consideration. Power Pages requires additional capacity for authenticated or anonymous users, whereas a self-hosted event web app uses the hosting plan you select. The most cost-effective option will depend on your expected traffic, maintenance requirements, and the capabilities your event website needs.&lt;/p&gt;
&lt;h2 id=&quot;yes-i-vibe-coded-the-branding&quot;&gt;Yes, I vibe-coded the branding&lt;/h2&gt;
&lt;p&gt;In my case, I vibe-coded the branding for my web application. It simplifies the process of branding on the web portal, but most importantly, it will respect the structure that Customer Insights has created for the event portal and just build on top of that, avoid unnecessarily restructuring the application.&lt;/p&gt;
&lt;p&gt;As with any AI-generated code, I reviewed and tested the changes before deploying them.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;how-i-set-it-up&quot;&gt;How I set it up&lt;/h2&gt;
&lt;h3 id=&quot;configuring-dynamics&quot;&gt;Configuring Dynamics&lt;/h3&gt;
&lt;p&gt;First thing we do in Customer Insights Journeys is go to our settings and scroll down to the event management section to click on web applications and then create a new one.&lt;/p&gt;
&lt;p&gt;We will give that web application a name and an origin. The origin must match the domain where the application is hosted so that the browser’s CORS requests to the Customer Insights - Journeys API are allowed.
I recommend creating two web applications:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;One with the origin to your actual domain, which in my case is &lt;code&gt;https://events.roastingflow.com&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;One with the origin pointing to &lt;code&gt;http://localhost:3000&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This one will be entirely for your local calls, so you can see that it shows your events and it shows your event forms correctly.&lt;/p&gt;
&lt;p&gt;Once it gets saved, the token is displayed, and the endpoints are also displayed like this:&lt;/p&gt;
&lt;p&gt;&lt;img __ASTRO_IMAGE_=&quot;{&amp;#x22;src&amp;#x22;:&amp;#x22;./image1.png&amp;#x22;,&amp;#x22;alt&amp;#x22;:&amp;#x22;Web Application in CIJ&amp;#x22;,&amp;#x22;index&amp;#x22;:0}&quot;&gt;&lt;/p&gt;
&lt;p&gt;And under the endpoint documentation field, we will have an event portal web app field with a button attached to it, which allows us to download the zip file. This contains the actual website zip, we download it at this step.&lt;/p&gt;
&lt;p&gt;In order to see the registration forms, it is needed to first verify the domain in Customer Insights Journeys. We will go to Settings Domains and enter the external form hosting for your actual domain and localhost.&lt;/p&gt;
&lt;figure class=&quot;prose-figure&quot;&gt;&lt;img __ASTRO_IMAGE_=&quot;{&amp;#x22;src&amp;#x22;:&amp;#x22;./image2.png&amp;#x22;,&amp;#x22;alt&amp;#x22;:&amp;#x22;localhost&amp;#x22;,&amp;#x22;title&amp;#x22;:&amp;#x22;you can fillout localhost and it will be verified automatically, no DNS stories&amp;#x22;,&amp;#x22;index&amp;#x22;:0}&quot;&gt;&lt;figcaption class=&quot;prose-figure__caption&quot;&gt;you can fillout localhost and it will be verified automatically, no DNS stories&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;Open the event, go to General &gt; Publishing, select Event portal using web application, choose the appropriate web application, and publish the event. Only live events published to the web application will appear on the site.&lt;/p&gt;
&lt;h3 id=&quot;running-it-locally&quot;&gt;Running it locally&lt;/h3&gt;
&lt;p&gt;Once we download the zip, we can extract it and will find a README.md which is super useful with instructions on how to use the web app, here the prerequisites we have to run it locally:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Set up a web application record for your domain in &lt;em&gt;Customer Insights - Journeys &gt; Settings &gt; Web applications&lt;/em&gt; (required to allow the portal to call the public API)&lt;/li&gt;
&lt;li&gt;Authenticate your domains in &lt;em&gt;Customer Insights - Journeys &gt; Settings &gt; Domains&lt;/em&gt; (required for embedded event registration forms)&lt;/li&gt;
&lt;li&gt;Node.js v22 or higher (optional; only needed if you use the provided development server)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The first two we did in the previous step. So after we installed node.js, we can test our web app by opening a terminal in the directory of the webapp and running first &lt;code&gt;npm install&lt;/code&gt;. After the packages are installed, we can run &lt;code&gt;npm start&lt;/code&gt;, and we’ll get the server that is working locally:&lt;/p&gt;
&lt;p&gt;&lt;img __ASTRO_IMAGE_=&quot;{&amp;#x22;src&amp;#x22;:&amp;#x22;./image3.png&amp;#x22;,&amp;#x22;alt&amp;#x22;:&amp;#x22;Terminal snapshot&amp;#x22;,&amp;#x22;index&amp;#x22;:0}&quot;&gt;&lt;/p&gt;
&lt;p&gt;If we go to the address in a browser in our computer (the one after “Server running at ”), we’ll be able to see our event website and navigate it:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/writing/cij-webapp-setup-branding/image1.gif&quot; alt=&quot;Default Web Application&quot;&gt;&lt;/p&gt;
&lt;p&gt;Once we have this we can setup the branding of the web app.&lt;/p&gt;
&lt;h3 id=&quot;brand-it-with-ai&quot;&gt;Brand it with AI&lt;/h3&gt;
&lt;p&gt;I will not go deep in this part, I’ll just say, that I used Claude Code to brand the website using the following prompt (for my case):&lt;/p&gt;
&lt;p&gt;&lt;code&gt;This folder contains a webapp of Dynamics Customer Insights. It shows the events of this coffee shop &quot;https://www.roastingflow.com/&quot; Can you make it coherent with the style, logos and structures of the original webpage? It will be events.roastingflow.com in the future&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;This generated the plan you can find in my &lt;a href=&quot;https://github.com/martinplopez/RoastingFlowEventsWeb/blob/main/plan.md&quot;&gt;GitHub repository of the website&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The result you can find in &lt;a href=&quot;https://events.roastingflow.com&quot;&gt;the Event Portal of Roasting Flow&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&quot;deploy-it-to-your-hosting-service&quot;&gt;Deploy it to your hosting service&lt;/h3&gt;
&lt;p&gt;Once we got out portal correctly running locally , we can deploy it to our hosting provider. This means that the portal will be accessible to the rest of the world. In my case I use GitHub to host my code and Azure Static Web Apps to host the website. But Vercel, Netlify or Cloudflare Pages would be fine as well.&lt;/p&gt;
&lt;p&gt;Before deployment, verify that &lt;code&gt;BASE_URL&lt;/code&gt;, &lt;code&gt;ORG_ID&lt;/code&gt;, &lt;code&gt;TOKEN&lt;/code&gt;, and &lt;code&gt;WEBAPP_ID&lt;/code&gt; in &lt;code&gt;public/js/config.js&lt;/code&gt; contain the values from your production web application record.&lt;/p&gt;
&lt;p&gt;The website will only show the events if these values come from the Web App Record we created with the domain for production (in my case events.roastingflow.com). If we use the ones from localhost it will not work.&lt;/p&gt;
&lt;div class=&quot;markdown-alert markdown-alert-warning&quot; dir=&quot;auto&quot;&gt;
&lt;p class=&quot;markdown-alert-title&quot; dir=&quot;auto&quot;&gt;&lt;svg class=&quot;octicon&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot; height=&quot;16&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;WARNING&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;IMPORTANT&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Before deployment, verify that &lt;code&gt;BASE_URL&lt;/code&gt;, &lt;code&gt;ORG_ID&lt;/code&gt;, &lt;code&gt;TOKEN&lt;/code&gt;, and &lt;code&gt;WEBAPP_ID&lt;/code&gt; in &lt;code&gt;public/js/config.js&lt;/code&gt; contain the values from your production web application record.&lt;/p&gt;
&lt;p&gt;The production domain must match the origin configured for that record. Values created for &lt;code&gt;http://localhost:3000&lt;/code&gt; are intended for local development and should not be used by the production website.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;WEBAPP_ID&lt;/code&gt; is optional. When it is provided, the website only displays events published to that specific web application.&lt;/p&gt;
&lt;/div&gt;
&lt;hr&gt;
&lt;h2 id=&quot;tips-and-tricks&quot;&gt;Tips and Tricks&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;If you’re not familiar with Azure Static Web Apps (SWA), you’re a developer and didn’t consider it as an option. I recommend it especially for this use case. Depending on your needs, it can get hosted for free even. Here the &lt;a href=&quot;https://learn.microsoft.com/en-us/azure/static-web-apps/overview&quot;&gt;Microsoft Learn Documentation&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;If you use Azure SWA and want to avoid problems with the token and webapp_id, you can take advantage of the environment variables of the app to have the right token and webapp_id dynamically filled out. Feel free to fork &lt;a href=&quot;https://github.com/martinplopez/RoastingFlowEventsWeb&quot;&gt;my repo in GitHub&lt;/a&gt; where it’s done already.&lt;/li&gt;
&lt;li&gt;If you want to dig deeper in the API options, Web Applications leverage the same API that Jonas Schwarzwälder talks about in &lt;a href=&quot;https://jonasschwarzwaelder.com/blog/introduction-to-cij-event-api/&quot;&gt;this amazing article&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&quot;conclusion&quot;&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;Customer Insights - Journeys event web apps provide an interesting alternative when you need more control than the standard event experience offers. The generated application already includes event listings, search, event details, embedded registration forms, and multilingual support, while still giving you complete control over its appearance and hosting.&lt;/p&gt;
&lt;p&gt;Using AI made the initial branding work much faster, but branding is only the beginning. Because the source code is yours to customize, you can introduce different event layouts, advanced filtering and sorting, additional languages, and experiences tailored to your audience.&lt;/p&gt;
&lt;p&gt;Over the next few weeks, I will continue exploring what can be built with this architecture. Particularly its internationalization capabilities and ways to create a more flexible event discovery experience.&lt;/p&gt;</content:encoded><category>Dynamics 365 Customer Insights Journeys</category><category>Event Management</category><category>Azure Static Web Apps</category><category>Power Platform Development</category></item><item><title>Advanced Connector Policies: Don’t Break Customer Insights - Journeys Publishing</title><link>https://martinplopez.com/writing/acp-customer-insights-journeys/</link><guid isPermaLink="true">https://martinplopez.com/writing/acp-customer-insights-journeys/</guid><description>Learn why Advanced Connector Policies can block Customer Insights - Journeys from publishing journeys, which connector needs to be allowed, and how to configure your policy without interrupting marketers.</description><pubDate>Fri, 03 Jul 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Some days start like any other: morning cup of coffee, daily meeting with colleagues, solve some problems from customers, etc.&lt;/p&gt;
&lt;p&gt;But today I got a message from a user. He &lt;strong&gt;couldn’t publish a customer journey&lt;/strong&gt; and he didn’t know why. He sent me the weirdest screenshot. This is more or less what he sent me:&lt;/p&gt;
&lt;figure class=&quot;prose-figure&quot;&gt;&lt;img __ASTRO_IMAGE_=&quot;{&amp;#x22;src&amp;#x22;:&amp;#x22;./image1.png&amp;#x22;,&amp;#x22;alt&amp;#x22;:&amp;#x22;What happened?&amp;#x22;,&amp;#x22;title&amp;#x22;:&amp;#x22;The Journey could not be published due to the following data loss prevention (DLP) policy: &amp;#x27;Advanced Connector Policy&amp;#x27;. Contact your administrator to update the policy. Further information can be found here: https://go.microsoft.com/fwlink/?linkid=2181032&amp;#x22;,&amp;#x22;index&amp;#x22;:0}&quot;&gt;&lt;figcaption class=&quot;prose-figure__caption&quot;&gt;The Journey could not be published due to the following data loss prevention (DLP) policy: &apos;Advanced Connector Policy&apos;. Contact your administrator to update the policy. Further information can be found here: https://go.microsoft.com/fwlink/?linkid=2181032&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;My first thought was, “When did we set up the Advanced Connector Policies?”&lt;/p&gt;
&lt;p&gt;But then I remembered that it was recently and that I wasn’t involved in the process of setting it up, so I could not give any feedback on adding Customer Insights connectors to the Advanced Connector Policies. Luckily, as soon as I did, the journey started running just as before.&lt;/p&gt;
&lt;p&gt;In this article, I’ll go over what &lt;strong&gt;Advanced Connector Policies&lt;/strong&gt; (ACP) are, why it is good to implement them and how to do it without interrupting your Customer Insights - Journeys&lt;/p&gt;
&lt;p&gt;And if you are facing a similar issue, you can send your system administrator this article directly. Unless it is you, in that case you can go directly to “How did I do it”.&lt;/p&gt;
&lt;hr&gt;
&lt;div class=&quot;markdown-alert markdown-alert-note&quot; dir=&quot;auto&quot;&gt;
&lt;p class=&quot;markdown-alert-title&quot; dir=&quot;auto&quot;&gt;&lt;svg class=&quot;octicon&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot; height=&quot;16&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M0 8a8 8 0 1 1 16 0A8 8 0 0 1 0 8Zm8-6.5a6.5 6.5 0 1 0 0 13 6.5 6.5 0 0 0 0-13ZM6.5 7.75A.75.75 0 0 1 7.25 7h1a.75.75 0 0 1 .75.75v2.75h.25a.75.75 0 0 1 0 1.5h-2a.75.75 0 0 1 0-1.5h.25v-2h-.25a.75.75 0 0 1-.75-.75ZM8 6a1 1 0 1 1 0-2 1 1 0 0 1 0 2Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;NOTE&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;TL;DR:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;If Customer Insights - Journeys fails when publishing a journey after Advanced Connector Policies are enabled, check whether the required Customer Insights - Journeys connector is allowed in your policy.&lt;/p&gt;
&lt;p&gt;The key connector to look for is the native Journeys connector, currently documented by Microsoft as Dynamics 365 Marketing V2 with the ID &lt;code&gt;shared_d365marketingforapps&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Without it, journey publishing can be blocked by governance rules even though the journey itself looks valid.&lt;/p&gt;
&lt;/div&gt;
&lt;hr&gt;
&lt;h2 id=&quot;what-are-the-advanced-connector-policies&quot;&gt;What are the Advanced Connector Policies&lt;/h2&gt;
&lt;p&gt;Advanced Connector Policies are rules that govern how connectors can be used within Power Apps, Power Automate and Copilot Studio.&lt;/p&gt;
&lt;p&gt;Each connector can be classified as allowed or blocked. By default it will block most of the connectors and only leave the Microsoft standard ones, but you can any time adapt this allowed connectors list to your needs.&lt;/p&gt;
&lt;p&gt;This is the evolution of the idea of Data Loss Policies (DLPs), which allowed to classify the connectors and allow only certain categories. Microsoft simplified this by giving just an allowed and blocked list&lt;/p&gt;
&lt;p&gt;&lt;img __ASTRO_IMAGE_=&quot;{&amp;#x22;src&amp;#x22;:&amp;#x22;./image5.png&amp;#x22;,&amp;#x22;alt&amp;#x22;:&amp;#x22;the lists&amp;#x22;,&amp;#x22;index&amp;#x22;:0}&quot;&gt;&lt;/p&gt;
&lt;p&gt;Advanced Connector Policies can be configured at the environment group level for bulk governance or directly on individual environments for targeted governance. They are especially powerful with Managed Environments, where administrators get more control over connectors and actions.&lt;/p&gt;
&lt;p&gt;It is not obligatory to implement these rules to all the environments, but it is recommended if you want to apply governance to your power platform environments.&lt;/p&gt;
&lt;h3 id=&quot;why-should-we-set-them-up&quot;&gt;Why should we set them up?&lt;/h3&gt;
&lt;p&gt;Advanced Connector policies are intended to reduce the risk of users unintentionally exposing organizational data through connectors used by Power Apps, Power Automate, and Copilot Studio.&lt;/p&gt;
&lt;h4 id=&quot;but-we-use-customer-insights-journeys-not-any-of-those-tools&quot;&gt;But we use Customer Insights Journeys, not any of those tools&lt;/h4&gt;
&lt;p&gt;Yes and no. When you use journeys, Microsoft is using Power Automate flows behind the curtains to do the actions in those journeys. So that means that if a connector that they use in their flows isn’t approved, by the time of publishing, the flow will fail.&lt;/p&gt;
&lt;figure class=&quot;prose-figure&quot;&gt;&lt;img __ASTRO_IMAGE_=&quot;{&amp;#x22;src&amp;#x22;:&amp;#x22;./image2.png&amp;#x22;,&amp;#x22;alt&amp;#x22;:&amp;#x22;Power Automate Flows from Customer Insights&amp;#x22;,&amp;#x22;title&amp;#x22;:&amp;#x22;Every time you find a Power Automate flow starting with CXP_ it&amp;#x27;s a journey logic&amp;#x22;,&amp;#x22;index&amp;#x22;:0}&quot;&gt;&lt;figcaption class=&quot;prose-figure__caption&quot;&gt;Every time you find a Power Automate flow starting with CXP_ it&apos;s a journey logic&lt;/figcaption&gt;&lt;/figure&gt;
&lt;hr&gt;
&lt;h2 id=&quot;how-i-set-it-up&quot;&gt;How I set it up&lt;/h2&gt;
&lt;p&gt;I will not go very deep into how to set it up, because there’s a perfectly valid Microsoft article around &lt;a href=&quot;https://learn.microsoft.com/en-us/power-platform/admin/advanced-connector-policies#configure-an-advanced-connector-policy&quot;&gt;how to set up the advanced connector policies&lt;/a&gt;. But I will give some pointers on how I set it up for Customer Insights Journeys.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://learn.microsoft.com/en-us/dynamics365/customer-insights/journeys/real-time-marketing-admin-settings&quot;&gt;Microsoft explains&lt;/a&gt; that it used to have another connector called &lt;strong&gt;Dynamics 365 Customer Insights - Journeys&lt;/strong&gt;, but now the one to allow is the &lt;strong&gt;Dynamics 365 Customer Insights - Journeys V2&lt;/strong&gt; connector (with ID &lt;code&gt;shared_d365marketingforapps&lt;/code&gt;).&lt;/p&gt;
&lt;figure class=&quot;prose-figure&quot;&gt;&lt;img __ASTRO_IMAGE_=&quot;{&amp;#x22;src&amp;#x22;:&amp;#x22;./image3.png&amp;#x22;,&amp;#x22;alt&amp;#x22;:&amp;#x22;Power Automate Flows from Customer Insights&amp;#x22;,&amp;#x22;title&amp;#x22;:&amp;#x22;If you used to have Outbound Marketing, you might find it under Dynamics 365 Marketing.&amp;#x22;,&amp;#x22;index&amp;#x22;:0}&quot;&gt;&lt;figcaption class=&quot;prose-figure__caption&quot;&gt;If you used to have Outbound Marketing, you might find it under Dynamics 365 Marketing.&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;And for those of you who might think “&lt;em&gt;isn’t the normal Dynamics Customer Insights connector necessary?&lt;/em&gt;”&lt;/p&gt;
&lt;p&gt;&lt;img __ASTRO_IMAGE_=&quot;{&amp;#x22;src&amp;#x22;:&amp;#x22;./image4.png&amp;#x22;,&amp;#x22;alt&amp;#x22;:&amp;#x22;Dynamics Customer Insights Connector&amp;#x22;,&amp;#x22;index&amp;#x22;:0}&quot;&gt;&lt;/p&gt;
&lt;p&gt;In this case, this connector refers to the Customer Insights - Data connectors of Power Automate.&lt;/p&gt;
&lt;p&gt;If you’re not using it for any of your Power Apps, Power Automate flows or Copilot Studio Agents, it can remain blocked.&lt;/p&gt;
&lt;div class=&quot;markdown-alert markdown-alert-tip&quot; dir=&quot;auto&quot;&gt;
&lt;p class=&quot;markdown-alert-title&quot; dir=&quot;auto&quot;&gt;&lt;svg class=&quot;octicon&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot; height=&quot;16&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8 1.5c-2.363 0-4 1.69-4 3.75 0 .984.424 1.625.984 2.304l.214.253c.223.264.47.556.673.848.284.411.537.896.621 1.49a.75.75 0 0 1-1.484.211c-.04-.282-.163-.547-.37-.847a8.456 8.456 0 0 0-.542-.68c-.084-.1-.173-.205-.268-.32C3.201 7.75 2.5 6.766 2.5 5.25 2.5 2.31 4.863 0 8 0s5.5 2.31 5.5 5.25c0 1.516-.701 2.5-1.328 3.259-.095.115-.184.22-.268.319-.207.245-.383.453-.541.681-.208.3-.33.565-.37.847a.751.751 0 0 1-1.485-.212c.084-.593.337-1.078.621-1.489.203-.292.45-.584.673-.848.075-.088.147-.173.213-.253.561-.679.985-1.32.985-2.304 0-2.06-1.637-3.75-4-3.75ZM5.75 12h4.5a.75.75 0 0 1 0 1.5h-4.5a.75.75 0 0 1 0-1.5ZM6 15.25a.75.75 0 0 1 .75-.75h2.5a.75.75 0 0 1 0 1.5h-2.5a.75.75 0 0 1-.75-.75Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;TIP&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Note&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;If you do have Customer Insights Data and use segments in Customer Insights Journeys, your segments &lt;strong&gt;will still synchronize even with this connector blocked&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;In this case, Dataverse is synced with Dynamics Customer Insights Data not by Power Automate, but by system job.&lt;/p&gt;
&lt;/div&gt;
&lt;hr&gt;
&lt;h2 id=&quot;conclusion&quot;&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;Advanced Connector Policies are a useful step forward for Power Platform governance. They give administrators a cleaner way to control which connectors are allowed and reduce the risk of data being used in places where it should not be.&lt;/p&gt;
&lt;p&gt;But in this specific case, I think the experience could be better.&lt;/p&gt;
&lt;p&gt;Most Customer Insights - Journeys users are marketers. They should not need to know which internal connector is required to publish a journey, or why a governance setting in Power Platform suddenly blocks their work.&lt;/p&gt;
&lt;p&gt;If Customer Insights - Journeys is installed in an environment, the required native connector should either be clearly highlighted during ACP configuration or automatically suggested as part of the allowed list.&lt;/p&gt;
&lt;p&gt;Hopefully, Microsoft improves this experience and this article becomes obsolete soon. Until then, I hope this helps you avoid a confusing publishing error and keeps your journeys running.&lt;/p&gt;</content:encoded><category>Dynamics 365 Customer Insights Journeys</category><category>Dataverse</category><category>Power Automate</category><category>Power Platform Development</category></item><item><title>Invite Leads to Your Customer Insights Journeys Events</title><link>https://martinplopez.com/writing/leads-customer-insights-journeys-events/</link><guid isPermaLink="true">https://martinplopez.com/writing/leads-customer-insights-journeys-events/</guid><description>Learn how to invite Leads to Customer Insights Journeys events while keeping the generated Contact and original Lead connected using Power Automate.</description><pubDate>Fri, 19 Jun 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;In Customer Insights Journeys, &lt;strong&gt;events run on Contacts&lt;/strong&gt;. Registrations, check-ins, reminders, the whole journey, all of it is contact-shaped.&lt;/p&gt;
&lt;p&gt;Which is fine, until you remember that plenty of the people you’d love to have at your event aren’t contacts at all: &lt;strong&gt;they’re sitting in your Leads&lt;/strong&gt;. Prospects Sales is already working with, or people who raised their hand on a form but are not in your contact base yet.&lt;/p&gt;
&lt;p&gt;So you invite those leads to the event anyway and Customer Insights Journeys happily registers them as contacts. Now there’s a subtle catch: the new &lt;strong&gt;Event Registration points at a contact, while the Lead it actually belongs to is left on the sidelines, disconnected&lt;/strong&gt;. 🙋&lt;/p&gt;
&lt;figure class=&quot;prose-figure&quot;&gt;&lt;img __ASTRO_IMAGE_=&quot;{&amp;#x22;src&amp;#x22;:&amp;#x22;./image6.png&amp;#x22;,&amp;#x22;alt&amp;#x22;:&amp;#x22;A check in the Event Form&amp;#x22;,&amp;#x22;title&amp;#x22;:&amp;#x22;And this check isn&amp;#x27;t going to help you, it&amp;#x27;ll generate another lead for the contact. Better let if turned off for this post&amp;#x22;,&amp;#x22;index&amp;#x22;:0}&quot;&gt;&lt;figcaption class=&quot;prose-figure__caption&quot;&gt;And this check isn&apos;t going to help you, it&apos;ll generate another lead for the contact. Better let if turned off for this post&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;In this article, we explore a solution on how to solve this problem easily with a Power Automate Flow. &lt;strong&gt;This flow keeps the contact and the lead together&lt;/strong&gt;whenever a new registration is created, it finds the matching open Lead and links it to the registrant’s Contact. If no open Lead exists yet, it creates one and connects it back to the event.&lt;/p&gt;
&lt;hr&gt;
&lt;div class=&quot;markdown-alert markdown-alert-note&quot; dir=&quot;auto&quot;&gt;
&lt;p class=&quot;markdown-alert-title&quot; dir=&quot;auto&quot;&gt;&lt;svg class=&quot;octicon&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot; height=&quot;16&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M0 8a8 8 0 1 1 16 0A8 8 0 0 1 0 8Zm8-6.5a6.5 6.5 0 1 0 0 13 6.5 6.5 0 0 0 0-13ZM6.5 7.75A.75.75 0 0 1 7.25 7h1a.75.75 0 0 1 .75.75v2.75h.25a.75.75 0 0 1 0 1.5h-2a.75.75 0 0 1 0-1.5h.25v-2h-.25a.75.75 0 0 1-.75-.75ZM8 6a1 1 0 1 1 0-2 1 1 0 0 1 0 2Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;NOTE&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;TL;DR:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Events register &lt;strong&gt;Contacts&lt;/strong&gt;, but you want your &lt;strong&gt;Leads&lt;/strong&gt; at them too, so this &lt;strong&gt;Power Automate&lt;/strong&gt; flow keeps the two linked.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;It triggers whenever an &lt;strong&gt;Event Registration&lt;/strong&gt; is added (Dataverse, scope &lt;strong&gt;Organization&lt;/strong&gt;).&lt;/li&gt;
&lt;li&gt;It searches for an &lt;strong&gt;open Lead&lt;/strong&gt; (&lt;code&gt;statecode eq 0&lt;/code&gt;) with the registrant’s email. Found one? → it links that Lead to the &lt;strong&gt;Contact&lt;/strong&gt; (sets &lt;em&gt;Parent Contact&lt;/em&gt;). None yet? → it &lt;strong&gt;creates a new Lead&lt;/strong&gt;, stamped with the &lt;strong&gt;Originating Event&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;The payoff: invite leads to your events and keep every registrant’s contact tied to the lead it belongs to. 🔗&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;hr&gt;
&lt;h2 id=&quot;how-the-out-of-the-box-behavior-works&quot;&gt;How the out-of-the-box behavior works&lt;/h2&gt;
&lt;p&gt;Microsoft will by default link the contact and the lead in the following way:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;It will first associate the lead with a contact, setting up a parent contact field with the contact assigned.&lt;/li&gt;
&lt;li&gt;Then it will create a new record on the connection entity, where it will make the contact be related to the lead as the role of a stakeholder.&lt;/li&gt;
&lt;/ol&gt;
&lt;div class=&quot;scroll-x&quot; tabindex=&quot;0&quot; style=&quot;--dw:504px&quot;&gt;&lt;svg id=&quot;mermaid-0&quot; width=&quot;100%&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot; xmlns:xlink=&quot;http://www.w3.org/1999/xlink&quot; class=&quot;flowchart&quot; style=&quot;max-width: 503.9375px;&quot; viewBox=&quot;0 0.0209197998046875 503.9375 107.97908020019531&quot; role=&quot;graphics-document document&quot; aria-roledescription=&quot;flowchart-v2&quot;&gt;&lt;style&gt;#mermaid-0{font-family:arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-0 .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-0 .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-0 .error-icon{fill:#552222;}#mermaid-0 .error-text{fill:#552222;stroke:#552222;}#mermaid-0 .edge-thickness-normal{stroke-width:1px;}#mermaid-0 .edge-thickness-thick{stroke-width:3.5px;}#mermaid-0 .edge-pattern-solid{stroke-dasharray:0;}#mermaid-0 .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-0 .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-0 .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-0 .marker{fill:#333333;stroke:#333333;}#mermaid-0 .marker.cross{stroke:#333333;}#mermaid-0 svg{font-family:arial,sans-serif;font-size:16px;}#mermaid-0 p{margin:0;}#mermaid-0 .label{font-family:arial,sans-serif;color:#333;}#mermaid-0 .cluster-label text{fill:#333;}#mermaid-0 .cluster-label span{color:#333;}#mermaid-0 .cluster-label span p{background-color:transparent;}#mermaid-0 .label text,#mermaid-0 span{fill:#333;color:#333;}#mermaid-0 .node rect,#mermaid-0 .node circle,#mermaid-0 .node ellipse,#mermaid-0 .node polygon,#mermaid-0 .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-0 .rough-node .label text,#mermaid-0 .node .label text,#mermaid-0 .image-shape .label,#mermaid-0 .icon-shape .label{text-anchor:middle;}#mermaid-0 .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-0 .rough-node .label,#mermaid-0 .node .label,#mermaid-0 .image-shape .label,#mermaid-0 .icon-shape .label{text-align:center;}#mermaid-0 .node.clickable{cursor:pointer;}#mermaid-0 .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-0 .arrowheadPath{fill:#333333;}#mermaid-0 .edgePath .path{stroke:#333333;stroke-width:1px;}#mermaid-0 .flowchart-link{stroke:#333333;fill:none;}#mermaid-0 .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-0 .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-0 .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-0 .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-0 .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-0 .cluster text{fill:#333;}#mermaid-0 .cluster span{color:#333;}#mermaid-0 div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-0 .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-0 rect.text{fill:none;stroke-width:0;}#mermaid-0 .icon-shape,#mermaid-0 .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-0 .icon-shape p,#mermaid-0 .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-0 .icon-shape .label rect,#mermaid-0 .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-0 .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-0 .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-0 .node .neo-node{stroke:#9370DB;}#mermaid-0 [data-look=&quot;neo&quot;].node rect,#mermaid-0 [data-look=&quot;neo&quot;].cluster rect,#mermaid-0 [data-look=&quot;neo&quot;].node polygon{stroke:#9370DB;filter:drop-shadow(1px 2px 2px rgba(185, 185, 185, 1));}#mermaid-0 [data-look=&quot;neo&quot;].node path{stroke:#9370DB;stroke-width:1px;}#mermaid-0 [data-look=&quot;neo&quot;].node .outer-path{filter:drop-shadow(1px 2px 2px rgba(185, 185, 185, 1));}#mermaid-0 [data-look=&quot;neo&quot;].node .neo-line path{stroke:#9370DB;filter:none;}#mermaid-0 [data-look=&quot;neo&quot;].node circle{stroke:#9370DB;filter:drop-shadow(1px 2px 2px rgba(185, 185, 185, 1));}#mermaid-0 [data-look=&quot;neo&quot;].node circle .state-start{fill:#000000;}#mermaid-0 [data-look=&quot;neo&quot;].icon-shape .icon{fill:#9370DB;filter:drop-shadow(1px 2px 2px rgba(185, 185, 185, 1));}#mermaid-0 [data-look=&quot;neo&quot;].icon-shape .icon-neo path{stroke:#9370DB;filter:drop-shadow(1px 2px 2px rgba(185, 185, 185, 1));}#mermaid-0 :root{--mermaid-font-family:arial,sans-serif;}&lt;/style&gt;&lt;g&gt;&lt;marker id=&quot;mermaid-0_flowchart-v2-pointEnd&quot; class=&quot;marker flowchart-v2&quot; viewBox=&quot;0 0 10 10&quot; refX=&quot;5&quot; refY=&quot;5&quot; markerUnits=&quot;userSpaceOnUse&quot; markerWidth=&quot;8&quot; markerHeight=&quot;8&quot; orient=&quot;auto&quot;&gt;&lt;path d=&quot;M 0 0 L 10 5 L 0 10 z&quot; class=&quot;arrowMarkerPath&quot; style=&quot;stroke-width: 1; stroke-dasharray: 1, 0;&quot;&gt;&lt;/path&gt;&lt;/marker&gt;&lt;marker id=&quot;mermaid-0_flowchart-v2-pointStart&quot; class=&quot;marker flowchart-v2&quot; viewBox=&quot;0 0 10 10&quot; refX=&quot;4.5&quot; refY=&quot;5&quot; markerUnits=&quot;userSpaceOnUse&quot; markerWidth=&quot;8&quot; markerHeight=&quot;8&quot; orient=&quot;auto&quot;&gt;&lt;path d=&quot;M 0 5 L 10 10 L 10 0 z&quot; class=&quot;arrowMarkerPath&quot; style=&quot;stroke-width: 1; stroke-dasharray: 1, 0;&quot;&gt;&lt;/path&gt;&lt;/marker&gt;&lt;marker id=&quot;mermaid-0_flowchart-v2-pointEnd-margin&quot; class=&quot;marker flowchart-v2&quot; viewBox=&quot;0 0 11.5 14&quot; refX=&quot;11.5&quot; refY=&quot;7&quot; markerUnits=&quot;userSpaceOnUse&quot; markerWidth=&quot;10.5&quot; markerHeight=&quot;14&quot; orient=&quot;auto&quot;&gt;&lt;path d=&quot;M 0 0 L 11.5 7 L 0 14 z&quot; class=&quot;arrowMarkerPath&quot; style=&quot;stroke-width: 0; stroke-dasharray: 1, 0;&quot;&gt;&lt;/path&gt;&lt;/marker&gt;&lt;marker id=&quot;mermaid-0_flowchart-v2-pointStart-margin&quot; class=&quot;marker flowchart-v2&quot; viewBox=&quot;0 0 11.5 14&quot; refX=&quot;1&quot; refY=&quot;7&quot; markerUnits=&quot;userSpaceOnUse&quot; markerWidth=&quot;11.5&quot; markerHeight=&quot;14&quot; orient=&quot;auto&quot;&gt;&lt;polygon points=&quot;0,7 11.5,14 11.5,0&quot; class=&quot;arrowMarkerPath&quot; style=&quot;stroke-width: 0; stroke-dasharray: 1, 0;&quot;&gt;&lt;/polygon&gt;&lt;/marker&gt;&lt;marker id=&quot;mermaid-0_flowchart-v2-circleEnd&quot; class=&quot;marker flowchart-v2&quot; viewBox=&quot;0 0 10 10&quot; refX=&quot;11&quot; refY=&quot;5&quot; markerUnits=&quot;userSpaceOnUse&quot; markerWidth=&quot;11&quot; markerHeight=&quot;11&quot; orient=&quot;auto&quot;&gt;&lt;circle cx=&quot;5&quot; cy=&quot;5&quot; r=&quot;5&quot; class=&quot;arrowMarkerPath&quot; style=&quot;stroke-width: 1; stroke-dasharray: 1, 0;&quot;&gt;&lt;/circle&gt;&lt;/marker&gt;&lt;marker id=&quot;mermaid-0_flowchart-v2-circleStart&quot; class=&quot;marker flowchart-v2&quot; viewBox=&quot;0 0 10 10&quot; refX=&quot;-1&quot; refY=&quot;5&quot; markerUnits=&quot;userSpaceOnUse&quot; markerWidth=&quot;11&quot; markerHeight=&quot;11&quot; orient=&quot;auto&quot;&gt;&lt;circle cx=&quot;5&quot; cy=&quot;5&quot; r=&quot;5&quot; class=&quot;arrowMarkerPath&quot; style=&quot;stroke-width: 1; stroke-dasharray: 1, 0;&quot;&gt;&lt;/circle&gt;&lt;/marker&gt;&lt;marker id=&quot;mermaid-0_flowchart-v2-circleEnd-margin&quot; class=&quot;marker flowchart-v2&quot; viewBox=&quot;0 0 10 10&quot; refY=&quot;5&quot; refX=&quot;12.25&quot; markerUnits=&quot;userSpaceOnUse&quot; markerWidth=&quot;14&quot; markerHeight=&quot;14&quot; orient=&quot;auto&quot;&gt;&lt;circle cx=&quot;5&quot; cy=&quot;5&quot; r=&quot;5&quot; class=&quot;arrowMarkerPath&quot; style=&quot;stroke-width: 0; stroke-dasharray: 1, 0;&quot;&gt;&lt;/circle&gt;&lt;/marker&gt;&lt;marker id=&quot;mermaid-0_flowchart-v2-circleStart-margin&quot; class=&quot;marker flowchart-v2&quot; viewBox=&quot;0 0 10 10&quot; refX=&quot;-2&quot; refY=&quot;5&quot; markerUnits=&quot;userSpaceOnUse&quot; markerWidth=&quot;14&quot; markerHeight=&quot;14&quot; orient=&quot;auto&quot;&gt;&lt;circle cx=&quot;5&quot; cy=&quot;5&quot; r=&quot;5&quot; class=&quot;arrowMarkerPath&quot; style=&quot;stroke-width: 0; stroke-dasharray: 1, 0;&quot;&gt;&lt;/circle&gt;&lt;/marker&gt;&lt;marker id=&quot;mermaid-0_flowchart-v2-crossEnd&quot; class=&quot;marker cross flowchart-v2&quot; viewBox=&quot;0 0 11 11&quot; refX=&quot;12&quot; refY=&quot;5.2&quot; markerUnits=&quot;userSpaceOnUse&quot; markerWidth=&quot;11&quot; markerHeight=&quot;11&quot; orient=&quot;auto&quot;&gt;&lt;path d=&quot;M 1,1 l 9,9 M 10,1 l -9,9&quot; class=&quot;arrowMarkerPath&quot; style=&quot;stroke-width: 2; stroke-dasharray: 1, 0;&quot;&gt;&lt;/path&gt;&lt;/marker&gt;&lt;marker id=&quot;mermaid-0_flowchart-v2-crossStart&quot; class=&quot;marker cross flowchart-v2&quot; viewBox=&quot;0 0 11 11&quot; refX=&quot;-1&quot; refY=&quot;5.2&quot; markerUnits=&quot;userSpaceOnUse&quot; markerWidth=&quot;11&quot; markerHeight=&quot;11&quot; orient=&quot;auto&quot;&gt;&lt;path d=&quot;M 1,1 l 9,9 M 10,1 l -9,9&quot; class=&quot;arrowMarkerPath&quot; style=&quot;stroke-width: 2; stroke-dasharray: 1, 0;&quot;&gt;&lt;/path&gt;&lt;/marker&gt;&lt;marker id=&quot;mermaid-0_flowchart-v2-crossEnd-margin&quot; class=&quot;marker cross flowchart-v2&quot; viewBox=&quot;0 0 15 15&quot; refX=&quot;17.7&quot; refY=&quot;7.5&quot; markerUnits=&quot;userSpaceOnUse&quot; markerWidth=&quot;12&quot; markerHeight=&quot;12&quot; orient=&quot;auto&quot;&gt;&lt;path d=&quot;M 1,1 L 14,14 M 1,14 L 14,1&quot; class=&quot;arrowMarkerPath&quot; style=&quot;stroke-width: 2.5;&quot;&gt;&lt;/path&gt;&lt;/marker&gt;&lt;marker id=&quot;mermaid-0_flowchart-v2-crossStart-margin&quot; class=&quot;marker cross flowchart-v2&quot; viewBox=&quot;0 0 15 15&quot; refX=&quot;-3.5&quot; refY=&quot;7.5&quot; markerUnits=&quot;userSpaceOnUse&quot; markerWidth=&quot;12&quot; markerHeight=&quot;12&quot; orient=&quot;auto&quot;&gt;&lt;path d=&quot;M 1,1 L 14,14 M 1,14 L 14,1&quot; class=&quot;arrowMarkerPath&quot; style=&quot;stroke-width: 2.5; stroke-dasharray: 1, 0;&quot;&gt;&lt;/path&gt;&lt;/marker&gt;&lt;g class=&quot;root&quot;&gt;&lt;g class=&quot;clusters&quot;&gt;&lt;/g&gt;&lt;g class=&quot;edgePaths&quot;&gt;&lt;path d=&quot;M109.797,39.898L130.63,36.582C151.464,33.265,193.13,26.633,234.137,26.242C275.144,25.851,315.491,31.703,335.665,34.628L355.838,37.554&quot; id=&quot;mermaid-0-L_LEAD_CONTACT_0&quot; class=&quot;edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link&quot; style=&quot;;&quot; data-edge=&quot;true&quot; data-et=&quot;edge&quot; data-id=&quot;L_LEAD_CONTACT_0&quot; data-points=&quot;W3sieCI6MTA5Ljc5Njg3NSwieSI6MzkuODk3ODQ1ODgwNTI0MDk1fSx7IngiOjIzNC43OTY4NzUsInkiOjIwfSx7IngiOjM1OS43OTY4NzUsInkiOjM4LjEyODExMDcxMDk2MTg0fV0=&quot; data-look=&quot;classic&quot; marker-end=&quot;url(#mermaid-0_flowchart-v2-pointEnd)&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M359.797,57.872L338.964,60.893C318.13,63.915,276.464,69.957,235.455,69.767C194.447,69.577,154.097,63.154,133.922,59.942L113.747,56.731&quot; id=&quot;mermaid-0-L_CONTACT_LEAD_0&quot; class=&quot;edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link&quot; style=&quot;;&quot; data-edge=&quot;true&quot; data-et=&quot;edge&quot; data-id=&quot;L_CONTACT_LEAD_0&quot; data-points=&quot;W3sieCI6MzU5Ljc5Njg3NSwieSI6NTcuODcxODg5Mjg5MDM4MTZ9LHsieCI6MjM0Ljc5Njg3NSwieSI6NzZ9LHsieCI6MTA5Ljc5Njg3NSwieSI6NTYuMTAyMTU0MTE5NDc1OTA1fV0=&quot; data-look=&quot;classic&quot; marker-end=&quot;url(#mermaid-0_flowchart-v2-pointEnd)&quot;&gt;&lt;/path&gt;&lt;/g&gt;&lt;g class=&quot;edgeLabels&quot;&gt;&lt;g class=&quot;edgeLabel&quot; transform=&quot;translate(234.66547, 20.02092)&quot;&gt;&lt;g class=&quot;label&quot; data-id=&quot;L_LEAD_CONTACT_0&quot; transform=&quot;translate(-53.3671875, -12)&quot;&gt;&lt;foreignObject width=&quot;106.734375&quot; height=&quot;24&quot;&gt;&lt;div xmlns=&quot;http://www.w3.org/1999/xhtml&quot; class=&quot;labelBkg&quot; style=&quot;display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;&quot;&gt;&lt;span class=&quot;edgeLabel&quot;&gt;&lt;p&gt;Parent Contact&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class=&quot;edgeLabel&quot; transform=&quot;translate(234.796875, 76)&quot;&gt;&lt;g class=&quot;label&quot; data-id=&quot;L_CONTACT_LEAD_0&quot; transform=&quot;translate(-100, -24)&quot;&gt;&lt;foreignObject width=&quot;200&quot; height=&quot;48&quot;&gt;&lt;div xmlns=&quot;http://www.w3.org/1999/xhtml&quot; class=&quot;labelBkg&quot; style=&quot;display: table; white-space: break-spaces; line-height: 1.5; max-width: 200px; text-align: center; width: 200px;&quot;&gt;&lt;span class=&quot;edgeLabel&quot;&gt;&lt;p&gt;Connection (Role: Stakeholder)&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class=&quot;nodes&quot;&gt;&lt;g class=&quot;node default&quot; id=&quot;mermaid-0-flowchart-LEAD-0&quot; data-look=&quot;classic&quot; transform=&quot;translate(58.8984375, 48)&quot;&gt;&lt;rect class=&quot;basic label-container&quot; style=&quot;&quot; x=&quot;-50.8984375&quot; y=&quot;-27&quot; width=&quot;101.796875&quot; height=&quot;54&quot;&gt;&lt;/rect&gt;&lt;g class=&quot;label&quot; style=&quot;&quot; transform=&quot;translate(-20.8984375, -12)&quot;&gt;&lt;rect&gt;&lt;/rect&gt;&lt;foreignObject width=&quot;41.796875&quot; height=&quot;24&quot;&gt;&lt;div xmlns=&quot;http://www.w3.org/1999/xhtml&quot; style=&quot;display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;&quot;&gt;&lt;span class=&quot;nodeLabel&quot;&gt;&lt;p&gt;LEAD&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class=&quot;node default&quot; id=&quot;mermaid-0-flowchart-CONTACT-1&quot; data-look=&quot;classic&quot; transform=&quot;translate(427.8671875, 48)&quot;&gt;&lt;rect class=&quot;basic label-container&quot; style=&quot;&quot; x=&quot;-68.0703125&quot; y=&quot;-27&quot; width=&quot;136.140625&quot; height=&quot;54&quot;&gt;&lt;/rect&gt;&lt;g class=&quot;label&quot; style=&quot;&quot; transform=&quot;translate(-38.0703125, -12)&quot;&gt;&lt;rect&gt;&lt;/rect&gt;&lt;foreignObject width=&quot;76.140625&quot; height=&quot;24&quot;&gt;&lt;div xmlns=&quot;http://www.w3.org/1999/xhtml&quot; style=&quot;display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;&quot;&gt;&lt;span class=&quot;nodeLabel&quot;&gt;&lt;p&gt;CONTACT&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;/g&gt;&lt;/g&gt;&lt;/g&gt;&lt;defs&gt;&lt;filter id=&quot;mermaid-0-drop-shadow&quot; height=&quot;130%&quot; width=&quot;130%&quot;&gt;&lt;feDropShadow dx=&quot;4&quot; dy=&quot;4&quot; stdDeviation=&quot;0&quot; flood-opacity=&quot;0.06&quot; flood-color=&quot;#000000&quot;&gt;&lt;/feDropShadow&gt;&lt;/filter&gt;&lt;/defs&gt;&lt;defs&gt;&lt;filter id=&quot;mermaid-0-drop-shadow-small&quot; height=&quot;150%&quot; width=&quot;150%&quot;&gt;&lt;feDropShadow dx=&quot;2&quot; dy=&quot;2&quot; stdDeviation=&quot;0&quot; flood-opacity=&quot;0.06&quot; flood-color=&quot;#000000&quot;&gt;&lt;/feDropShadow&gt;&lt;/filter&gt;&lt;/defs&gt;&lt;/svg&gt;&lt;/div&gt;
&lt;p&gt;Something I discovered while writing this article is that when you make an association of the lead via the parent contact field, &lt;strong&gt;it will automatically create a connection record as a stakeholder for the contact&lt;/strong&gt;. So there is no need for an extra step in the flow where we create this record.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;the-flow-logic&quot;&gt;The flow logic&lt;/h2&gt;
&lt;p&gt;Before clicking around, it helps to picture the decision:&lt;/p&gt;
&lt;div class=&quot;scroll-x&quot; tabindex=&quot;0&quot; style=&quot;--dw:519px&quot;&gt;&lt;svg id=&quot;mermaid-1&quot; width=&quot;100%&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot; xmlns:xlink=&quot;http://www.w3.org/1999/xlink&quot; class=&quot;flowchart&quot; style=&quot;max-width: 518.515625px;&quot; viewBox=&quot;0 0 518.515625 916.5625&quot; role=&quot;graphics-document document&quot; aria-roledescription=&quot;flowchart-v2&quot;&gt;&lt;style&gt;#mermaid-1{font-family:arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-1 .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-1 .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-1 .error-icon{fill:#552222;}#mermaid-1 .error-text{fill:#552222;stroke:#552222;}#mermaid-1 .edge-thickness-normal{stroke-width:1px;}#mermaid-1 .edge-thickness-thick{stroke-width:3.5px;}#mermaid-1 .edge-pattern-solid{stroke-dasharray:0;}#mermaid-1 .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-1 .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-1 .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-1 .marker{fill:#333333;stroke:#333333;}#mermaid-1 .marker.cross{stroke:#333333;}#mermaid-1 svg{font-family:arial,sans-serif;font-size:16px;}#mermaid-1 p{margin:0;}#mermaid-1 .label{font-family:arial,sans-serif;color:#333;}#mermaid-1 .cluster-label text{fill:#333;}#mermaid-1 .cluster-label span{color:#333;}#mermaid-1 .cluster-label span p{background-color:transparent;}#mermaid-1 .label text,#mermaid-1 span{fill:#333;color:#333;}#mermaid-1 .node rect,#mermaid-1 .node circle,#mermaid-1 .node ellipse,#mermaid-1 .node polygon,#mermaid-1 .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-1 .rough-node .label text,#mermaid-1 .node .label text,#mermaid-1 .image-shape .label,#mermaid-1 .icon-shape .label{text-anchor:middle;}#mermaid-1 .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-1 .rough-node .label,#mermaid-1 .node .label,#mermaid-1 .image-shape .label,#mermaid-1 .icon-shape .label{text-align:center;}#mermaid-1 .node.clickable{cursor:pointer;}#mermaid-1 .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-1 .arrowheadPath{fill:#333333;}#mermaid-1 .edgePath .path{stroke:#333333;stroke-width:1px;}#mermaid-1 .flowchart-link{stroke:#333333;fill:none;}#mermaid-1 .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-1 .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-1 .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-1 .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-1 .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-1 .cluster text{fill:#333;}#mermaid-1 .cluster span{color:#333;}#mermaid-1 div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-1 .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-1 rect.text{fill:none;stroke-width:0;}#mermaid-1 .icon-shape,#mermaid-1 .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-1 .icon-shape p,#mermaid-1 .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-1 .icon-shape .label rect,#mermaid-1 .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-1 .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-1 .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-1 .node .neo-node{stroke:#9370DB;}#mermaid-1 [data-look=&quot;neo&quot;].node rect,#mermaid-1 [data-look=&quot;neo&quot;].cluster rect,#mermaid-1 [data-look=&quot;neo&quot;].node polygon{stroke:#9370DB;filter:drop-shadow(1px 2px 2px rgba(185, 185, 185, 1));}#mermaid-1 [data-look=&quot;neo&quot;].node path{stroke:#9370DB;stroke-width:1px;}#mermaid-1 [data-look=&quot;neo&quot;].node .outer-path{filter:drop-shadow(1px 2px 2px rgba(185, 185, 185, 1));}#mermaid-1 [data-look=&quot;neo&quot;].node .neo-line path{stroke:#9370DB;filter:none;}#mermaid-1 [data-look=&quot;neo&quot;].node circle{stroke:#9370DB;filter:drop-shadow(1px 2px 2px rgba(185, 185, 185, 1));}#mermaid-1 [data-look=&quot;neo&quot;].node circle .state-start{fill:#000000;}#mermaid-1 [data-look=&quot;neo&quot;].icon-shape .icon{fill:#9370DB;filter:drop-shadow(1px 2px 2px rgba(185, 185, 185, 1));}#mermaid-1 [data-look=&quot;neo&quot;].icon-shape .icon-neo path{stroke:#9370DB;filter:drop-shadow(1px 2px 2px rgba(185, 185, 185, 1));}#mermaid-1 :root{--mermaid-font-family:arial,sans-serif;}&lt;/style&gt;&lt;g&gt;&lt;marker id=&quot;mermaid-1_flowchart-v2-pointEnd&quot; class=&quot;marker flowchart-v2&quot; viewBox=&quot;0 0 10 10&quot; refX=&quot;5&quot; refY=&quot;5&quot; markerUnits=&quot;userSpaceOnUse&quot; markerWidth=&quot;8&quot; markerHeight=&quot;8&quot; orient=&quot;auto&quot;&gt;&lt;path d=&quot;M 0 0 L 10 5 L 0 10 z&quot; class=&quot;arrowMarkerPath&quot; style=&quot;stroke-width: 1; stroke-dasharray: 1, 0;&quot;&gt;&lt;/path&gt;&lt;/marker&gt;&lt;marker id=&quot;mermaid-1_flowchart-v2-pointStart&quot; class=&quot;marker flowchart-v2&quot; viewBox=&quot;0 0 10 10&quot; refX=&quot;4.5&quot; refY=&quot;5&quot; markerUnits=&quot;userSpaceOnUse&quot; markerWidth=&quot;8&quot; markerHeight=&quot;8&quot; orient=&quot;auto&quot;&gt;&lt;path d=&quot;M 0 5 L 10 10 L 10 0 z&quot; class=&quot;arrowMarkerPath&quot; style=&quot;stroke-width: 1; stroke-dasharray: 1, 0;&quot;&gt;&lt;/path&gt;&lt;/marker&gt;&lt;marker id=&quot;mermaid-1_flowchart-v2-pointEnd-margin&quot; class=&quot;marker flowchart-v2&quot; viewBox=&quot;0 0 11.5 14&quot; refX=&quot;11.5&quot; refY=&quot;7&quot; markerUnits=&quot;userSpaceOnUse&quot; markerWidth=&quot;10.5&quot; markerHeight=&quot;14&quot; orient=&quot;auto&quot;&gt;&lt;path d=&quot;M 0 0 L 11.5 7 L 0 14 z&quot; class=&quot;arrowMarkerPath&quot; style=&quot;stroke-width: 0; stroke-dasharray: 1, 0;&quot;&gt;&lt;/path&gt;&lt;/marker&gt;&lt;marker id=&quot;mermaid-1_flowchart-v2-pointStart-margin&quot; class=&quot;marker flowchart-v2&quot; viewBox=&quot;0 0 11.5 14&quot; refX=&quot;1&quot; refY=&quot;7&quot; markerUnits=&quot;userSpaceOnUse&quot; markerWidth=&quot;11.5&quot; markerHeight=&quot;14&quot; orient=&quot;auto&quot;&gt;&lt;polygon points=&quot;0,7 11.5,14 11.5,0&quot; class=&quot;arrowMarkerPath&quot; style=&quot;stroke-width: 0; stroke-dasharray: 1, 0;&quot;&gt;&lt;/polygon&gt;&lt;/marker&gt;&lt;marker id=&quot;mermaid-1_flowchart-v2-circleEnd&quot; class=&quot;marker flowchart-v2&quot; viewBox=&quot;0 0 10 10&quot; refX=&quot;11&quot; refY=&quot;5&quot; markerUnits=&quot;userSpaceOnUse&quot; markerWidth=&quot;11&quot; markerHeight=&quot;11&quot; orient=&quot;auto&quot;&gt;&lt;circle cx=&quot;5&quot; cy=&quot;5&quot; r=&quot;5&quot; class=&quot;arrowMarkerPath&quot; style=&quot;stroke-width: 1; stroke-dasharray: 1, 0;&quot;&gt;&lt;/circle&gt;&lt;/marker&gt;&lt;marker id=&quot;mermaid-1_flowchart-v2-circleStart&quot; class=&quot;marker flowchart-v2&quot; viewBox=&quot;0 0 10 10&quot; refX=&quot;-1&quot; refY=&quot;5&quot; markerUnits=&quot;userSpaceOnUse&quot; markerWidth=&quot;11&quot; markerHeight=&quot;11&quot; orient=&quot;auto&quot;&gt;&lt;circle cx=&quot;5&quot; cy=&quot;5&quot; r=&quot;5&quot; class=&quot;arrowMarkerPath&quot; style=&quot;stroke-width: 1; stroke-dasharray: 1, 0;&quot;&gt;&lt;/circle&gt;&lt;/marker&gt;&lt;marker id=&quot;mermaid-1_flowchart-v2-circleEnd-margin&quot; class=&quot;marker flowchart-v2&quot; viewBox=&quot;0 0 10 10&quot; refY=&quot;5&quot; refX=&quot;12.25&quot; markerUnits=&quot;userSpaceOnUse&quot; markerWidth=&quot;14&quot; markerHeight=&quot;14&quot; orient=&quot;auto&quot;&gt;&lt;circle cx=&quot;5&quot; cy=&quot;5&quot; r=&quot;5&quot; class=&quot;arrowMarkerPath&quot; style=&quot;stroke-width: 0; stroke-dasharray: 1, 0;&quot;&gt;&lt;/circle&gt;&lt;/marker&gt;&lt;marker id=&quot;mermaid-1_flowchart-v2-circleStart-margin&quot; class=&quot;marker flowchart-v2&quot; viewBox=&quot;0 0 10 10&quot; refX=&quot;-2&quot; refY=&quot;5&quot; markerUnits=&quot;userSpaceOnUse&quot; markerWidth=&quot;14&quot; markerHeight=&quot;14&quot; orient=&quot;auto&quot;&gt;&lt;circle cx=&quot;5&quot; cy=&quot;5&quot; r=&quot;5&quot; class=&quot;arrowMarkerPath&quot; style=&quot;stroke-width: 0; stroke-dasharray: 1, 0;&quot;&gt;&lt;/circle&gt;&lt;/marker&gt;&lt;marker id=&quot;mermaid-1_flowchart-v2-crossEnd&quot; class=&quot;marker cross flowchart-v2&quot; viewBox=&quot;0 0 11 11&quot; refX=&quot;12&quot; refY=&quot;5.2&quot; markerUnits=&quot;userSpaceOnUse&quot; markerWidth=&quot;11&quot; markerHeight=&quot;11&quot; orient=&quot;auto&quot;&gt;&lt;path d=&quot;M 1,1 l 9,9 M 10,1 l -9,9&quot; class=&quot;arrowMarkerPath&quot; style=&quot;stroke-width: 2; stroke-dasharray: 1, 0;&quot;&gt;&lt;/path&gt;&lt;/marker&gt;&lt;marker id=&quot;mermaid-1_flowchart-v2-crossStart&quot; class=&quot;marker cross flowchart-v2&quot; viewBox=&quot;0 0 11 11&quot; refX=&quot;-1&quot; refY=&quot;5.2&quot; markerUnits=&quot;userSpaceOnUse&quot; markerWidth=&quot;11&quot; markerHeight=&quot;11&quot; orient=&quot;auto&quot;&gt;&lt;path d=&quot;M 1,1 l 9,9 M 10,1 l -9,9&quot; class=&quot;arrowMarkerPath&quot; style=&quot;stroke-width: 2; stroke-dasharray: 1, 0;&quot;&gt;&lt;/path&gt;&lt;/marker&gt;&lt;marker id=&quot;mermaid-1_flowchart-v2-crossEnd-margin&quot; class=&quot;marker cross flowchart-v2&quot; viewBox=&quot;0 0 15 15&quot; refX=&quot;17.7&quot; refY=&quot;7.5&quot; markerUnits=&quot;userSpaceOnUse&quot; markerWidth=&quot;12&quot; markerHeight=&quot;12&quot; orient=&quot;auto&quot;&gt;&lt;path d=&quot;M 1,1 L 14,14 M 1,14 L 14,1&quot; class=&quot;arrowMarkerPath&quot; style=&quot;stroke-width: 2.5;&quot;&gt;&lt;/path&gt;&lt;/marker&gt;&lt;marker id=&quot;mermaid-1_flowchart-v2-crossStart-margin&quot; class=&quot;marker cross flowchart-v2&quot; viewBox=&quot;0 0 15 15&quot; refX=&quot;-3.5&quot; refY=&quot;7.5&quot; markerUnits=&quot;userSpaceOnUse&quot; markerWidth=&quot;12&quot; markerHeight=&quot;12&quot; orient=&quot;auto&quot;&gt;&lt;path d=&quot;M 1,1 L 14,14 M 1,14 L 14,1&quot; class=&quot;arrowMarkerPath&quot; style=&quot;stroke-width: 2.5; stroke-dasharray: 1, 0;&quot;&gt;&lt;/path&gt;&lt;/marker&gt;&lt;g class=&quot;root&quot;&gt;&lt;g class=&quot;clusters&quot;&gt;&lt;/g&gt;&lt;g class=&quot;edgePaths&quot;&gt;&lt;path d=&quot;M242.887,47.5L242.803,51.583C242.72,55.667,242.553,63.833,242.47,71.417C242.387,79,242.387,86,242.387,89.5L242.387,93&quot; id=&quot;mermaid-1-L_A_B_0&quot; class=&quot;edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link&quot; style=&quot;;&quot; data-edge=&quot;true&quot; data-et=&quot;edge&quot; data-id=&quot;L_A_B_0&quot; data-points=&quot;W3sieCI6MjQyLjg4NjcxODc1LCJ5Ijo0Ny41MDAwMDAwMDAwMDAwMX0seyJ4IjoyNDIuMzg2NzE4NzUsInkiOjcyfSx7IngiOjI0Mi4zODY3MTg3NSwieSI6OTd9XQ==&quot; data-look=&quot;classic&quot; marker-end=&quot;url(#mermaid-1_flowchart-v2-pointEnd)&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M242.387,151L242.387,155.167C242.387,159.333,242.387,167.667,242.387,175.333C242.387,183,242.387,190,242.387,193.5L242.387,197&quot; id=&quot;mermaid-1-L_B_C_0&quot; class=&quot;edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link&quot; style=&quot;;&quot; data-edge=&quot;true&quot; data-et=&quot;edge&quot; data-id=&quot;L_B_C_0&quot; data-points=&quot;W3sieCI6MjQyLjM4NjcxODc1LCJ5IjoxNTF9LHsieCI6MjQyLjM4NjcxODc1LCJ5IjoxNzZ9LHsieCI6MjQyLjM4NjcxODc1LCJ5IjoyMDF9XQ==&quot; data-look=&quot;classic&quot; marker-end=&quot;url(#mermaid-1_flowchart-v2-pointEnd)&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M242.387,303L242.387,307.167C242.387,311.333,242.387,319.667,242.387,327.333C242.387,335,242.387,342,242.387,345.5L242.387,349&quot; id=&quot;mermaid-1-L_C_D_0&quot; class=&quot;edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link&quot; style=&quot;;&quot; data-edge=&quot;true&quot; data-et=&quot;edge&quot; data-id=&quot;L_C_D_0&quot; data-points=&quot;W3sieCI6MjQyLjM4NjcxODc1LCJ5IjozMDN9LHsieCI6MjQyLjM4NjcxODc1LCJ5IjozMjh9LHsieCI6MjQyLjM4NjcxODc1LCJ5IjozNTN9XQ==&quot; data-look=&quot;classic&quot; marker-end=&quot;url(#mermaid-1_flowchart-v2-pointEnd)&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M194.382,491.558L179.362,505.726C164.341,519.893,134.299,548.228,119.279,573.062C104.258,597.896,104.258,619.229,104.258,638.563C104.258,657.896,104.258,675.229,104.258,689.396C104.258,703.563,104.258,714.563,104.258,720.063L104.258,725.563&quot; id=&quot;mermaid-1-L_D_E_0&quot; class=&quot;edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link&quot; style=&quot;;&quot; data-edge=&quot;true&quot; data-et=&quot;edge&quot; data-id=&quot;L_D_E_0&quot; data-points=&quot;W3sieCI6MTk0LjM4MjQzNTk5MDU1MTI3LCJ5Ijo0OTEuNTU4MjE3MjQwNTUxM30seyJ4IjoxMDQuMjU3ODEyNSwieSI6NTc2LjU2MjV9LHsieCI6MTA0LjI1NzgxMjUsInkiOjY0MC41NjI1fSx7IngiOjEwNC4yNTc4MTI1LCJ5Ijo2OTIuNTYyNX0seyJ4IjoxMDQuMjU3ODEyNSwieSI6NzI5LjU2MjV9XQ==&quot; data-look=&quot;classic&quot; marker-end=&quot;url(#mermaid-1_flowchart-v2-pointEnd)&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M290.391,491.558L305.412,505.726C320.433,519.893,350.474,548.228,365.495,567.895C380.516,587.563,380.516,598.563,380.516,604.063L380.516,609.563&quot; id=&quot;mermaid-1-L_D_F_0&quot; class=&quot;edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link&quot; style=&quot;;&quot; data-edge=&quot;true&quot; data-et=&quot;edge&quot; data-id=&quot;L_D_F_0&quot; data-points=&quot;W3sieCI6MjkwLjM5MTAwMTUwOTQ0ODcsInkiOjQ5MS41NTgyMTcyNDA1NTEzfSx7IngiOjM4MC41MTU2MjUsInkiOjU3Ni41NjI1fSx7IngiOjM4MC41MTU2MjUsInkiOjYxMy41NjI1fV0=&quot; data-look=&quot;classic&quot; marker-end=&quot;url(#mermaid-1_flowchart-v2-pointEnd)&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M380.516,667.563L380.516,671.729C380.516,675.896,380.516,684.229,380.516,691.896C380.516,699.563,380.516,706.563,380.516,710.063L380.516,713.563&quot; id=&quot;mermaid-1-L_F_G_0&quot; class=&quot;edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link&quot; style=&quot;;&quot; data-edge=&quot;true&quot; data-et=&quot;edge&quot; data-id=&quot;L_F_G_0&quot; data-points=&quot;W3sieCI6MzgwLjUxNTYyNSwieSI6NjY3LjU2MjV9LHsieCI6MzgwLjUxNTYyNSwieSI6NjkyLjU2MjV9LHsieCI6MzgwLjUxNTYyNSwieSI6NzE3LjU2MjV9XQ==&quot; data-look=&quot;classic&quot; marker-end=&quot;url(#mermaid-1_flowchart-v2-pointEnd)&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M104.258,807.563L104.258,813.729C104.258,819.896,104.258,832.229,121.88,844.128C139.503,856.026,174.748,867.49,192.37,873.222L209.993,878.953&quot; id=&quot;mermaid-1-L_E_H_0&quot; class=&quot;edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link&quot; style=&quot;;&quot; data-edge=&quot;true&quot; data-et=&quot;edge&quot; data-id=&quot;L_E_H_0&quot; data-points=&quot;W3sieCI6MTA0LjI1NzgxMjUsInkiOjgwNy41NjI1fSx7IngiOjEwNC4yNTc4MTI1LCJ5Ijo4NDQuNTYyNX0seyJ4IjoyMTMuNzk2NDQ4NTQzMDQzNzcsInkiOjg4MC4xOTA2OTYwODYxNX1d&quot; data-look=&quot;classic&quot; marker-end=&quot;url(#mermaid-1_flowchart-v2-pointEnd)&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M380.516,819.563L380.516,823.729C380.516,827.896,380.516,836.229,363.059,846.126C345.603,856.023,310.69,867.483,293.234,873.213L275.777,878.943&quot; id=&quot;mermaid-1-L_G_H_0&quot; class=&quot;edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link&quot; style=&quot;;&quot; data-edge=&quot;true&quot; data-et=&quot;edge&quot; data-id=&quot;L_G_H_0&quot; data-points=&quot;W3sieCI6MzgwLjUxNTYyNSwieSI6ODE5LjU2MjV9LHsieCI6MzgwLjUxNTYyNSwieSI6ODQ0LjU2MjV9LHsieCI6MjcxLjk3Njk4OTgzNDM0NTIsInkiOjg4MC4xOTA2OTU4MDM0ODc5fV0=&quot; data-look=&quot;classic&quot; marker-end=&quot;url(#mermaid-1_flowchart-v2-pointEnd)&quot;&gt;&lt;/path&gt;&lt;/g&gt;&lt;g class=&quot;edgeLabels&quot;&gt;&lt;g class=&quot;edgeLabel&quot;&gt;&lt;g class=&quot;label&quot; data-id=&quot;L_A_B_0&quot; transform=&quot;translate(0, 0)&quot;&gt;&lt;foreignObject width=&quot;0&quot; height=&quot;0&quot;&gt;&lt;div xmlns=&quot;http://www.w3.org/1999/xhtml&quot; class=&quot;labelBkg&quot; style=&quot;display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;&quot;&gt;&lt;span class=&quot;edgeLabel&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class=&quot;edgeLabel&quot;&gt;&lt;g class=&quot;label&quot; data-id=&quot;L_B_C_0&quot; transform=&quot;translate(0, 0)&quot;&gt;&lt;foreignObject width=&quot;0&quot; height=&quot;0&quot;&gt;&lt;div xmlns=&quot;http://www.w3.org/1999/xhtml&quot; class=&quot;labelBkg&quot; style=&quot;display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;&quot;&gt;&lt;span class=&quot;edgeLabel&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class=&quot;edgeLabel&quot;&gt;&lt;g class=&quot;label&quot; data-id=&quot;L_C_D_0&quot; transform=&quot;translate(0, 0)&quot;&gt;&lt;foreignObject width=&quot;0&quot; height=&quot;0&quot;&gt;&lt;div xmlns=&quot;http://www.w3.org/1999/xhtml&quot; class=&quot;labelBkg&quot; style=&quot;display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;&quot;&gt;&lt;span class=&quot;edgeLabel&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class=&quot;edgeLabel&quot; transform=&quot;translate(104.2578125, 640.5625)&quot;&gt;&lt;g class=&quot;label&quot; data-id=&quot;L_D_E_0&quot; transform=&quot;translate(-13.0546875, -12)&quot;&gt;&lt;foreignObject width=&quot;26.109375&quot; height=&quot;24&quot;&gt;&lt;div xmlns=&quot;http://www.w3.org/1999/xhtml&quot; class=&quot;labelBkg&quot; style=&quot;display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;&quot;&gt;&lt;span class=&quot;edgeLabel&quot;&gt;&lt;p&gt;Yes&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class=&quot;edgeLabel&quot; transform=&quot;translate(380.515625, 576.5625)&quot;&gt;&lt;g class=&quot;label&quot; data-id=&quot;L_D_F_0&quot; transform=&quot;translate(-10.2265625, -12)&quot;&gt;&lt;foreignObject width=&quot;20.453125&quot; height=&quot;24&quot;&gt;&lt;div xmlns=&quot;http://www.w3.org/1999/xhtml&quot; class=&quot;labelBkg&quot; style=&quot;display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;&quot;&gt;&lt;span class=&quot;edgeLabel&quot;&gt;&lt;p&gt;No&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class=&quot;edgeLabel&quot;&gt;&lt;g class=&quot;label&quot; data-id=&quot;L_F_G_0&quot; transform=&quot;translate(0, 0)&quot;&gt;&lt;foreignObject width=&quot;0&quot; height=&quot;0&quot;&gt;&lt;div xmlns=&quot;http://www.w3.org/1999/xhtml&quot; class=&quot;labelBkg&quot; style=&quot;display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;&quot;&gt;&lt;span class=&quot;edgeLabel&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class=&quot;edgeLabel&quot;&gt;&lt;g class=&quot;label&quot; data-id=&quot;L_E_H_0&quot; transform=&quot;translate(0, 0)&quot;&gt;&lt;foreignObject width=&quot;0&quot; height=&quot;0&quot;&gt;&lt;div xmlns=&quot;http://www.w3.org/1999/xhtml&quot; class=&quot;labelBkg&quot; style=&quot;display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;&quot;&gt;&lt;span class=&quot;edgeLabel&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class=&quot;edgeLabel&quot;&gt;&lt;g class=&quot;label&quot; data-id=&quot;L_G_H_0&quot; transform=&quot;translate(0, 0)&quot;&gt;&lt;foreignObject width=&quot;0&quot; height=&quot;0&quot;&gt;&lt;div xmlns=&quot;http://www.w3.org/1999/xhtml&quot; class=&quot;labelBkg&quot; style=&quot;display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;&quot;&gt;&lt;span class=&quot;edgeLabel&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class=&quot;nodes&quot;&gt;&lt;g class=&quot;node default&quot; id=&quot;mermaid-1-flowchart-A-0&quot; data-look=&quot;classic&quot; transform=&quot;translate(242.38671875, 27.5)&quot;&gt;&lt;g class=&quot;basic label-container outer-path&quot;&gt;&lt;path d=&quot;M-72.46875 -19.5 C-19.219203584695776 -19.5, 34.03034283060845 -19.5, 72.46875 -19.5 C72.46875 -19.5, 72.46875 -19.5, 72.46875 -19.5 C72.81830717433725 -19.488790381790768, 73.16786434867448 -19.47758076358154, 73.7181192896239 -19.45993515863156 C74.03278549857751 -19.429579687895288, 74.34745170753114 -19.399224217159016, 74.96235465284786 -19.3399052695533 C75.38139766671245 -19.27215764479878, 75.80044068057703 -19.204410020044264, 76.19634325967675 -19.140403561325776 C76.63291614911205 -19.040758648216517, 77.06948903854735 -18.941113735107255, 77.41501438623538 -18.862249829261074 C77.66535452175363 -18.787950191101448, 77.91569465727187 -18.713650552941818, 78.6133602514606 -18.50658706670804 C78.98781242154503 -18.368785206719053, 79.36226459162945 -18.230983346730067, 79.7864565951478 -18.074876768247425 C80.07308815892246 -17.947993477587623, 80.35971972269712 -17.82111018692782, 80.92948291279238 -17.568892924097174 C81.22399843490136 -17.415244364859113, 81.51851395701034 -17.261595805621056, 82.03774226407678 -16.990714730406097 C82.40067108201691 -16.770705148164314, 82.76359989995706 -16.55069556592253, 83.1066805736057 -16.342718045390892 C83.32550085524419 -16.190078489497203, 83.54432113688269 -16.03743893360351, 84.13190534457871 -15.627565626425154 C84.3556201819791 -15.449158996900186, 84.5793350193795 -15.270752367375216, 85.10920370850187 -14.848196188198123 C85.35598704339965 -14.62407409297319, 85.60277037829744 -14.399951997748259, 86.03455973676799 -14.007812326905688 C86.36274706120652 -13.668931969742458, 86.69093438564506 -13.330051612579226, 86.90417094296865 -13.10986736009568 C87.21536245805109 -12.744324099181005, 87.52655397313355 -12.378780838266328, 87.71446390812658 -12.158051136245305 C87.93316432082314 -11.865012507249377, 88.15186473351972 -11.571973878253447, 88.46210896464063 -11.156274872382312 C88.7041057996067 -10.784502748625467, 88.94610263457275 -10.412730624868622, 89.14403387860425 -10.108655082055241 C89.35200111840571 -9.739388188821174, 89.55996835820716 -9.370121295587104, 89.7574364742735 -9.019496659696287 C89.96388354280913 -8.590804904622432, 90.17033061134475 -8.162113149548578, 90.29979614880834 -7.893275190886684 C90.48099833825248 -7.445702279653649, 90.66220052769663 -6.9981293684206145, 90.76888422997033 -6.734618561215508 C90.9038825508601 -6.328025127756943, 91.03888087174988 -5.921431694298378, 91.16277313421489 -5.548287939305138 C91.2468333999998 -5.227729713917597, 91.33089366578471 -4.9071714885300555, 91.47984428754556 -4.339158212148133 C91.53097242936121 -4.076626009861361, 91.58210057117687 -3.814093807574589, 91.71879477658177 -3.1121979531509023 C91.76908075486665 -2.722189835663009, 91.81936673315153 -2.3321817181751165, 91.87864270250937 -1.872449005199798 C91.8978989281659 -1.5725177472536185, 91.91715515382245 -1.272586489307439, 91.95873121591342 -0.6250057626472757 C91.95873121591342 -0.3356997863255171, 91.95873121591342 -0.04639381000375853, 91.95873121591342 0.625005762647271 C91.93023252689187 1.0688958478855084, 91.90173383787034 1.5127859331237459, 91.87864270250937 1.8724490051997846 C91.82569656356215 2.2830888034766663, 91.77275042461494 2.6937286017535484, 91.71879477658177 3.1121979531508885 C91.6564822325044 3.432159697227351, 91.59416968842703 3.7521214413038133, 91.47984428754556 4.339158212148129 C91.37269389638193 4.747769092928346, 91.2655435052183 5.156379973708563, 91.16277313421489 5.548287939305125 C91.04403112832823 5.905919942066326, 90.92528912244158 6.263551944827528, 90.76888422997033 6.734618561215495 C90.63133274574228 7.074373386635804, 90.49378126151423 7.414128212056113, 90.29979614880834 7.893275190886679 C90.14807779382424 8.20832160126393, 89.99635943884013 8.523368011641184, 89.7574364742735 9.019496659696284 C89.55334129804422 9.381888311969007, 89.34924612181494 9.74427996424173, 89.14403387860425 10.108655082055236 C88.92721141720878 10.441752607741822, 88.71038895581333 10.774850133428407, 88.46210896464065 11.156274872382301 C88.22837710586155 11.469454269735902, 87.99464524708247 11.7826336670895, 87.71446390812659 12.158051136245302 C87.45252743017969 12.465736627849559, 87.19059095223278 12.773422119453814, 86.90417094296866 13.10986736009567 C86.7124780067661 13.307806055007564, 86.52078507056355 13.505744749919458, 86.03455973676799 14.007812326905684 C85.77292513931856 14.245421945837151, 85.51129054186913 14.483031564768618, 85.1092037085019 14.848196188198111 C84.90713347226605 15.00934182428137, 84.70506323603023 15.170487460364628, 84.13190534457871 15.627565626425152 C83.9029292670559 15.787289425890428, 83.67395318953308 15.947013225355704, 83.1066805736057 16.34271804539089 C82.84674440221943 16.500292880039744, 82.58680823083317 16.6578677146886, 82.03774226407678 16.990714730406093 C81.65697150357158 17.189362592266342, 81.2762007430664 17.388010454126587, 80.92948291279238 17.56889292409717 C80.66836506979361 17.684482047407123, 80.40724722679482 17.80007117071708, 79.7864565951478 18.07487676824742 C79.38765156797555 18.22164070476007, 78.9888465408033 18.36840464127272, 78.61336025146062 18.506587066708033 C78.25603303411783 18.612639909166532, 77.89870581677505 18.718692751625035, 77.41501438623541 18.86224982926107 C77.15342168231089 18.921956656879917, 76.89182897838637 18.98166348449876, 76.19634325967677 19.140403561325773 C75.8922048038506 19.189574308234796, 75.58806634802443 19.23874505514382, 74.96235465284788 19.3399052695533 C74.66960614306858 19.368146366210112, 74.37685763328928 19.39638746286693, 73.7181192896239 19.45993515863156 C73.34632211089263 19.471857970494163, 72.97452493216136 19.48378078235677, 72.46875 19.5 C72.46875 19.5, 72.46875 19.5, 72.46875 19.5 C31.78264616716674 19.5, -8.903457665666522 19.5, -72.46875 19.5 C-72.93808444838969 19.484949357744227, -73.40741889677939 19.469898715488455, -73.7181192896239 19.45993515863156 C-74.19109382584953 19.414307873956975, -74.66406836207518 19.36868058928239, -74.96235465284786 19.3399052695533 C-75.22161229356817 19.29799050477467, -75.48086993428848 19.256075739996042, -76.19634325967675 19.140403561325773 C-76.68182103463121 19.029596427230967, -77.16729880958567 18.918789293136165, -77.41501438623538 18.862249829261074 C-77.71068390981684 18.774496666663097, -78.0063534333983 18.686743504065124, -78.61336025146059 18.506587066708043 C-78.87237460996143 18.411267388477253, -79.13138896846228 18.31594771024646, -79.7864565951478 18.074876768247425 C-80.02836835917701 17.96778960636921, -80.27028012320622 17.860702444490993, -80.92948291279238 17.568892924097174 C-81.19570763084687 17.430003659213217, -81.46193234890136 17.291114394329263, -82.03774226407678 16.990714730406097 C-82.28837895788023 16.838777293717744, -82.53901565168368 16.68683985702939, -83.10668057360569 16.3427180453909 C-83.32230497421713 16.192307797754218, -83.53792937482858 16.041897550117536, -84.13190534457871 15.627565626425156 C-84.46312398194402 15.363427577224432, -84.79434261930933 15.099289528023705, -85.10920370850187 14.848196188198125 C-85.36011445751292 14.62032568468091, -85.61102520652398 14.392455181163694, -86.03455973676797 14.007812326905697 C-86.20869872385958 13.827999525656873, -86.38283771095121 13.648186724408049, -86.90417094296865 13.109867360095677 C-87.22543352516195 12.732494050692637, -87.54669610735526 12.355120741289594, -87.71446390812658 12.158051136245307 C-87.89408781484609 11.9173714653157, -88.0737117215656 11.676691794386095, -88.46210896464063 11.156274872382316 C-88.62092716877476 10.912287462173122, -88.77974537290888 10.668300051963929, -89.14403387860425 10.108655082055249 C-89.36846335197471 9.710157826137495, -89.59289282534517 9.311660570219741, -89.7574364742735 9.019496659696289 C-89.89375092516103 8.736436785766337, -90.03006537604855 8.453376911836386, -90.29979614880834 7.893275190886686 C-90.4406323331313 7.545407092726574, -90.58146851745427 7.197538994566463, -90.76888422997033 6.73461856121551 C-90.8735607980583 6.419349416080731, -90.97823736614629 6.104080270945952, -91.16277313421489 5.5482879393051325 C-91.24166374568311 5.247443846369475, -91.32055435715135 4.9465997534338175, -91.47984428754556 4.339158212148136 C-91.5375924753388 4.042633472913669, -91.59534066313203 3.7461087336792023, -91.71879477658177 3.112197953150904 C-91.76013909321894 2.7915395976718878, -91.80148340985609 2.4708812421928714, -91.87864270250937 1.872449005199809 C-91.90691973705869 1.4320113672825954, -91.93519677160802 0.9915737293653818, -91.95873121591342 0.6250057626472781 C-91.95873121591342 0.37328346402651597, -91.95873121591342 0.12156116540575379, -91.95873121591342 -0.6250057626472687 C-91.93329261280415 -1.0212325397449993, -91.90785400969487 -1.4174593168427299, -91.87864270250937 -1.8724490051997822 C-91.82973628299864 -2.251757537260076, -91.78082986348791 -2.6310660693203696, -91.71879477658177 -3.112197953150895 C-91.64623393733493 -3.484782526944624, -91.5736730980881 -3.8573671007383528, -91.47984428754556 -4.339158212148126 C-91.4150271931404 -4.586333885021389, -91.35021009873526 -4.8335095578946525, -91.16277313421489 -5.548287939305123 C-91.05023764063958 -5.887226915857991, -90.93770214706427 -6.22616589241086, -90.76888422997033 -6.734618561215485 C-90.65032925695844 -7.027451636659307, -90.53177428394656 -7.3202847121031285, -90.29979614880834 -7.893275190886676 C-90.08952335792888 -8.329911140264855, -89.87925056704943 -8.766547089643034, -89.7574364742735 -9.019496659696282 C-89.5985712226228 -9.301578000853254, -89.43970597097207 -9.583659342010227, -89.14403387860425 -10.108655082055243 C-88.87452650327364 -10.522690783426478, -88.60501912794304 -10.936726484797713, -88.46210896464063 -11.156274872382308 C-88.30140780711818 -11.371599783285777, -88.14070664959571 -11.586924694189246, -87.71446390812659 -12.158051136245302 C-87.42390573083576 -12.499357304519759, -87.13334755354494 -12.840663472794215, -86.90417094296866 -13.10986736009567 C-86.71921403261231 -13.300850555283347, -86.53425712225597 -13.491833750471024, -86.03455973676799 -14.007812326905677 C-85.80618378521578 -14.215217323608835, -85.57780783366357 -14.422622320311993, -85.1092037085019 -14.848196188198107 C-84.78467148280174 -15.107002002028755, -84.46013925710159 -15.365807815859402, -84.13190534457871 -15.627565626425149 C-83.88169409736808 -15.802102161008968, -83.63148285015745 -15.976638695592786, -83.10668057360571 -16.342718045390885 C-82.68184153042282 -16.6002579699997, -82.2570024872399 -16.85779789460851, -82.03774226407678 -16.99071473040609 C-81.68438717329154 -17.175059854934016, -81.3310320825063 -17.35940497946194, -80.9294829127924 -17.56889292409717 C-80.64483093745118 -17.694899909679894, -80.36017896210996 -17.820906895262617, -79.78645659514781 -18.07487676824742 C-79.51559677120552 -18.174555687258948, -79.24473694726323 -18.274234606270472, -78.61336025146062 -18.506587066708033 C-78.32565558963296 -18.591976300145895, -78.0379509278053 -18.677365533583757, -77.41501438623541 -18.862249829261067 C-77.06250312894919 -18.942708223385715, -76.70999187166298 -19.023166617510363, -76.19634325967677 -19.140403561325773 C-75.84532568100748 -19.197153361263045, -75.49430810233821 -19.253903161200316, -74.96235465284788 -19.3399052695533 C-74.47856662322391 -19.386575718930892, -73.99477859359995 -19.433246168308482, -73.7181192896239 -19.45993515863156 C-73.35617622371383 -19.471541968275854, -72.99423315780375 -19.483148777920153, -72.46875 -19.5 C-72.46875 -19.5, -72.46875 -19.5, -72.46875 -19.5&quot; stroke=&quot;none&quot; stroke-width=&quot;0&quot; fill=&quot;#ECECFF&quot; style=&quot;&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M-72.46875 -19.5 C-36.25355717157011 -19.5, -0.038364343140216306 -19.5, 72.46875 -19.5 M-72.46875 -19.5 C-26.628554464690062 -19.5, 19.211641070619876 -19.5, 72.46875 -19.5 M72.46875 -19.5 C72.46875 -19.5, 72.46875 -19.5, 72.46875 -19.5 M72.46875 -19.5 C72.46875 -19.5, 72.46875 -19.5, 72.46875 -19.5 M72.46875 -19.5 C72.90630070688255 -19.48596860047106, 73.3438514137651 -19.471937200942126, 73.7181192896239 -19.45993515863156 M72.46875 -19.5 C72.74688803724673 -19.491080654508345, 73.02502607449345 -19.48216130901669, 73.7181192896239 -19.45993515863156 M73.7181192896239 -19.45993515863156 C74.03030470712453 -19.42981900686317, 74.34249012462516 -19.39970285509478, 74.96235465284786 -19.3399052695533 M73.7181192896239 -19.45993515863156 C74.04128259850212 -19.428759982884817, 74.36444590738036 -19.397584807138077, 74.96235465284786 -19.3399052695533 M74.96235465284786 -19.3399052695533 C75.38818515917417 -19.27106029565536, 75.81401566550046 -19.20221532175742, 76.19634325967675 -19.140403561325776 M74.96235465284786 -19.3399052695533 C75.34927346557737 -19.2773512365114, 75.73619227830686 -19.2147972034695, 76.19634325967675 -19.140403561325776 M76.19634325967675 -19.140403561325776 C76.53096553973413 -19.064028209517126, 76.86558781979151 -18.987652857708476, 77.41501438623538 -18.862249829261074 M76.19634325967675 -19.140403561325776 C76.57211086133042 -19.05463705836109, 76.94787846298408 -18.968870555396403, 77.41501438623538 -18.862249829261074 M77.41501438623538 -18.862249829261074 C77.78101457356956 -18.75362289483448, 78.14701476090374 -18.644995960407883, 78.6133602514606 -18.50658706670804 M77.41501438623538 -18.862249829261074 C77.6696017824004 -18.78668962643581, 77.92418917856543 -18.711129423610544, 78.6133602514606 -18.50658706670804 M78.6133602514606 -18.50658706670804 C78.94825468007062 -18.383342821249393, 79.28314910868063 -18.260098575790746, 79.7864565951478 -18.074876768247425 M78.6133602514606 -18.50658706670804 C79.06828437429917 -18.339170784230955, 79.52320849713773 -18.171754501753874, 79.7864565951478 -18.074876768247425 M79.7864565951478 -18.074876768247425 C80.06378401070991 -17.952112148003568, 80.34111142627202 -17.82934752775971, 80.92948291279238 -17.568892924097174 M79.7864565951478 -18.074876768247425 C80.17456887644566 -17.903070974258625, 80.56268115774354 -17.73126518026983, 80.92948291279238 -17.568892924097174 M80.92948291279238 -17.568892924097174 C81.1561815620636 -17.450624383979797, 81.38288021133481 -17.332355843862416, 82.03774226407678 -16.990714730406097 M80.92948291279238 -17.568892924097174 C81.35358086975614 -17.347641291596883, 81.77767882671992 -17.12638965909659, 82.03774226407678 -16.990714730406097 M82.03774226407678 -16.990714730406097 C82.33784769888061 -16.80878905221272, 82.63795313368445 -16.626863374019344, 83.1066805736057 -16.342718045390892 M82.03774226407678 -16.990714730406097 C82.36251309320609 -16.79383674522267, 82.6872839223354 -16.596958760039243, 83.1066805736057 -16.342718045390892 M83.1066805736057 -16.342718045390892 C83.50683047605725 -16.063590795650786, 83.90698037850879 -15.78446354591068, 84.13190534457871 -15.627565626425154 M83.1066805736057 -16.342718045390892 C83.38130006595605 -16.151155375613506, 83.65591955830641 -15.95959270583612, 84.13190534457871 -15.627565626425154 M84.13190534457871 -15.627565626425154 C84.32856819296923 -15.470732238251898, 84.52523104135976 -15.313898850078642, 85.10920370850187 -14.848196188198123 M84.13190534457871 -15.627565626425154 C84.40766046302383 -15.407658257617056, 84.68341558146895 -15.187750888808958, 85.10920370850187 -14.848196188198123 M85.10920370850187 -14.848196188198123 C85.40783379989229 -14.576988240516577, 85.70646389128272 -14.305780292835033, 86.03455973676799 -14.007812326905688 M85.10920370850187 -14.848196188198123 C85.37648287490612 -14.605460321089003, 85.64376204131037 -14.362724453979881, 86.03455973676799 -14.007812326905688 M86.03455973676799 -14.007812326905688 C86.2725480100222 -13.762069895570091, 86.51053628327642 -13.516327464234495, 86.90417094296865 -13.10986736009568 M86.03455973676799 -14.007812326905688 C86.31539530225685 -13.717826548509706, 86.59623086774572 -13.427840770113722, 86.90417094296865 -13.10986736009568 M86.90417094296865 -13.10986736009568 C87.20353012246372 -12.758223033840906, 87.50288930195879 -12.406578707586132, 87.71446390812658 -12.158051136245305 M86.90417094296865 -13.10986736009568 C87.19181103557369 -12.771988940136868, 87.47945112817872 -12.434110520178056, 87.71446390812658 -12.158051136245305 M87.71446390812658 -12.158051136245305 C87.97730691728205 -11.805865449467706, 88.24014992643752 -11.45367976269011, 88.46210896464063 -11.156274872382312 M87.71446390812658 -12.158051136245305 C87.88829951405391 -11.925127261052161, 88.06213511998126 -11.692203385859017, 88.46210896464063 -11.156274872382312 M88.46210896464063 -11.156274872382312 C88.66540036300192 -10.84396469311541, 88.8686917613632 -10.531654513848508, 89.14403387860425 -10.108655082055241 M88.46210896464063 -11.156274872382312 C88.69149495901664 -10.803876386256647, 88.92088095339264 -10.451477900130982, 89.14403387860425 -10.108655082055241 M89.14403387860425 -10.108655082055241 C89.28204781145766 -9.863597368847877, 89.42006174431106 -9.618539655640514, 89.7574364742735 -9.019496659696287 M89.14403387860425 -10.108655082055241 C89.284521474097 -9.859205130346195, 89.42500906958978 -9.60975517863715, 89.7574364742735 -9.019496659696287 M89.7574364742735 -9.019496659696287 C89.87209178999564 -8.781412443368508, 89.98674710571778 -8.543328227040728, 90.29979614880834 -7.893275190886684 M89.7574364742735 -9.019496659696287 C89.94725793491374 -8.625328335148238, 90.13707939555395 -8.231160010600188, 90.29979614880834 -7.893275190886684 M90.29979614880834 -7.893275190886684 C90.45466867525548 -7.510737056305647, 90.60954120170263 -7.12819892172461, 90.76888422997033 -6.734618561215508 M90.29979614880834 -7.893275190886684 C90.41829596383336 -7.600578356736823, 90.53679577885838 -7.307881522586962, 90.76888422997033 -6.734618561215508 M90.76888422997033 -6.734618561215508 C90.92210330746076 -6.273147111959078, 91.0753223849512 -5.811675662702648, 91.16277313421489 -5.548287939305138 M90.76888422997033 -6.734618561215508 C90.87645244227976 -6.410640244406677, 90.98402065458917 -6.086661927597847, 91.16277313421489 -5.548287939305138 M91.16277313421489 -5.548287939305138 C91.26933308381906 -5.141928668090103, 91.37589303342324 -4.73556939687507, 91.47984428754556 -4.339158212148133 M91.16277313421489 -5.548287939305138 C91.24049195024341 -5.251912410240436, 91.31821076627193 -4.955536881175734, 91.47984428754556 -4.339158212148133 M91.47984428754556 -4.339158212148133 C91.57314159794886 -3.8600962416206985, 91.66643890835216 -3.381034271093264, 91.71879477658177 -3.1121979531509023 M91.47984428754556 -4.339158212148133 C91.54682087668941 -3.9952475824016096, 91.61379746583326 -3.651336952655086, 91.71879477658177 -3.1121979531509023 M91.71879477658177 -3.1121979531509023 C91.7722286070918 -2.697775715418479, 91.82566243760182 -2.2833534776860556, 91.87864270250937 -1.872449005199798 M91.71879477658177 -3.1121979531509023 C91.75866345971694 -2.8029843197165416, 91.79853214285211 -2.493770686282181, 91.87864270250937 -1.872449005199798 M91.87864270250937 -1.872449005199798 C91.89737895491817 -1.5806167503021042, 91.91611520732695 -1.2887844954044105, 91.95873121591342 -0.6250057626472757 M91.87864270250937 -1.872449005199798 C91.90284547220598 -1.4954713310510641, 91.92704824190258 -1.1184936569023303, 91.95873121591342 -0.6250057626472757 M91.95873121591342 -0.6250057626472757 C91.95873121591342 -0.2933323786532746, 91.95873121591342 0.038341005340726486, 91.95873121591342 0.625005762647271 M91.95873121591342 -0.6250057626472757 C91.95873121591342 -0.3327791281913321, 91.95873121591342 -0.040552493735388495, 91.95873121591342 0.625005762647271 M91.95873121591342 0.625005762647271 C91.93243195118059 1.0346380392453507, 91.90613268644778 1.4442703158434305, 91.87864270250937 1.8724490051997846 M91.95873121591342 0.625005762647271 C91.92704597003245 1.1185290431133217, 91.8953607241515 1.6120523235793722, 91.87864270250937 1.8724490051997846 M91.87864270250937 1.8724490051997846 C91.81863900067921 2.3378258675233092, 91.75863529884906 2.8032027298468343, 91.71879477658177 3.1121979531508885 M91.87864270250937 1.8724490051997846 C91.83255906511877 2.229864596557666, 91.78647542772819 2.5872801879155474, 91.71879477658177 3.1121979531508885 M91.71879477658177 3.1121979531508885 C91.65107890615862 3.4599046360194907, 91.58336303573547 3.8076113188880925, 91.47984428754556 4.339158212148129 M91.71879477658177 3.1121979531508885 C91.66552557950827 3.3857240216745503, 91.61225638243477 3.6592500901982117, 91.47984428754556 4.339158212148129 M91.47984428754556 4.339158212148129 C91.39652344295466 4.656896704055736, 91.31320259836374 4.974635195963344, 91.16277313421489 5.548287939305125 M91.47984428754556 4.339158212148129 C91.36807798738546 4.765371554479483, 91.25631168722536 5.191584896810838, 91.16277313421489 5.548287939305125 M91.16277313421489 5.548287939305125 C91.07965650289263 5.798621990010987, 90.99653987157036 6.048956040716848, 90.76888422997033 6.734618561215495 M91.16277313421489 5.548287939305125 C91.00546826566105 6.022065140262122, 90.8481633971072 6.49584234121912, 90.76888422997033 6.734618561215495 M90.76888422997033 6.734618561215495 C90.67490727390597 6.966743459615276, 90.58093031784163 7.198868358015057, 90.29979614880834 7.893275190886679 M90.76888422997033 6.734618561215495 C90.6690950763951 6.98109969983836, 90.56930592281985 7.227580838461225, 90.29979614880834 7.893275190886679 M90.29979614880834 7.893275190886679 C90.12087328559556 8.264812344684, 89.94195042238279 8.636349498481321, 89.7574364742735 9.019496659696284 M90.29979614880834 7.893275190886679 C90.09624930065218 8.315944576287814, 89.89270245249601 8.738613961688948, 89.7574364742735 9.019496659696284 M89.7574364742735 9.019496659696284 C89.53267340633171 9.418586246555554, 89.3079103383899 9.817675833414823, 89.14403387860425 10.108655082055236 M89.7574364742735 9.019496659696284 C89.62505088523278 9.254560678532627, 89.49266529619204 9.489624697368972, 89.14403387860425 10.108655082055236 M89.14403387860425 10.108655082055236 C88.88033204037414 10.513771919435111, 88.61663020214405 10.918888756814988, 88.46210896464065 11.156274872382301 M89.14403387860425 10.108655082055236 C88.98212091048033 10.357396880813242, 88.82020794235643 10.606138679571247, 88.46210896464065 11.156274872382301 M88.46210896464065 11.156274872382301 C88.29514381736504 11.379992958893778, 88.12817867008944 11.603711045405253, 87.71446390812659 12.158051136245302 M88.46210896464065 11.156274872382301 C88.16725532163434 11.551351892291278, 87.87240167862804 11.946428912200254, 87.71446390812659 12.158051136245302 M87.71446390812659 12.158051136245302 C87.44018195066396 12.480238330566415, 87.16589999320134 12.802425524887527, 86.90417094296866 13.10986736009567 M87.71446390812659 12.158051136245302 C87.42559298369716 12.497375361301362, 87.13672205926771 12.836699586357422, 86.90417094296866 13.10986736009567 M86.90417094296866 13.10986736009567 C86.7205322873589 13.29948934902676, 86.53689363174915 13.489111337957853, 86.03455973676799 14.007812326905684 M86.90417094296866 13.10986736009567 C86.65488164599391 13.36727902625402, 86.40559234901916 13.624690692412369, 86.03455973676799 14.007812326905684 M86.03455973676799 14.007812326905684 C85.73596641388747 14.278986882399384, 85.43737309100693 14.550161437893085, 85.1092037085019 14.848196188198111 M86.03455973676799 14.007812326905684 C85.74087600494944 14.274528121697555, 85.4471922731309 14.541243916489428, 85.1092037085019 14.848196188198111 M85.1092037085019 14.848196188198111 C84.74522313879889 15.138461006606514, 84.38124256909587 15.428725825014917, 84.13190534457871 15.627565626425152 M85.1092037085019 14.848196188198111 C84.76122360155078 15.125701063352068, 84.41324349459968 15.403205938506025, 84.13190534457871 15.627565626425152 M84.13190534457871 15.627565626425152 C83.84430211967064 15.828185185978075, 83.55669889476258 16.028804745530998, 83.1066805736057 16.34271804539089 M84.13190534457871 15.627565626425152 C83.81763202263292 15.846789091141698, 83.50335870068713 16.066012555858244, 83.1066805736057 16.34271804539089 M83.1066805736057 16.34271804539089 C82.7341278342166 16.568561705371476, 82.3615750948275 16.794405365352063, 82.03774226407678 16.990714730406093 M83.1066805736057 16.34271804539089 C82.7770954028872 16.542514512737895, 82.4475102321687 16.742310980084902, 82.03774226407678 16.990714730406093 M82.03774226407678 16.990714730406093 C81.7832145097734 17.12350169679336, 81.52868675547002 17.256288663180626, 80.92948291279238 17.56889292409717 M82.03774226407678 16.990714730406093 C81.73029467166295 17.151109942438808, 81.42284707924911 17.311505154471526, 80.92948291279238 17.56889292409717 M80.92948291279238 17.56889292409717 C80.5467272471476 17.738327503234704, 80.16397158150282 17.907762082372237, 79.7864565951478 18.07487676824742 M80.92948291279238 17.56889292409717 C80.52144511793351 17.749519151870068, 80.11340732307463 17.930145379642962, 79.7864565951478 18.07487676824742 M79.7864565951478 18.07487676824742 C79.36701483825928 18.229235212059493, 78.94757308137076 18.383593655871564, 78.61336025146062 18.506587066708033 M79.7864565951478 18.07487676824742 C79.49589669426898 18.181805497677104, 79.20533679339017 18.28873422710679, 78.61336025146062 18.506587066708033 M78.61336025146062 18.506587066708033 C78.17282089959299 18.637336833904097, 77.73228154772536 18.768086601100165, 77.41501438623541 18.86224982926107 M78.61336025146062 18.506587066708033 C78.34635816191663 18.585831885362122, 78.07935607237265 18.665076704016208, 77.41501438623541 18.86224982926107 M77.41501438623541 18.86224982926107 C76.98436847017808 18.960541949373923, 76.55372255412075 19.058834069486778, 76.19634325967677 19.140403561325773 M77.41501438623541 18.86224982926107 C77.05650504945235 18.944077245889744, 76.6979957126693 19.025904662518418, 76.19634325967677 19.140403561325773 M76.19634325967677 19.140403561325773 C75.79159752964259 19.205839712107682, 75.38685179960842 19.271275862889595, 74.96235465284788 19.3399052695533 M76.19634325967677 19.140403561325773 C75.78138527096422 19.207490750893555, 75.36642728225166 19.274577940461334, 74.96235465284788 19.3399052695533 M74.96235465284788 19.3399052695533 C74.49465297218454 19.385023888193324, 74.0269512915212 19.43014250683335, 73.7181192896239 19.45993515863156 M74.96235465284788 19.3399052695533 C74.51214749792109 19.383336212335763, 74.06194034299432 19.42676715511823, 73.7181192896239 19.45993515863156 M73.7181192896239 19.45993515863156 C73.31772699878735 19.472774960082372, 72.9173347079508 19.485614761533185, 72.46875 19.5 M73.7181192896239 19.45993515863156 C73.3303510091148 19.472370132642315, 72.9425827286057 19.48480510665307, 72.46875 19.5 M72.46875 19.5 C72.46875 19.5, 72.46875 19.5, 72.46875 19.5 M72.46875 19.5 C72.46875 19.5, 72.46875 19.5, 72.46875 19.5 M72.46875 19.5 C25.327520361630846 19.5, -21.813709276738308 19.5, -72.46875 19.5 M72.46875 19.5 C33.48848799590522 19.5, -5.491774008189566 19.5, -72.46875 19.5 M-72.46875 19.5 C-72.82594428312125 19.488545474576796, -73.18313856624248 19.47709094915359, -73.7181192896239 19.45993515863156 M-72.46875 19.5 C-72.82746216852277 19.488496798946354, -73.18617433704554 19.476993597892708, -73.7181192896239 19.45993515863156 M-73.7181192896239 19.45993515863156 C-74.09119268327785 19.423945217032163, -74.46426607693179 19.387955275432766, -74.96235465284786 19.3399052695533 M-73.7181192896239 19.45993515863156 C-73.97982531991373 19.43468869263705, -74.24153135020354 19.40944222664254, -74.96235465284786 19.3399052695533 M-74.96235465284786 19.3399052695533 C-75.24697098013394 19.29389070899027, -75.53158730742003 19.24787614842724, -76.19634325967675 19.140403561325773 M-74.96235465284786 19.3399052695533 C-75.25511193119941 19.29257454315602, -75.54786920955095 19.245243816758745, -76.19634325967675 19.140403561325773 M-76.19634325967675 19.140403561325773 C-76.6294362539183 19.04155291158605, -77.06252924815985 18.942702261846325, -77.41501438623538 18.862249829261074 M-76.19634325967675 19.140403561325773 C-76.49590388054212 19.07203080442899, -76.79546450140748 19.00365804753221, -77.41501438623538 18.862249829261074 M-77.41501438623538 18.862249829261074 C-77.68900466490392 18.780930952756577, -77.96299494357245 18.699612076252077, -78.61336025146059 18.506587066708043 M-77.41501438623538 18.862249829261074 C-77.79253703437915 18.750203088948822, -78.17005968252293 18.63815634863657, -78.61336025146059 18.506587066708043 M-78.61336025146059 18.506587066708043 C-79.02159500051522 18.356352905375285, -79.42982974956986 18.206118744042527, -79.7864565951478 18.074876768247425 M-78.61336025146059 18.506587066708043 C-79.00490913118738 18.36249345953042, -79.39645801091416 18.218399852352796, -79.7864565951478 18.074876768247425 M-79.7864565951478 18.074876768247425 C-80.0880115928873 17.94138731605933, -80.3895665906268 17.807897863871233, -80.92948291279238 17.568892924097174 M-79.7864565951478 18.074876768247425 C-80.08022878748187 17.94483253314359, -80.37400097981596 17.81478829803975, -80.92948291279238 17.568892924097174 M-80.92948291279238 17.568892924097174 C-81.24562496008944 17.40396182052094, -81.56176700738652 17.239030716944708, -82.03774226407678 16.990714730406097 M-80.92948291279238 17.568892924097174 C-81.29155116135821 17.380002150736164, -81.65361940992403 17.19111137737515, -82.03774226407678 16.990714730406097 M-82.03774226407678 16.990714730406097 C-82.3044021935141 16.829063914113508, -82.57106212295142 16.667413097820923, -83.10668057360569 16.3427180453909 M-82.03774226407678 16.990714730406097 C-82.25723229655888 16.857658582848845, -82.47672232904097 16.724602435291597, -83.10668057360569 16.3427180453909 M-83.10668057360569 16.3427180453909 C-83.44393981509657 16.107460598244117, -83.78119905658745 15.872203151097333, -84.13190534457871 15.627565626425156 M-83.10668057360569 16.3427180453909 C-83.3269886867247 16.189040642663585, -83.5472967998437 16.035363239936274, -84.13190534457871 15.627565626425156 M-84.13190534457871 15.627565626425156 C-84.37822998767226 15.431128278532093, -84.62455463076581 15.234690930639028, -85.10920370850187 14.848196188198125 M-84.13190534457871 15.627565626425156 C-84.4963264603527 15.336949484248558, -84.86074757612671 15.04633334207196, -85.10920370850187 14.848196188198125 M-85.10920370850187 14.848196188198125 C-85.45584186025201 14.533388590321554, -85.80248001200216 14.218580992444982, -86.03455973676797 14.007812326905697 M-85.10920370850187 14.848196188198125 C-85.37248091652043 14.60909479380887, -85.635758124539 14.369993399419615, -86.03455973676797 14.007812326905697 M-86.03455973676797 14.007812326905697 C-86.28417416543483 13.75006493558144, -86.5337885941017 13.492317544257183, -86.90417094296865 13.109867360095677 M-86.03455973676797 14.007812326905697 C-86.22371725432043 13.812491659911768, -86.4128747718729 13.617170992917838, -86.90417094296865 13.109867360095677 M-86.90417094296865 13.109867360095677 C-87.13583741673752 12.83773873781098, -87.36750389050637 12.565610115526283, -87.71446390812658 12.158051136245307 M-86.90417094296865 13.109867360095677 C-87.13907660619431 12.833933801559917, -87.37398226941998 12.558000243024155, -87.71446390812658 12.158051136245307 M-87.71446390812658 12.158051136245307 C-87.97867603390937 11.804030957916192, -88.24288815969217 11.450010779587078, -88.46210896464063 11.156274872382316 M-87.71446390812658 12.158051136245307 C-87.89093285476352 11.92159882440356, -88.06740180140048 11.685146512561813, -88.46210896464063 11.156274872382316 M-88.46210896464063 11.156274872382316 C-88.62961630876148 10.898938609792708, -88.79712365288235 10.641602347203102, -89.14403387860425 10.108655082055249 M-88.46210896464063 11.156274872382316 C-88.69244262691342 10.802420513882721, -88.92277628918622 10.448566155383128, -89.14403387860425 10.108655082055249 M-89.14403387860425 10.108655082055249 C-89.31954705053016 9.797013672664932, -89.49506022245608 9.485372263274613, -89.7574364742735 9.019496659696289 M-89.14403387860425 10.108655082055249 C-89.29229486583753 9.845402686169624, -89.44055585307083 9.582150290283998, -89.7574364742735 9.019496659696289 M-89.7574364742735 9.019496659696289 C-89.91395799761547 8.694476367452586, -90.07047952095745 8.369456075208882, -90.29979614880834 7.893275190886686 M-89.7574364742735 9.019496659696289 C-89.96419778811959 8.590152367511463, -90.17095910196569 8.160808075326639, -90.29979614880834 7.893275190886686 M-90.29979614880834 7.893275190886686 C-90.40481333793737 7.633880703368746, -90.50983052706641 7.374486215850805, -90.76888422997033 6.73461856121551 M-90.29979614880834 7.893275190886686 C-90.47087005358034 7.47071933861091, -90.64194395835234 7.048163486335134, -90.76888422997033 6.73461856121551 M-90.76888422997033 6.73461856121551 C-90.88570016633908 6.382787572964712, -91.00251610270783 6.0309565847139135, -91.16277313421489 5.5482879393051325 M-90.76888422997033 6.73461856121551 C-90.89894521781973 6.342895588217348, -91.02900620566915 5.951172615219186, -91.16277313421489 5.5482879393051325 M-91.16277313421489 5.5482879393051325 C-91.27622498007106 5.1156468807144835, -91.38967682592725 4.683005822123835, -91.47984428754556 4.339158212148136 M-91.16277313421489 5.5482879393051325 C-91.24303932078726 5.242198182319379, -91.32330550735962 4.936108425333626, -91.47984428754556 4.339158212148136 M-91.47984428754556 4.339158212148136 C-91.57190743981579 3.8664333827946358, -91.66397059208602 3.3937085534411358, -91.71879477658177 3.112197953150904 M-91.47984428754556 4.339158212148136 C-91.56320595020813 3.9111136928695096, -91.64656761287068 3.4830691735908834, -91.71879477658177 3.112197953150904 M-91.71879477658177 3.112197953150904 C-91.75284597307493 2.848103597319341, -91.78689716956808 2.584009241487778, -91.87864270250937 1.872449005199809 M-91.71879477658177 3.112197953150904 C-91.76592997911682 2.746626630187691, -91.81306518165185 2.381055307224478, -91.87864270250937 1.872449005199809 M-91.87864270250937 1.872449005199809 C-91.90649587498851 1.4386133611610816, -91.93434904746765 1.0047777171223542, -91.95873121591342 0.6250057626472781 M-91.87864270250937 1.872449005199809 C-91.90481618471814 1.4647758929436494, -91.9309896669269 1.0571027806874898, -91.95873121591342 0.6250057626472781 M-91.95873121591342 0.6250057626472781 C-91.95873121591342 0.2982899618211194, -91.95873121591342 -0.028425839005039366, -91.95873121591342 -0.6250057626472687 M-91.95873121591342 0.6250057626472781 C-91.95873121591342 0.12627571181778674, -91.95873121591342 -0.37245433901170466, -91.95873121591342 -0.6250057626472687 M-91.95873121591342 -0.6250057626472687 C-91.93385270041992 -1.0125087230347916, -91.90897418492642 -1.4000116834223144, -91.87864270250937 -1.8724490051997822 M-91.95873121591342 -0.6250057626472687 C-91.93376128413115 -1.0139326055222568, -91.90879135234889 -1.402859448397245, -91.87864270250937 -1.8724490051997822 M-91.87864270250937 -1.8724490051997822 C-91.84055711243089 -2.1678333209979974, -91.80247152235242 -2.463217636796213, -91.71879477658177 -3.112197953150895 M-91.87864270250937 -1.8724490051997822 C-91.83152326970303 -2.2378980212613, -91.78440383689669 -2.6033470373228185, -91.71879477658177 -3.112197953150895 M-91.71879477658177 -3.112197953150895 C-91.63736636289815 -3.5303156475149824, -91.55593794921452 -3.9484333418790696, -91.47984428754556 -4.339158212148126 M-91.71879477658177 -3.112197953150895 C-91.6237632932959 -3.6001645349127642, -91.52873181001003 -4.088131116674633, -91.47984428754556 -4.339158212148126 M-91.47984428754556 -4.339158212148126 C-91.36956750844716 -4.75969136510873, -91.25929072934876 -5.180224518069334, -91.16277313421489 -5.548287939305123 M-91.47984428754556 -4.339158212148126 C-91.39021324922616 -4.680960207597704, -91.30058221090678 -5.022762203047282, -91.16277313421489 -5.548287939305123 M-91.16277313421489 -5.548287939305123 C-91.00702552498312 -6.017374923299605, -90.85127791575135 -6.486461907294087, -90.76888422997033 -6.734618561215485 M-91.16277313421489 -5.548287939305123 C-91.00867321835467 -6.012412333388769, -90.85457330249446 -6.476536727472416, -90.76888422997033 -6.734618561215485 M-90.76888422997033 -6.734618561215485 C-90.593399146734 -7.1680701095824775, -90.41791406349769 -7.601521657949469, -90.29979614880834 -7.893275190886676 M-90.76888422997033 -6.734618561215485 C-90.64479375767554 -7.041124426909663, -90.52070328538076 -7.347630292603842, -90.29979614880834 -7.893275190886676 M-90.29979614880834 -7.893275190886676 C-90.11155693552631 -8.284157944940748, -89.92331772224429 -8.675040698994822, -89.7574364742735 -9.019496659696282 M-90.29979614880834 -7.893275190886676 C-90.1448313090797 -8.215062996299602, -89.98986646935106 -8.536850801712529, -89.7574364742735 -9.019496659696282 M-89.7574364742735 -9.019496659696282 C-89.55126568292546 -9.385573776791185, -89.34509489157742 -9.75165089388609, -89.14403387860425 -10.108655082055243 M-89.7574364742735 -9.019496659696282 C-89.58743599174608 -9.32134973083925, -89.41743550921865 -9.623202801982217, -89.14403387860425 -10.108655082055243 M-89.14403387860425 -10.108655082055243 C-88.95396617199106 -10.400650119738659, -88.76389846537785 -10.692645157422074, -88.46210896464063 -11.156274872382308 M-89.14403387860425 -10.108655082055243 C-88.90872772118145 -10.470148528407147, -88.67342156375867 -10.83164197475905, -88.46210896464063 -11.156274872382308 M-88.46210896464063 -11.156274872382308 C-88.26179204705628 -11.424681292698736, -88.06147512947192 -11.693087713015164, -87.71446390812659 -12.158051136245302 M-88.46210896464063 -11.156274872382308 C-88.31192990438245 -11.35750113153443, -88.16175084412427 -11.558727390686553, -87.71446390812659 -12.158051136245302 M-87.71446390812659 -12.158051136245302 C-87.46416776630191 -12.452063226686509, -87.21387162447722 -12.746075317127715, -86.90417094296866 -13.10986736009567 M-87.71446390812659 -12.158051136245302 C-87.48294131919579 -12.43001074321193, -87.25141873026499 -12.70197035017856, -86.90417094296866 -13.10986736009567 M-86.90417094296866 -13.10986736009567 C-86.62598497966239 -13.397117206701736, -86.34779901635612 -13.684367053307803, -86.03455973676799 -14.007812326905677 M-86.90417094296866 -13.10986736009567 C-86.59676408509078 -13.42729017942698, -86.2893572272129 -13.744712998758288, -86.03455973676799 -14.007812326905677 M-86.03455973676799 -14.007812326905677 C-85.70528271918025 -14.3068530020864, -85.37600570159249 -14.605893677267126, -85.1092037085019 -14.848196188198107 M-86.03455973676799 -14.007812326905677 C-85.72487325744297 -14.289061393573432, -85.41518677811794 -14.570310460241188, -85.1092037085019 -14.848196188198107 M-85.1092037085019 -14.848196188198107 C-84.86187371563423 -15.045435275782546, -84.61454372276656 -15.242674363366985, -84.13190534457871 -15.627565626425149 M-85.1092037085019 -14.848196188198107 C-84.81849507415816 -15.080028588005579, -84.52778643981442 -15.311860987813052, -84.13190534457871 -15.627565626425149 M-84.13190534457871 -15.627565626425149 C-83.81850877054544 -15.846177509751735, -83.50511219651214 -16.06478939307832, -83.10668057360571 -16.342718045390885 M-84.13190534457871 -15.627565626425149 C-83.7905484366165 -15.865681428317206, -83.4491915286543 -16.103797230209263, -83.10668057360571 -16.342718045390885 M-83.10668057360571 -16.342718045390885 C-82.75899776183687 -16.55348540909615, -82.41131495006803 -16.764252772801417, -82.03774226407678 -16.99071473040609 M-83.10668057360571 -16.342718045390885 C-82.80483674447117 -16.525697548443475, -82.50299291533662 -16.708677051496068, -82.03774226407678 -16.99071473040609 M-82.03774226407678 -16.99071473040609 C-81.71273020824933 -17.160273311751116, -81.38771815242188 -17.32983189309614, -80.9294829127924 -17.56889292409717 M-82.03774226407678 -16.99071473040609 C-81.74848549133807 -17.14161980346607, -81.45922871859936 -17.292524876526056, -80.9294829127924 -17.56889292409717 M-80.9294829127924 -17.56889292409717 C-80.64753114427955 -17.69370460821576, -80.36557937576671 -17.818516292334348, -79.78645659514781 -18.07487676824742 M-80.9294829127924 -17.56889292409717 C-80.62069085875069 -17.705586006430604, -80.311898804709 -17.842279088764034, -79.78645659514781 -18.07487676824742 M-79.78645659514781 -18.07487676824742 C-79.38028606894927 -18.224351276487667, -78.97411554275074 -18.373825784727913, -78.61336025146062 -18.506587066708033 M-79.78645659514781 -18.07487676824742 C-79.34078028401709 -18.238889770530186, -78.89510397288636 -18.40290277281295, -78.61336025146062 -18.506587066708033 M-78.61336025146062 -18.506587066708033 C-78.36488334519092 -18.580333708206982, -78.11640643892123 -18.654080349705932, -77.41501438623541 -18.862249829261067 M-78.61336025146062 -18.506587066708033 C-78.19136784440173 -18.631832198039767, -77.76937543734283 -18.757077329371498, -77.41501438623541 -18.862249829261067 M-77.41501438623541 -18.862249829261067 C-77.14819923040929 -18.92314864744677, -76.88138407458318 -18.98404746563247, -76.19634325967677 -19.140403561325773 M-77.41501438623541 -18.862249829261067 C-77.07477192018469 -18.939907951847555, -76.73452945413396 -19.017566074434047, -76.19634325967677 -19.140403561325773 M-76.19634325967677 -19.140403561325773 C-75.7284833384966 -19.216043525074305, -75.26062341731645 -19.291683488822834, -74.96235465284788 -19.3399052695533 M-76.19634325967677 -19.140403561325773 C-75.85786611149463 -19.19512592171437, -75.5193889633125 -19.249848282102974, -74.96235465284788 -19.3399052695533 M-74.96235465284788 -19.3399052695533 C-74.48136143668036 -19.386306106638003, -74.00036822051284 -19.432706943722707, -73.7181192896239 -19.45993515863156 M-74.96235465284788 -19.3399052695533 C-74.5495771931358 -19.379725414654196, -74.13679973342374 -19.419545559755093, -73.7181192896239 -19.45993515863156 M-73.7181192896239 -19.45993515863156 C-73.4511917446572 -19.468495005455694, -73.18426419969049 -19.477054852279828, -72.46875 -19.5 M-73.7181192896239 -19.45993515863156 C-73.3985602471185 -19.470182795140765, -73.0790012046131 -19.48043043164997, -72.46875 -19.5 M-72.46875 -19.5 C-72.46875 -19.5, -72.46875 -19.5, -72.46875 -19.5 M-72.46875 -19.5 C-72.46875 -19.5, -72.46875 -19.5, -72.46875 -19.5&quot; stroke=&quot;#9370DB&quot; stroke-width=&quot;1.3&quot; fill=&quot;none&quot; stroke-dasharray=&quot;0 0&quot; style=&quot;&quot;&gt;&lt;/path&gt;&lt;/g&gt;&lt;g class=&quot;label&quot; style=&quot;&quot; transform=&quot;translate(-79.59375, -12)&quot;&gt;&lt;rect&gt;&lt;/rect&gt;&lt;foreignObject width=&quot;159.1875&quot; height=&quot;24&quot;&gt;&lt;div xmlns=&quot;http://www.w3.org/1999/xhtml&quot; style=&quot;display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;&quot;&gt;&lt;span class=&quot;nodeLabel&quot;&gt;&lt;p&gt;New event registration&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class=&quot;node default&quot; id=&quot;mermaid-1-flowchart-B-1&quot; data-look=&quot;classic&quot; transform=&quot;translate(242.38671875, 124)&quot;&gt;&lt;rect class=&quot;basic label-container&quot; style=&quot;&quot; x=&quot;-72.6875&quot; y=&quot;-27&quot; width=&quot;145.375&quot; height=&quot;54&quot;&gt;&lt;/rect&gt;&lt;g class=&quot;label&quot; style=&quot;&quot; transform=&quot;translate(-42.6875, -12)&quot;&gt;&lt;rect&gt;&lt;/rect&gt;&lt;foreignObject width=&quot;85.375&quot; height=&quot;24&quot;&gt;&lt;div xmlns=&quot;http://www.w3.org/1999/xhtml&quot; style=&quot;display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;&quot;&gt;&lt;span class=&quot;nodeLabel&quot;&gt;&lt;p&gt;Get Contact&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class=&quot;node default&quot; id=&quot;mermaid-1-flowchart-C-3&quot; data-look=&quot;classic&quot; transform=&quot;translate(242.38671875, 252)&quot;&gt;&lt;rect class=&quot;basic label-container&quot; style=&quot;&quot; x=&quot;-130&quot; y=&quot;-51&quot; width=&quot;260&quot; height=&quot;102&quot;&gt;&lt;/rect&gt;&lt;g class=&quot;label&quot; style=&quot;&quot; transform=&quot;translate(-100, -36)&quot;&gt;&lt;rect&gt;&lt;/rect&gt;&lt;foreignObject width=&quot;200&quot; height=&quot;72&quot;&gt;&lt;div xmlns=&quot;http://www.w3.org/1999/xhtml&quot; style=&quot;display: table; white-space: break-spaces; line-height: 1.5; max-width: 200px; text-align: center; width: 200px;&quot;&gt;&lt;span class=&quot;nodeLabel&quot;&gt;&lt;p&gt;List open Leads with same email&lt;br&gt;&lt;/br&gt;oldest first · take 1&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class=&quot;node default&quot; id=&quot;mermaid-1-flowchart-D-5&quot; data-look=&quot;classic&quot; transform=&quot;translate(242.38671875, 446.28125)&quot;&gt;&lt;polygon points=&quot;93.28125,0 186.5625,-93.28125 93.28125,-186.5625 0,-93.28125&quot; class=&quot;label-container&quot; transform=&quot;translate(-92.78125, 93.28125)&quot;&gt;&lt;/polygon&gt;&lt;g class=&quot;label&quot; style=&quot;&quot; transform=&quot;translate(-66.28125, -12)&quot;&gt;&lt;rect&gt;&lt;/rect&gt;&lt;foreignObject width=&quot;132.5625&quot; height=&quot;24&quot;&gt;&lt;div xmlns=&quot;http://www.w3.org/1999/xhtml&quot; style=&quot;display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;&quot;&gt;&lt;span class=&quot;nodeLabel&quot;&gt;&lt;p&gt;Open Lead found?&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class=&quot;node default&quot; id=&quot;mermaid-1-flowchart-E-7&quot; data-look=&quot;classic&quot; transform=&quot;translate(104.2578125, 768.5625)&quot;&gt;&lt;rect class=&quot;basic label-container&quot; style=&quot;&quot; x=&quot;-96.2578125&quot; y=&quot;-39&quot; width=&quot;192.515625&quot; height=&quot;78&quot;&gt;&lt;/rect&gt;&lt;g class=&quot;label&quot; style=&quot;&quot; transform=&quot;translate(-66.2578125, -24)&quot;&gt;&lt;rect&gt;&lt;/rect&gt;&lt;foreignObject width=&quot;132.515625&quot; height=&quot;48&quot;&gt;&lt;div xmlns=&quot;http://www.w3.org/1999/xhtml&quot; style=&quot;display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;&quot;&gt;&lt;span class=&quot;nodeLabel&quot;&gt;&lt;p&gt;Update Lead:&lt;br&gt;&lt;/br&gt;set Parent Contact&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class=&quot;node default&quot; id=&quot;mermaid-1-flowchart-F-9&quot; data-look=&quot;classic&quot; transform=&quot;translate(380.515625, 640.5625)&quot;&gt;&lt;rect class=&quot;basic label-container&quot; style=&quot;&quot; x=&quot;-65.578125&quot; y=&quot;-27&quot; width=&quot;131.15625&quot; height=&quot;54&quot;&gt;&lt;/rect&gt;&lt;g class=&quot;label&quot; style=&quot;&quot; transform=&quot;translate(-35.578125, -12)&quot;&gt;&lt;rect&gt;&lt;/rect&gt;&lt;foreignObject width=&quot;71.15625&quot; height=&quot;24&quot;&gt;&lt;div xmlns=&quot;http://www.w3.org/1999/xhtml&quot; style=&quot;display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;&quot;&gt;&lt;span class=&quot;nodeLabel&quot;&gt;&lt;p&gt;Get Event&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class=&quot;node default&quot; id=&quot;mermaid-1-flowchart-G-11&quot; data-look=&quot;classic&quot; transform=&quot;translate(380.515625, 768.5625)&quot;&gt;&lt;rect class=&quot;basic label-container&quot; style=&quot;&quot; x=&quot;-130&quot; y=&quot;-51&quot; width=&quot;260&quot; height=&quot;102&quot;&gt;&lt;/rect&gt;&lt;g class=&quot;label&quot; style=&quot;&quot; transform=&quot;translate(-100, -36)&quot;&gt;&lt;rect&gt;&lt;/rect&gt;&lt;foreignObject width=&quot;200&quot; height=&quot;72&quot;&gt;&lt;div xmlns=&quot;http://www.w3.org/1999/xhtml&quot; style=&quot;display: table; white-space: break-spaces; line-height: 1.5; max-width: 200px; text-align: center; width: 200px;&quot;&gt;&lt;span class=&quot;nodeLabel&quot;&gt;&lt;p&gt;Create new Lead:&lt;br&gt;&lt;/br&gt;Topic = event · set Originating Event&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class=&quot;node default&quot; id=&quot;mermaid-1-flowchart-H-13&quot; data-look=&quot;classic&quot; transform=&quot;translate(242.38671875, 889.0625)&quot;&gt;&lt;g class=&quot;basic label-container outer-path&quot;&gt;&lt;path d=&quot;M-12 -19.5 C-5.782165815948399 -19.5, 0.43566836810320275 -19.5, 12 -19.5 C12 -19.5, 11.999999999999998 -19.5, 11.999999999999998 -19.5 C12.351503061333872 -19.488727980982226, 12.703006122667748 -19.477455961964452, 13.2493692896239 -19.45993515863156 C13.722294777488266 -19.4143126055934, 14.195220265352631 -19.368690052555234, 14.493604652847864 -19.3399052695533 C14.957558260176999 -19.26489684833429, 15.421511867506132 -19.189888427115275, 15.727593259676757 -19.140403561325776 C16.082199912173003 -19.05946690691817, 16.436806564669247 -18.97853025251057, 16.94626438623539 -18.862249829261074 C17.420773377033026 -18.721418051540855, 17.895282367830664 -18.58058627382064, 18.144610251460602 -18.50658706670804 C18.380417655541002 -18.419807762226704, 18.6162250596214 -18.333028457745367, 19.317706595147794 -18.074876768247425 C19.549496075584305 -17.97227044104882, 19.78128555602082 -17.869664113850217, 20.46073291279238 -17.568892924097174 C20.884845537390948 -17.347633639501204, 21.308958161989512 -17.126374354905234, 21.568992264076783 -16.990714730406097 C21.93609224918343 -16.768176562115475, 22.303192234290076 -16.545638393824852, 22.637930573605697 -16.342718045390892 C22.893044223416407 -16.164761806974848, 23.148157873227117 -15.986805568558806, 23.663155344578712 -15.627565626425154 C23.89782512977414 -15.440422717557048, 24.132494914969573 -15.253279808688943, 24.64045370850187 -14.848196188198123 C24.963125398025998 -14.555154297197378, 25.28579708755013 -14.262112406196632, 25.565809736767985 -14.007812326905688 C25.740828171525113 -13.827091423738226, 25.915846606282244 -13.646370520570763, 26.435420942968648 -13.10986736009568 C26.736856706062344 -12.755783760585008, 27.03829246915604 -12.401700161074332, 27.245713908126582 -12.158051136245305 C27.525536394126725 -11.783114497358014, 27.805358880126867 -11.408177858470724, 27.993358964640635 -11.156274872382312 C28.19580217463943 -10.845267738210655, 28.398245384638226 -10.534260604038996, 28.675283878604247 -10.108655082055241 C28.798341649586753 -9.890153548725271, 28.92139942056926 -9.671652015395303, 29.2886864742735 -9.019496659696287 C29.470178152394475 -8.64262530677827, 29.651669830515445 -8.265753953860251, 29.83104614880834 -7.893275190886684 C29.95166229496077 -7.595350977935639, 30.072278441113202 -7.297426764984593, 30.300134229970325 -6.734618561215508 C30.436925174829785 -6.322626029976103, 30.573716119689244 -5.910633498736698, 30.69402313421488 -5.548287939305138 C30.79036202560309 -5.18090599290224, 30.886700916991305 -4.813524046499342, 31.01109428754556 -4.339158212148133 C31.083885187620055 -3.9653923246277802, 31.15667608769455 -3.591626437107428, 31.250044776581777 -3.1121979531509023 C31.30972692072561 -2.6493150287437497, 31.36940906486944 -2.186432104336597, 31.409892702509367 -1.872449005199798 C31.43967538972288 -1.4085596116968966, 31.469458076936395 -0.944670218193995, 31.489981215913414 -0.6250057626472757 C31.489981215913414 -0.16431112589312447, 31.489981215913414 0.29638351086102677, 31.489981215913414 0.625005762647271 C31.4644266251546 1.02303914101017, 31.43887203439579 1.421072519373069, 31.409892702509367 1.8724490051997846 C31.37557806664394 2.1385865447807424, 31.341263430778515 2.4047240843617, 31.250044776581777 3.1121979531508885 C31.195085734749803 3.3944010173604733, 31.14012669291783 3.6766040815700585, 31.01109428754556 4.339158212148129 C30.933512682394696 4.635010496668748, 30.855931077243827 4.930862781189368, 30.694023134214884 5.548287939305125 C30.590447116547306 5.860242401922548, 30.486871098879732 6.172196864539972, 30.30013422997033 6.734618561215495 C30.201615907932286 6.977960721371642, 30.103097585894243 7.221302881527788, 29.831046148808344 7.893275190886679 C29.62294309061312 8.325405643921197, 29.4148400324179 8.757536096955715, 29.288686474273504 9.019496659696284 C29.075813647863495 9.397473918698347, 28.86294082145349 9.775451177700411, 28.67528387860425 10.108655082055236 C28.4154176204878 10.507879438383066, 28.155551362371355 10.907103794710896, 27.99335896464064 11.156274872382301 C27.804938962456394 11.408740509893867, 27.61651896027215 11.661206147405435, 27.245713908126582 12.158051136245302 C27.080086196228848 12.35260687112417, 26.914458484331117 12.547162606003038, 26.43542094296866 13.10986736009567 C26.22068363471353 13.331601261129977, 26.0059463264584 13.553335162164284, 25.56580973676799 14.007812326905684 C25.258135964144056 14.287233506600808, 24.950462191520124 14.56665468629593, 24.640453708501887 14.848196188198111 C24.271042407787053 15.142791870070626, 23.90163110707222 15.437387551943141, 23.663155344578715 15.627565626425152 C23.29796165304353 15.882308936659987, 22.932767961508347 16.13705224689482, 22.637930573605708 16.34271804539089 C22.416195685814767 16.477135037428596, 22.194460798023822 16.611552029466303, 21.568992264076787 16.990714730406093 C21.274078357933163 17.144571126339848, 20.979164451789543 17.298427522273602, 20.460732912792388 17.56889292409717 C20.155870316156037 17.703846552200467, 19.851007719519686 17.838800180303764, 19.317706595147804 18.07487676824742 C19.069007550571843 18.166400315600143, 18.820308505995882 18.25792386295286, 18.144610251460616 18.506587066708033 C17.836169462794906 18.598130673745278, 17.527728674129193 18.689674280782526, 16.946264386235413 18.86224982926107 C16.46305500404674 18.97253921750973, 15.979845621858068 19.08282860575839, 15.727593259676766 19.140403561325773 C15.327327693524657 19.20511539395542, 14.927062127372547 19.26982722658507, 14.493604652847878 19.3399052695533 C14.125251260402155 19.37543987831277, 13.756897867956432 19.410974487072238, 13.2493692896239 19.45993515863156 C12.870311559914969 19.472090802232213, 12.491253830206038 19.484246445832866, 12.000000000000004 19.5 C12.000000000000002 19.5, 12.000000000000002 19.5, 12 19.5 C6.571399246761879 19.5, 1.1427984935237578 19.5, -11.999999999999996 19.5 C-12.383077599244526 19.48771544700754, -12.766155198489058 19.475430894015084, -13.249369289623893 19.45993515863156 C-13.536530038665383 19.432233106532856, -13.823690787706871 19.404531054434152, -14.493604652847871 19.3399052695533 C-14.808410961215337 19.28900982697583, -15.123217269582803 19.23811438439836, -15.727593259676759 19.140403561325773 C-15.984538143279993 19.081757568365397, -16.241483026883227 19.023111575405025, -16.946264386235388 18.862249829261074 C-17.28629751294462 18.76132978212408, -17.62633063965385 18.660409734987084, -18.14461025146059 18.506587066708043 C-18.47345557790435 18.385568946763865, -18.802300904348108 18.264550826819686, -19.317706595147797 18.074876768247425 C-19.77454836410522 17.872646468859553, -20.231390133062646 17.670416169471686, -20.46073291279238 17.568892924097174 C-20.73300923117158 17.42684654320005, -21.005285549550777 17.28480016230293, -21.56899226407678 16.990714730406097 C-21.91375407528406 16.781718094406955, -22.258515886491338 16.57272145840781, -22.637930573605686 16.3427180453909 C-22.945988785649536 16.12782997229418, -23.254046997693383 15.912941899197458, -23.663155344578712 15.627565626425156 C-24.03733034345054 15.32917102203977, -24.411505342322368 15.030776417654382, -24.64045370850187 14.848196188198125 C-24.855556995792046 14.652845074002293, -25.070660283082223 14.457493959806461, -25.565809736767974 14.007812326905697 C-25.896951290667936 13.665881485276799, -26.2280928445679 13.323950643647901, -26.435420942968655 13.109867360095677 C-26.643082575877287 12.865936189799545, -26.85074420878592 12.622005019503414, -27.24571390812658 12.158051136245307 C-27.438307097624655 11.899993807918394, -27.630900287122735 11.64193647959148, -27.993358964640635 11.156274872382316 C-28.183360685432866 10.864381206639576, -28.373362406225098 10.572487540896836, -28.675283878604244 10.108655082055249 C-28.884069542792552 9.737934993447867, -29.092855206980857 9.367214904840488, -29.2886864742735 9.019496659696289 C-29.49066063954015 8.60009298396526, -29.692634804806794 8.18068930823423, -29.83104614880834 7.893275190886686 C-29.928723593750608 7.652010013414357, -30.026401038692878 7.41074483594203, -30.300134229970325 6.73461856121551 C-30.390120576348725 6.463594023301015, -30.48010692272712 6.192569485386521, -30.69402313421488 5.5482879393051325 C-30.810000225123133 5.1060170268828005, -30.92597731603139 4.6637461144604675, -31.011094287545557 4.339158212148136 C-31.075432538055598 4.00879489367314, -31.139770788565638 3.6784315751981445, -31.250044776581777 3.112197953150904 C-31.29802361607066 2.740083548568619, -31.346002455559542 2.367969143986334, -31.409892702509364 1.872449005199809 C-31.435344191684585 1.476021517223453, -31.460795680859807 1.079594029247097, -31.489981215913414 0.6250057626472781 C-31.489981215913414 0.18807922822180867, -31.489981215913414 -0.2488473062036608, -31.489981215913414 -0.6250057626472687 C-31.472576191589226 -0.8961030655792834, -31.455171167265036 -1.1672003685112982, -31.409892702509367 -1.8724490051997822 C-31.358280622788985 -2.2727421035531403, -31.306668543068604 -2.6730352019064987, -31.250044776581777 -3.112197953150895 C-31.163982552638316 -3.5541092838430886, -31.07792032869486 -3.996020614535282, -31.01109428754556 -4.339158212148126 C-30.910444567114396 -4.722979218016923, -30.809794846683236 -5.106800223885721, -30.694023134214884 -5.548287939305123 C-30.578954942878287 -5.894854997984423, -30.46388675154169 -6.241422056663723, -30.300134229970332 -6.734618561215485 C-30.114570123203276 -7.192965492568053, -29.929006016436222 -7.651312423920622, -29.831046148808344 -7.893275190886676 C-29.694330604841653 -8.177167943177539, -29.55761506087496 -8.461060695468401, -29.288686474273504 -9.019496659696282 C-29.04898218686893 -9.445115894674245, -28.809277899464355 -9.870735129652209, -28.675283878604247 -10.108655082055243 C-28.431830614000553 -10.482664672841617, -28.18837734939686 -10.85667426362799, -27.99335896464064 -11.156274872382308 C-27.718254569064133 -11.52488969992881, -27.44315017348762 -11.893504527475312, -27.245713908126586 -12.158051136245302 C-27.055598121536356 -12.381371957068898, -26.86548233494613 -12.604692777892495, -26.435420942968662 -13.10986736009567 C-26.09308329569203 -13.463359087352345, -25.750745648415393 -13.816850814609019, -25.565809736767996 -14.007812326905677 C-25.207367557605508 -14.333340030160686, -24.84892537844302 -14.658867733415697, -24.640453708501887 -14.848196188198107 C-24.353574352366557 -15.076974840535751, -24.06669499623123 -15.305753492873395, -23.66315534457872 -15.627565626425149 C-23.265648480020747 -15.904849207345965, -22.868141615462775 -16.18213278826678, -22.63793057360571 -16.342718045390885 C-22.33787312299587 -16.52461463528388, -22.037815672386028 -16.70651122517687, -21.56899226407679 -16.99071473040609 C-21.21251418989001 -17.17668911337423, -20.856036115703226 -17.36266349634237, -20.460732912792388 -17.56889292409717 C-20.12057080529742 -17.719472598534793, -19.780408697802446 -17.870052272972416, -19.317706595147804 -18.07487676824742 C-18.918984176898544 -18.22161030391278, -18.520261758649287 -18.368343839578138, -18.14461025146062 -18.506587066708033 C-17.68208263519465 -18.64386283535877, -17.219555018928677 -18.78113860400951, -16.946264386235413 -18.862249829261067 C-16.566116431725913 -18.949016119180623, -16.185968477216417 -19.035782409100182, -15.727593259676768 -19.140403561325773 C-15.272233781620837 -19.214022550372363, -14.816874303564907 -19.287641539418953, -14.49360465284788 -19.3399052695533 C-14.040125055244804 -19.383651900945058, -13.586645457641728 -19.427398532336817, -13.249369289623903 -19.45993515863156 C-12.994248758043987 -19.468116377517337, -12.739128226464072 -19.476297596403114, -12.000000000000005 -19.5 C-12.000000000000004 -19.5, -12.000000000000002 -19.5, -12 -19.5&quot; stroke=&quot;none&quot; stroke-width=&quot;0&quot; fill=&quot;#ECECFF&quot; style=&quot;&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M-12 -19.5 C-3.120636094952342 -19.5, 5.758727810095316 -19.5, 12 -19.5 M-12 -19.5 C-3.3261344568378526 -19.5, 5.347731086324295 -19.5, 12 -19.5 M12 -19.5 C12 -19.5, 11.999999999999998 -19.5, 11.999999999999998 -19.5 M12 -19.5 C12 -19.5, 11.999999999999998 -19.5, 11.999999999999998 -19.5 M11.999999999999998 -19.5 C12.361974882891175 -19.48839217004705, 12.72394976578235 -19.476784340094095, 13.2493692896239 -19.45993515863156 M11.999999999999998 -19.5 C12.38276130918383 -19.48772558981417, 12.765522618367662 -19.475451179628333, 13.2493692896239 -19.45993515863156 M13.2493692896239 -19.45993515863156 C13.62041276045801 -19.424141041245253, 13.99145623129212 -19.388346923858947, 14.493604652847864 -19.3399052695533 M13.2493692896239 -19.45993515863156 C13.675802932829404 -19.418797617933013, 14.10223657603491 -19.37766007723447, 14.493604652847864 -19.3399052695533 M14.493604652847864 -19.3399052695533 C14.796573703355044 -19.290923583027375, 15.099542753862224 -19.241941896501455, 15.727593259676757 -19.140403561325776 M14.493604652847864 -19.3399052695533 C14.936588752827427 -19.268287035661608, 15.379572852806989 -19.196668801769917, 15.727593259676757 -19.140403561325776 M15.727593259676757 -19.140403561325776 C15.971901504520085 -19.084641798700574, 16.216209749363415 -19.028880036075375, 16.94626438623539 -18.862249829261074 M15.727593259676757 -19.140403561325776 C16.042480082994185 -19.068532698732128, 16.357366906311615 -18.996661836138482, 16.94626438623539 -18.862249829261074 M16.94626438623539 -18.862249829261074 C17.354373136818072 -18.741125294294683, 17.76248188740075 -18.62000075932829, 18.144610251460602 -18.50658706670804 M16.94626438623539 -18.862249829261074 C17.317883761031574 -18.751955149491472, 17.689503135827756 -18.64166046972187, 18.144610251460602 -18.50658706670804 M18.144610251460602 -18.50658706670804 C18.444848792279828 -18.396096508311917, 18.745087333099054 -18.285605949915794, 19.317706595147794 -18.074876768247425 M18.144610251460602 -18.50658706670804 C18.422340064751502 -18.40437992811074, 18.7000698780424 -18.302172789513435, 19.317706595147794 -18.074876768247425 M19.317706595147794 -18.074876768247425 C19.626013476587598 -17.93839845743272, 19.934320358027403 -17.801920146618013, 20.46073291279238 -17.568892924097174 M19.317706595147794 -18.074876768247425 C19.660276014275873 -17.923231448360188, 20.002845433403948 -17.77158612847295, 20.46073291279238 -17.568892924097174 M20.46073291279238 -17.568892924097174 C20.880260210554493 -17.35002580157474, 21.2997875083166 -17.13115867905231, 21.568992264076783 -16.990714730406097 M20.46073291279238 -17.568892924097174 C20.843769690575908 -17.369062882474275, 21.226806468359435 -17.16923284085137, 21.568992264076783 -16.990714730406097 M21.568992264076783 -16.990714730406097 C21.831138011457462 -16.83180043780452, 22.093283758838137 -16.672886145202945, 22.637930573605697 -16.342718045390892 M21.568992264076783 -16.990714730406097 C21.809196768038525 -16.845101348506137, 22.04940127200027 -16.699487966606178, 22.637930573605697 -16.342718045390892 M22.637930573605697 -16.342718045390892 C22.85138193235857 -16.193823617685283, 23.064833291111444 -16.044929189979676, 23.663155344578712 -15.627565626425154 M22.637930573605697 -16.342718045390892 C22.941085008365942 -16.131250635046115, 23.24423944312619 -15.919783224701337, 23.663155344578712 -15.627565626425154 M23.663155344578712 -15.627565626425154 C24.012523304023297 -15.34895397583995, 24.361891263467886 -15.070342325254744, 24.64045370850187 -14.848196188198123 M23.663155344578712 -15.627565626425154 C23.977980407111627 -15.376501016901916, 24.29280546964454 -15.125436407378677, 24.64045370850187 -14.848196188198123 M24.64045370850187 -14.848196188198123 C24.89922250451914 -14.613189214302395, 25.157991300536416 -14.378182240406664, 25.565809736767985 -14.007812326905688 M24.64045370850187 -14.848196188198123 C24.904686886897117 -14.608226606806351, 25.16892006529237 -14.36825702541458, 25.565809736767985 -14.007812326905688 M25.565809736767985 -14.007812326905688 C25.838566383383473 -13.726168695538044, 26.111323029998957 -13.4445250641704, 26.435420942968648 -13.10986736009568 M25.565809736767985 -14.007812326905688 C25.90359844819914 -13.659017749384049, 26.241387159630296 -13.31022317186241, 26.435420942968648 -13.10986736009568 M26.435420942968648 -13.10986736009568 C26.69391445525629 -12.80622617186509, 26.95240796754393 -12.502584983634499, 27.245713908126582 -12.158051136245305 M26.435420942968648 -13.10986736009568 C26.64629492076064 -12.862162786711952, 26.857168898552633 -12.614458213328225, 27.245713908126582 -12.158051136245305 M27.245713908126582 -12.158051136245305 C27.456410610981614 -11.875736749284066, 27.66710731383665 -11.593422362322826, 27.993358964640635 -11.156274872382312 M27.245713908126582 -12.158051136245305 C27.39529933897151 -11.957620286426197, 27.544884769816434 -11.757189436607089, 27.993358964640635 -11.156274872382312 M27.993358964640635 -11.156274872382312 C28.184743890393637 -10.86225623237729, 28.37612881614664 -10.568237592372268, 28.675283878604247 -10.108655082055241 M27.993358964640635 -11.156274872382312 C28.22587029012684 -10.79907503840246, 28.458381615613042 -10.441875204422608, 28.675283878604247 -10.108655082055241 M28.675283878604247 -10.108655082055241 C28.839614021093094 -9.816870273834962, 29.00394416358194 -9.525085465614683, 29.2886864742735 -9.019496659696287 M28.675283878604247 -10.108655082055241 C28.84743192942276 -9.802988785946576, 29.019579980241275 -9.49732248983791, 29.2886864742735 -9.019496659696287 M29.2886864742735 -9.019496659696287 C29.40673507321734 -8.774366218154013, 29.524783672161185 -8.52923577661174, 29.83104614880834 -7.893275190886684 M29.2886864742735 -9.019496659696287 C29.488867408428362 -8.603816666737876, 29.689048342583227 -8.188136673779466, 29.83104614880834 -7.893275190886684 M29.83104614880834 -7.893275190886684 C30.018562822874994 -7.430105380553794, 30.206079496941644 -6.966935570220904, 30.300134229970325 -6.734618561215508 M29.83104614880834 -7.893275190886684 C30.008687939849313 -7.454496532545097, 30.186329730890286 -7.015717874203509, 30.300134229970325 -6.734618561215508 M30.300134229970325 -6.734618561215508 C30.431993035898696 -6.337480846606922, 30.563851841827066 -5.940343131998335, 30.69402313421488 -5.548287939305138 M30.300134229970325 -6.734618561215508 C30.447749914330814 -6.290023639287023, 30.595365598691306 -5.845428717358538, 30.69402313421488 -5.548287939305138 M30.69402313421488 -5.548287939305138 C30.790391351746983 -5.180794159605551, 30.886759569279086 -4.8133003799059635, 31.01109428754556 -4.339158212148133 M30.69402313421488 -5.548287939305138 C30.77688443235948 -5.232301897165991, 30.85974573050408 -4.916315855026844, 31.01109428754556 -4.339158212148133 M31.01109428754556 -4.339158212148133 C31.079628221852158 -3.9872509441359054, 31.148162156158754 -3.6353436761236777, 31.250044776581777 -3.1121979531509023 M31.01109428754556 -4.339158212148133 C31.0766996415316 -4.002288585126299, 31.142304995517637 -3.665418958104465, 31.250044776581777 -3.1121979531509023 M31.250044776581777 -3.1121979531509023 C31.301916898587038 -2.7098880181871836, 31.3537890205923 -2.3075780832234654, 31.409892702509367 -1.872449005199798 M31.250044776581777 -3.1121979531509023 C31.31022312009238 -2.645466604440711, 31.370401463602985 -2.1787352557305195, 31.409892702509367 -1.872449005199798 M31.409892702509367 -1.872449005199798 C31.431259924899532 -1.53963726916147, 31.4526271472897 -1.2068255331231421, 31.489981215913414 -0.6250057626472757 M31.409892702509367 -1.872449005199798 C31.43158980843772 -1.5344990667769973, 31.453286914366075 -1.1965491283541967, 31.489981215913414 -0.6250057626472757 M31.489981215913414 -0.6250057626472757 C31.489981215913414 -0.1796001970188139, 31.489981215913414 0.2658053686096479, 31.489981215913414 0.625005762647271 M31.489981215913414 -0.6250057626472757 C31.489981215913414 -0.21149438250506686, 31.489981215913414 0.20201699763714198, 31.489981215913414 0.625005762647271 M31.489981215913414 0.625005762647271 C31.468342069932167 0.962052928109467, 31.44670292395092 1.2991000935716628, 31.409892702509367 1.8724490051997846 M31.489981215913414 0.625005762647271 C31.462313945830505 1.0559458268070392, 31.434646675747597 1.486885890966807, 31.409892702509367 1.8724490051997846 M31.409892702509367 1.8724490051997846 C31.368118112669073 2.1964444746752685, 31.326343522828783 2.520439944150753, 31.250044776581777 3.1121979531508885 M31.409892702509367 1.8724490051997846 C31.37117458590085 2.1727390718585182, 31.332456469292335 2.4730291385172514, 31.250044776581777 3.1121979531508885 M31.250044776581777 3.1121979531508885 C31.199783451035522 3.3702792370960024, 31.149522125489263 3.6283605210411167, 31.01109428754556 4.339158212148129 M31.250044776581777 3.1121979531508885 C31.177069466730064 3.486910745902243, 31.10409415687835 3.861623538653598, 31.01109428754556 4.339158212148129 M31.01109428754556 4.339158212148129 C30.917040725054083 4.697825208999977, 30.8229871625626 5.056492205851827, 30.694023134214884 5.548287939305125 M31.01109428754556 4.339158212148129 C30.891296689144063 4.795998375460613, 30.77149909074257 5.252838538773096, 30.694023134214884 5.548287939305125 M30.694023134214884 5.548287939305125 C30.611170444617034 5.7978270395904605, 30.528317755019188 6.0473661398757965, 30.30013422997033 6.734618561215495 M30.694023134214884 5.548287939305125 C30.586851787660724 5.8710709596910755, 30.479680441106563 6.193853980077026, 30.30013422997033 6.734618561215495 M30.30013422997033 6.734618561215495 C30.129897523925823 7.155106516448232, 29.959660817881318 7.575594471680969, 29.831046148808344 7.893275190886679 M30.30013422997033 6.734618561215495 C30.15875875737806 7.083818711827215, 30.017383284785794 7.433018862438935, 29.831046148808344 7.893275190886679 M29.831046148808344 7.893275190886679 C29.66837587648824 8.23106349194562, 29.50570560416814 8.568851793004562, 29.288686474273504 9.019496659696284 M29.831046148808344 7.893275190886679 C29.6284105281305 8.314052392931938, 29.425774907452656 8.734829594977198, 29.288686474273504 9.019496659696284 M29.288686474273504 9.019496659696284 C29.10935355364367 9.33792041970191, 28.930020633013836 9.656344179707535, 28.67528387860425 10.108655082055236 M29.288686474273504 9.019496659696284 C29.093470262857878 9.36612281084968, 28.89825405144225 9.712748962003078, 28.67528387860425 10.108655082055236 M28.67528387860425 10.108655082055236 C28.457193522788796 10.443700434048248, 28.23910316697334 10.77874578604126, 27.99335896464064 11.156274872382301 M28.67528387860425 10.108655082055236 C28.465226257134585 10.431359997001923, 28.25516863566492 10.754064911948612, 27.99335896464064 11.156274872382301 M27.99335896464064 11.156274872382301 C27.7346140392517 11.502969500255857, 27.475869113862757 11.849664128129412, 27.245713908126582 12.158051136245302 M27.99335896464064 11.156274872382301 C27.72118471643359 11.520963569395647, 27.449010468226536 11.885652266408993, 27.245713908126582 12.158051136245302 M27.245713908126582 12.158051136245302 C27.0064423455565 12.439113128577725, 26.76717078298642 12.720175120910147, 26.43542094296866 13.10986736009567 M27.245713908126582 12.158051136245302 C27.00349415514418 12.442576240792825, 26.761274402161774 12.727101345340346, 26.43542094296866 13.10986736009567 M26.43542094296866 13.10986736009567 C26.223315818317136 13.328883315452961, 26.01121069366561 13.547899270810253, 25.56580973676799 14.007812326905684 M26.43542094296866 13.10986736009567 C26.149700504320954 13.4048971710837, 25.863980065673246 13.69992698207173, 25.56580973676799 14.007812326905684 M25.56580973676799 14.007812326905684 C25.34080326306986 14.212157252973267, 25.11579678937173 14.41650217904085, 24.640453708501887 14.848196188198111 M25.56580973676799 14.007812326905684 C25.329668404378367 14.222269637024661, 25.093527071988746 14.436726947143638, 24.640453708501887 14.848196188198111 M24.640453708501887 14.848196188198111 C24.256064251199838 15.154736551363444, 23.87167479389779 15.461276914528776, 23.663155344578715 15.627565626425152 M24.640453708501887 14.848196188198111 C24.38938372879167 15.048417815764255, 24.138313749081455 15.248639443330397, 23.663155344578715 15.627565626425152 M23.663155344578715 15.627565626425152 C23.326183359593653 15.862622695868609, 22.989211374608587 16.097679765312066, 22.637930573605708 16.34271804539089 M23.663155344578715 15.627565626425152 C23.284085030098353 15.891988668117216, 22.90501471561799 16.15641170980928, 22.637930573605708 16.34271804539089 M22.637930573605708 16.34271804539089 C22.390252329429934 16.492862052529166, 22.14257408525416 16.643006059667442, 21.568992264076787 16.990714730406093 M22.637930573605708 16.34271804539089 C22.399016579461964 16.487549112655298, 22.16010258531822 16.632380179919707, 21.568992264076787 16.990714730406093 M21.568992264076787 16.990714730406093 C21.132181477059614 17.21859863820229, 20.695370690042438 17.44648254599849, 20.460732912792388 17.56889292409717 M21.568992264076787 16.990714730406093 C21.223008054751375 17.171214470797697, 20.877023845425963 17.351714211189304, 20.460732912792388 17.56889292409717 M20.460732912792388 17.56889292409717 C20.228183717894005 17.671835554351915, 19.995634522995623 17.77477818460666, 19.317706595147804 18.07487676824742 M20.460732912792388 17.56889292409717 C20.16805668705926 17.69845200729746, 19.875380461326134 17.828011090497746, 19.317706595147804 18.07487676824742 M19.317706595147804 18.07487676824742 C18.936466826986415 18.215176527072597, 18.555227058825025 18.355476285897772, 18.144610251460616 18.506587066708033 M19.317706595147804 18.07487676824742 C18.94083713854749 18.213568212019403, 18.563967681947176 18.352259655791386, 18.144610251460616 18.506587066708033 M18.144610251460616 18.506587066708033 C17.790646611592795 18.611641617027743, 17.436682971724974 18.716696167347454, 16.946264386235413 18.86224982926107 M18.144610251460616 18.506587066708033 C17.721743642287773 18.63209165663841, 17.29887703311493 18.75759624656878, 16.946264386235413 18.86224982926107 M16.946264386235413 18.86224982926107 C16.56903382361566 18.948350243519553, 16.191803260995904 19.034450657778038, 15.727593259676766 19.140403561325773 M16.946264386235413 18.86224982926107 C16.506385326049877 18.962649354269292, 16.066506265864337 19.06304887927751, 15.727593259676766 19.140403561325773 M15.727593259676766 19.140403561325773 C15.268773935366543 19.214581911483247, 14.809954611056318 19.288760261640725, 14.493604652847878 19.3399052695533 M15.727593259676766 19.140403561325773 C15.435004203618313 19.187707090847287, 15.142415147559857 19.235010620368797, 14.493604652847878 19.3399052695533 M14.493604652847878 19.3399052695533 C14.003135222711798 19.387220265602735, 13.512665792575717 19.434535261652172, 13.2493692896239 19.45993515863156 M14.493604652847878 19.3399052695533 C14.069612879874658 19.380807245967315, 13.645621106901437 19.421709222381327, 13.2493692896239 19.45993515863156 M13.2493692896239 19.45993515863156 C12.87755310787981 19.471858579883797, 12.505736926135722 19.48378200113604, 12.000000000000004 19.5 M13.2493692896239 19.45993515863156 C12.948907506606318 19.46957038319955, 12.648445723588736 19.479205607767543, 12.000000000000004 19.5 M12.000000000000004 19.5 C12.000000000000002 19.5, 12.000000000000002 19.5, 12 19.5 M12.000000000000004 19.5 C12.000000000000002 19.5, 12.000000000000002 19.5, 12 19.5 M12 19.5 C4.969511941793217 19.5, -2.060976116413565 19.5, -11.999999999999996 19.5 M12 19.5 C5.8477599298144005 19.5, -0.30448014037119897 19.5, -11.999999999999996 19.5 M-11.999999999999996 19.5 C-12.450617366623701 19.485549578125873, -12.901234733247406 19.471099156251746, -13.249369289623893 19.45993515863156 M-11.999999999999996 19.5 C-12.26372774500528 19.491542764532596, -12.527455490010565 19.483085529065193, -13.249369289623893 19.45993515863156 M-13.249369289623893 19.45993515863156 C-13.594518171467826 19.426639061102335, -13.93966705331176 19.393342963573115, -14.493604652847871 19.3399052695533 M-13.249369289623893 19.45993515863156 C-13.617678010740166 19.424404859261518, -13.985986731856437 19.388874559891473, -14.493604652847871 19.3399052695533 M-14.493604652847871 19.3399052695533 C-14.828707989942153 19.285728360777085, -15.163811327036434 19.231551452000875, -15.727593259676759 19.140403561325773 M-14.493604652847871 19.3399052695533 C-14.835285803108315 19.284664910956085, -15.176966953368758 19.22942455235887, -15.727593259676759 19.140403561325773 M-15.727593259676759 19.140403561325773 C-16.026824289741032 19.07210603137856, -16.326055319805306 19.003808501431347, -16.946264386235388 18.862249829261074 M-15.727593259676759 19.140403561325773 C-16.16887363919372 19.039684194324618, -16.610154018710684 18.938964827323463, -16.946264386235388 18.862249829261074 M-16.946264386235388 18.862249829261074 C-17.311582126036065 18.75382544168018, -17.676899865836745 18.64540105409929, -18.14461025146059 18.506587066708043 M-16.946264386235388 18.862249829261074 C-17.231414006595923 18.777618918718968, -17.516563626956454 18.692988008176865, -18.14461025146059 18.506587066708043 M-18.14461025146059 18.506587066708043 C-18.400540806370522 18.412402256705075, -18.65647136128045 18.318217446702104, -19.317706595147797 18.074876768247425 M-18.14461025146059 18.506587066708043 C-18.525519217210967 18.366409046228025, -18.906428182961342 18.226231025748007, -19.317706595147797 18.074876768247425 M-19.317706595147797 18.074876768247425 C-19.565634155921224 17.965126591602814, -19.81356171669465 17.8553764149582, -20.46073291279238 17.568892924097174 M-19.317706595147797 18.074876768247425 C-19.702324972254093 17.90461762200125, -20.086943349360393 17.734358475755077, -20.46073291279238 17.568892924097174 M-20.46073291279238 17.568892924097174 C-20.726853324693575 17.43005807566658, -20.992973736594774 17.291223227235985, -21.56899226407678 16.990714730406097 M-20.46073291279238 17.568892924097174 C-20.862363842321024 17.35936232541897, -21.263994771849664 17.149831726740764, -21.56899226407678 16.990714730406097 M-21.56899226407678 16.990714730406097 C-21.826307259978133 16.834728867739933, -22.08362225587949 16.67874300507377, -22.637930573605686 16.3427180453909 M-21.56899226407678 16.990714730406097 C-21.857364157161633 16.81590199415671, -22.145736050246487 16.64108925790732, -22.637930573605686 16.3427180453909 M-22.637930573605686 16.3427180453909 C-22.906886587721186 16.155105972862128, -23.175842601836685 15.967493900333357, -23.663155344578712 15.627565626425156 M-22.637930573605686 16.3427180453909 C-22.86525663509857 16.184145225680062, -23.092582696591457 16.02557240596922, -23.663155344578712 15.627565626425156 M-23.663155344578712 15.627565626425156 C-23.978277488055433 15.376264102754886, -24.293399631532157 15.124962579084618, -24.64045370850187 14.848196188198125 M-23.663155344578712 15.627565626425156 C-23.982487931834743 15.372906385885502, -24.301820519090775 15.118247145345848, -24.64045370850187 14.848196188198125 M-24.64045370850187 14.848196188198125 C-24.901655287173014 14.610979825464051, -25.16285686584416 14.373763462729976, -25.565809736767974 14.007812326905697 M-24.64045370850187 14.848196188198125 C-24.901949710053092 14.610712438394366, -25.163445711604314 14.373228688590608, -25.565809736767974 14.007812326905697 M-25.565809736767974 14.007812326905697 C-25.91171692092692 13.650634759753608, -26.257624105085867 13.293457192601519, -26.435420942968655 13.109867360095677 M-25.565809736767974 14.007812326905697 C-25.851916496462465 13.712383607719316, -26.138023256156956 13.416954888532933, -26.435420942968655 13.109867360095677 M-26.435420942968655 13.109867360095677 C-26.685188779311606 12.816475847334743, -26.934956615654556 12.523084334573811, -27.24571390812658 12.158051136245307 M-26.435420942968655 13.109867360095677 C-26.62879480886277 12.882719413931769, -26.822168674756888 12.655571467767858, -27.24571390812658 12.158051136245307 M-27.24571390812658 12.158051136245307 C-27.447677814659123 11.887437900782093, -27.649641721191667 11.616824665318877, -27.993358964640635 11.156274872382316 M-27.24571390812658 12.158051136245307 C-27.419317650817995 11.925437936665128, -27.59292139350941 11.69282473708495, -27.993358964640635 11.156274872382316 M-27.993358964640635 11.156274872382316 C-28.152017402655577 10.91253290583539, -28.31067584067052 10.668790939288463, -28.675283878604244 10.108655082055249 M-27.993358964640635 11.156274872382316 C-28.164787511465832 10.892914589448482, -28.336216058291026 10.629554306514649, -28.675283878604244 10.108655082055249 M-28.675283878604244 10.108655082055249 C-28.916853813381305 9.679723201250152, -29.15842374815837 9.250791320445057, -29.2886864742735 9.019496659696289 M-28.675283878604244 10.108655082055249 C-28.816559099162298 9.857806622287086, -28.957834319720355 9.606958162518923, -29.2886864742735 9.019496659696289 M-29.2886864742735 9.019496659696289 C-29.45525535634577 8.673612812070088, -29.62182423841804 8.327728964443887, -29.83104614880834 7.893275190886686 M-29.2886864742735 9.019496659696289 C-29.473773188896523 8.635160136560309, -29.65885990351954 8.250823613424329, -29.83104614880834 7.893275190886686 M-29.83104614880834 7.893275190886686 C-29.955100957935073 7.586857413907088, -30.079155767061806 7.2804396369274915, -30.300134229970325 6.73461856121551 M-29.83104614880834 7.893275190886686 C-29.983871929506055 7.515792557877866, -30.13669771020377 7.138309924869047, -30.300134229970325 6.73461856121551 M-30.300134229970325 6.73461856121551 C-30.410607817986882 6.401889715685545, -30.52108140600344 6.0691608701555815, -30.69402313421488 5.5482879393051325 M-30.300134229970325 6.73461856121551 C-30.39254478994107 6.456292678206849, -30.484955349911814 6.17796679519819, -30.69402313421488 5.5482879393051325 M-30.69402313421488 5.5482879393051325 C-30.769329011266585 5.261113992333407, -30.844634888318293 4.973940045361683, -31.011094287545557 4.339158212148136 M-30.69402313421488 5.5482879393051325 C-30.786155355424953 5.196947849473874, -30.87828757663502 4.845607759642616, -31.011094287545557 4.339158212148136 M-31.011094287545557 4.339158212148136 C-31.099068592660352 3.887428748759647, -31.187042897775143 3.4356992853711583, -31.250044776581777 3.112197953150904 M-31.011094287545557 4.339158212148136 C-31.062874436754672 4.073278089697745, -31.114654585963788 3.807397967247355, -31.250044776581777 3.112197953150904 M-31.250044776581777 3.112197953150904 C-31.2919405964207 2.787262247745593, -31.33383641625963 2.462326542340282, -31.409892702509364 1.872449005199809 M-31.250044776581777 3.112197953150904 C-31.299186675907798 2.73106308614392, -31.34832857523382 2.3499282191369355, -31.409892702509364 1.872449005199809 M-31.409892702509364 1.872449005199809 C-31.439841158724615 1.4059776256885042, -31.469789614939867 0.9395062461771995, -31.489981215913414 0.6250057626472781 M-31.409892702509364 1.872449005199809 C-31.439230650342864 1.415486786527767, -31.46856859817637 0.9585245678557248, -31.489981215913414 0.6250057626472781 M-31.489981215913414 0.6250057626472781 C-31.489981215913414 0.2017311499385695, -31.489981215913414 -0.22154346277013914, -31.489981215913414 -0.6250057626472687 M-31.489981215913414 0.6250057626472781 C-31.489981215913414 0.2100581773336313, -31.489981215913414 -0.20488940798001554, -31.489981215913414 -0.6250057626472687 M-31.489981215913414 -0.6250057626472687 C-31.464470594850162 -1.0223542775100967, -31.43895997378691 -1.4197027923729246, -31.409892702509367 -1.8724490051997822 M-31.489981215913414 -0.6250057626472687 C-31.47051330701996 -0.9282341578760345, -31.451045398126507 -1.2314625531048002, -31.409892702509367 -1.8724490051997822 M-31.409892702509367 -1.8724490051997822 C-31.369264932007304 -2.18754997035305, -31.32863716150524 -2.502650935506318, -31.250044776581777 -3.112197953150895 M-31.409892702509367 -1.8724490051997822 C-31.349603854943958 -2.3400374015375642, -31.289315007378548 -2.8076257978753465, -31.250044776581777 -3.112197953150895 M-31.250044776581777 -3.112197953150895 C-31.16068977935972 -3.571016978700809, -31.07133478213766 -4.029836004250723, -31.01109428754556 -4.339158212148126 M-31.250044776581777 -3.112197953150895 C-31.193135781168976 -3.4044136168751904, -31.136226785756175 -3.6966292805994856, -31.01109428754556 -4.339158212148126 M-31.01109428754556 -4.339158212148126 C-30.89131169930503 -4.795941135211395, -30.771529111064506 -5.252724058274664, -30.694023134214884 -5.548287939305123 M-31.01109428754556 -4.339158212148126 C-30.943242783374682 -4.5979054045796195, -30.8753912792038 -4.856652597011114, -30.694023134214884 -5.548287939305123 M-30.694023134214884 -5.548287939305123 C-30.553383543588716 -5.971871978395427, -30.412743952962547 -6.3954560174857304, -30.300134229970332 -6.734618561215485 M-30.694023134214884 -5.548287939305123 C-30.58162767700916 -5.886805148624592, -30.46923221980343 -6.225322357944061, -30.300134229970332 -6.734618561215485 M-30.300134229970332 -6.734618561215485 C-30.132244699790938 -7.149308946681838, -29.964355169611544 -7.5639993321481915, -29.831046148808344 -7.893275190886676 M-30.300134229970332 -6.734618561215485 C-30.18942316364506 -7.008077035491766, -30.078712097319784 -7.281535509768046, -29.831046148808344 -7.893275190886676 M-29.831046148808344 -7.893275190886676 C-29.688079402622023 -8.190148698340899, -29.545112656435702 -8.487022205795123, -29.288686474273504 -9.019496659696282 M-29.831046148808344 -7.893275190886676 C-29.67307791136779 -8.221299615910805, -29.51510967392724 -8.549324040934934, -29.288686474273504 -9.019496659696282 M-29.288686474273504 -9.019496659696282 C-29.062538617549105 -9.42104507926413, -28.836390760824706 -9.82259349883198, -28.675283878604247 -10.108655082055243 M-29.288686474273504 -9.019496659696282 C-29.12637565852516 -9.307695948809792, -28.964064842776818 -9.595895237923305, -28.675283878604247 -10.108655082055243 M-28.675283878604247 -10.108655082055243 C-28.49893311854915 -10.379577206309525, -28.322582358494053 -10.65049933056381, -27.99335896464064 -11.156274872382308 M-28.675283878604247 -10.108655082055243 C-28.46743903764632 -10.427960571921135, -28.259594196688393 -10.747266061787029, -27.99335896464064 -11.156274872382308 M-27.99335896464064 -11.156274872382308 C-27.73482854271561 -11.502682085155888, -27.47629812079058 -11.849089297929469, -27.245713908126586 -12.158051136245302 M-27.99335896464064 -11.156274872382308 C-27.768381728793457 -11.457723872569712, -27.543404492946273 -11.759172872757114, -27.245713908126586 -12.158051136245302 M-27.245713908126586 -12.158051136245302 C-27.03224253961883 -12.408806752559482, -26.81877117111108 -12.659562368873662, -26.435420942968662 -13.10986736009567 M-27.245713908126586 -12.158051136245302 C-27.00882161072333 -12.436318308328746, -26.77192931332008 -12.71458548041219, -26.435420942968662 -13.10986736009567 M-26.435420942968662 -13.10986736009567 C-26.23478787450625 -13.317037475564373, -26.034154806043837 -13.524207591033077, -25.565809736767996 -14.007812326905677 M-26.435420942968662 -13.10986736009567 C-26.206471855199055 -13.346276090287475, -25.977522767429445 -13.582684820479278, -25.565809736767996 -14.007812326905677 M-25.565809736767996 -14.007812326905677 C-25.368156564110954 -14.187315708696426, -25.170503391453916 -14.366819090487176, -24.640453708501887 -14.848196188198107 M-25.565809736767996 -14.007812326905677 C-25.323201739771186 -14.228142490722334, -25.080593742774372 -14.44847265453899, -24.640453708501887 -14.848196188198107 M-24.640453708501887 -14.848196188198107 C-24.428802698174593 -15.0169822366642, -24.2171516878473 -15.185768285130292, -23.66315534457872 -15.627565626425149 M-24.640453708501887 -14.848196188198107 C-24.383143691715606 -15.053394079278053, -24.125833674929325 -15.258591970357998, -23.66315534457872 -15.627565626425149 M-23.66315534457872 -15.627565626425149 C-23.412083736936673 -15.802702311201518, -23.161012129294626 -15.977838995977889, -22.63793057360571 -16.342718045390885 M-23.66315534457872 -15.627565626425149 C-23.41695728037848 -15.79930273826881, -23.17075921617824 -15.97103985011247, -22.63793057360571 -16.342718045390885 M-22.63793057360571 -16.342718045390885 C-22.230940974282017 -16.589437532237273, -21.82395137495832 -16.83615701908366, -21.56899226407679 -16.99071473040609 M-22.63793057360571 -16.342718045390885 C-22.313929063218872 -16.539129665031606, -21.989927552832036 -16.73554128467233, -21.56899226407679 -16.99071473040609 M-21.56899226407679 -16.99071473040609 C-21.15459782194731 -17.206904045432733, -20.74020337981783 -17.423093360459372, -20.460732912792388 -17.56889292409717 M-21.56899226407679 -16.99071473040609 C-21.249979240231713 -17.157143620608473, -20.930966216386636 -17.323572510810855, -20.460732912792388 -17.56889292409717 M-20.460732912792388 -17.56889292409717 C-20.17966072990153 -17.693315241752885, -19.898588547010675 -17.817737559408602, -19.317706595147804 -18.07487676824742 M-20.460732912792388 -17.56889292409717 C-20.229710378490676 -17.671159746992547, -19.99868784418896 -17.773426569887924, -19.317706595147804 -18.07487676824742 M-19.317706595147804 -18.07487676824742 C-18.853342089795337 -18.245767198755562, -18.388977584442866 -18.416657629263703, -18.14461025146062 -18.506587066708033 M-19.317706595147804 -18.07487676824742 C-19.014374008753354 -18.18650596401627, -18.7110414223589 -18.29813515978512, -18.14461025146062 -18.506587066708033 M-18.14461025146062 -18.506587066708033 C-17.780863525509552 -18.61454518562478, -17.417116799558485 -18.722503304541533, -16.946264386235413 -18.862249829261067 M-18.14461025146062 -18.506587066708033 C-17.69955129715245 -18.638678228184574, -17.25449234284428 -18.770769389661115, -16.946264386235413 -18.862249829261067 M-16.946264386235413 -18.862249829261067 C-16.537924870437102 -18.955450659077666, -16.129585354638795 -19.048651488894265, -15.727593259676768 -19.140403561325773 M-16.946264386235413 -18.862249829261067 C-16.54224606729382 -18.954464374093565, -16.13822774835223 -19.046678918926062, -15.727593259676768 -19.140403561325773 M-15.727593259676768 -19.140403561325773 C-15.334527074014964 -19.203951453949777, -14.941460888353161 -19.267499346573782, -14.49360465284788 -19.3399052695533 M-15.727593259676768 -19.140403561325773 C-15.364383523640873 -19.199124494714486, -15.00117378760498 -19.2578454281032, -14.49360465284788 -19.3399052695533 M-14.49360465284788 -19.3399052695533 C-14.167541516905766 -19.37136018812934, -13.841478380963652 -19.402815106705383, -13.249369289623903 -19.45993515863156 M-14.49360465284788 -19.3399052695533 C-14.153430455425443 -19.372721465259314, -13.813256258003005 -19.405537660965326, -13.249369289623903 -19.45993515863156 M-13.249369289623903 -19.45993515863156 C-12.895436225966288 -19.471285103094143, -12.541503162308674 -19.482635047556727, -12.000000000000005 -19.5 M-13.249369289623903 -19.45993515863156 C-12.87299610796247 -19.472004714001486, -12.496622926301036 -19.484074269371412, -12.000000000000005 -19.5 M-12.000000000000005 -19.5 C-12.000000000000004 -19.5, -12.000000000000002 -19.5, -12 -19.5 M-12.000000000000005 -19.5 C-12.000000000000004 -19.5, -12.000000000000004 -19.5, -12 -19.5&quot; stroke=&quot;#9370DB&quot; stroke-width=&quot;1.3&quot; fill=&quot;none&quot; stroke-dasharray=&quot;0 0&quot; style=&quot;&quot;&gt;&lt;/path&gt;&lt;/g&gt;&lt;g class=&quot;label&quot; style=&quot;&quot; transform=&quot;translate(-19.125, -12)&quot;&gt;&lt;rect&gt;&lt;/rect&gt;&lt;foreignObject width=&quot;38.25&quot; height=&quot;24&quot;&gt;&lt;div xmlns=&quot;http://www.w3.org/1999/xhtml&quot; style=&quot;display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;&quot;&gt;&lt;span class=&quot;nodeLabel&quot;&gt;&lt;p&gt;Done&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;/g&gt;&lt;/g&gt;&lt;/g&gt;&lt;defs&gt;&lt;filter id=&quot;mermaid-1-drop-shadow&quot; height=&quot;130%&quot; width=&quot;130%&quot;&gt;&lt;feDropShadow dx=&quot;4&quot; dy=&quot;4&quot; stdDeviation=&quot;0&quot; flood-opacity=&quot;0.06&quot; flood-color=&quot;#000000&quot;&gt;&lt;/feDropShadow&gt;&lt;/filter&gt;&lt;/defs&gt;&lt;defs&gt;&lt;filter id=&quot;mermaid-1-drop-shadow-small&quot; height=&quot;150%&quot; width=&quot;150%&quot;&gt;&lt;feDropShadow dx=&quot;2&quot; dy=&quot;2&quot; stdDeviation=&quot;0&quot; flood-opacity=&quot;0.06&quot; flood-color=&quot;#000000&quot;&gt;&lt;/feDropShadow&gt;&lt;/filter&gt;&lt;/defs&gt;&lt;/svg&gt;&lt;/div&gt;
&lt;hr&gt;
&lt;h2 id=&quot;build-it&quot;&gt;Build it&lt;/h2&gt;
&lt;h3 id=&quot;1-the-trigger&quot;&gt;1. The trigger&lt;/h3&gt;
&lt;p&gt;Add the Dataverse trigger &lt;strong&gt;When a row is added, modified or deleted&lt;/strong&gt; and configure it:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Change type:&lt;/strong&gt; Added&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Table name:&lt;/strong&gt; Event Registrations &lt;em&gt;(&lt;code&gt;msevtmgt_eventregistration&lt;/code&gt;)&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Scope:&lt;/strong&gt; Organization&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The &lt;strong&gt;Scope&lt;/strong&gt; is the part people get wrong. With &lt;strong&gt;User&lt;/strong&gt; scope the flow only fires for registrations &lt;em&gt;you&lt;/em&gt; own, useless here. &lt;strong&gt;Organization&lt;/strong&gt; means it catches every registration in the environment, which is what we want when this runs under a service account.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;💡 If you want to limit the events in which this happen I would recommend &lt;strong&gt;creating a field on the event table&lt;/strong&gt; which will activate or deactivate the generation of leads. This can also be added as a filter in the &lt;code&gt;Filter rows&lt;/code&gt; option in a trigger.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;figure class=&quot;prose-figure&quot;&gt;&lt;img __ASTRO_IMAGE_=&quot;{&amp;#x22;src&amp;#x22;:&amp;#x22;./image2.png&amp;#x22;,&amp;#x22;alt&amp;#x22;:&amp;#x22;trigger with Change type=Added, Table=Event Registrations, Scope=Organization&amp;#x22;,&amp;#x22;title&amp;#x22;:&amp;#x22;Pick &amp;#x27;Event Registrations&amp;#x27; as the table and set the scope to &amp;#x27;Organization&amp;#x27;, otherwise you&amp;#x27;ll wonder why it never triggers for anyone but you.&amp;#x22;,&amp;#x22;index&amp;#x22;:0}&quot;&gt;&lt;figcaption class=&quot;prose-figure__caption&quot;&gt;Pick &apos;Event Registrations&apos; as the table and set the scope to &apos;Organization&apos;, otherwise you&apos;ll wonder why it never triggers for anyone but you.&lt;/figcaption&gt;&lt;/figure&gt;
&lt;h3 id=&quot;2-get-the-contact&quot;&gt;2. Get the Contact&lt;/h3&gt;
&lt;p&gt;Add &lt;strong&gt;Get a row by ID&lt;/strong&gt; (Dataverse):&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Table name:&lt;/strong&gt; Contacts&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Row ID:&lt;/strong&gt; the contact from the registration. In the expression editor:&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;code&gt;triggerOutputs()?[&apos;body/_msevtmgt_contactid_value&apos;]&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;The registration stores the contact as a lookup, and &lt;code&gt;_..._value&lt;/code&gt; is how you read a lookup’s GUID straight off the trigger output. We need the full contact record next, mainly for the &lt;strong&gt;email&lt;/strong&gt; and the &lt;strong&gt;name&lt;/strong&gt;.&lt;/p&gt;
&lt;h3 id=&quot;3-find-an-existing-open-lead&quot;&gt;3. Find an existing open Lead&lt;/h3&gt;
&lt;p&gt;Add &lt;strong&gt;List rows&lt;/strong&gt; (Dataverse) on the &lt;strong&gt;Leads&lt;/strong&gt; table and open &lt;strong&gt;Show advanced options&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Filter rows:&lt;/strong&gt;
&lt;code&gt;emailaddress1 eq &apos;@{outputs(&apos;Get_Contact&apos;)?[&apos;body/emailaddress1&apos;]}&apos; and statecode eq 0&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Sort by:&lt;/strong&gt; &lt;code&gt;createdon asc&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Row count:&lt;/strong&gt; &lt;code&gt;1&lt;/code&gt;
Read it left to right: same email &lt;strong&gt;and&lt;/strong&gt; still active. We sort by &lt;strong&gt;creation date ascending&lt;/strong&gt; and take &lt;strong&gt;one&lt;/strong&gt;, so if there are several matches we deterministically grab the &lt;em&gt;oldest&lt;/em&gt; one (the original) instead of a random duplicate. But here the &lt;strong&gt;logic should be adapted to your organization way of handling leads&lt;/strong&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;figure class=&quot;prose-figure&quot;&gt;&lt;img __ASTRO_IMAGE_=&quot;{&amp;#x22;src&amp;#x22;:&amp;#x22;./image3.png&amp;#x22;,&amp;#x22;alt&amp;#x22;:&amp;#x22;List rows with Filter rows, Sort by, and Row count filled in under advanced options&amp;#x22;,&amp;#x22;title&amp;#x22;:&amp;#x22;Mind the single quotes around the email in the filter.&amp;#x22;,&amp;#x22;index&amp;#x22;:0}&quot;&gt;&lt;figcaption class=&quot;prose-figure__caption&quot;&gt;Mind the single quotes around the email in the filter.&lt;/figcaption&gt;&lt;/figure&gt;
&lt;h3 id=&quot;4-the-condition&quot;&gt;4. The condition&lt;/h3&gt;
&lt;p&gt;Add a &lt;strong&gt;Condition&lt;/strong&gt;. On the left side, use this expression (not dynamic content, type it in the expression editor):&lt;/p&gt;
&lt;p&gt;&lt;code&gt;length(outputs(&apos;Retrieve_Leads_with_same_email&apos;)?[&apos;body/value&apos;])&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Operator &lt;strong&gt;is greater than&lt;/strong&gt;, right side &lt;code&gt;0&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;List rows&lt;/code&gt; always returns an array under &lt;code&gt;body/value&lt;/code&gt;. &lt;code&gt;length()&lt;/code&gt; counts it: greater than zero means we found a Lead. This is cleaner and faster than looping.&lt;/p&gt;
&lt;h3 id=&quot;5a-if-yes--link-the-existing-lead&quot;&gt;5a. If YES → link the existing Lead&lt;/h3&gt;
&lt;p&gt;In the &lt;strong&gt;If yes&lt;/strong&gt; branch, add &lt;strong&gt;Update a row&lt;/strong&gt; (Dataverse):&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Table name:&lt;/strong&gt; Leads&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Row ID:&lt;/strong&gt;
&lt;code&gt;first(outputs(&apos;Retrieve_Leads_with_same_email&apos;)?[&apos;body/value&apos;])?[&apos;leadid&apos;]&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Parent Contact for lead (Contacts):&lt;/strong&gt; set this lookup to the contact:
&lt;code&gt;/contacts/@{outputs(&apos;Get_Contact&apos;)?[&apos;body/contactid&apos;]}&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Two small things trip people up here. First, &lt;code&gt;first(...)&lt;/code&gt; grabs the single Lead out of that array (we asked for one, but it’s still an array). Second, a &lt;strong&gt;lookup&lt;/strong&gt; in &lt;em&gt;Update a row&lt;/em&gt; isn’t a plain GUID, you bind it as a path: &lt;code&gt;/contacts/&amp;#x3C;guid&gt;&lt;/code&gt;. The field is &lt;strong&gt;Parent Contact for lead&lt;/strong&gt;, which is the standard Lead → Contact relationship.&lt;/p&gt;
&lt;p&gt;&lt;img __ASTRO_IMAGE_=&quot;{&amp;#x22;src&amp;#x22;:&amp;#x22;./image4.png&amp;#x22;,&amp;#x22;alt&amp;#x22;:&amp;#x22;Row ID using first(), Parent Contact for lead bound to /contacts/...&amp;#x22;,&amp;#x22;index&amp;#x22;:0}&quot;&gt;
&lt;em&gt;The &lt;strong&gt;Row ID&lt;/strong&gt; uses &lt;code&gt;first()&lt;/code&gt; to pull the one Lead from the list, and &lt;strong&gt;Parent Contact for lead&lt;/strong&gt; is bound as &lt;code&gt;/contacts/&amp;#x3C;contactid&gt;&lt;/code&gt;, not just the raw GUID.&lt;/em&gt;&lt;/p&gt;
&lt;h3 id=&quot;5b-if-no--create-a-new-lead&quot;&gt;5b. If NO → create a new Lead&lt;/h3&gt;
&lt;p&gt;The &lt;strong&gt;If no&lt;/strong&gt; branch has two actions. Order matters: get the event &lt;strong&gt;first&lt;/strong&gt;, then create the Lead.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Get a row by ID&lt;/strong&gt; (Dataverse) - &lt;em&gt;Get Event&lt;/em&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Table name:&lt;/strong&gt; Events &lt;em&gt;(&lt;code&gt;msevtmgt_events&lt;/code&gt;)&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Row ID:&lt;/strong&gt; &lt;code&gt;triggerOutputs()?[&apos;body/_msevtmgt_eventid_value&apos;]&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Add a new row&lt;/strong&gt; (Dataverse) - &lt;em&gt;Create new Lead&lt;/em&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Topic&lt;/strong&gt; &lt;em&gt;(&lt;code&gt;subject&lt;/code&gt;)&lt;/em&gt; → the event’s name: &lt;code&gt;outputs(&apos;Get_Event&apos;)?[&apos;body/msevtmgt_name&apos;]&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Email&lt;/strong&gt; → &lt;code&gt;outputs(&apos;Get_Contact&apos;)?[&apos;body/emailaddress1&apos;]&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Last Name&lt;/strong&gt; → &lt;code&gt;outputs(&apos;Get_Contact&apos;)?[&apos;body/lastname&apos;]&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;First Name&lt;/strong&gt; → &lt;code&gt;outputs(&apos;Get_Contact&apos;)?[&apos;body/firstname&apos;]&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Parent Contact for lead (Contacts)&lt;/strong&gt; → &lt;code&gt;/contacts/@{outputs(&apos;Get_Contact&apos;)?[&apos;body/contactid&apos;]}&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Originating Event (Events)&lt;/strong&gt; → &lt;code&gt;/msevtmgt_events/@{triggerOutputs()?[&apos;body/_msevtmgt_eventid_value&apos;]}&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;That &lt;strong&gt;Originating Event&lt;/strong&gt; field is key. It’s the native CIJ field on the Lead, so once you set it, the platform itself knows this Lead came from this event and it shows up in the event’s insights without any extra work from you.&lt;/p&gt;
&lt;p&gt;&lt;img __ASTRO_IMAGE_=&quot;{&amp;#x22;src&amp;#x22;:&amp;#x22;./image5.png&amp;#x22;,&amp;#x22;alt&amp;#x22;:&amp;#x22;Create a new row on Leads, with Topic, Email, First/Last name, Parent Contact, and Originating Event lookups&amp;#x22;,&amp;#x22;index&amp;#x22;:0}&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Both lookups &lt;strong&gt;Parent Contact for lead&lt;/strong&gt; and &lt;strong&gt;Originating Event&lt;/strong&gt; are bound as paths (&lt;code&gt;/contacts/...&lt;/code&gt; and &lt;code&gt;/msevtmgt_events/...&lt;/code&gt;). The &lt;strong&gt;Topic&lt;/strong&gt; carries the event’s name so Sales instantly sees the context.&lt;/em&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;things-id-watch-out-for&quot;&gt;Things I’d watch out for&lt;/h2&gt;
&lt;p&gt;A few pointers before you flip this on for real:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Test in a sandbox first.&lt;/strong&gt; Register a couple of test contacts one brand new, one who already has an open Lead, and confirm both paths behave (create vs. link).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Run it as a service account&lt;/strong&gt; with the right Dataverse privileges (create/update on Leads and Connections), not under your personal user. Not sure how to do it? It’s pretty well explained in this article: &lt;a href=&quot;https://www.powercommunity.com/power-automate-with-a-service-principal-app-registration/&quot;&gt;Power Automate with a Service Principal&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Wrap it in a solution&lt;/strong&gt; and use a &lt;strong&gt;connection reference&lt;/strong&gt; so you’re not rebuilding connections when you ship to Prod. The exported flow already does this.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Lead matching logic.&lt;/strong&gt; This example uses the oldest open Lead with the same email address, but adapt this to your organization’s lead process. In some setups, you may want to match by campaign, event, business unit, owner, or source instead.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Bulk registrations.&lt;/strong&gt; This fires once per registration row. If you ever import registrations in big batches, keep an eye on your flow run volume.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&quot;conclusion&quot;&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;Customer Insights Journeys does a good job of handling event registrations, but the Lead-to-Contact relationship can easily become disconnected when you invite Leads to your events.&lt;/p&gt;
&lt;p&gt;With a small Power Automate flow, you can close that gap: every new event registration checks for an existing open Lead, links it to the registered Contact, or creates a new Lead when needed. The result is &lt;strong&gt;cleaner data, better event attribution, and a much clearer handover between marketing and sales&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;But the main idea stays the same: do not let your event registrations live only on the Contact side. Keep the Lead connected too, so Sales can see the full context of who registered, where they came from, and how they already interacted with your company.&lt;/p&gt;</content:encoded><category>Dynamics 365 Customer Insights Journeys</category><category>Marketing Automation</category><category>Power Automate</category><category>Lead Management</category><category>Event Management</category><category>Power Platform Development</category></item><item><title>Upgrade Your Customer Insights Journeys Events to Teams Webinar V2</title><link>https://martinplopez.com/writing/teamsv2-customer-insights-journeys/</link><guid isPermaLink="true">https://martinplopez.com/writing/teamsv2-customer-insights-journeys/</guid><description>Learn how to configure Teams Webinar V2 authentication for Dynamics 365 Customer Insights Journeys, including the required Entra app registration, Graph permissions, federated credentials, and Teams access policy.</description><pubDate>Fri, 05 Jun 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;For a while now, clients who run webinars in Customer Insights Journeys have been reaching out to me for help setting up Teams Webinar V2.&lt;/p&gt;
&lt;p&gt;Their current Teams webinar option is being marked as &lt;em&gt;“legacy”&lt;/em&gt;, which is basically like saying &lt;strong&gt;Beetlejuice&lt;/strong&gt; for software products 😬&lt;/p&gt;
&lt;p&gt;The timeline is also important: &lt;strong&gt;Microsoft is retiring Teams live events and the related Graph APIs effective June 30, 2026&lt;/strong&gt;. For legacy Teams Webinar and Teams Meeting events, Microsoft honors already scheduled events through February 28, 2027. After that period, Teams Webinar V2 or Teams Meeting V2 should be used.&lt;/p&gt;
&lt;p&gt;Most clients contact me when they try to save a new event as a Teams Webinar V2 and see a message like this:&lt;/p&gt;
&lt;figure class=&quot;prose-figure&quot;&gt;&lt;img __ASTRO_IMAGE_=&quot;{&amp;#x22;src&amp;#x22;:&amp;#x22;./image1.png&amp;#x22;,&amp;#x22;alt&amp;#x22;:&amp;#x22;Oh No!&amp;#x22;,&amp;#x22;title&amp;#x22;:&amp;#x22;For non-german speakers, the title might look even more intimidating 😅&amp;#x22;,&amp;#x22;index&amp;#x22;:0}&quot;&gt;&lt;figcaption class=&quot;prose-figure__caption&quot;&gt;For non-german speakers, the title might look even more intimidating 😅&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;Luckily, Microsoft warns us in the &lt;a href=&quot;https://learn.microsoft.com/en-us/dynamics365/customer-insights/journeys/teams-web-version-2#create-a-teams-webinar-v2&quot;&gt;documentation of the Teams V2&lt;/a&gt; that before using it, you need to set up authentication for Teams webinars v2.&lt;/p&gt;
&lt;p&gt;They also documented in &lt;a href=&quot;https://learn.microsoft.com/en-us/dynamics365/customer-insights/journeys/teams-authentication&quot;&gt;this Microsoft Learn page&lt;/a&gt;, which is the foundation of this article, but in here I share my learnings implementing it, including a script-assisted approach for admins who prefer to automate part of the setup.&lt;/p&gt;
&lt;p&gt;If you’re this person, &lt;strong&gt;you can send this article to your IT Administrator&lt;/strong&gt;, as it can get a bit technical.&lt;/p&gt;
&lt;p&gt;If you’re brave enough (and have the right permissions), &lt;strong&gt;you can also try it out yourself&lt;/strong&gt; 😉&lt;/p&gt;
&lt;hr&gt;
&lt;div class=&quot;markdown-alert markdown-alert-note&quot; dir=&quot;auto&quot;&gt;
&lt;p class=&quot;markdown-alert-title&quot; dir=&quot;auto&quot;&gt;&lt;svg class=&quot;octicon&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot; height=&quot;16&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M0 8a8 8 0 1 1 16 0A8 8 0 0 1 0 8Zm8-6.5a6.5 6.5 0 1 0 0 13 6.5 6.5 0 0 0 0-13ZM6.5 7.75A.75.75 0 0 1 7.25 7h1a.75.75 0 0 1 .75.75v2.75h.25a.75.75 0 0 1 0 1.5h-2a.75.75 0 0 1 0-1.5h.25v-2h-.25a.75.75 0 0 1-.75-.75ZM8 6a1 1 0 1 1 0-2 1 1 0 0 1 0 2Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;NOTE&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;TL;DR:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Teams Webinar V2 in Customer Insights Journeys &lt;strong&gt;requires an additional authentication setup before registrations and attendance tracking can work correctly&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;The setup &lt;strong&gt;connects Customer Insights Journeys with Microsoft Teams&lt;/strong&gt; through an Entra app registration, federated credentials, Microsoft Graph permissions, and a Teams Application Access Policy.&lt;/p&gt;
&lt;p&gt;My recommendation: &lt;strong&gt;follow Microsoft’s documented setup first&lt;/strong&gt;, but pay special attention to the federated credential subject, the required Graph permissions, and the PowerShell access policy.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;You do not necessarily need one app registration per Customer Insights environment&lt;/strong&gt;; in my implementation, I used one app registration with separate federated credentials for different environments.&lt;/p&gt;
&lt;p&gt;Also, remember that &lt;strong&gt;attendance/check-in data depends on sending registrants the proper Join in Teams link from the Customer Insights email designer&lt;/strong&gt;.&lt;/p&gt;
&lt;/div&gt;
&lt;hr&gt;
&lt;h2 id=&quot;why-is-this-required&quot;&gt;Why is this required?&lt;/h2&gt;
&lt;p&gt;Teams does not allow Customer Insights Journeys to create webinar registrations or download attendance reports using the standard integration alone.&lt;/p&gt;
&lt;p&gt;That is why an &lt;strong&gt;additional authentication setup is required&lt;/strong&gt; between our Customer Insights and Teams to send Teams registrations to specific attendees and keep track of the people who attended your webinar.&lt;/p&gt;
&lt;p&gt;This allows 2 pretty cool features:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Each registered person in Customer Insights &lt;strong&gt;can be seen from the Teams App&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;When the Event ends, all the attendees will be checked in with their registrations in Customer Insights Journeys, so &lt;strong&gt;you’ll know exactly which people attended your webinar automatically&lt;/strong&gt;!&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I did some tests and it works very well:&lt;/p&gt;
&lt;p&gt;&lt;img __ASTRO_IMAGE_=&quot;{&amp;#x22;src&amp;#x22;:&amp;#x22;./image2.png&amp;#x22;,&amp;#x22;alt&amp;#x22;:&amp;#x22;Registrations checked in&amp;#x22;,&amp;#x22;index&amp;#x22;:0}&quot;&gt;&lt;/p&gt;
&lt;p&gt;A little note on this: these features depend on using the &lt;strong&gt;Join in Teams&lt;/strong&gt; link from the Customer Insights email designer. So, &lt;strong&gt;be mindful to add the button in your Emails!&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;how-i-implemented-it&quot;&gt;How I implemented it&lt;/h2&gt;
&lt;p&gt;I originally followed the article of Microsoft, but I stumbled upon the following questions:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;they don’t give you any guidance on &lt;strong&gt;how to handle multiple environments of CIJ&lt;/strong&gt; (Customer Insights Journeys). Do I have to repeat the process for each registration?&lt;/li&gt;
&lt;li&gt;I required PowerShell at the last stage, so not everything can be done by clicking which led me to think, &lt;strong&gt;can this be a simple script&lt;/strong&gt;?&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;now-my-conclusions&quot;&gt;Now my conclusions:&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;No, &lt;strong&gt;there is no need to register an app for every environment&lt;/strong&gt;. You can register an app registration, give the right permissions for virtual events and when configuring the Federated credentials in your App, &lt;strong&gt;you can give different federated credentials for the different environments&lt;/strong&gt;:&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;img __ASTRO_IMAGE_=&quot;{&amp;#x22;src&amp;#x22;:&amp;#x22;./image3.png&amp;#x22;,&amp;#x22;alt&amp;#x22;:&amp;#x22;Different Environments&amp;#x22;,&amp;#x22;index&amp;#x22;:0}&quot;&gt;&lt;/p&gt;
&lt;ol start=&quot;2&quot;&gt;
&lt;li&gt;Yes, &lt;strong&gt;especially the azure and teams part&lt;/strong&gt;, I think it’s easier to generate your own credential in CIJ.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;the-microsoft-way-manual&quot;&gt;The Microsoft way (manual)&lt;/h2&gt;
&lt;p&gt;My plan is not to rewrite something that Microsoft has already documented well. Instead, I’ll summarize the main steps in order and link directly to the relevant Microsoft Learn sections.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href=&quot;https://learn.microsoft.com/en-us/dynamics365/customer-insights/journeys/teams-authentication#2-register-an-app-in-microsoft-entra&quot;&gt;Create the App Registration and copy the App-ID&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://learn.microsoft.com/en-us/dynamics365/customer-insights/journeys/teams-authentication#3-add-the-app-id-in-customer-insights---journeys&quot;&gt;Create the teams authentication with the App-ID in CIJ&lt;/a&gt; and &lt;a href=&quot;https://learn.microsoft.com/en-us/dynamics365/customer-insights/journeys/teams-authentication#3-add-the-app-id-in-customer-insights---journeys&quot;&gt;copy the federated Federated Identity Credential Subject&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://learn.microsoft.com/en-us/dynamics365/customer-insights/journeys/teams-authentication#4-configure-federated-credentials-in-your-app-in-microsoft-entra&quot;&gt;Configure the federated credentials for the App Registration&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://learn.microsoft.com/en-us/dynamics365/customer-insights/journeys/teams-authentication#5-grant-api-permissions&quot;&gt;Give all the API Permissions needed&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://learn.microsoft.com/en-us/dynamics365/customer-insights/journeys/teams-authentication#set-up-the-required-access-policy&quot;&gt;Set an access policy with Powershell&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;my-implementation-notes&quot;&gt;My implementation notes&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;The App-ID can be found here:
&lt;img __ASTRO_IMAGE_=&quot;{&amp;#x22;src&amp;#x22;:&amp;#x22;./image4.png&amp;#x22;,&amp;#x22;alt&amp;#x22;:&amp;#x22;The App Registration&amp;#x22;,&amp;#x22;index&amp;#x22;:0}&quot;&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;When configuring the Federated Credentials, you should substitute the tenant in the &lt;code&gt;&amp;#x3C;TenantID&gt;&lt;/code&gt; when setting the Issuer &lt;code&gt;https://login.microsoftonline.com/&amp;#x3C;TenantID&gt;/v2.0&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;For the PowerShell step should install the &lt;a href=&quot;https://learn.microsoft.com/en-us/microsoftteams/teams-powershell-install&quot;&gt;Microsoft Teams PowerShell Module&lt;/a&gt;. You can just run the following in PowerShell:&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Install-Module -Name PowerShellGet -Force -AllowClobber&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Install-Module -Name MicrosoftTeams -Force -AllowClobber&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;hr&gt;
&lt;h2 id=&quot;optional-script-assisted-setup-for-admins&quot;&gt;Optional: script-assisted setup for admins&lt;/h2&gt;
&lt;div class=&quot;markdown-alert markdown-alert-caution&quot; dir=&quot;auto&quot;&gt;
&lt;p class=&quot;markdown-alert-title&quot; dir=&quot;auto&quot;&gt;&lt;svg class=&quot;octicon&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot; height=&quot;16&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M4.47.22A.749.749 0 0 1 5 0h6c.199 0 .389.079.53.22l4.25 4.25c.141.14.22.331.22.53v6a.749.749 0 0 1-.22.53l-4.25 4.25A.749.749 0 0 1 11 16H5a.749.749 0 0 1-.53-.22L.22 11.53A.749.749 0 0 1 0 11V5c0-.199.079-.389.22-.53Zm.84 1.28L1.5 5.31v5.38l3.81 3.81h5.38l3.81-3.81V5.31L10.69 1.5ZM8 4a.75.75 0 0 1 .75.75v3.5a.75.75 0 0 1-1.5 0v-3.5A.75.75 0 0 1 8 4Zm0 8a1 1 0 1 1 0-2 1 1 0 0 1 0 2Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;CAUTION&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;ATTENTION: Run at your own risk&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;I don’t take responsibility of the consequences of running this PowerShell. I don’t recommend running a script you don’t understand.&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;For admins who repeat this setup across environments, a script-assisted approach can save time. &lt;strong&gt;I would only recommend this if you understand what the script is doing&lt;/strong&gt; and have the right permissions in Microsoft Entra and Teams.&lt;/p&gt;
&lt;p&gt;At a high level, the script can help with:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Creating or reusing the Entra app registration&lt;/li&gt;
&lt;li&gt;Adding the required Microsoft Graph permissions&lt;/li&gt;
&lt;li&gt;Creating federated credentials for each Customer Insights environment&lt;/li&gt;
&lt;li&gt;Connecting to Microsoft Teams PowerShell&lt;/li&gt;
&lt;li&gt;Creating and assigning the required Application Access Policy&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Do not run automation like this directly in production without reviewing it first. &lt;strong&gt;Start in a test environment&lt;/strong&gt;, validate the permissions, and make sure the policy scope matches your organization’s governance model.&lt;/p&gt;
&lt;p&gt;You can find the Script in my &lt;a href=&quot;https://github.com/martinplopez/CIJ-TeamsV2-Auth&quot;&gt;GitHub Repository&lt;/a&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;conclusion&quot;&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;Moving to Teams Webinar V2 &lt;strong&gt;is not just a cosmetic change&lt;/strong&gt; in Customer Insights Journeys. It introduces a new authentication model between Customer Insights, Microsoft Teams, Microsoft Graph, and Entra ID.&lt;/p&gt;
&lt;p&gt;That can feel like a lot, &lt;strong&gt;especially for teams that only wanted to create a webinar and send invitations&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;But once the setup is done correctly, the experience is much better: registrations can sync to Teams, attendees can receive their individual Join in Teams links, and Customer Insights can automatically populate attendance data after the event.&lt;/p&gt;
&lt;p&gt;My biggest learning from implementing this is that &lt;strong&gt;the process is not necessarily difficult&lt;/strong&gt;, but it touches several admin areas. That means &lt;strong&gt;the real challenge is usually coordination&lt;/strong&gt;: knowing who owns Customer Insights, who owns Entra ID, and who can run the Teams PowerShell commands. (If you are that person for every area, you’re not alone 😅, and it makes the setup quicker)&lt;/p&gt;
&lt;p&gt;If you are a &lt;strong&gt;functional consultant or marketer, use this article as a checklist&lt;/strong&gt; and involve your tenant administrator early.&lt;/p&gt;
&lt;p&gt;If you are the &lt;strong&gt;admin, validate the setup first in a non-production environment&lt;/strong&gt; and document which app registration, federated credentials, permissions, and access policies were created.&lt;/p&gt;
&lt;p&gt;Once this foundation is in place, &lt;strong&gt;Teams Webinar V2 becomes much easier to use&lt;/strong&gt; and your event registrations and attendance tracking can finally work the way users expect&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Update: after a couple of months of running this with clients, I collected the issues that kept coming back in a follow-up note — &lt;a href=&quot;/writing/teamsv2-customer-insights-journeys-lessons/&quot;&gt;Teams Webinar V2: First Lessons Learned&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;</content:encoded><category>Dynamics 365 Customer Insights Journeys</category><category>Marketing Automation</category><category>Power Platform</category><category>Webinar</category><category>Power Platform Development</category><category>Microsoft Teams</category></item><item><title>How to Configure Reply-To for No-Reply Senders in Customer Insights Journeys</title><link>https://martinplopez.com/writing/no-reply-customer-insights-journeys/</link><guid isPermaLink="true">https://martinplopez.com/writing/no-reply-customer-insights-journeys/</guid><description>Learn how to configure Reply-to addresses for no-reply senders in Dynamics 365 Customer Insights Journeys without building custom journeys, triggers, or Power Automate flows.</description><pubDate>Fri, 22 May 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;This week I was taking a look behind the trenches and checked out Odoo Marketing Automation capabilities, and I noticed that they can configure &lt;strong&gt;an automatic reply for people who respond to the sender mailbox&lt;/strong&gt;. Which made me think a lot of things:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Why were they creating this action after every email sent?&lt;/li&gt;
&lt;li&gt;Can’t they just trigger this in a different workflow?&lt;/li&gt;
&lt;li&gt;What is the benefit of replying every time if the customer still does not get any real help? 😅&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;But most importantly, it made me question &lt;strong&gt;How is this handled in Customer Insights Journeys?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;This is the journey I took to discover a simple but very useful feature in Customer Insights Journeys. 😎&lt;/p&gt;
&lt;hr&gt;
&lt;div class=&quot;markdown-alert markdown-alert-note&quot; dir=&quot;auto&quot;&gt;
&lt;p class=&quot;markdown-alert-title&quot; dir=&quot;auto&quot;&gt;&lt;svg class=&quot;octicon&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot; height=&quot;16&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M0 8a8 8 0 1 1 16 0A8 8 0 0 1 0 8Zm8-6.5a6.5 6.5 0 1 0 0 13 6.5 6.5 0 0 0 0-13ZM6.5 7.75A.75.75 0 0 1 7.25 7h1a.75.75 0 0 1 .75.75v2.75h.25a.75.75 0 0 1 0 1.5h-2a.75.75 0 0 1 0-1.5h.25v-2h-.25a.75.75 0 0 1-.75-.75ZM8 6a1 1 0 1 1 0-2 1 1 0 0 1 0 2Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;NOTE&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;TL;DR:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;In Customer Insights Journeys, you do not need to build a journey, custom trigger, or Power Automate flow just to handle replies to a no-reply sender address. You can configure a &lt;code&gt;Reply-to&lt;/code&gt; address directly in the sender settings of your branding profile.&lt;/p&gt;
&lt;p&gt;When recipients hit &lt;strong&gt;“Reply”&lt;/strong&gt; their email client uses the Reply-to header and sends the response to the configured mailbox instead of the no-reply address.&lt;/p&gt;
&lt;/div&gt;
&lt;hr&gt;
&lt;h2 id=&quot;my-initial-ideas&quot;&gt;My Initial Ideas&lt;/h2&gt;
&lt;p&gt;In my process of how to solve this in Dynamics Customer Insights I had 2 ideas:&lt;/p&gt;
&lt;h3 id=&quot;the-journey-idea&quot;&gt;The Journey Idea&lt;/h3&gt;
&lt;p&gt;My first thought on how to solve this was: &lt;em&gt;“There must be a trigger for this and I can create a journey to handle it for sure”&lt;/em&gt;&lt;/p&gt;
&lt;figure class=&quot;prose-figure&quot;&gt;&lt;img __ASTRO_IMAGE_=&quot;{&amp;#x22;src&amp;#x22;:&amp;#x22;./image1.png&amp;#x22;,&amp;#x22;alt&amp;#x22;:&amp;#x22;Nowhere to be found&amp;#x22;,&amp;#x22;title&amp;#x22;:&amp;#x22;Yeah, right...&amp;#x22;,&amp;#x22;index&amp;#x22;:0}&quot;&gt;&lt;figcaption class=&quot;prose-figure__caption&quot;&gt;Yeah, right...&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;&lt;em&gt;“Well, without an out-of-the-box trigger, I cannot create a journey for this.”&lt;/em&gt;&lt;br&gt;
So that led me to the next idea.&lt;/p&gt;
&lt;h3 id=&quot;the-custom-trigger-with-power-automate&quot;&gt;The Custom Trigger with Power Automate&lt;/h3&gt;
&lt;p&gt;So I decided to try creating a &lt;strong&gt;Power Automate flow triggered when an email is received in the no-reply mailbox&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;The idea was to &lt;strong&gt;send that event to a custom trigger in Customer Insights Journeys&lt;/strong&gt; and then use a journey to send the customer an email, similar to what I saw in Odoo but &lt;strong&gt;centralized inside the Microsoft ecosystem&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;This could also open more interesting scenarios, such as flagging the contact as &lt;strong&gt;someone who interacted with the email but had a problem&lt;/strong&gt;, identifying emails that are not performing well, or even &lt;strong&gt;creating a case directly in Dynamics 365 Customer Service&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;PROBLEM: I don’t even have a no-reply mailbox, it’s clearly a “no-reply” email address 😅&lt;/p&gt;
&lt;p&gt;That is when I decided to look at the &lt;strong&gt;sender configuration&lt;/strong&gt; in Customer Insights Journeys emails.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;how-microsoft-learn-explains-it&quot;&gt;How Microsoft Learn Explains It&lt;/h2&gt;
&lt;p&gt;I found the &lt;a href=&quot;https://learn.microsoft.com/en-us/dynamics365/customer-insights/journeys/email-properties#set-sender-and-receiver-options&quot;&gt;Microsoft Learn article article&lt;/a&gt; where the sender configuration is explained.&lt;/p&gt;
&lt;p&gt;This configuration is currently available in the branding profile. Under the sender tab, you can select the different senders for your brand. When you open one of them, you can see the sender configuration, including the Reply-to address:&lt;/p&gt;
&lt;figure class=&quot;prose-figure&quot;&gt;&lt;img __ASTRO_IMAGE_=&quot;{&amp;#x22;src&amp;#x22;:&amp;#x22;./image3.png&amp;#x22;,&amp;#x22;alt&amp;#x22;:&amp;#x22;Here my default sender&amp;#x22;,&amp;#x22;title&amp;#x22;:&amp;#x22;The email in the Reply-to field is the recipient when someone hits reply.&amp;#x22;,&amp;#x22;index&amp;#x22;:0}&quot;&gt;&lt;figcaption class=&quot;prose-figure__caption&quot;&gt;The email in the Reply-to field is the recipient when someone hits reply.&lt;/figcaption&gt;&lt;/figure&gt;
&lt;hr&gt;
&lt;h2 id=&quot;my-test&quot;&gt;My Test&lt;/h2&gt;
&lt;p&gt;So I decided to make a test email with this default sender to try it out…&lt;/p&gt;
&lt;figure class=&quot;prose-figure&quot;&gt;&lt;img src=&quot;/writing/no-reply-customer-insights-journeys/image.gif&quot; alt=&quot;It works!&quot; title=&quot;When hitting reply it doesn&amp;#x27;t include the no-reply email address&quot;&gt;&lt;figcaption class=&quot;prose-figure__caption&quot;&gt;When hitting reply it doesn&apos;t include the no-reply email address&lt;/figcaption&gt;&lt;/figure&gt;
&lt;h3 id=&quot;behind-the-scenes&quot;&gt;Behind the scenes&lt;/h3&gt;
&lt;p&gt;This is a protocol that is documented as the &lt;a href=&quot;https://www.rfc-editor.org/info/rfc5322/#section-3.6.2&quot;&gt;Internet Message Format&lt;/a&gt;. So it universally works with all modern email clients (Outlook, Gmail, Apple Mail, etc.).&lt;/p&gt;
&lt;p&gt;When you inspect the details of the message, you can see this as one of the email headers:&lt;/p&gt;
&lt;figure class=&quot;prose-figure&quot;&gt;&lt;img __ASTRO_IMAGE_=&quot;{&amp;#x22;src&amp;#x22;:&amp;#x22;./image2.png&amp;#x22;,&amp;#x22;alt&amp;#x22;:&amp;#x22;Nowhere to be found&amp;#x22;,&amp;#x22;title&amp;#x22;:&amp;#x22;The important part is that the visible sender and the reply destination do not need to be the same. The sender can still appear as your no-reply address, while replies are directed to the mailbox configured in the Reply-to header.&amp;#x22;,&amp;#x22;index&amp;#x22;:0}&quot;&gt;&lt;figcaption class=&quot;prose-figure__caption&quot;&gt;The important part is that the visible sender and the reply destination do not need to be the same. The sender can still appear as your no-reply address, while replies are directed to the mailbox configured in the Reply-to header.&lt;/figcaption&gt;&lt;/figure&gt;
&lt;hr&gt;
&lt;h2 id=&quot;conclusion&quot;&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;Today I learned two things:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;You always learn something when you stay curious.&lt;/li&gt;
&lt;li&gt;Some of the best features in a tool are so well integrated that you almost do not notice them.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In this case, Customer Insights Journeys already had the answer: configure the Reply-to address in the sender settings and &lt;strong&gt;let the email standard do the rest&lt;/strong&gt;.&lt;/p&gt;</content:encoded><category>Dynamics 365 Customer Insights Journeys</category><category>Marketing Automation</category><category>Power Platform</category><category>Power Platform Development</category></item><item><title>Lead Scoring in Dynamics 365 Customer Insights: The 5Ws and How to Start</title><link>https://martinplopez.com/writing/customer-insights-lead-scoring/</link><guid isPermaLink="true">https://martinplopez.com/writing/customer-insights-lead-scoring/</guid><description>Learn how Lead Scoring works in Dynamics 365 Customer Insights Journeys, when to use it, and how to build practical scoring models that improve lead qualification and sales focus.</description><pubDate>Thu, 07 May 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Lead Scoring has always been a great unknown to me in Dynamics 365 Customer Insights - Journeys. I’ve known about it since the days of outbound marketing, but I never had the chance to see it implemented in a real customer project or help customers adopt it.&lt;/p&gt;
&lt;p&gt;This article gets its inspiration from the session “&lt;em&gt;The chaos of Customer Insights projects - The mistakes we keep making (and pretending we don’t)&lt;/em&gt;” by Vivian Voss in ColorCloud 2026. She asked the public if in their projects of Customer Insights Journeys, their clients could define what a lead is. I think only one person raised a hand. Vivian highlighted that one of &lt;strong&gt;the biggest bottlenecks is that marketing and sales teams often don’t collaborate closely enough&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;This made me think, that it is probably the main cause for people to not even consider the feature lead scoring. But I wanted to explore it further because I believe &lt;strong&gt;it can significantly improve conversion rates&lt;/strong&gt;.&lt;/p&gt;
&lt;hr&gt;
&lt;div class=&quot;markdown-alert markdown-alert-note&quot; dir=&quot;auto&quot;&gt;
&lt;p class=&quot;markdown-alert-title&quot; dir=&quot;auto&quot;&gt;&lt;svg class=&quot;octicon&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot; height=&quot;16&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M0 8a8 8 0 1 1 16 0A8 8 0 0 1 0 8Zm8-6.5a6.5 6.5 0 1 0 0 13 6.5 6.5 0 0 0 0-13ZM6.5 7.75A.75.75 0 0 1 7.25 7h1a.75.75 0 0 1 .75.75v2.75h.25a.75.75 0 0 1 0 1.5h-2a.75.75 0 0 1 0-1.5h.25v-2h-.25a.75.75 0 0 1-.75-.75ZM8 6a1 1 0 1 1 0-2 1 1 0 0 1 0 2Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;NOTE&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;TL;DR:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Lead Scoring in Dynamics 365 Customer Insights &lt;strong&gt;helps organizations identify which prospects are most likely to convert based on engagement and profile data&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;By combining behavioral signals like email clicks, event registrations, and form submissions with demographic information, marketing and sales teams can focus on the &lt;strong&gt;leads that matter most&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;In this article, we’ll explore:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;what &lt;strong&gt;Lead Scoring actually is&lt;/strong&gt;,&lt;/li&gt;
&lt;li&gt;when it makes sense to use it,&lt;/li&gt;
&lt;li&gt;and &lt;strong&gt;how to start building a practical scoring strategy&lt;/strong&gt; in Customer Insights - Journeys.&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;hr&gt;
&lt;h2 id=&quot;what-exactly-is-lead-scoring&quot;&gt;What Exactly Is Lead Scoring&lt;/h2&gt;
&lt;p&gt;Lead Scoring is essentially a &lt;strong&gt;prioritization system&lt;/strong&gt;. It allows you to give a score to a lead based on the data that we collected from the lead.&lt;/p&gt;
&lt;p&gt;In order to score the lead you have to &lt;strong&gt;give or remove points to interactions or data from the lead&lt;/strong&gt;. For example:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Opened email → +2&lt;/li&gt;
&lt;li&gt;Clicked CTA (Call to Action) → +10&lt;/li&gt;
&lt;li&gt;Demo request → +50&lt;/li&gt;
&lt;li&gt;No interaction for 30 days → -20&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This helps identify &lt;strong&gt;how engaged a lead is with your product or service&lt;/strong&gt;. This engagement level can change over time (taking our example, if there is no interaction for 30 days, the engagement is not the same as when he clicked the Call to Action) and ultimately can give us an estimated probability of whether the client is prone to buy or not.&lt;/p&gt;
&lt;p&gt;Negative scoring is just as important as positive scoring because &lt;strong&gt;inactivity or disengagement can indicate reduced buying intent&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Not all actions are equal, and you can adapt this scoring points over time. At least with Dynamics Customer Insights Journeys 😉&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;who-is-lead-scoring-for&quot;&gt;Who Is Lead Scoring For&lt;/h2&gt;
&lt;p&gt;This is an important question because &lt;strong&gt;Lead Scoring should be a shared effort between sales and marketing teams&lt;/strong&gt;. If each team works separately and specially handle leads differently, lead scoring will only be implemented halfway and it won’t reach the purpose. The Marketing team will qualify the lead thanks to lead scoring and the sales team will follow up on the lead. So &lt;strong&gt;they need a common definition on when a lead is qualified&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Regarding organizations, I think it makes the most sense in &lt;strong&gt;organizations with many leads&lt;/strong&gt;, if an organization is not having that many leads or even they don’t use leads at all, lead scoring is going to be like buying a big motorbike when you are already struggling riding a bike.&lt;/p&gt;
&lt;div class=&quot;markdown-alert markdown-alert-tip&quot; dir=&quot;auto&quot;&gt;
&lt;p class=&quot;markdown-alert-title&quot; dir=&quot;auto&quot;&gt;&lt;svg class=&quot;octicon&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot; height=&quot;16&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8 1.5c-2.363 0-4 1.69-4 3.75 0 .984.424 1.625.984 2.304l.214.253c.223.264.47.556.673.848.284.411.537.896.621 1.49a.75.75 0 0 1-1.484.211c-.04-.282-.163-.547-.37-.847a8.456 8.456 0 0 0-.542-.68c-.084-.1-.173-.205-.268-.32C3.201 7.75 2.5 6.766 2.5 5.25 2.5 2.31 4.863 0 8 0s5.5 2.31 5.5 5.25c0 1.516-.701 2.5-1.328 3.259-.095.115-.184.22-.268.319-.207.245-.383.453-.541.681-.208.3-.33.565-.37.847a.751.751 0 0 1-1.485-.212c.084-.593.337-1.078.621-1.489.203-.292.45-.584.673-.848.075-.088.147-.173.213-.253.561-.679.985-1.32.985-2.304 0-2.06-1.637-3.75-4-3.75ZM5.75 12h4.5a.75.75 0 0 1 0 1.5h-4.5a.75.75 0 0 1 0-1.5ZM6 15.25a.75.75 0 0 1 .75-.75h2.5a.75.75 0 0 1 0 1.5h-2.5a.75.75 0 0 1-.75-.75Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;TIP&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;It is always good to start somewhere, so if this is your case, this is how I would do it:&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Define &lt;strong&gt;what a lead is&lt;/strong&gt; (involve the Sales and Marketing Teams in this decision)&lt;/li&gt;
&lt;li&gt;Define the &lt;strong&gt;handling process of a lead&lt;/strong&gt; (who will be accountable and until when) and the sources of the leads&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Adapt your processes&lt;/strong&gt; for leads (Marketing Forms, Journeys, Segments)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Introduce Lead Scoring&lt;/strong&gt;, test different models and decide what works best for you&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;hr&gt;
&lt;h2 id=&quot;where-does-lead-scoring-make-sense&quot;&gt;Where Does Lead Scoring Make Sense&lt;/h2&gt;
&lt;p&gt;Lead scoring can help you best when you need to get the overview of the leads and you have very different ways of evaluating them. If you’re already &lt;strong&gt;setting up webinar or event campaigns&lt;/strong&gt; in customer insights journeys, it makes a lot of sense to introduce &lt;strong&gt;lead scoring to better assess which leads are more engaged with you alongside their participation of your campaign&lt;/strong&gt;. Actually, Lead Scoring is most valuable when intent is gradual rather than immediate.&lt;/p&gt;
&lt;p&gt;So, for instance, if someone downloading a brochure is not necessarily ready to buy. But &lt;strong&gt;if they later attend a webinar and visit pricing pages, intent becomes clearer&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Lead Scoring is also very useful to evaluate leads for the information you already have about them. Taking a look at &lt;strong&gt;demographic or firmographic information of the lead, you can better asses if they are easier to qualify or not&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;An example of this is if you know that your services have a higher conversion rate with big enterprise companies than Small to Medium Companies, you can score the leads from the big companies higher. Or if your lead is from a CEO, it might score higher than a engineer, as it can make a purchasing decision easier than the engineer.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;when-should-you-use-lead-scoring&quot;&gt;When Should You Use Lead Scoring&lt;/h2&gt;
&lt;p&gt;There are situations in a company that beg for Lead Qualifications:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;When marketing is &lt;strong&gt;generating more leads than sales can process&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;when sales complains about &lt;strong&gt;lead quality&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;when &lt;strong&gt;engagement data already exists&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;when customer &lt;strong&gt;journeys become complex&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;On the other hand, Lead Scoring might not be as helpful in early stages, as the system doesn’t have many leads to handle. If you only receive a handful of leads per month, Lead Scoring may create unnecessary complexity to your processes.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;why-is-lead-scoring-a-good-idea&quot;&gt;Why is Lead Scoring a good idea&lt;/h2&gt;
&lt;p&gt;I feel like Lead Scoring might be one of the &lt;strong&gt;cornerstones of Marketing Automation&lt;/strong&gt;. The possibility to automate the evaluation of leads in such a level of complexity makes &lt;strong&gt;scale in leads handling so much better&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;As the prioritization takes over, sales can do a faster follow-up with the leads that are qualified, which ultimately will result in higher conversion rates of the leads. This &lt;strong&gt;reduces the manual qualification to the minimum&lt;/strong&gt; and makes a bridge between the marketing team and the sales team.&lt;/p&gt;
&lt;p&gt;Customer Insights Journeys is designed to take all the information you’re collecting from your emails, journeys, events, etc. and allows you to make your scoring models adapted to your clear necessities.&lt;/p&gt;
&lt;p&gt;Needless to say it’s a feature included in the Customer Insights Journey license and Microsoft is not going to charge you less if you don’t use it 😁&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;how-to-start&quot;&gt;How to Start&lt;/h2&gt;
&lt;p&gt;Before building your first scoring model, remember that the goal is &lt;strong&gt;not to create a perfect mathematical system&lt;/strong&gt;. The objective is to help sales teams prioritize conversations more effectively.&lt;/p&gt;
&lt;p&gt;Start with a small number of meaningful interactions and &lt;strong&gt;refine the model over time based on actual conversion results&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;To Setup Lead Scoring Models I followed this &lt;a href=&quot;https://meganvwalker.com/create-lead-scoring-models-in-real-time-marketing&quot;&gt;Post by Megan V Walker&lt;/a&gt; along with the &lt;a href=&quot;https://learn.microsoft.com/en-us/dynamics365/customer-insights/journeys/real-time-marketing-create-lead-scoring-model&quot;&gt;Microsoft Documentation&lt;/a&gt;. But in short I’ll put the steps I followed:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;I activated the feature Switch for Lead Scoring&lt;/li&gt;
&lt;li&gt;I created a new Model&lt;/li&gt;
&lt;li&gt;I added conditions to my scoring model set up to add or substract on my conditions&lt;/li&gt;
&lt;li&gt;Published my Scoring Model&lt;/li&gt;
&lt;li&gt;Saw the analytics and the score of my leads&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;img src=&quot;/writing/customer-insights-lead-scoring/image.gif&quot; alt=&quot;Analytics of Scoring Model&quot;&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&quot;my-simple-lead-scoring-strategy&quot;&gt;My Simple Lead Scoring Strategy&lt;/h3&gt;
&lt;p&gt;I used a very simple Lead Scoring Strategy. I created a lead scoring to &lt;strong&gt;identify the coffee geeks that are more willing to buy coffee beans in May&lt;/strong&gt;.
I setup the following conditions:&lt;/p&gt;
&lt;div class=&quot;scroll-x&quot; tabindex=&quot;0&quot;&gt;
























&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Interaction&lt;/th&gt;&lt;th&gt;Score&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Email received&lt;/td&gt;&lt;td&gt;+1&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Email opened&lt;/td&gt;&lt;td&gt;+10&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Barista Course Registered and Checked In&lt;/td&gt;&lt;td&gt;+30&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Email opted Out&lt;/td&gt;&lt;td&gt;-10&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;Here an overview of my scoring model:&lt;/p&gt;
&lt;p&gt;&lt;img __ASTRO_IMAGE_=&quot;{&amp;#x22;src&amp;#x22;:&amp;#x22;./image1.png&amp;#x22;,&amp;#x22;alt&amp;#x22;:&amp;#x22;Coffee Geeks May Scoring Model&amp;#x22;,&amp;#x22;index&amp;#x22;:0}&quot;&gt;&lt;/p&gt;
&lt;p&gt;After implementing the scoring model you can also &lt;strong&gt;automate the conversion into marketing qualified leads&lt;/strong&gt; (MQL) combining the models (or not) and giving it a threshold to which they’re ready to be worked on by Sales:&lt;/p&gt;
&lt;p&gt;&lt;img __ASTRO_IMAGE_=&quot;{&amp;#x22;src&amp;#x22;:&amp;#x22;./image2.png&amp;#x22;,&amp;#x22;alt&amp;#x22;:&amp;#x22;Lead Qualification Model&amp;#x22;,&amp;#x22;index&amp;#x22;:0}&quot;&gt;&lt;/p&gt;
&lt;p&gt;Different models can have different thresholds to qualify, and &lt;strong&gt;models can become obsolete after a campaign or event&lt;/strong&gt;. There’s always the possibility to stop the qualification model and modify it to fit best your new models.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;conclusion&quot;&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;Lead Scoring is not about building the most complex scoring model possible. It’s about &lt;strong&gt;helping marketing and sales teams focus on the leads that actually matter&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;The best scoring models are usually not the ones with dozens of conditions and perfectly calculated formulas. They are the ones &lt;strong&gt;teams understand, trust, and consistently use in their daily processes.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;If you’re starting with Lead Scoring in Dynamics 365 Customer Insights - Journeys, keep it simple:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;define what a &lt;strong&gt;qualified lead&lt;/strong&gt; means,&lt;/li&gt;
&lt;li&gt;align &lt;strong&gt;marketing and sales&lt;/strong&gt; around that definition,&lt;/li&gt;
&lt;li&gt;start with a few &lt;strong&gt;meaningful interactions&lt;/strong&gt;,&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;refine&lt;/strong&gt; the model over time using &lt;strong&gt;real data&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;A scoring model should evolve together with your campaigns, your customer behavior, and your business goals.&lt;/p&gt;
&lt;p&gt;Customer Insights - Journeys already provides the tools to make this possible. The real challenge is not the technology itself, it’s &lt;strong&gt;creating a shared understanding of what buying intent actually looks like in your organization&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;And honestly, that conversation alone may already improve your marketing process more than the scoring model itself.&lt;/p&gt;</content:encoded><category>Dynamics 365 Customer Insights Journeys</category><category>Lead Scoring</category><category>Marketing Automation</category><category>Dynamics 365 Sales</category><category>Power Platform</category><category>Power Platform Development</category></item><item><title>“Can I Bring Someone?” - Solving Plus-One Waitlisting in Customer Insights Journeys (Part 2)</title><link>https://martinplopez.com/writing/customer-insights-waitlist-2/</link><guid isPermaLink="true">https://martinplopez.com/writing/customer-insights-waitlist-2/</guid><description>In Part 2 of this series, learn how to design reactive registration journeys in Dynamics 365 Customer Insights - Journeys that automatically respond when attendees or their guests are placed on a waitlist.</description><pubDate>Fri, 10 Apr 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Waitlists can be a &lt;strong&gt;powerful tool&lt;/strong&gt;, but they can become difficult to manage, especially &lt;strong&gt;when manual processes are involved&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Handling waitlisted registrations can be straightforward, but once we &lt;strong&gt;involve companions&lt;/strong&gt;, it can quickly become tricky.&lt;/p&gt;
&lt;p&gt;Because what can we do with 2 registrations? how do we communicate the client that we have only place for one? Do we allow them to cancel one of the registrations?&lt;/p&gt;
&lt;p&gt;In my experience, we should &lt;strong&gt;give as much control to attendees as possible&lt;/strong&gt;. Luckily, this is achievable by &lt;strong&gt;setting up journeys&lt;/strong&gt; and informing them via email about the status of their registration.&lt;/p&gt;
&lt;hr&gt;
&lt;div class=&quot;markdown-alert markdown-alert-note&quot; dir=&quot;auto&quot;&gt;
&lt;p class=&quot;markdown-alert-title&quot; dir=&quot;auto&quot;&gt;&lt;svg class=&quot;octicon&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot; height=&quot;16&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M0 8a8 8 0 1 1 16 0A8 8 0 0 1 0 8Zm8-6.5a6.5 6.5 0 1 0 0 13 6.5 6.5 0 0 0 0-13ZM6.5 7.75A.75.75 0 0 1 7.25 7h1a.75.75 0 0 1 .75.75v2.75h.25a.75.75 0 0 1 0 1.5h-2a.75.75 0 0 1 0-1.5h.25v-2h-.25a.75.75 0 0 1-.75-.75ZM8 6a1 1 0 1 1 0-2 1 1 0 0 1 0 2Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;NOTE&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;TL;DR:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Handling waitlists with companions in Customer Insights Journeys can quickly become complex.&lt;/p&gt;
&lt;p&gt;This solution uses:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;2 journeys&lt;/strong&gt; (attendee + companion)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;2 emails&lt;/strong&gt; (waitlist start + waitlist end)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;1 trigger&lt;/strong&gt; (registration status change)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Together, they allow you to:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Automatically notify users when they enter the waitlist&lt;/li&gt;
&lt;li&gt;Let attendees cancel their registration directly from email&lt;/li&gt;
&lt;li&gt;React when spots become available&lt;/li&gt;
&lt;li&gt;Clearly communicate when the waitlist closes&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The result: a &lt;strong&gt;fully automated, user-friendly waitlist experience&lt;/strong&gt;.&lt;/p&gt;
&lt;/div&gt;
&lt;hr&gt;
&lt;h2 id=&quot;why-this-matters&quot;&gt;Why This Matters&lt;/h2&gt;
&lt;p&gt;Handling waitlists becomes significantly more complex when companions are involved.&lt;/p&gt;
&lt;p&gt;Without automation, you risk:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Confusing communication (who got in?)&lt;/li&gt;
&lt;li&gt;Manual updates and errors&lt;/li&gt;
&lt;li&gt;Poor attendee experience&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This approach ensures every scenario is handled automatically and clearly communicated.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;solution-overview&quot;&gt;Solution Overview&lt;/h2&gt;
&lt;p&gt;In my experience, the best approach is:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;One Email&lt;/strong&gt; to handle an attendee or companion entering the waitlist&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;One Email&lt;/strong&gt; to handle if the Event Registration has closed and we couldn’t secure a place for the attendee and/or the companion&lt;/li&gt;
&lt;li&gt;One new &lt;strong&gt;Trigger&lt;/strong&gt; to trigger on an Event Registration status change (So people can exit the waitlist journey)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Two Journeys&lt;/strong&gt; (one for the attendee and one for the companion) to handle the emails&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This approach works well if:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;you already have a journey handling your event registrations on create&lt;/li&gt;
&lt;li&gt;you have normally one event at a time (If there are more, we can always create event specific journeys)&lt;/li&gt;
&lt;li&gt;you already struggle with handling standard waitlisting scenarios&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&quot;the-process&quot;&gt;The process&lt;/h2&gt;
&lt;h3 id=&quot;general-assumptions&quot;&gt;General Assumptions&lt;/h3&gt;
&lt;p&gt;This is Part 2 of the series, I &lt;strong&gt;assume you already know how to handle plus one registrations&lt;/strong&gt; and automatically place them on the waitlist, but it is especially important that &lt;code&gt;Companion&lt;/code&gt; exists as a value in the Primary role Optionset inside the event registration.&lt;/p&gt;
&lt;p&gt;I recommend to take a look at &lt;a href=&quot;/writing/customer-insights-waitlist-1&quot;&gt;Part 1&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&quot;1-waitlist---start-email&quot;&gt;1. “Waitlist - Start” Email&lt;/h3&gt;
&lt;p&gt;Create an email and use the following placeholders:&lt;/p&gt;
&lt;p&gt;&lt;img __ASTRO_IMAGE_=&quot;{&amp;#x22;src&amp;#x22;:&amp;#x22;./image7.png&amp;#x22;,&amp;#x22;alt&amp;#x22;:&amp;#x22;Dynamic Placeholders&amp;#x22;,&amp;#x22;index&amp;#x22;:0}&quot;&gt;&lt;/p&gt;
&lt;p&gt;The relationships are:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Under &lt;code&gt;trigger --&gt; Marketing Event Registration in the Waitlist --&gt; Reference for Marketing Event Registration&lt;/code&gt;
&lt;ul&gt;
&lt;li&gt;Primary Role&lt;/li&gt;
&lt;li&gt;RegistrationID&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;For the EventName &lt;code&gt;trigger --&gt; Marketing Event Registration in the Waitlist --&gt; Reference for Marketing Event --&gt; Event Name&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;FirstName is the default &lt;code&gt;contact --&gt; First Name&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I like to distinguish the registration types in the &lt;strong&gt;title of the email&lt;/strong&gt;, because if both registrations are waitlisted, the contact who signed up for the waitlist will receive 2 emails. &lt;strong&gt;One for the Attendee and one for the Companion.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;This is the reason to provide the Registration ID, event name and primary role of the registration.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Adding a cancellation button&lt;/strong&gt; also gives attendees more control over their registration, in case they want to &lt;strong&gt;free up their spot&lt;/strong&gt; or they’re not interested in the event if they cannot go together.&lt;/p&gt;
&lt;p&gt;So we add the button, it should be &lt;strong&gt;linked to a certain event&lt;/strong&gt;, for which we can use our relationships from the trigger and event registration 😉&lt;/p&gt;
&lt;p&gt;&lt;img __ASTRO_IMAGE_=&quot;{&amp;#x22;src&amp;#x22;:&amp;#x22;./image8.png&amp;#x22;,&amp;#x22;alt&amp;#x22;:&amp;#x22;Cancel Button&amp;#x22;,&amp;#x22;index&amp;#x22;:0}&quot;&gt;&lt;/p&gt;
&lt;p&gt;To reference the text in the email, you can use the following:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;html&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;p&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;&gt;Hi {{FirstName}},&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;br&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;br&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;&gt;Thank you again for your interest in attending our upcoming event, we truly appreciate the enthusiasm and support we&apos;ve received.&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;br&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;br&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;&gt;Due to an overwhelming number of registrations, we’ve had to place some attendees and/or their companions on a waitlist. While we wish we could accommodate everyone right away, this step helps us ensure the best possible experience for all participants.&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;p&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;br&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;p&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;p&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;&gt;This Email refers to the Event Registration: &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;span&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt; style&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;font-weight: bold;&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;&gt;{{RegistrationID}}​&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;span&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;&gt; for our &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;span&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt; style&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;font-weight: bold;&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;&gt;{{Eventname}}​&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;span&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;&gt; as &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;span&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt; style&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;font-weight: bold;&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;&gt;{{Primaryrole}}​&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;span&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;br&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;p&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;p&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;br&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;p&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;p&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;&gt;If you decide to cancel your registration or that of your companion, you can do so directly from this summary by clicking on the designated cancellation option.&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;p&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;p&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;br&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;p&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt; data-editorblocktype&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;Button&quot;&lt;/span&gt;&lt;span style=&quot;color:#FDAEB7;font-style:italic&quot;&gt; align&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;-webkit-center&quot;&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt; style&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;margin-top: 10px; margin-bottom: 10px;&quot;&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;buttonWrapper&quot;&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt; data-link-type&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;EventCancellation&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;a&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;buttonClass&quot;&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt; href&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;{{event_cancellation_1}}&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;&amp;#x26;amp;&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;eventRegistrationId={{RegistrationID}}#_msdynmkt_donottrack=0,_msdynmkt_linkid=9293b116-acfa-43e1-925e-cd27885658b1&quot;&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt; style&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;text-align: center; margin-right: auto; margin-left: auto; display: inline-block; text-decoration: none; width: fit-content; height: auto; max-width: 100%; line-height: normal; background-color: rgb(7, 66, 171); color: rgb(255, 255, 255); border-radius: 4px; padding: 10px 20px;mso-hide: none !important;&quot;&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt; data-msdyn-tracking-id&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;b039e73e35e3a81775469549356&quot;&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt; data-value-type&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;dynamic&quot;&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt; data-placeholder-key&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;event_cancellation_1&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;span&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt; style&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;display: inline-block; min-width: 1px; font-family: Arial, Verdana, sans-serif;&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;&gt;Cancel Registration&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;span&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;a&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;p&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;br&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;p&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;p&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;&gt;The good news is that plans can change, and spots often become available. If that happens, we’ll reach out to you right away with an update.&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;p&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;p&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;br&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;&gt;In the meantime, thank you for your patience and understanding - it means a lot to us. We’re hopeful we’ll still be able to welcome you to the event.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;p&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;p&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;br&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;p&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;p&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;&gt;Warm regards,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;p&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;p&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;br&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;p&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;p&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;&gt;Martin&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;p&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;It should look like this:&lt;/p&gt;
&lt;p&gt;&lt;img __ASTRO_IMAGE_=&quot;{&amp;#x22;src&amp;#x22;:&amp;#x22;./image6.png&amp;#x22;,&amp;#x22;alt&amp;#x22;:&amp;#x22;Email Start Example&amp;#x22;,&amp;#x22;index&amp;#x22;:0}&quot;&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&quot;2-waitlist---finish-email&quot;&gt;2. “Waitlist - Finish” Email&lt;/h3&gt;
&lt;p&gt;Here we have to create an email that will be used &lt;strong&gt;to handle attendees and companions&lt;/strong&gt;, but in different ways.&lt;/p&gt;
&lt;p&gt;We’ll introduce an &lt;strong&gt;inline condition to personalize the message&lt;/strong&gt;, we’ll filter the message depending if it’s an attendee and we say that we’re sorry they cannot attend or if they’re not, they are told that they can’t bring a companion:&lt;/p&gt;
&lt;p&gt;&lt;img __ASTRO_IMAGE_=&quot;{&amp;#x22;src&amp;#x22;:&amp;#x22;./image9.png&amp;#x22;,&amp;#x22;alt&amp;#x22;:&amp;#x22;Inline Condition&amp;#x22;,&amp;#x22;index&amp;#x22;:0}&quot;&gt;&lt;/p&gt;
&lt;p&gt;For this Email, we’ll be using the same relationships as the &lt;a href=&quot;#1-waitlist---start-email&quot;&gt;previous Email&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Here the HTML of the text;&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;html&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;p&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;&gt;Hi {{FirstName}},&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;br&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;br&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;&gt;Thank you very much for your interest in our event and for taking the time to register.&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;br&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;p&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;p&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;br&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;p&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;{{#if IsWaitlistAttendee}}Due to the high level of demand, we regret to inform you that we were unable to secure a spot for you.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    As the event is now fully booked and the waitlist has officially closed, no additional places will become available.&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;br&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;br&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;{{else}}Due to the high level of demand, we regret to inform you that we were unable to secure a spot for your companion.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    As the event is now fully booked and the waitlist has officially closed, no additional places will become available.&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;br&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;br&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;{{/if}}This Email refers to the Event Registration:&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;&amp;#x26;nbsp;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;span&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt; style&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;font-weight: bold;&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;&gt;{{RegistrationID}}​&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;span&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;&gt; for our&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;&amp;#x26;nbsp;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;span&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt; style&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;font-weight: bold;&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;&gt;{{Eventname}}​ &amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;span&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;&gt;as&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;&amp;#x26;nbsp;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;span&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt; style&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;font-weight: bold;&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;&gt;{{Primaryrole}}​&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;span&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;p&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;br&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;p&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;p&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;&gt;We truly appreciate your enthusiasm and understanding. While we’re disappointed not to be able to welcome you this time, we hope to have the opportunity to host you at a future event.&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;br&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;br&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;If you’d like to stay informed about upcoming events, we’d be happy to keep you in the loop.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;br&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;br&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;&gt;Thank you again, and we hope to connect with you soon.&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;br&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;br&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;&gt;Warm regards,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;p&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;p&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;&gt; &amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;p&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;p&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;br&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;p&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;p&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;&gt;Martin&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;p&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;It should be kept simple, it should look like this:&lt;/p&gt;
&lt;p&gt;&lt;img __ASTRO_IMAGE_=&quot;{&amp;#x22;src&amp;#x22;:&amp;#x22;./image10.png&amp;#x22;,&amp;#x22;alt&amp;#x22;:&amp;#x22;Email Finish Example&amp;#x22;,&amp;#x22;index&amp;#x22;:0}&quot;&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&quot;3-event-registration-status-change-trigger&quot;&gt;3. “Event Registration Status Change” Trigger&lt;/h3&gt;
&lt;p&gt;This trigger is designed to remove contacts from the journeys if their &lt;strong&gt;registrations get canceled or registered&lt;/strong&gt;. To set it up:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Name the trigger &lt;code&gt;Event Registration Status Change&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;What action will activate the trigger? &lt;code&gt;When a record related to a customer is created or updated&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;In which table is the record created or updated? &lt;code&gt;Event Registration&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Who is the audience for this trigger? &lt;code&gt;Contact&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Which attribute contains the audience? &lt;code&gt;Contact&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;When is the trigger activated? &lt;code&gt;An existing record was updated&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Which attribute updates should activate the trigger? &lt;code&gt;Status reason&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;img __ASTRO_IMAGE_=&quot;{&amp;#x22;src&amp;#x22;:&amp;#x22;./image1.png&amp;#x22;,&amp;#x22;alt&amp;#x22;:&amp;#x22;Setup Trigger&amp;#x22;,&amp;#x22;index&amp;#x22;:0}&quot;&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&quot;4-waitlist-attendees-journey&quot;&gt;4. “Waitlist Attendees” Journey&lt;/h3&gt;
&lt;p&gt;Create a trigger Journey and choose the &lt;code&gt;Marketing Event Registration Waitlisted&lt;/code&gt; Trigger and add the condition that the Primary role is &lt;code&gt;Attendee&lt;/code&gt; and allow to repeat the journey &lt;code&gt;After 1 Minutes&lt;/code&gt;:&lt;/p&gt;
&lt;p&gt;&lt;img __ASTRO_IMAGE_=&quot;{&amp;#x22;src&amp;#x22;:&amp;#x22;./image3.png&amp;#x22;,&amp;#x22;alt&amp;#x22;:&amp;#x22;Trigger Setup&amp;#x22;,&amp;#x22;index&amp;#x22;:0}&quot;&gt;&lt;/p&gt;
&lt;p&gt;Add the &lt;a href=&quot;#1-waitlist---start-email&quot;&gt;Waitlist - Start&lt;/a&gt; Email that we created to the journey as the first action.&lt;/p&gt;
&lt;p&gt;Then we add a wait condition and set it up to &lt;code&gt;Until a specified by a trigger&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;As we have access to the event from the trigger, I set this up to the &lt;strong&gt;date you plan to close the waitlist&lt;/strong&gt;, in this example 1 day before the start of the event.&lt;/p&gt;
&lt;p&gt;&lt;img __ASTRO_IMAGE_=&quot;{&amp;#x22;src&amp;#x22;:&amp;#x22;./image2.png&amp;#x22;,&amp;#x22;alt&amp;#x22;:&amp;#x22;Wait Setup&amp;#x22;,&amp;#x22;index&amp;#x22;:0}&quot;&gt;&lt;/p&gt;
&lt;p&gt;This will send the &lt;a href=&quot;#2-waitlist---finish-email&quot;&gt;second email we created&lt;/a&gt; to the people that are in the waitlist at that point.&lt;/p&gt;
&lt;p&gt;For those who entered the journey &lt;strong&gt;but got registered automatically&lt;/strong&gt; if someone else unregisters, we should exit them from this journey, so we should configure the alternate exits, and that’s when &lt;a href=&quot;#3-event-registration-status-change-trigger&quot;&gt;our trigger&lt;/a&gt; comes to play.&lt;/p&gt;
&lt;p&gt;We would select it as an alternate exit and we will add the following conditions:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Status Reason does not equal &lt;code&gt;Waitlisted&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Primary Role equals &lt;code&gt;Attendee&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img __ASTRO_IMAGE_=&quot;{&amp;#x22;src&amp;#x22;:&amp;#x22;./image4.png&amp;#x22;,&amp;#x22;alt&amp;#x22;:&amp;#x22;Exit Setup&amp;#x22;,&amp;#x22;index&amp;#x22;:0}&quot;&gt;&lt;/p&gt;
&lt;p&gt;With this journey the waitlisted registrations for the &lt;strong&gt;people in the attendee role will be handled&lt;/strong&gt;, additionally, we’ll add a journey for the companions.&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&quot;5-waitlist-companions-journey&quot;&gt;5. “Waitlist Companions” Journey&lt;/h3&gt;
&lt;p&gt;&lt;em&gt;Save as&lt;/em&gt; the previous Journey and setup the start and the exit so that it is filtered for the companion instead of the attendee as a primary role:&lt;/p&gt;
&lt;p&gt;&lt;img __ASTRO_IMAGE_=&quot;{&amp;#x22;src&amp;#x22;:&amp;#x22;./image5.png&amp;#x22;,&amp;#x22;alt&amp;#x22;:&amp;#x22;Exit Setup&amp;#x22;,&amp;#x22;index&amp;#x22;:0}&quot;&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&quot;last-tips&quot;&gt;Last Tips&lt;/h3&gt;
&lt;p&gt;&lt;em&gt;This setup can cause issues if you have multiple events using these journeys for waitlisting and registration. To avoid this I recommend using these journeys as a template and create 2 Journeys filtered by event so they don’t overlap.&lt;/em&gt;&lt;/p&gt;
&lt;h2 id=&quot;conclusion&quot;&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;Handling waitlists is already challenging—but when companions are involved, the complexity increases quickly.&lt;/p&gt;
&lt;p&gt;By separating attendees and companions into &lt;strong&gt;dedicated journeys&lt;/strong&gt;, and combining them with:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;dynamic emails&lt;/li&gt;
&lt;li&gt;a status change trigger&lt;/li&gt;
&lt;li&gt;and clear communication logic&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;you can turn a messy manual process into a &lt;strong&gt;fully automated and user-friendly experience&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;The key idea is simple:&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Give control back to the attendee while keeping the system reactive.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;This pattern is not limited to events—you can reuse it in:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;capacity-based campaigns&lt;/li&gt;
&lt;li&gt;VIP access scenarios&lt;/li&gt;
&lt;li&gt;or any process where availability changes over time&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you haven’t read &lt;a href=&quot;/writing/customer-insights-waitlist-1&quot;&gt;Part 1&lt;/a&gt; yet, I highly recommend starting there to understand how the waitlisting logic is initialized.&lt;/p&gt;
&lt;p&gt;And if you try this approach in your projects, I’d love to hear how it worked for you 😉&lt;/p&gt;</content:encoded><category>Power Platform</category><category>Dynamics 365 Customer Insights Journeys</category><category>Marketing Automation</category><category>Waitlisting</category><category>Event Management</category><category>Power Platform Development</category></item><item><title>“Can I Bring Someone?” Solving Plus-One Waitlisting in Customer Insights Journeys (Part 1)</title><link>https://martinplopez.com/writing/customer-insights-waitlist-1/</link><guid isPermaLink="true">https://martinplopez.com/writing/customer-insights-waitlist-1/</guid><description>Learn how to handle plus-one event registrations in Dynamics 365 Customer Insights Journeys using waitlists and Power Automate. Extend the out-of-the-box event logic to avoid overbooking and improve attendee management.</description><pubDate>Thu, 26 Mar 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Events are rarely a solo experience.&lt;/p&gt;
&lt;p&gt;In many scenarios, attendees want to bring a guest — a colleague, a partner, or a friend. But in &lt;strong&gt;Dynamics 365 Customer Insights – Journeys&lt;/strong&gt;, handling “plus one” scenarios is not supported out-of-the-box.&lt;/p&gt;
&lt;p&gt;This creates a real problem:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Your event shows &lt;strong&gt;1 registration&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;But &lt;strong&gt;2 people actually show up&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Multiply that across dozens of attendees… and suddenly your event is over capacity.&lt;/p&gt;
&lt;p&gt;In this article, I’ll show you how to solve this using:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The &lt;strong&gt;built-in waitlist feature&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;A &lt;strong&gt;Power Automate flow&lt;/strong&gt; to create companion registrations&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;div class=&quot;markdown-alert markdown-alert-note&quot; dir=&quot;auto&quot;&gt;
&lt;p class=&quot;markdown-alert-title&quot; dir=&quot;auto&quot;&gt;&lt;svg class=&quot;octicon&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot; height=&quot;16&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M0 8a8 8 0 1 1 16 0A8 8 0 0 1 0 8Zm8-6.5a6.5 6.5 0 1 0 0 13 6.5 6.5 0 0 0 0-13ZM6.5 7.75A.75.75 0 0 1 7.25 7h1a.75.75 0 0 1 .75.75v2.75h.25a.75.75 0 0 1 0 1.5h-2a.75.75 0 0 1 0-1.5h.25v-2h-.25a.75.75 0 0 1-.75-.75ZM8 6a1 1 0 1 1 0-2 1 1 0 0 1 0 2Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;NOTE&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;TL;DR:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Customer Insights Journeys includes a built-in waitlist for events&lt;/li&gt;
&lt;li&gt;It works well for single attendees but not for “plus one” scenarios&lt;/li&gt;
&lt;li&gt;We can extend it with Power Automate to create and manage companion registrations&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;hr&gt;
&lt;h2 id=&quot;the-problem-with-plus-one-registrations&quot;&gt;The Problem with Plus-One Registrations&lt;/h2&gt;
&lt;p&gt;The typical flow looks like this:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;A contact registers and selects “I’ll bring someone”&lt;/li&gt;
&lt;li&gt;A single registration is created&lt;/li&gt;
&lt;li&gt;The event capacity increases by &lt;strong&gt;1&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;In reality, &lt;strong&gt;2 people attend&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;This leads to:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Overbooked venues&lt;/li&gt;
&lt;li&gt;Poor attendee experience&lt;/li&gt;
&lt;li&gt;Manual corrections by organizers&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&quot;possible-approaches-and-why-they-fall-short&quot;&gt;Possible Approaches (and Why They Fall Short)&lt;/h2&gt;
&lt;h3 id=&quot;-disable-plus-one-option&quot;&gt;❌ Disable plus-one option&lt;/h3&gt;
&lt;p&gt;Simple, but negatively impacts user experience.&lt;/p&gt;
&lt;h3 id=&quot;-manual-registration-handling&quot;&gt;❌ Manual registration handling&lt;/h3&gt;
&lt;p&gt;Works for small events, but not scalable.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;the-solution&quot;&gt;The Solution&lt;/h2&gt;
&lt;p&gt;We extend the standard process with:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;A new &lt;strong&gt;“Companion” role&lt;/strong&gt; in Event Registration&lt;/li&gt;
&lt;li&gt;A &lt;strong&gt;Power Automate flow&lt;/strong&gt; that:
&lt;ul&gt;
&lt;li&gt;Detects plus-one selections&lt;/li&gt;
&lt;li&gt;Creates an additional registration&lt;/li&gt;
&lt;li&gt;Applies waitlisting when needed&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;how-does-the-process-look-like&quot;&gt;How does the process look like&lt;/h3&gt;
&lt;p&gt;Before diving into the implementation, here’s the idea:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;The attendee registers normally&lt;/li&gt;
&lt;li&gt;We detect if they selected “plus one”&lt;/li&gt;
&lt;li&gt;We create an additional registration:
&lt;ul&gt;
&lt;li&gt;If capacity allows → Registered&lt;/li&gt;
&lt;li&gt;If not → Waitlisted&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;We assign a custom role (Companion) to distinguish it&lt;/li&gt;
&lt;/ol&gt;
&lt;div class=&quot;scroll-x&quot; tabindex=&quot;0&quot; style=&quot;--dw:737px&quot;&gt;&lt;svg id=&quot;mermaid-0&quot; width=&quot;100%&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot; xmlns:xlink=&quot;http://www.w3.org/1999/xlink&quot; class=&quot;flowchart&quot; style=&quot;max-width: 736.828125px;&quot; viewBox=&quot;0 0 736.828125 174&quot; role=&quot;graphics-document document&quot; aria-roledescription=&quot;flowchart-v2&quot;&gt;&lt;style&gt;#mermaid-0{font-family:arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-0 .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-0 .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-0 .error-icon{fill:#552222;}#mermaid-0 .error-text{fill:#552222;stroke:#552222;}#mermaid-0 .edge-thickness-normal{stroke-width:1px;}#mermaid-0 .edge-thickness-thick{stroke-width:3.5px;}#mermaid-0 .edge-pattern-solid{stroke-dasharray:0;}#mermaid-0 .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-0 .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-0 .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-0 .marker{fill:#333333;stroke:#333333;}#mermaid-0 .marker.cross{stroke:#333333;}#mermaid-0 svg{font-family:arial,sans-serif;font-size:16px;}#mermaid-0 p{margin:0;}#mermaid-0 .label{font-family:arial,sans-serif;color:#333;}#mermaid-0 .cluster-label text{fill:#333;}#mermaid-0 .cluster-label span{color:#333;}#mermaid-0 .cluster-label span p{background-color:transparent;}#mermaid-0 .label text,#mermaid-0 span{fill:#333;color:#333;}#mermaid-0 .node rect,#mermaid-0 .node circle,#mermaid-0 .node ellipse,#mermaid-0 .node polygon,#mermaid-0 .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-0 .rough-node .label text,#mermaid-0 .node .label text,#mermaid-0 .image-shape .label,#mermaid-0 .icon-shape .label{text-anchor:middle;}#mermaid-0 .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-0 .rough-node .label,#mermaid-0 .node .label,#mermaid-0 .image-shape .label,#mermaid-0 .icon-shape .label{text-align:center;}#mermaid-0 .node.clickable{cursor:pointer;}#mermaid-0 .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-0 .arrowheadPath{fill:#333333;}#mermaid-0 .edgePath .path{stroke:#333333;stroke-width:1px;}#mermaid-0 .flowchart-link{stroke:#333333;fill:none;}#mermaid-0 .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-0 .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-0 .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-0 .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-0 .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-0 .cluster text{fill:#333;}#mermaid-0 .cluster span{color:#333;}#mermaid-0 div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-0 .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-0 rect.text{fill:none;stroke-width:0;}#mermaid-0 .icon-shape,#mermaid-0 .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-0 .icon-shape p,#mermaid-0 .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-0 .icon-shape .label rect,#mermaid-0 .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-0 .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-0 .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-0 .node .neo-node{stroke:#9370DB;}#mermaid-0 [data-look=&quot;neo&quot;].node rect,#mermaid-0 [data-look=&quot;neo&quot;].cluster rect,#mermaid-0 [data-look=&quot;neo&quot;].node polygon{stroke:#9370DB;filter:drop-shadow(1px 2px 2px rgba(185, 185, 185, 1));}#mermaid-0 [data-look=&quot;neo&quot;].node path{stroke:#9370DB;stroke-width:1px;}#mermaid-0 [data-look=&quot;neo&quot;].node .outer-path{filter:drop-shadow(1px 2px 2px rgba(185, 185, 185, 1));}#mermaid-0 [data-look=&quot;neo&quot;].node .neo-line path{stroke:#9370DB;filter:none;}#mermaid-0 [data-look=&quot;neo&quot;].node circle{stroke:#9370DB;filter:drop-shadow(1px 2px 2px rgba(185, 185, 185, 1));}#mermaid-0 [data-look=&quot;neo&quot;].node circle .state-start{fill:#000000;}#mermaid-0 [data-look=&quot;neo&quot;].icon-shape .icon{fill:#9370DB;filter:drop-shadow(1px 2px 2px rgba(185, 185, 185, 1));}#mermaid-0 [data-look=&quot;neo&quot;].icon-shape .icon-neo path{stroke:#9370DB;filter:drop-shadow(1px 2px 2px rgba(185, 185, 185, 1));}#mermaid-0 :root{--mermaid-font-family:arial,sans-serif;}&lt;/style&gt;&lt;g&gt;&lt;marker id=&quot;mermaid-0_flowchart-v2-pointEnd&quot; class=&quot;marker flowchart-v2&quot; viewBox=&quot;0 0 10 10&quot; refX=&quot;5&quot; refY=&quot;5&quot; markerUnits=&quot;userSpaceOnUse&quot; markerWidth=&quot;8&quot; markerHeight=&quot;8&quot; orient=&quot;auto&quot;&gt;&lt;path d=&quot;M 0 0 L 10 5 L 0 10 z&quot; class=&quot;arrowMarkerPath&quot; style=&quot;stroke-width: 1; stroke-dasharray: 1, 0;&quot;&gt;&lt;/path&gt;&lt;/marker&gt;&lt;marker id=&quot;mermaid-0_flowchart-v2-pointStart&quot; class=&quot;marker flowchart-v2&quot; viewBox=&quot;0 0 10 10&quot; refX=&quot;4.5&quot; refY=&quot;5&quot; markerUnits=&quot;userSpaceOnUse&quot; markerWidth=&quot;8&quot; markerHeight=&quot;8&quot; orient=&quot;auto&quot;&gt;&lt;path d=&quot;M 0 5 L 10 10 L 10 0 z&quot; class=&quot;arrowMarkerPath&quot; style=&quot;stroke-width: 1; stroke-dasharray: 1, 0;&quot;&gt;&lt;/path&gt;&lt;/marker&gt;&lt;marker id=&quot;mermaid-0_flowchart-v2-pointEnd-margin&quot; class=&quot;marker flowchart-v2&quot; viewBox=&quot;0 0 11.5 14&quot; refX=&quot;11.5&quot; refY=&quot;7&quot; markerUnits=&quot;userSpaceOnUse&quot; markerWidth=&quot;10.5&quot; markerHeight=&quot;14&quot; orient=&quot;auto&quot;&gt;&lt;path d=&quot;M 0 0 L 11.5 7 L 0 14 z&quot; class=&quot;arrowMarkerPath&quot; style=&quot;stroke-width: 0; stroke-dasharray: 1, 0;&quot;&gt;&lt;/path&gt;&lt;/marker&gt;&lt;marker id=&quot;mermaid-0_flowchart-v2-pointStart-margin&quot; class=&quot;marker flowchart-v2&quot; viewBox=&quot;0 0 11.5 14&quot; refX=&quot;1&quot; refY=&quot;7&quot; markerUnits=&quot;userSpaceOnUse&quot; markerWidth=&quot;11.5&quot; markerHeight=&quot;14&quot; orient=&quot;auto&quot;&gt;&lt;polygon points=&quot;0,7 11.5,14 11.5,0&quot; class=&quot;arrowMarkerPath&quot; style=&quot;stroke-width: 0; stroke-dasharray: 1, 0;&quot;&gt;&lt;/polygon&gt;&lt;/marker&gt;&lt;marker id=&quot;mermaid-0_flowchart-v2-circleEnd&quot; class=&quot;marker flowchart-v2&quot; viewBox=&quot;0 0 10 10&quot; refX=&quot;11&quot; refY=&quot;5&quot; markerUnits=&quot;userSpaceOnUse&quot; markerWidth=&quot;11&quot; markerHeight=&quot;11&quot; orient=&quot;auto&quot;&gt;&lt;circle cx=&quot;5&quot; cy=&quot;5&quot; r=&quot;5&quot; class=&quot;arrowMarkerPath&quot; style=&quot;stroke-width: 1; stroke-dasharray: 1, 0;&quot;&gt;&lt;/circle&gt;&lt;/marker&gt;&lt;marker id=&quot;mermaid-0_flowchart-v2-circleStart&quot; class=&quot;marker flowchart-v2&quot; viewBox=&quot;0 0 10 10&quot; refX=&quot;-1&quot; refY=&quot;5&quot; markerUnits=&quot;userSpaceOnUse&quot; markerWidth=&quot;11&quot; markerHeight=&quot;11&quot; orient=&quot;auto&quot;&gt;&lt;circle cx=&quot;5&quot; cy=&quot;5&quot; r=&quot;5&quot; class=&quot;arrowMarkerPath&quot; style=&quot;stroke-width: 1; stroke-dasharray: 1, 0;&quot;&gt;&lt;/circle&gt;&lt;/marker&gt;&lt;marker id=&quot;mermaid-0_flowchart-v2-circleEnd-margin&quot; class=&quot;marker flowchart-v2&quot; viewBox=&quot;0 0 10 10&quot; refY=&quot;5&quot; refX=&quot;12.25&quot; markerUnits=&quot;userSpaceOnUse&quot; markerWidth=&quot;14&quot; markerHeight=&quot;14&quot; orient=&quot;auto&quot;&gt;&lt;circle cx=&quot;5&quot; cy=&quot;5&quot; r=&quot;5&quot; class=&quot;arrowMarkerPath&quot; style=&quot;stroke-width: 0; stroke-dasharray: 1, 0;&quot;&gt;&lt;/circle&gt;&lt;/marker&gt;&lt;marker id=&quot;mermaid-0_flowchart-v2-circleStart-margin&quot; class=&quot;marker flowchart-v2&quot; viewBox=&quot;0 0 10 10&quot; refX=&quot;-2&quot; refY=&quot;5&quot; markerUnits=&quot;userSpaceOnUse&quot; markerWidth=&quot;14&quot; markerHeight=&quot;14&quot; orient=&quot;auto&quot;&gt;&lt;circle cx=&quot;5&quot; cy=&quot;5&quot; r=&quot;5&quot; class=&quot;arrowMarkerPath&quot; style=&quot;stroke-width: 0; stroke-dasharray: 1, 0;&quot;&gt;&lt;/circle&gt;&lt;/marker&gt;&lt;marker id=&quot;mermaid-0_flowchart-v2-crossEnd&quot; class=&quot;marker cross flowchart-v2&quot; viewBox=&quot;0 0 11 11&quot; refX=&quot;12&quot; refY=&quot;5.2&quot; markerUnits=&quot;userSpaceOnUse&quot; markerWidth=&quot;11&quot; markerHeight=&quot;11&quot; orient=&quot;auto&quot;&gt;&lt;path d=&quot;M 1,1 l 9,9 M 10,1 l -9,9&quot; class=&quot;arrowMarkerPath&quot; style=&quot;stroke-width: 2; stroke-dasharray: 1, 0;&quot;&gt;&lt;/path&gt;&lt;/marker&gt;&lt;marker id=&quot;mermaid-0_flowchart-v2-crossStart&quot; class=&quot;marker cross flowchart-v2&quot; viewBox=&quot;0 0 11 11&quot; refX=&quot;-1&quot; refY=&quot;5.2&quot; markerUnits=&quot;userSpaceOnUse&quot; markerWidth=&quot;11&quot; markerHeight=&quot;11&quot; orient=&quot;auto&quot;&gt;&lt;path d=&quot;M 1,1 l 9,9 M 10,1 l -9,9&quot; class=&quot;arrowMarkerPath&quot; style=&quot;stroke-width: 2; stroke-dasharray: 1, 0;&quot;&gt;&lt;/path&gt;&lt;/marker&gt;&lt;marker id=&quot;mermaid-0_flowchart-v2-crossEnd-margin&quot; class=&quot;marker cross flowchart-v2&quot; viewBox=&quot;0 0 15 15&quot; refX=&quot;17.7&quot; refY=&quot;7.5&quot; markerUnits=&quot;userSpaceOnUse&quot; markerWidth=&quot;12&quot; markerHeight=&quot;12&quot; orient=&quot;auto&quot;&gt;&lt;path d=&quot;M 1,1 L 14,14 M 1,14 L 14,1&quot; class=&quot;arrowMarkerPath&quot; style=&quot;stroke-width: 2.5;&quot;&gt;&lt;/path&gt;&lt;/marker&gt;&lt;marker id=&quot;mermaid-0_flowchart-v2-crossStart-margin&quot; class=&quot;marker cross flowchart-v2&quot; viewBox=&quot;0 0 15 15&quot; refX=&quot;-3.5&quot; refY=&quot;7.5&quot; markerUnits=&quot;userSpaceOnUse&quot; markerWidth=&quot;12&quot; markerHeight=&quot;12&quot; orient=&quot;auto&quot;&gt;&lt;path d=&quot;M 1,1 L 14,14 M 1,14 L 14,1&quot; class=&quot;arrowMarkerPath&quot; style=&quot;stroke-width: 2.5; stroke-dasharray: 1, 0;&quot;&gt;&lt;/path&gt;&lt;/marker&gt;&lt;g class=&quot;root&quot;&gt;&lt;g class=&quot;clusters&quot;&gt;&lt;/g&gt;&lt;g class=&quot;edgePaths&quot;&gt;&lt;path d=&quot;M153.375,87L157.542,87C161.708,87,170.042,87,177.708,87C185.375,87,192.375,87,195.875,87L199.375,87&quot; id=&quot;mermaid-0-L_A_B_0&quot; class=&quot;edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link&quot; style=&quot;;&quot; data-edge=&quot;true&quot; data-et=&quot;edge&quot; data-id=&quot;L_A_B_0&quot; data-points=&quot;W3sieCI6MTUzLjM3NSwieSI6ODd9LHsieCI6MTc4LjM3NSwieSI6ODd9LHsieCI6MjAzLjM3NSwieSI6ODd9XQ==&quot; data-look=&quot;classic&quot; marker-end=&quot;url(#mermaid-0_flowchart-v2-pointEnd)&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M297.156,87L301.323,87C305.49,87,313.823,87,321.49,87C329.156,87,336.156,87,339.656,87L343.156,87&quot; id=&quot;mermaid-0-L_B_C_0&quot; class=&quot;edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link&quot; style=&quot;;&quot; data-edge=&quot;true&quot; data-et=&quot;edge&quot; data-id=&quot;L_B_C_0&quot; data-points=&quot;W3sieCI6Mjk3LjE1NjI1LCJ5Ijo4N30seyJ4IjozMjIuMTU2MjUsInkiOjg3fSx7IngiOjM0Ny4xNTYyNSwieSI6ODd9XQ==&quot; data-look=&quot;classic&quot; marker-end=&quot;url(#mermaid-0_flowchart-v2-pointEnd)&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M507.728,60L517.515,55.833C527.303,51.667,546.878,43.333,560.166,39.167C573.453,35,580.453,35,583.953,35L587.453,35&quot; id=&quot;mermaid-0-L_C_D_0&quot; class=&quot;edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link&quot; style=&quot;;&quot; data-edge=&quot;true&quot; data-et=&quot;edge&quot; data-id=&quot;L_C_D_0&quot; data-points=&quot;W3sieCI6NTA3LjcyNzkxNDY2MzQ2MTU1LCJ5Ijo2MH0seyJ4Ijo1NjYuNDUzMTI1LCJ5IjozNX0seyJ4Ijo1OTEuNDUzMTI1LCJ5IjozNX1d&quot; data-look=&quot;classic&quot; marker-end=&quot;url(#mermaid-0_flowchart-v2-pointEnd)&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M507.728,114L517.515,118.167C527.303,122.333,546.878,130.667,560.883,134.833C574.888,139,583.323,139,587.54,139L591.758,139&quot; id=&quot;mermaid-0-L_C_E_0&quot; class=&quot;edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link&quot; style=&quot;;&quot; data-edge=&quot;true&quot; data-et=&quot;edge&quot; data-id=&quot;L_C_E_0&quot; data-points=&quot;W3sieCI6NTA3LjcyNzkxNDY2MzQ2MTU1LCJ5IjoxMTR9LHsieCI6NTY2LjQ1MzEyNSwieSI6MTM5fSx7IngiOjU5NS43NTc4MTI1LCJ5IjoxMzl9XQ==&quot; data-look=&quot;classic&quot; marker-end=&quot;url(#mermaid-0_flowchart-v2-pointEnd)&quot;&gt;&lt;/path&gt;&lt;/g&gt;&lt;g class=&quot;edgeLabels&quot;&gt;&lt;g class=&quot;edgeLabel&quot;&gt;&lt;g class=&quot;label&quot; data-id=&quot;L_A_B_0&quot; transform=&quot;translate(0, 0)&quot;&gt;&lt;foreignObject width=&quot;0&quot; height=&quot;0&quot;&gt;&lt;div xmlns=&quot;http://www.w3.org/1999/xhtml&quot; class=&quot;labelBkg&quot; style=&quot;display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;&quot;&gt;&lt;span class=&quot;edgeLabel&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class=&quot;edgeLabel&quot;&gt;&lt;g class=&quot;label&quot; data-id=&quot;L_B_C_0&quot; transform=&quot;translate(0, 0)&quot;&gt;&lt;foreignObject width=&quot;0&quot; height=&quot;0&quot;&gt;&lt;div xmlns=&quot;http://www.w3.org/1999/xhtml&quot; class=&quot;labelBkg&quot; style=&quot;display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;&quot;&gt;&lt;span class=&quot;edgeLabel&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class=&quot;edgeLabel&quot;&gt;&lt;g class=&quot;label&quot; data-id=&quot;L_C_D_0&quot; transform=&quot;translate(0, 0)&quot;&gt;&lt;foreignObject width=&quot;0&quot; height=&quot;0&quot;&gt;&lt;div xmlns=&quot;http://www.w3.org/1999/xhtml&quot; class=&quot;labelBkg&quot; style=&quot;display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;&quot;&gt;&lt;span class=&quot;edgeLabel&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class=&quot;edgeLabel&quot;&gt;&lt;g class=&quot;label&quot; data-id=&quot;L_C_E_0&quot; transform=&quot;translate(0, 0)&quot;&gt;&lt;foreignObject width=&quot;0&quot; height=&quot;0&quot;&gt;&lt;div xmlns=&quot;http://www.w3.org/1999/xhtml&quot; class=&quot;labelBkg&quot; style=&quot;display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;&quot;&gt;&lt;span class=&quot;edgeLabel&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class=&quot;nodes&quot;&gt;&lt;g class=&quot;node default&quot; id=&quot;mermaid-0-flowchart-A-0&quot; data-look=&quot;classic&quot; transform=&quot;translate(80.6875, 87)&quot;&gt;&lt;rect class=&quot;basic label-container&quot; style=&quot;&quot; x=&quot;-72.6875&quot; y=&quot;-27&quot; width=&quot;145.375&quot; height=&quot;54&quot;&gt;&lt;/rect&gt;&lt;g class=&quot;label&quot; style=&quot;&quot; transform=&quot;translate(-42.6875, -12)&quot;&gt;&lt;rect&gt;&lt;/rect&gt;&lt;foreignObject width=&quot;85.375&quot; height=&quot;24&quot;&gt;&lt;div xmlns=&quot;http://www.w3.org/1999/xhtml&quot; style=&quot;display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;&quot;&gt;&lt;span class=&quot;nodeLabel&quot;&gt;&lt;p&gt;Registration&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class=&quot;node default&quot; id=&quot;mermaid-0-flowchart-B-1&quot; data-look=&quot;classic&quot; transform=&quot;translate(250.265625, 87)&quot;&gt;&lt;rect class=&quot;basic label-container&quot; style=&quot;&quot; x=&quot;-46.890625&quot; y=&quot;-27&quot; width=&quot;93.78125&quot; height=&quot;54&quot;&gt;&lt;/rect&gt;&lt;g class=&quot;label&quot; style=&quot;&quot; transform=&quot;translate(-16.890625, -12)&quot;&gt;&lt;rect&gt;&lt;/rect&gt;&lt;foreignObject width=&quot;33.78125&quot; height=&quot;24&quot;&gt;&lt;div xmlns=&quot;http://www.w3.org/1999/xhtml&quot; style=&quot;display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;&quot;&gt;&lt;span class=&quot;nodeLabel&quot;&gt;&lt;p&gt;Flow&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class=&quot;node default&quot; id=&quot;mermaid-0-flowchart-C-3&quot; data-look=&quot;classic&quot; transform=&quot;translate(444.3046875, 87)&quot;&gt;&lt;rect class=&quot;basic label-container&quot; style=&quot;&quot; x=&quot;-97.1484375&quot; y=&quot;-27&quot; width=&quot;194.296875&quot; height=&quot;54&quot;&gt;&lt;/rect&gt;&lt;g class=&quot;label&quot; style=&quot;&quot; transform=&quot;translate(-67.1484375, -12)&quot;&gt;&lt;rect&gt;&lt;/rect&gt;&lt;foreignObject width=&quot;134.296875&quot; height=&quot;24&quot;&gt;&lt;div xmlns=&quot;http://www.w3.org/1999/xhtml&quot; style=&quot;display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;&quot;&gt;&lt;span class=&quot;nodeLabel&quot;&gt;&lt;p&gt;Create Companion&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class=&quot;node default&quot; id=&quot;mermaid-0-flowchart-D-5&quot; data-look=&quot;classic&quot; transform=&quot;translate(660.140625, 35)&quot;&gt;&lt;rect class=&quot;basic label-container&quot; style=&quot;&quot; x=&quot;-68.6875&quot; y=&quot;-27&quot; width=&quot;137.375&quot; height=&quot;54&quot;&gt;&lt;/rect&gt;&lt;g class=&quot;label&quot; style=&quot;&quot; transform=&quot;translate(-38.6875, -12)&quot;&gt;&lt;rect&gt;&lt;/rect&gt;&lt;foreignObject width=&quot;77.375&quot; height=&quot;24&quot;&gt;&lt;div xmlns=&quot;http://www.w3.org/1999/xhtml&quot; style=&quot;display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;&quot;&gt;&lt;span class=&quot;nodeLabel&quot;&gt;&lt;p&gt;Registered&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class=&quot;node default&quot; id=&quot;mermaid-0-flowchart-E-7&quot; data-look=&quot;classic&quot; transform=&quot;translate(660.140625, 139)&quot;&gt;&lt;rect class=&quot;basic label-container&quot; style=&quot;&quot; x=&quot;-64.3828125&quot; y=&quot;-27&quot; width=&quot;128.765625&quot; height=&quot;54&quot;&gt;&lt;/rect&gt;&lt;g class=&quot;label&quot; style=&quot;&quot; transform=&quot;translate(-34.3828125, -12)&quot;&gt;&lt;rect&gt;&lt;/rect&gt;&lt;foreignObject width=&quot;68.765625&quot; height=&quot;24&quot;&gt;&lt;div xmlns=&quot;http://www.w3.org/1999/xhtml&quot; style=&quot;display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;&quot;&gt;&lt;span class=&quot;nodeLabel&quot;&gt;&lt;p&gt;Waitlisted&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;/g&gt;&lt;/g&gt;&lt;/g&gt;&lt;defs&gt;&lt;filter id=&quot;mermaid-0-drop-shadow&quot; height=&quot;130%&quot; width=&quot;130%&quot;&gt;&lt;feDropShadow dx=&quot;4&quot; dy=&quot;4&quot; stdDeviation=&quot;0&quot; flood-opacity=&quot;0.06&quot; flood-color=&quot;#000000&quot;&gt;&lt;/feDropShadow&gt;&lt;/filter&gt;&lt;/defs&gt;&lt;defs&gt;&lt;filter id=&quot;mermaid-0-drop-shadow-small&quot; height=&quot;150%&quot; width=&quot;150%&quot;&gt;&lt;feDropShadow dx=&quot;2&quot; dy=&quot;2&quot; stdDeviation=&quot;0&quot; flood-opacity=&quot;0.06&quot; flood-color=&quot;#000000&quot;&gt;&lt;/feDropShadow&gt;&lt;/filter&gt;&lt;/defs&gt;&lt;/svg&gt;&lt;/div&gt;
&lt;p&gt;This keeps the event capacity accurate and leverages the native waitlist logic.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;how-to-make-this-happen&quot;&gt;How to make this happen&lt;/h2&gt;
&lt;p&gt;This solution involves &lt;strong&gt;only one customization&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Adding a new option in the &lt;strong&gt;“Primary Role”&lt;/strong&gt; of the registration&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img __ASTRO_IMAGE_=&quot;{&amp;#x22;src&amp;#x22;:&amp;#x22;./image1.png&amp;#x22;,&amp;#x22;alt&amp;#x22;:&amp;#x22;Primary Role of Registration&amp;#x22;,&amp;#x22;index&amp;#x22;:0}&quot;&gt;&lt;/p&gt;
&lt;p&gt;If this sounds too heavy, you can use a &lt;strong&gt;ready-made solution&lt;/strong&gt;: &lt;a href=&quot;https://github.com/martinplopez/CompanionRole&quot;&gt;Companion Role Solution in Github&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Once created, you’ll see the new option in the &lt;strong&gt;registration form&lt;/strong&gt;.&lt;/p&gt;
&lt;hr&gt;
&lt;figure class=&quot;prose-figure&quot;&gt;&lt;img __ASTRO_IMAGE_=&quot;{&amp;#x22;src&amp;#x22;:&amp;#x22;./image2.png&amp;#x22;,&amp;#x22;alt&amp;#x22;:&amp;#x22;The New Option!&amp;#x22;,&amp;#x22;title&amp;#x22;:&amp;#x22;If companion it&amp;#x27;s not a correct word for an acompañante/Begleitungperson, I&amp;#x27;m sorry, not a native english speaker 😅&amp;#x22;,&amp;#x22;index&amp;#x22;:0}&quot;&gt;&lt;figcaption class=&quot;prose-figure__caption&quot;&gt;If companion it&apos;s not a correct word for an acompañante/Begleitungperson, I&apos;m sorry, not a native english speaker 😅&lt;/figcaption&gt;&lt;/figure&gt;
&lt;hr&gt;
&lt;h3 id=&quot;setup-of-the-form&quot;&gt;Setup of the Form&lt;/h3&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;⚠️ &lt;strong&gt;Important:&lt;/strong&gt; Save the &lt;strong&gt;logical field name&lt;/strong&gt;, this will be used to fetch the response in Power Automate&lt;/p&gt;
&lt;p&gt;Make sure:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The field is &lt;strong&gt;required&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Default value is &lt;strong&gt;“No, I’m coming alone”&lt;/strong&gt; (recommended)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img __ASTRO_IMAGE_=&quot;{&amp;#x22;src&amp;#x22;:&amp;#x22;./image3.png&amp;#x22;,&amp;#x22;alt&amp;#x22;:&amp;#x22;Setup the Form&amp;#x22;,&amp;#x22;index&amp;#x22;:0}&quot;&gt;&lt;/p&gt;
&lt;p&gt;Also ensure:&lt;/p&gt;
&lt;p&gt;The event has &lt;strong&gt;waitlist enabled&lt;/strong&gt; — otherwise, &lt;strong&gt;everyone will be registered&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;img __ASTRO_IMAGE_=&quot;{&amp;#x22;src&amp;#x22;:&amp;#x22;./image4.png&amp;#x22;,&amp;#x22;alt&amp;#x22;:&amp;#x22;Waitlist Settings&amp;#x22;,&amp;#x22;index&amp;#x22;:0}&quot;&gt;&lt;/p&gt;
&lt;h3 id=&quot;power-automate-flow-for-creating-the-extra-registrations&quot;&gt;Power Automate Flow for creating the extra registrations&lt;/h3&gt;
&lt;p&gt;Now we build the flow that will &lt;strong&gt;handle plus-one registrations automatically&lt;/strong&gt;&lt;/p&gt;
&lt;h3 id=&quot;1-trigger&quot;&gt;1. Trigger&lt;/h3&gt;
&lt;p&gt;We’ll set up the following:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Change type —&gt; &lt;strong&gt;Added&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Table Name —&gt; &lt;strong&gt;Event Registrations&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Scope —&gt; &lt;strong&gt;Organization&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Filter Rows —&gt; &lt;code&gt;msevtmgt_primaryrole eq null&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img __ASTRO_IMAGE_=&quot;{&amp;#x22;src&amp;#x22;:&amp;#x22;./image5.png&amp;#x22;,&amp;#x22;alt&amp;#x22;:&amp;#x22;Trigger&amp;#x22;,&amp;#x22;index&amp;#x22;:0}&quot;&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&quot;2-retrieve-field-submissions&quot;&gt;2. Retrieve Field Submissions&lt;/h3&gt;
&lt;p&gt;We’ll add the &lt;strong&gt;List Rows&lt;/strong&gt; Action for the Table &lt;strong&gt;Field Submissions&lt;/strong&gt;:&lt;/p&gt;
&lt;p&gt;&lt;img __ASTRO_IMAGE_=&quot;{&amp;#x22;src&amp;#x22;:&amp;#x22;./image6.png&amp;#x22;,&amp;#x22;alt&amp;#x22;:&amp;#x22;Retrieve Field Submissions&amp;#x22;,&amp;#x22;index&amp;#x22;:0}&quot;&gt;&lt;/p&gt;
&lt;p&gt;Then it’s easier and more efficient to use a &lt;strong&gt;fetchxml query&lt;/strong&gt;, you just have to modify the &lt;code&gt;[LOGICALNAME]&lt;/code&gt; for the logical field name that you gave in your form &lt;a href=&quot;#setup-of-the-form&quot;&gt;while setting it up&lt;/a&gt;&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;xml&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;fetch&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt; top&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;1&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;      &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;entity&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt; name&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;msdynmkt_marketingfieldsubmission&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;        &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;attribute&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt; name&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;msdynmkt_localizedfieldvalue&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; /&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;        &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;filter&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;          &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;condition&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt; attribute&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;msdynmkt_localizedfieldname&quot;&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt; operator&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;like&quot;&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt; value&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;[LOGICALNAME]&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; /&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;        &amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;filter&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;        &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;order&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt; attribute&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;msdynmkt_localizedfieldname&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; /&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;        &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;link-entity&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt; name&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;msdynmkt_marketingformsubmission&quot;&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt; from&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;msdynmkt_marketingformsubmissionid&quot;&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt; to&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;msdynmkt_marketingformsubmissionid&quot;&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt; alias&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;Formsubmission&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;          &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;filter&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;            &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;condition&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt; attribute&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;msdynmkt_eventregistration&quot;&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt; operator&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;eq&quot;&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt; value&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;@{triggerOutputs()?[&apos;body/msevtmgt_eventregistrationid&apos;]}&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; /&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;          &amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;filter&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;        &amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;link-entity&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;      &amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;entity&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    &amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;fetch&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;hr&gt;
&lt;h3 id=&quot;3-update-primary-registration&quot;&gt;3. Update Primary Registration&lt;/h3&gt;
&lt;p&gt;We’ll &lt;strong&gt;Update a Row&lt;/strong&gt; with of the entity &lt;strong&gt;Event Registrations&lt;/strong&gt;. With this action, we’ll update the current registration to give the role of the &lt;strong&gt;Attendee&lt;/strong&gt;. In the Row ID, make sure to choose the &lt;strong&gt;Event Registration&lt;/strong&gt; from the trigger a.k.a &lt;code&gt;@{triggerOutputs()?[&apos;body/msevtmgt_eventregistrationid&apos;]}&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;img __ASTRO_IMAGE_=&quot;{&amp;#x22;src&amp;#x22;:&amp;#x22;./image7.png&amp;#x22;,&amp;#x22;alt&amp;#x22;:&amp;#x22;Update Primary Registration&amp;#x22;,&amp;#x22;index&amp;#x22;:0}&quot;&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&quot;4-add-a-condition&quot;&gt;4. Add a condition&lt;/h3&gt;
&lt;p&gt;We’ll add a condition where we check if the &lt;strong&gt;Localized Value Field&lt;/strong&gt; (1) or in technical name &lt;code&gt;@items(&apos;Apply_to_each&apos;)?[&apos;msdynmkt_localizedfieldvalue&apos;]&lt;/code&gt; is equal to 2 (2) (which is the value os the second dropdown normally).&lt;/p&gt;
&lt;p&gt;Be sure to use &lt;code&gt;string(2)&lt;/code&gt; when you’re comparing it, as the value in the localized value field will be a string.&lt;/p&gt;
&lt;p&gt;&lt;img __ASTRO_IMAGE_=&quot;{&amp;#x22;src&amp;#x22;:&amp;#x22;./image8.png&amp;#x22;,&amp;#x22;alt&amp;#x22;:&amp;#x22;Add a condition&amp;#x22;,&amp;#x22;index&amp;#x22;:0}&quot;&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&quot;5-add-a-registration-for-the-plus-one&quot;&gt;5. Add a Registration for the plus one&lt;/h3&gt;
&lt;p&gt;Add a new Row, where the following elements are there:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Table Name —&gt; Event Registrations&lt;/li&gt;
&lt;li&gt;Event (Events) —&gt; &lt;code&gt;/msevtmgt_events/@{triggerOutputs()?[&apos;body/_msevtmgt_eventid_value&apos;]}&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Contact (Contacts) —&gt; &lt;code&gt;/contacts/@{triggerOutputs()?[&apos;body/_msevtmgt_contactid_value&apos;]}&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Registration ID —&gt; &lt;code&gt;@null&lt;/code&gt; (this is an expression)&lt;/li&gt;
&lt;li&gt;Primary Role —&gt; Companion&lt;/li&gt;
&lt;li&gt;Status code —&gt; &lt;strong&gt;Registered&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;figure class=&quot;prose-figure&quot;&gt;&lt;img __ASTRO_IMAGE_=&quot;{&amp;#x22;src&amp;#x22;:&amp;#x22;./image9.png&amp;#x22;,&amp;#x22;alt&amp;#x22;:&amp;#x22;dd a Registration for the plus one&amp;#x22;,&amp;#x22;title&amp;#x22;:&amp;#x22;The names might differ from the picture as my marketing environment is in german, as I&amp;#x27;m based in Switzerland&amp;#x22;,&amp;#x22;index&amp;#x22;:0}&quot;&gt;&lt;figcaption class=&quot;prose-figure__caption&quot;&gt;The names might differ from the picture as my marketing environment is in german, as I&apos;m based in Switzerland&lt;/figcaption&gt;&lt;/figure&gt;
&lt;hr&gt;
&lt;h3 id=&quot;6-add-a-waitlisted-registration-for-the-plus-one&quot;&gt;6. Add a waitlisted registration for the plus one&lt;/h3&gt;
&lt;p&gt;Add a new Row, where the following elements are there:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Table Name —&gt; Event Registrations&lt;/li&gt;
&lt;li&gt;Event (Events) —&gt; &lt;code&gt;/msevtmgt_events/@{triggerOutputs()?[&apos;body/_msevtmgt_eventid_value&apos;]}&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Contact (Contacts) —&gt; &lt;code&gt;/contacts/@{triggerOutputs()?[&apos;body/_msevtmgt_contactid_value&apos;]}&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Registration ID —&gt; &lt;code&gt;@null&lt;/code&gt; (this is an expression)&lt;/li&gt;
&lt;li&gt;Primary Role —&gt; Companion&lt;/li&gt;
&lt;li&gt;Status code —&gt; &lt;strong&gt;Waitlisted&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;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).&lt;/p&gt;
&lt;p&gt;The steps can be found in &lt;a href=&quot;https://learn.microsoft.com/en-us/power-automate/guidance/coding-guidelines/error-handling#configure-run-after-settings&quot;&gt;this Microsoft Learn Article&lt;/a&gt;, but basically can be summarized in:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;...&lt;/code&gt; —&gt; Configure run after —&gt; has failed&lt;/p&gt;
&lt;p&gt;After configuring this, you should see a different line connecting your two “Add a Row”&lt;/p&gt;
&lt;p&gt;&lt;img __ASTRO_IMAGE_=&quot;{&amp;#x22;src&amp;#x22;:&amp;#x22;./image10.png&amp;#x22;,&amp;#x22;alt&amp;#x22;:&amp;#x22;Waitlist Settings&amp;#x22;,&amp;#x22;index&amp;#x22;:0}&quot;&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;stay-tuned-for-the-part-2&quot;&gt;Stay tuned for the Part 2&lt;/h2&gt;
&lt;p&gt;Great! This has been the first part of the &lt;strong&gt;“Can I Bring Someone?”&lt;/strong&gt; Series. We’d gone over:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;How to &lt;strong&gt;capture plus-one intent in forms&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;How to &lt;strong&gt;extend registration roles&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;How to &lt;strong&gt;automate companion registrations with Power Automate&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In Part 2, we’ll take it further:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Notify users if their &lt;strong&gt;plus one is waitlisted&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Allow them to &lt;strong&gt;cancel if needed&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Send updates when &lt;strong&gt;spots become available&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I hope this first part helps you build a cleaner and more reliable &lt;strong&gt;registration process&lt;/strong&gt;. In the next article of the series, we’ll look at how &lt;strong&gt;to communicate the outcome to attendees&lt;/strong&gt; and make the experience smoother when plus ones are involved.&lt;/p&gt;
&lt;p&gt;Until then, take care 🐣&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;⚠️ &lt;strong&gt;UPDATE&lt;/strong&gt; Part 2 is already available in &lt;a href=&quot;/writing/customer-insights-waitlist-2&quot;&gt;“Can I Bring Someone?” - Solving Plus-One Waitlisting in Customer Insights Journeys (Part 2)&lt;/a&gt;&lt;/p&gt;</content:encoded><category>Power Platform</category><category>Dynamics 365 Customer Insights Journeys</category><category>Marketing Automation</category><category>Waitlisting</category><category>Event Management</category><category>Power Automate</category></item><item><title>Guide Users in Customer Insights - Journeys with Custom Help Panes</title><link>https://martinplopez.com/writing/custom-help-page-event/</link><guid isPermaLink="true">https://martinplopez.com/writing/custom-help-page-event/</guid><description>Discover how to use Custom Help Panes in model-driven apps to guide users in Dynamics 365 Customer Insights - Journeys. Improve adoption and reduce training with contextual in-app help.</description><pubDate>Fri, 13 Mar 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Customer Insights - Journeys offers a powerful set of features:
emails, journeys, segments, triggers, events, and forms.&lt;/p&gt;
&lt;p&gt;But for many marketing teams, the challenge isn’t the lack of functionality - it’s navigating all those features efficiently.&lt;/p&gt;
&lt;p&gt;New users often ask questions like:&lt;/p&gt;
&lt;p&gt;Where do I start?
What should I configure first?
Did I miss a step?&lt;/p&gt;
&lt;p&gt;Training sessions and documentation help, but they require users to leave the application to find answers.&lt;/p&gt;
&lt;p&gt;What if the guidance could live directly inside the interface?&lt;/p&gt;
&lt;p&gt;That’s exactly what &lt;strong&gt;Custom Help Panes&lt;/strong&gt; allow you to do.&lt;/p&gt;
&lt;div class=&quot;markdown-alert markdown-alert-note&quot; dir=&quot;auto&quot;&gt;
&lt;p class=&quot;markdown-alert-title&quot; dir=&quot;auto&quot;&gt;&lt;svg class=&quot;octicon&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot; height=&quot;16&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M0 8a8 8 0 1 1 16 0A8 8 0 0 1 0 8Zm8-6.5a6.5 6.5 0 1 0 0 13 6.5 6.5 0 0 0 0-13ZM6.5 7.75A.75.75 0 0 1 7.25 7h1a.75.75 0 0 1 .75.75v2.75h.25a.75.75 0 0 1 0 1.5h-2a.75.75 0 0 1 0-1.5h.25v-2h-.25a.75.75 0 0 1-.75-.75ZM8 6a1 1 0 1 1 0-2 1 1 0 0 1 0 2Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;NOTE&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;TL;DR:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Customer Insights – Journeys runs on a &lt;strong&gt;model-driven app&lt;/strong&gt;, which means you can enable &lt;strong&gt;Custom Help Panes&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;These panes allow you to:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Embed contextual help directly inside forms&lt;/li&gt;
&lt;li&gt;Guide users through processes like email or event creation&lt;/li&gt;
&lt;li&gt;Link to other pages inside the application&lt;/li&gt;
&lt;li&gt;Provide checklists and best practices&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Instead of external documentation, marketers get &lt;strong&gt;step-by-step guidance inside the product&lt;/strong&gt;.&lt;/p&gt;
&lt;/div&gt;
&lt;hr&gt;
&lt;h2 id=&quot;what-are-custom-help-panes&quot;&gt;What Are Custom Help Panes&lt;/h2&gt;
&lt;p&gt;Custom help panes allow you to add &lt;strong&gt;context-sensitive help content inside model-driven apps&lt;/strong&gt;. (In case you were wondering, Customer Insights - Journeys is based in a model-driven app)&lt;/p&gt;
&lt;p&gt;They appear as a &lt;strong&gt;side panel next to the form or page&lt;/strong&gt; and can contain:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Rich text&lt;/li&gt;
&lt;li&gt;Links&lt;/li&gt;
&lt;li&gt;Images&lt;/li&gt;
&lt;li&gt;Videos&lt;/li&gt;
&lt;li&gt;Coach marks and help balloons&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;One useful behavior: the help pane &lt;strong&gt;remains open while the user navigates between forms&lt;/strong&gt;, so you can guide users across multiple steps.&lt;/p&gt;
&lt;p&gt;This makes it ideal for &lt;strong&gt;step-by-step marketing processes!&lt;/strong&gt;.&lt;/p&gt;
&lt;h2 id=&quot;why-they-are-useful-for-ci-journeys&quot;&gt;Why They Are Useful for CI Journeys&lt;/h2&gt;
&lt;p&gt;Instead of making a documentation about all the steps the marketers have to do to create an email, or a journey, you can just directly add a help pane to the Journey or the Email!&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/writing/custom-help-page-event/image.gif&quot; alt=&quot;Ballons and Coachmarks are super useful&quot;&gt;&lt;/p&gt;
&lt;p&gt;But it’s better to see some real life examples 🐣&lt;/p&gt;
&lt;h3 id=&quot;example-1--email-creation&quot;&gt;Example 1 – Email creation&lt;/h3&gt;
&lt;p&gt;Inside the email form you can create a Email creation guidance. Here a sample of how the pane can look like
Help pane content example:&lt;/p&gt;
&lt;div class=&quot;markdown-alert markdown-alert-tip&quot; dir=&quot;auto&quot;&gt;
&lt;p class=&quot;markdown-alert-title&quot; dir=&quot;auto&quot;&gt;&lt;svg class=&quot;octicon&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot; height=&quot;16&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8 1.5c-2.363 0-4 1.69-4 3.75 0 .984.424 1.625.984 2.304l.214.253c.223.264.47.556.673.848.284.411.537.896.621 1.49a.75.75 0 0 1-1.484.211c-.04-.282-.163-.547-.37-.847a8.456 8.456 0 0 0-.542-.68c-.084-.1-.173-.205-.268-.32C3.201 7.75 2.5 6.766 2.5 5.25 2.5 2.31 4.863 0 8 0s5.5 2.31 5.5 5.25c0 1.516-.701 2.5-1.328 3.259-.095.115-.184.22-.268.319-.207.245-.383.453-.541.681-.208.3-.33.565-.37.847a.751.751 0 0 1-1.485-.212c.084-.593.337-1.078.621-1.489.203-.292.45-.584.673-.848.075-.088.147-.173.213-.253.561-.679.985-1.32.985-2.304 0-2.06-1.637-3.75-4-3.75ZM5.75 12h4.5a.75.75 0 0 1 0 1.5h-4.5a.75.75 0 0 1 0-1.5ZM6 15.25a.75.75 0 0 1 .75-.75h2.5a.75.75 0 0 1 0 1.5h-2.5a.75.75 0 0 1-.75-.75Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;TIP&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Example Help Page for Email&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id=&quot;purpose&quot;&gt;Purpose&lt;/h2&gt;
&lt;p&gt;Use this checklist when creating marketing emails in &lt;strong&gt;Customer Insights - Journeys&lt;/strong&gt; to ensure branding, compliance, and deliverability best
practices are followed.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;1-use-an-approved-template&quot;&gt;1. Use an Approved Template&lt;/h2&gt;
&lt;p&gt;Start from an &lt;strong&gt;approved marketing template&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Checklist:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Use the official &lt;strong&gt;company email template&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Verify &lt;strong&gt;branding elements&lt;/strong&gt; (logo, colors, fonts)&lt;/li&gt;
&lt;li&gt;Do not remove required &lt;strong&gt;footer elements&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Ensure layout works on &lt;strong&gt;desktop and mobile&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&quot;2-verify-sender-information&quot;&gt;2. Verify Sender Information&lt;/h2&gt;
&lt;p&gt;Ensure the sender is recognizable and trustworthy.&lt;/p&gt;
&lt;p&gt;Checklist:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Confirm the &lt;strong&gt;Sender Name&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Confirm the &lt;strong&gt;Sender Email Address&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Use an approved sender domain&lt;/li&gt;
&lt;li&gt;Avoid generic names like &lt;code&gt;Marketing Team&lt;/code&gt; unless defined by brand
guidelines&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Example:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Sender Name: Martin P Lopez&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Sender Email Address: events@martinplopez.com&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;hr&gt;
&lt;h2 id=&quot;3-check-personalization&quot;&gt;3. Check Personalization&lt;/h2&gt;
&lt;p&gt;Validate all dynamic content.&lt;/p&gt;
&lt;p&gt;Checklist:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Review &lt;strong&gt;dynamic fields&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Add &lt;strong&gt;fallback values&lt;/strong&gt; where needed&lt;/li&gt;
&lt;li&gt;Preview using &lt;strong&gt;sample contacts&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Example:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;Hello {{FirstName | default:&quot;there&quot;}}&lt;/code&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;4-review-the-compliance-profile&quot;&gt;4. Review the Compliance Profile&lt;/h2&gt;
&lt;p&gt;Customer Insights - Journeys enforces consent and regulatory
requirements through &lt;strong&gt;Compliance Profiles&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Before using the email:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Select the &lt;strong&gt;correct Compliance Profile&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Verify the &lt;strong&gt;communication purpose&lt;/strong&gt; (e.g., commercial,
informational)&lt;/li&gt;
&lt;li&gt;Ensure &lt;strong&gt;unsubscribe links&lt;/strong&gt; are present&lt;/li&gt;
&lt;li&gt;Ensure the &lt;strong&gt;preference center link&lt;/strong&gt; is included&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If unsure, use the &lt;strong&gt;default marketing compliance profile&lt;/strong&gt; defined by
your organization.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;5-test-the-email&quot;&gt;5. Test the Email&lt;/h2&gt;
&lt;p&gt;Always test before using the email in a journey.&lt;/p&gt;
&lt;p&gt;Checklist:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Use &lt;strong&gt;Preview and Test Send&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Send a test email to yourself&lt;/li&gt;
&lt;li&gt;Verify:
&lt;ul&gt;
&lt;li&gt;Mobile rendering&lt;/li&gt;
&lt;li&gt;Images&lt;/li&gt;
&lt;li&gt;Links and buttons&lt;/li&gt;
&lt;li&gt;Personalization fields&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&quot;6-final-validation&quot;&gt;6. Final Validation&lt;/h2&gt;
&lt;p&gt;Before activating the email or using it in a journey:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Subject line reviewed&lt;/li&gt;
&lt;li&gt;Preheader text added&lt;/li&gt;
&lt;li&gt;Compliance profile confirmed&lt;/li&gt;
&lt;li&gt;Links tested&lt;/li&gt;
&lt;li&gt;Email approved (if applicable)&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;p&gt;💡 &lt;strong&gt;Tip&lt;/strong&gt; Clear subject lines and minimal spam trigger words improve
deliverability.&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;This is how it might look like:&lt;/p&gt;
&lt;p&gt;&lt;img __ASTRO_IMAGE_=&quot;{&amp;#x22;src&amp;#x22;:&amp;#x22;./image1.png&amp;#x22;,&amp;#x22;alt&amp;#x22;:&amp;#x22;It&amp;#x27;s very intuitive&amp;#x22;,&amp;#x22;index&amp;#x22;:0}&quot;&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&quot;example-2--event-creation&quot;&gt;Example 2 – Event creation&lt;/h3&gt;
&lt;p&gt;Here is another example of how a checklist can help you organize your event:&lt;/p&gt;
&lt;div class=&quot;markdown-alert markdown-alert-tip&quot; dir=&quot;auto&quot;&gt;
&lt;p class=&quot;markdown-alert-title&quot; dir=&quot;auto&quot;&gt;&lt;svg class=&quot;octicon&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot; height=&quot;16&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8 1.5c-2.363 0-4 1.69-4 3.75 0 .984.424 1.625.984 2.304l.214.253c.223.264.47.556.673.848.284.411.537.896.621 1.49a.75.75 0 0 1-1.484.211c-.04-.282-.163-.547-.37-.847a8.456 8.456 0 0 0-.542-.68c-.084-.1-.173-.205-.268-.32C3.201 7.75 2.5 6.766 2.5 5.25 2.5 2.31 4.863 0 8 0s5.5 2.31 5.5 5.25c0 1.516-.701 2.5-1.328 3.259-.095.115-.184.22-.268.319-.207.245-.383.453-.541.681-.208.3-.33.565-.37.847a.751.751 0 0 1-1.485-.212c.084-.593.337-1.078.621-1.489.203-.292.45-.584.673-.848.075-.088.147-.173.213-.253.561-.679.985-1.32.985-2.304 0-2.06-1.637-3.75-4-3.75ZM5.75 12h4.5a.75.75 0 0 1 0 1.5h-4.5a.75.75 0 0 1 0-1.5ZM6 15.25a.75.75 0 0 1 .75-.75h2.5a.75.75 0 0 1 0 1.5h-2.5a.75.75 0 0 1-.75-.75Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;TIP&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Example Help Page for an Event&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id=&quot;purpose-1&quot;&gt;Purpose&lt;/h2&gt;
&lt;p&gt;Use this checklist when creating &lt;strong&gt;events in Customer Insights – Journeys&lt;/strong&gt;.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;1-define-event-details&quot;&gt;1. Define Event Details&lt;/h2&gt;
&lt;p&gt;Checklist:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Event name&lt;/li&gt;
&lt;li&gt;Description&lt;/li&gt;
&lt;li&gt;Event type (online / hybrid / in‑person)&lt;/li&gt;
&lt;li&gt;Date and time&lt;/li&gt;
&lt;li&gt;Location or meeting link&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&quot;2-configure-registration&quot;&gt;2. Configure Registration&lt;/h2&gt;
&lt;p&gt;Checklist:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Registration form created&lt;/li&gt;
&lt;li&gt;Required fields defined&lt;/li&gt;
&lt;li&gt;Capacity limits configured&lt;/li&gt;
&lt;li&gt;Waitlist enabled if needed&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Example fields:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;First Name&lt;/li&gt;
&lt;li&gt;Last Name&lt;/li&gt;
&lt;li&gt;Email&lt;/li&gt;
&lt;li&gt;Company&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&quot;3-configure-event-communications&quot;&gt;3. Configure Event Communications&lt;/h2&gt;
&lt;p&gt;Recommended emails:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Registration confirmation&lt;/li&gt;
&lt;li&gt;Event reminder&lt;/li&gt;
&lt;li&gt;Post‑event follow‑up&lt;/li&gt;
&lt;li&gt;Follow-up for No-Show (optional)&lt;/li&gt;
&lt;li&gt;Unregistered Confirmation (optional)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Example timeline:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Registration Confirmation → Immediately&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Reminder → 1 Day Before Event&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Reminder → 1 Hour Before Event&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;hr&gt;
&lt;h2 id=&quot;4-configure-event-journeys&quot;&gt;4. Configure Event Journeys&lt;/h2&gt;
&lt;p&gt;Recommended emails:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Registration confirmation&lt;/li&gt;
&lt;li&gt;Event reminder&lt;/li&gt;
&lt;li&gt;Post‑event follow‑up&lt;/li&gt;
&lt;li&gt;Follow-up for No-Show (optional)&lt;/li&gt;
&lt;li&gt;Unregistered Confirmation (optional)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Example timeline:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Registration Confirmation → Immediately&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Reminder → 1 Day Before Event&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Reminder → 1 Hour Before Event&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;hr&gt;
&lt;h2 id=&quot;5-test-the-registration-process&quot;&gt;5. Test the Registration Process&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Complete a &lt;strong&gt;test registration&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Verify confirmation email&lt;/li&gt;
&lt;li&gt;Validate reminder emails&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;p&gt;This is how it might look like:&lt;/p&gt;
&lt;p&gt;&lt;img __ASTRO_IMAGE_=&quot;{&amp;#x22;src&amp;#x22;:&amp;#x22;./image2.png&amp;#x22;,&amp;#x22;alt&amp;#x22;:&amp;#x22;Point Out your Content in Form&amp;#x22;,&amp;#x22;index&amp;#x22;:0}&quot;&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;using-help-panes-as-process-maps&quot;&gt;Using help panes as process maps&lt;/h2&gt;
&lt;p&gt;But the real value comes from how you structure your Help Panes. So it can be used as a map inside your intention.&lt;/p&gt;
&lt;p&gt;So imagine you have a normal campaign script:&lt;/p&gt;
&lt;div class=&quot;scroll-x&quot; tabindex=&quot;0&quot; style=&quot;--dw:938px&quot;&gt;&lt;svg id=&quot;mermaid-0&quot; width=&quot;100%&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot; xmlns:xlink=&quot;http://www.w3.org/1999/xlink&quot; class=&quot;flowchart&quot; style=&quot;max-width: 937.796875px;&quot; viewBox=&quot;0 0 937.796875 218.53125&quot; role=&quot;graphics-document document&quot; aria-roledescription=&quot;flowchart-v2&quot;&gt;&lt;style&gt;#mermaid-0{font-family:arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-0 .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-0 .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-0 .error-icon{fill:#552222;}#mermaid-0 .error-text{fill:#552222;stroke:#552222;}#mermaid-0 .edge-thickness-normal{stroke-width:1px;}#mermaid-0 .edge-thickness-thick{stroke-width:3.5px;}#mermaid-0 .edge-pattern-solid{stroke-dasharray:0;}#mermaid-0 .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-0 .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-0 .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-0 .marker{fill:#333333;stroke:#333333;}#mermaid-0 .marker.cross{stroke:#333333;}#mermaid-0 svg{font-family:arial,sans-serif;font-size:16px;}#mermaid-0 p{margin:0;}#mermaid-0 .label{font-family:arial,sans-serif;color:#333;}#mermaid-0 .cluster-label text{fill:#333;}#mermaid-0 .cluster-label span{color:#333;}#mermaid-0 .cluster-label span p{background-color:transparent;}#mermaid-0 .label text,#mermaid-0 span{fill:#333;color:#333;}#mermaid-0 .node rect,#mermaid-0 .node circle,#mermaid-0 .node ellipse,#mermaid-0 .node polygon,#mermaid-0 .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-0 .rough-node .label text,#mermaid-0 .node .label text,#mermaid-0 .image-shape .label,#mermaid-0 .icon-shape .label{text-anchor:middle;}#mermaid-0 .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-0 .rough-node .label,#mermaid-0 .node .label,#mermaid-0 .image-shape .label,#mermaid-0 .icon-shape .label{text-align:center;}#mermaid-0 .node.clickable{cursor:pointer;}#mermaid-0 .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-0 .arrowheadPath{fill:#333333;}#mermaid-0 .edgePath .path{stroke:#333333;stroke-width:1px;}#mermaid-0 .flowchart-link{stroke:#333333;fill:none;}#mermaid-0 .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-0 .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-0 .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-0 .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-0 .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-0 .cluster text{fill:#333;}#mermaid-0 .cluster span{color:#333;}#mermaid-0 div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-0 .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-0 rect.text{fill:none;stroke-width:0;}#mermaid-0 .icon-shape,#mermaid-0 .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-0 .icon-shape p,#mermaid-0 .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-0 .icon-shape .label rect,#mermaid-0 .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-0 .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-0 .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-0 .node .neo-node{stroke:#9370DB;}#mermaid-0 [data-look=&quot;neo&quot;].node rect,#mermaid-0 [data-look=&quot;neo&quot;].cluster rect,#mermaid-0 [data-look=&quot;neo&quot;].node polygon{stroke:#9370DB;filter:drop-shadow(1px 2px 2px rgba(185, 185, 185, 1));}#mermaid-0 [data-look=&quot;neo&quot;].node path{stroke:#9370DB;stroke-width:1px;}#mermaid-0 [data-look=&quot;neo&quot;].node .outer-path{filter:drop-shadow(1px 2px 2px rgba(185, 185, 185, 1));}#mermaid-0 [data-look=&quot;neo&quot;].node .neo-line path{stroke:#9370DB;filter:none;}#mermaid-0 [data-look=&quot;neo&quot;].node circle{stroke:#9370DB;filter:drop-shadow(1px 2px 2px rgba(185, 185, 185, 1));}#mermaid-0 [data-look=&quot;neo&quot;].node circle .state-start{fill:#000000;}#mermaid-0 [data-look=&quot;neo&quot;].icon-shape .icon{fill:#9370DB;filter:drop-shadow(1px 2px 2px rgba(185, 185, 185, 1));}#mermaid-0 [data-look=&quot;neo&quot;].icon-shape .icon-neo path{stroke:#9370DB;filter:drop-shadow(1px 2px 2px rgba(185, 185, 185, 1));}#mermaid-0 :root{--mermaid-font-family:arial,sans-serif;}&lt;/style&gt;&lt;g&gt;&lt;marker id=&quot;mermaid-0_flowchart-v2-pointEnd&quot; class=&quot;marker flowchart-v2&quot; viewBox=&quot;0 0 10 10&quot; refX=&quot;5&quot; refY=&quot;5&quot; markerUnits=&quot;userSpaceOnUse&quot; markerWidth=&quot;8&quot; markerHeight=&quot;8&quot; orient=&quot;auto&quot;&gt;&lt;path d=&quot;M 0 0 L 10 5 L 0 10 z&quot; class=&quot;arrowMarkerPath&quot; style=&quot;stroke-width: 1; stroke-dasharray: 1, 0;&quot;&gt;&lt;/path&gt;&lt;/marker&gt;&lt;marker id=&quot;mermaid-0_flowchart-v2-pointStart&quot; class=&quot;marker flowchart-v2&quot; viewBox=&quot;0 0 10 10&quot; refX=&quot;4.5&quot; refY=&quot;5&quot; markerUnits=&quot;userSpaceOnUse&quot; markerWidth=&quot;8&quot; markerHeight=&quot;8&quot; orient=&quot;auto&quot;&gt;&lt;path d=&quot;M 0 5 L 10 10 L 10 0 z&quot; class=&quot;arrowMarkerPath&quot; style=&quot;stroke-width: 1; stroke-dasharray: 1, 0;&quot;&gt;&lt;/path&gt;&lt;/marker&gt;&lt;marker id=&quot;mermaid-0_flowchart-v2-pointEnd-margin&quot; class=&quot;marker flowchart-v2&quot; viewBox=&quot;0 0 11.5 14&quot; refX=&quot;11.5&quot; refY=&quot;7&quot; markerUnits=&quot;userSpaceOnUse&quot; markerWidth=&quot;10.5&quot; markerHeight=&quot;14&quot; orient=&quot;auto&quot;&gt;&lt;path d=&quot;M 0 0 L 11.5 7 L 0 14 z&quot; class=&quot;arrowMarkerPath&quot; style=&quot;stroke-width: 0; stroke-dasharray: 1, 0;&quot;&gt;&lt;/path&gt;&lt;/marker&gt;&lt;marker id=&quot;mermaid-0_flowchart-v2-pointStart-margin&quot; class=&quot;marker flowchart-v2&quot; viewBox=&quot;0 0 11.5 14&quot; refX=&quot;1&quot; refY=&quot;7&quot; markerUnits=&quot;userSpaceOnUse&quot; markerWidth=&quot;11.5&quot; markerHeight=&quot;14&quot; orient=&quot;auto&quot;&gt;&lt;polygon points=&quot;0,7 11.5,14 11.5,0&quot; class=&quot;arrowMarkerPath&quot; style=&quot;stroke-width: 0; stroke-dasharray: 1, 0;&quot;&gt;&lt;/polygon&gt;&lt;/marker&gt;&lt;marker id=&quot;mermaid-0_flowchart-v2-circleEnd&quot; class=&quot;marker flowchart-v2&quot; viewBox=&quot;0 0 10 10&quot; refX=&quot;11&quot; refY=&quot;5&quot; markerUnits=&quot;userSpaceOnUse&quot; markerWidth=&quot;11&quot; markerHeight=&quot;11&quot; orient=&quot;auto&quot;&gt;&lt;circle cx=&quot;5&quot; cy=&quot;5&quot; r=&quot;5&quot; class=&quot;arrowMarkerPath&quot; style=&quot;stroke-width: 1; stroke-dasharray: 1, 0;&quot;&gt;&lt;/circle&gt;&lt;/marker&gt;&lt;marker id=&quot;mermaid-0_flowchart-v2-circleStart&quot; class=&quot;marker flowchart-v2&quot; viewBox=&quot;0 0 10 10&quot; refX=&quot;-1&quot; refY=&quot;5&quot; markerUnits=&quot;userSpaceOnUse&quot; markerWidth=&quot;11&quot; markerHeight=&quot;11&quot; orient=&quot;auto&quot;&gt;&lt;circle cx=&quot;5&quot; cy=&quot;5&quot; r=&quot;5&quot; class=&quot;arrowMarkerPath&quot; style=&quot;stroke-width: 1; stroke-dasharray: 1, 0;&quot;&gt;&lt;/circle&gt;&lt;/marker&gt;&lt;marker id=&quot;mermaid-0_flowchart-v2-circleEnd-margin&quot; class=&quot;marker flowchart-v2&quot; viewBox=&quot;0 0 10 10&quot; refY=&quot;5&quot; refX=&quot;12.25&quot; markerUnits=&quot;userSpaceOnUse&quot; markerWidth=&quot;14&quot; markerHeight=&quot;14&quot; orient=&quot;auto&quot;&gt;&lt;circle cx=&quot;5&quot; cy=&quot;5&quot; r=&quot;5&quot; class=&quot;arrowMarkerPath&quot; style=&quot;stroke-width: 0; stroke-dasharray: 1, 0;&quot;&gt;&lt;/circle&gt;&lt;/marker&gt;&lt;marker id=&quot;mermaid-0_flowchart-v2-circleStart-margin&quot; class=&quot;marker flowchart-v2&quot; viewBox=&quot;0 0 10 10&quot; refX=&quot;-2&quot; refY=&quot;5&quot; markerUnits=&quot;userSpaceOnUse&quot; markerWidth=&quot;14&quot; markerHeight=&quot;14&quot; orient=&quot;auto&quot;&gt;&lt;circle cx=&quot;5&quot; cy=&quot;5&quot; r=&quot;5&quot; class=&quot;arrowMarkerPath&quot; style=&quot;stroke-width: 0; stroke-dasharray: 1, 0;&quot;&gt;&lt;/circle&gt;&lt;/marker&gt;&lt;marker id=&quot;mermaid-0_flowchart-v2-crossEnd&quot; class=&quot;marker cross flowchart-v2&quot; viewBox=&quot;0 0 11 11&quot; refX=&quot;12&quot; refY=&quot;5.2&quot; markerUnits=&quot;userSpaceOnUse&quot; markerWidth=&quot;11&quot; markerHeight=&quot;11&quot; orient=&quot;auto&quot;&gt;&lt;path d=&quot;M 1,1 l 9,9 M 10,1 l -9,9&quot; class=&quot;arrowMarkerPath&quot; style=&quot;stroke-width: 2; stroke-dasharray: 1, 0;&quot;&gt;&lt;/path&gt;&lt;/marker&gt;&lt;marker id=&quot;mermaid-0_flowchart-v2-crossStart&quot; class=&quot;marker cross flowchart-v2&quot; viewBox=&quot;0 0 11 11&quot; refX=&quot;-1&quot; refY=&quot;5.2&quot; markerUnits=&quot;userSpaceOnUse&quot; markerWidth=&quot;11&quot; markerHeight=&quot;11&quot; orient=&quot;auto&quot;&gt;&lt;path d=&quot;M 1,1 l 9,9 M 10,1 l -9,9&quot; class=&quot;arrowMarkerPath&quot; style=&quot;stroke-width: 2; stroke-dasharray: 1, 0;&quot;&gt;&lt;/path&gt;&lt;/marker&gt;&lt;marker id=&quot;mermaid-0_flowchart-v2-crossEnd-margin&quot; class=&quot;marker cross flowchart-v2&quot; viewBox=&quot;0 0 15 15&quot; refX=&quot;17.7&quot; refY=&quot;7.5&quot; markerUnits=&quot;userSpaceOnUse&quot; markerWidth=&quot;12&quot; markerHeight=&quot;12&quot; orient=&quot;auto&quot;&gt;&lt;path d=&quot;M 1,1 L 14,14 M 1,14 L 14,1&quot; class=&quot;arrowMarkerPath&quot; style=&quot;stroke-width: 2.5;&quot;&gt;&lt;/path&gt;&lt;/marker&gt;&lt;marker id=&quot;mermaid-0_flowchart-v2-crossStart-margin&quot; class=&quot;marker cross flowchart-v2&quot; viewBox=&quot;0 0 15 15&quot; refX=&quot;-3.5&quot; refY=&quot;7.5&quot; markerUnits=&quot;userSpaceOnUse&quot; markerWidth=&quot;12&quot; markerHeight=&quot;12&quot; orient=&quot;auto&quot;&gt;&lt;path d=&quot;M 1,1 L 14,14 M 1,14 L 14,1&quot; class=&quot;arrowMarkerPath&quot; style=&quot;stroke-width: 2.5; stroke-dasharray: 1, 0;&quot;&gt;&lt;/path&gt;&lt;/marker&gt;&lt;g class=&quot;root&quot;&gt;&lt;g class=&quot;clusters&quot;&gt;&lt;/g&gt;&lt;g class=&quot;edgePaths&quot;&gt;&lt;path d=&quot;M164.281,109.266L168.448,109.266C172.615,109.266,180.948,109.266,188.615,109.266C196.281,109.266,203.281,109.266,206.781,109.266L210.281,109.266&quot; id=&quot;mermaid-0-L_A_B_0&quot; class=&quot;edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link&quot; style=&quot;;&quot; data-edge=&quot;true&quot; data-et=&quot;edge&quot; data-id=&quot;L_A_B_0&quot; data-points=&quot;W3sieCI6MTY0LjI4MTI1LCJ5IjoxMDkuMjY1NjI1fSx7IngiOjE4OS4yODEyNSwieSI6MTA5LjI2NTYyNX0seyJ4IjoyMTQuMjgxMjUsInkiOjEwOS4yNjU2MjV9XQ==&quot; data-look=&quot;classic&quot; marker-end=&quot;url(#mermaid-0_flowchart-v2-pointEnd)&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M384.938,77.391L394.417,73.037C403.896,68.683,422.854,59.974,435.833,55.62C448.813,51.266,455.813,51.266,459.313,51.266L462.813,51.266&quot; id=&quot;mermaid-0-L_B_C_0&quot; class=&quot;edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link&quot; style=&quot;;&quot; data-edge=&quot;true&quot; data-et=&quot;edge&quot; data-id=&quot;L_B_C_0&quot; data-points=&quot;W3sieCI6Mzg0LjkzNzgyODU4NDc1MzcsInkiOjc3LjM5MDk1MzU4NDc1MzY3fSx7IngiOjQ0MS44MTI1LCJ5Ijo1MS4yNjU2MjV9LHsieCI6NDY2LjgxMjUsInkiOjUxLjI2NTYyNX1d&quot; data-look=&quot;classic&quot; marker-end=&quot;url(#mermaid-0_flowchart-v2-pointEnd)&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M384.938,141.14L394.417,145.495C403.896,149.849,422.854,158.557,436.418,162.911C449.982,167.266,458.151,167.266,462.236,167.266L466.32,167.266&quot; id=&quot;mermaid-0-L_B_D_0&quot; class=&quot;edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link&quot; style=&quot;;&quot; data-edge=&quot;true&quot; data-et=&quot;edge&quot; data-id=&quot;L_B_D_0&quot; data-points=&quot;W3sieCI6Mzg0LjkzNzgyODU4NDc1MzcsInkiOjE0MS4xNDAyOTY0MTUyNDYzM30seyJ4Ijo0NDEuODEyNSwieSI6MTY3LjI2NTYyNX0seyJ4Ijo0NzAuMzIwMzEyNSwieSI6MTY3LjI2NTYyNX1d&quot; data-look=&quot;classic&quot; marker-end=&quot;url(#mermaid-0_flowchart-v2-pointEnd)&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M696.813,51.266L700.979,51.266C705.146,51.266,713.479,51.266,727.426,56.135C741.373,61.005,760.934,70.744,770.714,75.613L780.495,80.483&quot; id=&quot;mermaid-0-L_C_E_0&quot; class=&quot;edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link&quot; style=&quot;;&quot; data-edge=&quot;true&quot; data-et=&quot;edge&quot; data-id=&quot;L_C_E_0&quot; data-points=&quot;W3sieCI6Njk2LjgxMjUsInkiOjUxLjI2NTYyNX0seyJ4Ijo3MjEuODEyNSwieSI6NTEuMjY1NjI1fSx7IngiOjc4NC4wNzU1NjU3MzI3NTg2LCJ5Ijo4Mi4yNjU2MjV9XQ==&quot; data-look=&quot;classic&quot; marker-end=&quot;url(#mermaid-0_flowchart-v2-pointEnd)&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M693.305,167.266L698.056,167.266C702.807,167.266,712.31,167.266,726.842,162.396C741.373,157.527,760.934,147.787,770.714,142.918L780.495,138.048&quot; id=&quot;mermaid-0-L_D_E_0&quot; class=&quot;edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link&quot; style=&quot;;&quot; data-edge=&quot;true&quot; data-et=&quot;edge&quot; data-id=&quot;L_D_E_0&quot; data-points=&quot;W3sieCI6NjkzLjMwNDY4NzUsInkiOjE2Ny4yNjU2MjV9LHsieCI6NzIxLjgxMjUsInkiOjE2Ny4yNjU2MjV9LHsieCI6Nzg0LjA3NTU2NTczMjc1ODYsInkiOjEzNi4yNjU2MjV9XQ==&quot; data-look=&quot;classic&quot; marker-end=&quot;url(#mermaid-0_flowchart-v2-pointEnd)&quot;&gt;&lt;/path&gt;&lt;/g&gt;&lt;g class=&quot;edgeLabels&quot;&gt;&lt;g class=&quot;edgeLabel&quot;&gt;&lt;g class=&quot;label&quot; data-id=&quot;L_A_B_0&quot; transform=&quot;translate(0, 0)&quot;&gt;&lt;foreignObject width=&quot;0&quot; height=&quot;0&quot;&gt;&lt;div xmlns=&quot;http://www.w3.org/1999/xhtml&quot; class=&quot;labelBkg&quot; style=&quot;display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;&quot;&gt;&lt;span class=&quot;edgeLabel&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class=&quot;edgeLabel&quot;&gt;&lt;g class=&quot;label&quot; data-id=&quot;L_B_C_0&quot; transform=&quot;translate(0, 0)&quot;&gt;&lt;foreignObject width=&quot;0&quot; height=&quot;0&quot;&gt;&lt;div xmlns=&quot;http://www.w3.org/1999/xhtml&quot; class=&quot;labelBkg&quot; style=&quot;display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;&quot;&gt;&lt;span class=&quot;edgeLabel&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class=&quot;edgeLabel&quot;&gt;&lt;g class=&quot;label&quot; data-id=&quot;L_B_D_0&quot; transform=&quot;translate(0, 0)&quot;&gt;&lt;foreignObject width=&quot;0&quot; height=&quot;0&quot;&gt;&lt;div xmlns=&quot;http://www.w3.org/1999/xhtml&quot; class=&quot;labelBkg&quot; style=&quot;display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;&quot;&gt;&lt;span class=&quot;edgeLabel&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class=&quot;edgeLabel&quot;&gt;&lt;g class=&quot;label&quot; data-id=&quot;L_C_E_0&quot; transform=&quot;translate(0, 0)&quot;&gt;&lt;foreignObject width=&quot;0&quot; height=&quot;0&quot;&gt;&lt;div xmlns=&quot;http://www.w3.org/1999/xhtml&quot; class=&quot;labelBkg&quot; style=&quot;display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;&quot;&gt;&lt;span class=&quot;edgeLabel&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class=&quot;edgeLabel&quot;&gt;&lt;g class=&quot;label&quot; data-id=&quot;L_D_E_0&quot; transform=&quot;translate(0, 0)&quot;&gt;&lt;foreignObject width=&quot;0&quot; height=&quot;0&quot;&gt;&lt;div xmlns=&quot;http://www.w3.org/1999/xhtml&quot; class=&quot;labelBkg&quot; style=&quot;display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;&quot;&gt;&lt;span class=&quot;edgeLabel&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class=&quot;nodes&quot;&gt;&lt;g class=&quot;node default&quot; id=&quot;mermaid-0-flowchart-A-0&quot; data-look=&quot;classic&quot; transform=&quot;translate(86.140625, 109.265625)&quot;&gt;&lt;rect class=&quot;basic label-container&quot; style=&quot;&quot; rx=&quot;5&quot; ry=&quot;5&quot; x=&quot;-78.140625&quot; y=&quot;-27&quot; width=&quot;156.28125&quot; height=&quot;54&quot;&gt;&lt;/rect&gt;&lt;g class=&quot;label&quot; style=&quot;&quot; transform=&quot;translate(-63.140625, -12)&quot;&gt;&lt;rect&gt;&lt;/rect&gt;&lt;foreignObject width=&quot;126.28125&quot; height=&quot;24&quot;&gt;&lt;div xmlns=&quot;http://www.w3.org/1999/xhtml&quot; style=&quot;display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;&quot;&gt;&lt;span class=&quot;nodeLabel&quot;&gt;&lt;p&gt;Create your email&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class=&quot;node default&quot; id=&quot;mermaid-0-flowchart-B-1&quot; data-look=&quot;classic&quot; transform=&quot;translate(315.546875, 109.265625)&quot;&gt;&lt;polygon points=&quot;101.265625,0 202.53125,-101.265625 101.265625,-202.53125 0,-101.265625&quot; class=&quot;label-container&quot; transform=&quot;translate(-100.765625, 101.265625)&quot;&gt;&lt;/polygon&gt;&lt;g class=&quot;label&quot; style=&quot;&quot; transform=&quot;translate(-74.265625, -12)&quot;&gt;&lt;rect&gt;&lt;/rect&gt;&lt;foreignObject width=&quot;148.53125&quot; height=&quot;24&quot;&gt;&lt;div xmlns=&quot;http://www.w3.org/1999/xhtml&quot; style=&quot;display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;&quot;&gt;&lt;span class=&quot;nodeLabel&quot;&gt;&lt;p&gt;Is it segment-based?&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class=&quot;node default&quot; id=&quot;mermaid-0-flowchart-C-3&quot; data-look=&quot;classic&quot; transform=&quot;translate(581.8125, 51.265625)&quot;&gt;&lt;rect class=&quot;basic label-container&quot; style=&quot;&quot; rx=&quot;5&quot; ry=&quot;5&quot; x=&quot;-115&quot; y=&quot;-39&quot; width=&quot;230&quot; height=&quot;78&quot;&gt;&lt;/rect&gt;&lt;g class=&quot;label&quot; style=&quot;&quot; transform=&quot;translate(-100, -24)&quot;&gt;&lt;rect&gt;&lt;/rect&gt;&lt;foreignObject width=&quot;200&quot; height=&quot;48&quot;&gt;&lt;div xmlns=&quot;http://www.w3.org/1999/xhtml&quot; style=&quot;display: table; white-space: break-spaces; line-height: 1.5; max-width: 200px; text-align: center; width: 200px;&quot;&gt;&lt;span class=&quot;nodeLabel&quot;&gt;&lt;p&gt;Create/Choose your segment&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class=&quot;node default&quot; id=&quot;mermaid-0-flowchart-D-5&quot; data-look=&quot;classic&quot; transform=&quot;translate(581.8125, 167.265625)&quot;&gt;&lt;rect class=&quot;basic label-container&quot; style=&quot;&quot; rx=&quot;5&quot; ry=&quot;5&quot; x=&quot;-111.4921875&quot; y=&quot;-27&quot; width=&quot;222.984375&quot; height=&quot;54&quot;&gt;&lt;/rect&gt;&lt;g class=&quot;label&quot; style=&quot;&quot; transform=&quot;translate(-96.4921875, -12)&quot;&gt;&lt;rect&gt;&lt;/rect&gt;&lt;foreignObject width=&quot;192.984375&quot; height=&quot;24&quot;&gt;&lt;div xmlns=&quot;http://www.w3.org/1999/xhtml&quot; style=&quot;display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;&quot;&gt;&lt;span class=&quot;nodeLabel&quot;&gt;&lt;p&gt;Create/Choose your trigger&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class=&quot;node default&quot; id=&quot;mermaid-0-flowchart-E-7&quot; data-look=&quot;classic&quot; transform=&quot;translate(838.3046875, 109.265625)&quot;&gt;&lt;rect class=&quot;basic label-container&quot; style=&quot;&quot; rx=&quot;5&quot; ry=&quot;5&quot; x=&quot;-91.4921875&quot; y=&quot;-27&quot; width=&quot;182.984375&quot; height=&quot;54&quot;&gt;&lt;/rect&gt;&lt;g class=&quot;label&quot; style=&quot;&quot; transform=&quot;translate(-76.4921875, -12)&quot;&gt;&lt;rect&gt;&lt;/rect&gt;&lt;foreignObject width=&quot;152.984375&quot; height=&quot;24&quot;&gt;&lt;div xmlns=&quot;http://www.w3.org/1999/xhtml&quot; style=&quot;display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;&quot;&gt;&lt;span class=&quot;nodeLabel&quot;&gt;&lt;p&gt;Configure the journey&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;/g&gt;&lt;/g&gt;&lt;/g&gt;&lt;defs&gt;&lt;filter id=&quot;mermaid-0-drop-shadow&quot; height=&quot;130%&quot; width=&quot;130%&quot;&gt;&lt;feDropShadow dx=&quot;4&quot; dy=&quot;4&quot; stdDeviation=&quot;0&quot; flood-opacity=&quot;0.06&quot; flood-color=&quot;#000000&quot;&gt;&lt;/feDropShadow&gt;&lt;/filter&gt;&lt;/defs&gt;&lt;defs&gt;&lt;filter id=&quot;mermaid-0-drop-shadow-small&quot; height=&quot;150%&quot; width=&quot;150%&quot;&gt;&lt;feDropShadow dx=&quot;2&quot; dy=&quot;2&quot; stdDeviation=&quot;0&quot; flood-opacity=&quot;0.06&quot; flood-color=&quot;#000000&quot;&gt;&lt;/feDropShadow&gt;&lt;/filter&gt;&lt;/defs&gt;&lt;/svg&gt;&lt;/div&gt;
&lt;p&gt;How great would it be if you could link your next step directly in your help pane?&lt;/p&gt;
&lt;h3 id=&quot;campaign-launch-guide&quot;&gt;Campaign Launch Guide&lt;/h3&gt;
&lt;p&gt;Creating a map of the campaign for each step, and adding it as a section to your pane helps you identify where you are in your standard process and what are the next steps:&lt;/p&gt;
&lt;p&gt;&lt;img __ASTRO_IMAGE_=&quot;{&amp;#x22;src&amp;#x22;:&amp;#x22;./image3.png&amp;#x22;,&amp;#x22;alt&amp;#x22;:&amp;#x22;Section with Map in Emails&amp;#x22;,&amp;#x22;index&amp;#x22;:0}&quot;&gt;&lt;/p&gt;
&lt;div class=&quot;markdown-alert markdown-alert-tip&quot; dir=&quot;auto&quot;&gt;
&lt;p class=&quot;markdown-alert-title&quot; dir=&quot;auto&quot;&gt;&lt;svg class=&quot;octicon&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot; height=&quot;16&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8 1.5c-2.363 0-4 1.69-4 3.75 0 .984.424 1.625.984 2.304l.214.253c.223.264.47.556.673.848.284.411.537.896.621 1.49a.75.75 0 0 1-1.484.211c-.04-.282-.163-.547-.37-.847a8.456 8.456 0 0 0-.542-.68c-.084-.1-.173-.205-.268-.32C3.201 7.75 2.5 6.766 2.5 5.25 2.5 2.31 4.863 0 8 0s5.5 2.31 5.5 5.25c0 1.516-.701 2.5-1.328 3.259-.095.115-.184.22-.268.319-.207.245-.383.453-.541.681-.208.3-.33.565-.37.847a.751.751 0 0 1-1.485-.212c.084-.593.337-1.078.621-1.489.203-.292.45-.584.673-.848.075-.088.147-.173.213-.253.561-.679.985-1.32.985-2.304 0-2.06-1.637-3.75-4-3.75ZM5.75 12h4.5a.75.75 0 0 1 0 1.5h-4.5a.75.75 0 0 1 0-1.5ZM6 15.25a.75.75 0 0 1 .75-.75h2.5a.75.75 0 0 1 0 1.5h-2.5a.75.75 0 0 1-.75-.75Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;TIP&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Tip&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Don’t forget to hyperlink the map with the section you want to redirect to, that’s how you get 100% of the value from this feature.&lt;/p&gt;
&lt;/div&gt;
&lt;h3 id=&quot;event-launch-guide&quot;&gt;Event Launch Guide&lt;/h3&gt;
&lt;p&gt;To organize an event usually requires more elements as one might think, help guide them through this process&lt;/p&gt;
&lt;p&gt;I recommend using this sequence when creating an event in Dynamics Customer Insights Journeys:&lt;/p&gt;
&lt;div class=&quot;scroll-x&quot; tabindex=&quot;0&quot; style=&quot;--dw:598px&quot;&gt;&lt;svg id=&quot;mermaid-1&quot; width=&quot;100%&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot; xmlns:xlink=&quot;http://www.w3.org/1999/xlink&quot; class=&quot;flowchart&quot; style=&quot;max-width: 597.1875px;&quot; viewBox=&quot;0 0 597.1875 70&quot; role=&quot;graphics-document document&quot; aria-roledescription=&quot;flowchart-v2&quot;&gt;&lt;style&gt;#mermaid-1{font-family:arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-1 .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-1 .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-1 .error-icon{fill:#552222;}#mermaid-1 .error-text{fill:#552222;stroke:#552222;}#mermaid-1 .edge-thickness-normal{stroke-width:1px;}#mermaid-1 .edge-thickness-thick{stroke-width:3.5px;}#mermaid-1 .edge-pattern-solid{stroke-dasharray:0;}#mermaid-1 .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-1 .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-1 .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-1 .marker{fill:#333333;stroke:#333333;}#mermaid-1 .marker.cross{stroke:#333333;}#mermaid-1 svg{font-family:arial,sans-serif;font-size:16px;}#mermaid-1 p{margin:0;}#mermaid-1 .label{font-family:arial,sans-serif;color:#333;}#mermaid-1 .cluster-label text{fill:#333;}#mermaid-1 .cluster-label span{color:#333;}#mermaid-1 .cluster-label span p{background-color:transparent;}#mermaid-1 .label text,#mermaid-1 span{fill:#333;color:#333;}#mermaid-1 .node rect,#mermaid-1 .node circle,#mermaid-1 .node ellipse,#mermaid-1 .node polygon,#mermaid-1 .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-1 .rough-node .label text,#mermaid-1 .node .label text,#mermaid-1 .image-shape .label,#mermaid-1 .icon-shape .label{text-anchor:middle;}#mermaid-1 .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-1 .rough-node .label,#mermaid-1 .node .label,#mermaid-1 .image-shape .label,#mermaid-1 .icon-shape .label{text-align:center;}#mermaid-1 .node.clickable{cursor:pointer;}#mermaid-1 .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-1 .arrowheadPath{fill:#333333;}#mermaid-1 .edgePath .path{stroke:#333333;stroke-width:1px;}#mermaid-1 .flowchart-link{stroke:#333333;fill:none;}#mermaid-1 .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-1 .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-1 .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-1 .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-1 .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-1 .cluster text{fill:#333;}#mermaid-1 .cluster span{color:#333;}#mermaid-1 div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-1 .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-1 rect.text{fill:none;stroke-width:0;}#mermaid-1 .icon-shape,#mermaid-1 .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-1 .icon-shape p,#mermaid-1 .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-1 .icon-shape .label rect,#mermaid-1 .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-1 .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-1 .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-1 .node .neo-node{stroke:#9370DB;}#mermaid-1 [data-look=&quot;neo&quot;].node rect,#mermaid-1 [data-look=&quot;neo&quot;].cluster rect,#mermaid-1 [data-look=&quot;neo&quot;].node polygon{stroke:#9370DB;filter:drop-shadow(1px 2px 2px rgba(185, 185, 185, 1));}#mermaid-1 [data-look=&quot;neo&quot;].node path{stroke:#9370DB;stroke-width:1px;}#mermaid-1 [data-look=&quot;neo&quot;].node .outer-path{filter:drop-shadow(1px 2px 2px rgba(185, 185, 185, 1));}#mermaid-1 [data-look=&quot;neo&quot;].node .neo-line path{stroke:#9370DB;filter:none;}#mermaid-1 [data-look=&quot;neo&quot;].node circle{stroke:#9370DB;filter:drop-shadow(1px 2px 2px rgba(185, 185, 185, 1));}#mermaid-1 [data-look=&quot;neo&quot;].node circle .state-start{fill:#000000;}#mermaid-1 [data-look=&quot;neo&quot;].icon-shape .icon{fill:#9370DB;filter:drop-shadow(1px 2px 2px rgba(185, 185, 185, 1));}#mermaid-1 [data-look=&quot;neo&quot;].icon-shape .icon-neo path{stroke:#9370DB;filter:drop-shadow(1px 2px 2px rgba(185, 185, 185, 1));}#mermaid-1 :root{--mermaid-font-family:arial,sans-serif;}&lt;/style&gt;&lt;g&gt;&lt;marker id=&quot;mermaid-1_flowchart-v2-pointEnd&quot; class=&quot;marker flowchart-v2&quot; viewBox=&quot;0 0 10 10&quot; refX=&quot;5&quot; refY=&quot;5&quot; markerUnits=&quot;userSpaceOnUse&quot; markerWidth=&quot;8&quot; markerHeight=&quot;8&quot; orient=&quot;auto&quot;&gt;&lt;path d=&quot;M 0 0 L 10 5 L 0 10 z&quot; class=&quot;arrowMarkerPath&quot; style=&quot;stroke-width: 1; stroke-dasharray: 1, 0;&quot;&gt;&lt;/path&gt;&lt;/marker&gt;&lt;marker id=&quot;mermaid-1_flowchart-v2-pointStart&quot; class=&quot;marker flowchart-v2&quot; viewBox=&quot;0 0 10 10&quot; refX=&quot;4.5&quot; refY=&quot;5&quot; markerUnits=&quot;userSpaceOnUse&quot; markerWidth=&quot;8&quot; markerHeight=&quot;8&quot; orient=&quot;auto&quot;&gt;&lt;path d=&quot;M 0 5 L 10 10 L 10 0 z&quot; class=&quot;arrowMarkerPath&quot; style=&quot;stroke-width: 1; stroke-dasharray: 1, 0;&quot;&gt;&lt;/path&gt;&lt;/marker&gt;&lt;marker id=&quot;mermaid-1_flowchart-v2-pointEnd-margin&quot; class=&quot;marker flowchart-v2&quot; viewBox=&quot;0 0 11.5 14&quot; refX=&quot;11.5&quot; refY=&quot;7&quot; markerUnits=&quot;userSpaceOnUse&quot; markerWidth=&quot;10.5&quot; markerHeight=&quot;14&quot; orient=&quot;auto&quot;&gt;&lt;path d=&quot;M 0 0 L 11.5 7 L 0 14 z&quot; class=&quot;arrowMarkerPath&quot; style=&quot;stroke-width: 0; stroke-dasharray: 1, 0;&quot;&gt;&lt;/path&gt;&lt;/marker&gt;&lt;marker id=&quot;mermaid-1_flowchart-v2-pointStart-margin&quot; class=&quot;marker flowchart-v2&quot; viewBox=&quot;0 0 11.5 14&quot; refX=&quot;1&quot; refY=&quot;7&quot; markerUnits=&quot;userSpaceOnUse&quot; markerWidth=&quot;11.5&quot; markerHeight=&quot;14&quot; orient=&quot;auto&quot;&gt;&lt;polygon points=&quot;0,7 11.5,14 11.5,0&quot; class=&quot;arrowMarkerPath&quot; style=&quot;stroke-width: 0; stroke-dasharray: 1, 0;&quot;&gt;&lt;/polygon&gt;&lt;/marker&gt;&lt;marker id=&quot;mermaid-1_flowchart-v2-circleEnd&quot; class=&quot;marker flowchart-v2&quot; viewBox=&quot;0 0 10 10&quot; refX=&quot;11&quot; refY=&quot;5&quot; markerUnits=&quot;userSpaceOnUse&quot; markerWidth=&quot;11&quot; markerHeight=&quot;11&quot; orient=&quot;auto&quot;&gt;&lt;circle cx=&quot;5&quot; cy=&quot;5&quot; r=&quot;5&quot; class=&quot;arrowMarkerPath&quot; style=&quot;stroke-width: 1; stroke-dasharray: 1, 0;&quot;&gt;&lt;/circle&gt;&lt;/marker&gt;&lt;marker id=&quot;mermaid-1_flowchart-v2-circleStart&quot; class=&quot;marker flowchart-v2&quot; viewBox=&quot;0 0 10 10&quot; refX=&quot;-1&quot; refY=&quot;5&quot; markerUnits=&quot;userSpaceOnUse&quot; markerWidth=&quot;11&quot; markerHeight=&quot;11&quot; orient=&quot;auto&quot;&gt;&lt;circle cx=&quot;5&quot; cy=&quot;5&quot; r=&quot;5&quot; class=&quot;arrowMarkerPath&quot; style=&quot;stroke-width: 1; stroke-dasharray: 1, 0;&quot;&gt;&lt;/circle&gt;&lt;/marker&gt;&lt;marker id=&quot;mermaid-1_flowchart-v2-circleEnd-margin&quot; class=&quot;marker flowchart-v2&quot; viewBox=&quot;0 0 10 10&quot; refY=&quot;5&quot; refX=&quot;12.25&quot; markerUnits=&quot;userSpaceOnUse&quot; markerWidth=&quot;14&quot; markerHeight=&quot;14&quot; orient=&quot;auto&quot;&gt;&lt;circle cx=&quot;5&quot; cy=&quot;5&quot; r=&quot;5&quot; class=&quot;arrowMarkerPath&quot; style=&quot;stroke-width: 0; stroke-dasharray: 1, 0;&quot;&gt;&lt;/circle&gt;&lt;/marker&gt;&lt;marker id=&quot;mermaid-1_flowchart-v2-circleStart-margin&quot; class=&quot;marker flowchart-v2&quot; viewBox=&quot;0 0 10 10&quot; refX=&quot;-2&quot; refY=&quot;5&quot; markerUnits=&quot;userSpaceOnUse&quot; markerWidth=&quot;14&quot; markerHeight=&quot;14&quot; orient=&quot;auto&quot;&gt;&lt;circle cx=&quot;5&quot; cy=&quot;5&quot; r=&quot;5&quot; class=&quot;arrowMarkerPath&quot; style=&quot;stroke-width: 0; stroke-dasharray: 1, 0;&quot;&gt;&lt;/circle&gt;&lt;/marker&gt;&lt;marker id=&quot;mermaid-1_flowchart-v2-crossEnd&quot; class=&quot;marker cross flowchart-v2&quot; viewBox=&quot;0 0 11 11&quot; refX=&quot;12&quot; refY=&quot;5.2&quot; markerUnits=&quot;userSpaceOnUse&quot; markerWidth=&quot;11&quot; markerHeight=&quot;11&quot; orient=&quot;auto&quot;&gt;&lt;path d=&quot;M 1,1 l 9,9 M 10,1 l -9,9&quot; class=&quot;arrowMarkerPath&quot; style=&quot;stroke-width: 2; stroke-dasharray: 1, 0;&quot;&gt;&lt;/path&gt;&lt;/marker&gt;&lt;marker id=&quot;mermaid-1_flowchart-v2-crossStart&quot; class=&quot;marker cross flowchart-v2&quot; viewBox=&quot;0 0 11 11&quot; refX=&quot;-1&quot; refY=&quot;5.2&quot; markerUnits=&quot;userSpaceOnUse&quot; markerWidth=&quot;11&quot; markerHeight=&quot;11&quot; orient=&quot;auto&quot;&gt;&lt;path d=&quot;M 1,1 l 9,9 M 10,1 l -9,9&quot; class=&quot;arrowMarkerPath&quot; style=&quot;stroke-width: 2; stroke-dasharray: 1, 0;&quot;&gt;&lt;/path&gt;&lt;/marker&gt;&lt;marker id=&quot;mermaid-1_flowchart-v2-crossEnd-margin&quot; class=&quot;marker cross flowchart-v2&quot; viewBox=&quot;0 0 15 15&quot; refX=&quot;17.7&quot; refY=&quot;7.5&quot; markerUnits=&quot;userSpaceOnUse&quot; markerWidth=&quot;12&quot; markerHeight=&quot;12&quot; orient=&quot;auto&quot;&gt;&lt;path d=&quot;M 1,1 L 14,14 M 1,14 L 14,1&quot; class=&quot;arrowMarkerPath&quot; style=&quot;stroke-width: 2.5;&quot;&gt;&lt;/path&gt;&lt;/marker&gt;&lt;marker id=&quot;mermaid-1_flowchart-v2-crossStart-margin&quot; class=&quot;marker cross flowchart-v2&quot; viewBox=&quot;0 0 15 15&quot; refX=&quot;-3.5&quot; refY=&quot;7.5&quot; markerUnits=&quot;userSpaceOnUse&quot; markerWidth=&quot;12&quot; markerHeight=&quot;12&quot; orient=&quot;auto&quot;&gt;&lt;path d=&quot;M 1,1 L 14,14 M 1,14 L 14,1&quot; class=&quot;arrowMarkerPath&quot; style=&quot;stroke-width: 2.5; stroke-dasharray: 1, 0;&quot;&gt;&lt;/path&gt;&lt;/marker&gt;&lt;g class=&quot;root&quot;&gt;&lt;g class=&quot;clusters&quot;&gt;&lt;/g&gt;&lt;g class=&quot;edgePaths&quot;&gt;&lt;path d=&quot;M116.016,35L120.182,35C124.349,35,132.682,35,140.349,35C148.016,35,155.016,35,158.516,35L162.016,35&quot; id=&quot;mermaid-1-L_A_B_0&quot; class=&quot;edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link&quot; style=&quot;;&quot; data-edge=&quot;true&quot; data-et=&quot;edge&quot; data-id=&quot;L_A_B_0&quot; data-points=&quot;W3sieCI6MTE2LjAxNTYyNSwieSI6MzV9LHsieCI6MTQxLjAxNTYyNSwieSI6MzV9LHsieCI6MTY2LjAxNTYyNSwieSI6MzV9XQ==&quot; data-look=&quot;classic&quot; marker-end=&quot;url(#mermaid-1_flowchart-v2-pointEnd)&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M290.938,35L295.104,35C299.271,35,307.604,35,315.271,35C322.938,35,329.938,35,333.438,35L336.938,35&quot; id=&quot;mermaid-1-L_B_C_0&quot; class=&quot;edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link&quot; style=&quot;;&quot; data-edge=&quot;true&quot; data-et=&quot;edge&quot; data-id=&quot;L_B_C_0&quot; data-points=&quot;W3sieCI6MjkwLjkzNzUsInkiOjM1fSx7IngiOjMxNS45Mzc1LCJ5IjozNX0seyJ4IjozNDAuOTM3NSwieSI6MzV9XQ==&quot; data-look=&quot;classic&quot; marker-end=&quot;url(#mermaid-1_flowchart-v2-pointEnd)&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M438.266,35L442.432,35C446.599,35,454.932,35,462.599,35C470.266,35,477.266,35,480.766,35L484.266,35&quot; id=&quot;mermaid-1-L_C_D_0&quot; class=&quot;edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link&quot; style=&quot;;&quot; data-edge=&quot;true&quot; data-et=&quot;edge&quot; data-id=&quot;L_C_D_0&quot; data-points=&quot;W3sieCI6NDM4LjI2NTYyNSwieSI6MzV9LHsieCI6NDYzLjI2NTYyNSwieSI6MzV9LHsieCI6NDg4LjI2NTYyNSwieSI6MzV9XQ==&quot; data-look=&quot;classic&quot; marker-end=&quot;url(#mermaid-1_flowchart-v2-pointEnd)&quot;&gt;&lt;/path&gt;&lt;/g&gt;&lt;g class=&quot;edgeLabels&quot;&gt;&lt;g class=&quot;edgeLabel&quot;&gt;&lt;g class=&quot;label&quot; data-id=&quot;L_A_B_0&quot; transform=&quot;translate(0, 0)&quot;&gt;&lt;foreignObject width=&quot;0&quot; height=&quot;0&quot;&gt;&lt;div xmlns=&quot;http://www.w3.org/1999/xhtml&quot; class=&quot;labelBkg&quot; style=&quot;display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;&quot;&gt;&lt;span class=&quot;edgeLabel&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class=&quot;edgeLabel&quot;&gt;&lt;g class=&quot;label&quot; data-id=&quot;L_B_C_0&quot; transform=&quot;translate(0, 0)&quot;&gt;&lt;foreignObject width=&quot;0&quot; height=&quot;0&quot;&gt;&lt;div xmlns=&quot;http://www.w3.org/1999/xhtml&quot; class=&quot;labelBkg&quot; style=&quot;display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;&quot;&gt;&lt;span class=&quot;edgeLabel&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class=&quot;edgeLabel&quot;&gt;&lt;g class=&quot;label&quot; data-id=&quot;L_C_D_0&quot; transform=&quot;translate(0, 0)&quot;&gt;&lt;foreignObject width=&quot;0&quot; height=&quot;0&quot;&gt;&lt;div xmlns=&quot;http://www.w3.org/1999/xhtml&quot; class=&quot;labelBkg&quot; style=&quot;display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;&quot;&gt;&lt;span class=&quot;edgeLabel&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class=&quot;nodes&quot;&gt;&lt;g class=&quot;node default&quot; id=&quot;mermaid-1-flowchart-A-0&quot; data-look=&quot;classic&quot; transform=&quot;translate(62.0078125, 35)&quot;&gt;&lt;rect class=&quot;basic label-container&quot; style=&quot;&quot; x=&quot;-54.0078125&quot; y=&quot;-27&quot; width=&quot;108.015625&quot; height=&quot;54&quot;&gt;&lt;/rect&gt;&lt;g class=&quot;label&quot; style=&quot;&quot; transform=&quot;translate(-24.0078125, -12)&quot;&gt;&lt;rect&gt;&lt;/rect&gt;&lt;foreignObject width=&quot;48.015625&quot; height=&quot;24&quot;&gt;&lt;div xmlns=&quot;http://www.w3.org/1999/xhtml&quot; style=&quot;display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;&quot;&gt;&lt;span class=&quot;nodeLabel&quot;&gt;&lt;p&gt;Emails&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class=&quot;node default&quot; id=&quot;mermaid-1-flowchart-B-1&quot; data-look=&quot;classic&quot; transform=&quot;translate(228.4765625, 35)&quot;&gt;&lt;rect class=&quot;basic label-container&quot; style=&quot;&quot; x=&quot;-62.4609375&quot; y=&quot;-27&quot; width=&quot;124.921875&quot; height=&quot;54&quot;&gt;&lt;/rect&gt;&lt;g class=&quot;label&quot; style=&quot;&quot; transform=&quot;translate(-32.4609375, -12)&quot;&gt;&lt;rect&gt;&lt;/rect&gt;&lt;foreignObject width=&quot;64.921875&quot; height=&quot;24&quot;&gt;&lt;div xmlns=&quot;http://www.w3.org/1999/xhtml&quot; style=&quot;display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;&quot;&gt;&lt;span class=&quot;nodeLabel&quot;&gt;&lt;p&gt;Journeys&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class=&quot;node default&quot; id=&quot;mermaid-1-flowchart-C-3&quot; data-look=&quot;classic&quot; transform=&quot;translate(389.6015625, 35)&quot;&gt;&lt;rect class=&quot;basic label-container&quot; style=&quot;&quot; x=&quot;-48.6640625&quot; y=&quot;-27&quot; width=&quot;97.328125&quot; height=&quot;54&quot;&gt;&lt;/rect&gt;&lt;g class=&quot;label&quot; style=&quot;&quot; transform=&quot;translate(-18.6640625, -12)&quot;&gt;&lt;rect&gt;&lt;/rect&gt;&lt;foreignObject width=&quot;37.328125&quot; height=&quot;24&quot;&gt;&lt;div xmlns=&quot;http://www.w3.org/1999/xhtml&quot; style=&quot;display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;&quot;&gt;&lt;span class=&quot;nodeLabel&quot;&gt;&lt;p&gt;Form&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class=&quot;node default&quot; id=&quot;mermaid-1-flowchart-D-5&quot; data-look=&quot;classic&quot; transform=&quot;translate(538.7265625, 35)&quot;&gt;&lt;rect class=&quot;basic label-container&quot; style=&quot;&quot; x=&quot;-50.4609375&quot; y=&quot;-27&quot; width=&quot;100.921875&quot; height=&quot;54&quot;&gt;&lt;/rect&gt;&lt;g class=&quot;label&quot; style=&quot;&quot; transform=&quot;translate(-20.4609375, -12)&quot;&gt;&lt;rect&gt;&lt;/rect&gt;&lt;foreignObject width=&quot;40.921875&quot; height=&quot;24&quot;&gt;&lt;div xmlns=&quot;http://www.w3.org/1999/xhtml&quot; style=&quot;display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;&quot;&gt;&lt;span class=&quot;nodeLabel&quot;&gt;&lt;p&gt;Event&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;/g&gt;&lt;/g&gt;&lt;/g&gt;&lt;defs&gt;&lt;filter id=&quot;mermaid-1-drop-shadow&quot; height=&quot;130%&quot; width=&quot;130%&quot;&gt;&lt;feDropShadow dx=&quot;4&quot; dy=&quot;4&quot; stdDeviation=&quot;0&quot; flood-opacity=&quot;0.06&quot; flood-color=&quot;#000000&quot;&gt;&lt;/feDropShadow&gt;&lt;/filter&gt;&lt;/defs&gt;&lt;defs&gt;&lt;filter id=&quot;mermaid-1-drop-shadow-small&quot; height=&quot;150%&quot; width=&quot;150%&quot;&gt;&lt;feDropShadow dx=&quot;2&quot; dy=&quot;2&quot; stdDeviation=&quot;0&quot; flood-opacity=&quot;0.06&quot; flood-color=&quot;#000000&quot;&gt;&lt;/feDropShadow&gt;&lt;/filter&gt;&lt;/defs&gt;&lt;/svg&gt;&lt;/div&gt;
&lt;p&gt;But how do I take this to the Help pane? Just like before, add a section with a checklist of the step you’re in and section with a map to know which section is next or was before:&lt;/p&gt;
&lt;p&gt;&lt;img __ASTRO_IMAGE_=&quot;{&amp;#x22;src&amp;#x22;:&amp;#x22;./image4.png&amp;#x22;,&amp;#x22;alt&amp;#x22;:&amp;#x22;Section with checklist and Map in Journeys&amp;#x22;,&amp;#x22;index&amp;#x22;:0}&quot;&gt;&lt;/p&gt;
&lt;p&gt;For the Checklist, I’d recommend less is more, keep it simple and put no more than 5 checks.&lt;/p&gt;
&lt;p&gt;And if your event includes an external registration portal, you can also &lt;a href=&quot;/writing/build-event-website-power-pages-dynamics-365/&quot;&gt;build a branded event website connected to Customer Insights - Journeys&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&quot;how-to-enable&quot;&gt;How to enable&lt;/h2&gt;
&lt;p&gt;Microsoft documentation already explains the setup process very well: &lt;a href=&quot;https://learn.microsoft.com/en-us/power-apps/maker/data-platform/create-custom-help-pages&quot;&gt;Create guided help for your model-driven app&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Here are the high-level steps:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Open &lt;strong&gt;Power Platform Admin Center&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Navigate to &lt;strong&gt;Environment Settings&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Enable &lt;strong&gt;Custom Help Panes&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Create help pages in Dataverse (recommended inside a solution)&lt;/li&gt;
&lt;li&gt;Assign security roles&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Important:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;To enable this feature, you might require Power Platform Administrator or Dynamics 365 Administrator role in your tenant&lt;/li&gt;
&lt;li&gt;Users need permission to read the Help Page table, adapt the security role accordingly&lt;/li&gt;
&lt;li&gt;Authors need privileges to create and edit help pages.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;More Info about Security and privileges under &lt;a href=&quot;https://learn.microsoft.com/en-us/power-apps/maker/data-platform/create-custom-help-pages#privileges-required&quot;&gt;Privileges required&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&quot;best-practices&quot;&gt;Best practices&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Help panes are linked to a specific language. If the user doesn’t have a help pane for his language, he won’t see anything.&lt;/li&gt;
&lt;li&gt;If you use balloons or checkmarks take into account that this elements are linked to the HTML element. So if the element is inside a collapsed HTML element, it will not show or not show correctly. Keep in mind that the users can be more confused than helped with this kind of things.&lt;/li&gt;
&lt;li&gt;Dropdown or Optionset elements don’t always work with Coachmarks or ballons (for instance in Email)&lt;/li&gt;
&lt;li&gt;I’m more of a reader but if you have workshops in video and you can divide them into different sections, you can directly embed the videos in the help panes&lt;/li&gt;
&lt;li&gt;Use the links to reference other sections of Customer Insights - Journeys&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;final-thoughts&quot;&gt;Final Thoughts&lt;/h2&gt;
&lt;p&gt;Custom Help Panes are one of the most underrated capabilities in Dynamics 365 and Power Apps model-driven applications.&lt;/p&gt;
&lt;p&gt;Instead of relying on external documentation or training sessions, you can guide users directly inside the interface.&lt;/p&gt;
&lt;p&gt;For teams using &lt;strong&gt;Customer Insights - Journeys&lt;/strong&gt;, this means:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Fewer onboarding questions&lt;/li&gt;
&lt;li&gt;Better process consistency&lt;/li&gt;
&lt;li&gt;Faster campaign execution&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;With just a few help pages and checklists, you can transform the application from a complex tool into a &lt;strong&gt;guided marketing workspace&lt;/strong&gt;.&lt;/p&gt;</content:encoded><category>Dynamics 365 Customer Insights Journeys</category><category>Marketing Automation</category><category>Power Platform</category><category>Power Platform Development</category></item><item><title>Clean Up Dataverse File Columns with Power Automate</title><link>https://martinplopez.com/writing/dataverse-delete-file/</link><guid isPermaLink="true">https://martinplopez.com/writing/dataverse-delete-file/</guid><description>Learn how to delete and clean up Dataverse file column data using Power Automate. This step-by-step guide shows how to safely remove file attachments and optimize storage in Microsoft Dataverse.</description><pubDate>Fri, 20 Feb 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;A few weeks after delivering a Power Automate process that generates and stores PDFs in a Dataverse file column, my client asked for something simple:&lt;/p&gt;
&lt;p&gt;“Can we make this process run on demand?”&lt;/p&gt;
&lt;p&gt;That’s when I hit an unexpected limitation:&lt;/p&gt;
&lt;p&gt;You &lt;strong&gt;cannot clear a Dataverse File column using “Update a row”&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;I assumed it would be straightforward. But when I tried to use the &lt;strong&gt;Update a Row&lt;/strong&gt; action, the file column didn’t even appear 😐&lt;/p&gt;
&lt;div class=&quot;markdown-alert markdown-alert-note&quot; dir=&quot;auto&quot;&gt;
&lt;p class=&quot;markdown-alert-title&quot; dir=&quot;auto&quot;&gt;&lt;svg class=&quot;octicon&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot; height=&quot;16&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M0 8a8 8 0 1 1 16 0A8 8 0 0 1 0 8Zm8-6.5a6.5 6.5 0 1 0 0 13 6.5 6.5 0 0 0 0-13ZM6.5 7.75A.75.75 0 0 1 7.25 7h1a.75.75 0 0 1 .75.75v2.75h.25a.75.75 0 0 1 0 1.5h-2a.75.75 0 0 1 0-1.5h.25v-2h-.25a.75.75 0 0 1-.75-.75ZM8 6a1 1 0 1 1 0-2 1 1 0 0 1 0 2Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;NOTE&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;TL;DR:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;If you need to &lt;strong&gt;clear a Dataverse File column using Power Automate&lt;/strong&gt;, you cannot do it with &lt;strong&gt;Update a row&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Instead:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Use &lt;strong&gt;Perform an unbound action&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Select the &lt;strong&gt;DeleteFile&lt;/strong&gt; action&lt;/li&gt;
&lt;li&gt;Pass the &lt;strong&gt;FileId&lt;/strong&gt; of the file stored in the column&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Dataverse stores file content in a separate File record. Deleting that record using &lt;code&gt;DeleteFile&lt;/code&gt; properly removes the file from the column.&lt;/p&gt;
&lt;/div&gt;
&lt;hr&gt;
&lt;h2 id=&quot;things-i-tried&quot;&gt;Things I tried&lt;/h2&gt;
&lt;p&gt;First, I attempted to use &lt;strong&gt;Update a Row&lt;/strong&gt; and set the file column to &lt;code&gt;null&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;That doesn’t work — because the File column does not appear in the action.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;⚠️ Note: For &lt;strong&gt;Image columns&lt;/strong&gt;, clearing with &lt;code&gt;null&lt;/code&gt; &lt;em&gt;does&lt;/em&gt; work using Update a Row. This limitation applies specifically to &lt;strong&gt;File columns&lt;/strong&gt;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Next, I tried using the &lt;strong&gt;Upload a file or an image&lt;/strong&gt; action and passed &lt;code&gt;null&lt;/code&gt; as content:&lt;/p&gt;
&lt;p&gt;&lt;img __ASTRO_IMAGE_=&quot;{&amp;#x22;src&amp;#x22;:&amp;#x22;./image1.png&amp;#x22;,&amp;#x22;alt&amp;#x22;:&amp;#x22;Fill Out the Content name and Content with null expressions&amp;#x22;,&amp;#x22;index&amp;#x22;:0}&quot;&gt;&lt;/p&gt;
&lt;p&gt;Interestingly, this creates a blank file instead of deleting it:&lt;/p&gt;
&lt;p&gt;&lt;img __ASTRO_IMAGE_=&quot;{&amp;#x22;src&amp;#x22;:&amp;#x22;./image2.png&amp;#x22;,&amp;#x22;alt&amp;#x22;:&amp;#x22;untitled.txt is the default null value with \&amp;#x22;null\&amp;#x22; written inside&amp;#x22;,&amp;#x22;index&amp;#x22;:0}&quot;&gt;&lt;/p&gt;
&lt;p&gt;It works as a workaround — but it does not actually remove the file. It simply replaces it with an empty one.&lt;/p&gt;
&lt;p&gt;Not good enough.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;why-this-happens&quot;&gt;Why This Happens&lt;/h2&gt;
&lt;p&gt;When you upload a file into a Dataverse File column:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Dataverse creates a separate &lt;strong&gt;File record&lt;/strong&gt; behind the scenes&lt;/li&gt;
&lt;li&gt;The File column does not directly store the binary content&lt;/li&gt;
&lt;li&gt;Instead, it stores a reference (&lt;code&gt;FileId&lt;/code&gt;) to that File record&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;That’s why the column doesn’t appear in &lt;strong&gt;Update a row&lt;/strong&gt; for clearing with null.&lt;/p&gt;
&lt;p&gt;To properly remove the file, you must delete the underlying File record.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;the-solution&quot;&gt;The Solution&lt;/h2&gt;
&lt;p&gt;My instinct told me:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;“If this exists in Dataverse, there must be an action for it.”&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;In Power Automate, that usually means checking:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Perform a bound action&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Perform an unbound action&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Since File columns are generic and not tied to a specific table type, this had to be an &lt;strong&gt;unbound action&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;After scrolling through the list…&lt;/p&gt;
&lt;figure class=&quot;prose-figure&quot;&gt;&lt;img __ASTRO_IMAGE_=&quot;{&amp;#x22;src&amp;#x22;:&amp;#x22;./image3.png&amp;#x22;,&amp;#x22;alt&amp;#x22;:&amp;#x22;Unbound Actions possible&amp;#x22;,&amp;#x22;title&amp;#x22;:&amp;#x22;That is quite a list of actions...&amp;#x22;,&amp;#x22;index&amp;#x22;:0}&quot;&gt;&lt;figcaption class=&quot;prose-figure__caption&quot;&gt;That is quite a list of actions...&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;I found exactly what I needed:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;DeleteFile&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;When selecting it, the action requires one parameter:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;FileId&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;And that’s the key insight.&lt;/p&gt;
&lt;p&gt;When a file is stored in a File column, the record exposes its &lt;strong&gt;FileId&lt;/strong&gt; — which you can retrieve dynamically.&lt;/p&gt;
&lt;p&gt;&lt;img __ASTRO_IMAGE_=&quot;{&amp;#x22;src&amp;#x22;:&amp;#x22;./image4.png&amp;#x22;,&amp;#x22;alt&amp;#x22;:&amp;#x22;File Column in the API&amp;#x22;,&amp;#x22;index&amp;#x22;:0}&quot;&gt;&lt;/p&gt;
&lt;p&gt;If you pass that FileId into the &lt;code&gt;DeleteFile&lt;/code&gt; action — the file is completely removed.&lt;/p&gt;
&lt;p&gt;&lt;img __ASTRO_IMAGE_=&quot;{&amp;#x22;src&amp;#x22;:&amp;#x22;./image5.png&amp;#x22;,&amp;#x22;alt&amp;#x22;:&amp;#x22;File emptied!&amp;#x22;,&amp;#x22;index&amp;#x22;:0}&quot;&gt;&lt;/p&gt;
&lt;p&gt;Voilà 😎&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;step-by-step-deleting-a-dataverse-file-column&quot;&gt;Step-by-Step: Deleting a Dataverse File Column&lt;/h2&gt;
&lt;p&gt;1️⃣ Add &lt;strong&gt;Perform an unbound action&lt;/strong&gt;&lt;br&gt;
2️⃣ Select action: &lt;code&gt;DeleteFile&lt;/code&gt;&lt;br&gt;
3️⃣ In the &lt;strong&gt;FileId&lt;/strong&gt; parameter, pass the FileId from your record&lt;br&gt;
4️⃣ Save and test&lt;/p&gt;
&lt;p&gt;Once executed, the file content is fully removed from the column.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;important-notes&quot;&gt;Important Notes&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;This applies to &lt;strong&gt;File columns&lt;/strong&gt;, not Image columns.&lt;/li&gt;
&lt;li&gt;You must have proper permissions to delete files.&lt;/li&gt;
&lt;li&gt;Many advanced Dataverse capabilities are exposed via unbound actions — even if they’re not available in standard connector actions.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&quot;conclusion&quot;&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;If you ever feel stuck because something isn’t available in a standard Dataverse connector action, check the &lt;strong&gt;bound and unbound actions&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Very often, the platform already provides a proper way to handle it — you just need to look a little deeper.&lt;/p&gt;
&lt;p&gt;While preparing this article, I tried generating an AI image to illustrate the problem. Ironically, the AI generated something very close to the solution 😅&lt;/p&gt;
&lt;p&gt;&lt;img __ASTRO_IMAGE_=&quot;{&amp;#x22;src&amp;#x22;:&amp;#x22;./image6.png&amp;#x22;,&amp;#x22;alt&amp;#x22;:&amp;#x22;AI knew the Solution&amp;#x22;,&amp;#x22;index&amp;#x22;:0}&quot;&gt;&lt;/p&gt;
&lt;p&gt;And I think this is important:&lt;/p&gt;
&lt;p&gt;Even if someone has written about this before, your explanation, your scenario, and your experience will help someone in a different way.&lt;/p&gt;
&lt;p&gt;If this article saves someone 30 minutes of frustration — it’s worth publishing.&lt;/p&gt;
&lt;p&gt;👉 If you need help with this kind of stuff, feel free to &lt;a href=&quot;mailto:comment@martinplopez.com&quot;&gt;send me an Email&lt;/a&gt;, . I’ll gladly try to help 😉&lt;/p&gt;</content:encoded><category>Dataverse</category><category>Power Automate</category><category>File Columns</category><category>Power Platform</category><category>Power Platform Development</category></item><item><title>Personalized Christmas Emails in Seconds with Power Automate + AI</title><link>https://martinplopez.com/writing/power-automate-ai-personalized-emails-dataverse/</link><guid isPermaLink="true">https://martinplopez.com/writing/power-automate-ai-personalized-emails-dataverse/</guid><description>Learn how to use AI prompts in Power Automate to generate personalized emails using Dataverse contact data, adding context and intelligence to your automations.</description><pubDate>Thu, 18 Dec 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;When I was a kid, I remember spending hours preparing Christmas cards by hand - paper, crayons, glitter, and a lot of patience. Writing a thoughtful message, waiting for the glue to dry, finding a stamp, and finally dropping the envelope into the school mailbox was all part of the ritual.&lt;/p&gt;
&lt;p&gt;Today, very few people send physical Christmas cards anymore. But the intention behind them hasn’t changed: letting people know we’re thinking of them and that they matter.&lt;/p&gt;
&lt;p&gt;Companies feel the same need toward their customers. They want to communicate in a way that feels personal and genuine - but when you’re dealing with hundreds or thousands of contacts, that quickly becomes a challenge. Generic email templates don’t feel special, and complex conditional logic only goes so far.&lt;/p&gt;
&lt;p&gt;This is where &lt;strong&gt;Power Automate&lt;/strong&gt; and &lt;strong&gt;Artificial Intelligence&lt;/strong&gt; come into play. By combining Dataverse data with AI-powered prompts inside a flow, it’s possible to generate highly personalized emails at scale - messages that adapt to each recipient’s context without sacrificing automation.&lt;/p&gt;
&lt;p&gt;In this article, I’ll show how you can use &lt;strong&gt;Power Automate + AI&lt;/strong&gt; to turn a single click into hundreds (or thousands) of truly personal emails.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/writing/power-automate-ai-personalized-emails-dataverse/image.gif&quot; alt=&quot;Here&amp;#x27;s a list of the messages&quot;&gt;&lt;/p&gt;
&lt;div class=&quot;markdown-alert markdown-alert-note&quot; dir=&quot;auto&quot;&gt;
&lt;p class=&quot;markdown-alert-title&quot; dir=&quot;auto&quot;&gt;&lt;svg class=&quot;octicon&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot; height=&quot;16&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M0 8a8 8 0 1 1 16 0A8 8 0 0 1 0 8Zm8-6.5a6.5 6.5 0 1 0 0 13 6.5 6.5 0 0 0 0-13ZM6.5 7.75A.75.75 0 0 1 7.25 7h1a.75.75 0 0 1 .75.75v2.75h.25a.75.75 0 0 1 0 1.5h-2a.75.75 0 0 1 0-1.5h.25v-2h-.25a.75.75 0 0 1-.75-.75ZM8 6a1 1 0 1 1 0-2 1 1 0 0 1 0 2Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;NOTE&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;TL;DR:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;With &lt;strong&gt;Power Automate&lt;/strong&gt; and the &lt;strong&gt;AI Prompt connector&lt;/strong&gt;, you can generate hundreds or thousands of highly personalized emails using Dataverse contact data - without building complex logic or templates.&lt;/p&gt;
&lt;p&gt;In this article, I’ll show how to use AI prompts inside a flow to add &lt;strong&gt;context, tone, and intelligence&lt;/strong&gt; to your email communications, while keeping everything scalable and automated.&lt;/p&gt;
&lt;/div&gt;
&lt;hr&gt;
&lt;h2 id=&quot;the-personalization-at-scale-problem&quot;&gt;The personalization-at-scale problem&lt;/h2&gt;
&lt;p&gt;Personalization has been a buzzword for years, but in practice it’s often reduced to little more than:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;“Hi {{FirstName}}”&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;The result?&lt;br&gt;
Messages are sent at scale, but they don’t &lt;em&gt;feel&lt;/em&gt; personal - and recipients notice.&lt;/p&gt;
&lt;p&gt;At the same time, writing individual emails manually simply doesn’t scale. No one has the time to craft hundreds of unique messages, even if the intent is there.&lt;/p&gt;
&lt;p&gt;What’s missing is a way to keep:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;the &lt;strong&gt;efficiency of automation&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;while regaining the &lt;strong&gt;human tone and context&lt;/strong&gt; of a personal message&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;That gap is exactly where AI can add real value.&lt;/p&gt;
&lt;p&gt;If you’ve read this far, you might be thinking: &lt;em&gt;Alright Martin, but this is the third Post I read today about AI being the solution&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;I can say, yes, buuuuut probably not within &lt;strong&gt;Power Automate&lt;/strong&gt; 🙌&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&quot;introducing-power-automate--ai-prompts&quot;&gt;Introducing: Power Automate + AI Prompts&lt;/h3&gt;
&lt;p&gt;Power Automate has always been excellent at orchestrating processes: triggering actions, retrieving data, and sending messages. What it traditionally lacked was the ability to &lt;em&gt;think&lt;/em&gt; about the content it was sending.&lt;/p&gt;
&lt;p&gt;That changes with the &lt;strong&gt;AI Prompt connector&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;By introducing AI into your flows, you can move beyond fixed templates and rules, and instead &lt;strong&gt;generate content dynamically&lt;/strong&gt;, based on real data and context.&lt;/p&gt;
&lt;p&gt;In this approach:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Dataverse&lt;/strong&gt; provides structured information about each contact&lt;br&gt;
(name, role, company, preferences, history, etc.)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Power Automate&lt;/strong&gt; controls &lt;em&gt;when&lt;/em&gt; and &lt;em&gt;to whom&lt;/em&gt; messages are sent&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;AI prompts&lt;/strong&gt; decide &lt;em&gt;how&lt;/em&gt; the message should be written&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Instead of hardcoding dozens of variations, you describe &lt;strong&gt;what kind of message you want&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;the tone (formal, friendly, festive…)&lt;/li&gt;
&lt;li&gt;the context (customer relationship, event, time of year)&lt;/li&gt;
&lt;li&gt;the key facts the AI should consider&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The AI then generates a unique message for each recipient, using the data you pass into the prompt.&lt;/p&gt;
&lt;p&gt;The result is a powerful combination:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;One flow&lt;/li&gt;
&lt;li&gt;One prompt&lt;/li&gt;
&lt;li&gt;Potentially thousands of emails
&lt;ul&gt;
&lt;li&gt;each one different, relevant, and human-sounding.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This doesn’t replace automation. It &lt;strong&gt;enhances it&lt;/strong&gt;, turning Power Automate from a message delivery engine into a personalization engine.&lt;/p&gt;
&lt;div class=&quot;markdown-alert markdown-alert-warning&quot; dir=&quot;auto&quot;&gt;
&lt;p class=&quot;markdown-alert-title&quot; dir=&quot;auto&quot;&gt;&lt;svg class=&quot;octicon&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot; height=&quot;16&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;WARNING&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Responsible use note&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;AI-generated text can be wrong or inappropriate. Consider adding approval for high-value customers, logging outputs, and avoiding sensitive attributes unless you have consent and a clear business need.&lt;/p&gt;
&lt;/div&gt;
&lt;hr&gt;
&lt;h2 id=&quot;lets-build-it&quot;&gt;Let’s build it&lt;/h2&gt;
&lt;h3 id=&quot;step-1-create-the-flow&quot;&gt;Step 1: Create the flow&lt;/h3&gt;
&lt;p&gt;For starters, I recommend creating a manually triggered Power Automate Flow with a Dataverse “List rows” action. This will allow us to control exactly when the emails are sent and to whom.&lt;/p&gt;
&lt;div class=&quot;markdown-alert markdown-alert-tip&quot; dir=&quot;auto&quot;&gt;
&lt;p class=&quot;markdown-alert-title&quot; dir=&quot;auto&quot;&gt;&lt;svg class=&quot;octicon&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot; height=&quot;16&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8 1.5c-2.363 0-4 1.69-4 3.75 0 .984.424 1.625.984 2.304l.214.253c.223.264.47.556.673.848.284.411.537.896.621 1.49a.75.75 0 0 1-1.484.211c-.04-.282-.163-.547-.37-.847a8.456 8.456 0 0 0-.542-.68c-.084-.1-.173-.205-.268-.32C3.201 7.75 2.5 6.766 2.5 5.25 2.5 2.31 4.863 0 8 0s5.5 2.31 5.5 5.25c0 1.516-.701 2.5-1.328 3.259-.095.115-.184.22-.268.319-.207.245-.383.453-.541.681-.208.3-.33.565-.37.847a.751.751 0 0 1-1.485-.212c.084-.593.337-1.078.621-1.489.203-.292.45-.584.673-.848.075-.088.147-.173.213-.253.561-.679.985-1.32.985-2.304 0-2.06-1.637-3.75-4-3.75ZM5.75 12h4.5a.75.75 0 0 1 0 1.5h-4.5a.75.75 0 0 1 0-1.5ZM6 15.25a.75.75 0 0 1 .75-.75h2.5a.75.75 0 0 1 0 1.5h-2.5a.75.75 0 0 1-.75-.75Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;TIP&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Recommendations&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Rename the action to describe what it does (best practice): e.g., &lt;strong&gt;List Dataverse Contacts&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Use &lt;strong&gt;Select columns&lt;/strong&gt; for only the fields you’ll pass to the prompt&lt;/li&gt;
&lt;li&gt;Filter out contacts without an email address to avoid failures&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;p&gt;&lt;img __ASTRO_IMAGE_=&quot;{&amp;#x22;src&amp;#x22;:&amp;#x22;./image1.png&amp;#x22;,&amp;#x22;alt&amp;#x22;:&amp;#x22;Filling out the Dataverse Action&amp;#x22;,&amp;#x22;index&amp;#x22;:0}&quot;&gt;&lt;/p&gt;
&lt;h3 id=&quot;step-2-create-the-ai-prompt&quot;&gt;Step 2: Create the AI Prompt&lt;/h3&gt;
&lt;p&gt;The next step is to select the &lt;strong&gt;Run a prompt&lt;/strong&gt; action. This lets us generate a personalized email using the Dataverse data we just retrieved&lt;/p&gt;
&lt;p&gt;&lt;img __ASTRO_IMAGE_=&quot;{&amp;#x22;src&amp;#x22;:&amp;#x22;./image2.png&amp;#x22;,&amp;#x22;alt&amp;#x22;:&amp;#x22;Selecting \&amp;#x22;Run a Prompt\&amp;#x22; from Power Automate Actions&amp;#x22;,&amp;#x22;index&amp;#x22;:0}&quot;&gt;&lt;/p&gt;
&lt;p&gt;We’ll create a new prompt from scratch, so click on ”+ New custom prompt”, this will open a window like the following:&lt;/p&gt;
&lt;figure class=&quot;prose-figure&quot;&gt;&lt;img __ASTRO_IMAGE_=&quot;{&amp;#x22;src&amp;#x22;:&amp;#x22;./image3.png&amp;#x22;,&amp;#x22;alt&amp;#x22;:&amp;#x22;Editing a Custom Prompt&amp;#x22;,&amp;#x22;title&amp;#x22;:&amp;#x22;In my experience, I found very useful and straightforward to use the &amp;#x60;Get Started with Copilot (Preview)&amp;#x60; Option. It works very well to give you a draft&amp;#x22;,&amp;#x22;index&amp;#x22;:0}&quot;&gt;&lt;figcaption class=&quot;prose-figure__caption&quot;&gt;In my experience, I found very useful and straightforward to use the `Get Started with Copilot (Preview)` Option. It works very well to give you a draft&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;Here my final version of my prompt, so you can feel free to use it:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;text&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;You are tasked with composing personalized Christmas email based on provided contact information.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;The email should be tailored to each individual using their first name, last name, birthdate, gender, and country.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Additionally, the email content must be translated appropriately to match the language or cultural context of the recipient’s country.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;### Instructions:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;1. **Personalization:**&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;   - Use the first name and last name to address the recipient warmly and personally.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;   - Optionally, incorporate a friendly mention of their birthdate if relevant and appropriate.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;2. **Cultural Sensitivity:**&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;   - Adapt the tone and style of the Christmas greeting to suit the cultural norms of the recipient’s country.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;3. **Translation:**&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;   - Translate the entire email content into the primary language of the recipient’s country.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;   - Ensure the translation preserves the warmth and festive spirit of the original message.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;4. **Email Content:**&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;   - Include a warm Christmas greeting.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;   - Optionally, add a positive, festive message or wish for the upcoming year (2026).&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;5. **Output:**&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;   - Provide the personalized and translated email text.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;### Guidelines:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;- Do not assume the language of the country without verification; use common language associations (e.g., Spain → Spanish, France → French).&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;- Keep the message respectful, warm, and festive.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;- Avoid overly formal or informal language unless culturally appropriate.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;- Extract all personalization details strictly from the provided contact info.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;- Add a Signature of Martin P Lopez&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;### Output Format:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Output the personalized Christmas email in json format:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;example:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&quot;subject&quot;:&quot;&quot;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&quot;email&quot;:&quot;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Include a Subject for the Email in the subject and the email content in html in the email.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Provide the contact information here: &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;firstname: {{firstname}}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;lastname:  {{lastname}}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;birthdate:  {{birthdate}}   &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;gender:  {{gender}}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;country:  {{country}}  &lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;div class=&quot;markdown-alert markdown-alert-tip&quot; dir=&quot;auto&quot;&gt;
&lt;p class=&quot;markdown-alert-title&quot; dir=&quot;auto&quot;&gt;&lt;svg class=&quot;octicon&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot; height=&quot;16&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M8 1.5c-2.363 0-4 1.69-4 3.75 0 .984.424 1.625.984 2.304l.214.253c.223.264.47.556.673.848.284.411.537.896.621 1.49a.75.75 0 0 1-1.484.211c-.04-.282-.163-.547-.37-.847a8.456 8.456 0 0 0-.542-.68c-.084-.1-.173-.205-.268-.32C3.201 7.75 2.5 6.766 2.5 5.25 2.5 2.31 4.863 0 8 0s5.5 2.31 5.5 5.25c0 1.516-.701 2.5-1.328 3.259-.095.115-.184.22-.268.319-.207.245-.383.453-.541.681-.208.3-.33.565-.37.847a.751.751 0 0 1-1.485-.212c.084-.593.337-1.078.621-1.489.203-.292.45-.584.673-.848.075-.088.147-.173.213-.253.561-.679.985-1.32.985-2.304 0-2.06-1.637-3.75-4-3.75ZM5.75 12h4.5a.75.75 0 0 1 0 1.5h-4.5a.75.75 0 0 1 0-1.5ZM6 15.25a.75.75 0 0 1 .75-.75h2.5a.75.75 0 0 1 0 1.5h-2.5a.75.75 0 0 1-.75-.75Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;TIP&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Notes regarding the prompt&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Feel free to edit the prompt as you need, this prompt should be used as reference.&lt;/li&gt;
&lt;li&gt;I used the cultural sensitivity, translation and output instructions as I provide different Countries of reference&lt;/li&gt;
&lt;li&gt;In the email content I found problems when you don’t indicate the coming year, so I recommend adding it&lt;/li&gt;
&lt;li&gt;In the Guidelines I indicated to add my signature, that worked very nicely for all languages&lt;/li&gt;
&lt;li&gt;I find very useful to have an output in JSON so you can have the subject and body of the email as output&lt;/li&gt;
&lt;li&gt;In the last part, the dynamic contents are added. They’re a normal text contents, we provide the data from Dataverse afterwards.&lt;/li&gt;
&lt;li&gt;My recommendation is to give a clear name of the function to the prompt as a best practice&lt;/li&gt;
&lt;li&gt;The Output in HTML is to ensure the Email is formatted correctly with spacing.&lt;/li&gt;
&lt;li&gt;For better results I recommend the ChatGPT 4.1 Model instead of the Mini, it will improve the result a lot.&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;p&gt;Once we’re done, we save the prompt and we can map the variables with the data from Dataverse:&lt;/p&gt;
&lt;figure class=&quot;prose-figure&quot;&gt;&lt;img __ASTRO_IMAGE_=&quot;{&amp;#x22;src&amp;#x22;:&amp;#x22;./image4.png&amp;#x22;,&amp;#x22;alt&amp;#x22;:&amp;#x22;Mapping the variables with Dataverse&amp;#x22;,&amp;#x22;title&amp;#x22;:&amp;#x22;For the gender I use the &amp;#x60;item()?[&amp;#x27;gendercode@OData.Community.Display.V1.FormattedValue&amp;#x27;]&amp;#x60; expression, as by default it will give you 1 or 2 as value&amp;#x22;,&amp;#x22;index&amp;#x22;:0}&quot;&gt;&lt;figcaption class=&quot;prose-figure__caption&quot;&gt;For the gender I use the `item()?[&apos;gendercode@OData.Community.Display.V1.FormattedValue&apos;]` expression, as by default it will give you 1 or 2 as value&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;Power Automate will automatically wrap the prompt and email actions in an &lt;code&gt;Apply to each&lt;/code&gt; loop over the returned contacts.&lt;/p&gt;
&lt;h3 id=&quot;step-3-send-the-email&quot;&gt;Step 3: Send the Email&lt;/h3&gt;
&lt;p&gt;Now add the Outlook action to send the emails. Map the prompt output (subject and email) to the email subject and body, and use the contact’s email address from Dataverse as the recipient. The flow should be ready!&lt;/p&gt;
&lt;figure class=&quot;prose-figure&quot;&gt;&lt;img __ASTRO_IMAGE_=&quot;{&amp;#x22;src&amp;#x22;:&amp;#x22;./image5.png&amp;#x22;,&amp;#x22;alt&amp;#x22;:&amp;#x22;Setting up the Email Part&amp;#x22;,&amp;#x22;title&amp;#x22;:&amp;#x22;Be mindful, that the &amp;#x60;Send an Email (V2)&amp;#x60; Action will send all the emails directly, if you prefer to review them before sending, I recommend the &amp;#x60;Draft an email message&amp;#x60; Action&amp;#x22;,&amp;#x22;index&amp;#x22;:0}&quot;&gt;&lt;figcaption class=&quot;prose-figure__caption&quot;&gt;Be mindful, that the `Send an Email (V2)` Action will send all the emails directly, if you prefer to review them before sending, I recommend the `Draft an email message` Action&lt;/figcaption&gt;&lt;/figure&gt;
&lt;h2 id=&quot;conclusion&quot;&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;I really like this solution, it’s simple, easy to implement and gives many extension possibilities:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Send everything dynamically uploading an Excel of contacts to a SharePoint site&lt;/li&gt;
&lt;li&gt;Connect and expand with Dynamics Customer Insights Journeys&lt;/li&gt;
&lt;li&gt;Adapt it to be more personal in your marketing strategy, for example by sending Event follow-ups, VIP customer outreach or targeted campaigns&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This opens up a lot of possibilities and creates a super-powered version of Power Automate. I’m excited about what’s coming in 2026…😊&lt;/p&gt;
&lt;p&gt;How about you? You think this combination has other possibilities, I’d love to read them! 😉 &lt;a href=&quot;mailto:comment@martinplopez.com&quot;&gt;email me&lt;/a&gt; or tag me on LinkedIn!&lt;/p&gt;</content:encoded><category>Power Platform</category><category>Artificial Intelligence</category><category>Power Platform Development</category><category>Power Automate</category><category>Copilot</category></item><item><title>Don’t Waste Your Thank-You Page: Use Dynamic Data to Drive Next-Step Actions</title><link>https://martinplopez.com/writing/dynamic-thank-you-page-dynamics-365/</link><guid isPermaLink="true">https://martinplopez.com/writing/dynamic-thank-you-page-dynamics-365/</guid><description>Learn how to turn your thank-you page into a high-value engagement tool using dynamic form data in Dynamics 365 Customer Insights - Journeys.</description><pubDate>Wed, 26 Nov 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;If you’ve worked with &lt;strong&gt;Dynamics 365 Customer Insights Journeys&lt;/strong&gt;, you’ve probably noticed that the default form submission  experience - a simple logo and “Thank you” message - often feels underwhelming for users.&lt;/p&gt;
&lt;p&gt;You’re not alone 😁 Many teams want something more engaging, more branded, and more helpful than the out-of-the-box version. Luckily, Dynamics 365 allows you to redirect users to a custom thank-you page, giving you full control over design and content.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;BEFORE&lt;/strong&gt;:
&lt;img __ASTRO_IMAGE_=&quot;{&amp;#x22;src&amp;#x22;:&amp;#x22;./image1.png&amp;#x22;,&amp;#x22;alt&amp;#x22;:&amp;#x22;Out of the Box Thank You Message&amp;#x22;,&amp;#x22;index&amp;#x22;:0}&quot;&gt;
&lt;strong&gt;AFTER&lt;/strong&gt;:
&lt;img __ASTRO_IMAGE_=&quot;{&amp;#x22;src&amp;#x22;:&amp;#x22;./image9.png&amp;#x22;,&amp;#x22;alt&amp;#x22;:&amp;#x22;Custom Thank You Message&amp;#x22;,&amp;#x22;index&amp;#x22;:0}&quot;&gt;&lt;/p&gt;
&lt;p&gt;In this article, we’ll walk through how to quickly create a personalized, dynamic thank-you page - including how to pass form submission data using &lt;code&gt;sessionStorage&lt;/code&gt; so you can greet each user with relevant information right after they hit submit.&lt;/p&gt;
&lt;p&gt;This idea (using sessionStorage) comes from an article by the great Megan V Walker, worth a read if this topic interests you 👉 &lt;a href=&quot;https://meganvwalker.com/session-registration-confirmation-page/&quot;&gt;Format Session Registration Confirmation Page On Your Own Domain&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;TL;DR:&lt;/strong&gt;&lt;br&gt;
Dynamics 365 CI Journeys lets you redirect form submissions to a custom thank-you page.&lt;br&gt;
By saving form data into &lt;code&gt;sessionStorage&lt;/code&gt; during &lt;code&gt;onsubmit&lt;/code&gt;, you can create a fully personalized thank-you experience that updates instantly - no server calls needed.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&quot;step-1-build-your-custom-thank-you-page&quot;&gt;Step 1: Build Your Custom Thank-You Page&lt;/h2&gt;
&lt;p&gt;We’ll continue with the example page I created in Power Pages &lt;a href=&quot;../build-event-website-power-pages-dynamics-365/&quot;&gt;in my previous article&lt;/a&gt;. And as we are using Power Pages, we’ll keep it simple and click on &lt;strong&gt;+ Page&lt;/strong&gt; in our Website editor.&lt;/p&gt;
&lt;figure class=&quot;prose-figure&quot;&gt;&lt;img __ASTRO_IMAGE_=&quot;{&amp;#x22;src&amp;#x22;:&amp;#x22;./image3.png&amp;#x22;,&amp;#x22;alt&amp;#x22;:&amp;#x22;Vibe Creating a Thank You Page&amp;#x22;,&amp;#x22;title&amp;#x22;:&amp;#x22;This will open a Copilot option, which I had tried out by writing &amp;#x60;Make a Thank You Page to redirect to when a user submits for an event&amp;#x60;&amp;#x22;,&amp;#x22;index&amp;#x22;:0}&quot;&gt;&lt;figcaption class=&quot;prose-figure__caption&quot;&gt;This will open a Copilot option, which I had tried out by writing `Make a Thank You Page to redirect to when a user submits for an event`&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;The Result is definitely not bad 😎&lt;/p&gt;
&lt;p&gt;&lt;img __ASTRO_IMAGE_=&quot;{&amp;#x22;src&amp;#x22;:&amp;#x22;./image2.png&amp;#x22;,&amp;#x22;alt&amp;#x22;:&amp;#x22;Thank You Page from Copilot&amp;#x22;,&amp;#x22;index&amp;#x22;:0}&quot;&gt;&lt;/p&gt;
&lt;p&gt;Now let’s customize it.&lt;/p&gt;
&lt;h3 id=&quot;add-dynamic-placeholders&quot;&gt;Add dynamic placeholders&lt;/h3&gt;
&lt;p&gt;Open &lt;strong&gt;Edit Code&lt;/strong&gt;, then we can modify our &lt;code&gt;h1&lt;/code&gt; and &lt;code&gt;h3&lt;/code&gt; tags to add a &lt;code&gt;span&lt;/code&gt; tag which we’ll change dynamically. Here is my Page:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;html&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt; data-component-theme&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;portalThemeColor8&quot;&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;row sectionBlockLayout&quot;&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt; style&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&apos;padding: 8px; margin: 0px; display: flex; flex-wrap: wrap; min-height: 60vh; background-image: url(&quot;/Event-2.jpg&quot;); background-position: center center; background-repeat: no-repeat; background-size: cover;&apos;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;  &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;container&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;col-md-12 columnBlockLayout&quot;&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt; style&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;min-width: 250px; flex-grow: 1; display: flex; flex-direction: column; justify-content: center; align-items: center; margin: 120px 0px;&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;      &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;h1&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt; style&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;text-align: center; color: #ffffff; text-shadow: 2px 2px 4px rgba(0,0,0,0.7);&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;&gt;Thank You, &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;span&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt; data-form-field&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;firstname&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;&gt;there!&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;span&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;h1&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;      &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;h3&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt; style&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;text-align: center; color: #ffffff; text-shadow: 1px 1px 3px rgba(0,0,0,0.6);&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;&gt;Your registration for the &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;span&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt; data-form-field&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;event&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;&gt;event&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;span&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;&gt; was successful.&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;h3&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    &amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;  &amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt; data-component-theme&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;portalThemeColor&quot;&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;row sectionBlockLayout&quot;&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt; style&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;margin: 0px; display: flex; flex-wrap: wrap; min-height: auto; padding: 40px 0px;&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;  &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;container&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;col-lg-12 columnBlockLayout&quot;&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt; style&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;min-width: 250px; flex-grow: 1; display: flex; flex-direction: column; justify-content: center; padding: 20px;&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;      &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;h2&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;&gt;What Happens Next?&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;h2&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;      &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;p&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;&gt;We have sent a confirmation email with all the event details to your inbox. Please check your email and add the event to your calendar.&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;p&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;      &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;button&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt; onclick&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;window&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;location&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;href&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&apos;/&apos;&quot;&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt; type&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;button&quot;&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt; value&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;/&quot;&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;button1&quot;&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt; style&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;width: fit-content;&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;&gt;Return to Homepage&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;button&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    &amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;  &amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;add-script-to-update-the-placeholders&quot;&gt;Add script to update the placeholders&lt;/h3&gt;
&lt;p&gt;Open the &lt;code&gt;*.customjs.js&lt;/code&gt; of the newly created Thank You Page and paste the following javascript that will substitute the dynamic value of page for the variables we will save in the session storage when we submit the form:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;js&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;document.&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;addEventListener&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&apos;DOMContentLoaded&apos;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; () {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;  populateThankYouPageFromSession&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;  });&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F97583&quot;&gt;  function&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt; populateThankYouPageFromSession&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:#FFAB70&quot;&gt;options&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F97583&quot;&gt;    const&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; config&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; Object.&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;assign&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;      {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;        storageKey: &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&apos;ciFormData&apos;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;        clearAfterUse: &lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;true&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;      },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;      options&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    );&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F97583&quot;&gt;    const&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; raw&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; sessionStorage.&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;getItem&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;(config.storageKey);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;!&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;raw) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;      console.&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;warn&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&apos;No form data found in sessionStorage under key:&apos;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;, config.storageKey);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F97583&quot;&gt;      return&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F97583&quot;&gt;    let&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; formData;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F97583&quot;&gt;    try&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;      formData &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; JSON&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;parse&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;(raw);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    } &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;catch&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; (error) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;      console.&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;error&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&apos;Could not parse form data from sessionStorage:&apos;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;, error);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F97583&quot;&gt;      return&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F97583&quot;&gt;    const&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; boundElements&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; document.&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;querySelectorAll&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&apos;[data-form-field]&apos;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    boundElements.&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;forEach&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;color:#FFAB70&quot;&gt;el&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F97583&quot;&gt;      const&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; fieldName&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; el.&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;getAttribute&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&apos;data-form-field&apos;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F97583&quot;&gt;      if&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;!&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;fieldName) &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F97583&quot;&gt;      const&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; value&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; formData[fieldName];&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F97583&quot;&gt;      if&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; (value &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;===&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; undefined&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; ||&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; value &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;===&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; null&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; ||&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; value &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;===&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; &apos;&apos;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F97583&quot;&gt;        return&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;      }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F97583&quot;&gt;      if&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; (el.tagName &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;===&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; &apos;INPUT&apos;&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; ||&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; el.tagName &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;===&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; &apos;TEXTAREA&apos;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;        el.value &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; value;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;      } &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;else&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;        el.textContent &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; value;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;      }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    });&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; (config.clearAfterUse) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;      sessionStorage.&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;removeItem&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;(config.storageKey);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;  }&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Your page should look like this:&lt;/p&gt;
&lt;p&gt;&lt;img __ASTRO_IMAGE_=&quot;{&amp;#x22;src&amp;#x22;:&amp;#x22;./image7.png&amp;#x22;,&amp;#x22;alt&amp;#x22;:&amp;#x22;VSCode for Power Pages&amp;#x22;,&amp;#x22;index&amp;#x22;:0}&quot;&gt;&lt;/p&gt;
&lt;h2 id=&quot;step-2-configure-the-form-in-customer-insights-journeys&quot;&gt;Step 2: Configure the Form in Customer Insights Journeys&lt;/h2&gt;
&lt;h3 id=&quot;enable-redirect&quot;&gt;Enable Redirect&lt;/h3&gt;
&lt;p&gt;Open your event form in CI Journeys and set:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Post submission action:&lt;/strong&gt; Redirect&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Redirect URL:&lt;/strong&gt; full URL of your new thank-you page&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img __ASTRO_IMAGE_=&quot;{&amp;#x22;src&amp;#x22;:&amp;#x22;./image8.png&amp;#x22;,&amp;#x22;alt&amp;#x22;:&amp;#x22;Edit Form in Customer Insights Journeys&amp;#x22;,&amp;#x22;index&amp;#x22;:0}&quot;&gt;&lt;/p&gt;
&lt;p&gt;⚠️ If your thank-you page is on a &lt;em&gt;different domain&lt;/em&gt; than your form, &lt;code&gt;sessionStorage&lt;/code&gt; will not persist.&lt;br&gt;
Use &lt;strong&gt;localStorage&lt;/strong&gt; instead if needed.&lt;/p&gt;
&lt;h3 id=&quot;save-form-values-into-session-storage&quot;&gt;Save form values into session storage&lt;/h3&gt;
&lt;p&gt;Edit the HTML of your form and paste the script &lt;em&gt;after the closing &lt;code&gt;&amp;#x3C;/style&gt;&lt;/code&gt; tag&lt;/em&gt;:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;html&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;script&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;  document.&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;addEventListener&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;d365mkt-afterformsubmit&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;color:#FFAB70&quot;&gt;event&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F97583&quot;&gt;    const&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; detail&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; event.detail &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;||&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; {};&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F97583&quot;&gt;    const&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; payload&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; detail.payload &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;||&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; {};&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F97583&quot;&gt;    const&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; eventTitle&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; =&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;      document.&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;querySelector&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;h1 .msdynmkt_personalization&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;)?.textContent?.&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;trim&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;() &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;||&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; &quot;&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F97583&quot;&gt;    const&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; firstname&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; =&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;      payload.firstname &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;||&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;      document.&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;querySelector&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&apos;input[name=&quot;firstname&quot;]&apos;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;)?.value &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;||&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;      &quot;&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F97583&quot;&gt;    const&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; formData&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;      firstname,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;      event: eventTitle&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    };&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    sessionStorage.&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;setItem&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;ciFormData&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;JSON&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;stringify&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;(formData));&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;  });&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;script&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;After adding this script is the moment of the truth, cross your fingers, go to your registration page, fill it out and…&lt;/p&gt;
&lt;figure class=&quot;prose-figure&quot;&gt;&lt;img src=&quot;/writing/dynamic-thank-you-page-dynamics-365/image1.gif&quot; alt=&quot;That&amp;#x27;s a success!&quot; title=&quot;Now you have a fully dynamic, branded thank-you experience! 😊&quot;&gt;&lt;figcaption class=&quot;prose-figure__caption&quot;&gt;Now you have a fully dynamic, branded thank-you experience! 😊&lt;/figcaption&gt;&lt;/figure&gt;
&lt;h2 id=&quot;csp-configuration-power-pages-only&quot;&gt;CSP Configuration (Power Pages Only)&lt;/h2&gt;
&lt;p&gt;If the page redirects correctly &lt;strong&gt;but does not show the dynamic data&lt;/strong&gt;, Power Pages may be blocking inline scripts.&lt;/p&gt;
&lt;p&gt;In order to solve this, we can adjust our power pages by allowing this, I found a perfect article for this 👉 &lt;a href=&quot;https://michelcarlo.com/2024/11/23/power-pages-csp-starter-settings/&quot;&gt;Power Pages CSP: Starter Settings&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Add this to your CSP settings:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;script-src &apos;self&apos; &apos;unsafe-eval&apos; &apos;unsafe-inline&apos; https://*.microsoft.com content.powerapps.com https://*.azureedge.net;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;figure class=&quot;prose-figure&quot;&gt;&lt;img __ASTRO_IMAGE_=&quot;{&amp;#x22;src&amp;#x22;:&amp;#x22;./image10.png&amp;#x22;,&amp;#x22;alt&amp;#x22;:&amp;#x22;Setup the CSP&amp;#x22;,&amp;#x22;title&amp;#x22;:&amp;#x22;Here we can see the example of how to configure it, as the article says, you can create or edit it.&amp;#x22;,&amp;#x22;index&amp;#x22;:0}&quot;&gt;&lt;figcaption class=&quot;prose-figure__caption&quot;&gt;Here we can see the example of how to configure it, as the article says, you can create or edit it.&lt;/figcaption&gt;&lt;/figure&gt;
&lt;h2 id=&quot;conclusion&quot;&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;Upgrading your thank-you page from the out-of-the-box message to a dynamic, branded experience is a small change with a big impact.&lt;/p&gt;
&lt;p&gt;By capturing values in &lt;code&gt;sessionStorage&lt;/code&gt; during submission and injecting them into Power Pages, you can:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Personalize the confirmation&lt;/li&gt;
&lt;li&gt;Reinforce your brand&lt;/li&gt;
&lt;li&gt;Guide users to meaningful next steps&lt;/li&gt;
&lt;li&gt;Reuse this pattern across all CI Journeys forms&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;It’s a lightweight technique that dramatically improves user experience and makes your event flows feel more polished and intentional.&lt;/p&gt;
&lt;p&gt;If you try it out, I’d love to hear how it worked for you, &lt;a href=&quot;mailto:comment@martinplopez.com&quot;&gt;email me&lt;/a&gt; or tag me on LinkedIn!&lt;/p&gt;</content:encoded><category>Power Platform</category><category>Dynamics 365 Customer Insights Journeys</category><category>Marketing Automation</category><category>Power Platform Development</category><category>Power Pages</category></item><item><title>Build a Branded Event Website in 20 Minutes with Power Pages and Dynamics 365 Customer Insights – Journeys</title><link>https://martinplopez.com/writing/build-event-website-power-pages-dynamics-365/</link><guid isPermaLink="true">https://martinplopez.com/writing/build-event-website-power-pages-dynamics-365/</guid><description>Learn how to quickly build a live, branded event website using Microsoft Power Pages and Dynamics 365 Customer Insights – Journeys. No code, just results.</description><pubDate>Sun, 09 Nov 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Some years ago, I was responsible for two Power Pages sites (at that time called Dynamics Portals) that were connected to Dynamics 365 Customer Insights – Journeys (back then: Dynamics 365 Marketing). At that time, adapting and branding an event portal was… painful. It took a lot of effort to get something that looked good and felt on-brand.&lt;/p&gt;
&lt;p&gt;Fast forward to today: after a few renames and a &lt;strong&gt;lot&lt;/strong&gt; of updates, Microsoft has evolved these tools to the point where I was able to set up a portal, brand it, and connect it to my Dynamics 365 Customer Insights – Journeys environment in as little as &lt;strong&gt;20 minutes&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;The best part? After a bit of experimenting, I realized you can do this mostly by &lt;strong&gt;customizing and copying a code snippet&lt;/strong&gt; — no deep coding skills needed.&lt;/p&gt;
&lt;figure class=&quot;prose-figure&quot;&gt;&lt;img src=&quot;/writing/build-event-website-power-pages-dynamics-365/image1.gif&quot; alt=&quot;Responsive event page demo&quot; title=&quot;The Webpage is responsive and people can register to events easily&quot;&gt;&lt;figcaption class=&quot;prose-figure__caption&quot;&gt;The Webpage is responsive and people can register to events easily&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;I decided to put together this guide for you, so you can also set up your &lt;strong&gt;branded event website with no code knowledge needed&lt;/strong&gt;. 😊&lt;/p&gt;
&lt;p&gt;I’m basing this on Microsoft’s guide:&lt;br&gt;
&lt;a href=&quot;https://learn.microsoft.com/en-us/dynamics365/customer-insights/journeys/event-portal-template&quot;&gt;Build an event registration portal with Power Pages&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;…but I had to fight a bit with the tools to understand what’s the &lt;strong&gt;quickest and least painful way&lt;/strong&gt; of setting things up. This article is that shortcut.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;TL;DR:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Use the &lt;strong&gt;Event portal template&lt;/strong&gt; in Power Pages.&lt;/li&gt;
&lt;li&gt;Quickly brand the &lt;strong&gt;hero, header and footer&lt;/strong&gt; with your logo and imagery.&lt;/li&gt;
&lt;li&gt;Replace the default registration logic with the &lt;strong&gt;embedded form snippet&lt;/strong&gt; from Customer Insights – Journeys.&lt;/li&gt;
&lt;li&gt;In CIJ, add your &lt;strong&gt;domain&lt;/strong&gt; and &lt;strong&gt;Power Pages website&lt;/strong&gt; under Event Management.&lt;/li&gt;
&lt;li&gt;Create an event, point it to your portal and publish — your branded event page is live. 🚀&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id=&quot;what-will-you-need&quot;&gt;What will you need?&lt;/h2&gt;
&lt;p&gt;For this use case, if you want to do it in record time, we have to be prepared beforehand, so I advice you to have the following prepared:&lt;/p&gt;
&lt;ul class=&quot;contains-task-list&quot;&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; checked disabled&gt; Logo of your company (without background works even better, I’m using a png)&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; checked disabled&gt; A cover picture that will match with your company Branding&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; checked disabled&gt; The name of your Company and a Heading Text&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; checked disabled&gt; A license of Powerapps (One can start with a Trial license and convert it in a production license)&lt;/li&gt;
&lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; disabled&gt; An Omega Speedmaster or Rolex Daytona to measure your speed (optional — the clock app on your computer works just as well 😁)&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;⚠️ &lt;strong&gt;Important:&lt;/strong&gt; This guide is accurate &amp;#x26; working at date of publishing&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id=&quot;how-to-build-it&quot;&gt;How to build it&lt;/h2&gt;
&lt;p&gt;To achieve this in record time, we’ll divide the process into two parts:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Set up Power Pages&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Set up Dynamics 365 Customer Insights – Journeys&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;h2 id=&quot;1-set-up-power-pages&quot;&gt;1. Set up Power Pages&lt;/h2&gt;
&lt;h3 id=&quot;create-the-site&quot;&gt;Create the site&lt;/h3&gt;
&lt;p&gt;Start at &lt;a href=&quot;https://make.powerpages.microsoft.com/&quot;&gt;Power Pages Get Started&lt;/a&gt;.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Select the correct &lt;strong&gt;environment&lt;/strong&gt; in the top-right corner.&lt;/li&gt;
&lt;li&gt;Select &lt;strong&gt;Start with a template&lt;/strong&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;figure class=&quot;prose-figure&quot;&gt;&lt;img __ASTRO_IMAGE_=&quot;{&amp;#x22;src&amp;#x22;:&amp;#x22;./image2.png&amp;#x22;,&amp;#x22;alt&amp;#x22;:&amp;#x22;Select a template.&amp;#x22;,&amp;#x22;title&amp;#x22;:&amp;#x22;Find an Event Portal template in Dynamics 365 and select &amp;#x27;Choose this template&amp;#x27;&amp;#x22;,&amp;#x22;index&amp;#x22;:0}&quot;&gt;&lt;figcaption class=&quot;prose-figure__caption&quot;&gt;Find an Event Portal template in Dynamics 365 and select &apos;Choose this template&apos;&lt;/figcaption&gt;&lt;/figure&gt;
&lt;ol start=&quot;3&quot;&gt;
&lt;li&gt;Give your site a &lt;strong&gt;name&lt;/strong&gt; and set the &lt;strong&gt;language&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Select &lt;strong&gt;Done&lt;/strong&gt; in the bottom-right corner.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;You can change the web address later to use your own domain name. If that’s interesting for you, I’ll write a separate article on how to do it.&lt;/p&gt;
&lt;figure class=&quot;prose-figure&quot;&gt;&lt;img __ASTRO_IMAGE_=&quot;{&amp;#x22;src&amp;#x22;:&amp;#x22;./image3.png&amp;#x22;,&amp;#x22;alt&amp;#x22;:&amp;#x22;Template provisioning&amp;#x22;,&amp;#x22;title&amp;#x22;:&amp;#x22;It takes a few minutes to get your site ready. When it finishes, it redirects you to the home page to edit.&amp;#x22;,&amp;#x22;index&amp;#x22;:0}&quot;&gt;&lt;figcaption class=&quot;prose-figure__caption&quot;&gt;It takes a few minutes to get your site ready. When it finishes, it redirects you to the home page to edit.&lt;/figcaption&gt;&lt;/figure&gt;
&lt;hr&gt;
&lt;h3 id=&quot;substitute-heading-cover-and-logos&quot;&gt;Substitute heading, cover, and logos&lt;/h3&gt;
&lt;p&gt;Now we have our website ready, but at first you might see something like this:&lt;/p&gt;
&lt;p&gt;&lt;img __ASTRO_IMAGE_=&quot;{&amp;#x22;src&amp;#x22;:&amp;#x22;./image4.png&amp;#x22;,&amp;#x22;alt&amp;#x22;:&amp;#x22;Something doesn&amp;#x27;t look right...&amp;#x22;,&amp;#x22;index&amp;#x22;:0}&quot;&gt;&lt;/p&gt;
&lt;p&gt;Give the page a refresh (Ctrl + F5 is even better) and you should see something like this:&lt;/p&gt;
&lt;figure class=&quot;prose-figure&quot;&gt;&lt;img __ASTRO_IMAGE_=&quot;{&amp;#x22;src&amp;#x22;:&amp;#x22;./image5.png&amp;#x22;,&amp;#x22;alt&amp;#x22;:&amp;#x22;Now it does :)&amp;#x22;,&amp;#x22;title&amp;#x22;:&amp;#x22;Here we can click on **Edit background** to change the cover picture to match our company branding.&amp;#x22;,&amp;#x22;index&amp;#x22;:0}&quot;&gt;&lt;figcaption class=&quot;prose-figure__caption&quot;&gt;Here we can click on **Edit background** to change the cover picture to match our company branding.&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;Click &lt;strong&gt;Edit background&lt;/strong&gt; to change the hero image. You can &lt;strong&gt;Upload Image&lt;/strong&gt; and reuse that image later on other pages.&lt;/p&gt;
&lt;p&gt;&lt;img __ASTRO_IMAGE_=&quot;{&amp;#x22;src&amp;#x22;:&amp;#x22;./image6.png&amp;#x22;,&amp;#x22;alt&amp;#x22;:&amp;#x22;Also possible to choose a fill color&amp;#x22;,&amp;#x22;index&amp;#x22;:0}&quot;&gt;&lt;/p&gt;
&lt;p&gt;You can click on the &lt;strong&gt;title text&lt;/strong&gt; in the hero area to edit it. This is where you tell visitors what this site is about:&lt;/p&gt;
&lt;p&gt;&lt;img __ASTRO_IMAGE_=&quot;{&amp;#x22;src&amp;#x22;:&amp;#x22;./image7.png&amp;#x22;,&amp;#x22;alt&amp;#x22;:&amp;#x22;Welcome!&amp;#x22;,&amp;#x22;index&amp;#x22;:0}&quot;&gt;&lt;/p&gt;
&lt;p&gt;Scroll down to the footer. There, click on the &lt;strong&gt;Contoso&lt;/strong&gt; logo (the standard logo) and change it to your own:&lt;/p&gt;
&lt;p&gt;&lt;img __ASTRO_IMAGE_=&quot;{&amp;#x22;src&amp;#x22;:&amp;#x22;./image8.png&amp;#x22;,&amp;#x22;alt&amp;#x22;:&amp;#x22;Upload your logo without background if possible&amp;#x22;,&amp;#x22;index&amp;#x22;:0}&quot;&gt;&lt;/p&gt;
&lt;p&gt;If the logo is too tall (like it was for me), you can adjust the width to whatever feels appropriate — the layout will adjust automatically while maintaining the aspect ratio.&lt;/p&gt;
&lt;p&gt;&lt;img __ASTRO_IMAGE_=&quot;{&amp;#x22;src&amp;#x22;:&amp;#x22;./image9.png&amp;#x22;,&amp;#x22;alt&amp;#x22;:&amp;#x22;No button to save, just click on the screen&amp;#x22;,&amp;#x22;index&amp;#x22;:0}&quot;&gt;&lt;/p&gt;
&lt;p&gt;For the header, I found it easier to change the logo and site name via &lt;strong&gt;Edit code&lt;/strong&gt;, because changing it only in the designer wasn’t reliable at the time of writing. This might be improved by Microsoft later, but here’s the workaround.&lt;/p&gt;
&lt;p&gt;Click &lt;strong&gt;Edit code&lt;/strong&gt;:&lt;/p&gt;
&lt;figure class=&quot;prose-figure&quot;&gt;&lt;img __ASTRO_IMAGE_=&quot;{&amp;#x22;src&amp;#x22;:&amp;#x22;./image10.png&amp;#x22;,&amp;#x22;alt&amp;#x22;:&amp;#x22;We will change only names, not code&amp;#x22;,&amp;#x22;title&amp;#x22;:&amp;#x22;From the next stage, click on **Open Visual Studio Code** and a new tab will open.&amp;#x22;,&amp;#x22;index&amp;#x22;:0}&quot;&gt;&lt;figcaption class=&quot;prose-figure__caption&quot;&gt;From the next stage, click on **Open Visual Studio Code** and a new tab will open.&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;In Visual Studio Code, open the &lt;strong&gt;content snippets&lt;/strong&gt; folder. There you’ll find:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Logo URL&lt;/strong&gt; (2)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Site name&lt;/strong&gt; (3)&lt;/li&gt;
&lt;/ul&gt;
&lt;figure class=&quot;prose-figure&quot;&gt;&lt;img __ASTRO_IMAGE_=&quot;{&amp;#x22;src&amp;#x22;:&amp;#x22;./image11.png&amp;#x22;,&amp;#x22;alt&amp;#x22;:&amp;#x22;Make sure to save (Ctrl+S)&amp;#x22;,&amp;#x22;title&amp;#x22;:&amp;#x22;In &amp;#x27;Site name&amp;#x27; you define the text displayed in the header.&amp;#x22;,&amp;#x22;index&amp;#x22;:0}&quot;&gt;&lt;figcaption class=&quot;prose-figure__caption&quot;&gt;In &apos;Site name&apos; you define the text displayed in the header.&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;In &lt;strong&gt;Logo URL&lt;/strong&gt;, set the file name of the logo you uploaded (after the &lt;code&gt;\&lt;/code&gt;). For example:&lt;/p&gt;
&lt;figure class=&quot;prose-figure&quot;&gt;&lt;img __ASTRO_IMAGE_=&quot;{&amp;#x22;src&amp;#x22;:&amp;#x22;./image12.png&amp;#x22;,&amp;#x22;alt&amp;#x22;:&amp;#x22;Make sure to save (Ctrl+S)&amp;#x22;,&amp;#x22;title&amp;#x22;:&amp;#x22;Update the Logo URL with the name of your uploaded logo file and the Site name with your company name.&amp;#x22;,&amp;#x22;index&amp;#x22;:0}&quot;&gt;&lt;figcaption class=&quot;prose-figure__caption&quot;&gt;Update the Logo URL with the name of your uploaded logo file and the Site name with your company name.&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;Save (Ctrl+S) and refresh your portal.&lt;/p&gt;
&lt;p&gt;Now you have a &lt;strong&gt;nicely branded page&lt;/strong&gt;!&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&quot;adapt-home-cards-to-events&quot;&gt;Adapt home cards to events&lt;/h3&gt;
&lt;p&gt;Back in the &lt;strong&gt;Power Pages designer&lt;/strong&gt;, you can adapt the cards on the home page to display your event information.&lt;/p&gt;
&lt;p&gt;You can:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Choose a different &lt;strong&gt;layout&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Select which &lt;strong&gt;event fields&lt;/strong&gt; to display&lt;/li&gt;
&lt;li&gt;Adjust the list to show only &lt;strong&gt;upcoming&lt;/strong&gt; events&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img __ASTRO_IMAGE_=&quot;{&amp;#x22;src&amp;#x22;:&amp;#x22;./image17.png&amp;#x22;,&amp;#x22;alt&amp;#x22;:&amp;#x22;Very easy and straightforward&amp;#x22;,&amp;#x22;index&amp;#x22;:0}&quot;&gt;&lt;/p&gt;
&lt;p&gt;This is where you turn the template into &lt;strong&gt;your&lt;/strong&gt; event showcase.&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&quot;make-the-portal-public&quot;&gt;Make the portal public&lt;/h3&gt;
&lt;p&gt;When the portal is ready to go public:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Go to the top of the designer and click on the &lt;strong&gt;site title&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Select &lt;strong&gt;Manage site visibility&lt;/strong&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;img __ASTRO_IMAGE_=&quot;{&amp;#x22;src&amp;#x22;:&amp;#x22;./image18.png&amp;#x22;,&amp;#x22;alt&amp;#x22;:&amp;#x22;It can be private or public&amp;#x22;,&amp;#x22;index&amp;#x22;:0}&quot;&gt;&lt;/p&gt;
&lt;p&gt;Choose &lt;strong&gt;Public&lt;/strong&gt; and confirm. This will allow people (outside your organization) to access the site and register for your events.&lt;/p&gt;
&lt;p&gt;&lt;img __ASTRO_IMAGE_=&quot;{&amp;#x22;src&amp;#x22;:&amp;#x22;./image19.png&amp;#x22;,&amp;#x22;alt&amp;#x22;:&amp;#x22;Set it when you want to make your portal public&amp;#x22;,&amp;#x22;index&amp;#x22;:0}&quot;&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;2-set-up-the-portal-in-dynamics-365-customer-insights--journeys&quot;&gt;2. Set up the portal in Dynamics 365 Customer Insights – Journeys&lt;/h2&gt;
&lt;p&gt;We also need a bit of setup on the Dynamics side to connect your new Power Pages site to &lt;strong&gt;Events&lt;/strong&gt; in Customer Insights – Journeys.&lt;/p&gt;
&lt;h3 id=&quot;add-the-domain&quot;&gt;Add the domain&lt;/h3&gt;
&lt;p&gt;We need to validate our domain for external form hosting. This is required so the forms from Customer Insights – Journeys can load in a registered domain.&lt;/p&gt;
&lt;p&gt;The good news: you don’t need to touch DNS or add records manually.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;In Customer Insights – Journeys, go to &lt;strong&gt;Settings → Domains&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Create a &lt;strong&gt;new domain&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;In the form that opens, provide your &lt;strong&gt;Power Pages URL&lt;/strong&gt; (the site you just created).&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;If you’re unsure about the URL, go back to the Power Pages designer and click &lt;strong&gt;Preview&lt;/strong&gt; in the top-right corner — copy that URL.&lt;/p&gt;
&lt;figure class=&quot;prose-figure&quot;&gt;&lt;img __ASTRO_IMAGE_=&quot;{&amp;#x22;src&amp;#x22;:&amp;#x22;./image20.png&amp;#x22;,&amp;#x22;alt&amp;#x22;:&amp;#x22;Fill the URL in this format&amp;#x22;,&amp;#x22;title&amp;#x22;:&amp;#x22;Make sure you only check **External form validation**. This will get approved almost instantly.&amp;#x22;,&amp;#x22;index&amp;#x22;:0}&quot;&gt;&lt;figcaption class=&quot;prose-figure__caption&quot;&gt;Make sure you only check **External form validation**. This will get approved almost instantly.&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;Click &lt;strong&gt;Next&lt;/strong&gt;, then &lt;strong&gt;Verify&lt;/strong&gt;, then &lt;strong&gt;Done&lt;/strong&gt;. This should be automatic because the host of this webpage is Microsoft.&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&quot;add-the-power-pages-website&quot;&gt;Add the Power Pages website&lt;/h3&gt;
&lt;p&gt;Now we’ll link the website itself.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Go to &lt;strong&gt;Settings&lt;/strong&gt; again.&lt;/li&gt;
&lt;li&gt;Under &lt;strong&gt;Event management&lt;/strong&gt;, open &lt;strong&gt;Power Pages websites&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Add your newly created site.&lt;/li&gt;
&lt;/ol&gt;
&lt;figure class=&quot;prose-figure&quot;&gt;&lt;img __ASTRO_IMAGE_=&quot;{&amp;#x22;src&amp;#x22;:&amp;#x22;./image21.png&amp;#x22;,&amp;#x22;alt&amp;#x22;:&amp;#x22;Fill the URL in this format&amp;#x22;,&amp;#x22;title&amp;#x22;:&amp;#x22;Include in the Registration page URL the portal URL plus the path &amp;#x27;/Register-to-Event&amp;#x27;. Use this screenshot as an example.&amp;#x22;,&amp;#x22;index&amp;#x22;:0}&quot;&gt;&lt;figcaption class=&quot;prose-figure__caption&quot;&gt;Include in the Registration page URL the portal URL plus the path &apos;/Register-to-Event&apos;. Use this screenshot as an example.&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;Make sure the &lt;strong&gt;Registration page URL&lt;/strong&gt; points to your Power Pages site plus &lt;code&gt;/Register-to-Event&lt;/code&gt;.&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&quot;create-an-event-and-publish-it-to-the-power-page&quot;&gt;Create an event and publish it to the Power Page&lt;/h3&gt;
&lt;p&gt;Now for the fun part — try creating an event.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Create a new &lt;strong&gt;Event&lt;/strong&gt; in Customer Insights – Journeys.&lt;/li&gt;
&lt;li&gt;When it’s ready, in &lt;strong&gt;Where do you want attendees to register for this event?&lt;/strong&gt;, select &lt;strong&gt;Event portal using Power Pages&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;If it doesn’t automatically select your portal, choose it manually from the lookup.&lt;/li&gt;
&lt;/ol&gt;
&lt;figure class=&quot;prose-figure&quot;&gt;&lt;img __ASTRO_IMAGE_=&quot;{&amp;#x22;src&amp;#x22;:&amp;#x22;./image22.png&amp;#x22;,&amp;#x22;alt&amp;#x22;:&amp;#x22;It will autofill if it&amp;#x27;s the default portal&amp;#x22;,&amp;#x22;title&amp;#x22;:&amp;#x22;When everything is filled out, publish the event. You’ll get a registration URL on your newly created portal.&amp;#x22;,&amp;#x22;index&amp;#x22;:0}&quot;&gt;&lt;figcaption class=&quot;prose-figure__caption&quot;&gt;When everything is filled out, publish the event. You’ll get a registration URL on your newly created portal.&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;Publish the event.&lt;/p&gt;
&lt;p&gt;You’ll now get a &lt;strong&gt;registration URL&lt;/strong&gt; that points to your new branded Power Pages portal.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;conclusion&quot;&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;You should now have:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;A &lt;strong&gt;branded portal&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Showing &lt;strong&gt;events&lt;/strong&gt; you publish in Dynamics 365 Customer Insights – Journeys&lt;/li&gt;
&lt;li&gt;With a &lt;strong&gt;working registration form&lt;/strong&gt; embedded directly from CIJ&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;All ready for real visitors and registrations.&lt;/p&gt;
&lt;p&gt;I highly recommend you try it out in a &lt;strong&gt;test event&lt;/strong&gt; first:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Publish a couple of events&lt;/li&gt;
&lt;li&gt;Register as a test attendee&lt;/li&gt;
&lt;li&gt;Confirm the registration and check that the data lands correctly in Customer Insights – Journeys&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;While preparing this article, I timed myself. The quickest I managed to set everything up was &lt;strong&gt;15 minutes and 14 seconds&lt;/strong&gt;. ⏱️&lt;/p&gt;
&lt;p&gt;Do you think you can beat that?&lt;br&gt;
Try to set it up yourself — I’d love to hear your times! 😁&lt;/p&gt;
&lt;p&gt;👉 &lt;a href=&quot;mailto:comment@martinplopez.com&quot;&gt;Email me your time or any questions&lt;/a&gt;, and feel free to tag me on LinkedIn so we can turn this into the &lt;strong&gt;fastest “time-to-live” event portal&lt;/strong&gt; scenario in Microsoft’s ecosystem.&lt;/p&gt;</content:encoded><category>Power Platform</category><category>Dynamics 365 Customer Insights Journeys</category><category>Marketing Automation</category><category>Power Pages</category><category>Power Platform Development</category></item><item><title>How Solution Health Hub Prevents Downtime in Dynamics 365 Customer Insights Journeys</title><link>https://martinplopez.com/writing/solution-health-hub-customer-insights-journeys/</link><guid isPermaLink="true">https://martinplopez.com/writing/solution-health-hub-customer-insights-journeys/</guid><description>Discover how the Solution Health Hub prevents downtime in Dynamics 365 Customer Insights Journeys by auto-fixing common errors before they impact campaigns.</description><pubDate>Sun, 26 Oct 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Have you ever had a journey that suddenly stops triggering? You could swear it worked yesterday, but now it isn’t firing when it should.
Maybe you experienced trying to publish a form or a journey and it’s taking forever until it gives you an error that doesn’t give you much information…&lt;/p&gt;
&lt;p&gt;I have to admit, I was once (or twice) where you were (or are) and invested time to debug what was happening. Luckily, I got help from Microsoft engineers who recommended this solution—so I’m sharing it with as many people as possible. 😊&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;What it is:&lt;/strong&gt; an app in your Dynamics 365 environment that automatically checks the health of installed solutions—including &lt;strong&gt;Customer Insights – Journeys&lt;/strong&gt;—and provides &lt;strong&gt;targeted, one-click fixes&lt;/strong&gt; for common issues. In this post I’ll show you how I use it.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;TL;DR:&lt;/strong&gt;&lt;br&gt;
If journeys stop triggering or publishing fails with unhelpful errors, use the &lt;strong&gt;Solution Health Hub&lt;/strong&gt;. Create a &lt;strong&gt;Marketing Rule Set&lt;/strong&gt; analysis job, let it run (~2 minutes), then click &lt;strong&gt;Resolve&lt;/strong&gt; on failed checks. Re-run until all results are &lt;strong&gt;Pass&lt;/strong&gt;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id=&quot;common-problems-and-why-they-happen&quot;&gt;Common problems (and why they happen)&lt;/h2&gt;
&lt;p&gt;I mentioned a few scenarios in the introduction that I’ve solved with Solution Health Hub. Other common problems include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;A real-time trigger stopped working, with no visible error.&lt;/li&gt;
&lt;li&gt;An upgrade fails because background processes are owned by disabled users.&lt;/li&gt;
&lt;li&gt;SMS/push don’t go out because a required security role/profile is missing.&lt;/li&gt;
&lt;li&gt;Journeys configuration records went missing after partial uninstalls/installs.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you read until here you might be asking yourself: &lt;em&gt;Ok, I have these problems and you’re gonna help me solve them, but why does that happen?&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Why this happens:&lt;/strong&gt; Customer Insights – Journeys has many moving parts (plugins, background processes, application users, roles). If &lt;strong&gt;one dependency is missing or misconfigured&lt;/strong&gt;, the whole publishing/triggering pipeline can stall. Common root causes include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Plugin steps or background workflows/flows disabled during imports, upgrades, or cleanups.&lt;/li&gt;
&lt;li&gt;Owners of critical processes are &lt;strong&gt;disabled users&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Key configuration entities missing after partial uninstalls or failed installs.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;MarketingServices&lt;/strong&gt; app user or roles lack required permissions.&lt;/li&gt;
&lt;li&gt;Direct customizations to OOB components conflicting with managed updates.&lt;/li&gt;
&lt;li&gt;Dataverse hiccups (throttling/network) leaving components partially applied.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&quot;how-to-use-the-solution-health-hub&quot;&gt;How to use the Solution Health Hub&lt;/h2&gt;
&lt;p&gt;Open the app, create a new analysis job, let it run (≈2 minutes), then review the results and click Resolve where checks failed—easy, right? 😎&lt;/p&gt;
&lt;p&gt;I will summarize the most important points in the article, but I’m basing myself in the Documentation provided by Microsoft in this Article 👉 &lt;a href=&quot;https://learn.microsoft.com/en-us/dynamics365/customer-insights/journeys/troubleshoot-marketing-solution-health&quot;&gt;Troubleshoot issues with Solution Health Hub for Customer Insights – Journeys&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&quot;1-create-a-new-analysis-job&quot;&gt;1) Create a new analysis job&lt;/h3&gt;
&lt;p&gt;In the app, the default view is Analysis Jobs. Click New, then in the dialog select Marketing Rule Set and click OK.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://learn.microsoft.com/en-us/dynamics365/customer-insights/journeys/media/troubleshoot-solution-health-marketing-rules.png&quot; alt=&quot;Image from Microsoft Learn&quot;&gt;&lt;/p&gt;
&lt;p&gt;Once created, it will automatically open the Analysis Job that you just created with status Running. In about 2 minutes (up to ~5 minutes on the first run) it should complete and display results.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://learn.microsoft.com/en-us/dynamics365/customer-insights/journeys/media/troubleshoot-solution-health-fs-rules-analysis.png&quot; alt=&quot;Image from Microsoft Learn&quot;&gt;&lt;/p&gt;
&lt;h3 id=&quot;2-go-over-the-results-and-resolve-failures&quot;&gt;2) Go Over the results and resolve failures&lt;/h3&gt;
&lt;p&gt;Once completed, scroll to the subgrid at the bottom and review the Return Status column:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://learn.microsoft.com/en-us/dynamics365/customer-insights/journeys/media/troubleshoot-solution-health-resolve.png&quot; alt=&quot;Image from Microsoft Learn&quot;&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;For any row with &lt;strong&gt;Fail&lt;/strong&gt;, select it and click &lt;strong&gt;Resolve&lt;/strong&gt; on the ribbon.&lt;/li&gt;
&lt;li&gt;Confirm in the dialog (&lt;strong&gt;OK&lt;/strong&gt;).&lt;/li&gt;
&lt;li&gt;You’ll see &lt;strong&gt;Resolution is in progress&lt;/strong&gt; → then &lt;strong&gt;Resolution is completed&lt;/strong&gt;. 🎉&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;⚠️ &lt;strong&gt;Important:&lt;/strong&gt; run the &lt;strong&gt;analysis job again&lt;/strong&gt; to confirm everything turns &lt;strong&gt;Pass&lt;/strong&gt;. I’ve had Microsoft engineers explicitly ask for a second pass to be sure.&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&quot;recommendations-and-tips&quot;&gt;Recommendations and Tips&lt;/h3&gt;
&lt;p&gt;✅ Run Solution Health Hub &lt;strong&gt;before and after upgrades&lt;/strong&gt;.&lt;br&gt;
✅ Re-run the analysis until &lt;strong&gt;all checks = Pass&lt;/strong&gt;.&lt;br&gt;
✅ If &lt;strong&gt;Resolve&lt;/strong&gt; isn’t available for &lt;em&gt;CheckIfProcessesOwnedByDisabledUsers&lt;/em&gt;, open the analysis result → review &lt;strong&gt;Failing Records&lt;/strong&gt; → reassign those processes to a system/admin user.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Permissions:&lt;/strong&gt; You’ll generally need &lt;strong&gt;System Administrator&lt;/strong&gt; (or similar admin privileges) to run/resolve across environments.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;⚠️ Customization Warning&lt;/strong&gt;&lt;br&gt;
If you customized &lt;strong&gt;out-of-box components&lt;/strong&gt;, Solution Health Hub resolutions may &lt;strong&gt;reapply the Microsoft baseline&lt;/strong&gt; to the active layer, which can overwrite your changes.&lt;br&gt;
&lt;strong&gt;Recommendation:&lt;/strong&gt; avoid altering OOB components directly; use &lt;strong&gt;custom components&lt;/strong&gt;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id=&quot;conclusion&quot;&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;Downtime in Customer Insights – Journeys is not normally caused by you doing something wrong. It’s the complexity of dependencies. As we saw above, a single missing permission, disabled step, or orphaned owner can halt triggers and publishing.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Solution Health Hub&lt;/strong&gt; is your built-in first-aid kit: it diagnoses, explains, and often &lt;strong&gt;auto-fixes&lt;/strong&gt; issues before they become lost campaigns or late-night fire drills. After you use it a few times, you’ll wonder why you ever debugged this manually.&lt;/p&gt;
&lt;p&gt;👉 &lt;strong&gt;Next step:&lt;/strong&gt; run a &lt;strong&gt;Marketing Rule Set&lt;/strong&gt; analysis in your environment. Even if everything is green, you’ll have the peace of mind that your system sits on a healthy baseline—and you’ll know exactly where to look if something breaks.&lt;/p&gt;
&lt;p&gt;Have you already used the Solution Health Hub in your projects? I’d love to hear your experiences — &lt;a href=&quot;mailto:comment@martinplopez.com&quot;&gt;email me a comment&lt;/a&gt;, tag me on LinkedIn so we can help more teams keep &lt;strong&gt;Customer Insights – Journeys&lt;/strong&gt; running smoothly. 😉&lt;/p&gt;</content:encoded><category>Power Platform</category><category>Dynamics 365 Customer Insights Journeys</category><category>Marketing Automation</category><category>Troubleshooting</category><category>Solution Health Hub</category><category>Power Platform Development</category></item><item><title>Dataverse Clone Wars: Bulk-Merging Duplicates with SSIS (KingswaySoft Guide)</title><link>https://martinplopez.com/writing/dataverse-ssis-merge-duplicates/</link><guid isPermaLink="true">https://martinplopez.com/writing/dataverse-ssis-merge-duplicates/</guid><description>How to bulk-merge duplicate Contacts and Accounts in Microsoft Dataverse using SSIS and KingswaySoft: matching, normalization, ranking, previewing, and safe execution.</description><pubDate>Sun, 12 Oct 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;A long time ago in a database far, far away… 😁&lt;/p&gt;
&lt;p&gt;It is a time of chaos.
The mighty Dataverse is under siege by an overwhelming army of duplicate records.
Accounts and contacts have been cloned endlessly, threatening to destabilize the CRM galaxy.&lt;/p&gt;
&lt;p&gt;Armed only with an SSIS (SQL Server Integration Services) package, a brave data engineer rises to bring balance to the system.
Their mission: to bulk merge duplicates, unify scattered data, and restore peace to the Dataverse.&lt;/p&gt;
&lt;p&gt;At this point, you might be asking yourself:&lt;br&gt;
&lt;em&gt;“Is SSIS really the only choice? I never heard of SSIS, but Power Automate always makes my dreams come true.”&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;And I tell you &lt;strong&gt;No, Power Automate can do it, but you might want to go for a walk while it finishes…&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;TL;DR:&lt;/strong&gt;&lt;br&gt;
Use the ready-made &lt;strong&gt;KingswaySoft SSIS package&lt;/strong&gt; to bulk-merge duplicates in Dataverse.&lt;br&gt;
Connect via SOAP (or OAuth), define your match logic (e.g., &lt;code&gt;emailaddress1&lt;/code&gt;), adjust comparison settings, preview results with &lt;strong&gt;Data Viewer&lt;/strong&gt;, and always &lt;strong&gt;test safely in a sandbox&lt;/strong&gt; before going full Jedi.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id=&quot;why-not-do-it-in-power-automate&quot;&gt;Why not do it in Power Automate?&lt;/h2&gt;
&lt;p&gt;Power Automate can trigger actions that can merge Records — I tried this myself, but making it efficient is a challenge I’ve yet to accept.&lt;/p&gt;
&lt;p&gt;The main issue isn’t functionality — it’s &lt;strong&gt;scale&lt;/strong&gt;. When you’re comparing thousands of records, Power Automate becomes more of a Padawan than a Jedi Master.&lt;/p&gt;
&lt;p&gt;So if your duplicates are manageable in number, Power Automate might still be the right tool. I recommend this article:&lt;br&gt;
👉 &lt;a href=&quot;https://accessorange.com/automatic-duplicate-account-merge-in-dynamics-365-sales-with-power-automate&quot;&gt;Automatic Duplicate Account Merge in Dynamics 365 Sales with Power Automate&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;But if you’re facing &lt;strong&gt;50,000+ contacts or accounts&lt;/strong&gt;, SSIS will handle the load like a true Sith Lord of data.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;requirements&quot;&gt;Requirements&lt;/h2&gt;
&lt;p&gt;To prepare your SSIS package for battle, you’ll need the following tools:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Visual Studio 2019/2022 (Professional or Enterprise edition)&lt;/li&gt;
&lt;li&gt;SQL Server Data Tools (SSDT) for Visual Studio&lt;/li&gt;
&lt;li&gt;KingswaySoft SSIS Productivity Pack&lt;/li&gt;
&lt;li&gt;KingswaySoft SSIS Integration Toolkit for Microsoft Dynamics 365&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If it’s your first time working with SSIS — I’m proud of you! 🫡&lt;br&gt;
Start here: &lt;a href=&quot;https://fredrikengseth.com/install-ssis-kingswaysoft-visual-studio-dynamics-365/&quot;&gt;How to install SSIS, KingswaySoft, and Visual Studio for Dynamics 365&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;⚠️ Safety first&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Run in a &lt;strong&gt;sandbox&lt;/strong&gt; environment first.&lt;/li&gt;
&lt;li&gt;Export a CSV of candidate duplicates (source + master).&lt;/li&gt;
&lt;li&gt;Keep an &lt;strong&gt;audit log&lt;/strong&gt; of merges (&lt;code&gt;winnerid → loserid&lt;/code&gt;) so you can restore data if needed.&lt;/li&gt;
&lt;li&gt;Start small: test with &lt;strong&gt;Top 100&lt;/strong&gt; records before a full-scale run.&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id=&quot;the-battle&quot;&gt;The Battle&lt;/h2&gt;
&lt;p&gt;Once we’re all set, the nice guys of Kingswaysoft already offered a packaged solution to your problems, you just have to set it up 😊&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.kingswaysoft.com/downloads/samples/dynamics-365/MergeCRMDuplicates.zip&quot;&gt;Click here to download the Kingswaysoft SSIS Package&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Open Visual Studio and create a new project: &lt;strong&gt;Integration Services Project&lt;/strong&gt;.&lt;/p&gt;
&lt;figure class=&quot;prose-figure&quot;&gt;&lt;img __ASTRO_IMAGE_=&quot;{&amp;#x22;src&amp;#x22;:&amp;#x22;./image1.png&amp;#x22;,&amp;#x22;alt&amp;#x22;:&amp;#x22;Lookup Integration Searching for Templates&amp;#x22;,&amp;#x22;title&amp;#x22;:&amp;#x22;If you&amp;#x27;re not able to see this kind of Project make sure you installed the &amp;#x27;SQL Server Data Tools (SSDT) for Visual Studio&amp;#x27; package&amp;#x22;,&amp;#x22;index&amp;#x22;:0}&quot;&gt;&lt;figcaption class=&quot;prose-figure__caption&quot;&gt;If you&apos;re not able to see this kind of Project make sure you installed the &apos;SQL Server Data Tools (SSDT) for Visual Studio&apos; package&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;Ok, now unzip the KingswaySoft package and add it to your project. In the &lt;strong&gt;Solution Explorer&lt;/strong&gt;, right-click &lt;strong&gt;SSIS Packages&lt;/strong&gt; → &lt;em&gt;Add Existing Package&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img __ASTRO_IMAGE_=&quot;{&amp;#x22;src&amp;#x22;:&amp;#x22;./image2.png&amp;#x22;,&amp;#x22;alt&amp;#x22;:&amp;#x22;Until I saw \&amp;#x22;Add existing Package\&amp;#x22;, it took a while...&amp;#x22;,&amp;#x22;index&amp;#x22;:0}&quot;&gt;&lt;/p&gt;
&lt;p&gt;Choose &lt;strong&gt;File System&lt;/strong&gt; as the Package Location, and then browse to the unzipped package path.&lt;/p&gt;
&lt;p&gt;&lt;img __ASTRO_IMAGE_=&quot;{&amp;#x22;src&amp;#x22;:&amp;#x22;./image3.png&amp;#x22;,&amp;#x22;alt&amp;#x22;:&amp;#x22;Make sure to select the right package&amp;#x22;,&amp;#x22;index&amp;#x22;:0}&quot;&gt;&lt;/p&gt;
&lt;p&gt;When you see “Succeeded in upgrading the package” means you’re on the right track 😉&lt;/p&gt;
&lt;p&gt;Next, open the &lt;strong&gt;MergeCRMDuplicates.dtsx&lt;/strong&gt; package, and double-click the &lt;em&gt;Find and Merge CRM Duplicate Contacts&lt;/em&gt; task in the &lt;strong&gt;Control Flow&lt;/strong&gt;. You’ll land right in the command center:&lt;/p&gt;
&lt;figure class=&quot;prose-figure&quot;&gt;&lt;img __ASTRO_IMAGE_=&quot;{&amp;#x22;src&amp;#x22;:&amp;#x22;./image4.png&amp;#x22;,&amp;#x22;alt&amp;#x22;:&amp;#x22;Does it remind you of Power Automate?&amp;#x22;,&amp;#x22;title&amp;#x22;:&amp;#x22;It does feel familiar, doesn’t it?&amp;#x22;,&amp;#x22;index&amp;#x22;:0}&quot;&gt;&lt;figcaption class=&quot;prose-figure__caption&quot;&gt;It does feel familiar, doesn’t it?&lt;/figcaption&gt;&lt;/figure&gt;
&lt;hr&gt;
&lt;h3 id=&quot;setting-up-the-connection&quot;&gt;Setting up the Connection&lt;/h3&gt;
&lt;p&gt;Then we can Click on “Dynamics CRM Connection Manager” and set up the Connection to our Dynamics environment:&lt;/p&gt;
&lt;figure class=&quot;prose-figure&quot;&gt;&lt;img __ASTRO_IMAGE_=&quot;{&amp;#x22;src&amp;#x22;:&amp;#x22;./image5.png&amp;#x22;,&amp;#x22;alt&amp;#x22;:&amp;#x22;I recommend using the Soap Connection, even if the WebAPI seems tempting&amp;#x22;,&amp;#x22;title&amp;#x22;:&amp;#x22;I would choose for a single use case the following option, then you just have to fill out the User Name and your Dataverse URL. Make sure to test connection before clicking Ok 😁&amp;#x22;,&amp;#x22;index&amp;#x22;:0}&quot;&gt;&lt;figcaption class=&quot;prose-figure__caption&quot;&gt;I would choose for a single use case the following option, then you just have to fill out the User Name and your Dataverse URL. Make sure to test connection before clicking Ok 😁&lt;/figcaption&gt;&lt;/figure&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Connection tip:&lt;/strong&gt; Even though to use the &lt;strong&gt;Dynamics 365/Dataverse Connection Manager&lt;/strong&gt; with &lt;strong&gt;OAuth (Web API)&lt;/strong&gt; seems more appealing than SOAP. In my experience the SOAP connection technology is more developed than the Web API with Kingswaysoft. I had cases in which the logics built in SSIS were working perfectly with SOAP but not with WebAPI.
For reference: &lt;a href=&quot;https://www.kingswaysoft.com/products/ssis-integration-toolkit-for-microsoft-dynamics-365/help-manual/crm/connection-manager&quot;&gt;Using the CRM/Dataverse/CDS Connection Manager&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h3 id=&quot;the-duplicate-logic&quot;&gt;The Duplicate Logic&lt;/h3&gt;
&lt;p&gt;In my example, contacts are duplicated by &lt;strong&gt;email address&lt;/strong&gt;.&lt;br&gt;
The KingswaySoft package already retrieves all contacts, so I opened the &lt;em&gt;Duplicate Detection on name&lt;/em&gt; component and will rename it to &lt;em&gt;Duplicate Detection on email&lt;/em&gt; for clarity.&lt;/p&gt;
&lt;p&gt;Here you can define:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The &lt;strong&gt;column&lt;/strong&gt; to match on (e.g., &lt;code&gt;emailaddress1&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;The &lt;strong&gt;match type&lt;/strong&gt; (Exact Match, Fuzzy Match, etc.)&lt;/li&gt;
&lt;li&gt;The &lt;strong&gt;similarity threshold&lt;/strong&gt; (percentage of similarity to be considered a match)&lt;/li&gt;
&lt;/ul&gt;
&lt;figure class=&quot;prose-figure&quot;&gt;&lt;img __ASTRO_IMAGE_=&quot;{&amp;#x22;src&amp;#x22;:&amp;#x22;./image6.png&amp;#x22;,&amp;#x22;alt&amp;#x22;:&amp;#x22;As soon as you reduce the threshold, the matching becomes fuzzy&amp;#x22;,&amp;#x22;title&amp;#x22;:&amp;#x22;For the example case I&amp;#x27;ll pick the emailaddress1 as column, with exact match.&amp;#x22;,&amp;#x22;index&amp;#x22;:0}&quot;&gt;&lt;figcaption class=&quot;prose-figure__caption&quot;&gt;For the example case I&apos;ll pick the emailaddress1 as column, with exact match.&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;The &lt;strong&gt;real power&lt;/strong&gt; of this step lies in the &lt;strong&gt;comparison settings&lt;/strong&gt;. These options normalize your column values before matching — for example:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Ignore extra spaces&lt;/li&gt;
&lt;li&gt;Treat uppercase/lowercase as equal&lt;/li&gt;
&lt;li&gt;Trim trailing punctuation&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;You can also set a &lt;strong&gt;Ranking Strategy&lt;/strong&gt; — this determines which record “wins” when multiple duplicates are found.&lt;/p&gt;
&lt;h6 id=&quot;translation-when-multiple-records-match-the-ranking-defines-which-one-becomes-the-master&quot;&gt;Translation: when multiple records match, the ranking defines which one becomes the master.&lt;/h6&gt;
&lt;p&gt;By default, it uses &lt;strong&gt;Similarity Score&lt;/strong&gt;, but when you use exact matching, they’ll all have a score of 1.&lt;br&gt;
I like to set a custom strategy where the &lt;strong&gt;oldest record wins&lt;/strong&gt;, assuming it’s the original.&lt;br&gt;
In other cases, I prioritize contacts that aren’t “marketing-only” — merging those into the primary one.&lt;/p&gt;
&lt;p&gt;&lt;img __ASTRO_IMAGE_=&quot;{&amp;#x22;src&amp;#x22;:&amp;#x22;./image7.png&amp;#x22;,&amp;#x22;alt&amp;#x22;:&amp;#x22;These settings will improve your matching&amp;#x22;,&amp;#x22;index&amp;#x22;:0}&quot;&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&quot;testing-and-merging-the-data&quot;&gt;Testing and Merging the data&lt;/h3&gt;
&lt;p&gt;Want to see what’s happening before executing the merge?&lt;br&gt;
Right-click on a connector line in your control flow and select &lt;strong&gt;Enable Data Viewer&lt;/strong&gt;.&lt;br&gt;
This lets you preview the matching results, review scores, and ensure your logic works as expected.&lt;/p&gt;
&lt;p&gt;&lt;img __ASTRO_IMAGE_=&quot;{&amp;#x22;src&amp;#x22;:&amp;#x22;./image8.png&amp;#x22;,&amp;#x22;alt&amp;#x22;:&amp;#x22;Very helpful for debugging!&amp;#x22;,&amp;#x22;index&amp;#x22;:0}&quot;&gt;&lt;/p&gt;
&lt;p&gt;Now, let the package run — you’ll see the number of merged contacts rising heroically as duplicates fall one by one.&lt;/p&gt;
&lt;p&gt;&lt;img __ASTRO_IMAGE_=&quot;{&amp;#x22;src&amp;#x22;:&amp;#x22;./image9.png&amp;#x22;,&amp;#x22;alt&amp;#x22;:&amp;#x22;All contacts merged!&amp;#x22;,&amp;#x22;index&amp;#x22;:0}&quot;&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;final-pointers&quot;&gt;Final Pointers&lt;/h2&gt;
&lt;h3 id=&quot;you-merged-contacts-you-werent-supposed-to-and-you-cant-find-them&quot;&gt;You merged contacts you weren’t supposed to and you can’t find them?&lt;/h3&gt;
&lt;p&gt;Don’t panic. They’re not gone — just &lt;strong&gt;inactivated&lt;/strong&gt;.&lt;br&gt;
You can filter by “Last Modified” to the date/time you ran the SSIS package and find them easily.&lt;/p&gt;
&lt;p&gt;&lt;img __ASTRO_IMAGE_=&quot;{&amp;#x22;src&amp;#x22;:&amp;#x22;./image10.png&amp;#x22;,&amp;#x22;alt&amp;#x22;:&amp;#x22;They are not gone, only inactivated&amp;#x22;,&amp;#x22;index&amp;#x22;:0}&quot;&gt;&lt;/p&gt;
&lt;h3 id=&quot;you-want-to-unmerge-them&quot;&gt;You want to unmerge them?&lt;/h3&gt;
&lt;p&gt;Simply reactivate the contact. It won’t be linked anymore — though relationships or field values may already have been consolidated.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;conclusion&quot;&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;You might be thinking: &lt;em&gt;“How many times did he write KingswaySoft?”&lt;/em&gt;&lt;br&gt;
They were &lt;strong&gt;10 times&lt;/strong&gt;, counting this one — and no, I don’t work for them 😁&lt;/p&gt;
&lt;p&gt;But their SSIS solution is truly &lt;strong&gt;plug-and-play&lt;/strong&gt;. You don’t need to configure much to wipe out duplicates efficiently.&lt;br&gt;
Even though SSIS isn’t the newest tool in the Power Platform arsenal, it remains a &lt;strong&gt;battle-tested solution&lt;/strong&gt; and a reference for Dataverse data migrations and cleansing.&lt;/p&gt;
&lt;p&gt;Did you do something similar with duplicates? Have a better approach? Or ran into issues setting this up?&lt;br&gt;
I’d love to hear your story — &lt;a href=&quot;mailto:comment@martinplopez.com&quot;&gt;email me here&lt;/a&gt; or tag me on LinkedIn! 🚀&lt;/p&gt;</content:encoded><category>Power Platform</category><category>Dataverse</category><category>Dynamics 365</category><category>SSIS</category><category>KingswaySoft</category><category>Data Quality</category></item><item><title>How to Prevent Duplicate Event Registrations in Dynamics 365 Customer Insights (with Form Submission Validation)</title><link>https://martinplopez.com/writing/custom-form-submission-validation/</link><guid isPermaLink="true">https://martinplopez.com/writing/custom-form-submission-validation/</guid><description>Prevent one user to register twice for a Dynamics 365 Customer Insights Journeys Event. Use the Form Submission Validation logic to achieve this.</description><pubDate>Mon, 22 Sep 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Some months ago, I got the question if there was a way to limit the Registrations for an event to &lt;strong&gt;one Registration per person&lt;/strong&gt; in Dynamics 365 Customer Insights Journeys. I thought then, that there is no setting for this, so I decided to investigate, and after some research I stumbled into this documentation of Microsoft: &lt;a href=&quot;https://learn.microsoft.com/en-us/dynamics365/customer-insights/journeys/real-time-marketing-form-customize-submission-validation&quot;&gt;Customize form submission validation&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Then I thought that if there is a way of validating a form &lt;strong&gt;before the submission&lt;/strong&gt;, we could avoid it altogether. So I set my mind on it and after some testing and validation, I developed a &lt;strong&gt;Plugin&lt;/strong&gt; that will validate the event registration by running on form Submission and will prevent the submission to be sent in case there is already an event registration.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Yes, ok, but Martin, what does this mean?&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;There is a way to limit the registration process by checking if this person is already registered in the Event&lt;/p&gt;
&lt;h2 id=&quot;how&quot;&gt;HOW?&lt;/h2&gt;
&lt;h3 id=&quot;step-1-data-form-validation-in-event-registration-form&quot;&gt;Step 1: data-form-validation in Event Registration Form&lt;/h3&gt;
&lt;p&gt;It all starts by setting the data-form-validation to true in the form where you want to integrate this:&lt;/p&gt;
&lt;figure class=&quot;prose-figure&quot;&gt;&lt;img __ASTRO_IMAGE_=&quot;{&amp;#x22;src&amp;#x22;:&amp;#x22;./image1.png&amp;#x22;,&amp;#x22;alt&amp;#x22;:&amp;#x22;data-form-validation is key&amp;#x22;,&amp;#x22;title&amp;#x22;:&amp;#x22;Find the Form Tag in your Form HTML and simply add the data-validate-submission=&amp;#x27;true&amp;#x27; part&amp;#x22;,&amp;#x22;index&amp;#x22;:0}&quot;&gt;&lt;figcaption class=&quot;prose-figure__caption&quot;&gt;Find the Form Tag in your Form HTML and simply add the data-validate-submission=&apos;true&apos; part&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;Without this, your plugin won’t fire, because this will allow us to trigger the plugins registered under the “msdynmkt_validateformsubmission” Message.&lt;/p&gt;
&lt;p&gt;Here an example in code:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;html&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;form&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt; aria-label&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;{{EventName}}&quot;&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;marketingForm&quot;&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt; data-validate-submission&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;true&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;      data-successmessage&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;Thank you for submitting the form.&quot;&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt; data-errormessage&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;There was an error, please try again.&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;      data-waitlistmessage&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;You have been added to the waitlist.&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;step-2-create-a-plugin&quot;&gt;Step 2: Create a PlugIn&lt;/h3&gt;
&lt;p&gt;Now create a plugin that will first deserialize the form parameters, then iterate through them to find the email and the event id and retrieve with a fetchxml if there are registrations for the event with the email you got from form:&lt;/p&gt;
&lt;p&gt;And for our low-code/no-code users, here’s what the plugin does in plain language: it reads the submission, checks if the email is already registered for that event, and if yes, it blocks the submission.&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;csharp&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F97583&quot;&gt;using&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt; System&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F97583&quot;&gt;using&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt; Microsoft&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;Xrm&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;Sdk&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F97583&quot;&gt;using&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt; System&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;Collections&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;Generic&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F97583&quot;&gt;using&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt; System&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;IO&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F97583&quot;&gt;using&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt; System&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;Runtime&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;Serialization&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;Json&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F97583&quot;&gt;using&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt; System&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;Text&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F97583&quot;&gt;using&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt; Microsoft&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;Xrm&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;Sdk&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;Query&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F97583&quot;&gt;namespace&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt; UniqueEmailRegistrations&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F97583&quot;&gt;    public&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt; CheckIfEmailRegistered&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; : &lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;IPlugin&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F97583&quot;&gt;        public&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; void&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt; Execute&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;IServiceProvider&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt; serviceProvider&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;        {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F97583&quot;&gt;            var&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt; tracing&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;ITracingService&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;)serviceProvider.&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;GetService&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;typeof&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;ITracingService&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;));&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F97583&quot;&gt;            var&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt; context&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;IPluginExecutionContext&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;)serviceProvider.&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;GetService&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;typeof&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;IPluginExecutionContext&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;));&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F97583&quot;&gt;            var&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt; factory&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;IOrganizationServiceFactory&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;)serviceProvider.&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;GetService&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;typeof&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;IOrganizationServiceFactory&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;));&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F97583&quot;&gt;            var&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt; service&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; factory.&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;CreateOrganizationService&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;(context.UserId);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F97583&quot;&gt;            var&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt; requestString&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; context.InputParameters.&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;Contains&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;msdynmkt_formsubmissionrequest&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F97583&quot;&gt;                ?&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;string&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;)context.InputParameters[&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;msdynmkt_formsubmissionrequest&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F97583&quot;&gt;                :&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; null&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F97583&quot;&gt;            if&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;string&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;IsNullOrWhiteSpace&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;(requestString))&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;            {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;                tracing.&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;Trace&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;No msdynmkt_formsubmissionrequest found; skipping validation.&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;                context.OutputParameters[&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;msdynmkt_validationresponse&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;] &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt; Serialize&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;new&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt; ValidateFormSubmissionResponse&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;                {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;                    IsValid &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; true&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;                    ValidationOnlyFields &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; new&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt; List&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;string&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;&gt;()&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;                });&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F97583&quot;&gt;                return&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;            }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F97583&quot;&gt;            var&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt; submission&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt; Deserialize&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;FormSubmissionRequest&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;&gt;(requestString);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F97583&quot;&gt;            string&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt; GetField&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;string&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt; key&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;            {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F97583&quot;&gt;                if&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; (submission&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;?&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;.Fields &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;!=&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; null&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; &amp;#x26;&amp;#x26;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; submission.Fields.&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;TryGetValue&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;(key, &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;out&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; var&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt; value&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;))&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F97583&quot;&gt;                    return&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; value;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F97583&quot;&gt;                return&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; null&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;            }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F97583&quot;&gt;            var&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt; emailRaw&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt; GetField&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;emailaddress1&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F97583&quot;&gt;            var&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt; eventRaw&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt; GetField&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;event&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F97583&quot;&gt;            if&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;string&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;IsNullOrWhiteSpace&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;(emailRaw))&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;            {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;                tracing.&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;Trace&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;Email field is empty or missing; skipping duplicate validation.&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;                context.OutputParameters[&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;msdynmkt_validationresponse&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;] &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt; Serialize&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;new&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt; ValidateFormSubmissionResponse&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;                {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;                    IsValid &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; true&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;                    ValidationOnlyFields &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; new&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt; List&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;string&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;&gt;()&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;                });&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F97583&quot;&gt;                return&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;            }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F97583&quot;&gt;            if&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;!&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;Guid.&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;TryParse&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;(eventRaw, &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;out&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; var&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt; eventId&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;) &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;||&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; eventId &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;==&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; Guid.Empty)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;            {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;                tracing.&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;Trace&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;$&quot;Event field missing or not a GUID: &apos;&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;eventRaw&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&apos;. Skipping duplicate validation.&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;                context.OutputParameters[&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;msdynmkt_validationresponse&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;] &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt; Serialize&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;new&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt; ValidateFormSubmissionResponse&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;                {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;                    IsValid &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; true&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;                    ValidationOnlyFields &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; new&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt; List&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;string&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;&gt;()&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;                });&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F97583&quot;&gt;                return&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;            }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F97583&quot;&gt;            var&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt; fetchXml&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; $@&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;                &amp;#x3C;fetch&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;                  &amp;#x3C;entity name=&apos;msevtmgt_eventregistration&apos;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;                    &amp;#x3C;attribute name=&apos;msevtmgt_eventregistrationid&apos; /&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;                    &amp;#x3C;filter&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;                      &amp;#x3C;condition attribute=&apos;msevtmgt_eventid&apos; operator=&apos;eq&apos; value=&apos;&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;eventId&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&apos; /&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;                    &amp;#x3C;/filter&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;                    &amp;#x3C;link-entity name=&apos;contact&apos; from=&apos;contactid&apos; to=&apos;msevtmgt_contactid&apos; link-type=&apos;inner&apos;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;                      &amp;#x3C;filter&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;                        &amp;#x3C;condition attribute=&apos;emailaddress1&apos; operator=&apos;eq&apos; value=&apos;&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;emailRaw&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&apos; /&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;                      &amp;#x3C;/filter&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;                    &amp;#x3C;/link-entity&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;                  &amp;#x3C;/entity&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;                &amp;#x3C;/fetch&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;            tracing.&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;Trace&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;Running duplicate check with FetchXML:&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;            tracing.&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;Trace&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;(fetchXml);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F97583&quot;&gt;            bool&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt; alreadyRegistered&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; false&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F97583&quot;&gt;            try&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;            {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F97583&quot;&gt;                var&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt; result&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; service.&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;RetrieveMultiple&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;new&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt; FetchExpression&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;(fetchXml));&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;                alreadyRegistered &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; (result &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;!=&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; null&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; &amp;#x26;&amp;#x26;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; result.Entities &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;!=&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; null&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; &amp;#x26;&amp;#x26;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; result.Entities.Count &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;&gt;&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; 0&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;                tracing.&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;Trace&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;$&quot;Duplicate check result: alreadyRegistered=&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;alreadyRegistered&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;            }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F97583&quot;&gt;            catch&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;Exception&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt; ex&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;            {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;                tracing.&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;Trace&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;Error during duplicate check: &quot;&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; +&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; ex.&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;ToString&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;());&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;            }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F97583&quot;&gt;            var&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt; response&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; new&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt; ValidateFormSubmissionResponse&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;            {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;                IsValid &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; !&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;alreadyRegistered,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;                ValidationOnlyFields &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; alreadyRegistered &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;?&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; new&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt; List&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;string&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;&gt; { &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;emailaddress1&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; } &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; new&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt; List&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;string&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;&gt;()&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;            };&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;            context.OutputParameters[&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;msdynmkt_validationresponse&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;] &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt; Serialize&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;(response);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;        }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F97583&quot;&gt;        private&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt; T&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt; Deserialize&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;T&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;&gt;(&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;string&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt; jsonString&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;        {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F97583&quot;&gt;            var&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt; serializer&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; new&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt; DataContractJsonSerializer&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;typeof&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;T&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;));&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;            T&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt; result&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F97583&quot;&gt;            using&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;MemoryStream&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt; stream&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; new&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt; MemoryStream&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;(Encoding.UTF8.&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;GetBytes&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;(jsonString)))&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;            {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;                result &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;T&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;)serializer.&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;ReadObject&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;(stream);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;            }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F97583&quot;&gt;            return&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; result;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;        }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F97583&quot;&gt;        private&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; string&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt; Serialize&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;T&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;&gt;(&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;T&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt; obj&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;        {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F97583&quot;&gt;            string&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt; result&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F97583&quot;&gt;            var&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt; serializer&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; new&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt; DataContractJsonSerializer&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;typeof&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;T&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;));&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F97583&quot;&gt;            using&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;MemoryStream&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt; memoryStream&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; new&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt; MemoryStream&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;())&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;            {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;                serializer.&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;WriteObject&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;(memoryStream, obj);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;                result &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; Encoding.Default.&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;GetString&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;(memoryStream.&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;ToArray&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;());&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;            }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F97583&quot;&gt;            return&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; result;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;        }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F97583&quot;&gt;        public&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt; FormSubmissionRequest&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; { &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;public&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt; Dictionary&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;string&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;string&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;&gt; &lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;Fields&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; { &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;get&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;; &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;set&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;; } }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F97583&quot;&gt;        public&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt; ValidateFormSubmissionResponse&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; { &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;public&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; bool&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt; IsValid&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; { &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;get&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;; &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;set&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;; } &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;public&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt; List&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;string&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;&gt; &lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;ValidationOnlyFields&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; { &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;get&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;; &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;set&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;; } }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;step-3-register-the-plugin&quot;&gt;Step 3: Register the plugIn&lt;/h3&gt;
&lt;p&gt;Make sure you follow the directives of Microsoft and you register it:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The step name is: “msdynmkt_validateformsubmission”&lt;/li&gt;
&lt;li&gt;The Execution Mode is Synchronous&lt;/li&gt;
&lt;li&gt;The Execution Order is 10 (This is to prevent conflict with plugins that microsoft have running)&lt;/li&gt;
&lt;li&gt;The Event Pipeline Stage Of Execution is Post Operation&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;step-4-dynamically-provide-the-event-guid-in-the-form&quot;&gt;Step 4: Dynamically provide the event guid in the form&lt;/h3&gt;
&lt;p&gt;One has to add the Event guid to the form, and thanks to Real Time Marketing, we can do this now dynamically! So if we add a new custom Field and don’t forget to call it “event”. Then we change the Field Label for the dynamic text that is the Event (msevtmgt_eventid) of the Event from Form, we’ll have it:&lt;/p&gt;
&lt;figure class=&quot;prose-figure&quot;&gt;&lt;img __ASTRO_IMAGE_=&quot;{&amp;#x22;src&amp;#x22;:&amp;#x22;./image2.png&amp;#x22;,&amp;#x22;alt&amp;#x22;:&amp;#x22;Under Personalization, you can find the dynamic text&amp;#x22;,&amp;#x22;title&amp;#x22;:&amp;#x22;Don&amp;#x27;t forget to call &amp;#x27;EventId&amp;#x27;, this will play a role in your plugin&amp;#x22;,&amp;#x22;index&amp;#x22;:0}&quot;&gt;&lt;figcaption class=&quot;prose-figure__caption&quot;&gt;Don&apos;t forget to call &apos;EventId&apos;, this will play a role in your plugin&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;Then we can copy this dynamic placeholder as the value of the input of the newly created field and then hide it, so the users don’t see it. The HTML should look similar to this one:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;html&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;  &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;textFormFieldBlock&quot;&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt; data-editorblocktype&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;TextFormField&quot;&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt; data-prefill&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;false&quot;&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt; data-hide&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;hide&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;label&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt; title&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;Field label&quot;&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt; for&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;shorttext564-1758226821033&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;      &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;span&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt; class&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;msdynmkt_personalization&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;&gt;{{EventId}}&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;span&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;br&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    &amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;label&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;input&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt; id&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;shorttext564-1758226821033&quot;&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt; type&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;text&quot;&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt; name&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;event&quot;&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt; placeholder&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;Field label&quot;&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt; title&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;Field label&quot;&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt; maxlength&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;256&quot;&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt; value&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;{{EventId}}&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;  &amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;step-5-adjust-your-error-message&quot;&gt;Step 5: Adjust your error Message&lt;/h3&gt;
&lt;p&gt;One should make sure that the Users get an error message that they can understand, that’s why it’s recommendable to adjust the HTML of the form to offer more information on the validation. Here is an HTML that you can add to the form, so that if the submission gives an error, it will show an explanatory message next to the submission failed:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;html&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;&amp;#x3C;&lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;script&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;document.&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;addEventListener&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;&quot;d365mkt-afterformsubmit&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:#FFAB70&quot;&gt;event&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F97583&quot;&gt;  if&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;!&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;event.detail.successful) {  &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F97583&quot;&gt;  const&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; baseText&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;  &quot;Error submitting the form&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F97583&quot;&gt;  const&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; oneTimeMsg&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; &quot;You can only register once&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F97583&quot;&gt;  const&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; selector&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; &quot;.onFormSubmittedFeedbackInternalContainer[data-submissionresponse=&apos;error&apos;] .onFormSubmittedFeedbackMessage&quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F97583&quot;&gt;  function&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt; applyOnce&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;() {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F97583&quot;&gt;    const&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; msgEl&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; document.&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;querySelector&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;(selector);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;!&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;msgEl) &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; false&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F97583&quot;&gt;    const&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; targetHTML&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; baseText &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; &quot;&amp;#x3C;br&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; +&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; oneTimeMsg;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; (msgEl.innerHTML.&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;trim&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;() &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;!==&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; targetHTML) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;      msgEl.innerHTML &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; targetHTML;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F97583&quot;&gt;    return&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; true&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;  }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F97583&quot;&gt;  if&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;applyOnce&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;()) &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F97583&quot;&gt;  const&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; observer&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; =&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; new&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt; MutationObserver&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;((&lt;/span&gt;&lt;span style=&quot;color:#FFAB70&quot;&gt;_&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color:#FFAB70&quot;&gt;obs&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;) &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;=&gt;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F97583&quot;&gt;    if&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;applyOnce&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;()) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;      obs.&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;disconnect&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;  });&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;  observer.&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;observe&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;(document.body, { childList: &lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;, subtree: &lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; });&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;  setTimeout&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;(() &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;=&gt;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; observer.&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;disconnect&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;(), &lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;5000&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;  }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;});&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;&amp;#x3C;/&lt;/span&gt;&lt;span style=&quot;color:#85E89D&quot;&gt;script&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Tip: Don’t forget to add this between the Form Tags of your Form HTML, Real Time Marketing requires this to work&lt;/p&gt;
&lt;h2 id=&quot;but-i-dont-know-how-to-code-what-do-i-do&quot;&gt;But I don’t know how to code, what do I do?&lt;/h2&gt;
&lt;p&gt;You can always download and install &lt;a href=&quot;https://github.com/martinplopez/NoDoubleRegistration&quot;&gt;my sample Solution&lt;/a&gt;. This will check automatically if there is a contact registered with the email address that is trying to register now and it will give the users an error like the following one:&lt;/p&gt;
&lt;figure class=&quot;prose-figure&quot;&gt;&lt;img __ASTRO_IMAGE_=&quot;{&amp;#x22;src&amp;#x22;:&amp;#x22;./image3.png&amp;#x22;,&amp;#x22;alt&amp;#x22;:&amp;#x22;Not a lot of info...&amp;#x22;,&amp;#x22;title&amp;#x22;:&amp;#x22;This is not very descriptive...&amp;#x22;,&amp;#x22;index&amp;#x22;:0}&quot;&gt;&lt;figcaption class=&quot;prose-figure__caption&quot;&gt;This is not very descriptive...&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;Just be sure to make the &lt;a href=&quot;#step-1-data-form-validation-in-event-registration-form&quot;&gt;Step 1&lt;/a&gt; for the plugin to trigger and if you’re feeling brave, I really encourage and recommend the step 5, as it will make the user experience way better 😉&lt;/p&gt;
&lt;figure class=&quot;prose-figure&quot;&gt;&lt;img __ASTRO_IMAGE_=&quot;{&amp;#x22;src&amp;#x22;:&amp;#x22;./image4.png&amp;#x22;,&amp;#x22;alt&amp;#x22;:&amp;#x22;Aha, so that&amp;#x27;s why&amp;#x22;,&amp;#x22;title&amp;#x22;:&amp;#x22;Simple but effective&amp;#x22;,&amp;#x22;index&amp;#x22;:0}&quot;&gt;&lt;figcaption class=&quot;prose-figure__caption&quot;&gt;Simple but effective&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;If you’ve tried this approach, let me know on LinkedIn — I’d love to hear how you’re handling event registrations!&lt;/p&gt;</content:encoded><category>Power Platform</category><category>Dynamics 365 Customer Insights Journeys</category><category>Marketing Automation</category><category>Power Platform Development</category></item></channel></rss>