This is a summary of part 1 and part 2 of my series on Flow Vs Workflows. One of the reasons to begin this series was to learn more about Flow so that I can advise about it in my day to day life and understand when I should use both. The other main reason was this so called “Divide” between the Pro Flow vs Pro Workflow where people are only using one or the other and to better understand this.
There’s no question that Flow is a powerful tool and more extendable than Workflows due to its ability to connect to multiple sources, have custom triggers/actions and be able to update many sources within a single Flow. It does take a little bit of work to get your head around it, as coming straight from a customisation and configuration background, it’s not a straightforward knowledge transfer, there are some elements you will need to learn like oData queries etc.
Also, with the differences between the Dynamics 365 CE connectors/actions and the CDS 2.0 connectors/actions you will need to take these things into consideration whenever building a Flow which may have a cost or license implications while building functionality.
For example, I was recently faced with a situation where I needed the ability to run a flow over multiple records that I selected, a on-demand workflow as your were. I knew this was possible because the Flow button has been in D365 for quite some time now but i’d never had the reason to use it or to learn how it works. Much to my suprise, if you have a D365 connector in Flow, this does not allow you to run the Flow in Dynamics….What? Yes, that doesn’t make a lot of sense does it?
When I clicked on the Flow button and Create Flow, I was greeted with a screen I wasn’t really expecting. Common Data Service Button. So it seems like Microsoft are doubling down on this Common Data Service stuff, it would be a good time to learn more about it.
This is the only way (currently) for you to run what is an on-demand Flow over an assortment of records. If you have created a D365 Triggered Flow to do something, you’d essentially have to rebuild the same functionality in a CDS Button, heck even if you built it with a CDS trigger, you would still need to rebuild another Flow with the CDS button trigger instead.
Another note which I think is important to raise at this point, when people are starting to adopt this new technology and want to move it between environments is, you can now move Flows via solutions…well, sort of. You can IF and only IF you create the flow in a solution in either web.powerapps or your Flow home page, for EMEA that’s emea.flow.microsoft...etc. If you create a Flow and want to add it to an existing Solution, there is no way to do this (like the add sub component in D365 solutions) at least not that I can find.
Flows run on a quota system, meaning that you need to estimate how many flows you will be running each month and then take this into considering when proposing this solution to a customer. You do get Flows free as part of several licenses and these will trigger based on where you get the Flows from i.e. Free ones trigger every 15 minutes, D365 licenses trigger every 5 minutes, Flow plan 1 every 3 minutes and Flow plan 2 every 1 minute. How all this works when you have a combination of the licenses, i’m not entirely sure and I have not been able to find any documentation. If you do know, drop me a message and i’ll update this post. :)
In Summary of Flow, things to remember:
Triggers and the ones you should use
Solutions and building Flows in Environments
How quickly do you need a flow to Run
Manual Vs Automatic
Dynamics 365 Workflows have been an integral part of CRM for years and there are still a lot of advantages to using them. Yes they are limited by the fact you can only trigger and update data inside D365 so this is a plus point of Flow. They do have a number of other advantages though.
Background, realtime and On demand workflows allow you to have greater control over when you are doing and when compared to Flows. The fact you can tick a box and run a Workflow you built once, over a selection of records is incredibly powerful. I didn’t quite realise how powerful until I was face with a situation where i’d have to recreate a Flow all over again due to this limitation.
Also, no limit on the number of runs. Over the years, Microsoft have enforced a number of active workflows you could have in Dynamics (to be very honest, I’ve now lost track if there is still a limit or not) but one thing they have never limited is the number of times you can run workflow or have an associated cost. Your only “cost” as it were, is performance, as triggering Workflows to update thousands of records can have an impact to your performance.
One thing an avid reader might have noticed during this series of post is that I’ve only ever given you part of the solution. Nothing in either one of these posts does it show how you actually prevent a user from activating a quote or moving it to the next step in a business process. This was quite deliberate.
One of my earlier blog posts - Stop - prevent deletes while still allowing deletes details how you can prevent records from being deleted but can also be used to stop records moving through business process flows, activating of quotes or closing of cases. This is a effective function but requires a realtime workflow to be able to stop the user in their tracks from proceeding. While I have detailed a method of approvals in these last two posts, and compared the technologies; I didn’t detail the full solution as either way, still requires a realtime workflow to be complete.
That’s the conclusion, at least it is for now, that these two technologies can complement each other and both need to be evaluated for their strengths and weaknesses for any given scenario or requirement you have, before deciding on the best course of action. Bring “Balance” to the D365 world, use them to strengthen your functionality. So to all the “I only use Flow” and “I won’t use Flow until it’s a more mature technology” by advice would, give each a chance and use the right one, when you get the right requirement.
Ciao for now!