Summer 19: Mobile, Einstein-Jedermann, Ethik

Summer 19: Mobile, Einstein-Jedermann, Ethik

Lightning und Mobile

Die schlechten Nachrichten zuerst: diesmal keine einzige neue Lightning Component. Das deuetet daraufhin, daß

  1. das wichtigste vorhanden ist und
  2. Kapazitäten für andere Themen gebraucht werden.

Ich tippe auf die neue mobile Welt, auf die wir uns freuen dürfen - seit Salesforce1 2013/2014 hat bis vor kurzem kaum mehr etwas stattgefunden im Bereich Salesforce App. Erst mußte der Umweg über Lightning Experience gegangen werden und ich glaube, jetzt schließt sich der Kreis zur mobilen Applikation. Salesforce über alle Devices in allen Größen - ein mächtiges und verlockendes Versprechen.

Ich bin seit langem felsenfest überzeugt davon, daß die Lightning Experience am besten auf einem Tablet (PC) zu bedienen ist. Salesforce sieht das ähnlich und erlaubt in einer Beta auf dem iPad die volle Desktop Version der LEX mit Safari. Nix mehr Salesforce App.

Fast ein Jahr nach Ankündigung auf der Dreamforce, ist die neue Lightning Experience on Mobile nun ganz offiziell im Piloten und für alle auszuprobieren.

Einstein für Jedermann mit gutem Gewissen?

Wesentliche Hürden konnten in diesem Release für Einstein verkleinert werden. Es braucht an vielen Stellen deutlich weniger Code, um Prognosen nutzbar zu machen und vor allem kann man es auch jetzt in einer Full Copy Sandbox testen. Noch ein Grund mehr, sich eine anzuschaffen.
Um in Discovery deskriptive Analysen zu erhalten, reichen seit dem Release 50 Datenreihen, für Prognose braucht es nur noch 400.

Aus wenig Daten schlaue Rückschlüsse zu ziehen, ist nicht ohne weiteres möglich oder nicht belastbar. Künstliche Intelligenz für Jedermann ist Salesforces aktuelles Versprechen - was also tun für Unternehmen, die noch keine 400 Opportunities geclosed oder 400 Leads erfolgreich konvertiert haben?
Globale Modelle, sagt Salesforce. Indem die Cloud Platform alle unsere Meta- und Nutzungs/Verlaufs-Daten auch noch einmal selbst cruncht, können Modelle entwickelt werden, die auch in kleinen Unternehmen (vermutlich nach Industrie/Sparte getrennt) mit Mehrwert eingesetzt werden können.
Mir ist nicht bekannt, daß deutsche Unternehmen bisher eingeladen wurden, an dem Global Model Rechnen teilzunehmen.

Bei Einstein geht es in vielerlei Hinsicht um einen der obersten Wert von Salesforce: Vetrauen. Kann ich den Vorhersagen eines kleines Comic-Männchens im Browser soweit vertrauen, daß ich mein Geschäft danach ausrichte? Herr Einstein lacht und sagt: Die Modelle sind valide, traust Du Deinen Daten und Annahmen? Das ist eine Lernkurve, die niemandem abgenommen werden kann.
Von technischer Seite steuert Salesforce neue Tools zum Schutz vor sogenanntem Bias bei, aber für unsere Datenqualität und die daraus gezogenen Rückschlüsse oder Entscheidungen sind wir nach wie vor selbst verantwortlich. Einstein Activity Capture zum Trotz.

Flow mal wieder

Flow ist seit vielen Releases eines meiner Lieblingsthemen und auch in diesem Release wurde drangebaut. Insgesamt wird Flow robuster und angepaßter, was die Metadaten-Ebene anbelangt. Das Debugging wurde erneut verbessert und durch gut lesbare 'Considerations' Seite, die beim Implementieren helfen, ergänzt. Richtext in Flow Screens werden ab diesem Release unterstützt.
Um Integrationen mit Web Applikationen zu vereinfachen, kann Flow nun auch mit Apex Data Transfer Objekten sprechen, was einiges an Boilerplate sparen dürfte.

Nicht unbeachtet bleiben auch die lange gewünschten Anpassungen bei alten Bekannten wie zum Beispiel OpportunityLineItemSchedule - die bisher ohne Trigger und anderen Features von Custom Objects auskommen mußten. Frage mich, ob demnächst auch OpportunityContactRole an die Reihe kommt. Da müßten Bücher umgeschrieben werden.

