Getting started, a roadmap and mastery of Microsoft Flow

delfi-de-la-rua-vfzfavUZmfc-unsplash.jpg

In the last few years, Microsoft Flow has taken off like a storm. It is one of the most versatile product, but also quite tricky to completely cover because Flow can be many things. 

  • It is workflow

  • It is automation

  • It is serverless middleware

  • It can be a messaging orchestrator

  • It can be integration service


Microsoft Flow is a product that everyone, from Power Users to IT Pros to Developers need to understand and utilize in our toolbelt.

Two years ago, I remember excitedly telling everyone I meet about Flow - a year later, the same people that thought I was way over the top is excitedly telling me they have also discovered what I meant and caught the same fever.


On Learning - a Roadmap to Mastery

When learning Flow - there are milestones that we go through. Consider our own experiences and where we are, the next step isn’t very far away.


  1. Get started - read the templates and see what’s available

  2. Understand the triggers and actions

    Understand how to chain them - how each output work, and how the properties are filtered by type

  3. Understand how to read each action’s output - knowing what the output looks like helps with understanding if we need to write expressions later.
    Compose and Test - with previous run are our best friends. They tell us what’s going on in the values of our steps, and is our source of debugging if things has gone wrong.

  4. Understand logic constructs - for each, conditions, variables

  5. Understand how to chain beyond the basics - expressions

  6. At this point we should start to go looking for advanced trouble:
    peek code, static output, parallelism, fan-out / fan-in, timeout / retry policy, pagination, asynchronous webhook callback, run-after configurations, HTTP Request and Response.

  7. Patterns emerge - approval timeout escalation, state machines, sending pictures from PowerApps to SharePoint, bulk copying data across CDS and Excel, anything-governance with Flow.
    Built on the smaller pieces that we mastered along the way, but combined in an elegant way.

  8. Wrap custom APIs for others to use:
    schema, authentication schemes and custom connections

  9. *
    Anyone claiming to have the perfect roadmap can only show us the way for where this person has been.
    If you know what’s next - let us know in the comments.


Remember each success brings us closer to the next milestone. These steps aren’t completely sequential - but knowing how to read an action’s output will help with writing expressions.


Event

In the upcoming Digital Workplace Conference Australia, I’ll be giving an advanced introduction to Microsoft Flow - with a twist.

This session is an introduction to Microsoft Flow – but I will go far deeper – and will show the many different “kinds” of Flow apps that we can build.  Each one hopefully a spark in our imagination.

We will cover some deeper technical sides of Flow. What does it look like under the hood. When do we need to learn advanced expressions and why are they necessary.

When we don’t have an action, we make our own actions. When we don’t have a trigger, we make our own triggers. From patterns, to expressions to insane tricks.


Me, you, we!

The 1 hour will never be enough to answer everything and go deep enough to satisfy everyone.

Please please please come talk to me and ask me your Flow questions directly - where you are, if you have an error with your Flow. I’m here to help.


Joy 

Ultimately, we discover that the true joy of Flow is not merely creating a business workflow. It is a bit more low level. It is low-code execution, they run and do whenever and whatever we want them to do.

The joy I think is being able to imagine them, build them step by step, each step closer to our goals, and when our Flow finally succeeds, our wishes are fulfilled.




Release of Flow Studio: Deploy & future Price Increase

We have released Flow Studio v0.1.91 “Flow Studio: Deploy”

This is a super productive feature that we’ve been working on for a while.

You can think of it as “Flow Migrate Wizard”.

There’s a YouTube video showing the feature.


How Does it work?

  • Select one or more of your existing Flows

  • Enter a new name, or select an existing Flow to overwrite

  • Configure text, URL or variable replacements if you need to create variations

  • Run deploy Plan

What are the use cases?

  • Bulk create Flows from a template

  • Keeping child copies of a Flow updated from a master version

  • (Future) Migrate Flows between environments

  • (Future) Migrate Flows between user accounts

  • (Future) Migrate Flows into Solutions


Future Price Increase

Flow Studio currently is US$100 per year or US$10 per month. When Flow Studio: Deploy goes live (we are hoping in two or week’s time), we will be raising the price of Flow Studio to US$200 per year (or US$20 per month).

As a thank you to current subscribers - existing customers before the price increase will remain under current price.

So yes - if you have been thinking about purchasing Flow Studio in the past but needed a nudge, we are adding a great Deploy feature to go with that nudge.

We believe your time building Flows and keeping them up to date is far worth the price increase we are adding to the product.


As always. We couldn’t have done this without our fans.

Thank you for your support. Let us know what features you need.

Join us for a free full day Sydney Microsoft App in a Day - June 7

helloquence-61189-unsplash.jpg

