Summer ’20 Flow Preview

I’m very pleased to again be able to share upcoming new Flow functionality! Preview Orgs can be obtained to try out this functionality.

Complete Flow Trigger Support

We’ve been adding triggers to Flow for the last couple of releases, and Summer ’20 finishes the job by adding support to trigger Flows on both traditional Process Builder-style record change events and platform events. We’ve had to do another evolution of the New Flow window because there are now so many ways to start Flows:

For Record Change events, you’ll be asked to choose whether you want to use the standard triggers that kick in immediately after a record change gets saved (also known as “After Save” triggers), or use the trigger introduced in Spring ’20 that fires immediately before the record saves:

The set of things you can do with a “Before the record is saved” triggered Flow is limited, but it does an extremely fast job performing one of the most common reasons processes are triggered: update a field before it gets saved with some additional information. For that use case, Before Save triggered flows are 10x faster than Process Builder. If you need to do things with related records, though, you’ll need to either use After Save triggered flows or stick to Process Builder. (We’re tracking the handful of features that are present in PB and not yet in FB, and intend to bring them all over to FB)

Flow Debugger Enhancements

This release, the debugging environment gets three useful enhancements:

  • You can now debug your scheduled flows. When you do this, Flow runs against the oldest record that matches the filter criteria.
  • If your flow uses input variables that expect records, you can select a specific record to set them to while running in debug
  • While debugging flows of type Autolaunched, you can enable ‘rollback mode’, which prevents changes from being permanently committed to your data
Record Selection
Rollback Mode

Multilevel Flow Permission Elevation

Permission elevation allows you to give a Flow a consistent level of access that makes it independent of the people running the Flow. That lets you create flows that can be used by relatively low authorization users (like Guest Users) that still do useful CRUD operations on key record types like Case and make use of Apex invocable actions.

Over the last couple of releases, Flow has been adding granularity to its permissioning. In Summer ’20, it becomes possible to anoint a flow with the ability to run in “System Context Without Sharing”. As you can see from the choices below, “System Context Without Sharing” is essentially full access to all data, whereas System Context with Sharing  bypasses object- and field-level security settings, but still respect org-wide default settings, role hierarchies, sharing rules, manual sharing, teams, and territories.

Flow Analytics: Screen Time Duration & Record Count

You can access a pre-built report that shows analytics about your screen flows. Access this report from Report Tab > Public Folder > “Sample Flow Report: Screen Flow”. You can see how many flows are currently running as well as how many have been completed in a specified period of time.

Preview(opens in a new tab)

You can inspect the individual transitions of single flow executions:

You can compare across screen flows and see how many instances (interviews) are currently running:

Automatic Input Retrieval

When you pass a recordId into a Flow from App Builder or a Quick Action, Flow now automatically converts it to a record (this is also known as ‘hydration’).

  • With Quick Actions, you still need to name your the input variable recordId, but you can make its type a Record type like Account or Contact, as opposed to the old Text option. You do not need to do Get Records to retrieve the record.
  • In Lightning App Builder, you will now be able to choose Pass record into this variable. for input variables of type record.

Automatic Output Handling Extended to Cover Subflows and Loops

The last substantial elements that required the use of manual variables have been enhanced to automatically generate output references for use downstream in the flow. In addition, see New Next Behavior to see a small but subtle change to Next behavior that was limiting the usability of Automatic Output handling. Automatic Output Handling is now on by default for all new elements.

For Loop element, the effect of this is to eliminate the need to create a “Loop Variable” in all new Loop elements:

Flow Guardrails

Guardrails are pop-up alerts that warn you about detected issues you might want to address. 

Initial guardrails detect:

  1. Unclosed loops
  2. Database (DML) operations inside of loops

Changed Next Behavior for Screens with Lightning Screen Components

When returning to a screen via the Next transition, Flow will automatically recalculate the inputs of any lightning components on the screen to reflect any changes you made upstream in the Flow.

Previously, if an attribute of a Lightning screen component had both the input and output set in Flow Builder, then on a Next transition, it would reuse the most recently output value from the component and would not recalculate the inputs.

Basically, what this change does is ensure that EVERY time you visit a screen via a Next button, it freshly applies the latest input and EVERY time you visit a screen via a Previous button, the last value you had in the field is restored to it.

Pass Apex-Defined Variables into & out of Flows

The Apex-defined data type affords you a flexible way to represent complex data that isn’t well-modeled by the sObjects in your organization.  Customers often use the Apex-defined data type to represent external web objects, so that they can integrate with external web services either entirely declaratively through Flow and External Services, or with a mixed code & clicks pattern through Flow and invocable Apex.

Now, like with most other Flow-supported data types, you can pass values or variables of the Apex-defined data type into & out of flows and subflows.

