Vorig jaar schreef ik al een blog over de mogelijkheid van het dynamisch tonen / verbergen van velden op basis van informatie uit het record. Deze methode wordt nu actief gebruikt bij diverse klanten. Salesforce zelf blijkt nu echter ook hard bezig om dit te ondersteunen met standaardfunctionaliteit, en hiermee de noodzaak van page layouts te doen verdwijnen. In de nieuwste periodieke release, Summer ’20, lanceert het CRM-pakket een nieuw stuk gereedschap, genaamd: Dynamic Forms.
Let op: het gaat hier om nieuwe bètafunctionaliteit met de daarbij behorende beperkingen, onverwacht gedrag en onzekerheid wat betreft de definitieve lancering:
Dynamic Forms is a Non-GA Preview and has limitations. We recommend that you read all the information in the Dynamic Forms section of the Record Page Settings page before you enable this feature.
Ben je op zoek naar een oplossing die je vandaag nog kunt inzetten? Kijk dan eens naar de eerdergenoemde blog. Ben je benieuwd hoe recordpagina’s in het Salesforce van de toekomst eruit gaan zien en wat de bijbehorende voordelen zijn? Lees dan vooral verder!
Even terug naar de nadelen van de page layouts, en waarom we een alternatief zoeken. Met Lightning Experience hebben we de App Builder gekregen, waarmee je complete Lightning Pages kunt opbouwen. Aan iedere app, record type of profiel kun je een andere pagina toewijzen. Binnen de Lightning Page kun je daarbovenop regels toewijzen aan componenten om ze zichtbaar of onzichtbaar te maken. De mogelijkheden voor het met point-en-click aanmaken van een applicatie op het Salesforceplatform zijn daarmee haast oneindig. Echter, de velden op je recordpagina worden hierin altijd als één blok getoond, zonder fijnmazige controle over welke velden je wilt tonen en zonder de mogelijkheid van zichtbaarheidsregels op veldniveau. In plaats daarvan wordt de verzameling velden getoond op basis van de ingestelde page layout. Page layouts kun je toewijzen per profiel en per record type, maar niet per app. Ook mis je de mogelijkheid tot het confitioneel tonen van velden op basis van de waarde van een bepaald veld, de informatie over de gebruiker of de form factor.
Salesforce heeft dit gelukkig ook gezien en blijft doorbouwen aan de Lightning Experience, nu met Dynamic Forms. Hiermee wordt in de App Builder in de moduleselectielijst aan de linkerkant nu naast het tabje Components ook Fields weergegeven (dat Components altijd al een eenzaam tabje was, zegt wellicht iets over de vraag of Salesforce dit mogelijk al vanaf het begin van plan was met de Lightning App Builder…?). De getoonde fields kunnen niet direct in de layout geplaatst worden, maar moeten altijd worden voorzien van een omvattende field section.
Als we dit doen voor het object Property (voor de fanatieke Trailblazers vast niet onbekend), kunnen we de pagina helemaal indelen zoals we zelf willen:
Deze page zouden we nu kunnen opslaan en toewijzen aan profielen, apps en record types. We zouden ook nog een stap verder kunnen gaan, en deze blokjes laten verschijnen als ze voldoen aan een bepaalde voorwaarde. Zo kunnen we bijvoorbeeld het kopje Afbeelding alleen laten zien als er een afbeelding beschikbaar is, de Marktinformatie tonen als de Status niet Closed is, en de Historie alleen zichtbaar maken aan gebruikers met “Sales” in de naam van het profiel (…niet de beste manier van databeveiliging, dus don’t try this at home). Dit kunnen we doen door filters toe te voegen aan de Component Visibility-instellingen:
Zodra we de Lightning Page opslaan en activeren, kunnen we de nieuwe lay-out terugzien. Wanneer we vervolgens de Status van ‘Available’ naar ‘Closed’ zetten, zou de lay-out moeten mee veranderen.
Nu klikken we op Save…
…en voilà. Dynamische recorddetailpagina’s zonder code of ander maatwerk, maar 100% standaard Salesforcefunctionaliteit.
Dan nu nog wat kleine lettertjes:
As a Non-GA Preview feature, Dynamic Forms is a preview and isn’t part of the “Services” under your master subscription agreement with Salesforce. Use this feature at your sole discretion, and make your purchase decisions only on the basis of generally available products and features. Salesforce doesn’t guarantee general availability of this feature within any particular time frame or at all, and we can discontinue it at any time. This feature is for evaluation purposes only, not for production use. It’s offered as is and isn’t supported, and Salesforce has no liability for any harm or damage arising out of or in connection with it. All restrictions, Salesforce reservation of rights, obligations concerning the Services, and terms for related Non-Salesforce Applications and Content apply equally to your use of this feature. You can provide feedback and suggestions for Dynamic Forms in the Dynamic Forms Trailblazer Community. For information on enabling this feature in your org, see Get Started with Dynamic Forms (Non-GA Preview).
Any use of this Non-GA Preview is subject to the Beta Services terms at https://www.salesforce.com/company/legal/agreements.jsp.
Dat het hier om een bètarelease gaat, blijkt ook uit een aantal limitaties. Zo wordt de pagina niet direct gegenereerd na het opslaan: ik moest expliciet de pagina verversen om de dynamische componenten te verwijderen / tonen na wijzigingen aan de controlerende velden. Ook zijn de Dynamic Forms alleen beschikbaar voor custom objects. Voor ondersteuning voor Accounts en Opportunities zul je nog een (paar) release(s) geduld moeten hebben. Desalniettemin worden wij hier bij Growteq heel enthousiast van! In de laatste release is er een heel aantal uitbreidingen gekomen die de low-codemogelijkheden van het platform behoorlijk vergroten, en daarmee de vereiste inspanning voor maatwerkoplossingen flink kunnen verkleinen. Dynamic Forms is één van de features waarmee Salesforce ook de komende jaren een eerste keus low-codeplatform blijft.