Dynamic People > Nieuws & Blog > De nieuwe Lookup validatie in Dynamics 365 versie 9

De nieuwe Lookup validatie in Dynamics 365 versie 9

Is ’t een bug? Het is een blijvertje. Dit is hoe het vanaf nu werkt! 

Op een van onze recente projecten liepen we ineens tegen relatief veel onverwachte Javascript-foutmeldingen. Tijdens de ontwikkelingsfase in een project kunnen natuurlijk altijd fouten ontstaan, daarom wordt zowel door ons als aan klantkant uitvoerig getest. Het aantal fouten was echter proportioneel zo hoog dat wij noodzaak zagen tot een uitgebreid onderzoek over het gehele Dynamics 365 systeem. Na grondig eigen onderzoek hebben we het probleem gedeeld met Microsoft en wat blijkt; Microsoft heeft een ongeplande verandering doorgevoerd en die gaan ze niet meer terugdraaien.

De gelouterde consultants hoef ik niet uit te leggen dat velden in CRM verwijzen naar gerelateerde entiteiten. Jarenlang was het verwijderen van waardes in een Lookup veld een kwestie van handmatig de waarde uit het veld verwijderen. In een eerdere versie is daar een ‘Remove Value’ knop bijgekomen die vanaf de ‘Lookup more records’ pop-up kon worden gebruikt.

De werking van de ‘Remove Value’ knop was na de initiële introductie hetzelfde als bij het handmatig leegmaken van het veld en resulteerde in een lege waarde tijdens de validatie in Javascript (e.g. NULL).

Sinds de user interface aanpassingen die geïntroduceerd zijn met versie 9, is dit echter niet langer het geval. Het gedrag is anders dan het altijd was met de genoemde foutmeldingen als vervelend gevolg. Wat blijkt namelijk, bij het gebruik van de ‘Remove Value’ knop in versie 9 wordt het veld niet meer leeg (e.g. NULL) maar een lege array.

Tijdens een intern onderzoek van Microsoft op basis van ons Support Ticket omtrent onze bevindingen is geconstateerd dat het nieuwe gedrag van de ‘Remove Value’ knop ongepland is ingeslopen tijdens de ontwikkeling door Microsoft. Microsoft heeft echter gekozen om dit gedrag te behouden en niet te corrigeren, met wijzigingen aan de MSDN (Microsoft documentatie) als gevolg. Dus hoe moet de waarde van een Lookup veld nu gevalideerd worden?

Zo was het:        formContext.getAttribute(‘dp_location’).getValue() != null
Zo is het nu:       formContext.getAttribute(‘dp_location’).getValue() != null &&
formContext.getAttribute(‘dp_location’).getValue().length > 0

Je kunt de documentatie van Microsoft afwachten – daarin zal dit hoofdstuk herschreven worden – maar dat gaat nog wel een paar maanden duren. Dus als je nu door wilt en vragen hebt over validatie, stuur me dan een mail, dan help ik je met plezier op weg. Dan vergeten we even in het belang van de klant dat we concurrenten zijn en zijn we gewoon vakbroeders die mekaar in dit soort situaties op sleeptouw nemen.

Met collegiale groet,
Kevin Hendricks