Lieblingsfeatures

  • Polymorphismus, yeah! Nach 6 Jahren, ist typeof für SOQL endlich generally available (GA). Warum das cool ist, steht hier im Blog (2016)
  • Robustere Flows und Flow spricht nun auch Quip. Kurzfassung hier, Langfassung hier
  • publishBehavior bei Platform Events steuert, ob Events sofort oder erst nach erfolgreichem Database Commit gefeuert werden. Für bereits bestehdene Events wird der Default auf 'sofort' gesetzt.
  • Kontext behalten beim Wechseln von Classic auf Lightning: Sofern es die Seite auch in Lightning gibt, landet man auf dieser.
  • Für ISVs: Neuer Anlauf für App Metrics mit einem neuen Objekt namens AppAnalyticsQueryRequest. Mittels Case in der Partner Community anfragen. In der API Sektion ist bei dem AnalyticsQueryRequest noch von Piloten die Rede. Gerade etwas unbequem anzuzapfen, nur SOAP wird angeboten.
  • Ich bin immer noch gerne in der Developer Console unterwegs. Aber sie zerreißt unsere Formattierung bei Aura Komponenten. Wir nutzen lokal Prettier. Hat das DX Team aus der Welt geschafft.
  • Einsteins Vorhersagen in Formelfeldern und Process Builder einsetzen.
  • Entwickler müssen nicht mehr gleichzeitig Admins sein, um ihren Job zu machen.
  • Ein bißchen dünn beschrieben, aber Consent Management ist nun da und Salesforce hat sowohl an sowas wie Influencer Information gedacht als auch die Klassifizierungsmöglichkeit (PII, system-relevant, etc) von Feldern jetzt GA gemacht. Außerdem findet man GDPR Objekte nun in der Suche
  • Die Lightning Platform kommt in Visualforce an. Der LiveController verhält sich wie wir es vom Lightning Data Service in LEX gewöhnt sind.
  • Conditional Macros
  • Der Pilot zu Enhanced External Services hört sich so an als hätte man das Feedback der aktuellen Implementierung ernst genommen. Lesenswert.
  • Auch sehr spannend, der Permission Set Group Pilot, in dem man auch mal eine Permission wegnehmen kann. Bisher hat man dafür ein neues Profil gebraucht.
  • ChatBots können ein Custom Profil erhalten, was so viel heißt wie: Bots sind nun wie User und daher wesentlich besser zu handhaben.
  • Zugriff auf besonderes sensiblen Einstellungen von Salesforce mit wenigen Clicks besser absichern
  • Lightning Out funktioniert auch für Lightning Web Components sowohl für Visualforce auch externe Anwendungen. Damit werden LWC auch in Aura Standalone Apps unterstützt. Ich find es etwas gewöhnungsbedürftig, daß hierfür nach wie vor eine Aura Lightning Out App nötig ist bzw. LWC als Aura Componenten einzubinden. Einfacher ist es auch nicht geworden

    In addition to some straightforward markup, you do a modest amount of setup and preparation within Salesforce to enable the secure connection between Salesforce and the remote web container.

  • Eventbus.TriggerContext.setResumeCheckpoint(resumeReplayId): Eine Herausforderung bei Event Triggern war, daß theoretisch eine große Menge an Events durch den Trigger gehen, was zu Limit Problemen führt. Abhilfe schafft obige Methode. Hervorhebung von mir.

    Use this method to recover from limit and uncaught exceptions, or to control the number of events processed in one trigger execution.

  • Als Beta auch besseres Error Handling für Asynchrones Publizieren von Events verfügbar - mittels eines weiteren Events natürlich - AsyncOperationEvent.
  • Hat a bisserl länger gedauert: Historical Trending Reports, Case Merge, Case Milestones und die Partner Account Related List in LEX angekommen.
  • Großer Sprung für Community Entwickler, statt einer(!), großen base64 Datei gibt's für DX Nutzer die Community als experience in alle Einzelteile zerlegt. Zum Gesamtpaket gehört auch, Communities ohne Klicks bereitzustellen oder zu verändern. (Developer Preview)
    experience in dx
  • Gleich nochmal Community: URL auslesen und in Flow Variablen verarbeiten
    /s/flow/flowName?flowArguments=[{"label":"variable1Name","dataType":"String","value":"value1"},{"label":"variable2Name","dataType":"String","value":"value2"}]
    

