Session Videos from Dreamforce

Here’s a list of all of the Flow sessions and their video links and slides(where available). Sorry about the formatting.

Credit: Sam Reynard and Dary Hsu

Session NameRecording (only available for breakouts)SlidesSpeaker(s)TrackFormat
The Future of Automation on the Customer 360 Platform Kucera, VP Product Management, SalesforcePlatformBreakout
10 Game Changing Flow Solutions And Templates To Level Up Your Org Reynard, Product Manager, Salesforce; Sharon Klardie, Salesforce Labs Evangelist, SalesforceAdminBreakout
Agility and Innovation: The Business Case for Automation and FlowMissing video due to audio issues Teller, Sr. Director, Product Management, Salesforce; Adam Dalton, Applicaiton Product Manager, Facebook; Kristy Wong, Business Value Services Director, SalesforcePlatformBreakout
Advanced Flow for Admins: Become A Salesforce Developer Using Clicks not uploadedAlex Edelstein, Sr. Director, Product Management, SalesforceAdminBreakout
An Admin’s API Integration: External Services and Flows Assayag, Founder, CRM Science; Kirk Steffke, VP, Technology, CRM ScienceAdminBreakout
Automate & Personalize with Lightning Flow in CommunitiesMissing video Weinmeister, VP, Product Management, 7Summits; Jarrod Kingston, Director of Solution Engineering, 7Summits; David Litton, Director, Solutions Architecture, Ad Victoriam SolutionsAdminBreakout
10 Ways to Get Creative with Lightning ComponentsMissing video Smith, Director of Software Development and Engineering, GWIAdminBreakout
Put Predictions into Action: Einstein Prediction Builder and Next Best Action not uploadedSara Asher, Director, Product Management, Salesforce; Alex Edelstein, Sr. Director, Product Managemenet, Salesforce; Tejas Sanghavi, Director, Product Management, SalesforceEinsteinBreakout
Strike Lightning with Lightning Flows to Automate your Business Processes not uploadedStephen Spencer, Sr. Solution Architect, LevAdminBreakout
Build Your First Flow With Our Top 5 Tips not uploadedKristi Brown, Architect, Altium; Tracie Hart, Salesforce Administrator, AltiumAdminBreakout
Deliver Repeatable ISV Solutions With Flow Templates not uploadedLizz Brooks, ISV Technical Evangelist, Salesforce; Danny Chang, ISV Technical Evangelist, SalesforcePartner CommunityBreakout
Prebuilt Business Processes with Flow Templates Teller, Sr. Director, Product Management, Salesforce; Phil Weinmeister, VP, Product Management, 7SummitsPlatformBreakout
Developing Modern Enterprise Apps with Flow and Next Best Action not uploadedAlex Edelstein, Sr. Director, Product Management, SalesforceDeveloperBreakout
Custom Notifications with Flow Builder: An Alternative to Email Alerts Marks, Founder, Cloud Think ConsultingAdminTheater
Use a Lightning Web Component in Flow Kolagani, Member of Technical Staff, Salesforce; Charleen Shakman, IT Business Relationship Manager, Johnson ControlsAdminTheater
Create Integrated Flows with External ServicesSlides not uploadedXintong Zhang, Product Manager, Salesforce; Belinda Wong, Director, Product Management, Salesforce; Jennifer Jin, Software Engineering MTS, SsalesforceDeveloperTheater
Flow and Apex Showdown! Peng, Product Manager, Salesforce; Chris Peterson, Product Manager, SalesforceDeveloperTheater
Build Seamless Interactions with Lightning Flow Hsu, Product Marketing Manager, SalesforcePlatformTheater
Increase Productivity with Screen Flows Hale, Sr. Director, Product Management, SalesforceAdminTheater
Flexing Admin Muscles – Tricks with Lightning, Flow, & Working with Developers Englhard, CEO, Englhard ConsultingPlatformTheater
Lightning Flow: The Best Feature You’re Not UsingSlides not uploadedChris Emmett, Pre-Sales Consultant, MakepositivePlatformTheater
Flow Basics for Nonprofit Admins not uploadedJessie Rymph, Success Content Specialist, SalesforceSalesforce.orgTheater
AppExchange Flow Solutions Made Easy: Conquer Your Fear of Flow Reynard, Product Manager, SalesforceAppExchangeTheater
Share Records using Lightning Flow Anderson, Salesforce Project Manager, The Nature ConservancyAdminTheater
Building an Intuitive User Experience with Context-Aware Lightning Flow Damle, Salesforce Technical Architect, Fannie Mae; Saheb Samanta, Salesforce Architect, Fannie MaeDeveloperTheater
Unleashing the Power of Apex, LWC, and Flow in Lightning ExperienceSlides not uploadedParth, Sevak, Solution Architect, Slalom ConsultingPlatformTheater
Use External Services in Flow Because APIs are not just for Developers Stevenson, Salesforce Manager, PartnerizeAdminTheater
Designing High Performance Flows Lipke, Principal Member of Technical Staff, SalesforceArchitectTheater
Supercharge Processes and Flows with Invocable Apex Bohrisch, Salesforce Leader, MST Solutions; Pat McClellan, Chief Lightning Officer, Proton 7 GroupDeveloperTheater

