Wolkig bis heiter. Frühling '20.

Salesforce und Chrome

Eine lange Liste von Critical Updates wird im Frühling automatisch eingeschaltet. Mutet wie Frühjahrsputz bis in die letzten Ecken an und das von zwei Seiten gleichzeitig: Salesforce und Chrome. Lang ist es nicht mehr hin, wer noch nicht alles überprüft hat, hat einiges vor sich.

Genau Hinsehen in Salesforce

Wenn das Guest User Profile Sicherheits Update erzwungen wird (siehe auch hier), dann trifft das besonders auch Communities und Sites, dazu hier eine Zusammenfassung von Katie Kodes. Records, die von einem Guest User erstellt wurden, brauchen jetzt einen Owner, der via GuestRecordDefaultOwnerId in den Site Einstellungen festgelegt werden kann. Alles zu Gunsten besserer und modularer Sicherheit  - da werden Zugriffsrechte massiv auseinandergedröselt (Sharing ist ein Beispiel unter vielen, Data Access Regeln erzwingen in Flow Formeln ein anderes). Daher gilt es auch Lightning Component Controller zu prüfen und für Lightning Out erwarte ich auch noch Überraschungen.  

Und noch genauer mit Chrome

Chrome schlägt von ganz anderer Seite in eine Sicherheits-Kerbe - gerade im Kontext von Visalforce Pages und iframes (und Lightning Experience). Der Browserhersteller kommt mit baldigen Updates zu Cookie-Sicherheit. Hier muß man bei sich daheim als auch in der Marketing Cloud gucken, ob man betroffen ist. Das alles läuft mindestens darauf hinaus, daß sobald Chrome v80 ernst macht, alles über https:// laufen sollte.

Besonders freut mich: Manche ein Anbieter von Deployment Management oder Datensicherung waren bisher in der Lage, sehr genau zu sagen, was sich bei einem Upgrade eines AppExchange Paketes so alles in dem Paket geändert hatte - vor allem auch auf Apex-Seite - dabei sichert Salesforce für Apex die Wahrung intellektuellen Eigentums zu. Die Lücke wurde nun geschlossen.

Zu den nötigen Hardware und Netzwerk Spezifikationen für Lightning Experience sagt Salesforce im Übrigen aktuell folgendes:

Beachtenswert: 150ms Latenz und 3Mbs (gerade unterwegs eine Herausforderung) und 3 GB für Browser-Tab RAM dürfte den einen oder anderen Bürorechner etwas fordern.

Weiter mit Einstein für Jedermann

Das Portfolio weitet sich aus und Einstein Predicitions hat es in Sandboxen geschafft. Das ist Klasse zum Rumspielen.

Folgerichtig kann Extended Metadata (XMD), also Einstein Konfigurationsdaten, via Changesets (und auch in Paketen) produktiv gesetzt werden. Mit den neuen Formatierungsmöglichkeiten für Nummern sind nun auch alle Bedürfnisse in Sachen Währungsformate erfüllbar. Gut finde ich auch, dass verschiedene Interaktionen (1) - vormals Bindings - zwischen Widgets keinen Code mehr erfordern (2). Ditto für Referenzlinien (3).  Hilfreich auch, daß an mehr Stellen das konfigurierte Sharing greift und zumindest im Piloten mehr Datenquellen unterstützt werden:

  • SugarCRM
  • Zendesk
  • Teradata
  • Google Cloud Storage
  • SAP SuccessFactors
  • Zuora AQuA

Sicher ein Effekt der Mulesoft Akquisition, wobei auch alle MuleSoft Connections in Einstein verfügbar sind. Zu dieser Offensive läßt Salesforce viele Einstein Features wie Case Classification bis zu einem gewissen Grad kostenlos werden oder auch Discovery und weitet lezteres auch in andere Produkte wie Pardot aus (Pilot).

Wie rechnet eigentlich Einstein? Mittels Regressionen und Gradient Boosting Machines, im Piloten kommt XGBoost hinzu. Aus den drei Modellen ermittelt Einstein für sich selbst den Gewinner und nutzt nur noch dieses Modell. Ab Frühling lassen sich ferner "Was wäre wenn" Szenarien abbilden und ohne Umweg über ein Dataset mit Salesforce Daten sprechen.


Einstein für Jedermann wird auch ermöglicht durch sanftere Anforderungen (beispielsweise 400 statt 1000 Opportunities) bei den nötigen historischen Datenmengen, um belastbare Aussagen zu erhalten.

Winter 20 nochmal

Ein Nachtrag: Unlocked Packages sind auch für ISVs benutzbar. Migration von 1GP zu 2GP soll ab Spring 21 möglich sein.

Gleichzeitig hat man im letzten Release einige Sachen rund um Namespace eingeschränkt. Und auch in diesem Release kommen weitere Details mit Einschränkungen ans Licht:

BEHAVIOR CHANGE: For unlocked packaging, the Territory2 type now requires packages without a namespace in all API versions

