In Puncto Entwicklung gibt es was zu jubeln: Mehr als 2000 Elemente in einem Flow und Flow Tests depoyable via Change Sets. Statt CPU Time auf Field Describes zu verbraten, um für jedes Feld exakt herauszufinden, ob man es überhaupt lesen oder schreiben darf, lieber Apex in User Mode verwenden. Nach zwei langen Releases in der Beta endlich GA. Das wird vornehmlich das Leben von ISVs einfacher machen, aber auch alle anderen haben nun keine Ausrede mehr, sich nicht um Feldebenensicherheit in Apex zu scheren.
Mit dem ApexTypeImplementor
kommt die Möglichkeit dazu, alle Klassen via SOQL
zu identifizieren, die ein bestimmtes Interface implementieren. Das klingt nerdig, macht aber einige Sachen eleganter oder überhaupt erst möglich - auch das besonders im ISV Space.
Die neuen dynamischen Binds für SOQL sind ebenfalls hilfreich, ich freu mich richtig, weil es praktisch ist und das Problem mit dem Scope für Bind Variablen löst. Besonders hübsch mit dem oben erwähnten User Mode.
Map<String, Object> acctBinds = new Map<String, Object>{'acctName' => 'Acme'};
List<Account> accts =
Database.queryWithBinds('SELECT Id FROM Account
WHERE Name = :acctName',
acctBinds,
AccessLevel.USER_MODE);
Security
Es wird weiter daran gearbeitet, den Zugriff auf und die Verwendung von API Enabled SessionIds einzuschränken. Hier wird an allen Ecken und Enden technisch oder vertraglich dicht gemacht, auch AppExchange Packages sind betroffen. Das neue Mantra lautet: Wer SessionId will, muß Connected App nutzen.
Die singuläre Run Flow Permission wird durch Sharing abgelöst, das heißt nur wer Zugriff auf den Flow hat, darf ihn auch ausführen. Gilt auch für Orchestrator. Damit werden Berechtigungen für Flows ebenfalls granular.
Execute Anonymous für Apex gibt es nur noch für vollwertige Salesforce Nutzer/Lizenzen, nicht mehr via Experiences oder anderweitig.
Industries oder Platform - FlexCard oder FlowScreen
In diesem Release gibt es eine Beta für Reactive Flow Components als auch die Möglichkeit Http Callouts via Flow ohne Code zu bewerkstelligen. Damit haben Flow Screen in etwa das Level von FlexCards in puncto Connectivity und Reactivity erreicht und hübscher, weil sie sich nahtlos ins SLDS einfügen, sind sie auch noch.
Lohnt es sich in beides zu investieren, wenn man nicht gezwungen ist? Nein. Ich hab lange Zeit ein wenig neidisch auf FlexCards geschielt - Deployments und Entwicklung mal außen vor gelassen - aber das ist jetzt vorbei.
Ein Schelm, der...
Salesforce hat viele Stellen abgebaut. Im November hat das HR Center von Work.com die Funktion "Employee Transitions" eingeführt, die "Work-Life Events" abbilden und Mitarbeiterinnen bei wichtigen Ereignissen an die Hand nehmen soll - darunter "Termination" und "Offboarding".
Bret Taylor hat Salesforce verlassen. Ohne Kausalität zu suggerieren, möchte ich darauf hinweisen, daß fast alle Salesforce <=> Slack Features von 2 monatlichen Releases im Anfang von 2022 auf unregelmäßige gewechselt sind. Kurzum, Releases sind rar geworden und bei manchen Apps passiert wenig, bei Trailhead für Slack passiert seit Februar letzten Jahres gar nix.
MuleSoft Composer für Salesforce heißt nun Flow Integration - damit es zu keinen Verwechslungen kommt - und ganz hot off the press: Automotive Cloud. So neu, daß in den Demo Bildern noch Widgets vorkommen.
The sorry state of service
Kunden können ungeduldig sein, keine Frage. "Wieso geht da keiner sofort ran?" "Warum muß ich auf eine Chat Antwort so lange warten, ich muß doch gleich los?" "Ist denn da keiner?" "HALLO?!"
Salesforce hat im Piloten eine Antwort darauf, die ich uncharmant finde.
To reduce wait times and provide more responsive service, focus your agents on time-sensitive work items such as chats or voice calls. Designate longer duration work items such as cases as interruptible so that agents can accept time-sensitive work instead.
Erzwingbare Interruptionen für Service Agentinnen und Agenten, damit die Quengelnden schneller bedient werden als die Email To Case Queue? Das klingt für mich nach der Einladung zur Unzufriedenheit.
Diesmal müssen wir verzichten auf
- Create Custom Notifications Enabled Across Delivery Channels
- Send Notification Actions Now Support Desktop and Mobile Notification Types
- Add a Notifications Component to Your LWR Site (Beta)
- Get Accessibility Changes to Lightning Design System Icons
- Minimize Service Disruptions with the Flow Automation Pack for Incident Management
Release Updates
Acht Release Updates gehen live mit dem kommenden Release. Sieben davon könnten meiner Meinung nach dazu führen, daß etwas nicht mehr funktioniert wie vorher, bitte prüfen falls noch nicht passiert.
Auch MFA wird mit Spring 23 aktiviert für einen Teil der Orgs, die anderen folgen im Sommer, aber MFA wird nicht erzwungen. Das heißt, es ist abschaltbar. Vertraglich ist man jedoch zu einer Multi Factor Authentication verpflichtet. Gleiches gilt für Enhanced Domains.
Ich wußte nicht, daß man per Setup Klick unendliche viele inaktive Picklist Werte speichern konnte. Das macht Salesforce via Release Update rückgängig.
Drei Release Updates hat Salesforce gegenwärtig ins Nirvana geschickt. Ich darf mir auf die Schulter klopfen, bei Visualforce habe ich eine Wette mit mir selbst gewonnen.
- Keep Working with Tab-Focused Dialogs
- Prevent Consecutive API Navigation Calls
- Validate Getter and Setter Access Modifier Enforcement During Visualforce Expression Language Parsing
- Nicht gecancelt, aber auch nicht einschalten, bitte: Escape Expression Language Evaluations in
<script>
and<style>
Contexts in Visualforce Pages and Components:
"Don’t enable this update. Wait for the update to be automatically enabled on the enforcement date. If you enable this update before the enforcement date, third-party pages can behave unexpectedly."
Bis auf weiteres hat Salesforce den schon seit Jahren in Entwicklung befindlichen Nachfahren der refId
verschoben und auch das alte Release Update zum neuen Case Email Threading Verhalten gecancelt, das heißt im Klartext: Niemand wird gezwungen aufs (neue) neue Threading umzusteigen. Allerdings kann es durchaus mehr als das alte. Durch Threading im Body und Header der Email kommt es zu weniger unnötig erstellten Cases, was eigentlich eine gute Sache ist. Leider hat Salesforce das Thema schon sehr lange auf dem Tisch und das Vertrauen ist gesunken, daß das neue Threading wirklich kommt und gut wird.
Breaking Changes
LWC rendert in Spring 23 schneller, aber unter Umständen sind in HTML Attributen, wie zum Beispiel class
, Spaces dazugekommen oder andere Zeichen. Das könnte Ärger geben mit Selektoren wie
this.template.querySelector('[class="highlight yellow"]')
Denn das Attribut könnte einen zusätzlichen Space nach dem Update haben:
<div class=" highlight yellow">
Wie in den Release Notes beschrieben, lieber querySelector('.highlight yellow')
verwenden.
Async SOQL wird beendet, in dem Link wird unter anderem Batch(!) vorgeschlagen, um es abzulösen.
Die MethoderecalculateFormulas()
unter System.SObject
gibt es nicht mehr ab API 57, bitte System.Formula.recalculateFormulas()
nutzen.
Lieblingsfeatures
- Log Objekte für Flows:
FlowInterviewLog
undFlowInterviewLogEntry
- Oft sind es kleine Dinge: Beschreibungen und Details zu Flow Elementen direkt im Flow Builder ansehen können
- Nutzern Sandbox Zugriff gewähren ab Erstellung statt Email Adresse manuell zu resetten wie üblich
- Auf Wunsch, Picklist für Gender Identität und Pronomen auf vielen Standard Objekten aktivieren
- Das Sammeln der Daten und Umarbeiten, um es in einen Bot zu gießen, ist aufwendig. Einstein Conversation Mining in der Beta verspricht, Chatprotokolle auszuwerten und die Resultate schnell dem Template oder einem Bot hinzufügen zu können.
- Ist doch schön, wenn man was geschenkt bekommt. Benutzerdefinierte Nummer und Währungsfeldern für Forecasts bereits ab Professional/Enterprise, wobei Datumsfelder nun auch unterstützt werden. Ferner mit neuer Standard UI und der Möglichkeit, selbst was zu bauen (nochmal hier).
- Es hatte damit begonnen, daß Experience Cloud Metadaten lesbar wurden, jetzt sind sie auch einzeln - statt immer nur als ganzes - deploybar - via
DigitalExperienceBundle
undDigitalExperienceConfig
. Yay.
- LWR Sites bekommen einige Aufmerksamkeit (in Form von Betas), die allesamt lesenwert sind. Besonders gefällt mir, daß ich auf LWR Sites ähnlich zu Record Pages bestimmen kann, ob eine Component sichtbar ist oder nicht: Component Visibility Rules
lwc:ref
zusammen mitthis.refs
ist der einfache Ersatz fürthis.template.querySelector()
. Mi gusto. Genauso lecker ist,@wire
Adapter via custom Formatters debuggen zu können, da fehlte Einsicht und da waren mir imperative Apex Calls oft lieber. Außerdem wirdtemplate if:true
undtemplate if:false
vonlwc:if
,lwc:elseif
, andlwc:else
beerbt.- Für CRM Analytics Dashboard Bauer: eine Liste an Verbesserungen über Single Click Navigation, Formatierung, einfacherem Editieren von Queries mit Bindings, leichterem Zugriff auf Salesforce Parent-Child-Records und einigem mehr
- Für Report Bauer: Dynamische Filter
Für Entwickler
- Salesforce Functions auf deutschen Datenzentren verfügbar, ditto für Pub/Sub API
- RFC 7230 Validierung für REST Header
- Wer Custom Invocable Actions via REST einsetzt, freut sich, daß via Release Update Rollbacks bei Exception erzwungen werden können
- Toasts für LWR Sites
- Für selbige in der Dev Preview ein Custom Property Editor
- Wir dürfen mit VF, Aura und LWC an Salesforce Voice Softphones schrauben
- Apex Tests schreiben, die Micro Batching Verhalten prüfen können. Micro Batching wurde letztes Releases für eingeloggte Experience User z. B. bei Case Erstellung eingeführt und in diesem Release wird es auch auf Guest Site User ausgebreitet. Im Grunde werden Experience Cloud Records - aus Performance Gründen - über asynchronem Wege in die Datenbank geschrieben.
Network.createRecordAsync('GENERIC', new Case(Subject='Help!');
- Lightning Web Security (LWS) für Aura in der Beta. Neue Orgs, ohne LWC oder Aura Components, starten mit aktiver Lightning Web Security.
- Ein Wire Adapter für Salesforce GraphQL API im Piloten
- Weiterwarten auf die Ablösung von
force:refreshView
, das entsprechende LWC Modullightning/refresh
noch in der Beta - Ich gehöre eher zur Cumulus Suite mit Robot Fraktion, aber daß UTAM HTML einlesen und PageObjects ausspucken kann, ist ein ziemlich cooles Feature.
- Individuelle Queueables mit einem selbstgewählten
delay
starten und/oder einen Org weiten Delay angeben - Field Describes gehen manchmal so tief, daß aus den Augen verloren gehen kann, zu welchem Objekt sie gehören. Nicht mehr mit
getSObjectType()
Für Admins
- History Tracking für Angebotsfelder und Aktivitäten
- Wenn ihr dem Support schreibt, könnt ihr RichText und Bilder in Dashboards hinzufügen (Beta)
- Der View All Button auf Dynamic Related Lists ist da (mit der Beschränkung auf bisher 30 Datensätze hatte das Feature wenig Fans)
- Herausfinden, wer welche Dashboards und Reports abonniert hat
- Mehr Power für Custom Address Fielder - z. B. Support für Unlocked Packages
- Zwei Permission Features: User Access Policies - für das Automatisieren der Arbeit rund um Nutzer und Permissions - und Permsets statt Profile beim Felderstellen.
- Neue Flow Elemente: Flows in Slack aufrufen, SOSL Suche für personenbezogene Records (Individuals) und eine Look Ahead Suche für Choices
- Wer Callouts aus Flow auf eine API braucht ohne Code zu schreiben, möchte in dieser Beta vorbeischauen. Im Hintergrund wird der entsprechende External Service aufgesetzt.
- In Lightning über die Sharing Hiearchy jetzt auch die Gründe einsehen können
- REVERSE() ist eine der Formeln, für die mir kein Verwendungsfall einleuchtet
- Surveys schneller und hübscher erstellen
- Case Emails nicht über Salesforce sondern via Gmail oder Outlook verschicken und eine neue Option, damit in Case Email nicht stets der ganze Verlauf mitkopiert wird - denn das führt zu Problemen mit zu großen Emails bei laaaaangen Cases.
- Quality of Life Verbesserungen: Fehler im Micro-Batching - das benutzt die Experience Cloud um Records asynchron zu erstellen - jetzt als Email Nachricht erhalten statt wie bisher selbst danach kramen.
- Bots können jetzt auch auf ein Objekt weiterleiten statt nur auf einen anderen Dialog
- Man soll bei Experience Deployment Errors dem Support schreiben und im Betreff
[exp-bundle-error]
verwenden. Kein Scherz. Man bemüht sich um verständlichere Deployment Errors. - Tabellen mit Multi-Record-Selections in Flow
- Einstein Case Classification unterstützt verschlüsselte Felder
- Limits wurden erhöht - doppelt so viel Offline Support auf mobilen Geräten via Briefcase
- Bausteine vorkonfigurieren (Bild und Text, ein Umfragelink), die dann in Chats schnell wiederverwendet werden können: Messaging Components
- Dynamic Forms auf Lead und Case angekommen und Dynamic Actions (unterstützt alle Standard Objekte) für alle und jede.
- Pardot/Marketing Cloud Engagement entfernt einige Connectoren wie WebEx
- "Hide Personal Information user management setting is now retired". Es gibt stattdessen "Enhanced Personal Information Management". Das kommt mit dem Fieldset
PersonalInfo_EPIM
und Felder, die da drin sind, werden Experience und Guest Site Usern nicht mehr angezeigt. Umfängliche, weitere Details hier.
Für Nutzer
- Hat viele Jahre gedauert. "Log A Call" gibt es auch für Case Activities
- Ein "Finde den richtigen Record" Feature für Service Cloud Voice, wenn mal wieder jemand anruft, die Nummer nicht automatisch zugeordnet bekommt und daher im Gespräch nebenher den richtigen Datensatz verlinken muß. Dafür läßt sich ein Flow Template benutzen. Auch Screen Pops an der richtigen Stelle für die Agentin sind mit Flows möglich.
- Landscape ist in der Salesforce Mobile App in allen Versionen angekommen
- Statt 7, maximal 15 Reports/Dashboards abonnieren und man kann mit Berichten aus verschiedenen Verzeichnissen Collections erstellen.
- Ein aufgeräumter und pragmatischer Activity Composer
- Die Todo Liste ist in der Sales Cloud Teil der Utility Bar und man kann sie sogar umsortieren. Wahnsinn.