1. Introductie
Plugins & Custom API's worden gebruikt voor server-side business logica binnen Dataverse.
Ze draaien binnen de event pipeline en zorgen voor consistente, betrouwbare en transactionele verwerking.
π Gebruik Plugins en Custom APIβs voor complexe server-side business logica, validaties en integraties.
2. Doel
Plugins en Custom APIβs worden toegepast voor:
- Server-side validaties
- Event-driven logica
- Complexe berekeningen
- Integraties
- Herbruikbare API endpoints
Verschil Plugin vs Custom API
| Component |
Doel |
| Plugin |
Reageert op events (create, update, delete) |
| Custom API |
Expliciet aanroepbare API voor integraties of interne logica |
3. Opbouw van Plugins / Custom APIβs
-
Entrypoint β Plugin / Custom API
-
Services β business logica
-
Helpers β ondersteunende functies
-
Core β configuratie / infrastructuur
Architectuur
Entrypoint (Plugin / API)
β
Services (Business logic)
β
Helpers
β
Core
- Plugins en Custom APIβs bevatten geen business logica
- Services vormen de centrale implementatie van logica
- Helpers ondersteunen met technische functies
- Core bevat configuratie en constants
π Deze scheiding zorgt voor herbruikbaarheid en onderhoudbaarheid.
Ontwikkelproces
Ontwerp
- Bepalen van juiste implementatie (plugin vs API)
- DefiniΓ«ren van input/output
- Analyse van afhankelijkheden
Implementatie
- Dunne plugin / API
- Logica in services
- Logging en foutafhandeling
Testing
- Unit tests (services)
- Plugin tests (FakeXrmEasy)
- Valideren van business logica
- Voorkomen van regressie
Documentatie
- Documenteer services en logica
- Leg uitzonderingen vast
4. Wanneer gebruik je Plugins / Custom APIβs
β
Wel gebruiken
- Server-side validaties
- Complexe logica over meerdere entiteiten
- Integraties
- Transactionele verwerking
β οΈ Beperkingen
- Meer ontwikkel- en beheerkosten
- Deployment vereist (ALM-proces)
- Minder geschikt voor snelle configuratie
β Niet gebruiken voor
- Eenvoudige validaties β gebruik Business Rules
- UI logica β gebruik JavaScript
- Custom UI β gebruik PCF Controls
- Procesautomatisering β gebruik Power Automate (Cloud Flows)
π Plugins en Custom APIβs vormen de backend logica laag binnen het platform en zorgen voor consistente en betrouwbare server-side verwerking.
5. Decision flow (vereenvoudigd)
- Eenvoudige validatie β Business Rule
- UI logica β JavaScript
- Custom UI component β PCF Control
- Proces β Cloud Flow
- Complexe backend logica β β
Plugin / API
6. Testing
- Unit tests (services)
- Plugin tests (bijv. FakeXrmEasy)
- Regressietests
- Test verschillende pipeline stages
π Test altijd business logica los van de plugin entrypoint.
7. Performance
- Minimaliseer database calls
- Gebruik early exit patterns
- Beperk plugin execution time
- Vermijd onnodige plugin triggers
8. ALM & Deployment
- Deploy via solutions
- Gebruik CI/CD pipelines
- Versiebeheer via Git
- Plugin registratie via tooling
π Plugins zijn kritische componenten β deployment moet gecontroleerd verlopen.
9. Richtlijnen
Eenvoud
- Houd plugins klein en specifiek
- Splits logica in services
Naming
- Gebruik consistente naamgeving
- [publisher].[type].[primaire entiteit].[functie]
Voorbeelden:
- Brenke.Plugin.Account.PreCreate
- Brenke.API.Order.CalculateTotal
Structuur
- Scheid entrypoint en business logica
- Gebruik dependency injection waar mogelijk
Onderhoudbaarheid
- Voorkom duplicatie
- Documenteer APIβs en services
10. Veelgemaakte fouten
β Business logica in plugin entrypoint
β Te complexe plugins
β Geen unit testing
β Onnodige triggers
11. Troubleshooting
- Gebruik tracing / logging
- Controleer plugin steps en registratie
- Analyseer exceptions
- Gebruik debugging tools (Plugin Profiler)
12. Voorbeeld
Scenario:
- Bij opslaan van een order moet validatie en berekening plaatsvinden
Implementatie:
- Plugin op Create / Update
- Business logica in service layer
- Validatie + berekening server-side
13. Samenvatting
- Backend logica β Plugin / API
- Transactioneel en betrouwbaar
- Gebruik services voor logica
- Altijd testen binnen ALM
β
Zeer krachtig en robuust β Complex en beheersintensief