Salesforce Spring ’20 Features

Всем привет!

Как известно, совсем недавно Salesforce выпустила очередной релиз, который и станет предметом нашего обзора.

Со всем перечнем фич вы можете ознакомиться по этой ссылке:
release notes.
Но, если у вас нет времени для чтения 600-страничной документации, то эта статья для вас. Здесь будут собраны наиболее заметные особенности релизов, с кратким описанием каждой из них и ссылкой на ресурс, где можно почитать подробней.

Начнем с фич, которые заинтересуют Salesforce - разработчиков.

  1. New sObject - DeleteEvent.

Данный sObject может использоваться для выборки и фильтрации записей, которые находятся в вашей Recycle Bin. DeleteEvent работает со всеми стандартными объектами, которые поддерживают Recycle Bin, и со всеми кастомными объектами.

Таким образом, наличие нового sObject сильно упростит работу с удаленными записями и откроет новые возможности для разработчиков в разрезе их взаимодействия с этими самыми записями.

  1. Use longer SOSL/SOQL queries

Теперь лимит символов для SOQL и SOSL запросов равен 100 000 (ранее был 20 000). Надеюсь, новый лимит разработчики будут использовать с умом, и мы не станем свидетелями повсеместных запросов на 100 000 символов.

  1. Skip Validation to Quickly Iterate Package Development

Создание Package может занимать довольно много времени. И теперь, начиная с SFDX CLI version (48.0), у вас есть возможность использовать новую команду sfdx force:package:version:create --skipvalidation для создания package без валидации. В Tooling API для этого используйте поле SkipValidation на объекте Package2VersionCreate.

Пропуск этапа валидации позволит создавать package версии гораздо быстрее, однако такие версии нельзя будет релизить.
Подробней можно прочитать на странице документации 519.

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

Появилась возможность писать запросы с учетом field and object level security permissions пользователя. Теперь эта фича есть в общем доступе. Такие запросы будут работать и для подзапросов, и для cross-object relationships. Но есть определенные ограничения. Среди них — функционирование лишь в Apex, и сильно не рекомендуется использовать такие запросы в классах и триггерах с АПИ-версией более ранней, чем 45.0.
Подробней можно ознакомиться на странице документации 503.

  1. Enforce Field- and Object-Level Security in Apex (Generally Available)

Теперь есть возможность не только фильтровать данные в контексте секьюрности в запросах (с помощью WITH SECURITY_ENFORCED), но и в самом коде. Для этого добавлен метод Security.stripInaccessible, который убирает поля с результатов запросов и подзапросов, если таковые (поля) не доступны текущему пользователю, исходя из его настроек секьюрности. Также этот метод рекомендуют использовать для удаления недоступных полей с sObject-a перед DML операцией для предотвращения exceptions. Более детально можете прочесть на той же странице 503.

6.Use Event Monitoring to track CPU Time Consumed by Apex

Event Monitoring — это платное дополнение к Salesforce Shield. Подробней можно прочитать об этой фиче по ссылке: Блог про Event Monitoring

Так вот, теперь с помощью данной фичи можно отслеживать сколько процессорного времени потребляется триггерами Apex.

Для этого используйте поле Apex Trigger Events CPU_TIME для замера потребляемого CPU time триггерами.

  1. Use More API Calls

Был удален лимит 1,000,000 API requests в день для Enterprise и Professional orgs. В то же время был повышен лимит дефолтного количества API requests в день — с 15,000 до 100,000 для Enterprise Edition, Professional Edition with API access enabled, Unlimited Edition, and Performance Edition.

Теперь посмотрим какими нововведениями релиз порадовал администраторов платформы Salesforce.

1.Salesforce Data Mask

Новый мощный ресурс защиты данных для администраторов и разработчиков Salesforce. Вместо того, чтобы вручную настраивать секьюрность и доступ ко всем данным в sandbox, администраторы могут использовать Data Mask, чтобы автоматически скрывать данные в sandbox.
Существует довольно гибкая настройка “маскировки” данных, также существует 3 вида этой самой “маскировки”.

