Salesforce Winter 21 Release Review

It’s hard to believe the Salesforce Winter 21 release is about a month away and the Summer release was not long ago. Even harder to believe is that in one more release, Spring 21, it’ll be 10 years working with Salesforce for me! Wow.

Below are some notable items from the Winter 21 Release Notes. Of course there’s a lot more! Many of the of the updates were product specific including enhancements to Sales Cloud, Service Cloud, Analytics, and more. There were numerous flow enhancements too which further indicates it’s getting more attention to make platform even more declarative.

Surveys: Consider Your Org’s Email Limits

Survey invitation emails sent to participants outside your Salesforce org now count toward the total daily emails sent from your org.
When emailing survey invitations, keep your org’s daily email limit in mind. Contact your Salesforce account executive to extend your
org’s email limit.

Where: This change applies to Lightning Experience in Performance, Enterprise, Developer, and Unlimited editions where Salesforce
Surveys is enabled.

Winter 21 Release Notes

This should not count towards the org’s daily limit because Surveys are an add-on product so you’re paying for this already! Calculating the org wide daily email limit is not trivial. It’s at least 5,000 per day which is higher than the 1,000 it used to be.

UI Changes for Lightning Web Components

Salesforce product and engineering teams made usability and performance enhancements by switching users from Aura components
to Lightning Web Components. These enhancements were rolled out to custom objects, some standard objects, and some UI elements
like related lists. There should be no changes to functionality.

Where: This change applies to Lightning Experience in all editions

Winter 21 Release Notes

This translates to the lightning experience UI elements were ported over to use LWC instead of Aura to enhance performance. I really hope it increases performance but doubt it will. Did it noticeably increase performance for you?

Use Knowledge Sharing with Guest Users and High-Volume Community Users

We enhanced standard sharing for Knowledge to make sharing work the way it does for other Salesforce objects. Use criteria-based
record-sharing rules to control which articles are exposed to your community’s guest users. Use sharing groups and sharing sets to share
articles owned by High-Volume Community Users and portal users. Lightning Knowledge only.

Salesforce Winter ’21 Release Notes Knowledge: Enhancements to Sharing, Article Linking

Where: This change applies to Enterprise, Essentials, Performance, Developer, and Unlimited editions of Knowledge with Lightning
Knowledge enabled. Not available in Salesforce Classic.
Why: Sharing for High-Volume Community Users is new for Knowledge for Summer ’20.

Although Guest User sharing was available with Knowledge in the Summer ’20 release, sharing in Knowledge followed external sharing
rules. Now, normal Guest User security policies apply to Knowledge.

How: In Knowledge Settings, enable Lightning Knowledge and standard Salesforce sharing. For Guest User sharing, go to Setup->Sharing
Settings, and set Secure guest user record access.

For sharing with High-Volume Community Users, use sharing groups and sharing sets

Winter 21 Release Notes

Having done some Knowledge R&D recently, this is a welcome addition! Previously to share a public knowledge base, one had to assign the knowledge article to a data category, grant permission to that data category on the guest user profile, and then map the data category to the desired community topics. Almost forgot, mark the article as available in the public knowledge base channel too.

With this new addition, hopefully a single criteria-based sharing rule using that knowledge base checkbox is all that’s needed.

Sharing Sets and sharing groups are a welcome addition too. That’ll help for authenticated users so they can have more targeted help articles. For example, if a community has a mixture of customer and partner users, one could have one set of articles for their authenticated users and another set for partners.

Trigger a Flow to Run Before a Record Is Deleted

In Flow Builder, you can now configure a new record-triggered flow to run before a record is deleted. You no longer need to write Apex
code to set this up. This autolaunched flow runs in the background and updates related records when a record is deleted.

Where: This change applies to Lightning Experience and Salesforce Classic in Essentials, Professional, Enterprise, Performance, Unlimited,
and Developer editions.

Who: To activate a record-triggered flow that runs before the record is deleted, you need the Manage Flows and View All Data permissions.

Why: For example, suppose that your Salesforce org has a custom field on the Account object that tracks the total items related to that
account. Without automation, this field is updated manually every time a related item is deleted. Now, you can automate this task with
a record-triggered flow that runs before a record is deleted.

The flow runs anytime an item is deleted. It finds the related account, and decrements the total number of items. When the flow finishes,
the item that launched the flow is deleted.

The flow can access any record and perform actions before the record that launched the flow is deleted from the database. The $Record
global variable contains the Salesforce record that launches the flow.

Considerations for record-triggered flows:
• Launching a flow after restoring a record via the undelete operation is not supported.
• Displaying custom error messages via the addError() method is not supported in invocable actions.

Winter 21 Release Notes

This one is HUGE. I’ve been wanting this for years! When a record gets deleted, one can now run a flow to do some automation with it. Based on what’s written, this runs on before delete and then everything a flow can do is supported. This will reduce the need for apex triggers even more. An apex trigger is still needed for custom validation though since that’s not supported, currently.

Place Flow Elements Automatically with Auto-Layout (Beta)

Our new auto-layout feature makes building flows and aligning elements easier. When auto-layout is enabled on a flow, elements in
the canvas are spaced and connected automatically. No more elements positioned slightly out of alignment!

Where: This change applies to Lightning Experience and Salesforce Classic in Essentials, Professional, Enterprise, Performance, Unlimited,
and Developer editions

Winter 21 Release Notes

This nice-to-have will definitely be a time saver. While not truly necessary, I spend time straightening the lines between elements to look better. Do you?

Locate a Flow Builder Error with the Click of a Link