Creating a unique collection in flow by GORAV SETH

GORAV SETH shared a quick tip on his blog about a way to create a unique collection in flow

The RecordDetail Component

The RecordDetail component provides new ways to display record fields in Flow screens. Flow excels in providing fine control over field combinations, but sometimes you just want to show a bunch of fields from a record in one place without a lot of configuration. This component handles all the formatting, provides 2 column layout, and takes advantage of additional goodies in the underlying recordForm.

If you don’t provide a specific set of fields, this component will show the entire record:

But you can pass in a specific list of field names:

…and you’ll get just the fields you asked for:

If you set the mode ‘edit’, you can make changes inline and save them immediately with a save button. Note that unlike everything else in Flow, changes you make inside of this component do not get output for use downstream in the flow. In other words, this component will not output a full record. So if you want to use the data that has just been entered and saved, go a Get Records to retrieve it.


recordIdYou must pass a valid recordId into this component.
modecan be “view” or “edit”
fieldsa comma-separated list of field names from the recordId’s object type


Version 1

View Source


This component uses the recordEditForm and recordViewForm base components and is constrained by their limitations. It doesn’t support all Salesforce standard objects. For example, the Event and Task objects are not supported. This limitation also applies to a record that references a field that belongs to an unsupported object. The list of supported objects is here.

This component responds to your Display Density settings (“Comfy”, “Compact”, etc…).

For behavior like Required and Validation, think of this component as ‘listening’ to the object and field manager in Setup instead of to Flow Builder. I.e. if the field is required in Setup it will be required in this component. If there’s a validation rule on the field in Setup, it will run on save here.

See more Flow Screen Components

How to Include Chatter Posts on Printable Views

This image has an empty alt attribute; its file name is chatter-logo1.png

In Spring ’19 Salesforce added a Printable View button to many Standard and all Custom Objects. The Printable View includes the current user’s page layout and related lists. What it does not include are any Posts that users have added to the Chatter Feed.

In this Blog Post, I’ll show you how to add a button to your Lightning Record Page that will create your Printable View including Chatter Posts.

This post covers how to add this capability to the Case object. You can apply all of these same steps to support this feature in other objects of your choice.

The first step is to add a custom field to Case to store the details from the Chatter Posts.

Here I create a Rich Text field called Case Chatter Feed with a default length of 32,768 characters.

The next step is to update my Page Layout to include this new field. In this example, I have also added a new Section to put it in.

Now, when I want to create a new Printable View of my record, I must first populate this field with the current content of the record’s Chatter Feed. I can handle this step by running a Flow. The only attribute I need to pass into this Flow is the record ID (varCaseId) from the Case page.

In this body of this Flow I get all of the user created Chatter Posts and Comments and insert them into my new custom field. Later in this post I will show you how the first and last steps in this Flow tie everything together.

In the first Get Records step, I get all Feed Item records related to the Case and specify the fields I will be using later in the Flow.

I then Loop through each of those Feed Items by referencing the collection variable {!Get_Feed_Item_Records} that was automatically created by the Get Records step. Here I also create a new single Record variable {!loopFeedItem} to store each record inside of the loop.

