The future of Flow Studio - Trial

Hi everyone.  This is somewhat serious, and I really need your feedback.

I wanted to write this down and project my intentions clearly and well in advance.  This is something I really would want feedback regarding the future of Flow Studio.

 

Flow Studio today

I love working on Flow Studio, and I heard feedback all the time that there's more I can do with it, there is so much more.  It is always my intention that if I can make it into a product offering - it can supplement my income and I can wholly devote more working days to it.  It is very fulfilling work but very very tiring to work weekends and evenings and have a head full of grey hair from lack of sleep.

A few weeks ago - I implemented Google Analytics to try to figure out which feature area people are using that I need to improve on.  If you are interested I can share the results.  But (to my surprise), I'm now tracking 40 active users per week.  When I last guesstimated 3 weeks ago before I implemented analytics - I thought I had 10 recurring.

The most used activity is Expand - of course we all want to see our Flows, what's been running, and more importantly, what's been failing.

 

Immediately: announcing a new web-3.0 URL

Here's a new thing.  You can use this shiny new URL that makes this a web 3.0 application.  A new URL means we are in serious business.

https://flowstudio.app 

The old address will continue to work, and they both map to the same application at the moment, in the future I consider switching the old URL to an insider/test build.

 

Flow Studio tomorrow

Flow Studio is free.  Whether you add a subscription or not.

The current functionality, navigation, filter, sort, tag will all sit in the Flow Studio base product and provided for free indefinitely.

For the subscription, my thinking is to chase after two particular Stories:

The Flow Studio Professional scenario and the Flow Studio Administrator scenario

Flow Studio will exit Open-Alpha status today, from tomorrow it will be Open-Trial status.  Everyone is on trail status.  There's no subscriptions built yet so it's just a name that implies there's more stuff later.  I will also start to label functions as Pro or Admin.

 

Flow Studio Pro

Flow Studio Pro is a subscription offered for Professionals, Consultants, Makers.  The main work here is to help you make more Flows, quicker and better Flows.

  • I am thinking to move the Edit JSON capability here - because I think the users that really benefit from this feature are super Flow users and will be happy to pay a small subscription.  This is also an area that I think I'll need to build more protection to help people feel safer modifying their Flows and not worry about breaking a Flow.
     
  • I'm thinking to offer a rudimentary backup/restore to give people some assurances.
     
  • The ultimate goal is to provide more Power User focused features.  Do you know you can rename actions with Flow Studio?  (this feature will also move under PRO)
     
  • I am thinking to charge US$5/m per account (email) or $10/m for 3 emails (I think the 3x offering is better suited for teams or for consultants that work on multiple projects - you can choose which 3 emails as you please)

    I have no idea if that's too little or too much.  You have to tell me.  I also think it is a subscription you can turn off and on as you like - if you aren't using Flow anymore on your project just stop the subscription and resume it later. 
     
  • Flow Studio doesn't go into your environment and delete anything when you unsubscribe.  Don't worry!
     
  • Without a subscription the Pro and Admin functions are disabled.  Flow Studio will continue to function.

 

Flow Studio Admin

The Flow Admin scenario is a subscription offered for Administrators - the main work here is to help you see all the Flows within your organization, set up triggers, reports and governance policies when things happen.  Turn off Flows when it exceeds run limits, when it uses specific connectors, what happens to the Flow when its owner leaves the organization etc etc.  What happens when a Flow fail?  When it fails a lot?

  • I am thinking $30/m for Flow Studio Admin - the Flow Admin may need Flow Plan 2 for access to the /admin REST APIs.  So I'm cautious what is coming out of the box with Plan 2, and what I plan to build as extras on top.
     
  • Ultimately, I want Admins to have better visibility into what they have running in their environment, help them build triggers and governance flows (even if they unsubscribe later) and help them feel comfortable configuring Flow to suit their business.
     
  • There will be trials for all these subscriptions so you can see the functionality.  Flow Studio Admin is aimed to be purchased by an IT department and has visibility into thousands of Flows.

 

Variables

US$5, $10 and $30 are monthly recurring subscription costs.  You can switch them on or off from month to month.

But I really want to know what you think.  Ask yourself this: if Flow Studio is $5/m will you buy it now, or will you not.  Tell me what you think.

 

Please tell me what you think

This is really important to me.  Is it too cheap.  Is it too expensive.  Does this help you.  Does this not help you.  What are your worries.

If you are a fan of Flow Studio or a fan of building start ups, I want to hear from you.

If you think Flow is wonderful but nobody should have to learn expressions - I really want to hear from you.  How can I help you, for only $5/month.


My lines are all open:

