<iframe src="https://www.googletagmanager.com/ns.html?id=GTM-M74D8PB" height="0" width="0" style="display:none;visibility:hidden">
Loading
Skip to NavigationSkip to Main Content
0D54z00007hWPNJCA4Okta Identity EngineWorkflowsAnswered2023-09-05T15:29:17.000Z2022-06-02T17:25:53.000Z2022-06-03T17:07:38.000Z

NicD.35192 (Customer) asked a question.

Rate limiting the processing of results returned through a stream

Hi folks,

 

I am just starting on my workflow journey so am stumbling over some fundamentals I am sure. I was hoping to get some direction from the seasoned veterans out there.

 

I have been using built in Okta App Actions to get information from Okta. e.g. list out all users.

I want to take that information, iterate through it, and perform some kind of logic. e.g. look up if the user has okta verify enrolled and if so, add them to a group.

 

My understanding (be it right or wrong) is that the size of the output from the initial App Action requires the results to be returned in a stream. The stream will fire off a helper flow for each result. It does this very quickly, launching so many helper flows that the helper flow actions then exceed API rate limiting for my org.

 

My question is, is there someway to slow down the execution of the child flow actions? Like maybe a rate limiting option for how many child flows will get launched a minute? I have seen a concurrency option for some other items that launch helper flows and presumably you could tweak that through trial and error to get an equivalent rate limit, but there doesn't seem to be such an option on the Okta App Action Cards.

 

Any help would be greatly appreciated.


  • TimL.58332 (Workflows)

    If you are "pure play" Okta cards on your API calls from my understanding the cards have some built-in logic to back off when API limits are hit. This however doesn't change the fact that other actions outside of the flow would still be directly impacted by the rate limits.

     

    This concern has been brought up to engineering. And your specific request "Like maybe a rate limiting option for how many child flows will get launched a minute?" is exactly the same as my ask. Essentially we already have a "Total records streamed" and a "Records streamed per minute" option would give complete control over processing throughput. If this as isn't already on https://ideas.okta.com I would suggest submitting it (This is designed to allow customers to submit feature requests).

     

    Besides the rate limits there are also other concerns. Which are "Flow Limits"

     

    See: https://help.okta.com/wf/en-us/Content/Topics/Workflows/workflows-system-limits.htm

     

    A single execution (This is cumulative up to the parent execution) cannot exceed 2 million total steps. So in a scenario where you get a list, for each the list and each instance gets a list, then for each that list the amount of steps grow exponentially.

     

    Currently, the workaround is to essentially build out queues and run it on a schedule. So if you created a group in Okta (userQueue) and added all of your users to the group. You could then setup a flow on a 5 minute schedule with streaming limited to a specific total amount of records (lets say 500). Every 5 minutes the flow would stream 500 users, process them, then as part of your flow you remove them from that group once all actions taken are complete.

     

    The schedule card starting a flow is a unique parent execution. This allows you to control the total processed users to handle API rate limits and also allows you control workflow limits.

    Expand Post
This question is closed.
Loading
Rate limiting the processing of results returned through a stream