Join Microsoft MVPs John Liu and Paul Culmsee - two of Australia’s Power Platform MVPs in Microsoft’s App in a Day event on June 7 right here in Sydney. I’m running this in June with Paul’s Seven Sigma solutions.

Register today for an all-day interactive training to learn how to create custom business applications without writing code, leveraging the Microsoft Power Platform technologies - PowerApps and Microsoft Flow.

App in a Day is designed to accelerate your PowerApps, Microsoft Flow and CDS for Applications experience with a comprehensive training in a single day led by certified Microsoft Partners.

Bring your Windows-based notebook and we will supply the rest, including lunch! *

The training provides practical hands-on experience with Seven Sigma who specializes in creating PowerApps solutions in a full-day of instructor lead app creation workshop.

You will learn how to build custom apps that run on mobile devices, and share them inside your organization securely.

Space is very limited and there’s only two weeks to go - so you need to quickly talk to your colleagues and book at this link.

https://www.microsoftevents.com/profile/form/index.cfm?PKformID=0x67310360001&ch=x3

One Flow to handle them all - Part 2 figuring out the changes

I had previously wrote a method of using Microsoft Flow to subscribe to all the lists in a SharePoint site - and how to have them all call a second Request flow to execute on File changed in any of these lists.

http://johnliu.net/blog/2019/3/one-flow-to-handle-them-all-how-to-subscribe-to-multiple-sharepoint-lists-with-one-flow

In that blog post, as all good trilogies go - we finished at a spot where we have gotten a webhook event call, but did not proceed to continue working out which items actually changed.

The full Get Changes Method

In the long delay between my #FlowNinja tweet and the blog posts being written, my friend @ISSPDEV couldn’t wait for the next part he went ahead with this. He wrote in much detail.

https://gist.github.com/zplume/1baf04cc05927b57a5da248454b15dcc 

Implementing the best practices from the SharePoint team

https://docs.microsoft.com/en-us/sharepoint/dev/apis/webhooks/get-started-webhooks


The Short Cut Method

I provide a second method, perhaps one that is much shorter for a Power User to implement. I worked on this with @ArtsyPowerApper and figured out a simpler method.

First upload a file, then copy the entire trigger body JSON.

Next, after the validation steps we had in the initial handler flow - we add a Parse JSON.

Use the trigger body JSON to create the schema.

By telling SharePoint to give us files updated in that library in the last 10 seconds, we fetch the changed items directly.

Thoughts

In my tests - I have tried 5 seconds and it seems good enough, but I extended it to 10 seconds in case there’s an large upload or delay.

Short cut method has a small risk of firing an event twice on the same item if it was somehow updated rapidly twice.

Also, unlike the complete Get Changes method, we can’t see System Update, Deletion, Rename, Permission Update events. So this method is only good for Item/File Created and Updated events.

But the steps is far simpler with a Parse JSON and one Get Files (with an OData filter)


Workarounds needed to use the Excel Connector in Microsoft Flow

There are two Excel Connectors in Microsoft Flow. There’s a quirk to work with them.

Plan

  • Two Connectors

  • How do we use them? What’s the problem we need this workaround for?

  • Extra tips


Two Connectors

In Microsoft Flow, we now have two connectors for Excel. We have Excel Online (OneDrive) and Excel Online (Business).

There used to be a third Excel connector - which has been deprecated.

How do we use them?

The Excel Connectors call Microsoft Graph under the hood. We need to provide a folder to the file, the file itself, read tables from that file, and then get rows from a table in the Excel file.

To use these connectors, the Excel file must have the data that we want to read in a table.

To use the Excel Online connectors with dynamic file name, we need to find the MSGraph ID of that file. It looks something crazy like:

01BUSAX432CKPX6HWHFJBI7CHAXKHKDHSS

So we build a carefully crafted Send HTTP Request to SharePoint, using the v2.0 endpoint to pull back the MSGraph ID for the selected file.

This then allows us to work with the Excel Online connector.

To use List Rows Present in a Table - we need the Table ID, since this is dynamic now - I’m fetching this with Get Tables (need the file ID).

Then I use an expression to fetch the ID of the first table in the excel

first(body('Get_tables')?['value'])?['id']  

Extra Tips

By default, Excel Online connector retrieves 250 items. We can change the top query param to return 500 or 1000 items.

But to truly get back All the items, we need to switch on Flow’s pagination policy.

See the result - my meteorite.xslx has 49998 rows.

Extra Tips 2

Excel Connector can only retrieve rows via a ‘table’. So if you have to read rows from an Excel file that doesn’t have a table, we can call the Excel Connector action “Create Table” to insert one, then read the rows with that.

This is originally Flow lifehack 96.

https://twitter.com/johnnliu/status/1129715544712597504