https://twitter.com/johnnliu
https://www.linkedin.com/in/johnnliu/ (please mention re: flow studio when connecting)
https://github.com/johnnliu/Flow-Studio-Issues/issues

or comment below

 

 

 

Post-DWCAU Conference - 7* flows in 1 hour

I'm composing this post on a sleepy Friday morning, still in Melbourne, on the day after the Digital Workplace Conference (Also Australian SharePoint Conference).  It is still my favourite conference.  This year, I had a session at the end, and helped out in a hackathon-styled PowerApps training.

Thank You

Thank you - the attendees that came to the sessions and the hackathon. 
Thank you to Debbie and Mark for putting together another great conference.
Thank you for the many speakers that flew in to present.  It is always such a thrill and pleasure to meet everyone down under.  
Thank you to Paul and Ashlee for running a PowerApps (with a bit of Flow) hackathon.

No thank-you to the LEGO Voltron I didn't win.  The guilty vendor-name is withheld you know who you are.

 

Presentation

I presented a talk on "Functions and Flow" - the plan was to cover increasing our serverless toolkit with both Azure Functions and Microsoft Flow.  But because I see my time is slotted near the end of the late afternoon, I didn't really want to do slides - so I just went with lets do fun demos.

There is a roadmap to the list of Flows that I demo'ed in 1 hour.  In retrospection, I should have left a slide up while I do my demos of this roadmap. 

So imagine this list is that missing slide, giving you the overview of what we are covering as we progress.  Shockingly, the Flows aren't just 'randomly selected' they actually follow a story.

