I am an innovation capacity builder and web 3 strategist, working in EdTech. An Internet Architect by trade, systems thinking and network theory shape how I solve complex problems in organisations.
Use Microsoft Forms To Create a Meeting Registration with Outlook and Power Automate
Don't have a way to create a registration process for a meeting/webinar you want to host? Interested in learning a bit about Power Automate? Read on...
OK before I start, a word of warning, Power Automate is powerful! I had a few "issues" with cancelling my meetings when I was building this workflow... don't test in production kids...
I'm setting up a few events and webinars at work at the moment and wanted an easy way for people to register. Because we're likely to have a larger audience with presenters from outside the company, I'd like to use Zoom to run these (rather than Teams). Since I don't have a webinar enabled Zoom account, I didn't have an easy way to create a registration process that would automate sending invitations, so I set out to try to solve this with Office 365 tools.
There was an easy way to solve this problem (get hold of a webinar Zoom account) but it was a great excuse to learn a little about some of the capabilities available off the shelf these days.
Before you can do anything, you'll need to have, and be signed into, an O365 account.
1. Create a form
I went as minimalist as I could here for an improved UX (user experience). One field, with a required check box, so that I match the data (the exact name of the event is important for following steps) and filter on later. The name of the field in the screenshot is "Session", which is important for the Power Automate step.
My form requires an authenticated user within our corporate domain so their name and email address is captured automatically. I also tested adding fields that required a user to complete their email address (so I could use test users) with no problem, I'll point out where you would use that in the steps below.
2. Create a Zoom call (optional)
This is optional, because you could use any meeting invitation, for example a Teams call would provide the same end result. However, it created a need for more data, which I added to the subject of the meeting invitation, and set to the same time and duration as the Outlook calendar event.
3. Create a Outlook calendar event
You'll notice that I created a new calendar called "Events" and at the top I have circled the warning that this isn't my primary calendar. This is helpful for me for administering my calendar, but if you're using a Teams meetings it can be a problem as it doesn't show up in the Teams app.
I've made the name of the event exactly the same as the field in the form and the timing of the event the same as the Zoom call. In the body of the invitation I have copied the Zoom call details (though I have redacted it in the image).
4. Create a Power Automate flow
So this is where the magic happens. If you've never used Power Automate (I hadn't), it's a bit like If This Then That on steroids. I think the old name for it, flow, is probably better too... it's helpful to have in mind that this is just that, a flow, with data passed in at the top, passing through a series of steps to, to a final action at the bottom.
Step 1, above, doesn't do much more that pass the form data into the automation flow, getting the response data when a submission is made.
Step 2, above, gets all the events from the "Events" calendar I made specifically for this task. I then had to perform a data operation, creating a filter to extract only the event which matched the "Session" value from the form data in Step 1. This is why keeping the Subject of the email and the session the same is helpful in this simple example.
Now I have filtered the event that I want, step 3 shows selecting the "Body" that has passed through the filter. Then, using the "Compose" data operation I assign "Start time" and "End time" to 2 output variables that I have renamed "Start" and "End" respectively.
The screenshot above shows that there are 2 "Body" fields, make sure you select the "Filter array" one... if you select the data from "Get events" you'll effectively negate the all the data operations that have been performed so far.
We need to pull the Start and End time out like this so we can apply a fix to a time zone issue I was having. During testing, when I submitted my form response, the British Summer Time (BST) time zone wasn't honoured and my event time would be changed to UTC by Power Automate (losing one hour).
Step 4 updates the event in my calendar. When testing, I found I couldn't leave any fields empty of the invitation content would be erased. So using the filtered data, I effectively added the filtered data back into the invitation. By adding the "Responders' Email" to the "Optional attendees" field (separated by a semi-colon), the email of person who submitted the form is appended to the invitation and outlook then sends it to them.
The "Start time" and "End time" fields are the final piece of the puzzle. You may not encounter this problem since it relates to British Summer Time in my case, but if you do need to, here are the expressions used for each of the fields.
The addHours function calls the "Start" or "End" output from step 3, and adds 1 hour to it.
I hope this was a helpful post, please leave a comment if you have any questions.
Join the newsletter to receive the latest updates in your inbox.