There is now more demand than ever before to create online events with Microsoft Teams. These may be training events or webinars or just a need to organize a online community meeting using Teams Meeting or Live Event. But if you don’t want to share your joining link publicly in Twitter and pages (like #TeamsFest does) you have to worry about sign-up, possibly approval and sending event information emails.
This blog article shows you in rough overview how to do this. I did a quick POC just to show this process around and that this can be done very easily with just what Office 365 is out of the box provides to you. What are the components:
- Microsoft Forms for signup
- SharePoint lists to hold up attendee information and generic webinar information
- A selected Teams team & channel is used for approvals instead of emails
- Power Automate to create necessary Flows (writing Forms to SharePoint list, Managing approval, Sending invitation emails)
Disclaimer: this is not an optimized process and it doesn’t include any error checking nor sophisticated handling. I could create invitation emails more smartly and include ICS files there as well. So there is room for improvement and I will get back to this with more complete solution later.
Added 23.3.2020: Another important issue to consider is you are sending large number of emails outside your tenant using Office 365 may affect your domain reputation. To make this a true Live Events webinar solution you may have to consider bringing in Dynamics and use Forms Pro features coupled with it. https://dynamics.microsoft.com/en-us/sales/capabilities/
However, if you are using this inside your company to manage sign-up process for internal training or other events this isn’t a problem since emails are sent inside the tenant.
Prepare the event
Schedule and plan the Microsoft Teams meeting or Live Event to your calendar. Add some persons from your organization as co-organizers/presenters so you are not doing this alone only. When you prepare the event you get the most important result: the join URL for attendees. You don’t want to send this calendar invitation directly to all attendees.
Use a short link service like Rebrandly. Bitly or some other one to create a layer on top of your event’s attendee join link. In case you have to change the URL later you can just change the destination/target in the short link service, instead of sending the email again to all attendees. I talk about this a bit more in the next chapter.
You should also schedule the ”attendee meeting” where you include the template text with (short url layered) join links. This is something you can save as ICS file and then upload to email.
This is easy to create with Forms. Just ask for attendees name, email and organization (for example). Using anonymous form (Set it under Settings in top right … menu) you can collect answers from anyone. If you limit this to your organization only you don’t even have to ask for the name or email.
I think it is a good idea to share the join-link using a short / branded link. You can get the link and/or QR code by clicking the ”Share” button.
And if you have access to Rebrandly or other link service create a shortlink so it is easy to distribute and manage. If you used a purchased domain with Rebrandly you can also edit the link target/destination later. This is a rather recent change, earlier it was possible to do without purchased domain. Bit.ly is quite expensive if you want to edit the link target.
You need to create two links with the service
- Sign up form link (easier to find than Forms long links)
- Meeting join URL
Write sign-ups to the list and approve them
Using Power Automate it is easy to use ready template to write new form responses to SharePoint list. First create the SharePoint list. I had trouble with Yes/No values in a SharePoint list today (for some reason I couldn’t do changes in Flow for them) so I changed the columns to single line text and just use Yes and No values there manually.
I used another Flow to start the approval process. This is triggered when a new item is added to SharePoint list.
The process goes as following
- When a new item is added to the sign-up list the Flow is triggered. Places for improvement: either a separate list for every webinar or a webinar information/identifies is included
- Prepare Approvers: a string variable. Initially empty.
- Get specific team members and list them to Approvers separated with ; so you get a list of emails with ; as separator. These persons can approve the sign-up for webinar.
- Initialize approval process by Creating a approval. This action also allows to use Adaptive Card for approval. Approvers string variable is used to set who can approve this action.
- Use flow bot to post the Adaptive Card from the previous step to selected team’s channel.
- Wait for the approval to continue.
- Once the approval request is handled check was it Approve or something else.
- Approved requests result the update to SharePoint list item to set Approved column Yes
What is good in this approach is that every one in the team can approve the request and everyone else sees if it has been approved already. For most webinars this step of doing the approval may be unnecessary if everyone is welcome to join. But it does look great in Team channel!
Sending join emails
Once you hit a specific time you want to send the email information to attendees. This is in minimum email containing information about welcome, how to join (with instructions preferably) and ideally also ICS attachment. For this POC I skipped the good looks and attachments but it does include the link. Link could be a Live Events attendee link or plain Teams Meeting link. This way you can track most of the people who can join. Teams doesn’t create these links personal and there is nothing that would stop people from sharing them but I haven’t seen a big problem due to that so far.
It might be a good idea to have webinar information in a SharePoint list. I have only included a name in this POC but even a email ”template” with title, schedule etc could be there. Of course every email can be made personal if you include attendees name – or you could just use BCC to make it less looping.
The process goes as follows:
- Manual triggering. This could happen automatically via webinar info list (create a column ”send emails” and use it ) or some other trigger.
- Get items from webinar attendees that have been approved but not sent email yet. I used a SharePoint view to limit results.
- Initialize webinar information variables and populate then in Get webinar info & Retrieve webinar basic data
- Send invitation emails. This is a for-each loop that uses Outlook Send email V2 to send a custom (if needed) to each recipient. In this loop the sign-up list column InvitationSent is updated to Yes.
This is how to define a view to limit SharePoint Get Items results
And recipients get the email and instructions how to join the webinar with the link. Instructions are missing in this demo/POC but it would be a really good practice to add them and also create that email more personal with including person’s name there.
Room for improvement
I listed several places for improvement to make this a really usable process.
- Centralized webinar info list should include email title, body template, after the event email and ICS that would be sent to attendees. Also a few control columns (send email) would be used to trigger flows to send email and reminders.
- Look for places how to reduce looping in Flows to reduce number of actions required to run these. At least use a service account that can be added with more actions or even Premium licensing if needed.
- Reminders to non-approved entries.
- Error management and better checks during the process
- Handling email errors: people may have entered their email addresses incorrectly: ability to send individual users invites again.
- After the webinar catch-up email ”where to find recording, materials etc. This may contain several attachments.
- Ability to reuse these to other webinars easily. No-one wants to start from the scratch with these. 😁