This is the roadmap, with links to each Flow:

  1. The Only "Workflow" in the demo
    How to do parallel approvals with time-out escalation and manager lookup.  The pattern is more complex than one single action with settings, but gives you a LOT of flexibility to twist how you want to design your approval conditions.
    https://github.com/johnnliu/flow/blob/master/Approvals-Demo_20180818224437.zip

    My example is inspired by Serge Luca's "Escalate Approvals" posts on approval scenarios
    https://powerusers.microsoft.com/t5/Microsoft-Flow-Community-Blog/Microsoft-Flow-How-to-Escalate-Approvals/ba-p/93773

    Also:  time patterns:
    PT1M = 1 minute
    P1M = 1 month (remember Flow time out in 31 days, so this pattern won't be too useful, unless you want to trigger a new Flow when this one time out)
    P14D = 14 days
     
  2. Flow does binary natively
    Get SharePoint File from HTTP Request
    https://github.com/johnnliu/flow/blob/master/SPFlowProxy_20180818225415.zip
     
  3. Making new Files in Flow
    Generate PDF from SharePoint files, including pictures
    http://johnliu.net/blog/2017/10/generate-any-pdf-documents-from-html-with-flow
     
  4. Making Actions in Flow
    Azure Function and Flow to run any PnP-PowerShell (350 cmdlets)
    http://johnliu.net/blog/2018/4/run-any-pnp-powershell-in-one-azurefunction-from-microsoft-flow

    This can be deployed via 1 ZIP file
    http://johnliu.net/blog/2018/4/run-any-pnp-powershell-via-drag-and-drop-zip-to-azurefunctions 
     
  5. Making Actions in Flow (make Teams)
    This requires a Batch Custom Connection - I'll be demo'ing this in a future MSGraph call
     
  6. Making Triggers in Flow
    Convert MSGraph webhook to an automatic trigger (this one is a pair of 2 flows, but I count this as one demo)
    http://johnliu.net/blog/2018/1/setting-up-msgraph-webhook-with-http-action-in-microsoftflow
     
  7. Sometimes, we just want an over the top demo for On-Premises data gateway.
    http://johnliu.net/blog/2017/10/from-office-365-to-minecraft-connected-with-flow
     

Questions

  1. A question about on-premises PowerShell
    The best solution is to look at Azure Automation's Hybrid Runbooks
     
  2. A question about very complex approval sequences - I suggested implementing a State Machine described by Serge Luca
    https://powerusers.microsoft.com/t5/Microsoft-Flow-Community-Blog/Simulate-state-machines-with-Microsoft-Flow/ba-p/92211

 

Flow Studio

Because I'm a terrible salesman, I forgot to mention anything about my Flow utility app "Flow Studio" - I actually used it to select a subset of the Flows I present.  So you were looking at it, I just didn't say anything about it.

Try it free: https://flow-studio.azurewebsites.net

Flow Studio is a utility toolbox of features I added to help me manage, organize and build more Flows.  It is in Open-Alpha status.  If you want to get some great ideas about what's going on with ALL your Flows and not just individual ones, Flow Studio is really good at that.

Summary

I have done several talks in Microsoft Flow - and every time we increase in speed and complexity of the demos.  Because Flow is connecting boxes - once we all get past "action" connects to another "action", suddenly we find ourselves talking about connecting HTTP API and Webhook triggers.

That is actually the final thought I wanted to end on.  Flow makes things deceptively simple, but they aren't steps that seems impossible.  They look like tiny steps.  They represent giant leaps.

We step off the cliff, and we fly.

 

Connect

 

A Request

I didn't have any pictures from this session!  I forgot!!  If you have some could you tweet them at me (or send them through LinkedIn)?  I'm looking particularly for a picture that shows the size of the crowd that afternoon.

 

The simplest No-Code Solution to Save Picture Files from PowerApps to Flow

pexels-photo-1028624.jpg

Today, we are going to talk about a new technique (hack) to send any pictures from PowerApps to Flow.

We will do this with a modified Flow Button trigger.


Update 2019-04 Save Picture Files from PowerApps to Flow via unused Outlook Connector

I’ve came up with an EVEN EASIER hack that you should check out. The 2019 April method is the best one so far.

http://johnliu.net/blog/2019/4/flowninja-hack-87-lock-microsoft-flow-powerapps-trigger-to-upload-images-to-sharepoint-with-ease

Update 2019-03 there’s some JSON definition changes to the PowerApps trigger. See note below.

Update 2019-01 - I did a YouTube recording of this blog post

Quite possibly the easiest way to let us upload an image from PowerApps into SharePoint - from the Add Pictures control (not the low res camera control). Without having to write a custom connection. By hacking a Flow Button into a PowerApps trigger.

Why John, what is the problem? 

Why do you repeatedly write the same post?

The problem is that we want to use PowerApps to collect binary files (mainly images, but also documents, video, anything) and send them to Flow - Flow can then decide where to send the pictures.  To SharePoint, to Email, to Cognitive Services etc.

This is a problem that isn't out of box, and has several good workarounds - some choices more difficult (or limited) than others.

 

What have we got so far?

This is the first method - we can send PowerApps' Camera to Flow via a built in dataUriToBinary() expression.  But it doesn't work for Add Picture from device gallery.  We also can't use this method for sending files - documents, zip, sound, movie clips.

This method lets us use Add Picture from gallery and we can send any binary file formats.  But the input parameter is specialized multipart formdata bytes, so this method needs a Custom Connection (need a Swagger definition file) to work with PowerApps.

 

What is this new method?

We are going to take a Flow Button and hack it into a PowerApps trigger to send Files from PowerApps to Flow.

It will be magical.  Because there will be no Swagger.

 

1. Build a Button-triggered Flow

We start with a Flow Button trigger - which lets us specify which parameters we want as part of the button click.  Flow Button let us select File.

Create FileName and FileContent compose actions to extract the value from the File trigger parameter.  Then use SharePoint's create file to create this file.

Test this Flow - upload a picture of LEGO 10234 - success.

 

2. Examine this Flow Button trigger and switch it to a PowerApps trigger.

Next, we need to check the Flow button trigger and convert it to a PowerApps trigger.

This can be done via Exporting the Flow, open up the export in ZIP file, and change the JSON definition of the trigger.manual.kind from "Button" to "PowerApp".  But here I'm using a simpler way by opening the Flow using Flow Studio's Edit Flow JSON capability.

Try it: https://flow-studio.azurewebsites.net/welcome

Save the changed definition and this is now a PowerApp trigger.

Note: Have a look at the JSON schema generated for the Flow Button's file trigger parameter.  We'll need to know this later.

 

3. Build our PowerApp

Note - this is the Add Picture control.  Not the camera control.

Because our Flow is now a PowerApps trigger - it appears in the available list without us having to build a Swagger file.

The parameters needed is { file: { name: "x", contentBytes: ... }} 
This matches what Flow Button wants for a file upload.

 

4. That's it.  Done.

Run the PowerApps to test.

And the result - LEGO 851400 cup is uploaded to SharePoint via Binary.  No Swagger.

 

Future thoughts

Eventually, I hope we have a way to officially define the input parameters we want to use in a PowerApps trigger.  The way it currently works is awkward.  It should just use the same way that the Flow Button trigger works.

Until that day - this method is possibly the simplest way to send any binary files from PowerApps to Flow.  Because this method doesn't need custom connections - you might find this useful in not hitting your Flow plan limit of 1 custom connection.

Underneath the hood though, a Flow Button trigger is the same as a PowerApps trigger (they are both HTTP Request Triggers).

 

Download File:

https://github.com/johnnliu/flow/blob/master/FlowNinja-SendFileToFlow_20180728000358.zip

 

Bonus Exercises:

  • Create multiple files first in Flow Button before converting to PowerApps trigger.

  • In the definition, made some (but not all) of the file parameters required

 

Update: adding additional arguments

The converted PowerApps trigger works, but you may find it troublesome to edit the Flow after it was changed.  And attempts to use Ask Parameter in PowerApp Trigger within the Flow Designer will cause the PowerApp trigger to be regenerated, potentially breaking the file argument.

Instead, do this.  First make sure it is a Button trigger again.  

Then, create multiple arguments with the Flow Button

Note the two new arguments have very boring names text and text_1

Note the two new string arguments in addition to the file JSON record object.
Result:

 

2019-03 update

  1. When editing the Button trigger to Powerapp do:

    Change Button to Powerapp
    Rename variables to nicer ones file1 and file2 - rather than file and file_1
    fix up references within the Flow to point to triggerBody()?[‘file1’]?[‘name’] and triggerBody()?[‘file1’]?]’contentBytes’]

  2. In PowerApps - call Flow method with two files

  3. See result

