CRM Dynamics & Azure Functions

Hoe CRM Dynamics en Azure Functions elkaar versterken

Wat is CRM Dynamics?

CRM Dynamics is één van de leidende CRM-systemen, waarbij grote en kleine aanpassingen relatief eenvoudig door te voeren zijn. Dit lukt door het mogelijk maken van zowel client-side (javascript) als server side (Plugin op basis van .NET), custom workflow activities en actions. Toch zitten hier nog wat kanttekeningen aan, doordat deze aanpassingen nog in de context van CRM Dynamics draaien en/of in een Sandbox op de CRM server. Maar hoe zit dat dan precies?

Allereerst worden niet volledig vertrouwde assemblages niet ondersteund. Dit komt deels door beveiligingsredenen, maar waarschijnlijk ook ter voorkoming van een Assemblage ramp. Ten tweede zijn plug-ins altijd event driven, die ook nog eens in CRM Dynamics aanwezig moeten zijn. Het is dus bijna onmogelijk om een plug-in elke dag op een specifieke tijd af te laten gaan. Het veel aangehaalde voorbeeld hiervan is het zogeheten ‘verjaardagprobleem’. Als je uit CRM wilt halen of iemand die dag jarig is, moeten er eerst redelijk wat technische toepassingen worden uitgevoerd om dit voor elkaar te krijgen. Tot slot kunnen plug-ins de resources binnen CRM opslurpen. Om dit nog enigszins schaalbaar te houden, heeft CRM een twee minuten time-out ingevoerd op enkele plug-in runs. Echter, sommige asynchrone processen duren wel langer dan twee minuten.

Wat zijn de Azure Functions?

De Azure Functions zijn sinds begin van 2016 beschikbaar voor iedereen met een Cloud Azure portal (dit platform is gratis bij elke Dynamics 365 instantie). Medio 2016 is Pixelzebra begonnen met het gebruiken van deze Azure Functions, om zo de beperkingen van plug-ins te ontwijken. Toen de bruikbaarheid van deze Azure Functions voor Pixelzebra duidelijk werd, vroegen wij onszelf af waarom wij dit niet voor alle integraties gebruikten. Deze in de Cloud gevestigde, relatief goedkope en eenvoudig schaalbare resource kan eigenlijk alles wat plug-ins en Windows services ook kunnen met alle naar eigen keuze toe te voegen assemblages. De resource kost daarbij heel weinig, zolang er maar niet meer dan een paar duizend aanvragen per uur worden gestuurd en de code relatief geoptimaliseerd is. Daarnaast zijn de Azure functions oneindig te runnen, dus eventuele complexe asynchrone processen zijn hiermee te voorkomen. Daarbij kan het resultaat later bekeken worden.

Nu hoor ik u denken: ‘maar wat nou als er een synchroon proces nodig is en er een handeling in CRM moet worden gedaan?’ Dan is het altijd nog mogelijk om de Azure Function synchroon aan te roepen en de response terug te geven aan de plugin. Maar als de Azure Function vervolgens langer runt dan twee minuten, dan zou u zichzelf wel af moeten vragen of een synchroon proces wel de juiste keuze is. Het is natuurlijk nooit voordelig om de gebruiker twee minuten te laten wachten.

Kortom, de Azure Functions is een uitstekende toevoeging voor CRM Dynamics. Daarbij maakt dit het leven van elke CRM Dynamics developer ook nog eens een heel stuk eenvoudiger!