Nicht ins Release geschafft

  • Your Utility Items Are All Right (Aligned)
  • Removed release notes for Apple Business Chat support
  • Removed the Message that Displays for External Links
  • Managing deleted custom fields and the Purge button are available only in Salesforce Classic.

Für Entwickler

  • Supported Form Factors für LWC und Aura
    • Aura
      <design:component label="Hello World">
        <design:attribute name="subject" label="Subject" description="Name of the person you want to greet" />
        <design:attribute name="greeting" label="Greeting" />
        <design:supportedFormFactors>
          <design:supportedFormFactor type="Large"/>
          <design:supportedFormFactor type="Small"/>
        </design:supportedFormFactors>
      </design:component>
      
    • Lwc
      <?xml version="1.0" encoding="UTF-8"?>
      <LightningComponentBundle xmlns="http://soap.sforce.com/2006/04/metadata">
        <apiVersion>42.0</apiVersion>
        <isExposed>false</isExposed>
        <masterLabel>Best Component Ever</masterLabel>
        <description>This is a demo component.</description>
        <targets>
          <target>lightning__RecordPage</target>
          <target>lightning__AppPage</target>
        </targets>
        <targetConfigs>
          <targetConfig targets="lightning__RecordPage">
            <property name="prop1" type="String" />
              <supportedFormFactors>
                  <supportedFormFactor type="Large" />
              </supportedFormFactors>
          </targetConfig>
          <targetConfig targets="lightning__AppPage">
              <property name="prop2" type="Boolean" />
              <supportedFormFactors>
                  <supportedFormFactor type="Small" />
                  <supportedFormFactor type="Large" />
              </supportedFormFactors>
          </targetConfigs>
      </LightningComponentBundle>
      
  • In vieler Munde, die Change Events. Statt alles im synchronen Trigger sofort zu machen, die schwere Arbeit ins Asynchrone auslagern. Konzeptionell seit Ankunft der Platform Events erreichbar und lang davor schon zum Beispiel in Streams ganz ohne Events umgesetzt. Ab jetzt noch handlicher.
  • Dazu passend: Statt vieler einzelner Channels, auf die die UI oder Integrationen hören müssen, gleich Custom Channels nutzen.
  • Unter demselben Motto 'Mehr Events für Alles' können wir Platform Events aus Batch Jobs schicken (GA)
  • Mit dem Piloten für die neue System.Security Klasse steht bald nichts mehr im Wege, daß wir ohne Umwege und Kosten zu sauberen Field Level Security Implementierungen kommen.
  • 1000 MB statt 250 MB. Erneutes Anheben des maximalen Speichers für Debug Logs.
    Hab ich auch schon in kürzester Zeit vollbekommen.
    Überflüssige Logs lassen sich über Developer Console und den Query Editor manuell löschen. SELECT Id FROM ApexLog ausführen, Ergebniszeilen markieren, Löschen Button drücken.
  • Ist das nun ein Breaking Change oder nicht? Paketierte Prozesse, die ein Event rausschicken, brauchen ab Sommer weniger Metadaten. Konkret: EventSubscribtion und EventDelivery kommen icht mehr ins Paket. Hier und hier.
  • Gleiche Frage für die SOAP API: Polymorphe Felder, wie zum Beispiel Owner auf Task, waren vom Typ Name, ein schwer nutzabres Miniobjekt mit kaum Dokumentation. In API 46 ist der Typ: sObject
    <element name="Owner" nillable="true" minOccurs="0" type="ens:sObject"/>
    
  • Statische Resourcen können nun auch auf die CORS Whitelist
  • Weitere Lücke geschlossen: Continuation auch für Lightning Web Components
  • Großes Update der Integration Patterns and Practices
  • Für Aura Komponenten und Lightning Web Components:
    • inputField - besseres Error Handling, auch im Kontext von System Validierung (Required Fields)
    • dataTable - bessere Zeitformatierung
    • input - autocomplete steuerbar
    • inputRichText - mit setFormat()/getFormat() Formatierung beeinflussen.
    • Accessibility / Variant Updates auf breiter Front
    • Bißchen ärgerlich ist, daß nun maps.a.forceusercontent.com als Trusted Site für map angelegt werden muß. Da hat sich vielleicht jemand beschwert?
  • Lightning Web Component Module können empAPI und baseChatMessage
  • Einstein APIs (Vision und Language) bereiten sich für Mehrsprachigkeit vor, 2 GB statt 1 GB Datenspeicher und Zahlkunde API Requests werden vor Free-Tier-Kunden bevorzugt.
  • Connected Apps und Fein-Tuning von Daten-Zugriff in Drittsystemen, Stichwort: Custom OAuth Scopes
  • Mich würden valide Anwedungsszenarien brennend interessieren, aber es ist jetzt Schluß mit Aura Function Expressions beim dynamischen Erzeugen von Components, wenn das Critical Update eingeschaltet wird.
  • Sandboxen klonen, Hammertest ausführen, Metadata Describes, Angleichen zwischen ScratchOrg und AnyOrg Development - DX CLI birgt einige schöne Neuerungen.
  • Besonders erwähnenswert: Scratch Orgs mit Release Preview Version erstellen. Natürlich nur im entsprechenden Zeitfenster.
  • Nochmal Scratch Orgs: Viele neue Features aktivierbar, darunter auch Platform Cache und andere Köstlichkeiten. Einstein Bots werden eigens eingeführt.
  • In der Lightning Console herausfinden, ob ein Bestandteil 'popped out' ist, mittels isUtilityPoppedOut
  • Gerade für Scratch Org Nutzer interessant, ein neue Liste an aktivierbaren Einstellungen via Metadaten - glaube, da sind auch Sachen dabei, die nicht (mehr) über die UI abschaltbar sind.
    • Turn on Einstein Bots for your organization
    • Enable or disable the tracking of field history for contacts
    • Enable or disable Google Docs, Google Talk, or Gmail buttons and links
    • Enable customizable product schedules
    • Enable or disable a customer success portal or mass-management of self-service users
    • Enable or disable maps and location services and enable auto-complete on address fields
    • Enable or disable notifications and mobile push notifications
    • Enable or disable user management options.
    • Enable or disable case hovers, inline editing in a list view, or Quick Create (creating records from the home pages for leads, accounts, contacts, and opportunities)
    • Show the advanced search options in Salesforce Classic
  • Soweit mir bekannt ist, ist IoT keine Prio mehr für Salesforce. Ironisch, daß nun 5 API Versionen später, die jeweiligen Metadatan Typen - Orchestration Contexts - nun greifbar sind.
  • Die technischen Details der neuen Row Level Formeln für Berichte.
  • Assets unterstützen PK Chunking.
  • Test.enableChangeDataCapture(), wenn die neuen Change Data Capture Implementierungen getestet werden sollen.