Speaking and Hackathon at Digital Workplace Conference Australia - Melbourne

DWCAU-Landscape-Temp.png

In a little less than a month on August 15-16, I'll be presenting in Melbourne at the Digital Workplace Conference Australia 2018.  

www.dwcau.com.au

(I still fondly remember this conference as the previously annual Australian SharePoint Conference - but all things evolve.  SharePoint to SharePoint Online to Office 365, and the workplace evolved from portals to intranet to social platforms to conversational platforms).

Flow and Functions: level up our Serverless Toolkit in Office 365

I will be presenting an amped up talk covering the implementation and automation with Microsoft Flow and Azure Functions.  This is one of several sessions on Microsoft Flow at this conference so I will be covering implementation and mastery at level 200+  (But because it's Flow, it'll still look deceivingly simple!)


John join forces with Paul Culmsee and Ashlee at #DWCAU pre-conf hackathon

I want to also mention that I'm helping out with Paul Culmsee and Ashlee's PowerApps and Flow Workshop/Hackathon on 14 August 2018

http://www.dwcau.com.au/workshops/powerapps-hackathon/

I personally don't know how much PowerApps and Flow raw potential would be in that room in the hackathon.  I really want to find out and I hope you would too.  Space for this is limited - please consider this one day pre-conference workshop.

"Learn PowerApps and Flow from experts and build an app that you need." says John.

"Two MVPs for the price of one" says Paul.  I'll just leave this here.

Whether at the conference, and/or the hackathon, I hope to see you there in Melbourne.

Flow For-Selected-Item trigger and SharePoint Site Pages, in a detective story

This is a long blog post, there are two parts:

  1. How do you make a SharePoint For Selected Item in Flow, and have it appear on the SharePoint Site Pages library
  2. Explain the magic rituals you just did to figure all this out

The Problem

Paul Matthews reached out and asked if it's possible to create a "For a selected item" Flow against Site Pages.  

I was able to reproduce what he's asking fairly quickly.

 

The Solution

May be you just want the solution.  The solution is that you need to use the "list guid" as the custom value for the SharePoint For Selected Item trigger, not the List Title.

 

The Detective Novella

Ah you are still here.  OK, buckle yourself in, we are going another Flow adventure.

First, when realizing that the For a Selected Item doesn't appear in Site Pages, I immediately call the SharePoint REST method SyncFlowInstances()

I do this of course, with another Flow.

This returns empty array for SynchronizationData.  This means:

SharePoint Site Pages don't know anything about my Flow.  It thinks there's no Flow connected to it.

Create an Out of Box Request sign-off Flow on Site Pages

SyncFlowInstances returns this Request sign-off Flow

So we know Flow can run on the Site Pages library, just not "Our" Flow.

I want to compare the JSON definition differences.

The Request sign-off Flow is owned by the SharePoint list, not by me.  So I can't read its definitions (I can't even see it in my list of Flows view)

So I created a Flow to assign the Request sign-off Flow to me.

This is necessary to add myself as a Owner to this Flow.

Now I open these two Flows with Flow Studio.

I can see both the working Flow (on the left) and the not-working Flow (on the right)

https://flow-studio.azurewebsites.net/

Checking the trigger JSON, I find that the Flow on the right (not working) has "Site Pages" as the name, but on the left (working) has a GUID as its name.

Summary

We explained the problem - it is the Site Pages not appearing as a choice - it's not a List nor a base Document Library.  Typing the name "Site Pages" doesn't work.

The solution is to use the list Guid.

And the debugging steps takes us to SyncFlowInstances, Modify FLow as Admin to assign a new template flow back to me as the owner, and finally using Flow Studio to change the existing "Site Pages" to the list guid.