In the Decision step, I skip any Feed Items records with a blank body. This way I’m only processing user created posts. You can modify this logic if you want to include more details.

Because the Feed Item records only include the user’s ID, I use a Get Records step to get the user’s name to include in my Chatter Feed field.

In the Assignment step, I build out each of the Feed Item fields I want to show as part of the Post as well as the formatting of the information. This is done by using the Add operator to build out the full feed one piece at a time.

We end up turning this from the Chatter Feed:

Into this in our custom field:

I’ve used a combination of Formula resources and Text Template resources to build out each post.

  • ttLineSeparator (Text Template)
    • ~
  • fSpaceSeparator (Text Formula)
    • ” | “

For each Feed Item I do another Get Records to find any Feed Comments associated with the current Feed Item.

I then Loop through each of those Feed Comments by referencing the collection variable {!Get_Feed_Comment_Records} that was automatically created by the previous Get Records step. Here I also create a new single Record variable {!loopFeedComment} to store each record inside of the loop.

Just like I did with Feed Items, I skip any Feed Comments with a blank body in the Decision step.

Because the Feed Comment records only include the user’s ID, I use a Get Records step to get the user’s name to include in my Chatter Feed field.

I continue to build out my chatter posts field by adding Feed Comments and formatting in the Assignment step.

Here I’ve used some additional formatting variables.

  • ttCommentSeperator (Text Template)
    • .
  • fCommentIndent (Text Formula)
    • ” —– “

After the Feed Comment Loop is completed, I add one more Assignment step to add a separator before the next Feed Item.

  • ttItemSeparator (Text Template)
    • ______________________________________________________________________________________________

After the outer Feed Item Loop is finally completed, I add one more Assignment step to cleanup the separations between the lines.

This is a little trick you can use to put line separators (Carriage Return, Line Feed) inside of a text field. Text Templates support separate lines but they can’t contain just a single separator so my ttLineSeparator Text Template includes a single special character on each line that get removed by my fFixCRLF Formula.

  • ttLineSeparator (Text Template)
    • ~
  • fFixCRLF (Text Formula)
    • SUBSTITUTE({!varBodyText},”~”,””)

The last piece needed to get my Chatter Posts into the Case record so they can be displayed is to add an Update Records step to save the record with the newly built Chatter Feed details.

Now I will show you how to add a couple more pieces to this Flow so we can use it on a Lightning Record Page and have it open a new Tab with the Printable View.

I want to put this Flow on the Case Lightning Record Page but I don’t want it to run until selected by the user. I handle this by adding a Screen to the beginning of the Flow that displays a custom image and waits until the user clicks on it before continuing with the rest of the Flow. Here I’m using the Image Button Flow Screen Component from I’ve added the display, hover and pressed images for the button as Static Resources to my org so they can be referenced by the Image Button component. (Follow the Image Button link for complete documentation on this component)

Select the display image and the action to take when clicked
Select the images to display during mouse hover and mouse press
Select the size of the image

The final step in my Flow is an Action that opens a new Tab with the URL for the Printable View of the Case record. Here I’m using another component from This one is the Open URL Flow Action. (Follow the Open URL link for complete documentation on this component)

The URL for the Printable View is created with a formula that combines the Base URL for the running org with the Case Record Id and the Printable View URL identifier.

  • fPrintableViewURL (Text Formula)
    • LEFT({!$Api.Partner_Server_URL_340}, FIND(‘/services’, {!$Api.Partner_Server_URL_340})) & {!varCaseId} & “/p”

All I need to do now is to activate then add this Flow to the Case Lightning Record Page and configure it to pass in the recordId to my varCaseId input variable.

I’ve created a couple of Installation Packages for those who want to try this out in their orgs. The first package includes both the Image Button and Open URL components. That package will only install in your org if you have neither of those components already installed. The second package does not include those components and the provided Flow must be edited to access them. I’ve provided instructions in the Flow showing how to do that.

1 – Install Package with Custom Case Field, Components, Image Static Resources and Sample Flow


Post Package Install Instructions

  • Add the new field ( Case Chatter Feed ) to the Case Page Layout
  • Activate the Flow ( Case – Printable View with Chatter Posts )
  • Add the Flow to the Case Lightning Record Page

