Category Archives: Microsoft Flow

Quick Test of Microsoft Flow

Just testing a flow attached to my blog. hopefully more to come!


can’t talk Flow without this!


Microsoft Teams, Forms and Flow on the go!

This is the final post in this mini series where we looked at the simplicity and easy of integrating within the Office 365 stack.

Everything up to now is great! Exciting even. I can create richer user experiences without relying solely on the on Excel experience, collect and analyze responses and keep my team up to date.

What about the mobile experience? How does this all work out there?

I am running on an iPhone 7 Plus with iOS 11.2.2. I also tested this on my Amazon Fire HD 10, side-loaded with the Microsoft Apps, and I had the same experience there.

Start in the Microsoft Teams app

Fire up that Teams app and let’s take a look at the notifications we made with Flow real quick.

Flow posts in Teams on the iPhone mobile

Not too shabby! Formatting carried over pretty well!

Let’s check out the tabs

Team tabs on mobile iphone

This is when I start to get excited, just to be crushed…

Microsoft Forms in a Teams Tab on Mobile

Sadly when I press my form’s tab, I go to my browser and am presented with:

Forms tab in Teams

Yup, that’s just the Forms website. I pressed Get started, it let me login, then it just sent me to the editor view of Forms.

I went back to Teams and pressed the forms tab again, hoping now that I was logged in I could fill out the form. Sadly:

Pressing forms tab in Teams fail


I’m in edit mode again, not even in my form. So weird!

Microsoft Excel in Teams Tab on Mobile

Pressing my Excel tab in Teams on the iPhone was a wee bit better than Forms. It did send me out of the Teams app and into the Excel app, but it did put me in the right Excel file ;)

Excel tab in Teams opens the app

I can view the content as I would expect. Unfortunately not in Teams though.

Microsoft Teams mobile experience is much to be desired

The core conversation piece works well, I use it a lot across my teams on my phone. The tabs I generally avoid unless I’m ok with what I’ll get. Microsoft has some ground to make up here for sure!


This post wraps up my mini series, I hope you enjoyed it. My goal was to highlight how easy it is to integrate within the Office 365 stack, even easy for most business users! No development needed for a rich user experience on a simple day to day task like collecting data in Excel.

Please let me know what you think below in the comments! ‘Til next time, thank you!

Integrating Forms into Teams, bringing it home with Microsoft Flow

This post is the third post in this mini series as we look at how easy the Office 365 stack integrates. In this series, we will:

You have a form built, maybe to collect requests, feedback, issues, conference booth sign ups, raffle tickets, whatever. In a previous post we covered how to have the form submit content directly into your Excel file, removing the need to export the responses each and every time. We also covered how to embed the form in Teams

But, how do we now notify users that a form has been submitted? The creator of the form can receive email notifications, but there’s no i in TEAM. We want the team to know someone submitted a request, and then the team can do something about it.

Won’t the Teams Forms Connector suffice?

No. Not for what I want to do here. There are some limitations with this connector:

  • The notification is super generic, I can’t configure what values are included in the notification
  • It only shares the total number of shared responses, nothing about each response as we get them
  • I can only connect to one form at a time, per channel
  • I can only select forms which are group forms, my personal forms don’t show up

Here’s what you get with the connector, a daily status of results? BORING!

Microsoft Forms connector in teams is sad

Good bye connectors and hello Flow!

Microsoft Flow to the rescue!

Let’s bust out a Flow for letting your team know about new submissions!

Entire Microsoft Flow writing Forms to Teams

This Flow is a little more complex than might seem necessary. Since I’m using multi-value fields in the form, I need to parse those values. We’ll cover that in a little bit.

Let’s dive in deeper and see what we’re doing here.

Trigger: Microsoft Forms: When a new response is submitted


This trigger causes the the Flow to start whenever there’s a new submission. You’ll notice when you add it you get a drop down option. This is great if you have a personal Form, you can select one of your existing Forms:

Microsoft Forms trigger dropdown

However, in my case, and many others, we are selecting a Form that is a Group or a Shared form. (This form is a group form since I have it writing directly to the Excel file) In these scenarios we need to use the ID of the Form.

