Eén van de unieke eigenschappen van Microsoft Dynamics NAV is vanaf de introductie van de software in Nederland (1993) altijd geweest dat deze aangepast kon worden aan uw specifieke bedrijfswensen. Naast een voordeel is dat ook altijd een nadeel geweest; immers hoe meer aanpassingen er werden gedaan, des te lastiger werd het om de software te onderhouden... Inmiddels zijn er meerdere mogelijkheden om dit te voorkomen, met behoud van de unieke aanpasbaarheid aan klantenwensen!
Als een gebruiker van Microsoft Dynamics NAV in het verleden een wijziging wilde laten aanbrengen ging de leverancier enthousiast aan de slag met het aanbrengen van wijzigingen in de standaard applicatie, eventueel door een standaard object te wijzigen of door een object toe te voegen in een aparte object range.
Event publishers en subscribers
Inmiddels is het mogelijk om het wijzigen van standaard objecten grotendeels te voorkomen, doordat het mogelijk is om op bepaalde ’events’ te ’subscriben’. Hierbij is het bijvoorbeeld mogelijk om een nieuw object te maken (dus: zonder een standaard object te wijzigen) die reageert op het invullen van een bepaald veld. Stel: u wilt dat e-mailadressen altijd in kleine letters worden ingevoerd, kan er een ’subscriber’ worden gemaakt die automatisch wordt uitgevoerd direct na het invullen van een e-mailadres, en die het adres in zijn geheel in kleine letters om zet. Ook verder in de software (dus niet alleen na het invullen van een bepaald veld) zijn er door Microsoft enorm veel plaatsen toegevoegd waarop extra software zich kan ’abonneren’, en het aantal plaatsen waar dit mogelijk is wordt met elke nieuwe versie nog steeds uitgebreid. Als er nu een update van de software wordt uitgebracht is het niet noodzakelijk om de wijzigingen op een standaard object te migreren, omdat er geen standaard object gewijzigd is!
Extensions
In het voorgaande voorbeeld werd er nog steeds vanuit gegaan dat er een nieuw object in de software werd gemaakt, die zich abonneerde op een bepaalde gepubliceerde gebeurtenis. Het is inmiddels echter ook mogelijk om wijzigingen buiten de standaard software te maken en deze daarna te importeren als een zogenaamde extensie. Hierbij worden de wijzigingen niet in de standaard software zelf aangebracht, maar als het ware naast de bestaande software gezet. Extensies voegen functionaliteit toe aan Dynamics NAV, zonder deze te wijzigen! Feitelijk wordt de software geïmplementeerd op de middle-tier (service) in plaats van in de ontwikkelomgeving. De wijzigingen zijn dus zelfs ook niet zichtbaar in de ontwikkelomgeving. Als eindgebruiker is het mogelijk om met een extensie gebouwde functionaliteit eenvoudig toe te voegen of te verwijderen, waardoor het upgraden of implementeren van nieuwe functionaliteit veel eenvoudiger wordt dan dat vroeger het geval was.
Apps
Het is dus mogelijk om wijzigingen aan de software aan te brengen zonder daarbij de basis-applicatie te wijzigen. Met extensies wordt er echter nog steeds functionaliteit toegevoegd op basis van de standaard aanwezige functionaliteit. In veel gevallen is zelfs dat wellicht niet wenselijk, bijvoorbeeld omdat een andere ontwikkelomgeving mogelijkheden biedt die de eigen ontwikkelomgeving van Dynamics NAV niet biedt. In dat geval is het ook mogelijk om een app te bouwen, die alleen waar nodig met Dynamics NAV ’praat’. Er zijn allerlei voorbeelden te verzinnen van functionaliteit die je zou willen of kunnen gebruiken, maar waarvan bijvoorbeeld de interface van Dynamics NAV niet de meest voor de hand liggende is. In dat geval kan er (bij voorkeur in de vorm van een extensie) een (of meer) deur(en) opengezet worden in de applicatie die gegevens uit de standaard applicatie ’publiceren’ (in de vorm van een webservice) en die ook in staat zijn om gegevens vanuit de app in Dynamics NAV te verwerken.
Modern Development Environment
Of wijzigingen nu in de broncode worden aangebracht, of in de vorm van een extensie beschikbaar worden gemaakt, vanaf mei 2019 worden de wijzigingen niet meer met behulp van de oude (C/AL) ontwikkelomgeving gemaakt, maar met de ontwikkelomgeving Visual Studio Code.