One week ago, or so, Winter officially started here in the northern hemisphere and Summer started for our southern hemisphere friends. Around the same time, Salesforce released its Salesforce Spring 21 Release Notes detailing the upcoming features in its next release, which will be rolled out to everyone by February.
This will be the most exciting release for me in a few years at least! Salesforce Functions is Beta now, Scheduled Flows via Batch Management that can handle large data volumes up to millions of records, Decision Tables and much better Flow troubleshooting are the ones I’m most excited about! How about you?
Check out my review of the features below.
Power Up Recently Viewed Lists with Customizable Actions
Want to add custom actions to your Recently Viewed lists? With customizable actions, now you can. Recently Viewed lists now show
Spring 21 Release Notes
the actions added to an object’s list view search layout, making them consistent with other list views. Some actions, like Printable View,
aren’t available on Recently Viewed lists.
Despite “Pinned Lists” being available in Lightning List Views for a while, many people still see the Recently Viewed list when opening an object tab. Being able to use customizable actions aka buttons on them is a welcome addition and provides another streamlined experience reducing clicks and saving time.
Do More with Opportunity Products
Give your sales team more flexibility to track information on opportunity product records. For example, a rep wants to track two delivery
Spring 21 Release Notes
locations in a related list for an opportunity product record. Now you can create an object relationship and page layout to make it happen
One can now relate child records to an opportunity record by creating a lookup or master-detail relationship to the Opportunity Product. This has been a nuisance for a long-time and glad this is finally rectified.
Convert Leads to a Person Account and a Business Account at the Same Time with the API
If your customers include individuals and groups, your sales teams can associate converted leads with a person account and a business
account simultaneously. For example, a bank can create person accounts for each member of a family and group the family into a
business account. To enable these lead conversions, build a custom flow with the API.Where: This change applies to Lightning Experience in Enterprise, Performance, and Unlimited editions.
How: For Salesforce orgs that use APEX Lead Convert, Person Accounts, and Contacts to Multiple Accounts, new arguments are available
Spring 21 Release Notes
on the LeadConvert() class. Use the new relatedPersonAccountId argument to convert the lead to an existing person account instead
of a contact. Use the relatedPersonAccountRecord argument to convert the lead to a new person account instead of a contact.
The LeadConvert class includes new methods for setting and inspecting the related person account. The LeadConvertResult class has a
new method and property.
This would’ve saved me a lot of time about 6 years ago when I had to create a custom Lead Convert process with Person Accounts using Apex. I’m glad this is now available for custom lead conversion processes.
Track Accounts as Campaign Members (Beta)
You can now add account records as members of a campaign. Focus your attention on important accounts in the tables, related lists,
Spring 21 Release Notes
and reports that contain campaign members.
Previously only Leads and Contacts were allowed to be campaign members. Now with Accounts being added too, that opens up even more flexibility without the trouble of going through contacts. This allows one to more easily create account targeted campaigns (duh) such as your top customers or your troubled ones.
Use Lightning Email Templates in Salesforce Automations
Now use Lightning email templates—including Email Template Builder email templates—in Salesforce automations, including email
alerts, Flow, Workflow, Process Builder, Approval Processes, and more. For example, you can set up an email alert that sends an email to
users about something that’s happened, and include a Lightning email template with the email alert. Previously, when you set up an
email alert you used Salesforce Classic email templates only.Where: This change applies to Lightning Experience in Essentials, Professional, Enterprise, Performance, Unlimited, and Developer
editions.How: Before you set up an automation with Lightning email templates, read about their behavior in Email Alert Actions.
Spring 21 Release Notes
This is a welcome addition because it allows users to use Lightning Email Templates in automations now which were previously limited to Classic Email Templates. However, from what I can tell, and please correct me if I’m wrong, Lightning email templates use a “newer” syntax for generating the templates that lets one be a little more expressive but the end result is still the same so it doesn’t seem like a game changer but certainly a nice-to-have.
Batch Management
Process millions of records in your Salesforce org using Batch Management. Track the status and health of Batch Management jobs using
Monitor Workflow Services (generally available).Create Batch Management jobs to process large volumes of data in a flow. Batch Management jobs process your data in manageable
batches. Use Batch Management jobs to automate the execution of complex business processes across multiple objects. Batch Management
jobs are scheduled using scheduled flows.Where: This change applies to Lightning Experience in Enterprise, Professional, and Unlimited editions where Rebate Management or
Loyalty Management is enabled.Who: Users with the System Administrator profile can create Batch Management jobs.
Why: Flows can process up to 250,000 records a day. Use batch jobs to process more than 250,000 records in manageable batches while
staying within the platform limits. Multiple batch jobs can be scheduled together in a flow to process records across multiple objects
that are part of the same business process.How: From Setup, in the Quick Find box, enter Batch Management, and then select Batch Management. Click New. Define a
Spring 21 Release Notes
Batch Management job and select the business flow for the Batch Management job to process. Click Next. Select the flow input variable
that uniquely identifies each record. Select the object to process records for and the filter criteria. Click Save, and then Activate.
This is very very interesting!! Scheduled flows have been on my radar for a few releases but the 250,000 records per day limit was too low for my comfort level so I’ve stayed with Apex Batch Jobs for now. Also, scheduled flows were limited to only querying one object that meets certain criteria. This change implies one can now query millions of records across multiple objects. I suspect one still has to query records from one object per query but multiple queries can be issues in a “batch”. I wonder if the millions of records per day aligns with the up to 50 million records that an Apex Batch job can do and I also wonder if they share limits.
Further research is definitely warranted here but my interest is thoroughly piqued because this could allow even more heavy processing to be done with flows!
Decision Tables
Decision tables read business rules and deliver outcomes for business scenarios. For example, you can define multiple business rules for
Spring 21 Release Notes
product discount and create a decision table that evaluates products against the rules to calculate discounts for each product. Use a
decision table in a flow to get outcomes on schedule or when required (generally available).
My understanding is one can create a configuration data set whose data source can be one or more objects as input and then there a set of fields for output. This helps create decision rules in data rather than logic which are easily updated. One example is tiered pricing where certain discounts are given as the quantity purchased increases.
Additional research is needed here too. This seems like Salesforce’s attempt to “standardize” decision tables across the platform instead of using one-off custom objects, custom settings, and custom metadata types for this. However, this may be limited to a certain Salesforce product but it’s not clear. Second Draft Post created…
Streamline Report Creation with Multi-Field Selection
Spend less time creating reports and more on translating results into next steps. Multi-select allows you to drag multiple fields to your
reports with a single action. Plus, you can now add or remove fields and columns and preview the results without delay.Where: This change applies to Lightning Experience in Group, Essentials, Professional, Enterprise, Performance, Unlimited, and Developer
editions.How: Select one or more fields from the Fields panel in the Lightning report builder (1) and drag them to the Columns list in the Outline
Spring 21 Release Notes
panel (2) or directly to the report preview. To select multiple fields, press Ctrl (Windows), Cmd (Mac), or Shift when you click.
About Time!
Einstein Analytics is Now Tableau CRM
Einstein Analytics has a new name. Say hello to Tableau CRM. Everything about how it works stays the same, just with that snazzy new
Spring 21 Release Notes
name. When Tableau joined the Salesforce family, we brought together analytics capabilities of incredible depth and power. Tableau
CRM offers the best experience for native analytics inside Salesforce CRM products. Tableau CRM continues to combine AI and BI, and
Einstein Discovery continues to have tight integration with the platform. You’ll see the old name in a few places as we work through
the updates.
From Wave to Einstein Analytics and now to Tableau CRM. This muddies the waters between Tableau and Tableau CRM and doesn’t differentiate between the two enough. Einstein Analytics was a better name. Having the “Salesforce Tableau CRM Certification” just doesn’t have a ring to it. I wouldn’t be surprised if it’s renamed again in a year or two.
View All, Modify All, Edit, and Delete Object Permissions Removed for Guest Users
Salesforce is removing the View All, Modify All, edit, and delete object permissions on all objects for guest users in new and existing orgs.
Spring 21 Release Notes
These permissions are removed for custom objects and standard objects. Guest users can only have read and create object permissions.
That really really is unfortunate. From a security perspective, that makes sense. However, the platform should give the option to administrators to grant the access they want like it was instead of locking it down so much. This will likely force users to sign-in when previously they didn’t. This definitely hinders the occasional one-off flow. I wonder if it can be worked around with “System Mode” but that’s doubtful.
Lightning Flow Is Now Salesforce Flow
The Lightning Flow suite of features is now called Salesforce Flow, and it still includes all your processes and flows. Lightning Flow Builder
Spring 21 Release Notes
and Lightning Process Builder are now called Flow Builder and Process Builder.
I’m glad I just call them Flows since it’s the one word that’s remained after a few renamings.
Refer to the Prior Values of the Record That Triggered Your Flow
Now when a record is updated, you can access that record’s prior values in Salesforce Flow. The $Record__Prior global variable
Spring 21 Release Notes
contains the record’s values immediately before the flow was run. Use these prior values to check for changes and calculate differences
in your flow.
This will further help drive the migration from process builders to “Record-Triggered Flows” and is an awesome addition. Makes me wonder if it’s available in “After-Save” flows since the record is now saved to the database and how it’ll work when the record is updated again in the save lifecycle. Additional research needed but this definitely helpful!
Run Part of a Record-Triggered Flow After the Triggering Event
Add a scheduled path to your record-triggered flow if you want part of the flow to run at a dynamically scheduled time after the triggering
event occurs. You can base the scheduled time on when the record is created or updated or on a field value in the record. Scheduled
paths run in system context, so they have permission to access and modify all data. But the running user associated with the flow’s
actions is the user who triggered the flow to run.Where: This change applies to Lightning Experience and Salesforce Classic in Essentials, Professional, Enterprise, Performance, Unlimited,
and Developer editions.Why: If you’re familiar with scheduled actions in Process Builder or time-dependent actions in workflow rules, know that scheduled
Spring 21 Release Notes
paths on record-triggered flows can accomplish the same goals and more.
More async capabilities in flows are awesome so that things that can be done later don’t affect record save times!
Build Multicolumn Screens in Flow Builder (Beta)
You can divide each flow screen into multiple sections and columns to create a visually appealing and effective layout—without touching
Spring 21 Release Notes
a single line of code. The multicolumn screen layout is responsive, so columns stack vertically to fit on mobile phones. This feature, which
is now beta, includes changes since the pilot release. The Section component now supports conditional visibility. Multicolumn screens
also benefit from improved styling for screen components, which is a separate, generally available feature.
This is really awesome! Drag-n-Drop multi-column, responsive UIs in Flows! Now I’ll only have to work on UIs that are truly complex which hopefully will be reduced even further 🙂
Access Complex Merge Fields from Loops
Now you can loop through a collection via merge fields on complex objects such as an Apex-defined variable or output from a custom
action or screen component. Previously, you weren’t able to access merge fields on complex objects.Where: This change applies to Lightning Experience and Salesforce Classic in Essentials, Professional, Enterprise, Performance, Unlimited,
and Developer editionsHow: From a Loop element, select the collection on the object.
Spring 21 Release Notes
This is confusing and vague. I think it means that one can access a list collection on a variable in the flow and iterate over those items. For example, if an Apex action returns an account record with its child Contacts returned, the child contacts can be accessed in a loop element by using say {! myAccount.Contacts } syntax.
Debug Failed Flows More Easily
No more scrolling through a long flow error email to figure out what went wrong during the run. Now you can simply click a link in the
Spring 21 Release Notes
error email to open Flow Builder and see the failed flow interview’s path on the canvas. The detailed error information appears next to
the canvas.
I had to pick my mouth off the flow floor for this one. This is a major enhancement that’ll allow builders to much much more easily troubleshoot things.
Debug Flows More Easily with Consistent Terms and Direct Debugging for Schedule-Triggered Flows
In addition to nontriggered autolaunched flows, debugging directly on the canvas now supports schedule-triggered flows. Also, we
updated the text in flow debug details and error emails to match Flow Builder’s element names: Create Records, Update Records, Get
Records, and Delete Records.Where: This change applies to Lightning Experience and Salesforce Classic in Essentials, Professional, Enterprise, Performance, Unlimited,
and Developer editions.How: To debug schedule-triggered and nontriggered autolaunched flows directly on the canvas, click Debug on Canvas.
Spring 21 Release Notes
Admittedly, I didn’t know one couldn’t click the “Debug” button for Scheduled Flows since I haven’t used them yet so I’m glad one can now do it.
Get More Characters for Field-Level Help Text
Customers can view the field-level help text by hovering over the Info icon. And with the character limit expanded from 255 to 510, you
Spring 21 Release Notes
can now provide more detailed help information. This increase applies to standard and custom fields on detail and edit pages.
It’s nice that the Field-Level Help can now show up to 510 characters. However, if you have to show that much info, you may need a better field label.
Share Records With Manual Sharing
With manual sharing in Lightning Experience, you now can share records and manage record shares in a new streamlined interface.
Previously, you switched to Salesforce Classic to give specific users and user groups access to records.Where: This change applies to Lightning Experience in Professional, Enterprise, Performance, Unlimited, and Developer editions.
When: This functionality is available on a rolling basis starting in the Spring ’21 release and is available to all customers by February 27,
2021Why: Click Sharing on the record that you want to share. In the Share window, you can manage who the record is shared with and
Spring 21 Release Notes
share any associated records. Manual shares are available only for accounts, opportunities, cases, contacts, leads, and custom objects.
This is definitely a nice-to-have and shouldn’t be a regularly used feature but glad it’s one more Lightning feature parity feature that’s added.
Salesforce Functions: Extend Salesforce with Functions (Beta)
Salesforce Functions lets developer extend Salesforce with custom, elastically scalable business logic built with high-productivity
programming languages and open-source components. Salesforce Functions reduces your infrastructure responsibilities, enabling you
to build and integrate Functions-as-a-Service (FaaS) apps using the languages and tools of your choice.When: The Salesforce Functions beta is planning to open after the release of Salesforce Spring ’21. Look for further announcements and
details on developer.salesforce.com and in the Salesforce Functions Trailblazer Community.Why: A Function is your code, run on demand, in the Salesforce Functions trusted compute cloud. Run complex business logic code,
written using your preferred languages and frameworks. Salesforce Functions are fully managed by the Salesforce Platform, which takes
care of everything else necessary to invoke your code in a secure, multi-tenant aware, and auto-scaling environment.How: Write JavaScript or TypeScript code that uses the Salesforce Functions Node SDK to communicate with your org. Deploy your
Spring 21 Release Notes
Function in the Salesforce Functions compute cloud with the Salesforce CLI. Then, invoke your Function using Apex, and the Salesforce
Functions infrastructure authenticates and runs your Function on demand.
I have been wanting to try out “EverGreen” since it was announced. Being able to do long-running computations not subject to Salesforce limits but seamlessly integrated on the platform opens a lot of potential use cases. It seems one has to use JavaScript or TypeScript instead of Apex which is a bummer but understandable. Third Draft Post created…
SOQL
Salesforce Object Query Language (SOQL) now makes it easy to include pre-defined groupings of fields within a query statement using
the new FIELDS() function.Why: In previous versions of SOQL, retrieving fields meant specifying all the names of all the fields you wanted to retrieve. Typically, this
required first making an API call to describe the object to get the list of fields (or using the Object Manger) and then laboriously constructing
a SOQL query to select all those fields. Further, such a query could exceed the query character limit for large complex queries that retrieve
lots of data. The new FIELDS() function lets you select all the fields without knowing their names in advance. This eliminates the
need for a round-trip to the server to prepare a SOQL statement, eliminates the need for research and a lot of typing, simplifies query
statements, and makes it much easier to explore the shape of your objects.How: Use FIELDS(ALL), FIELDS(STANDARD), or FIELDS(CUSTOM) in your SELECT statements. For more information,
Spring 21 Release Notes
see FIELDS() in the SOQL and SOSL Reference.
Please don’t use this feature! Blindly selecting all fields, all standard fields, or all custom fields can be a huge performance hit, especially as objects get larger.
Nice summary, Luke! Much appreciated to read your feedback on the features you highlighted.
I was surprised to see the addition of the FIELDS(ALL), FIELDS(STANDARD), etc. change to SOQL and your comment about not using it seems warranted. I’ll be curious to see further post(s) from you on the performance aspects of using that feature! Would you say that the ONLY appropriate use is if you actually encounter the query length limit and cannot query all of the fields you need to include? (And not to use it just cause you don’t like typing field names!)
Hey Cathy,
I’m curious about performance too. It’s on the to-do list 🙂
In almost 10 years of writing SOQL, I’ve never exceeded the query length limit so my first thought is no that shouldn’t be allowed either.