Miscellaneous Improvements

  • Revised Help menu provides more contextual, useful help, as well as Guardrails settings
  • Property Editor headers automatically hide unused field to save real estate
  • Field traversal in merge fields and combo boxers now goes multiple levels for Apex-defined data.

Flow Development Enhancements

Custom Property Editors in Beta for both Invocable Actions and Flow Screen Components.

The Send Rich Email sample action from the pilot will be published shortly as an example of how to add graphical user interfaces to your actions:

This easy-to-use Update Field action (to be published shortly), when coupled with the new Record Change triggers, provides for the first time a high quality Flow replacement for Workflow Rules:

Joining the actions, the beta also includes Custom Property Editors for Flow Screen Components. Here’s a preview of the new interface for Quick Choice:

To learn how to build Custom Property Editors, see https://salesforce.quip.com/O6ukAMGhIIdM

Dynamic SObject Support for Flow Screen Components

This allows the creation of screen components that can be passed any kind of records. Eric Smith has already put this to work with Datatable, and the Flowhana now has, for the first time and after years of waiting and effort, a List View component that can be dropped into any Flow to work with any collection of records.

To learn how to build screen components that support dynamic sObjects, go here.

Have questions? Since these are official features, we suggest you post questions to the Automation Trailblazer community.

Finally, for those of you waiting for Sections and Columns and Canvas Autolayout, they didn’t make it into Summer but we are in great shape for the Winter ’21 release.

0 0 vote
Article Rating
Subscribe
Notify of
guest
15 Comments
Inline Feedbacks
View all comments
Paul Carass
Paul Carass
1 month ago

Fantastic set of improvements Alex. Well done to you and the team there. Absolutely on fire with Floe for the last 18 months!!!

Eric Smith
Editor
1 month ago

I love the new Record Selection option for the debugger. That’s going to be a great time-saver.

Dan
Dan
1 month ago

This is awesome! Record-changed flows are going to be huge. Out of curiosity is this the start of replacing process builder functionality with flow? Will there be the ability to use a mechanism similar to IsChanged within the record changed flows?

Jim Minichiello
1 month ago

“Since these are official features, we suggest you post questions to the Automation Trailblazer community.”

Does this mean that Quick Choice is about to be a native, standard Salesforce feature in Summer ’20 as opposed to an unmanaged package download?

Jim Minichiello
27 days ago
Reply to  Alex Edelstein

Thank you for the clarification, Alex. I will take a look at the Custom Property editor, as it looks very user-friendly.

Mark Bruso
26 days ago
Reply to  Alex Edelstein

Alex, can you elaborate on Autolayout Canvas and Sections and Columns? In the Flow Builder, we need the ability to better align our elements (e.g. snap to grid, move connectors independent of the location of the element, etc.). Or are you referring to something else?

Jeroen
1 month ago

So much to digest! Just wow. My favorites if I’d too choose are ‘Back’ behavior and Generic (or Dynamic) sObjects for LWC.

Gidi Abramovich
Gidi Abramovich
1 month ago

Wow, so many things!!!
Thank you very much, Alex, for sharing with us.

Gidi

Clifford
Clifford
1 month ago

One question and one bug:

1. I don’t really get how bulkification works with the after and before save flow? Do I still need to use triggers?

2. I recently noticed, that an apex action output in the form of a Text Collection cannot be used as a subflows input, even tough the subflow expects a text collection. I used Automatic Output Handling.

Chris Phillips
Chris Phillips
1 month ago

Alex this is fantastic. Really love the commitment that Salesforce has shown to expanding flows. You and your team have been in rare form the last few releases. Is adding advanced conditions to record gets on the roadmap any time soon? I’ve had a handful of times where I’ve had to split out a query into numerous record gets, decisions to check if records were found, and then assignments to add found records to the collection simply because I couldn’t do OR logic in the record gets. EDIT: It looks like y’all have already done that through unofficial SF. I… Read more »

Sean Ong
Sean Ong
27 days ago

Hi, I’ve followed the guide provided by SF on the best practices for “Guest User Record Access”, and have spent some time getting it to work: https://www.learncommunitycloud.com/s/news/guest-user-record-access-development-best-practices-20Y1U000000UkITUA0 However, from this Unofficial Preview, Flows in Summer ’20 is going to come with the ability to run with “System Context Without Sharing”. This will render the Invocable Apex solution in the best practices guide unnecessary, and we can go back to using the Flow declarative tools. I understand this is an unofficial site but a quick google of the author of the article tells me that he is a Product Manager at… Read more »

Heather
Heather
26 days ago

How do the Send Rich Email compare to your Send Rich Email component? Specifically, use of Lightning template, attachments, signature, sender. Thank you.