Winter 21 - Events, Trigger und ein Release
Paradigmenwechsel
[A platform that is] "event driven instead of trigger driven"
- Wade Wegner, Salesforce Senior Vice President of Product, am 13.10.2020 in einem bis dato unveröffentlichten #TrailblazersInnovate Clip
Der Hintergrund: #TrailblazersInnovate ist eine Video Serie, die - ich darf's nicht laut sagen - statt der Dreamforce gerade als Live Stream jeden Dienstag läuft. Vom HomeOffice statt von der Bühne in Moscone West hat Wade Wegner vergangenen Dienstag das neue Plattform-Paradigma verkündet.
Bis auf den einen oder anderen neuen Channel ("Consent Event Stream") oder Details im Event Publishing (s. u.) hat Wade Wegners Ansage mit dem Winter 21 Release nicht viel zu tun. PR-mäßig ist die Katze damit aber endlich aus dem Sack. Trigger sind out, sagt jetzt auch das offizielle Salesforce Marketing.
Verschwiegen dabei bleibt, daß Trigger aktuell eine riesige Rolle spielen und sie nicht "mal schnell" durch Events auszutauschen sind. Technisch sind Platform Events gegenwärtig als Apex Trigger aufgehängt - Marketing hin oder her.
Trigger gewährleisten, was ich bei vielen Events selbst bedenken muß: Konsistenz - gerade auch in der Rückabwicklung - durch eine geschlossene Transaktion.
Außerdem kosten Trigger nichts, Subscriptions aber gegebenenfalls schon.
Apropos Dreamforce: Aktuell höre ich wenig über Customer 360 (Data Manager), es ist zu einem dynamischen Produkt mit häufigen Releases gewachsen. Ich kenne gegenwärtig niemand mit HandsOn bzw. Kosten-Nutzen Erfahrung.
Second Generation Packaging; Compliance Updates
Winter 21 bringt eine Reihe lesenswerter Updates für Päckle-Schubser zweiter Generation mit - besonders der Package Ancestry Tree und die Option, (nicht releaste) Paket-Versionen löschen zu können. Es gibt Verbesserungen in Puncto @namespaceAccessible - und nein, an der Lightning Restriktion hat sich nichts geändert.
Packaging2 als der neue "Standard Packaging Prozeß" wird zusehends reifer. Persönlich bin ich froh, auf lang ausgetretenen Pfaden zu arbeiten. Neue ISVs, die mit Second Generation anfangen, haben spannende neue Möglichkeiten, Pakete zu schnüren - aber jede Kinderkrankheit ist schmerzhaft, bis alles wirklich ausgereift ist.
Für alte und neue ISV Hasen ändert sich, daß für die Subscriber Login Console Multifactor-Authentification nötig wird.
Das Kleingeschriebene in der Salesforce Trust & Compliance Dokumentation, wer liest das nochmal? Da steht zum Beispiel drin, daß Salesforce sich von Cognizant als "Sub Processor" verabschiedet hat.
Hallelujah in der Apex Welt
Ein großes Hallelujah ging durch die Apex Welt mit der Ankündigung des sogenannten Safe Navigation Operator '?'
. Da sagt ein Bild mehr als tausend Worte.
Beta, Piloten und viele Produkte
Beta, Beta, Beta und auch noch Leckerbissen wie (GA and Beta) bei Dynamic Actions oder Piloten im Pilot: Die Data Processing Engine soll Daten innerhalb Salesforce im großen Stil aggregieren - allerdings nur für Manufacturing Cloud Kunden mit Rebate Piloten. Ditto für Batch Management - ebenfalls ein Pilot, der nur für Kunden des Rebate Piloten verfügbar ist.
Gerade die letzten beiden sind Beispiele von Funktionen, die ich mir für alle wünschen würde. Sie werden aber als properietäre Teile der Industry Clouds ausgerollt. Dieses Release wurde massiv in die Public Sector Cloud investiert. Innovation, ist mein Eindruck, verteilt Salesforce mittlerweile sehr strategisch auf Verticals - besonders auch technisch: Die einzelnen Industry Clouds kriegen eigene Metadaten-Updates, eigene Release Notes und eigene Release Zyklen. Der Mehrwert des Lesen der Release Notes en gros ist zu hinterfragen:
Denn vor dem Hintergrund dieser Entwicklung verlieren die drei großen Salesforce-Release-Zyklen an Bedeutung. Und selbst innerhalb des Release Zyklusses sind zahlreiche Feature durch eigene Lizenzen abgekoppelt.
Praktisch wäre da ein "Scan my Features" Knopf, der mir die Release Notes auf meine Org/Funktionen zusammendampft.
Dabei sehe ich immer wieder größere Gaps zwischen "Käuflich als Produkt zu erwerben" und "Gewerblich einsetzbar". Salesforce CMS ist ein Beispiel aus diesem Releases, da das CMS bisher ohne File Upload vom eigenen Computer auskommen mußte. Auch schön: "Salesforce Order Management" gibt es nicht erst seit gestern, Rückabwicklung (Return Orders) sind allerdings neu in diesem Release und immer noch mit einiger Handarbeit verbunden.
Rebranding - alter Wein in neuen Schläuchen nur nicht Work.com
Experience Cloud. Erst Portals, dann Communities - jetzt eben Experience Cloud. Es soll wohl um "Digital Customer Experience" gehen - was vor dem Hintergrund, wie viel sich mit Communities (+ CMS) erreichen läßt, nicht überrascht. Da Salesforce seit einigen Jahren hoch regulierte Industrien wie Banken und Versicherungen begleitet, werden auch alle Sicherheitsupdates in puncto Public Site Guest User verständlich - was seit dem Sommer Release ein heißes Thema ist. In manchen Bereichen ist Salesforce auch wieder zurückgerudert - zum Beispiel bei Flows und Externen Standard Profilen (s. u.).
Was im Sommer noch Einstein Analytics war, heißt jetzt Tableau CRM. Ich weiß nicht, was das konkret für die ursprüngliche Wave Technologie bedeutet. Dabei kann ich nur vermuten, daß sich die Technologien - im besten Falle - irgendwo in der Mitte treffen werden. Auf kurze Sicht erwarte ich auch kein großes Umlernen auf Plattformseite.
Field Service Lightning heißt nur noch Field Service.
Work.com wird WDC. WDC fliegt im Februar 2021 aus den Orgs raus, das ursprüngliche Work.com Produkt ist damit begraben. New Work in Zeiten globaler Pandemie sind der neue Fokus als Produkt mit eigenen Release Notes.
Breaking Changes
- Gerade schon erwähnt, ist aber wichtig, daher nochmal: Sicherheitsupdates in puncto Public Site Guest User
- Legacy Transaction Security EOL
- Ab Frühling 21: CSP Änderungen in Communities - keine Inline Scripts oder Script Access
- Ab Sommer 21: Standard Profile werden abgehärtet. Das heißt noch weniger am Standard Profile direkt einstellen zu können als bisher.
- Ab Sommer 21: Schon lange angekündigt, keine SLDS Styles mehr mit
--
.slds-button--brand
mußslds-button_brand
heißen. - Das ist so alt, das weiß keiner mehr: Pilot für "Branch Packaging Orgs" wird abgestellt.
- Byebye "App Performance App". Stattdessen Optimizer und das hier benutzen.
Nicht geschafft
-
Removed: Do More with Opportunity Products
We removed lookup relationships between OpportunityLineItem and other objects while we make some changes to this feature.
Schade.
-
Removed: AiVisitSummary from Consumer Goods Cloud
-
Removed: Block Activity from Automated Emails with Einstein Activity Capture
-
Removed: Tap Into Salesforce from Your Home Screen with the Quick Navigation Widget
Lieblingsfeatures
- Der Tradition einiger Releases folgend, viele Verbesserungen rund um Flow und Flows bauen. Darunter Before Delete Flows, als "anderer Nutzer" Flows in Sandboxen debuggen und bei Error Emails via Link direkt an die richtige Stelle. Auch schön: Wie schon bei Workflow Rules nur auf bestimmte Veränderungen reagieren.
- In Lightning Experience gelöschte Felder verwalten
- Dynamic Actions für Custom Object auf Desktop GA. Auch Dynamic Forms (Bild) sind GA für Custom Objects.
- Scratch Org Shapes offiziell in der Beta. Mindestens so wichtig wie Source Tracked Sandboxen (Beta, Sommer 20). Als ISV hab ich das Nachsehen, denn wir brauchen dringend Snapshot Orgs.
- Eine Übersicht über die Qualität von Einsteins Vorhersagen und dann gibts noch einen Recommendation Builder in der Beta. Soll helfen, die richtigen Produkte (z.B.) den richtigen Leuten zu empfehlen. Aber nur für bestimmte Lizenzen: Service Cloud Einstein, Lightning Platform Plus und and Lightning Field Service Plus.
- Kennt ihr schon Solution Kits? Neu dabei ist eine Anleitung, wie man WhatsApp, Marketing Cloud und Service Cloud zusammenschraubt. Voraussetzung ist natürlich, alle Produkte gekauft zu haben. Oder wie man in Financial Service Cloud Darlehnen für COVID-19 aufarbeiten könnte. Weitere Updates zu Solution Kits hier.
- Inline Salesforce Data in Quip Dokumenten. Inline! Und wichtige, überfällige Schritte in Template Management mit einer " Template Library".
- Die Formelfuktion
PREDICT(PredDefId, [recordId] | [field, value, ...]
, um Vorhersagen in Formelfeldern nutzbar zu machen - API Version für Flows festlegen. Am besten auf API 50, damit die Runtime Verbesserungen (Null Values, Tippfehler in Variablennamen) voll zur Geltung kommen können.
- Auf Englisch am schönsten: Detect current Apex context at runtime with Request ID and Quiddity. Ob der eigene Code durch Integration oder Nutzer in der Org anstoßen wird, läßt sich mit der Klasse
System.Request
jetzt herausfinden. Dabei hilftSystem.getQuiddityShortCode
, Details hier - Platform Events, die sofort rausgehen (publish immediately), verhindern nicht mehr CallOuts zu starten und wer möchte, kann herausfinden, wie viele Events in den letzten 24h ausgeliefert wurden. Aber am besten ist eigentlich, daß Event "Trigger", also Subscriptions, an/abschaltbar sind in der UI.
- Custom Notifications auch aus Apex senden und endlich
PATCH
für HTTP Callouts. - Ein Einstein Analytics Watchlist Dashboard, das aus bis zu 20 Dashboarsd KPIs + Trends zusammenträgt. Cool.
- Reports (wieder) über Emails.
- In Salesforce Billing: Customer Asset Lifecycle Management. Assets gibts in jeder Sales oder Service Cloud, nur diese hübsche UI nicht.
- Mit Lightning Scheduler programmatisch und konfigurativ mehr erreichen. Entwicklerinnen können beispielsweise direkt in externe Kalender schreiben.
Für Entwickler
- Bitte Details zu den Änderungen beim Component Metadata Caching beachten .
- Shadow DOM / LWC und globales Styling sind in Salesforce noch nicht die besten Freunde. Eine Beta bringt Lightning Design System Styling Hooks nach LWC.
- Honorable mention: Dicke Composite Graph API für sObjects via
/composite/graph
- Ein neues Video erklärt SAML Single Sign-On mit Salesforce als Identity Provider.
- Eine ToDo weniger: Das Release Update zu "Dependency Access Checks" in Lightning Components (Aura/LWC) wurde zurückgenommen. Grund:
we found an alternative solution that doesn’t require any action on your part.
- Mittels Quip APIs PDFs generieren und an selber Stelle auch Infos zum programmatischen Sperren/Entsperren von Elementen aus Vorlagen.
- Isotope als externe Datenquelle
- Production Org Shape fürs Erstellen von 2nd Generation Managed Packages angeben und auch Error Emails erhalten. Dasselbe auch für ScratchOrgs
- Hard Delete via Bulk API
- Einstein Analytics API wird granularer und bekommt neben Datenzugriffspunkten v.a. Hebel in Richtung App Installation und Automatisierung von App Installation: Das "auto-install template framework" ist da. Ziel scheint ein Plug and Play Gefühl für BI ohne gleich eine Fachkraft einstellen zu müssen.
- Das (Lightning Recycle Bin)
DeleteEvent
wurde entfernt aus Perfomance Gründen addError
Methoden haben Aufmerksamkeit bekommen und wir können auch Fehler an Feldern programmatisch erzeugen. Hilft auch im Test Kontext.- Apex Crypto mit ECDSA Support
- Weniger freudig bin ich um die Veränderungen bezüglich Case ThreadId (woher weiß Salesforce, daß eine Email zu Case X gehört?) gestimmt.
Csaes.getCaseIdFromEmailHeaders
kriegt eine CaseId aus dem Header. Ein Schnipsel Text (sogn. CaseRefId) wie früher im Email Text oder Betreffzeile reicht nicht mehr.Cases.getCaseIdFromEmailThreadId()
wurde deprecated. Details zur Rückwärtskompaitbilität lightning:inputRichText / lightning-input-rich-text
kann um eigene Buttons erweitert werden undsetRange()
gemäß der HTMLInputElement API ist implementiert. Alles als Beta. Ditto fürtextarea
.- Ein neues LWC Modul
lightning/uiAppsApi getNavItems
lightning/uiObjectInfoApi
mit mächigerem Describe CallgetObjectInfos
.- Ein LWC Nachfolger zu Auras
force:refreshView
in Form vongetRecordNotifyChange()
innerhalb vonlightning/uiRecordApi
. Anders als in Aura wird nicht 'alles automatisch' refresht - 'alles' kann sehr viel sein.getRecordNotifyChange()
verlangt das explizite Bezeichnen von RecordIds - im Kontext von related Lists gilt es also aufpassen. Details im Blog von Texei. - Ob das Abschicken eines Platform Events wirklich, wirklich erfolgreich war, ist gegenwärtig schwer zu bestimmen. Mit einer Beta im Kontext Status Messages will Salesforce die Lücke schließen.
- Wer FieldService oder Contact To Multiple Accounts in Scratch Org nutzt, bitte hier gucken
- Selbst in Visualforce tut sich noch was: Um ein unpraktisches FLS Thema zu umgehen, gibts jetzt
ignoreEditPermissionForRendering
aufapex:inputField
- Einstein Bots: vielseitigere Custom Context Variablen
- Custom Javascript für Community Chats. Weitere Details hier.
- Generisches sObject Type für Components im Kontext von Flows verfügbar.
- Eine Barcode Scanner API Beta für mobile Anwendungsfälle.
- CORS via Oauth Endpoints
- Feines Detail: Lightning Record Page melden nun auch Record Types als Dependency für RecordTypes an. War ein möglicher Fehler beim Paket Hochladen.
Für Admins
- Lesenswüridge Bits und Pieces rund um Profile und Permissions
- My Domain wird ab Winter 22 verpflichtend.
- Ganz alten Salesforce-Tieren vielleicht bekannt, daher: Kein HTML in Custom Field Labels mehr ab Spring 21
- Selten aber wahr - es gab so viel HickHack rund um Flows + Apex Zugriff, daß es ein neues Release Update gibt, um das Verhalten abzuschalten. Auch ein Opt-Out für Communities und Standard (External) Profile. Beachten:
Enabling the Allow using standard external profiles for self-registration and user creation setting is not a Salesforce security best practice.
- Auch das Abwickeln/EOL von Salesforce für Outlook wurde verschoben um nur 3 Jahre, die Outlook Integration um 1 Jahr. Neukunden wird Analytics Activity Capture verkauft.
- Quip vermag Salesforce Permissions zu spiegeln ("Mirrored Salesforce Permissions") und wer nichts in Salesforce sehen darf, sieht nichts an Salesforce Daten im Quip Dokument. In dieselbe Kerbe auf Row-Level schlägt Sharing Sync.
- Audiences (und weiteres) auf Community Record Detail Pages verwenden.
- Es gibt
doesRequireRecordChangedToMeetCriteria
neu auf dem Flow Metadaten, womit wie erwähnt ein Gap zu Workflows aufgeholt wird. Mehr Details hier.
- Ebenfalls in dieser Kategorie: "Flow - Run - As - User" - in Sandboxen Flows im Kontext anderer Nutzer als man selbst ausführen. Hilft beim Debuggen enorm.
- Note to self:
enableSimulationMode
für AppAnalyticsSettings - Ein
CompletedDateTimefield
neu auf Tasks. - Sharing Einstellungen für Einstein Dashboards und Snapshots.
- CPQ mit Shield kompatibel
- Custom Report Types wurden als pflegeaufwendig identifiziert. Erste Abhilfe in Form einer Beta, um neue Felder gleich mit aufzunehmen.
- Vorhersagemodelle in regelmäßigen Intervallen aktualisieren, anhand von Graphen Regressionen besser erkennen und Ergebnisse (Outcomes) labeln/mit eigenem Text versehen. Und: Discovery Story Templates einerseits und Hilfe beim Bias erkennen andererseits. Im Piloten: Vorhersagen direkt in Datasets und damit in Dashboards pumpen und Daten in eigener Zeitzone darstellen.
- Sales Cloud Einstein: Bisher mußte Einstein Lead Scoring auf 1000 Leads und 120 konvertierte Leads losgeslassen werden, um Ergebnisse zu erzielen. Das Limit entfällt. Das heißt entweder, Einstein hat dazugelernt und/oder die Nutzer akzeptieren, daß Scores auf 20 Leads keine große Verläßlichkeit haben.
- Salesforce Anywhere (Beta) mit eigenen Release Notes - eine Mischung aus neuer App, Quip, Salesforce und Collaboration Tools, um als Team gemeinsam an einer Record Page zum Beispiel zu arbeiten.
- Alle Community Verification Email Templates beeinflussen
- Mehr Sprachen für Einstein Intent - alles Beta, darunter Holländisch und Russisch.
- Custom Indices in Changesets deploybar.
- Article Sharing auch für High-Volume Community Licences.
- Es gibt einen "Privacy Manager" als managed Package. Vermutlich gegen Aufpreis.
- Via AddOn SMS Multifaktor Authentifizierung für Nutzer erhalten.
- SAML Hostnames müssen lowercase sein.
- Wäre toll, wenns nicht noch Beta in der Beta der Beta wäre. Den "Zur Genehmigung freigeben" Button nur anzeigen, wenn es was zu genemigen gibt.
- Custom Metadata Types mit Geolocation Referenzen
- Das Deployen von bestimmten Sharing Kombinationen wird einfacher; es gibt noch genug zu beachten.
- Service Cloud: Vorgebaute QuickTexts, Makros und Flows
- Bißchen überfällig: External Services umfangreich managen
- 10 Permission Set Groups für Professional Edition
- Neuerungen, die meiner Meinung nach etwas über den Reifegrad verraten: Salesforce CMS beherrscht nun "Ordner" und direkten Datei Upload.
- Mehr Analytics Facet Optionen - auch via Salesforce Record Daten und Dashboard Componenten wiederverwenden (Pilot)
- Standardabweichung via Funktionen berechnen, einfacheres Rechnen mit Datumswerten
- One-Way Sync und mehr für Activity Capture
Für Nutzer
- Opportunity Phasen in Forecasts bearbeiten
- Einstein Dashboards und Widgets als Email Update erhalten. Achtung, diverse Lizenzbedingungen.
- Ein Pilot für Microsoft Teams
- Ein Email Vorlagen Baukasten
- Nur mit den richtigen Lizenzen: Terminverfügbarkeiten mit Emails freigeben, für alle Sales Cloud Nutzer: Emails bis zu 35 MB und Emails an bestimmten Zeitpunkten versenden
- Mehr Sachen über die Suche finden