🧩 Plugin & Custom API guidelines

Richtlijnen voor server-side business logica binnen Dataverse

← Terug naar Develop

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