🧩 Logic implementation guidelines

Richtlijnen voor keuze van implementatie binnen Dataverse met architecturale beslisprincipes.

← Terug naar Develop

Introductie

Binnen het Dataverse / Dynamics 365 platform zijn er meerdere manieren om business logica te implementeren.

De belangrijkste opties zijn:

  • Business Rules (configuratie)
  • JavaScript (client-side logica)
  • PCF Controls (custom UI componenten)
  • Cloud Flows (procesautomatisering)
  • Plugins (server-side logica)
  • Custom APIs (server-side operations)

Het maken van de juiste keuze bepaalt direct:

  • Performance
  • Onderhoudbaarheid
  • Schaalbaarheid
  • Betrouwbaarheid van gedrag
  • Testbaarheid en supportbaarheid

πŸ‘‰ Deze pagina is het architecturale beslisframework voor het kiezen van de juiste implementatietechniek.

πŸ‘‰ UI bepaalt gedrag, Process stuurt flow, Domain bepaalt waarheid


🧭 Decision principle (belangrijkste regel)

πŸ‘‰ Kies altijd op basis van runtime context, dataconsistentie en lifecycle impact
Niet op basis van wat het snelst of eenvoudigst te implementeren is.


πŸ‘‰ UI bepaalt gedrag
πŸ‘‰ Process stuurt flow
πŸ‘‰ Domain bepaalt waarheid


🧠 Decision hierarchy (volgorde van voorkeur)

Gebruik deze volgorde als standaard beslisroute:

  1. Business Rules β†’ als het declaratief en UI-gerelateerd is
  2. JavaScript / UI logic β†’ alleen voor UX-interactie
  3. Cloud Flows β†’ als het procesmatig of async is
  4. Plugins β†’ als het transactioneel of performance-kritisch is
  5. Custom API’s β†’ als logica herbruikbaar of API-first moet zijn

πŸ‘‰ Start zo hoog mogelijk, maar verplaats naar beneden wanneer noodzakelijk

  • Eerst alles UI β†’ daarna process β†’ daarna server-side

πŸ“Š Overzicht van implementatie-opties

Optie Runtime Laag Doel
Business Rules Client / Dataverse UI Declaratieve validatie en veldgedrag
JavaScript Client (browser) UI Interactieve UX logica
PCF Control Client (browser) UI Custom UI componenten
Cloud Flow Power Platform runtime Process Automatisering & integratie
Plugin Dataverse server pipeline Domain Transactionele business logica
Custom API Dataverse server Domain API Herbruikbare business operaties

πŸ‘‰ Domain layer is leidend voor dataconsistentie en businesslogica


🧩 Decision framework (when to use what)


1. 🟒 Business Rules (default UI logic)

Gebruik wanneer

  • veld validatie nodig is
  • show/hide logic nodig is
  • eenvoudige berekeningen nodig zijn
  • geen code gewenst is

Niet gebruiken wanneer

  • logica afhankelijk is van externe systemen
  • complexe conditionele flows nodig zijn
  • performance of transacties kritisch zijn

Waarom

Business rules zijn de veiligste en meest onderhoudbare vorm van UI-logica.

Samenvatting

πŸ‘‰ Gebruik voor simpel, declaratief en UI-gedreven gedrag


2. 🟑 JavaScript / UI logic

Gebruik wanneer

  • UX interactie nodig is
  • real-time validatie nodig is
  • UI dynamisch moet reageren
  • business rules tekortschieten

Niet gebruiken wanneer

  • logica business-critical is
  • dataconsistentie vereist is
  • server-side enforcement nodig is

Waarom

JavaScript is UI-only en niet betrouwbaar als business enforcement layer

Samenvatting

πŸ‘‰ Gebruik alleen voor UX en interactie


3. 🟣 PCF Controls (custom UI components)

Gebruik wanneer

  • standaard UI componenten niet voldoen
  • complexe UI interactie nodig is
  • visuele componenten herbruikbaar moeten zijn
  • integratie nodig is met meerdere UI contexten

Niet gebruiken wanneer

  • eenvoudige UI logica volstaat (gebruik Business Rules / JS)
  • server-side validatie nodig is
  • performance afhankelijk is van server-side processing

Waarom

PCF Controls zijn custom frontend componenten die meer flexibiliteit bieden dan standaard UI.

Samenvatting

πŸ‘‰ Gebruik voor geavanceerde en herbruikbare UI componenten


4. πŸ”΅ Cloud Flows (Power Automate)

Gebruik wanneer

  • integraties nodig zijn
  • async verwerking gewenst is
  • notificaties verstuurd worden
  • event-driven processen bestaan

Niet gebruiken wanneer

  • transactionele consistentie nodig is
  • performance kritisch is (high volume)
  • real-time validatie vereist is

Waarom

Flows zijn proces- en integratielaag, geen domain layer. Flows orchestreren logica, maar definiΓ«ren deze niet.

Samenvatting

πŸ‘‰ Gebruik voor automation en integratie