Für Admins

  • Ein Email Integration Security Guide wird angepreist, aber der Link verweist dann auf das Standard PDF, das auf Einstein Activity Capture verweist. Nota bene: Activity Capture läuft über AWS Instanzen.
  • Salesforce schraubt nach wie vor am Pricing Modell für Flows. Klar, die Limits sind hoch und doch gab es vor zwei Releases dafür noch gar keine Limits.
  • Bisher mit einer JSON Krücke zu erreichen, jetzt einfach klickbar: Filter für Einstein Analytics Dashboards auf Record Pages.
  • Mir haben schon mal Lizenzen in der Sandbox gefehlt, die in Production verfügbar war. Ab jetzt jederzeit Nutzer-Lizenzen synchronisieren.
  • Zur Erinnerung: Apex Klassen, die aus Flows aufgerufen werden, müssen dem Profil zugewiesen sein. Jetzt schon als Critical Update erhältlich.
  • In Communities Nutzer auf ihr Profil leiten - ohne Programmierung
  • Custom Metadata Type Records in Process Builder verwenden
  • Guck, fast wie Klassik.
    Full View für Datensatzseiten (Beta)
    Aus meiner Sicht kein Schritt in die richtige Richtung. Wer zu viele Felder und zu viele Related Lists hat, der kann das Feature ohnehin gar nicht erst nutzen. Wasser auf meine Mühlen:

    To maintain performance quality, Full view is not available for all org configurations (for example, if your org has a large number of fields or related lists).

  • Weitere Angleichung von Process Builder an Trigger via Critical Update. Es wird stets der ursprüngliche Wert in Update Kriterien evaluiert, unabhängig von bereits erfolgten Updates.
  • Auch nach #PermaGeddon schraubt Salesforce via Critical Update erneut an Permissions für Community User. Kein API Access mehr mit Standardprofil. Kein Autoactivation Datum bekannt. Auch bei Externen Nutzern gibt es Veränderung, allerdings nicht rückwirkend sondern nur für ab Sommer 19 erstellte. Details und noch mehr Details
  • Actions in Communities (vornehmlich auf Case)besser supported/ näher an LEX Standard Verhalten. Außerdem Updates zur Case Deflection Component
  • Email verschlüsseln
  • Fine Tuning von Lightning Data via Checkbox auf jedem Record
  • Von diversen ISVs schon selbst gebaut, jetzt Standard: Konfigurierbare Hinweis- und Ratgeber-Eiblendungen (In-App Guidance) für Lightning Experience Apps. Admins zumindest optisch bereits bekannt, da es dasselbe Format hat wie die nervigen 'It is better in Lightning' Pop-Ups.
  • Höhrere Paßwort Komplexität erzwingen
  • Routing von Work Items (Service Cloud) via Flow (bisher nur Apex) und auch Skill based Routing geht jetzt ohne Apex allein via UI
    skill based routing
  • Aktionen, die von einem Einstein Bot kommen, können nun einem Nutzer zugeodrnet werden, ditto für die Zuweisung des sObjekt Kontextes.
  • Besseres Email Management für Approvals - zum Beispiel keine Email mehr, wenn ich selbst der (delegated) Approver bin.
  • Knowledge Objekte werden mehr und mehr zu vollwertigen Standardobjekten mit Lookups und Master-Detail Möglichkeiten. Das führt auch zu wesentlich besseren Berichten
  • Snap Ins heißen nun Embedded Services, Live Agent heißt Chat, und LiveMessage bloß Messaging
  • In Messaging lassen sich Regeln zum Ausblenden sensibler Daten wie Kreditkartennummer definieren
  • Trigger, Custom Fields und Validierungen für OpportunityLineItemSchedule, Details hier - Kleingedrucktes beachten

    Customizable product schedules don’t support record types. In default product schedules, you can use custom fields and customize the layout, but if you’ve applied required fields, validation rules, or Apex triggers, they’re bypassed when they’re first inserted.

  • Partner Relationships brauchen keine Admin Rechte mehr, um gepflegt zu werden.
  • DX CLI macht Sandbox Management über Kommandozeile möglich
  • Mehr Überblick und erleichterter Einsatz von Custom Metadata Types. Verfügbarkeit im Process Builder und maximal 200 verschiedene Typen statt 100 (Typen aus Paketen zählen zum Limit).
  • Zugriff auf statische Resourcen durch Guest User verändert - Guest User können nur auf 'public cache' Resourcen zugreifen.
  • Wer Event Monitoring hat, kann auch Lightning Page Performance via Effective Page Time tracken
  • Eine Quip Notification Component für Lightning Pages
  • Quotas via UI pflegen statt über Dataloader oder Apex
  • 300 Survery Antworten gibt es kostenlos, danach gilt es zu zahlen, dafür kann man beliebig viele Suverys versenden ohne zusätzliche Lizenz.

Für Nutzer

  • Pfad in der Salesforce App auch auf Lead und für Desktop auch mit Konfetti - aber nicht für konvertierte Leads.
  • Recurring Events (Business Need) sind nicht exakt dasselbe wie Event Series (Salesforce Feature), aber fast. Letztere verstehen nun QuickActions.
  • Weitere schöne Updates für Activities und Tasks hier
  • Wenn ich mein Quartalsziel laut Report erreicht habe, möchte ich sofort informiert werden. Geht ab sofort mit Report Conditions
  • Formeln, Formeln, Formeln und Reports
  • In CPQ können sich Angebotsersteller Preis-Trends und Ratschläge für entsprechend konfigurierte Produkte anschauen
    cpq pricing guidance
  • Das Modal für New Record erscheint in der Browser History
  • Related Lists auch nach Auswahllistenfeldern (Picklist Values) durchsuchen, Quick Filter an allen Listen (außer für Enterprise Territory Management Nutzer, für die nur am Account) und die Beta für Enhanced Related Lists, die bis zu 10 Spalten beherrschen und konfigurierbar viele Reihen.:
    enhanced related list beta
    Ein Schelm, wer Performance dabei denkt.