If you get an error in Flow Builder, go straight to it instead of hunting through your flow. Flow Builder error messages now include a link,
when available, that opens the erroneous element and highlights it on the canvas. The auto-layout canvas and resources don’t support
highlighting.

Where: This change applies to Lightning Experience and Salesforce Classic in Essentials, Professional, Enterprise, Performance, Unlimited,
and Developer editions

Winter 21 Release Notes

This will speed up development of flows and make them more maintainable.

Easily Access Related Record Data in Autolaunched Flows with Triggers

Now in autolaunched flows with triggers, you no longer need to create Get Records elements to find associated records and retrieve
data from them. Instead, when you configure flow elements and resources, you can easily drill down to the field values of a global or
record variable’s associated records. For example, in a Decision element, drill down from $Record to Account ID to Customer Priority.

Where: This change applies to Lightning Experience and Salesforce Classic in Essentials, Professional, Enterprise, Performance, Unlimited,
and Developer editions.

Winter 21 Release Notes

This is awesome! Usually I have to do multiple Get Records to fetch all the necessary related records so just defining which related fields are needed is a big time saver. Makes me wonder how it handles null lookup fields though and if it errors when trying to access a related record’s field. For good measure, always do a null check first before accessing a related record’s fields. Most of the time, this is the cause of the “unhandled process exception” error emails.

Create Flow Screen Components That Work for Multiple Objects (Generally Available)

Now developers can create reusable screen components that use the generic sObject and sObject[] data types. They can build
one component that works for multiple objects, rather than one component for each individual object. For example, they can build a
data table component that works with any collection of records, from accounts and contacts to custom objects.

Where: This change applies to Lightning web components in Lightning Experience in Enterprise, Performance, Unlimited, and Developer
editions.

Winter 21 Release Notes

I’ve included this in previous release note reviews but am so glad this is now Generally Available! This allows more generic components to support SObjects! Now I have a reason to enhance the Field Set Form Component to support flows. What other ideas do you have for this?

Configure Custom Flow Screen Components More Easily (Generally Available)

Developers can create custom property editors that make it a snap for you to configure flow screen components in Flow Builder. A
custom property editor is a Lightning web component that provides a clean, simple UI for entering input values in the properties pane.
This feature is now generally available.

Where: This change applies to Lightning Experience and Salesforce Classic in Enterprise, Performance, Unlimited, and Developer editions

Winter 21 Release Notes

This is really awesome. A custom designer form for component properties is amazing. For example, having dependent inputs is awesome. If one value is X, show input Y. Applying this to the Unofficial Send Richer Email Action is a perfect example.

Break Up Your Record Details with Dynamic Forms (Generally Available)

Dynamic Forms is the next step in the evolution of Lightning record pages. It adds the ability to configure record detail fields and sections
inside the Lightning App Builder. This feature, which is now generally available and enabled for everyone, includes some changes since
the beta release.

Where: This change applies to Lightning Experience in Group, Professional, Enterprise, Performance, Unlimited, and Developer editions.

Why: The more fields on your page layout, the more that the Record Detail component becomes a monolithic block of fields that you
can’t customize. With Dynamic Forms, you can migrate the fields and sections from your page layout as individual components into the
Lightning App Builder. Then, you can configure them just like the rest of the components on the page, and give users only the fields
and sections that they need.

How: Dynamic Forms is now enabled for everyone! As a result, you see new features available in the Lightning App Builder. A new Fields
tab in the component palette contains Field and Field Section components, which are the building blocks for Dynamic Forms. And as
you configure fields and sections, you get help from in-app tips, created just for Dynamic Forms-driven pages.

How do you get started? Open an existing record page in the Lightning App Builder, then click Upgrade Now from the Record Detail
properties pane to launch the Dynamic Forms migration wizard. With only a few clicks, the wizard adds fields and field sections to the
page for you.

Winter 21 Release Notes

Dynamic Forms are finally GA and allow even better organization of lightning records pages!

Unleash New Flexibility with Dynamic Actions on Desktop (GA and Beta) and Mobile (Beta)

There are now more ways to add the flexibility and control of dynamic actions to your record pages. Dynamic actions for custom objects
are GA for desktop and Beta for mobile. Dynamic actions for supported standard objects (Account, Case, Contact, Lead, and Opportunity)
are Beta for desktop. Assign actions in the Lightning App Builder instead of the page layout, and apply filters to control when and where
actions appear for users.

Where: This change applies to Lightning Experience desktop and the Salesforce mobile app in Group, Essentials, Professional, Enterprise,
Performance, Unlimited, and Developer editions.

Winter 21 Release Notes

Being able to dynamically show record action buttons based on criteria is awesome. This helps reduce custom code from having to check for these conditions and lets it be done declaratively instead. Note the limitation between custom objects and standard objects though as my stance is only use Generally Available (GA) features.

Use the Safe Navigation Operator to Avoid Null Pointer Exceptions

Use the safe navigation operator (?.) to replace explicit, sequential checks for null references. This new operator short-circuits expressions
that attempt to operate on a null value and returns null instead of throwing a NullPointerException.

Where: This change applies to Lightning Experience and Salesforce Classic in Enterprise, Performance, Unlimited, and Developer editions.

How: If the left-hand-side of the chain expression evaluates to null, the right-hand-side is not evaluated. Use the safe navigation operator
(?.) in method, variable, and property chaining. The part of the expression that is not evaluated can include variable references, method
references, or array expressions.

Note: All Apex types are implicitly nullable and can hold a null value returned from the operator.

Winter 21 Release Notes

This will save lots of time doing if checks for null values. The ?. syntax is nice too. See the release notes for lots of awesome examples!