Dubbele regels in SystemDivisionClassifications op Exact Online

We lezen de Exact Online tabel SystemDivisionClassifications vanuit ons accountancy-abonnement in Power BI.

De inhoud laat meerdere regels zien met dezelfde inhoud. Ik zou verwachten dat er net zoals bij SystemDivisions maar 1 combinatie is van administratie (DivisionCode) en administratieclassificatie, maar ik zie vaker dezelfde.

Hoe los ik dat op?

SystemDivisionClassifications is een speciale Exact Online API.

Er zijn drie soorten API’s:

  • Systeembrede data
  • Gepartitioneerde data
  • Abonnementsdata

Systeembrede Data

Enkele Exact Online tabellen zijn geldig voor de gehele database. Denk bijvoorbeeld aan Me met de gebruikersnaam en SystemDivisions met de administraties en hun toestand.

Gepartitioneerde Data

De meeste Exact Online API’s zijn gepartitioneerd in Invantive SQL: elke administratie is een partitie en de kolommen zijn gelijk in elke partitie. De data wordt gelijktijdig door Invantive opgehaald uit meerdere administraties en netjes onder elkaar gelegd en “streaming” teruggegeven.

Division Code Name
123132 10001 Janssen BV
123132 10002 Pietersen BV
124738 10001 ACME BV

Dit noemen we ook “partitioned data” en hetzelfde concept komt terug in bijvoorbeeld Twinfield. Het komt meer tot op beperkte hoogte terug in salarissystemen zoals Loket en NMBRS omdat die eigenlijk geen partities hebben maar de data intern maar beperkt scheiden.

Abonnementsdata

Elk Exact Online heeft een nummer dat in divisie 1 het nummer van de relatie is. Vandaar de rare spaties rondom de CustomerCode; het is gewoon een AccountCode maar dan uit divisie 1 van het desbetreffende Exact Online land. Op abonnementsniveau worden ook een aantal gegevens vastgehouden zoals de client-IDs van het abonnement, MailMessagesReceived en de Users (gebruikers).

Tussen partities en systeembreed kent Invantive SQL geen tussenlaag, dus er is gekozen om in elke administratie (partitie) deze data terug te laten komen. In het geval van Users betekent dit je bij een ondernemer met 3 administraties drie keer de gebruikers ziet terugkomen, namelijk bij elke divisie.

En ben je een accountant met gekoppelde administraties van zelfboekende ondernemers? Dan heb je toegang tot meerdere Exact Online abonnementen. In elk abonnement zitten andere gebruikers die de desbetreffende applicatiebeheerder zelf bijhoudt. De inhoud van Users is dan:

Division CustomerCode UserFullName
123123 8041231 Piet Janssen
123123 8041231 Karel Janssen
123124 8041231 Piet Janssen
123124 8041231 Karel Janssen
343423 9635421 John Doe
343423 9635421 Blondie

Je moet zelf filteren om de juiste gegevens. In veel gevallen door jezelf te beperken tot een partitie per abonnement:

use select min(code) from systemdivisions where status = 1 /* Active. */ group by customercode

Maar ook SystemDivisionClassifications heeft abonnementseigenschappen. Het is dus geen systeembrede data zoals SystemDivisions. Maar wat is er dan abonnementsspecifiek aan SystemDivisionClassifications?

Elke abonnementhouder kan op een divisie (administratie) classificaties toekennen, maar die classificatiestructuur voor administraties is abonnementsspecifiek. Nog sterker, anders dan bij Users kan de accountant een andere classificatiestructuur gebruiken dan de zelfboekende ondernemer op dezelfde administraties.

Dit maakt het gebruik van SystemDivisionClassifications zo’n beetje de meest moeilijke tabel uit het Exact Online datamodel. De realisatie van deze API was dan ook uitdagend, maar uiteindelijk is het een goed werkende API geworden.

Meer Exact Online datamodel uitleg

Meer details over het Exact Online model zijn te vinden rechtsonder op de Exact Online poster.