Spring 21 - Weniger Aura, mehr Flow und die Zukunft von CRM
Good Bye, Aura, Good Bye
Aufmerksame Beobachter der Preview-Sandboxen oder Pre-Release Orgs haben vielleicht bemerkt, daß Record Modals anders aussehen beim Bearbeiten, Klonen oder Neuanlegen.
Diese Dialoge werden ab Spring 21 mit LWC statt Aura befeuert, wie aus der Trailblazer Group dazu und insbesondere aus diesem Doc für Browser-Automation-Tester hervorgeht. Offizielles Statement gibt es hier. Das war möglich, weil ein anderer Schritt Aura auf der Platform auszumerzen vollzogen worden ist: Lightning Web Component Actions (Pilot).
Bleiben noch Action Overrides, die aktuell noch Aura benötigen, dann ist es endgültig vorbei mit dem großen Salesforce-eigenen Wurf zum Thema Component Development.
Flows und Limits
Mit diesem Release machen Flows erneut Land gut und kommen dem, was Apex Trigger können, ein weiteres Stück näher - besonders mit Prior Values für Flow (Think: Trigger.old). Dazu bitte bei Jodie Miners nachlesen, was die interessanten und kniffeligen Details anbelangt.
In der Beta befindet sich ein mehrspaltiges Layout für Flow Screens. Damit wird man sehr gut UIs bauen können, die letztens noch eine Entwicklerin als Component bauen durfte.
Mein Wermutstropfen bleiben Flow Limits - nicht nur auf Flow Interviews ingesamt - sondern insbesondere auf Executed Elements (ebd.). Dazu zählen alle Elemente, die kein Screen oder DML sind. Wenn beispielsweise viele Decision Elemente innerhalb eines Loops über eine Liste an Records laufen, dann bedeuten vielleicht schon weniger als 200 Records, daß das Limit von Executed Elements erreicht wird und der Flow failt. Mehr Details von Jorgan Strathams in einem Blogbeitrag hier.
Salesforce Anywhere - Quip als CRM der Zukunft?
Quip for Customer 360 heißt jetzt Salesforce Anywhere Advanced und ist für mich gerade nicht ohne weiteres von Salesforce Anywhere zu unterscheiden - bis weitere Informationen folgen.
Wenn ich es mir wünschen dürfte, dann wäre Salesforce Anywhere (und damit Quip) mit den vielen neuen Features bereits Teil der Lightning Platform und nicht ein Add-On Produkt.
Wieso? Felder einzeln (und alleine) zu bearbeiten ist öde, Salesforce Anywhere versucht sich genau an den Herausforderungen zwischen tabellarischen CRM Daten einerseits und effizienter Kollaboration im Team am Bildschirm andererseits.
Ein Quip-basiertes Dokument läßt sich einfacher verwalten, verändern oder entfernen als die vielen Lightning Components, die ich für die perfekte Record Page brauche. Da mit Spring 21 auch Flows Quip Dokumente (bzw. bestimmte Bereiche) verändern, sperren oder nach PDF exportieren können, stehen viele neue Möglichkeiten offen.
Unschärfen bleiben bei Anywhere plus oder versus Chatter - und außerdem ist Anywhere eine eigene mobile App zusätzlich zu Salesforce Mobile.
Guest Site User
Public Guest Site User ist auf CREATE und READ in Sachen CRUD eingeschränkt - auf einem Schlag werden damit viele Blog-Beiträge nutzlos, die mittles Public Site Guest User Communities (aka Experience Clouds) aufzubohren oder Custom REST APIs zu erstellen gelehrt haben. Für letzteres ist dann wohl ein Middle-Tier auf Heroku oder AWS das Mittel der Wahl.
Wenn man weiß, was zu tun ist, ist es noch genug Arbeit. Salesforce stellt das Profil ganz zurück, d.h. auch legitime Eingriffe wie die Einstellungen zu Apex Klassen Zugriff werden zurückgesetzt.
Wenn man aber gar nicht weiß, ob oder wie man betroffen ist - weil "irgendwann irgendwer was gebaut" hat, dann wird's eng: Für Organisationen mit Rest-Integration mittels Public Site User stelle ich mir nämlich vor, daß es gar keine Sandbox gibt, die mit Test-Integrationssystemen verbunden sind. Das heißt, es fällt nichts auf, bis es in Production kaputt geht.
Breaking changes
- Guest Site User weiter eingeschränkt, siehe oben
- Mit Sommer 21 werden verschiedene alte API Endpoints abgeschaltet, in der SOAP API Versionen 7.0 bis 20.0. Hat keinen Einfluß auf interne Salesforce API Versionen wie zum Beispiel Apex.
- Auch ab Sommer 21 bitte auf "Legacy" External Services achten und diese updaten
Nicht geschafft
- Change Email Addresses and Reset Passwords Securely and Easily
- View Lightning Apps by Default
- Find Records in the Salesforce Mobile App Using Everyday Words (Beta)
- Filter Records Using Natural Language Search on Mobile (Beta)
Lieblingsfeature
- Ein Release Update sorgt dafür, daß CPU Time in Flows und Process Builder korrekt gemessen werden kann. Wichtig:
Also, because CPU time is now accurately counted, flows and processes fail after executing the element, criteria node, or action that pushes a transaction over the CPU limit. We recommend testing all complex flows and processes, which are more likely to exceed this limit.
- Dazu passend: Mehr Flow Infos in Debug Logs und das Debuggen von Scheduled Flows. Ferner eine ganze Latte an Empfehlungen und Hintergrundinformationen.
- Saustark für ISVs: Apex Informationen in App Analytics - das wird richtig gut. Die Informationen finden sich allerdings nur in den Package Usage Logs. Wir kriegen Platform Cache geschenkt; auch an die nötigen Metadata Settings für Scratch Orgs hat man gedacht. ISVs können herausfinden, wie lange Push Upgrades bei Kunden dauern und Predictions in Managed Packages ausliefern, ditto für Lightning Email Templates. Außerdem gibt's
BatchApexErrorEvent
für Managed Packages:Include BatchApexErrorEvent triggers in your managed packages to monitor the health of batch jobs and take necessary corrective action without any post-installation steps.
- Hervorragend zum Ausprobieren, Entdecken und Lernen:
SELECT FIELDS(ALL|STANDARD|CUSTOM) FROM Account LIMIT 100
- davon unberührt bleibt die Best Practice aus der Datenbank nur zu holen, was man wirklich braucht. Queries mitFIELDS
gelten alsunbound
und werden nicht auf allen Kanälen unterstützt, zum Beispiel in der Dev Console nur mit zusammen mit LIMIT einsetzbar. - Custom Metadata Types brauchen kein SOQL mehr sondern können direkt über Apex aufgerufen werden
- Change Data Events mit Field Enrichment sind GA, d.h. wir können den Change Data Capture Events mehr Kontext Informationen mitgeben und extra Queries vermeiden.
- Platform Event Subscriber Configuration bestimmt, als welcher User ein Platform Event gehandelt wird und wie groß die Batch Size sein darf. Ich hab nicht ausprobiert, was passiert, wenn der Nutzer deaktiviert wird. Subscriber Configuration auch für ChangeSets verfügbar.
- Invocable Apex Metoden mit
@InvocableMethod(callout=true, label=”My Action Label”)
erlauben der Flow RunTime die Aufrufe zu optimieren. Dazu bitte hier weitere Details nachlesen - Sandbox Source Tracking Generally Available, ditto für Org-Dependent Unlocked Packages. Außerdem mein Favorit für den bissigsten Vermerk:
When untangling your production org metadata is too daunting of a task, use org-dependent unlocked packages.
- Endlich Custom Labels für Record Page Componenten wie Accordion oder Tabs. Leider keine Informationen zu Namespace Verwendung.
- Die Salesforce Mobile App bekommt "native scrolling", da hab ich Jahre drauf gewartet.
- Im letzten Release versprochen, jetzt auch wirklich: Lookups auf
OpportunityLineItems
- Als hätten sich Salesforce und der Online-Duden abgestimmt: Alles Geschriebene - ausgenommen alter Code - wird nach Kriterien der Inklusivität überarbeitet (Knapp in den Release Notes hier).
Für Entwickler
- Alle Änderungen im Apex System Namespace
- Viele Features neu in Scratch Orgs aktivierbar, darunter Einstein Search, Call Coaching, MyTrailhead, Walkthroughs und mehr
- Einstein Intent kommt mit 50 statt bisher 150 Beispielen aus, damit man loslegen kann
- User Interface API unterstützt viele neue sObjekte, Related Lists, MRUs - darunter Business Hours and Holidays
- Die Tableau (formerly known as Einstein Analytics) REST Api wird granularer
- Bestimmte Methoden in den Commerce
ConnectAPI.CommerceStorePricing
/ConnectAPI.CommerceWhishlist
Klassen sind für Guest User verfügbar - Salesforce Functions in Public Beta
- Apex
ConvertLead
kommt mit Person Accounts ab Spring besser zurecht, siehe auch hier - Aus Components CMS Content Pages mittels
PageReference
ansteuern und Navigationsurls ausgeben. Eigene (Component basierte) Community Templates GA DescribeFieldResult.getReferenceTo()
liefert ab Spring / API 51.0 immer ein vollständiges Resultat unabängig vom Context User- Wenig Neues bei Lightning Components,
lightning-input type="Text"
bekommtselection-start
/selection-end
Properties. Hübschere Map Markers und mehr Styling Hooks sind auch mit dabei. - Flexibel LWCs in Flows einzubinden, bedeutet verschiedene Optionen zu verwalten - Devs können Admins beistehen und eine gute UI für die Optionen bietet: Custom Property Editor, der ab Spring generische Output abonnieren kann.
- Ein Pilot, um Metadaten aus managed unlocked packages / 2nd Generation packaging zu entfernen. Von Anfang an dabei sind sObjekte, die ich als 1st Generation Packaging Kunde selbst nicht löschen kann - zum Beispiel CompactLayouts. Diese sind besonders fies, weil man ein Custom Object, das noch ein Compact Layout hat, nicht löschen kann.
- Ebenfalls ein Schritt weiter als bei 1st Gen Packaging: In Salesforce-Release-Update-Fenstern selbst bestimmen, mit welcher Version (
previous
oderpreview
) eine neue Paketversion erstelllt wird. - Neue Safe-Guards wie
Max-ReEnqueues=5
bei Transaction Finalizers (Beta) - Im OAuth Flow Secrets für den Refresh Flow erzwingen
- Salesforce Functions (Beta) sind mit JavaScript oder TypeScript nutzbar. Apex und anderes wird noch nicht unterstützt.
- Mobile Publisher kann für iPad optimiert werden
- Einstellungen für Cookies in Communities / Experience Cloud
CalenderViews
programmatisch erstellen
Für Admins
- Lightning Email Templates für alle Automatisierungen verfügbar
- Neben korrekter CPU Time Messung hat die Flow Runtime weitere Verbesserungen erhalten, insbesondere im Callout-Verhalten.
- Manual Sharing auch in Lightning Experience
- Einstein Opportunity Scoring nimmt ein globales Modell solange man selbst nicht genug Daten hat. D.h. jeder kann Einstein Opportunity Scoring einsetzen.
- Selbst wenn man kein Sharing auf einen Record hat, können Lookup Felder Daten anzeigen, die ein Nutzer nicht sehen sollte. Statt des geplanten Release Updates, gibt es das als Einstellung.
- Via Release Update das Read Only Standard Profil in ein eigenes (Custom Profile), bearbeitbares verwandeln. Siehe auch hier.
- Most Recently Viewed ListViews erhalten Ritterschlag und unterstützen jetzt Actions
- Shield bekommt die Möglichkeit im Hintergrund zu verschlüsseln
- Apex Soap, Apex Rest und Apex Callout im Event Monitoring verfügbar.
- Hilfetexte mit 510 statt 255 Zeichen möglich
- Aus Performance Gründen gibt es ein neues Limit auf inaktive Unrestricted Picklist Werte: 4000 und gilt ab Spring 21 für neue Picklist-Werte.
- Dynamic Actions befinden sich im Limbus zwischen GA für manche Standard Objekte und dem Rest als Beta
- Viele Jahre nach Einführung, können MyDomains jetzt in der Sandbox gestestet werden und sind einfacher zu pflegen.
- In der Lightning Usage App Multi Factor Informationen abgreifen
- Custom Metadata Limits sind in der System Overview einsehbar.
- Neue Orgs erhalten 5000 Benutzerrollen, Bestandskunden müssen sich nach wie vor an den Support wenden.
- Für Cloud Integration User Licences gibt's spezielle Permsets, kann man in Scratch Orgs gut ausprobieren.
- Klare Performance Indikatoren für Record Page auf Desktop und Mobil
- Ein "Data Checker" für Einstein Predictions, der besser verständlich macht, wo was fehlt oder schiefgeht.
- 1st Gen Packaging Kunden (also Subscriber) können Flow Versions, die aus aus Paketen stammen, unter bestimmten Bediungen löschen.
- Für Flow Screen Navigation entscheiden, ob vom Nutzer eingetragene Werte erhalten bleiben sollen oder nicht
- Für cases auf Wunsch die no-reply@salesforce.com ersetzen
- SAQL bekommt einen
LIKE
Operator und Random Sampling und in der Beta: SQL statt SAQL - Custom Einstein Dashboards Actions hochgedreht auf bis zu 100 Records.
- Externe Modelle nach Einstein Discovery importieren (Pilot) und Predicitions in Datasets einbauen - samt neuer UI
- Vorgebaute Entitlement Prozesse zum Schnellstart
- Bots für Service Cloud haben einige spannende Betas, mein Favorit: Object Search - damit kann ein Bot Salesforce Records ausgeben.
- Zeitzonen für Lightning Scheduler. Wie war das bisher?
- Bilder für in App Learning und verbessertes Dialog Handling.
Für Nutzer
- Trailhead in App Learning (Beta). Admins können passende Module aussuchen und Nutzer an der richtigen Stelle dann das passende lernen.
- Auch Threaded Emails, also Antworten auf Emails, lassen sich jetzt schedulen, bisher ging das nur mit neu erstellten Emails.
- Leider erst Beta, Accounts als CampaignMembers
- Noch etwas länger, weil Pilot, werden automatische Chat-Antworten in in Landessprache brauchen. Außerdem sind mindestens 10.000 abgeschlossene Konversationen nötig. Schon heute gibts Knowledge Artikel in Landessprache.
- Salesforce Meetings bekommen Meeting Digest - gibts aber nur für Activity Capture Kunden
- Eigene Forecast Quotas in der Mobile App editieren