top of page

For this year's edition of TrailheaDX, because of the COVID-19 pandemic, Salesforce transformed the event into a single day fully remote event.

The event is split into 4 separate trails: Developer, Admin, Architect, and Community/Ecosystem.


While there was too much content for one person to see in a single day, here are the announcements that caught my eyes!


Salesforce anywhere:

While chatter can be a great way to communicate within Salesforce, I think we can all agree it is limited in features but also looks pretty old. Salesforce Anywhere will probably replace Chatter in the future.


Salesforce Anywhere is a new collaboration experience, available on mobile, that allows chat, call or video call, directly from within the platform.

It is currently available in beta, but I can't wait for it to be GA.

More information here.


Data Privacy Manager:

Salesforce introduced the Compliance Data Categorization field back in the Winter '20 release. You can use that field to categorize the compliance level required for a field, whether it's a PII (personally identifiable information) or PCI (Payment Card Industry).


The Consent Event Stream will automatically track and generate events when some field with a compliance level is updated, making it easier to enforce access and update compliance on those fields.


Salesforce Code Builder:

It was announced yesterday (see Salesforce <3 Codespace) but we had the opportunity to watch a deeper demo of the new capabilities of this cloud IDE.


You can use Salesforce Code Builder, built on VSCode and Codespace, directly in your browser to code, manage and deploy your metadata, just like you would with your desktop VSCode installation.


The Salesforce Expansion Pack, a VSCode plugin made for Salesforce development in the IDE, will also get a great upgrade: a new SOQL query builder, allowing to create complete queries without coding.


Salesforce functions:

Salesforce functions were first introduced as Evergreen functions back in Dreamforce 2019 (see Dreamforce 2019)

Functions are a fully integrated way of executing code (not only Apex but also Javascript!) inside managed Kubernetes. You can, for example, use a Function from a Flow just like you would use an Invocable to run Apex. They can also be packaged and deployed like any other metadata on the platform.

Since Functions are running "outside", you don't have the usual governor limits about CPU Usage or Memory, making it possible to perform more complex tasks without leaving the trusted Salesforce platform.

I am using quotes when saying "outside" because since they are still running in the Salesforce managed ecosystem, you get all the security and compliance benefits of the platform. It's also possible to access your Org data from a Function with built-in APIs.


For those of you with experience in other Cloud Providers, you can think of Salesforce Functions as the Salesforce equivalent of AWS Lambas or Azure Functions!


Flows:

The new Flows functionality will make them the go-to automation tool on the platform. Salesforce is now allowing Flows to be triggered whenever a record is saved, or even whenever a platform event is published.

We no longer need to create a Process Builder to invoke that Flow, reducing redundancy, and making the automation more straightforward.

More information about those new features in the Summer 20' release notes.



Apex:

A few great announcements for Apex, coming most of them available in the Winter 21' release: Safe navigation operator, Finalizers and Promises, and the SOQL Fields(ALL):


