Salesforce Spring 22 Release Review

In the coming weeks, the Salesforce Spring 22 release will be upgraded in all Salesforce environments. Overall, this release focused heavily on releasing newer cloud product features, especially with Tableau CRM. There are numerous Flow related enhancements too.

Let’s take a look at some of the features below. See the Release Notes for more information.

Get Ready for the Multi-Factor Authentication Requirement

Starting February 1, 2022, customers are contractually required to use multi-factor authentication (MFA) when accessing Salesforce products. To satisfy this requirement, you can turn on MFA directly in Salesforce or you can use your single sign-on (SSO) provider’s MFA service. Salesforce MFA is available at no extra cost.

Where: This change applies to Lightning Experience, Salesforce Classic, and all Salesforce mobile apps in all editions.

When: Beginning February 1, 2022, according to the Salesforce Trust and Compliance Documentation, all Salesforce customers are contractually required to use MFA for direct and SSO logins to Salesforce products.

Spring 22 Release Notes

On Feb 1, 2022, all Salesforce customers are required to use MFA. This means that login using Salesforce credentials will have to setup MFA. This will likely require using an authenticator app. For those SSO using an external identity provider, my understanding is that Salesforce will use the identity provider’s MFA and not enforce their own. Additionally, this doesn’t apply to external systems authenticating with the Salesforce API.

One interesting use case I had to find a solution for was a UI Robot logging into Salesforce using the browser. With MFA being enforced, this would require someone to constantly approve or provide additional information which significantly slows down the automation. To get around this, I discovered that one can login using the SOAP API’s login service and then use the frontdoor.jsp with the SOAP auth token to bridge into a web session.

Get Org-Specific Domain Hostnames and Information

When you change your org’s My Domain name due to a brand change or you enable enhanced domains, the domains that Salesforce hosts for your org change. To insulate your code against these changes, determine the hostnames for these domains with the new System.DomainCreator Apex class. For example, get the hostname for your org’s My Domain login URL or the system-managed hostname for your Experience Cloud Sites. You can also get information about the domains that Salesforce hosts for your org with the new System.Domain class. Or use a URL or hostname to obtain information about the associated domains with the new System.DomainParser class.
Where: This change applies to Lightning Experience and Salesforce Classic in Enterprise, Performance, Unlimited, and Developer editions.
How: To determine the hostnames for the domains that Salesforce hosts for your org, use the methods in the new System.DomainCreator class. For example, the getOrgMyDomainHostname() method returns the hostname for your org’s My Domain login URL and the getLightningHostname() method returns the hostname for your org’s Lightning pages. And the getExperienceCloudSitesHostname() method returns the hostname for the system-managed domain for your org’s Experience Cloud sites.
To obtain information about domains that Salesforce hosts for your org, use the methods in the new System.Domain class. For example, for a sandbox domain, the getSandboxName() method returns the name of the sandbox. And the getDomainType() method returns the associated System.DomainType enum value, which represents the type of domain, such as CONTENT_DOMAIN, EXPERIENCE_CLOUD_SITES_DOMAIN, or LIGHTNING_DOMAIN.
To use a URL or hostname to obtain information about the domains that Salesforce hosts for your org, use the methods in the new System.DomainParser class. Use the parse(hostname) method to parse a Salesforce-owned hostname for your org, such as MyDomainName.my.site.com and extract information about the domain. Use the parse(url) method to parse a Salesforce URL for your org, such as ttps://MyDomainName.my.site.com.

Spring 22 Release Notes

One can now use Apex system function so get domain and sandbox names more easily. It was possible to get this information previously but it required custom parsing logic.

Find Which Apex Classes Implement an Interface (Beta)

Use the ApexTypeImplementor object to find Apex classes that directly or indirectly implement an interface. Using a SOQL query, you can get information about public or global Apex classes. In installed managed packages, you get information only about global
Apex classes.
Where: This change applies to Lightning Experience and Salesforce Classic in Enterprise, Performance, Unlimited, and Developer editions.
Note: This feature is a Beta Service. Customer may opt to try such Beta Service in its sole discretion. Any use of the Beta Service is subject to the applicable Beta Services Terms provided at Agreements and Terms.
How: During the beta, ApexTypeImplementor returns only Apex classes that are currently compiled, as indicated by the isValid field. See Known Issues: ApexTypeImplementor is not returning implementation classes for further details and to track changes.