Во-первых, вы можете просто удалить определенные важные данные с вашего сендбокса.

Во-вторых, вы можете анонимизировать определенный скоуп данных. И вместо реальных данных у вас будет просто рандомный набор символов.

Но самый любопытный это третий вид “маскировки”. Он позволяет псевдо-анонимизировать ваши данные. Это означает, что выбранные поля на определенном объекте будут выглядеть как реальные данные, не являясь таковыми. Например: для поля “Страна” будет сгенерировано значение с реально существующей страной, но не имея ничего общего с вашими секьюрными данными.

Также важным моментом является то, что данный процесс необратим. Вы не сможете обратно открыть данные.

Более предметно с данной фичей, вы можете ознакомиться по ссылке - Data Mask

  1. Einstein Opportunity Scoring теперь доступен бесплатно.

ArticleEin

AI больше не является отдельной фичей, за которую нужно дополнительно платить деньги. Теперь все Salesforce пользователи имеют доступ к просмотру Einstein Opportunity Scoring, тем самым повышая эффективность управления своими Opportunity. Почитать про данную фичу можно здесь: Einstein

  1. Clone Opportunities or Campaigns Along with Their Related Records

Добавлена возможность клонировать Opportunities/Campaigns вместе со всеми связанными записями. Просто добавляете на Page Layout Clone with Related action и потом выбираете, с какими именно записями вы хотите произвести клонирование.
ArticleClone

  1. Einstein Voice Assistant (Beta)

Salesforce не остается в стороне от мировых трендов и тоже запускает своего голосового помощника. В мобильном приложении Salesforce для iOS и Android доступна бета-версия функции — Einstein Voice Assistant. С ее помощью можно создавать Contacts, редактировать Opportunity или логировать Call. Естественно, все это находится еще в довольно сыром виде, но вполне возможно, что в скором времени эта фича реально облегчит жизнь обычным пользователям в Salesforce.
Почитать об этом можно здесь - Einstein Voice Assistant

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

Все новое — это хорошо забытое старое. Так и здесь, нам вернули возможность создавать кастомные кнопки и линки с дефолтными значениями для нового рекорда.

Выглядеть это будет примерно так:

/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)}
  1. Activities: Assign Tasks to a Queue to Share Work Efficiently

Теперь owner-ом объекта Tasks может быть Queue, что существенно упростит работу с Tasks и их распределением.

Вот так это будет выглядеть:

Article%20Queue

  1. Count Unique Values in Report Results (Generally Available)

Теперь появилась возможность смотреть, сколько уникальных записей содержится в определенном столбце репорта. Как это будет выглядеть на практике — можно увидеть на скриншоте:

ArticleReport

Поскольку данная фича вышла в общий доступ, то теперь можно деплоить unique counts с одной орги на другую посредством managed/unmanaged package. С unique counts можно работать в summary formulas, но не в row-level formulas.

Еще одно преимущество релиза в общий доступ: теперь для использования данной фичи не нужно ничего включать в Setup. Чекбокс “Enable Unique Row Count Aggregate in Reports (Lightning Experience Only) from Reports and Dashboards Settings” был убран с Setup.

Вот такой вышел список самых значимых фич по нашему мнению. А какие фичи приглянулись вам?

5 Likes

Data Mask - выглядит круто, уже хочется поиграться.
А то постоянно раньше писали batch’и для анонимизации

Объясни, плиз, как именно это делали? Я имею в виду - батчи для анонимизации

Писали batch, где брали все аккаунты + контакты, внутри рандомайзером подставляли разные имена по типу Jonh Smith, тоже самое с адресами, банковскими деталями и любыми другими полями с sensitive data.
Вот такие батчи были, ты такие можешь для каждого объекта написать.
Но их надо запускать после каждого рефреша для Partial и Full sandbox, хорошо, если теперь есть стандартная фича для этого