Möchte man das Security Review bestehen mit 2nd Generation Packaging, dann darf kein Visualforce drin sein und für letzteres wurde @namespaceaccessible aus dem Release genommen (siehe unten).

Nicht ins Release geschafft:

  • @namespaceAccessible für Visualforce
  • Das Critical Update zu richtigen HTML Ausgabe von Formeln im Kontext von Flows wurde (schnellstens) retired.

Lieblingsfeatures

  • Kein maximum Daily Limit mehr auf API Calls. Allocations insgesamt erhöht. Developer Orgs ausgeschlossen.
  • Sehr folgerichtig: Invocable Actions mit generischem sObject Type. Flow macht überhaupt alles immer besser.
  • Data Masking in Sandboxen. Die Logik wohnt im Übrigen in einem Managed Package, das erst in Production installiert werden muss.
  • Finalizer Interface für Asynchrones Queueable Apex -  unabhängig vom Erfolg der asynchronen Operation Logik ausführen.
  • Security.stripInaccessible und WITH SECURITY ENFORCED für SOQL generally available.
  • Quip mittels Clicks (und Code) Automatisierungen managen und auch selektiv Dokumentbereiche upaten.
  • "BEFORE Trigger" Funktionalität mit Flows. Richtig gute Sache. Kein vollwertiger Ersatz für Trigger, da nur der Datensatz selbst verändert werden kann. Bitte Kleingedrucktes beachten. Dennoch könnten der eine oder andere Before Trigger dadurch abgelöst werden, inbesondere im Kontext von Validierung.
    Die Frage, wie man zwischen Workflows, Triggern, Before Save Flows und Process Builder den Überblick behalten kann, lassen wir außen vor. Es werden sich neue Best Practices ergeben.
  • Die neue Salesforce mobile App für alle. Einstein Analytics auch mit dabei.
  • URL Hacks sind jetzt keine mehr. Default Field Values on Record Create auch für eigene Components mittels lightning:pageReferenceUtils
  • Man braucht in LWCs @track nicht mehr, es sei denn man braucht es (im Kontext von deeply nested properties).
  • RIP, Power Of One. Unqiue Value Count ist generally available und so auch Field-To-Field Filter.
  • Permission Set Groups generally available
  • Tips beim Bauen von Record Pages:

Developer

  • Ein neues Critical Update wird vermutlich Bauschmerzen bereiten: Statt nur Top Level Components werden alle Aura oder Lightning Web Components auf die Access Modifier geprüft.
  • DX für Communities. Im Metdaten API Format ist eine Community ein Batzen Binärdatei. Im DX Source Format aufgebrochen in lesbare Artefakte. Bin stark dafür, als nächstes die Marketing Cloud zu DXen.
  • Noch einmal DX bzw. Metdaten API: Erneut ist vieles, das nur mit Clicks im Setup zu erreichen war, jetzt als Metdaten Einstellung verfügbar geworden.
  • 55 (statt bisher 35) Child-To-Parent Abfragen in einer SOQL Query
  • Ich wußte doch, das ist was fischig bei lightning:input/lightning-input :
Data entry now uses the Salesforce locale instead of the system locale. The component previously used the system locale for data entry and the Salesforce locale for data display when the field loses focus. Now the experience is more consistent.
Granular Settings

Admins

  • Lange Zeit war es so: Angenommen sei ein Account mit Lookup auf einen Contact. Auf letzteren hat der Nutzer keinen Zugriff. Der Name des Contacts war dennoch auf dem Account sichtbar. Abschalten mit diesem Critial Update für Lookups.
  • Achtung, das (selten genutzte) Standard Feld UserPermissionsMobileUser auf dem User Objekt als auch das StandardObjekt MobileSession wurden entfernt.
  • Für Italien: Keine SMS Konversationen mehr verfügbar
  • Klonen von Release-Preview Sandboxen. Bitte daran denken, daß eine Partial Sandbox nur in eine Partial Sandbox geklont werden kann. Die meisten von uns haben nur eine Partial Sandbox, daher kann sie ohne Mehrkosten nicht geklohnt werden.
  • Keyboard Shortcuts im Flow Builder
  • Ob es nun klug ist, Flows ohne Field Level Security laufen zu lassen? Statt im User Kontext können Screenflows in einem with sharing System Kontext laufen ähnlich wie Apex (hier geht auch without sharing).
  • Event Details über Compact Layouts steuern
  • Statt nur it isDeleted, mit dem neuen DeleteEvent Records im Papierkorb ausfindig machen
  • Verhaltensänderung bei Case Closed Status, damit ähnlich wie in Classic.
By default, the setting is disabled, so closed statuses are hidden.
Like Salesforce role hierarchies, data belonging to accounts in an external account hierarchy is available to the parent accounts in the hierarchy. This way, external users don’t have to rely on sharing rules to access data from their child accounts.

Nutzer