Salesforce Spring 20 Release Review

It’s that time of year again for Salesforce’s latest release, the Spring release. Let’s take a look at some of the upcoming features. See the Release Notes for more info.

Clone Objects Along with Their Related Records

The Clone with Related action makes it simple to handle a variety of repeating business processes. When you click Clone with Related, all of the original object’s related records are also added to the cloned object.

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

Who: To use the Clone with Related action, users must have Create permission on the object and Read access to the record they want to clone.

Why: Users can easily include related records when they clone a record. How: In the Object Manager, find one of the supported objects and select Page Layout. Add the Clone with Related action to the layout, and save. In the dialog, the order of the options can’t be changed.

Spring 20 Release Notes

This will be really beneficial for business processes that differ a little bit an lets one easily clone the records and then tweak them afterward.

Navigate to a Record’s Create Page with Default Field Values

Create custom buttons and links that pass default field values to a new record.

Where: This change applies to Lightning Experience in all editions. This change doesn’t apply to Lightning Out, Lightning communities, or the Salesforce mobile app.

How: To construct a custom button or link that launches a new record with prepopulated field values, use this sample formula:

/lightning/o/Account/new?defaultFieldValues= Name={!URLENCODE(Account.Name)}, OwnerId={!Account.OwnerId}, AccountNumber={!Account.AccountNumber}, NumberOfEmployees=35000, CustomCheckbox__c={!IF(Account.SomeCheckbox__c, true, false)}

Important: The URLENCODE function works only when creating custom buttons and links. You can’t use it for custom fields

Spring 20 Release Notes

Looks like Salesforce finally made the “Classic URL Hack” available in Lightning and a supported feature. Gone are the days where you have to inspect a field’s “Id” to get its value in the markup.

Assign Tasks to a Queue to Share Work Efficiently

Let sales reps share their workload by setting up queues for tasks. Reps can assign tasks to their shared queues, and then individuals can take ownership of those tasks from the queue’s list view.

Where: This change applies to Lightning Experience in Essentials, Professional, Enterprise, Performance, Unlimited, and Developer editions. 129 Productivity Features: Send Later, List Email Drafts, Email Threading, and Task Queues Salesforce Spring ’20 Release Notes.

Why: When reps assign tasks to a queue, those tasks are available to members of the queue, which means everyone can pitch in to help. No more relying on one sales rep to do it all. Now others on the team can lend a hand without waiting for work to be delegated or reassigned.

Spring 20 Release Notes

This’ll allow users to share the burden of tasks on a team instead of certain people always having to do it.

Community: Switch Lightning Locker On and Off in the UI

Turn Lightning Locker on and off for all components in a community, regardless of API version, with a simple switch in Experience Builder. The switch is available in Lightning Communities that use the Script Security level Allow Inline Scripts and Script Access to Whitelisted Third-party Hosts.

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

Why: Lightning Locker provides security in your community by isolating components from other components. For example, it can isolate a component that captures password information and prevent other components from reading that data. However, sometimes you don’t require this level of security. In the past, if you wanted to bypass the Lightning Locker security feature in your community, you could use components based on API versions 39.0 or earlier. With the new switch, you can use components based on later API versions and still turn off Lightning Locker in the community.

How: In Experience Builder, go to Settings > Security > Content Security Policy (CSP)

Spring 20 Release Notes

This allows developers to easily create components using the latest API version for those instances where lightning locker services aren’t compatible.

Flow: Update New and Changed Records 10 Times Faster by Using Before-Save Updates in Flows

Creating or updating a record can now trigger an autolaunched flow to make additional updates to that record before it’s saved to the database. Before-save updates in flows are much faster than other available record-triggered updates. For example, a before-save update in a flow is 10 times faster than an update in a record-change process that’s built in Process Builder. Replace your record-change processes with flows to minimize how often the spinner appears when users save records.

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

Who: To activate a flow that makes before-save updates, you need the View All Data permission.

Why: Perhaps you’re familiar with Process Builder and using a record-change process to make additional updates to each record that triggers the process. Such a process can set the Region custom field automatically on each new case record. Before-save updates in flows accomplish that same goal, but much more quickly because each record doesn’t get saved to the database again. Avoiding that extra save procedure means skipping another round of assignment rules, auto-response rules, workflow rules, and other customizations that take time to execute.

