Das anstehende Sommer Release wurde von einem früheren Termin verschoben, um den weltweiten Entwicklungen Rechnung zu tragen. Vom Umfang ist es fast schon handlich - selbst für ein Sommer Release.
Ein weiterer Grund für ein überschaubares Release liegt mit einiger Sicherheit an Salesforces Bemühungen, unter "Work.com" ein neues Produkt zu etablieren, das unter anderem "Emergency Response Management" erlauben soll - bis hin zum Neuausbilden der eigenen Arbeitskräfte. Das Datenmodell ist laut diesem Link überschaubar, fußt aber mit Sicherheit auch auf Bestandteilen anderer Clouds wie Health oder Public Sector, die mir noch nicht transparent sind.
Partner sollen zum 1. Juni Einblick erhalten haben, viele Details sind nicht bekannt - außer was seit gestern in den Release Notes steht: Neben Emergency Response bietet Work.com auch ein Command Center, Shift Management und einen neuen Trail Tracker für myTrailhead.
Mindestens muß ich mich in ein großes (globales) Unternehmen oder eine Organisation hineinversetzen, die wenig Hilfe oder ausreichend Vorgaben von außerhalb hat, um ein (ansteckendes) "Emergency" in Rücksicht auf Bedürfnisse und Rechte der Mitarbeiter, Kunden und der Organisation zu managen. Unter diesen Annahmen kann ich mir ein halbes Bild machen von den An- und Herausforderungen, die Work.com adressieren will. Vielleicht ist aus Salesforce eigenen internen Bedürfnissen heraus die Idee zu Work.com entstanden.
Zurück zum Sommer Release, denn nominell ist Emergency Management bereits Bestandteil des Frühling 20 Releases (seit dem 20. Mai) und daher Schnee von gestern...
Flows
Mit diesem Release sind Flows so (ge)wichtig und flexibel wie Apex, weil man das Sharing abstellen kann und auch (Data) Rollback Mode Möglichkeiten dazugekommen sind, um Flows zu testen. Die Inhalte eines Records via RecordPage oder QuickAction in meinen Flow zu bekommen, geht jetzt ganz ohne Get Element
. Die Apex Typen für Flows gibt es schon länger, jetzt sind sie auch Input/Output kompatibel, d.h. zwischen Flows einsetzbar. Großartig.
Flows und Events werden weiter verheiratet, der Schluckauf dazwischen ist gleichmaßen analysierbar und Flows haben einen eigenen, umfangreichen Report Type samt Standard Reports erhalten.
Am wichtigsten aber: BEFORE SAVE
(Frühling 20) und AFTER UPDATE
gibt es für Flows samt Debug Informationen zur CPU Time.
Flows
sind soweit, daß sie Trigger, Workflow und Process Builder in allen Bereichen Alternativen bieten können. Vor allem Process Builder sollte ersetzt werden, weil er zu viele Ressourcen frißt und sauberes Save Order Design erschwert.
Unlocked Packages
Es handelt sich um das Eingeständnis, zu viel versprochen zu haben: Die Beta für Org Dependent Unlocked Packages hebt die Prämisse von unlocked packages auf, völlig unabhängig von einer Org zu sein. Damit kommt man sich Salesforce selbst entgegen - man ist noch nicht so weit, alle Metadaten konfigurierbar aufgedröselt zu haben; und auch für große Kundenorgs bedeutet das ein Entgegenkommen, da jene mit weniger Hürden unlocked packages bauen können.
Einer gewissen Ironie entbehrt auch nicht der Umstand, daß Visualforce via @namespaceAccessible
in andere Pakete darf, was LWC/Aura seit Winter 20 offiziell nicht dürfen (siehe auch hier). "Offiziell" deswegen, weil das Verhalten steuerbar ist mit einem Critical Update.
Neue Namen für alte Bekannte
Nachdem im letzten Release die so genannte Chatter API (connectAPI
) schon mit Funktionen um Order Management und Commerce erweitert wurde und es in diesem Release mit 40 neuen Methoden weitergeht, heißt sie nun auch offiziell Apex Connect API.
Auch Critical Updates heißen nicht mehr Critical Updates. 'Release Updates' ist der neue Begriff - auch sichtbar im Setup.
Die Beta-Herausforderung
Die Liste an Lieblingsfeatuern ist kürzer als sonst, weil sich vieles noch in Beta befindet, darunter alle Einstein Search Features. Auch Piloten und Developer Previews sind vertreten wie das Konvertieren von 1st Generation Managed Packages zu 2nd Generation.
Das schafft für mich zwei Problemdimensionen: Aus einigen Gründen kommen Betas für den Produktiveinsatz nicht in Frage - meistens ist das technisch ausgeschlossen, auf jeden Fall bleibt das Restrisiko, daß sich bis zu GA noch breaking changes einschleichen. Begrüßenswert ist die Möglichkeit, früher Feedbdack einfließen zu lassen, wenn man denn welches hat - denn dazu muß man die Beta ausprobieren. Zu fundiertem Feedback muß man erstmal kommen bei weit über einem Dutzend Beta Features in den verschiedensten Bereichen.
Salesforce wäre nicht Salesforce, könnten sie nicht noch eines draufsetzen: Neben Pilot, Beta und Developer Preview gibt es diesmal eine 'Non-GA Preview' für Dynamic Forms (siehe unten).
Eine "Non GA Preview" hat schon Stilblütenchrakter.
Apropos: Die andere Lieblingsstilblüte in diesem Release - aus der Kategorie contradictio in adiecto - ist der Highly Trusted User, der die Identitätsprüfung umgehen kann.
Meine goldene Himbeere geht an: Order without Pricebook, weil man dieses lebenserleichternde Feature nur mit B2B Commerce Lizenzen bekommt.
Breaking Changes:
Public Site Guest User
Public Site Users sind seit mindestens vergangenem Release schon Thema.
Wer mit den Sicherheitsupdates zu Public Site Guest Usern (in Communties und anderswo) nicht klarkommt, kann sich (von einem Teil) gebündelt davon abmelden und mit einem anderen wieder anmelden. Rechtzeitig prüfen und handeln.
Das Assignment rund um Guest User und Default Owner macht viel Kopfzerbrechen, worauf die Release Notes immer wieder hinweisen.
Für alle Änderungen wurde auch ein langes Kapitel zum Thema erstellt, das gibt es hier in Gänze und eine Liste im folgenden:
- Block Certain Fields in the User Record for Orgs with Communities and Portals
- Automatically Assign Records Created by Guest Users to a Default Owner
- Opt Out of Guest User Security Policies Before Summer ’20
- Guest Users Can’t Be Assigned as Owners of Already Existing Records
- Secure Guest Users’ Org-Wide Defaults and Sharing Model
- View All Users and Other Permissions Disabled in Guest User Profiles
- Modify All Data, View All Data, Edit, and Delete Permissions on Guest User Profiles in Orgs Created in Summer ’20
- Modify All Data, View All Data, Edit, and Delete Permissions on Guest User Profiles in Orgs Created Before Summer ’20
- Reduce Object Permissions for Guest Users by the Winter ’21 Release
- Opt Out of Turning Off Community-Specific Setting for Guest Users to See Other Members
- Ensure Guest User Access to Emails Created with Visualforce Email Templates
Enhanced Folder Sharing
Aus Eigeninteresse hoffe ich, man hat auch an Managed Packages und den Usecase "Public Unfiled" gedacht. Ab Winter 21 (safe harbor) soll das bisherige Report/Folder Sharing abgelöst werden.
Lightning Sync für MS Exchange und Google
...soll es ab Winter 21 (safe harbor) für Neukunden nicht mehr geben (MS Exchange, hier für Google). Einstein Activity Capture soll stattdessen eingesetzt werden.
Dark Mode für Lightning Experience via Browser Plugin
...geht in die Pause, weil das Konzept nicht performant genug ist.
Einstein Voice wird eingestellt
...nur in der PDF Version zu lesen (Update 10. Juni)
Lieblingsfeatures
- Die Einstein Intent API ist für Deutsch verfügbar und Einstein Texterkennung (OCR) ist GA. Auch Bots können deutsch lernen, ditto für Recommendations.
Sentiment Analyse nach wie vor nur Englisch (ganz unten) - Nach fast 5 Jahren können wir jetzt Lightning Components auch wieder aus Paketen löschen
- Nach fast 10 Jahren gibt es Reports für PricebookEntry und zugehörige Custom Report Types
- Split List Views wie in der Console für alle. Aber:
This functionality is available on a rolling basis during the Summer ’20 release.
- Unlocked Packages brauchen ab Winter 21 die bekannten 75% Test Coverage, um für Production Orgs verwendbar zu sein.
- Lightning Experience über Safari auf iPad GA
- Etwas umständlich, aber cool: Mit Quip (das nun Quip for Customer 360 genannt wird) und "Live Paste" lassen sich Bereiche in Dokumenten definieren, die aktualisiert werden, sollte sich das "Elterndokument" ändern.
- Gut finde ich, daß neuerdings Änderungen im Salesforce Lightning Design System in den Release Notes knapp zusammengefaßt werden und dabei mobile UI besonders berücksichtigt wird.
- Witzige Idee: Die Algorithmen für Bilderkennung wurden extra geschliffen für das Szenario: Produkte im eigenen Regal erkennen.
- In LWCs mehr über die Community, in der die Component sich ggf. befindet, erfahren:
@salesforce/community
. Aber noch viel besser: User- und Custom Permissions ohne Apex in LWC benutzen und CSS über LWCs teilen. - Consent Management auch diesmal mit klugen Updates dabei, zum Beispiel werden individuelle Channels (und das Tracken der Einwilligungen) ermöglicht und das Adressen-Management wurde verbessert, da mehrere Adressen gepflegt werden können.
- Permissions werden weiter aufgeräumt bzw. aufräumbar.
- Einstein Discovery bekommt eine Runde durchdachter Erleichterungen, darunter auch Wege, um Bias früher zu erkennen und schnelleres Deployment. Im Sommer cruncht Discovery 100 Millionen Datenreihen. Neben GLM, GBM und XGBoost (siehe letzten Beitrag, die drei sind nun standardmäßig kombiniert) kommt im Pilot noch Random Forest hinzu. Ferner eine Beta für die neue Version von Data Prepping.
- Ein In-App Guidance Builder und Meldungen, die man auch verschieben kann, wenn sie stören
Für Entwickler
@JsonAccess
als neue Notation für Apex
@JsonAccess(serializable='never' deserializable='sameNamespace')
public class CannotBeSerializedEver {}
In versions 48.0 and earlier, the default access for deserialization is always and the default access for serialization is sameNamespace to preserve the existing behavior. From version 49.0 onwards, the default access for both serialization and deserialization is sameNamespace.
- FlexiPages werden (mal wieder) umgemodelt, die unlesbare Node
componentInstances
wird abgeschafft. - Mehr Ordnung rund um
@lightning/messageService
, was Channels betrifft. - Schon mal mit
@salesforce/i18n
gespielt? - Gute Nachricht: Nachteil von
Change Data Capture Events
behoben, indem auch nicht veränderte Werte mitgegeben werden können (sogenanntesEnrichment
). Das ist gut, weil mir bisher bei einer Veränderung vonAmount__c
das FeldExternalOrderId__c
vorenthalten wurde. Das brauche ich allerdings für die weitere Verarbeitung. Spart also unnötige Queries. Bei einem Trigger stellt sich das Problem gar nicht erst. Schlechte Nachricht: Dieses Release erst in Beta - Nochmal Beta: Source Tracking für Sandboxen
- Und wieder Beta: Da die Dependency API im Standardfall nur ein Subset der vorhandenen Metadatenabhängigkeit aufzulösen vermag und das für größere Orgs zu Problemen führt, geht das jetzt in Bulk
- Oh, Beta: Push Upgrades für unlocked packages
- Wenn man Einstein Intent nach Quatsch fragt, kann man jetzt eine leere Antwort herbeiführen statt die beste Prediction anzuwenden.
- Weniger neu erstellen, mehr Performance. Im Kleingedruckten erfährt man, daß man nun bitte selbst dafür zu sorgen hat, wann sich eine Component in einem Custom Tab aktualisiert. Bitte
currentPageReference
verwenden. - LWC:
getElementsByTagName()
undgetElementsByClassName()
unterstützt und Großbuchstaben in Properties mit besonderem "-" Präfix:<c-child -first-name="Pierre"></c-child>
. Im JS Controller steht@api FirstName
. Außerdem:this.isConnected
als Alternative zuConnectedCallback()
Aufrufen zu nutzen. lightning/messageService
ist GA. Da nach wie vor das eine oder andere an LWC in Aura gewrappt werden muss, scheint mir ein Aura Application Event weniger Overhead - sofern man Visualforce nicht unterstützen muss.- Ohne Einkauf war wenig von Salesforce Shield auszuprobieren. Der Sommer bringt besseren Support in Scratch Orgs
- 2-Faktor-Authentifizierung aus Apex anstoßen - nützlich für Communities und eigene Login Flows.
- Wer sie noch nicht kennt, bitte kennenlernen: Experience Bundles für Communities erhalten Theme Layout Einstellungen
- Mit LWC eine Community von 0 weg neu bauen ist im Pilot
- Schon ein wenig doof, wenn
TinyInt
von AWS RDS alsbit
gesynct wird - Wenn viele auf einmal für Einstein Activity Capture freigeschaltet werden sollen, hilft die SOAP API
Für Admins
- Platform Events und Permission aufgeräumt. Bisher konnten User zu viel sehen oder gar nix.
- Die Publisher Playground App soll das Testen von Communities für mobile Geräte einfacher machen
- Connected Apps können Custom Notifications empfangen, d.h. auch meine selbst programmierte mobile Anwendung
- Wer sich das Data Mask leistet, hat ab diesem Release u.a. weniger Schmerzen mit
Master-Detail
. Nach wie vor fehlt der Hinweis, daß Data Mask extra kostet. - Compound Details (z.B.
Address.GeoCodeAccuracy
) in Custom Metadata Types, sogenannteEntity Particles
, addressieren. - Für Servicekräfte zusätzliche Routing Skills vergeben und iterativ dynamisch priorisieren und mal wirklich wissen, wann Kapazitäten frei sind statt Tabs zählen.
- Guidance auch in Kanbans basierend auf Pfaden
- Mehr mobile Push Notifications: 20.000 für iOS, 10.000 für Android.
- Im letzten Release waren die sObjects für invocable Methods fällig, diesmal kann Flow mit dem generischen Objekt umgehen . Allerdings erst Beta.
- External Account Hierarchy statt kompliziertes Sharing in Communities
- Gute Sache, wieder Beta: Ein Security Command Center
- Private Connect ist GA. Wenn ich mit Amazon (AWS) aus meiner Org spreche, wird eine private, sichere "Leitung" garantiert.
- Federation IDs können Groß/Kleinschreibung auch ignorieren
- Salesforce Order Management mit Accounts und Contacts statt Person Accounts
- QuickText in Email Integration (z.B. Gmail)
- Kategorie Bugfix als Feature: Merge Fields in Approvals
- Beta: Dynamic Actions - die Buttons wie "Bearbeiten" oder "Klonen" endlich, endlich nach bestimmten Kriterien ein/ausblenden.
- Nicht-mehr-Beta, trotzdem nicht fertig: Dynamic Forms, Felder in Sektionen aufnehmen und einblenden/ausblenden, wie es gefällt. Gerade mit vielen (Formel) Feldern noch kein Vergnügen und andere Kinderkrankheiten, aber ein lang ersehnter Schritt.
- My Trailhead Nutzer müssen auf alte Trailhead Bekannte wie Astro und Codey verzichten. Außerdem Footer und Links anpassen.
- Sustainability Cloud gibts jetzt auf Deutsch
- Community Sitemaps Generierung manuell anschubsen und mehr Customization an verschiedenen Stellen, darunter Standard Action Overrides(!)
- Salesforce CMS bekommt bessere SEO Möglichkeiten
- Verhindern, daß Nutzer in Analytics landen bei Klick auf Einstein Record Page Dashboard
Für Nutzer
- Flows verhudeln Eingaben nicht mehr, wenn man vor- und zurück navigiert.
- Android Nutzer können endlich den Cache in der Salesforce Mobile App leeren und frische Daten kriegen
- Parent Account Hierarchy statt kompliziertes Sharing in Communities
- Eine Beta, um sich seine Einstein-Lieblingsdatenpunkte gebündelt und nach Gusto anzeigen zu lassen.