CASESTUDIE
E2E
Master-to-many Minimax-voorraadsynchronisatie over 50+ onderaannemer-accounts.
Overzicht
- Branche: Field service / onderaannemer-operations (boekhouding + voorraad)
- Opgeleverd: Custom Minimax-integratieservice + lichte admin UI
- Rol: Architectuur, implementatie, operations support
- Integratiepunten: Minimax OAuth2 + REST API (artikelen, organisaties, uitgereikte facturen), multi-tenant sync over 50+ organisaties
- Status: Automatisering in productie
Context
E2E werkt met een centrale (“master”) Minimax-organisatie als bron van waarheid voor de productcatalogus. Onderaannemers werken in hun eigen Minimax-organisaties en hebben consistente artikeldata nodig om mismatches in codes, namen, prijzen en btw-configuratie te vermijden.
Probleem
- Eén master Minimax-account moet artikelwijzigingen doorzetten naar 50+ onderaannemer-accounts.
- De sync moet incrementeel en idempotent zijn (geen duplicaten).
- Onderaannemer-specifieke boekhoudmappings mogen niet worden overschreven tijdens updates.
- Operations heeft een simpele manier nodig om onderaannemer-accounts te onboarden/uitschakelen.
Projectdoelen
- De master artikelcatalogus synchroniseren naar 50+ Minimax-organisaties.
- Deterministische upsert-logica implementeren: ontbrekende artikelen aanmaken, gewijzigde artikelen bijwerken.
- Master↔onderaannemer mappings en RowVersions bijhouden voor efficiënte change detection.
- Admin tooling voorzien voor account-onboarding en operationele controles.
Beperkingen & Uitdagingen
- OAuth2 token lifecycle (expiry + refresh) moet robuust zijn.
- Multi-tenant mapping moet stabiel zijn (master item ID → onderaannemer item ID).
- Updates moeten onderaannemer-boekhoudvelden behouden (voorraad-/omzetrekeningen).
- API-gebruik moet efficiënt blijven bij 50+ organisaties.
Oplossingsoverzicht
We hebben een klein integratiesysteem gebouwd dat:
- Authenticeert bij Minimax en haalt incrementele sync-candidates op uit het master-account.
- Upserts uitvoert naar elke actieve onderaannemer-organisatie.
- Mapping + RowVersion-tracking opslaat in MySQL om duplicaten te voorkomen en API-calls te beperken.
- Een lichte admin UI bevat om credentials en deelname van onderaannemers te beheren.
Als operationele add-on kan het systeem ook automatisch herinneringsmails sturen voor verlopen uitgereikte facturen.
Architectuur & Technische aanpak
Minimax API client
- OAuth2 token retrieval en refresh.
- `GET`/`POST`/`PUT` helpers met Bearer auth.
- Per-organisatie client instances voor master en onderaannemers.
Incrementele synchronisatie
- Haalt master `/items/synccandidates` op (optioneel met `RecordDtModifiedFrom`).
- Laadt artikeldetails en past deterministische create/update-logica toe per onderaannemer.
- Behoudt onderaannemer-account mappings tijdens updates.
Mapping + version tracking
- Slaat master item ID/RowVersion en onderaannemer item ID/RowVersion op.
- Gebruikt RowVersion-vergelijkingen om onnodige writes te vermijden.
Admin operations
- Onboarding-UI voor het toevoegen van Minimax-organisaties van onderaannemers.
- Enable/disable controls om accounts in of uit de sync te nemen.
Technologiestack
- PHP + MySQL
- Minimax OAuth2 + REST API
- PHPMailer (automatisering voor factuurherinneringen)
- Minimale admin-frontend (Material Components + jQuery)
Implementatieproces
- Master→onderaannemer mapping- en versioningmodel definiëren.
- OAuth2-aware Minimax-client hulpfuncties implementeren.
- Incrementele sync en deterministische upsert-logica bouwen.
- Persistency toevoegen voor mappings en RowVersion-tracking.
- Admin UI bouwen voor onboarding en operationele toggles.
Resultaten en impact
- Consistente artikelcatalogi over 50+ Minimax-organisaties van onderaannemers.
- Incrementele, idempotente sync die duplicaten voorkomt en handwerk vermindert.
- Onderaannemer-boekhoudconfiguratie blijft behouden tijdens updates.
- Eenvoudige operations-workflow voor het beheren van deelname van onderaannemers.
Reflectie
In een multi-organization omgeving zijn stabiele identity mapping en version-aware sync niet onderhandelbaar. Door zowel master als onderaannemer RowVersions te persisteren, kregen we voorspelbaar gedrag en efficiënt API-gebruik, terwijl het behouden van onderaannemer-specifieke velden kostbare boekhoudverstoringen voorkomt.
Samenvatting
Deze integratie houdt een master Minimax-voorraadcatalogus gesynchroniseerd naar 50+ Minimax-accounts van onderaannemers, met deterministische upserts, persistency van mappings en RowVersion-gebaseerde change detection. Een lichte admin UI ondersteunt onboarding en operationele controle.