AFAS klantsynchronisatie: veldrichting en inbound-sync
De klantsynchronisatie tussen i-Reserve en AFAS is per veld richtingsgestuurd. In de Parameters van de koppeling staat per actief klant-/bedrijfsveld een rij met de richting, de AFAS-connector en de AFAS-veldnaam. Zo bepaal je per veld wie eigenaar is van de data.
1. Richting per veld
| Richting | Uitgaand (i-Reserve → AFAS) | Inkomend (AFAS → i-Reserve) |
|---|---|---|
| i-Reserve leidend (standaard) | Veld wordt naar AFAS gepusht | Inkomende waarde wordt genegeerd |
| AFAS leidend | Veld wordt niet meegestuurd | Inkomende waarde overschrijft i-Reserve |
| Geen sync | — | — |
Bij AFAS leidend hoort een GetConnector + veldnaam (waar de waarde vandaan komt); bij i-Reserve leidend een UpdateConnector-object zoals KnOrganisation, KnPerson, KnBasicAddressAdr of KnContact (waar de waarde naartoe wordt geschreven).
2. Wanneer ontstaat de debiteur in AFAS?
Een klantregistratie in i-Reserve pusht niet automatisch naar AFAS. De debiteur ontstaat op het eerste moment dat hij nodig is:
- Bij facturatie — wanneer een factuur definitief wordt, zoekt de koppeling de debiteur; bestaat die niet, dan wordt hij aangemaakt.
- Handmatig — via de AFAS-actieknop op de klantenkaart.
Bij aanmaak worden alleen de velden met richting i-Reserve leidend naar AFAS geschreven. De teruggegeven debiteurcode wordt in het externe-id-veld van de klant bewaard, zodat latere synchronisaties direct de juiste debiteur vinden. Dit voorkomt half gevulde debiteuren en onnodige schrijfacties bij elke registratie.
3. Handmatig vanaf de klantenkaart
- Naar AFAS sturen — maakt de debiteur aan of werkt hem bij volgens de veldrichtingen.
- Vanuit AFAS ophalen — haalt de AFAS-leidende velden op aanvraag binnen.
- Debiteur- en factuurdetails — toont de actuele AFAS-gegevens naast de i-Reserve-waarden, inclusief synchronisatiestatus per factuur.
4. Inbound-sync (AFAS → i-Reserve, optioneel)
Met de inbound-sync haalt een achtergrondtaak periodiek gewijzigde debiteuren uit AFAS op (interval instelbaar, standaard elke 30 minuten). De taak filtert op debiteuren die zijn gewijzigd sinds de vorige succesvolle run; daarvoor is een wijzigingsdatum-veld in de debiteur-GetConnector nodig — zonder dat veld wordt telkens de volledige lijst opgehaald.
Per opgehaalde debiteur:
- Matchen, in volgorde: extern id → debiteurnummer → e-mailadres. Een bestaande, nog niet gekoppelde klant met hetzelfde debiteurnummer of e-mailadres wordt gekoppeld in plaats van gedupliceerd.
- Geen match → optioneel wordt een nieuwe klant aangemaakt (instelbaar).
- Velden → alleen velden met richting AFAS leidend worden bijgewerkt. Optioneel worden ook de gegevens van de contactpersoon uit de contact-GetConnector meegenomen.
- Bedrijfsmodus → is een bedrijfs-koppelveld ingesteld, dan wordt de AFAS-debiteur aan een bedrijf gekoppeld (en zo nodig aangemaakt) en worden contactpersonen klanten onder dat bedrijf.
5. Conflicten, audit en loop-preventie
- Wijzigt een gebruiker in i-Reserve een veld dat op AFAS leidend staat, dan overschrijft de volgende inbound-run die waarde weer — AFAS wint op zijn eigen velden. Het conflict wordt expliciet gelogd.
- Elke inkomende wijziging levert een audit-record op met de oude én nieuwe waarde, zodat wijzigingen altijd terugvindbaar zijn.
- Tijdens een inbound-run is loop-preventie actief: het opslaan van de klant veroorzaakt geen push terug naar AFAS.
- Het synchronisatiemoment wordt alleen na een foutloze run bijgewerkt; na een fout is de run dus veilig herhaalbaar.
De inrichting van connectors en rechten staat in AFAS Profit instellen.