To do so, navigate to your form (jump to Click your form and then copy the FormId from the URL, as highlighted in red:

Go back to your Flow, in the trigger drop down, select Enter custom value and paste in this value.

Flow Trigger: Microsoft Forms - When a new response is submitted

Action: Microsoft Forms – Get response details

Flow Action Microsoft Forms - Get response details

The trigger only returns the ID of the submitted form, no details, so now we need to pull the details. We do this with the Get response details trigger.

The Apply to each wrapper will appear automatically, when you interact with the trigger’s data, Flow automatically wraps it with a loop action that ensures that it’ll process all requests.

After you add the action Microsoft Forms – Get response details, you want to use the same form you used in the trigger, either select it from the drop down or use it’s ID (same thing we did in the trigger).

Then for the Response Id value, use the dynamic value Response Id from the trigger. This will prompt Flow to add the Apply to each wrapper.

Action: Office 365 Users – Get user profile (V2)

Flow action Office 365 Users - Get use profile

The Form details only includes the responder’s email address, and I’d like their display name included. I am using this action to simply get some details about the user who submitted the request.

Why V2? Cause it’s newer. Seriously, that’s all. There are several actions and triggers that have a V1/V2 variations. I always start with V2, and if it doesn’t have what I need I think switch to V1. My reasoning is that V1 may get deprecated sooner than V2, and V2 is newer and should have more options and be more reliable…. should…

Action: Data operations – Parse JSON

Flow action data operations parse json

Our Form allows the user to select multiple choices, as seen here:

Microsoft Forms Multiple Choice questions

If you’re not dealing with multiple choice questions, skip this section and head to the last one.

These selected values get saved as a string, in a JSON array format, like ["10a-12p","2p-4p"]. If this doesn’t make sense, that’s okay. That string value is actually a multi-value array, just in a single string format. These next two actions, Monday Array and and Tuesday Array convert this string value into an array object for us to work with.

The content value is the question from the form, Ideal time on Monday, and Ideal time on Tuesday, in their own actions.

The schema value is below, you can try copy/paste it, but I cheated to make this schema. If you click the Use sample payload to generate schema link at the bottom of the action, you can type in what the data looks like. So I clicked that, typed in ["asd","asd"] and clicked Done.

Data Operations Parse JSON sample schema

This inserted the schema for me, whew! (alternatively you can just copy/paste from here)

 "type": "array",
 "items": {
     "type": "string"

Action: Data Operations – Join

Microsoft Flow action Data Operations Join array

Next, I wanted to join the selected values together, and use some user friendly words. Remember, the selected value looks like ["10a-12p","2p-4p"]. By parsing the JSON into an array first, I can now join it so it’ll look like “10a-12p or 2p-4p”. Better right? (There’s an example at the bottom of what the original formatting looks like.)

The From value has the Body value from Monday Array, and Tuesday Array, in their respective actions.

The Join with is the word “or” with spaces on either side, like space or space, like ” or “. Simple right?

Action: Microsoft Teams – Post message

Microsoft flow action Teams - Post message

Finally, we post this info to Microsoft Teams. Select the target Team Id and Channel Id, and then specify the message.

The message supports HTML, which is nice, so we can add some formatting here. Here’s what I typed:

<p> [Display Name from Office 365 Users action] has signed up for the conference booth!</p>
<p><strong>Monday:</strong> [Output from Monday Times action]</p>
<p><strong>Tuesday:</strong> [Output from Tuesday Times action]</p>

And blamo!

Forms details in a message in Microsoft Teams

And here’s what the formatting would look like if I didn’t parse the JSON and join the array.

Unformatted post in Microsoft Teams from Forms


Are Incoming Webhooks an option?

Absolutely! I will have another post soon comparing using Incoming Webhooks to the Teams Post a message action, stay tuned!


That’s it for now, but there’s always more. In my form, I also collect the shirt size, so I could submit that data to an order request database, a SharePoint list, or even an Excel file, for someone to collect all orders.

We could also use the provided cell phone number to vet their information against Office 365, and kick off a review and approval process to update their contact information in O365!

I hope this Flow helped, and showed a good use case for integrating with Forms and Teams! ‘Til next time, Happy Flowin’!

Use Microsoft Flow to remind the Team of due dates from Planner

one more time

This Flow I feel like should be unnecessary, but alas it is. The simple idea is to have tasks which are due tomorrow post to your team to help keep people up to date. Planner does offer email notifications which can do the same, they work great, BUT our users disable notifications because they are too verbose at the moment (i.e. getting emails on comments on tasks). We still want to notify the team of the impending tasks, however.

If you’re feeling lazy, go to the bottom of this post and you can download a template for this Flow. I also submitted this flow to the Flow template gallery, we’ll see if it gets accepted.

Let’s head over to Microsoft Flow

This flow is pretty basic, but has some complex pieces, so maybe its baslex. It looks big, but it’s really not.

Microsoft Flow copying Planner due dates to Teams

Overall, everyday at 7AM it gets all tasks from our plan, checks to see if any are due tomorrow, and are not already completed, and then posts a message in the channel in Teams.

Trigger: Schedule – Recurrence

Flow Trigger Schedule Recurrence set for every day at 7 am

This is simple enough, start the Flow with a Recurrence trigger. I set mine for every 1 Day at 7 AM. This allows us to wake up, come into the office and peruse our Teams, seeing the updates.

How do you test this, you might ask? Don’t you worry about that. You can force this flow to run whenever you want, you don’t have to wait until 7 AM to see if it works! More on this later

Action: Planner – List Tasks

This part was aggravating. If you haven’t noticed yet, there isn’t a clear way to access your Teams and Channels plans through Planner. If you navigate to Planner, you can’t find your plans from Teams. Just the plans at the group level. Microsoft is aware and working on that.

Unfortunately, this carries through to the Flow APIs, and when using this action, you can’t select your channel’s plan. Instead, you can provide the plan ID. To do so:

  1. Go to Teams and navigate to the Planner Tab.
  2. Press the Go to Website button in the top right of the window to open Planner in your browser.
  3. In the address bar of your browser, you’ll want to copy the planid value from the URL. You should see something like this, only copy the red letters portion
  4. In Flow, in the dropdown selection for the Plan Id, select Enter custom value at the bottom of the drop down
  5. Paste in the planId from before
  6. Done! Continue with the flow

Planner Get Tasks using plan id

After you save it and edit again, it will show the board name, the tab name from Teams, in my case Tasks.

Action Planner Get Tasks

Action: Apply to Each

Apply to each gets applied when the array is used

This is an automatic action, don’t worry about it for now. Flow knows when to add it for you, in the next step.

Condition: If there is a due date

Add a condition, and add the Due Date Time field from the List Tasks action, and BLAM you’ll have the Apply to Each added automatically.

This condition checks if there is a due date. If so, then continue on. If not, stop, do nothing. For the value field, use the expression null.

Yes, the due date is not null

Due date is existent, continue

Condition: If is due tomorrow and not completed

For this condition we are going advanced since we want to check condition on two fields. We want to check is the due date tomorrow and is the task complete. Press the Edit in advanced mode link in the bottom left of the condition to enter a free text field.

Copy in the following, paying attention to weird quotes that sometime come along with copy/paste.

@and(equals(formatDateTime(item()?['dueDateTime'], 'yyyy-MM-dd'), formatDateTime(addDays(utcNow(), 1), 'yyyy-MM-dd')),less(items('Apply_to_each')?['percentComplete'], 100))

Advanced condition to check if task is due

Quick explanation of what this is doing

We have an and() which says each condition in this has to be true. It looks like and(1,2). Our first and statement is checking if the due date is equal to tomorrow: equals(formatDateTime(item()?['dueDateTime'], 'yyyy-MM-dd'), formatDateTime(addDays(utcNow(), 1), 'yyyy-MM-dd')). The second and statement is check if the percent complete field is less than 100 (since it sets to 100 when someone marks a task complete): less(items('Apply_to_each')?['percentComplete'], 100).

If this is true, then we post the message to Teams. If it’s not true, we do nothing, carry on.

Yes, this task is due tomorrow and its not completed

Yes Condition in Flow

Now let’s write to Teams!

Action: Teams – Post Message

Post message in Teams from Flow

Select the Team Id and Channel Id you’d like to post your message to.

The Message does support HTML formatting, so you can have some fun here. My expression formats the due date into a short date format: formatDateTime(item()?['dueDateTime'],'M/d/yyyy').

Take your time, and test out your formatting, and then your team knows you’re being active ;)

Planner notifications in Teams

Couple of questions, known issues

What about the assigned to field?

Great question. No idea. It’s not available in the Flow action for Planner. So weird. Someone has reported the issue as an Idea, click here to check it out and vote it up! I also posted it on UserVoice, click here to vote this up too!

How do I test this Flow without waiting for the schedule?

After you save/update your flow, you’ll have a Run Now option. It may be in the initial view, or if you’re in the Flow details page, you can select Run Now from the menu

Don’t want to build it yourself?

I’ve exported my Flow for your use, download it here!

I hope this helps you find new ways to use Microsoft Flow! ‘Tl next time, Happy Flowin’!

Update your Team with events from your Outlook Group Calendar using Microsoft Flow

As of this writing, there is no clean integration between an Outlook Group and Teams, other than the membership. The calendar, for instance, doesn’t reflect anywhere in Teams. Using the calendar is advantageous for the team, and I wanted to share new events with the team, to allow for awareness and conversations around our meetings.

Enter Microsoft Flow

This is a super simple flow, but powerful.

Create new post in Teams from your Calendar

Trigger: Office 365 Groups – When there is a new event

This trigger will run whenever a new event is created in your group’s calendar. Yea, that easy.

Action: Microsoft Teams – Post message

This action will then post a message to the General channel in my Team. The message is HTML formatted, which is great. I include the Subject line and start and end date of the event. The Start and End dates are Expressions, so I can format the dates. Start date is formatDateTime(triggerBody()?['start']?['dateTime'],'dddd, MMM d, yyyy hh:mm tt') and the end date is formatDateTime(triggerBody()?['end']?['dateTime'],'hh:mm tt').


We use our calendar for team meetings, outings, PTO and more, now we can all keep apprised and discuss them.

The calendar event showing in teams