Exact Online synchroniseren met Visma.net Financials

Go to English version

Samenvatting

Synchroniseer alle relaties van een Exact Online administratie met een Visma.net Financials administratie met één statement. Dit tweede artikel over synchronisatie met één SQL-statement (zowel in één als in twee richtingen) illustreert een praktische synchronisatietaak.

Synchronisatie van Exact Online relaties naar Visma.net Financials klanten

Een globale innovatie voor Invantive SQL maakt synchronisatie van gegevens met één statement (zowel mono- als bi-directioneel) tussen applicaties mogelijk. Het concept en de grammatica werden geïntroduceerd in Synchroniseer uw gegevens met één statement over meerdere cloudplatformen heen.

Dit artikel geeft een praktisch voorbeeld om ervoor te zorgen dat alle relaties van een Exact Online administratie aanwezig zijn in een Visma.net Financials administratie als klanten.

De implementatie van een monodirectionele synchronisatie van Exact Online naar Visma.net Financials vereist slechts één Invantive SQL-statement. Duidelijke begrippen en een eenduidige afbeelding tussen systemen zijn belangrijk, niet in de laatste plaats omdat in de Engelse versie van Exact Online en Visma.net Financials de begrippen uitelkaar lopen:

  • In Exact Online verwijst het begrip “account” (relatie) naar een tegenpartij in een (mogelijk toekomstige) juridische overeenkomst met de uitvoerende onderneming. De Engelse term “account” in Visma.net verwijst echter naar een rekening in het grootboek.
  • In Visma.net Financials verwijst een “klant” naar een specifieke lijst van partijen die optreden als klant in een juridische overeenkomst om producten over te dragen. Naast “klanten” is er een aparte lijst van leveranciers, terwijl in Exact Online alle klanten, leveranciers en andere tegenpartijen zoals prospects grotendeels als één tabel worden beheerd.

Functionele Mapping

In dit geval is de mapping vrij eenvoudig.

In Exact Online is de bron een relatie:

synchronize-exact-online-source

In Visma.net Financials moet het resultaat zijn:

In principe is de mapping als volgt:

  • Exact Online relatie worden geïdentificeerd door precies één Visma.net leverancier door de waarde van het “Referentie” veld in Visma.net.
  • De relatiereferentie begint met ‘EOL-’ om het oorspronkelijke systeem aan te geven.
  • De relatienaam wordt ongewijzigd overgenomen uit Exact Online.

Het is niet nodig om karakters te veranderen aangezien beide systemen een vrij brede set van de Unicode karaktersets lijken te ondersteunen. Afbreken is niet nodig omdat het systeem van herkomst Exact Online de naam van een partij beperkt tot 50 tekens, terwijl Visma.net maximaal 60 tekens toestaat.

Het opsplitsen van de Exact Online lijst van rekeningen in klanten, leveranciers (mogelijk overlappend) en alle anderen is buiten beschouwing gelaten. De criteria voor een dergelijke mapping zijn te vinden in de documentatie.

In de scope zit ook niet het bijwerken (voeg gewoon “of update” toe aan het statement) noch het verwijderen van klanten (Visma.net ondersteunt geen API-gebaseerde verwijdering van klanten).

Implementatie

De synchronisatie zou kunnen worden geformuleerd als een insert in Visma.net Financials vanuit een select met een full outer join op beide systemen. Het synchronize-statement maakt het echter eenvoudiger:

use 102673@eolnl,1896329@vismanet

create or replace table exactaccounts@inmemorystorage
as
select to_char(code) number
,      name
,      'EOL-' || to_char(code) accountreference
from   exactonlinerest..accounts@eolnl

synchronize exactaccounts@inmemorystorage
to          customer_getall@vismanet
with        insert
identified 
by          accountreference ignore nulls

Enkele opmerkingen:

  • Het use-statement selecteert één Exact Online administratie en één Visma.net Financials administratie. Meerdere Exact Online of Visma.net Financials administraties kunnen worden geselecteerd door het toevoegen van meer items, een of meer select-queries of de speciale namen all en default.

  • De in-memory tabel exactaccounts is een tijdelijke tabel ter illustratie van de mapping van de Exact Online begrippen naar Visma.net Financials begrippen. Zo wordt een relatienummer in Visma.net Financials beschouwd als een tekst in de tabellen. Deze query voor de in-memory tabel zou de juiste plaats zijn om de relatienamen af te breken, voorvoegsels toe te voegen, namen in hoofdletters te veranderen, etc.

  • Het synchronize-statement gebruikt het insert-statement om klanten te laden in Visma.net Financials. De ignore nulls-clausule is nodig omdat het veld ‘Reference’ in Visma.net waarschijnlijk enkele null-waarden zal hebben voor handmatig ingevoerde klanten en reference daarom geen volledig dekkende unieke sleutel is op het Visma.net klantenbestand.

  • eolnl en vismanet zijn twee datacontainers die zijn gedefinieerd op een gedistribueerde database met de volgende settings.xml-inhoud (uiteraard kunnen die behalve on-premises nog eenvoudiger op Invantive Cloud gedefinieerd worden):

<?xml version="1.0" encoding="utf-16"?>
<settings xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  version="5" forcedefault="false" >
  <group name="sample">
    <connection name="exact online nl + visma.net">
      <database alias="eolnl" provider="ExactOnlineAll" connectionString="api-url=https://start.exactonline.nl" />
      <database alias="vismanet" provider="VismaNet" />
    </connection>
  </group>
</settings>

Prestaties

De prestaties van het synchronisatieproces zijn afhankelijk van:

  • Huidig aantal klanten in Exact Online en Visma.net: het synchronize-statement moet beide lijsten met klanten met elkaar in overeenstemming brengen, hetzij vanuit een bestaande replica op een SQL Server database aangedreven door Invantive Data Replicator of door het real-time downloaden van de gegevens van de twee cloudplatformen. Natuurlijk kunnen ook andere Invantive Data Replicator platforms zoals Oracle en PostgreSQL worden gebruikt.
  • Aantal uit te wisselen klanten: de duur zal toenemen naarmate er meer data uitgewisseld moet worden.
  • Aanwezigheid van bulk loading functies: het synchronize-statement geeft de voorkeur aan bulk inserts wanneer deze beschikbaar zijn op platforms zoals SQL Server, maar valt terug op één voor één inserts wanneer deze niet beschikbaar zijn.

Visma.net Financials heeft momenteel geen functies voor bulkinvoer en in deze test waren Invantive Data Replicator en de verschillende cache-mechanismen uitgeschakeld. Bij aanvang van de test bevatte Visma.net Financials ongeveer 5.000 klanten en Exact Online meer. Er werd geen gebruik gemaakt van Invantive’s functies voor parallelle verwerking binnen of tussen administraties.

De reconciliatiefase duurt ongeveer 17 seconden (plus/min 2 seconden), terwijl het laden en valideren van klanten ongeveer 500 ms per klant kostte (plus/min 200 ms).

Het aanvankelijk laden van 1.000 klanten duurt dus ongeveer 10 minuten. Met 10 nieuwe klanten per dag en dagelijkse synchronisatie zou het klantenbestand van Visma.net en Exact Online up-to-date zijn binnen 30 seconden.