- Gepubliceerd op
- min leestijd
- 4
- Over
- Ismael Baddich
Plug-in, Power Automate of business rule? De juiste tool kiezen in Dynamics 365
Dezelfde vereiste kan op vier manieren gebouwd worden in Dynamics 365. Een praktische beslisboom op basis van transacties, latency en de echte onderhoudskost.
“Wanneer de status op Goedgekeurd komt, werk het bovenliggende account bij.” Die vereiste van één regel kan gebouwd worden als business rule, als C#-plug-in, als Power Automate-flow of als JavaScript op het formulier. Alle vier werken in een demo. Eén overleeft productie.
Zo beslis ik.
De vraag die alles bepaalt: is het transactioneel?
Als de regel altijd moet kloppen — een bedrag dat altijd moet sluiten, een status die nooit inconsistent mag zijn — dan moet ze binnen de databasetransactie draaien. Dat laat precies één optie over: een synchrone plug-in.
Al de rest — Power Automate, JavaScript, asynchrone workflows — draait nadat het record is opgeslagen. Er is een venster, van milliseconden tot minuten, waarin de data inconsistent is. Is dat venster aanvaardbaar, dan hebt u keuze. Zo niet, dan niet.
Stel deze vraag eerst. Ze elimineert doorgaans 80% van de opties.
De beslisboom
Gaat de regel over de weergave van het formulier? → Business rule. Tonen/verbergen, verplicht maken, een veld vergrendelen. Geen code, zichtbaar voor functionele consultants, overleeft upgrades. Schrijf hier geen JavaScript voor.
Moet de regel ook via de API gelden? → Plug-in. Een data-import, een integratie of een Power Apps-gebruiker raakt uw formulier nooit aan. Logica in JavaScript is per constructie te omzeilen — dat is geen validatie, dat is interfacecomfort.
Roept de regel een extern systeem aan? → Power Automate. Connectoren besparen u het schrijven, beveiligen en onderhouden van een HTTP-client in een plug-in. En een synchrone plug-in die een externe dienst aanroept is een slecht idee: u zet externe netwerklatency binnen uw transactie.
Gaat het om bulk- of geplande verwerking? → Geplande Power Automate, of een console-app afhankelijk van het volume. Voorbij enkele duizenden records wordt de 2-minutenlimiet van de plug-in-sandbox uw vijand.
Wat Power Automate echt kost
Power Automate wordt vaak verkocht als de “no code, dus goedkopere” optie. In onderhoud klopt dat zelden.
Wat een flow u kost en code niet:
- Code review. Een Git-diff op een plug-in lees je in twee minuten. Een diff op de JSON-definitie van een flow is onleesbaar.
- Koud debuggen. Zes maanden later uitzoeken waarom een flow met 40 acties niet meer triggert duurt langer dan een breakpoint in Visual Studio.
- Servicelimieten. Ze verschuiven, ze zijn per omgeving, en ze bijten in productie onder belasting — niet in test.
Power Automate blinkt uit wanneer de logica eenvoudig en de integratie complex is: drie acties en een SharePoint-connector. Het degradeert wanneer de logica complex en de integratie eenvoudig is: twintig geneste condities op Dataverse-data. In dat tweede geval: schrijf een plug-in.
Plug-ins: drie regels
Wanneer een plug-in de juiste keuze is, komen drie fouten telkens terug.
Registreer op de juiste stage. PreValidation om te blokkeren vóór er iets gebeurt, PreOperation om de target aan te passen zonder tweede call, PostOperation voor alles dat het aangemaakte record nodig heeft. Een PostOperation die Update doet op zijn eigen target is een overbodige round trip — en een potentiële oneindige lus.
Filter de attributen. Een plug-in op Update zonder attribuutfilter draait bij elke wijziging van eender welk veld. Op een drukke entiteit zijn dat duizenden nutteloze uitvoeringen per dag.
Zet nooit een netwerkcall in een synchrone plug-in. De sandbox kapt af op 2 minuten, en u houdt de transactie al die tijd vast. Is een extern systeem traag of onbereikbaar, dan kunnen uw gebruikers niet meer opslaan. Ga asynchroon, of verplaats het naar Power Automate.
De samenvattingstabel
| Vereiste | Tool | Waarom |
|---|---|---|
| Tonen / verbergen / verplicht maken | Business rule | Geen code, geen onderhoud |
| Gegarandeerde validatie | PreValidation-plug-in |
Niet te omzeilen |
| Berekening op het huidige record | PreOperation-plug-in |
Geen tweede call |
| Extern systeem aanroepen | Power Automate | Connectoren, retry inbegrepen |
| Bulkverwerking | Geplande flow / console-app | Geen sandboxlimiet |
| Interfacecomfort | JavaScript | Maar nooit als validatie |
Het echte criterium
Stel bij het kiezen een eenvoudiger vraag: wie onderhoudt dit over drie jaar, en met welke tools?
Is het antwoord “een functionele consultant, zonder Visual Studio”, dan verslaat een licht imperfecte business rule een elegante plug-in die niemand kan aanpassen. Is het antwoord “het ontwikkelteam, met Git en CI”, dan wint de plug-in.
De juiste tool is zelden de krachtigste. Het is die welke past bij het team dat ermee moet leven.
Gerelateerde artikels
- Power PlatformDataverse
Dataverse: vijf ontwerpfouten die u later duur komen te staan
De modelleringsbeslissingen uit week één van een Power Platform-project zijn die waarvoor u twee jaar later betaalt. Dit zijn de vijf die ik het vaakst zie.
3 min leestijd - DatamigratieDynamics 365
Een on-premise CRM migreren naar Dynamics 365 zonder dataverlies
Lessen uit een bankmigratie van CRM 2015 on-premise naar Dynamics 365: mapping, Azure Data Factory-pipelines, reconciliatie en de valkuilen die echt geld kosten.
4 min leestijd