Perhaps you’re familiar with Apex triggers. A flow that makes before-save updates is similar to a before trigger. The previously described record-change process is similar to an after trigger. In a save procedure, before-save updates in flows are executed immediately prior to Apex before triggers.

Because of their speed, we recommend that you use before-save updates in flows to update fields on new or changed records. You can even avoid the limit for maximum CPU time on the Salesforce servers by replacing Apex code and record-change processes with before-save updates in flows. However, sometimes you need to use a record-change process or an Apex after trigger to:

– Access field values that are set only after the record is saved, such as the last modified date or the ID of the new record

– Create or update related records.

– Perform actios other than updating the record that launches the flow.

How: Create an autolaunched flow and open the Start element. For What Launches the Flow, select New or updated records—flow makes fast field updates.

Spring 20 Release Notes

This is huge! We use process builders fairly regularly with this use case and they’re slow to update fields because they run on after update and cause everything to fire again, usually. I’m curious how much faster this actually is in reality and if it lives up to the 10 times faster claim.

Navigate Users to a Record’s Create Page with Default Field Values

Use the new lightning/pageReferenceUtils module or lightning:pageReferenceUtils Aura component to build navigation links in your components that prepopulate a record’s create page with default field values. Prepopulated values can accelerate data entry, improve data consistency, and otherwise make the process of creating a record easier.

Where: This change applies to Lightning Experience in all editions. This change doesn’t apply to Lightning Out, Lightning communities, or the Salesforce mobile app. How: This component provides utilities for encoding and decoding default field values. Pass this string into the new pageReference.state.defaultFieldValues attribute on standard__objectPage page reference types. Using this component alongside the existing lightning:navigation component, you can launch a record’s create page with prepopulated field values. We recommend using lightning/pageReferenceUtils and lightning/navigation to navigate to a record’s create page instead of force:createRecord.

Spring 20 Release Notes

Now developers can programmatically pre-populate default field values when opening a record’s “New” page.

Enable Field- and Object-Level Permissions Checking Using WITH SECURITY_ENFORCED in SOQL Queries (Generally Available)

SOQL queries using WITH SECURITY_ENFORCED is now generally available. Use the WITH SECURITY_ENFORCED clause to enable field and object level security permissions checking for SOQL SELECT queries in Apex code, including subqueries and cross-object relationships. The WITH SECURITY_ENFORCED clause is available only in Apex.

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

How: We don’t recommend using WITH SECURITY_ENFORCED in Apex classes or triggers with an API version earlier than 45.0. There is a new restriction while querying polymorphic lookup fields using WITH SECURITY_ENFORCED. Polymorphic lookup fields are relationship fields that can point to more than one entity.

Spring 20 Release Notes

This will be very helpful for securing code and make it much easier to do so, especially for AppExchange apps going through the security review.

View Monthly API Calls with a New Usage-Based Entitlement

Your org can now exceed its API daily request limit without being blocked (subject to system health). A generous hard cap is in place to safeguard platform resources. A new usage-based entitlement shows the total number of API requests aggregated over 30 days.

Spring 20 Release Notes

Embedded in this is the daily API request limit is now a soft limit instead of a hard limit “subject to system health”. In the past, I’d have to request Salesforce temporarily increase the daily API limit for a known busy time so hopefully this reduces the need for that and provides more usage visibility.

Secure Your Sandbox Data with Salesforce Data Mask

Salesforce Data Mask is a powerful new data security resource for Salesforce admins and developers. Instead of manually securing data and access for sandbox orgs, admins can use Data Mask to automatically mask the data in a sandbox.

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

Why: Data Mask uses platform-native obfuscation technology to mask sensitive data in any full or partial sandboxes. The masking process lets you mask some or all sensitive data with different levels of masking, depending on the sensitivity of the data. Once the data is masked, you can’t unmask it. This irreversible process ensures that the data is not replicated in a readable or recognizable way into another environment.

How: Data Mask is a managed package that you install in a production org. You then run the masking process from any sandbox created from the production org.

Spring 20 Release Notes