Spring 22 Release Notes

This allows greater flexibility in determining the available concrete classes that implement an interface. One use is in managed packages where one has a global interface that allows one to implement custom implementations and the package allows these new custom classes to be used. This makes extension management a bit easier.

Connect Salesforce Events with Amazon EventBridge in AWS (Pilot)

Use Event Bus Relay to send and receive platform event messages and change data capture event messages between Salesforce and AWS, without writing an integration app or using middleware. By using Event Bus Relay in Salesforce with Amazon EventBridge in AWS, your Salesforce event-driven apps can use AWS services to process events. You can also send platform event messages from AWS back to Salesforce, where subscribers can process them using Salesforce Platform capabilities.
Where: This change applies to Lightning Experience and Salesforce Classic in Enterprise, Performance, Unlimited, and Developer editions.
Note: This feature is not generally available and is being piloted with certain Customers subject to additional terms and conditions. It is not part of your purchased Services. This feature is subject to change, may be discontinued with no notice at any time in SFDC’s sole discretion, and SFDC may never make this feature generally available. Make your purchase decisions only on the basis of generally available products and features. This feature is made available on an AS IS basis and use of this feature is at your sole risk.
When: This pilot is available later in the Spring ’22 release.

Spring 22 Release Notes

Having native bidirectional Event Bus support with Amazon’s EventBridge in AWS is really nice and opens up even more integration options. This is still in pilot but if it reaches GA, this can really reduce implementation times and provide some really interesting integration options. Hopefully support for other Event Buses in other clouds like Azure and Google Cloud Platform will be adopted too.

Visualize All Your Record-Triggered Flows in One Place with Flow Trigger Explorer

See and manage your record-triggered flows with Flow Trigger Explorer, a new tool that’s more visual and interactive than the Flows list view. Flow Trigger Explorer shows all of the flows that are associated with a specified object and that run when a record is created, updated, or deleted. For example, quickly see all flows that are triggered to run when a case record is created.
Where: This change applies to Lightning Experience and Salesforce Classic in Essentials, Professional, Enterprise, Performance, Unlimited, and Developer editions.
Why: Now navigate easily between an individual flow in Flow Builder and other flows that run under the same circumstances. See details about a flow and manage its versions all within Flow Trigger Explorer.
How: In Flow Builder at the bottom of the Start element for a record-triggered flow, click Open Flow Trigger Explorer for [object name, for example Account].

Spring 22 Release Notes

Being able to easily see all the record-triggered flows for a given object allows these flows to be more easily navigated and managed. This is another welcome Flow enhancement as Flows become more capable and used.

Customize the Previous, Pause, Next, and Finish button label text in Flow Builder. You can also provide button label text for other languages. With customized screen navigation options, you can let a user know what to expect when the user clicks the button. Previously, to customize these footer labels, you built a custom component.
Where: This change applies to Lightning Experience and Salesforce Classic in Essentials, Professional, Enterprise, Unlimited, and Developer editions.
Why: Sometimes a flow screen’s navigation button doesn’t clearly state what happens when a user clicks it. For example, you’re designing a screen flow and using a Create Records element that creates a contact record. On the flow screen, you change the Finish button to Create Contact and change the Previous button to Go Back. The custom label makes it clear that a contact record is created as a result
of the flow.

How: To relabel a button, select Use a custom label, and enter the text that you want to use.

Spring 22 Release Notes

Another great enhancement to make screen flows more user friendly without having to create a custom component or one like the UnofficialSF Custom Flow Navigation Buttons.

Filter Items into a Collection in Flow Builder

Now you can filter unwanted data from your collections in Flow Builder. Use the Collection Filter element to select a collection and define conditions. When the flow runs, the element outputs a collection with only the items that meet those conditions, leaving your original collection intact.
Where: This change applies to Lightning Experience and Salesforce Classic in Essentials, Professional, Enterprise, Performance, Unlimited, and Developer editions.
How: When defining conditions, you can set the requirements using a formula or logic, such as All Conditions Are Met, Any Condition Is Met, or your own custom condition logic.

Spring 22 Release Notes

