Wie zoekt naar AFAS ontwikkeling, denkt vaak meteen aan programmeren. In de praktijk is dat de laatste stap. AFAS is een Nederlandse ERP-oplossing met CRM, financiën, HR, salaris en orderverwerking in één pakket, en juist die samenhang maakt dat de meeste wensen binnen het systeem oplosbaar zijn. Deze pagina laat zien waar personalisatie ophoudt, wanneer een module op maat zinvol is en hoe u voorkomt dat maatwerk later uw updates en uw beheer in de weg zit.
Drie niveaus van aanpassing
Het helpt om aanpassingen in drie lagen te denken. Elke laag brengt meer vrijheid, maar ook meer verantwoordelijkheid.
| Niveau | Wat het is | Gevolg voor updates | Wie doet het |
|---|---|---|---|
| Inrichting | Velden, workflows, autorisaties, rapportages, dashboards | Laag: u blijft binnen het product | Functioneel beheerder of integrator |
| Bestaande uitbreidingen | Standaardkoppelingen en oplossingen van partners | Gemiddeld: de leverancier volgt de updates | Integrator, partner |
| Eigen ontwikkeling | Applicaties of scripts die via de API met AFAS werken | Hoger: u moet zelf testen en bijwerken | Ontwikkelaar, integrator |
Een goede vuistregel: ga pas een niveau omlaag als het niveau erboven aantoonbaar niet volstaat, en leg die afweging vast.
Personalisatie: eerst de standaard uitputten
Voordat iemand een regel code schrijft, hoort de inrichting scherp te staan. Veel gevallen van "maatwerk" blijken achteraf een inrichtingsvraag. Een afwijkende goedkeuringsroute voor inkoopfacturen, een extra veld op een relatie, een rapport voor het MT of een eigen autorisatiestructuur per afdeling: dat is geen ontwikkeling, dat is configuratie.
Dat levert voordelen op die u pas later merkt:
- Het blijft ondersteund: de leverancier kent het gedrag van de standaard.
- Het gaat mee bij nieuwe versies zonder dat iemand iets hoeft te herschrijven.
- Een nieuwe collega of een andere integrator begrijpt het sneller.
Dit sluit aan bij de manier waarop een implementatie van AFAS hoort te verlopen: eerst inrichten wat standaard kan, en afwijkingen alleen toestaan met een reden. Wie vooraf een goed programma van eisen heeft, kan per eis zien of die in de standaard past of een afwijking vraagt.
Bestaande uitbreidingen en partnerkoppelingen
Tussen inrichten en zelf bouwen zit een middenweg die vaak wordt overgeslagen: een bestaande oplossing van een partner. AFAS heeft een netwerk van partners voor koppelingen; volgens AFAS worden de integraties van die partners grondig getest op beveiliging en werking voordat ze worden aangeboden. Het overzicht staat in de partnerlijst op partner.afas.nl.
Dat is relevant voor het Nederlandse mkb, omdat veel koppelingen steeds terugkomen: webshops, bankverkeer, urenregistratie, vervoer en documentverwerking. Een koppeling die al door anderen wordt gebruikt, is beter getest en goedkoper te onderhouden dan een eigen variant. Meer over wat er mogelijk is, vindt u bij de integraties van AFAS en de modules van AFAS.
Ook voor verplichtingen waar de markt in beweging is, kijkt u eerst naar wat er al is. Neem e-factureren: maak daar geen eigen oplossing voor als een bestaande koppeling of standaardfunctie hetzelfde doet.
Eigen ontwikkeling: de API van AFAS
Wie echt iets op maat bouwt, doet dat in de regel via de API. De opzet is overzichtelijk en goed gedocumenteerd:
- GetConnectors lezen gegevens. De definitie ervan maakt de gebruiker zelf aan, dus u bepaalt welke velden en filters beschikbaar zijn.
- UpdateConnectors voegen gegevens toe, wijzigen of verwijderen ze.
- REST werkt met JSON, SOAP met XML; een GetConnector kan daarnaast CSV teruggeven.
- Er zijn aanvullende connectors voor onder meer onderwerpen, rapporten, afbeeldingen, bestanden en de versie: SubjectConnector, ReportConnector, ImageConnector, FileConnector en VersionConnector.
Toegang en beveiliging
Toegang loopt via een token dat u genereert in een AppConnector. Daarin legt u vast welke Get- en UpdateConnectors de applicatie mag gebruiken. Het token maakt u handmatig aan of via een eenmalig wachtwoord (OTP). Bij REST verwacht AFAS het token in Base64 in de authenticatie-header.
Voor beheer is dit belangrijk. Geef elke applicatie een eigen AppConnector met alleen de rechten die nodig zijn, zodat u één koppeling kunt intrekken zonder de rest te raken. Bewaar tokens niet in code of in een gedeeld document.
Grenzen waar u rekening mee houdt
De totale omvang van een API-aanroep is beperkt tot 75 Mo, zowel bij REST als bij SOAP. Voor grote gegevensstromen betekent dat: knip de verwerking op in kleinere aanroepen en bouw foutafhandeling in. Ontwerp een koppeling dus niet als één grote eenmalige overdracht.
Tools en documentatie voor ontwikkelaars vindt u op connect.afas.nl. Demo-omgevingen zijn voorbehouden aan licentiehouders; plan dus tijd in om toegang te regelen voordat een ontwikkelaar kan beginnen.
Typische situaties voor een module op maat
Niet elke wens is een goede reden om te ontwikkelen. Een module op maat voor AFAS is verdedigbaar in situaties als deze:
- Een uniek proces dat uw concurrentiepositie bepaalt. Bijvoorbeeld een eigen calculatie of een afwijkende afhandeling die klanten van u onderscheidt.
- Een portal voor klanten of leveranciers met uw eigen uitstraling, die gegevens uit AFAS toont en terugschrijft.
- Een koppeling met een branchespecifiek systeem waarvoor geen standaardoplossing bestaat, zoals machines in een productiehal of een eigen planningstool.
- Bulkverwerking of migratielogica die de standaardfuncties niet aankunnen.
Bij een productiebedrijf kan het gaan om productie in AFAS; in dat geval is het verstandig eerst te toetsen wat de standaard al dekt voordat u een planningsmodule bouwt.
Een slecht signaal is een lijst wensen waarvan niemand kan uitleggen waarom de standaard niet volstaat. "Zo deden we het in ons oude systeem" is geen reden voor ontwikkeling.
Wat maatwerk doet met updates en beheer
AFAS rolt wijzigingen centraal uit voor alle klanten. Dat is een voordeel, maar het legt ook een verantwoordelijkheid bij u: wat u zelf bouwt, wordt niet automatisch meegetest. Houd rekening met het volgende:
- Afhankelijkheid van velden en definities. Een externe applicatie die leunt op een specifieke GetConnector, werkt alleen zolang die definitie intact blijft. Wie een definitie wijzigt, kan stilletjes een koppeling breken.
- Versiecontrole. Via de VersionConnector kunt u de versie opvragen. Gebruik dat om uw eigen toepassing te laten reageren op wijzigingen.
- Eigenaarschap. Zonder een aangewezen eigenaar blijft maatwerk liggen tot het stukgaat. Leg vast wie het beheert.
Vooral na een overname of wisseling van integrator wordt dit zichtbaar. Een audit van uw AFAS-omgeving laat zien welke aanpassingen er zijn, wie ze heeft gebouwd en of ze gedocumenteerd zijn.
Bonnes pratiques: standaard, documentatie en tests
Drie gewoonten maken het verschil tussen maatwerk dat jaren meegaat en maatwerk dat een last wordt.
Blijf zo dicht mogelijk bij de standaard
Elke afwijking is een verplichting voor de toekomst. Vraag bij elke wens: wat gebeurt er als we het niet bouwen? Vaak blijkt dat een kleine procesaanpassing goedkoper is dan een eigen oplossing. Maak van deze vraag een vast onderdeel van uw wijzigingsproces.
Documenteer wat u bouwt
Leg per aanpassing vast:
- welk probleem het oplost en wie het heeft gevraagd;
- welke connectors, AppConnectors en velden worden gebruikt;
- hoe het wordt getest en wie het beheert;
- wat er moet gebeuren als het uitvalt.
Dit hoeft geen dik document te zijn. Een korte beschrijving per aanpassing, op een vaste plek, is genoeg om een overdracht te overleven.
Test bij elke wijziging
Houd een kort testscript aan voor elke aanpassing en loop het door na een wijziging in de inrichting of na een update. Test eerst buiten uw productieomgeving, met realistische gegevens. Voor financiële processen zoals de btw-aangifte of de facturatie geldt dit des te meer: een fout in een koppeling komt bij de boekhouder of accountant terecht, niet bij de ontwikkelaar.
Een ontwikkelaar of integrator beoordelen
Een partij die AFAS goed kent, laat dat zien in de manier waarop zij over maatwerk praat. Let op deze punten:
| Vraag | Goed antwoord | Waarschuwingssignaal |
|---|---|---|
| Wat doet u eerst bij een wens? | Eerst de standaard en bestaande koppelingen onderzoeken | Direct een offerte voor ontwikkeling |
| Hoe regelt u toegang tot de API? | Eigen AppConnector per applicatie, minimale rechten | Eén token voor alles |
| Wat leveren jullie op naast de code? | Documentatie, testscript, overdracht | Alleen de werkende applicatie |
| Hoe gaat u om met updates? | Testprocedure en afspraken over onderhoud | "Dat komt vanzelf goed" |
| Wie beheert het na oplevering? | Duidelijke afspraak, bij voorkeur schriftelijk | Onduidelijk of afhankelijk van één persoon |
Vraag ook om referenties van vergelijkbare organisaties en laat de aanpak toelichten in begrijpelijke taal. Meer criteria vindt u bij een AFAS-integrator kiezen, en de afspraken voor de periode na oplevering komen aan bod bij support en onderhoud.
Hoe u verder gaat
Maak eerst een lijst van uw wensen en splits die in drie groepen: wat past in de inrichting, wat bestaat al als koppeling of partneroplossing, en wat vraagt echt om ontwikkeling. Vaak blijft van de derde groep weinig over. Voor die rest laat u een voorstel maken waarin onderhoud, tests en documentatie expliciet zijn opgenomen.
Wilt u dat een geschikte AFAS-partij meekijkt? Wij brengen u kosteloos in contact met een integrator die bij uw project past. Wij zijn zelf geen AFAS-partner en voeren het project niet uit; de integrator doet dat.
Veelgestelde vragen
Wat is het verschil tussen personalisatie en ontwikkeling in AFAS?
Personalisatie is het inrichten van wat AFAS al biedt: velden, workflows, autorisaties, rapportages en koppelingen. Ontwikkeling betekent dat u buiten dat kader iets toevoegt, bijvoorbeeld een externe applicatie die via de API gegevens leest en schrijft. Begin altijd met inrichting; ontwikkeling is pas aan de orde als de inrichting aantoonbaar tekortschiet.
Kan ik AFAS zelf uitbreiden via de API?
Ja. De API werkt met GetConnectors om gegevens te lezen en UpdateConnectors om gegevens toe te voegen, te wijzigen of te verwijderen. U communiceert via REST in JSON of via SOAP in XML, en toegang loopt via een token dat u in een AppConnector koppelt aan de toegestane connectors. Zorg dat u iemand hebt die dit ook beheert, niet alleen bouwt.
Wat gebeurt er met mijn maatwerk bij een AFAS-update?
Maatwerk dat binnen de standaard blijft, zoals inrichting en connectors, is het minst gevoelig voor updates. Een externe applicatie die op de API leunt, vraagt na een update een testronde, zeker als u afhankelijk bent van specifieke velden of definities. Hoe meer u buiten het standaardgedrag bouwt, hoe meer controle u na elke wijziging nodig hebt.
Wanneer is een eigen module of applicatie rond AFAS verstandig?
Als een bedrijfsproces echt uniek is voor uw organisatie, de standaard het niet dekt en een bestaande koppeling of partneroplossing ook niet past. Denk aan een eigen portal voor klanten of een specifieke rekenmodule. Leg vooraf vast wie het onderhoudt en hoe het wordt getest, anders wordt het een risico.
Hoe beoordeel ik een AFAS-ontwikkelaar of -integrator?
Vraag om een aanpak die eerst de standaard benut, om documentatie als vast onderdeel van de oplevering en om een testprocedure voor updates. Vraag ook hoe de beveiliging van de API-toegang is geregeld en wie na oplevering verantwoordelijk blijft. Een integrator die direct code aanbiedt zonder de standaard te bespreken, is een waarschuwingssignaal.
Bronnen
- AFAS Help, API
- AFAS, partnernetwerk
De genoemde softwarenamen zijn handelsmerken van hun respectievelijke eigenaren en worden uitsluitend ter informatie vermeld. Deze site is onafhankelijk en niet verbonden aan een softwareleverancier.