2 – Install Package with Custom Case Field, Image Static Resources and Sample Flow (No Components)


Post Package Install Instructions

  • Make sure you have the current version installed for the Image Button component
  • Make sure you have the current version installed for the Open URL component
  • Add the new field ( Case Chatter Feed ) to the Case Page Layout
  • Edit the Flow ( Case – Printable View with Chatter Posts – Template )
    • See the instructions in the 2 Flow Screen elements
  • Activate the Flow
  • Add the Flow to the Case Lightning Record Page

Using SFDX to Easily Create Packages

My packaging pipeline has really improved in the last few months, thanks to sfdx and packaging commands that are now available. I thought I’d put together a video showing how to take a Flow/NBA app (or really any Salesforce app) and easily package with the most effective tools.

Enhance your Flows with Data Tables – Part 4 (Inline Editing)

Lightning Flow Screen Components are a great way to add power to and improve the look of your Flows.  In this four-part series, I’ll show you how a single component, designed to display a list or table, can enhance your Flows.

The website includes datatableFSC as one of many Flow Screen Components you can use for your own organization.

This component is derived from the datatable Lightning Base Component.  I recently enhanced the base component to be more powerful and Admin friendly.

I will be showing you some examples about how the Datatable component:

  • Can be used in place of a Record Choice Set (Dynamic Record Choice) for selecting a record while displaying more than a single field
  • Can be used to select multiple records from an object then perform additional actions on them
  • Can be used to present your data in an interactive and visually enhanced format
  • Can be used to display and inline edit a collection of records

Part 4: Inline Editing

In November of 2019, Kirill Boyarkin, updated this component to support inline editing. Now you can specify individual columns as editable and the changed values will be passed back to your Flow so you can update the object records.

In this example, I created a simple Flow to present a list of Account records with the Annual Revenue column set to editable.

The Get Records node populates an SObject Collection variable with the records and fields I want to display in my datatable.

I pass that collection into the datatableFSC component on my Flow Screen, define the columns I want to display and set the Revenue column to be editable.

This component has a lot of attributes, so make sure you assign any output attributes in the Output Values section. For my output attributes, I select “Manually assign variables (advanced)” and assign my new SObject collection variable to the same Collection – Accounts attribute I used to pass in my records.

NOTE: The output attribute for selected records (Output Selected Accounts) is only used for identifying selected records in the datatable and may not contain the updated values. When you are combining editing and selecting in a single table, use the “Output Selected Accounts” attribute to get the list of selected records and their IDs and use the “Collection – Accounts” attribute to access the edited records.

The final Update Records node in my Flow is to update the Account object with my collection of edited records.

If you Show the checkbox column with your datatable, you will be able to select multiple rows and optionally apply an edit to all of the selected rows.

By default, the component will display Cancel and Save buttons once you start making edits. You can bypass this option by setting the “Show Save and Cancel Buttons?” attribute to False. Any edits will then be automatically saved once you hit the Next button.

Note: If there are a large number of records in the datatable, the Next button will always display at the bottom of the screen, but the user will have to scroll to the end of the table to see the Cancel and Save buttons.

See the complete series on how you can use the datatable Flow Screen Component in your Lightning Flows.

Part 1 – Use a Datatable to present a dynamic choice for record selection in a Flow.
Part 2 – Use a Datatable in a Flow to select and act on a collection of records.
Part 3 – Use a Datatable to display a formatted, interactive table in your Flow.
Part 4 – Use a Datatable to inline edit a group of records.

Dreamforce Slides – 10 Ways to Get Creative with Lightning Components

These are the slides and embedded animations I presented at Dreamforce ’19. There was no video recording but an audio recording may be published by Salesforce in the next few months.

The session synopis was: The focus of this presentation is to encourage and excite creativity in how you can improve the user experience in your Salesforce orgs. I will demonstrate how 10 different Lightning Components can be used to do some very interesting things in both Lightning Record pages and screen-based Flows. I have either created or enhanced most of these components and they are all available, with source code, for free online. They range from simple to complex, but all of them can be used in ways you may not have thought of before to bring out the best in your users’ experiences. The components are designed to be generic. No coding is required, and all can be customized and configured with built-in parameters.


Slide 9 – Horizontal Rule