Previously, one had to filter collections using loops, decisions, and other flow elements so this new element makes filtering much easier. However, one should still use a Get Records element to do the filtering first whenever possible since it’ll be much more efficient.

Define the Run Order of Record-Triggered Flows for an Object

Specify a trigger order value to determine the run order of before-save or after-save flows for the same object. Declaratively configure a flow to run before or after another flow. Order your flows to help ensure consistent results without creating overly complex flows, letting you divide automation by teams or logical owners.
Where: This change applies to Lightning Experience and Salesforce Classic in Essentials, Professional, Enterprise, Performance, Unlimited, and Developer editions.
Why: You can define a trigger order value only for a before- or an after-save record-triggered flow on an object. For example, you can prioritize an after-save flow to run before other after-save flows on the Case object. But you can’t prioritize an after-save flow to run before any before-save flows or before an Apex trigger. Multiple flows can have the same trigger order value.
How: When you save a before- or after-save record-triggered flow, specify a trigger order value from 1 to 2,000. In a flow that’s already saved, specify a trigger order value in the flow’s version properties.

Flows with the same trigger (before- or after-save) on the same object with trigger order values from 1 to 1,000 run in ascending order (1, 2, 3, and so on). Multiple flows with the same trigger order value run in alphabetical order based on the flows’ API names.
• Flows without trigger order values run next and in the order of their created dates. Flows in Winter ’22 and before run and continue to run in this order, unless you define a trigger order value for them.
• Flows with trigger order values from 1,001 to 2,000 run next and in ascending order. Any ties are settled using the flows’ API names.

When you order a large number of flows, a best practice is to evenly distribute the trigger order values, for example, 10, 20, 30, or 100, 200, 300. Then later, you can easily slot another flow in between, for example, between 10 and 20. This practice can help you avoid changing the trigger order values for preexisting flows.
Activating, deactivating, or changing the order for one flow can cause the order for other flows to be automatically updated. Ordering record-triggered flows has no direct effect on any associated scheduled or asynchronous paths.

Spring 22 Release Notes

This is huge! This additional control over the order of before-save record-triggered flows and after-save record-triggered flows advocates for smaller, but more flows. In the past, my recommendation has been to minimize the number of record-triggered flows and to use decision elements to orchestrate the logic since it ran faster that having multiple record-triggered flows but with less logic in each. This will require additional performance testing to see if this recommendation needs revision.

Convert Workflow Rules to Flows with the Migrate to Flow Tool (Beta)

We know it’s a lot to process, but it’s time to begin the transition to using Flow Builder, the future of low-code automation. Use the Migrate to Flow tool to convert your workflow rules into flows. Flow Builder can do everything that workflow rules can do—and more.
Where: This change applies to Lightning Experience and Salesforce Classic in Essentials, Professional, Enterprise, Performance, Unlimited, and Developer editions.
Note: This feature is a Beta Service. Customer may opt to try such Beta Service in its sole discretion. Any use of the Beta Service is subject to the applicable Beta Services Terms provided at Agreements and Terms.
Why: You can migrate workflow rules that contain these items:
• Field-based criteria
• Field updates
• Email alerts
• Outbound messages
• Time-dependent workflow actions
• Rule criteria formula that’s set to true (unless evaluation criteria is also set to created, and any time it’s edited to subsequently meet criteria)
Gentle reminders are now included in workflow rules to prompt you to consider creating flows in Flow Builder instead of creating workflow rules.

Spring 22 Release Notes

With Process Builders and Workflow Rules being deprecated in favor of flows, this converter tool eases the transition to flows.

Create Custom Components for Email Template Builder

With custom components, you can help marketers and managers create more engaging email content for their customers.
Where: This change applies to Lightning Experience in Essentials, Professional, Enterprise, Unlimited, and Developer editions.

Who: Users with the Access Drag and Drop Content Builder and View Setup and Configuration permissions can add custom components to an email template in Email Template Builder. How: To configure a custom component to use in the Email Template Builder, define the metadata in .js-meta.xml. Define a lightning__StaticEmail target, and set to true. Prepare the metadata package, and deploy it to a test org.

Spring 22 Release Notes

This lets one create custom lightning web components (LWCs) that can then be embedded in lightning experience email templates and allows better emails to be created as needed.

1 thought on “Salesforce Spring 22 Release Review”

Comments are closed.