Sommer 20: Work versus Virus

Sommer 20: Work versus Virus

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.

flow options

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:

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

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.
live pasting
builder



Für Entwickler

@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 (sogenanntes Enrichment). Das ist gut, weil mir bisher bei einer Veränderung von Amount__cdas Feld ExternalOrderId__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() und getElementsByClassName() 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 zu ConnectedCallback() 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 als bit gesynct wird
  • Wenn viele auf einmal für Einstein Activity Capture freigeschaltet werden sollen, hilft die SOAP API

Für Admins

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.
dynamic actions
  • 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.
dynamic forms

Für Nutzer

watchlist