Power automate is a useful tool. It lets you connect almost anything in the microsoft ecosystem (and even outside the microsoft ecosystem if you pay for premium). Unfortunately it is not a good tool.

If $name from Accounting wants to have an email appear when there’s a new sharepoint item with their name on it, sure. That’s possible. And fairly simple. Power Automate is quite good at this. Easy enough UI, no need to “deploy” or “host” the automation anywhere. It’s great.

The problem comes when power users are given this one automation tool and when someone says “hey can you automate our procurement process” they don’t say no because technically it’s possible. It just requires a bit of jank (nested for loops and conditions, anyone?). Fast forward 2 years and there are 200 flows scattered across 2 environments with no central way to manage them.

Inevitably there will be problems. Either a bug occurs in your flow, or sharepoint decides to just reject your requests, and it breaks. So you need to build error logging (why is that not built in?) to catch the issue and fix the flow before somebody’s business process breaks. This needs to be applied to every flow individually, as again there is no bulk management functinality.

My main complaints stem from its browser-only, ““low-code”” nature

  • Offline? Transient internet issues caused by a bad VPN? Too bad, you can no longer save or edit.
  • No source code means no version control
  • No source code means no bulk find/replace
    • Say for example your boss changes and now everything that used to email him needs to email someone else. You need to find and replace all instances manually across all flows.
  • No desktop editor means you’re at the whims of your browser
    • At any time, the browser can decide its had enough and hang your tab, break autocomplete, overwrite your changes, or just refuse to save.
    • I started this post while waiting for a buggy flow to load in the editor. Maybe it will load before I finish. Probably not.
  • It’s always live, so you can’t save it unless it’s error free (not necessarily bug free)
  • There’s no REPL (read eval print loop) so there’s no way to test the output of a function without re-running the whole flow
    • This makes debugging and especially text formatting extremely difficult
  • This many layers of abstraction makes it nearly impossible to diagnose errors
  • You don’t get to see the underlying microsoft system which can change or break at any time without warnin

I think if they added a toggle of low-code on/off, I’d be a lot happier. Let me check it out as a git repo, make my changes, and push it to make it live. That’s effectively already happened with PowerApps and PowerBI, but strangely not with the tool trying to be the most “backend automation” of the group.

For anything moderately complex, I’d argue python + microsoft graph API would be easier. But that’s not officially sanctioned by the workplace, so it’s forbidden.

I’ve heard there’s a plan to use PowerFx (used in PowerApps) in flows, which includes regex, better data table manipulation, and a functional linter for code editing. My hope is this will coincide with a lower level code view to get feature parity with PowerApps (Git! Find/Replace!) Until then I’m dumping as much logic as possible into the App and only having the flow do the bare minimum.

Maybe the flow editor finally decided to load and I can get back to work.