Slide 10 – Horizontal Rule

Slide 12 Animation – Large Text Area

Slide 14 Animation – Toggle Field Button

Slide 15 Animation – Toggle Field Button

Slide 16 Animation – Toggle Field Button

Slide 18 Animation – Visual Picklists

Slide 19 Animation – Visual Picklists

Slide 21 Animation – Redirect Flow to New Record

Slide 23 Animation – Dependent Picklist

Slide 28 Animation – Datatable

Slide 32 Animation – Navigation Button

Slide 33 Animation – Navigation Button

Slide 35 Animation – Lookup

Slide 38 Animation – Image Button

Slide 39 Animation – Image Button

Dreamforce Slides – Enterprise Application Development With Flow and Next Best Action

These are the slides I presented for this developer track session. Here’s the video.

The session synosis was: As a developer, you can leverage Flow and Next Best Action to multiply the impact of your code. Learn how you can turn your work into declarative building blocks, and how you can delegate management and configuration not just to your organization’s admins, but out into the business units themselves. See state-of-the-art sample apps featuring invocable actions, and get a preview of developer-oriented automation tools coming in 2020.


Did you present at Dreamforce? If so, you’re encouraged to create a post like this, which you can link back to your own site/blog/company. If you need an account on this site to blog, contact a site admin or use the feedback form on the home page.

Dreamforce Slides – Advanced Flow for Admins

These slides are from Alex Edelstein’s flow session for admins. A recording will be published officially by Salesforce in the next 1-2 months.

The presentation synopsis was: Ready to drink from the firehose? We’ll cover multi-flow application development, scalable “decision tree” patterns that enable non-Admin management of flows, lightning web component use in Flow screens, batch-mode scheduled flows, dynamic screens with conditional field visibility, dynamic flow launchers that let users pick which flow to run next, rich email sending, embedded decisioning automation, powerful integration with Web API’s and rich JSON web data, and look at some sneak previews of 2020 Flowtech. Warning: Alex talks fast.


How to make a field POP on the page

Sometimes you just want to make a certain field stand out on your page layout.

The standard detail section for a Record Page shows all fields the same way.

Quick – Where’s the Case Number?

I wanted to be able to see, at a quick glance, what the Case # was on my internal Software Development Case record page. How could I make it stand out better while keeping it a part of the standard detail section?

Is this better?

WOW, how did I make that happen?

With a new custom field and a simple update to my Case Process Builder I’m able to display a formatted version of the Case #.

Start with a new Rich Text Area field. I gave mine the same “Case Number” label as the standard field (be sure to make the field API name unique) and the minimum values of 256 characters and 10 lines visible.

To update the value in the new Case Number field, I added a node to my Case Process Builder. (Best practice is to always have a single Process Builder per object)

Any time a new Case record is created, I update the Rich Text field to contain the Case Number along with the HTML tags to display it with a size 22pt bold font. (You can modify these tags to format the field any way you wish)

“<p><b style=\”font-size: 22px;\”>” & [Case].CaseNumber & “</b></p>”

Criteria Node

Immediate Action

The final step is to replace the standard Case Number field on your Page Layout with the new Rich Text Case Number field.

Since this new feature only updates the field for new Case records, I created a simple Flow to run once to set the field value for all existing records.

The Flow is designed to update a single record based on the $Record Id that gets passed to it. By configuring the Start node as a 1-time scheduled Flow, it can select and pass all existing records one at a time through the Flow. (I have multiple Case Record Types in my org so I’m only selecting the one I want to use this feature on)

The Get Records node reads the Case record with the $Record.Id passed in by the scheduler.

I created a Variable with the formatting I wanted for my Rich Text value.

I also created a Formula to insert the record’s Case Number value into my HTML styling.

The Assignment node updates the custom Rich Text field in the Case record.

Finally, the Update Records node saves the changed record.

Now, just save and activate your Flow and wait until the scheduled time for it to do its updating.

If you want to get even more creative in how you implement this feature, you could even update your Process Builder to fire on certain field changes and do things like:

  • Set the color based on whether or not the Case is open or closed
  • Add a unique icon if the Contact is an internal user vs an external customer
  • Change the font size based on the Case priority
  • … you get the idea, be creative