Following on from the post on Canvas Apps Sizing & Performance, a question was raised about Flows and whether there are capacity limitations and recommendations relating to Power Automate flow limits
Maximum Flow Size
Because Power Automate Flows run in the Cloud rather than on a client device, they aren’t subject to the same performance and sizing constraints as canvas apps
However, there is a hard limit of a maximum of 500 actions for a flow. Large and complex flows can be cumbersome and difficult to debug, well before the 500 action limit is reached. It’s much tidier to split large flows into smaller child flows and trigger one from another
Use Child Flows
Each child flow can be created to achieve one specific purpose. A well-structured system of flows will enable child flows to behave like a function which can be called when needed. This means that several flows can call the same child flow. Read more about Child Flows
Take the example of sending an email. The flow that sends the email can be created independently and it can receive parameters such as the recipient’s email address, the message title and the content
Other flows can then pass those parameters to the child email flow to trigger the sending of an email. That’s a great way to send an email using a single flow and avoid duplicating the same code multiple times
Files and variables can be passed to child flows so there’s no good reason not to use them. Here is a recent post on how to Pass a JSON Array to a Child Flow
Bear mind that for a parent flow to call a child flow both must be in the same soluton
Action Limits
Action limits can compromise a flows execution. For example, the ‘Send an email Notification V3’ has a limit of 100 emails in a day. If that is exceeded, the flow will fail and emails will be queued to be sent when the number of emails sent falls back below the threshold
If a flow remains above an action limit for 14 consecutive days, it will be automatically turned off. For high-volume flows, check the Microsoft docs to understand the limits and make sure your flow will remain below the threshold and stay operational
Connector Limits
Most connectors have limits on the number of times an API is accessed via a connector. This is to make sure the service that the connector connects to isn’t overwhelmed with requests. For example, the SAP connector has a maximum of 2500 calls within a 60 second period
The call limit will be lower for non-enterprise grade services, so for high-volume flows, check the connector limits for all connectors to check the flow won’t exceed them. Limits apply to standard, premium and custom connectors
Licensing Limits
All flow users are subject to licensing restrictions. This includes the limitations on the number of flows that can be created but more importantly on the total number of calls that can be made within a 24 hour period
Microsoft licensing is a complex and frequently changing subject, so I won’t go into it here. The advice is simple, for expected high-volume flows, double check that the usage will be within the limits of the users licenses
Timeouts
A flow’s run duration is calculated from its start time and includes flows with pending steps such as approvals. After 30 days, any pending steps are timed out and will not execute. Work arounds can be implemented such as to have 2 flows, one to send the approval and the other to run on the response to the approval request
Summary
Most flows will run well below the maximum limits. However for high-volume flows, action, connector and licensing limits may affect a flows performance so it’s worth checking
Areas to pay particular attention to are those that may be open to abuse. For example, action limits to avoid the sending spamming emails. A limit of sending 100 emails a day using the ‘Send an email Notification V3’ action may inadvertently compromise your legitimate flow
In terms of connectors, enterprise grade platforms will tend to have higher API call limit so are usually OK, but if a flow makes frequent calls to smaller services, then check the connector documentation
- Hiredgun.tech: Child Flows
- Hiredgun.tech: Pass a JSON Array to a Child Flow
- Power Apps Reference: Resuest Limits & Allocations