Safe navigation operator: Similar to other languages syntax (like C#), Salesforce now supports the '?.' property navigator, preventing the risk of a null reference exception by returning null if an object is null along the property chain.

For example, we will be able to write something like 'Foo?.Bar?.size()' to access the size of a collection without having to perform explicit null check on any objects.

Finalizers and Promises:

Promises in Apex are a lot like Promises in Javascript, where you can chain a subsequent task using the 'then' keyword. By using promises in Apex, it becomes possible to chain multiple Queuables one after the other in sequence.

Finalizers are really just a way to handle success and errors after the execution of a queueable, making it possible, for example, to perform an outbound call in case of a failure.

It's a really great addition to the framework for resiliency and error handling.


You can learn more about Queuables in this blog post and more about Finalizers and Promises in the official documentation.


SOQL Fields(ALL):

Okay this one was introduced really fast and I couldn't find any documentation regarding that new feature, but it's super exciting: 'SELECT * FROM Foo is coming in SOQL!

Just like in standard SQL, it will be possible to select all the fields on an object without explicitly selecting them.


Miscellaneous:


Salesforce released an official Postman API Collection for most of their APIs. It's a great way to familiarize yourself with them and it's really easy to try them out with Postman.

More information available right here.



Well, that's it for this remote edition of TrailheaDX!

As always, the content was really interesting and we had the great opportunity to actually chat with some Salesforce team members to learn more and ask questions about those upcoming features. That openness and availability are really special and greatly appreciated.

Enough about my experience, what about you?

What was your favorite announcement?

Updated: Jun 26, 2020

As you guys probably know, Salesforce is rolling out Spring 20 very soon and as with every release, tons of new features will become available.

Here's a quick overview of what's coming in Sales Cloud!


For Users:


Better list email filtering:

We can now use filters on account fields in the List Emails.

Learn more about in the release notes.


Clone with related:

With this feature, we can really easily clone an opportunity and it's related Opportunity Products/Contact Roles but also Campaign and all related members.

Learn more in the release notes.



For Admins:


In-App Guidance improvements:

You can now filter your prompts by profile, add some videos, translate your label and you have even more flexibility to decide when your users will see the prompts.

Learn more in the release notes.


Opportunity Contact roles automation:

Introduced a while ago, made more flexible in Winter 20, it is now possible to use Process Builder, Flows and even workflow rules to create automation around your Opportunity Contact Roles.

Learn more in the release notes.


Better Flow:

As always, flows are getting a lot of improvements this release:

- Introducing Before-Save updates. It works almost like a Process Builder, but it's 10 times faster. Learn more here.

- Create records elements will now create implicit variables. Learn more here.

- Run flow as System is now possible and will ignore object permissions, field-level access or other permissions from the running user, which is an awesome way to update related objects without giving unnecessary permission to your users. Learn more here.

- Keyboard shortcuts are now available. Learn more here.

- Duplicate records no longer count on the duplicate updates limit. Learn more here.


Permission Sets groups:

We can now put Permission Sets together in logical groups and assign groups to users.

Learn more in the release notes.


Data Mask:

Salesforce Data Mask is a managed package you can install in your Production org that you can then use to protect/mask sensitive data in your Sandbox to keep the information secure.

Learn more in the release notes.



For Devs:


Invocable Apex is better than ever

- We can now create categories for our Invocable, making it easier to find for admins in the flow builder. Learn more here.

- Invocable can now be generics, supporting a List<SObjects> as a parameter. Learn more here.


Lightning Web Component:

Here's a few more improvements on the LWC:

- The source tracking is now smarter, tracking listing changes and alerting you of conflicts. Learn more here.

- Lightning base components are now open source. Learn more here.

- Navigate users to a record create page with default field values. Learn more here.


Lightning Web Component Local Development:

It's now available in Beta! We can now develop LWC without pushing to the org to preview the changes.

Learn more in the release notes.


Validate users permissions in SOQL:

The "With Security_Enforced" attribute is now available. When you add that attribute to your query will throw an exception if the current user doesn't have the required permission to access all the queried field. Learn more about this attribute in the release notes.

You can use that new feature along with the "Security.StripInaccessible" method to effectively prevent users from accessing records/fields they should not have access to. Learn more about this method in the release notes.


More API Calls:

- The API Calls has been increased from 15,000 to 100,000. Learn more in the release notes.

- The maximum daily cap for API Calls is removed. Learn more here.

- Orgs can now temporarily exceed the API Daily limits without being blocked. Learn more here.


That's it, folks!

There's a lot more for everyone in that release, but those are what I consider the biggest changes. To learn about all those changes, use the official spring '20 Release Notes website.


What are you the most excited about in this new release?


Updated: Jun 26, 2020

What's a List View you're gonna ask?

It's that screen where you can see the list of records for a certain object. One example is the "Recently Viewed" Accounts list.


List Views are everywhere in Salesforce and we use them every single day. Here is one way to make them even better for you!


Tip # 2: Use List Views to Mass Edit records

It happens pretty often that you need to update multiple records at the same time.

Let's say you want to update all your accounts, using a custom List View (see this article) to set a default the Billing State/Province to unknown instead of empty.


Step 1:

Navigate to the object that you want to edit.


In this example, I navigated to the Account Object.





Step 2:

On the left side of the page, click on the List Select button.

Click on the List View you want to use.


In this example, I want to use the Accounts Without State/Province List View.










Step 3:

Use the checkbox on the left side of the list to select the accounts you want to update.

Use the checkbox at the top to select all.


In this example, I selected all the accounts using the top checkbox.






Step 4:

On the right side of the screen, click on the Edit button.





Step 5:

In the account list, click on the field you want to update.

Use the "Update X Selected items" checkbox to update all your selected records with the same value.

Click Apply.


In this example, I clicked on the Billing State/Province field. I want to update those accounts with the value Unknown.









So that's it! You successfully performed a mass update using a custom List View.

In the next articles, you will use your custom List Views to make them even more useful.


Admin Note:

Users will need the "Mass Edits from Lists" permission, available in the System Permission, to use this functionality.

© 2020 by Marc The Code

bottom of page