Update N Records in Flow Without a Loop

Thanks Alex Edelstein and Narender Singh for building exciting Invokable Apex Actions that extend the use of Flow for admins!

USE CASE: The Ugly Dog Adoption Agency wants to find the 30 dogs who have been at the shelter the longest (minimum 60 days). A Flow will change the picklist “Old Timer” to “Yes” and the staff will then run a promotion for these special doggies. (Don’t worry, Jo Jo Pumpkins! You’ll be on the local news!)jo jo pumpkins

dogflowN

Why This is Awesome

  • This is the first time that we can tell Flow to return a specific number of records without doing a ridiculous loop and counting thing.
  • We can update fields on all the records in our collection without doing a loop! It’s one simple action.
  • These Invocable Apex Actions are delivered by a Salesforce staffer and a community member. They aren’t fully baked solutions, but are great examples of how we can all work together to do awesome shit.

Step by Step

[Side note: That New Kids Song came out 30 years ago!]

  1. Install this unmanaged package from UnofficialSF.com (Alex E)
  2. Create an Apex Class with code from ForcePanda (Narender S)
  3. Create a new Flow.
  4. Drag an Action over from Elements. Find “Get N Records with WHERE Clause Filter.” That’s the class you just made.
  5. Here’s how I filled this out for my custom object Animal__c and custom fields. I had to use my phone-a-friend to figure out the SOQL where clause for “the dog was found earlier than 60 days ago.” (Thanks Andy Szymas!) I was glad to find the WHERE clause also takes “ORDER BY” which allowed me to order the records by oldest (date found, ascending). So this bit requires a little bit of SOQL skill. To learn, start here and find the SOQL trails on Trailhead.animal Nrecords
  6. I drag the next Action onto the canvas which is MapCollection from UnofficialSF. You can read all about that on this blog post. Here’s how I filled it out in this case. My input collection was created by the previous Action. In KeyValuePairs I’m saying select “Yes” in my field called “Old Timer Picklist” – this is how we indicate this dog has been around for a long time and deserves some extra support. oldTimers
  7. The last bit is very important! Update the records in the collection created in the SECOND action.  (Yeah I spent about 30 minutes trying to update the wrong collection). EditUpdate

THAT’S IT!

//Here's the action "Get N Records with WHERE Clause Filter" written in SOQL.
//This is not relevant to you, but I am learning how to write SOQL.
SELECT Old_Timer_Picklist__c,Date_Found__c FROM Animal__c WHERE Animal_Type__c = 'Dog' 
AND Date_Found__c < Last_N_Days: 60 
ORDER BY Date_Found__c ASC LIMIT 30

 

Published by

JessieRymph

Jessie joined Salesforce.org in 2018 to give introductory webinars to nonprofit customers. She now is a Senior Solution Developer supporting nonprofits and education customers at Salesforce. All opinions expressed on this blog are her own or those of the contributors. She's spent 17 years more or less in CRMs and databases, but didn't meet Salesforce until 2011. Jessie co-led the Seattle Salesforce Nonprofit User Group in 2015-2016. She wrote a sh*tty first draft of a novel and hopes to turn it into a screenplay!

7 thoughts on “Update N Records in Flow Without a Loop”

  1. Very cool. Will this still work without the “Number of records to query” limit? Looking at this as a potential work-around for Flow runtime execution limits (2k).

    Thanks!

  2. Is there a performance benefit from using this method as opposed to the Loop method previously available with Flows? Curious as to the comparison of the 2 methods and what would make 1 better than the other for different use cases.

Leave a Reply to Brandon PittsCancel reply