Kostenplaatsen in Exact Online synchroniseren over meerdere administraties

Gebruikers met meerdere administraties hebben vaak de wens om gegevens over meerdere Exact Online administraties gelijk te houden, zoals bijvoorbeeld:

  • kostenplaatsen
  • kostendragers
  • grootboekschema / grootboekrekeningen
  • relaties
  • adressen
  • contactpersonen
  • bankrekeningen

Dit artikel legt uit hoe de kostenplaatsen en/of kostendragers gebruikt voor analytisch boekhouden eenvoudig gesynchroniseerd kunnen worden van een Exact administratie naar meerdere administraties.

De synchronisatie is gerealiseerd op basis van het synchronize-statement. Meer uitleg hierover is te vinden in het volgende artikelen en de daaraan gekoppelde artikelen:

Een gelijke structuur qua stamgegevens in Exact Online kan soms gerealiseerd worden met een Exact Online template administratie, maar moet dan vroegtijdig goed opgezet worden, is soms inflexibel en vereist goed inzicht in de wensen en planning vooraf.

Een alternatief is het gebruik van Invantive SQL of het gebruik van de voorgedefinieerde modules voor replicatie in Get My Report.

Het voorbeeld uit dit artikel kan eenvoudig uitgebreid worden naar andere relatief triviale soorten stamgegevens zoals grootboekrekeningen. Voor complexere stamgegevens zoals artikelen, klanten en leveranciers wordt het gebruik van het synchronize-statement met zogenaamde “triggers” aangeraden. Voor synchronisatie van boekingen wordt handmatig geschreven SQL-code aangeraden gezien het vaak grote volume van miljoenen boekingen en de onderliggende bedrijfslogica die meestal veel meer vereist dan alleen synchroniseren.

Waarschuwing bij Synchronisatie

Net zoals bij template administraties voor synchronisatie geldt ook hier: synchronisatie kan massaal gegevens veranderen en kan een onverwachte uitwerking hebben. Controleer altijd vooraf en achteraf de resultaten en voer vooraf een test uit op een aparte omgeving.

Synchronisatie Kostenplaatsen

Het synchroniseren van kostenplaatsen uit een bron-administratie in Exact Online is met Invantive SQL eenvoudig te realiseren via de volgende code:

declare
  --
  -- Divisiecode van de bronadministratie.
  --
  l_division_code_source number := 10523123;
begin
  --
  -- Selecteer de gewenste administraties.
  --
  use all@eol;
  --
  -- Schakel caching uit omdat we alleen maar gaan bijwerken.
  --
  set use-http-disk-cache@eol false;
  set use-http-memory-cache@eol false;
  --
  -- Maak een tabel met de gewenste situatie.
  --
  -- Let op: het synchronize-statement van Invantive SQL gebruikt
  -- identieke kolomnamen om de huidige waardes en gewenste
  -- situatie bij elkaar te zetten.
  --
  create or replace table CostCentersSoll@InMemoryStorage
  as
  select sdn.Code 
         Division
  ,      ccr.Code
         Code
  ,      ccr.Description
         Description
  ,      ccr.Active
         Active
  from   ExactOnlineREST..CostCenters@eol ccr
  join   SystemDivisions@eol sdn
  on     sdn.code != ccr.Division
  where  ccr.Division = l_division_code_source
  ;
  --
  -- Synchroniseer de doeladministraties met de inhoud van de
  -- bronadministratie. Doordat de optie "delete" weggelaten is
  -- (wat trouwens meestal ook niet kan doordat de gegevens al
  -- gebruikt zijn), worden in de doeladministraties geen gegevens
  -- weggehaald. Er worden uitsluitend gegevens toegevoegd en/of
  -- bijgewerkt.
  --
  synchronize CostCentersSoll@InMemoryStorage
  to          ExactOnlineREST..CostCenters@eol
  with        insert
              or
              update all
  --
  -- Identificatie vindt plaats op basis van de natuurlijke sleutel
  -- waar mensen een kostenplaats aan herkennen: de administratie
  -- en de code van de kostenplaats.
  --
  identified
  by          Division
  ,           Code
  --
  -- Accepteer 50 fouten zoals bijvoorbeeld duplicaten.
  -- De fouten worden onthouden, maar pas aan het einde of bij de 51e
  -- fout gemeld aan de gebruiker.
  --
  continue on first 50 errors
  ;
  dbms_output.put_line(to_char(sqlrowcount) || ' rows have been changed/created.');
end;

Duur synchronisatie

Het synchroniseren van kostenplaatsen, kostendragers of andere stamgegevens is onderworpen aan dezelfde beperkingen als andere Exact Online-koppelingen:

  • gemiddeld één mutatie van een kostenplaats per seconde per administratie;
  • maximaal 5.000 mutaties per (kalender)dag.

Het synchroniseren van 600 kostenplaatsen naar 4 administraties kost daarom tenminste 10 minuten.