5. πŸ”΄ Plugins (server-side logic)

Gebruik wanneer

  • dataconsistentie gegarandeerd moet zijn
  • transactionele logica nodig is
  • performance kritisch is
  • logica moet afdwingen bij create/update/delete

Niet gebruiken wanneer

  • UI-only logica
  • integratie zonder transactiebehoefte
  • eenvoudige workflows

Waarom

Plugins draaien in de Dataverse transaction pipeline

Samenvatting

πŸ‘‰ Gebruik voor core business rules en domain enforcement


6. 🟣 Custom APIs

Gebruik wanneer

  • logica herbruikbaar moet zijn
  • meerdere consumers dezelfde operatie gebruiken
  • API-first design gewenst is
  • flows / UI / externe systemen dezelfde operatie gebruiken

Niet gebruiken wanneer

  • enkel UI logic nodig is
  • een flow voldoende is
  • een plugin al de volledige trigger afdekt zonder hergebruik

Waarom

Custom APIs zijn domain operations als service

Samenvatting

πŸ‘‰ Gebruik voor herbruikbare business operaties


βš–οΈ Decision table (snelle keuzehulp)

Vraag Keuze
Is het UI-configuratie of veldgedrag? Business Rule
Is het UX-interactie of standaard UI gedrag? Business Rule / JavaScript
Is een geavanceerde of herbruikbare UI component nodig? PCF Control
Is het proces of integratie? Cloud Flow
Is het transactioneel of performance-kritisch? Plugin
Moet het herbruikbaar zijn als operatie? Custom API

πŸ” Conflict resolution rules

Flow vs Plugin

πŸ‘‰ Plugin wint bij:

  • dataconsistentie
  • transacties
  • performance critical logic

JS vs Business Rules

πŸ‘‰ Business Rule wint tenzij:

  • realtime UX interactie nodig is

Flow vs Custom API

πŸ‘‰ Custom API wint bij:

  • herbruikbaarheid
  • performance
  • API-first architectuur

πŸ—οΈ Architecture layering model

UI Layer

  • Business Rules
  • JavaScript
  • PCF Controls

Process Layer

  • Cloud Flows

Domain Layer

  • Plugins
  • Custom APIs

Integration Layer

  • Cloud Flows
  • Custom APIs

🚫 Anti-patterns

  • business logic verspreid over meerdere lagen
  • flows gebruiken voor transactionele core logic
  • JavaScript als business enforcement
  • plugins voor UI-only gedrag
  • duplicatie van logica in meerdere layers

βœ… Best practices

Aanbevolen

βœ” Start zo hoog mogelijk in de stack
βœ” Verplaats logica alleen omlaag als nodig
βœ” Houd domain logic in plugins/APIs
βœ” Houd UI logic in Business Rules/JS
βœ” Houd flows beperkt tot proces & integratie


Architectural rule of thumb

Bij het ontwerpen van oplossingen binnen het Power Platform (of in het algemeen) geldt een belangrijke vuistregel: plaats logica op de juiste plek in de architectuur, afhankelijk van het doel en de verantwoordelijkheid.

πŸ‘‰ UI = declaratief

De user interface beschrijft wat de gebruiker ziet en hoe de applicatie zich visueel gedraagt.

Gebruik hier eenvoudige, declaratieve logica (zoals Power Fx) voor zichtbaarheid, validatie en interactie.

De UI bevat geen complexe businesslogica, maar richt zich op presentatie en gebruikerservaring.

πŸ‘‰ Process = orchestration

De proceslaag (bijvoorbeeld Power Automate) stuurt de volgorde van acties aan.

Hier wordt bepaald welke stappen worden uitgevoerd, in welke volgorde en onder welke voorwaarden.

Deze laag orkestreert systemen, maar bevat bij voorkeur geen complexe businessregels.

πŸ‘‰ Domain = enforcement

De domeinlaag is verantwoordelijk voor de kern van de businesslogica.

Hier worden regels afgedwongen, zoals validaties, berekeningen en constraints.

Deze logica moet altijd gelden, ongeacht of de actie via UI, API of integratie wordt gestart.

πŸ‘‰ API = reuse

De API-laag maakt functionaliteit herbruikbaar en toegankelijk.

Door logica via APIs beschikbaar te stellen, kan deze consistent worden gebruikt door meerdere consumers (UI, processen, externe systemen).

Dit voorkomt duplicatie en verhoogt onderhoudbaarheid.


πŸ’‘ Samenvatting:

Plaats logica zo laag mogelijk in de architectuur.

Hoe dichter bij de domain layer, hoe beter de consistentie, herbruikbaarheid en beheersbaarheid van je oplossing.

πŸ“Œ Samenvatting

De keuze van implementatietechniek bepaalt:

  • stabiliteit van het platform
  • onderhoudbaarheid van solutions
  • schaalbaarheid van processen
  • voorspelbaarheid van gedrag

πŸ‘‰ Door een consistente decision hierarchy te volgen ontstaat een uniform, schaalbaar en controleerbaar Dataverse architecture model.