I started working with Navision in 1990 and since then I've done almost everything in this industry.
In 1995 I started the Dynamics User Group, formerly Navision Online User Group and Microsoft Business Solutions User Group. Here on my blog I write mostly about the Dynamics Community, my experiences with Microsoft and especially the Dynamics NAV and Navision projects I'm working on, but also how it is to work as a self-employed Navision freelancer, Navision contractor or whatever you call it.
One of the goals of Microsoft is to turn all their many localized versions into Extensions. They are taking their own medicine so to say.
Just as many customers find that upgrades are a pain when they have a lot of customization's, so does Microsoft. Every time there is a new release, they also have to go through the same pains when upgrading their 17 localization's from W1. Something they do for all their cumulative updates for NAV 2015, 2016, 2017 and now NAV 2018, every month. Even with a lot of automation, both of the merging process and testing, then this is a time-consuming task. Even for Microsoft.
Coming from Denmark, I will be one of the first to meet this in live action. As the first county, most of the Danish localization's have been turned into extensions.
The only change not already an extension is our national OIOUBL e-Invoicing, which is required by anyone invoicing our government on any level. It counts most of the total changes in the DK version. But all our other smaller specialties are turned into extensions.
We have three Danish localization Extensions. A Payment and Reconciliation Formats (FIK), Tax File Formats and a Payroll Data Import Definitions extension. The first support our national FIK banking payment standards.
The interesting here is not really the functionality, but how did they do it? How did they turn their customization into an extension? We can know, because they have also shipped the source code for these extensions. A partner or customer could make their own extended versions of this functionality. Possible with some work arounds, as they still use functions not available for the rest of us.
If you like me have embraced the new Docker container images, then you will have to go to aka.ms/navgetready to download the DVD from there. In the DVD of the Danish file we have FIK, ImportDKPayroll, VATReportsDK, each with the compiled *.APP file ready to publish (already published in a demo database) and a source folder containing “the source code”.
FIK is more interesting. It has a little of each, fields, pages import/export formats. So let’s look at that one first.
I created a new project in VSCode, copied the content from the source folder in my new AL project folder. Then I copied in the launch.json for my server. I have tried some of the other “example” extensions on the DVD before, so I didn’t get disappointed too much when I found out that this is still the case. It does not compile. A lot of “The type of Method ‘x’ cannot be used for ‘Extension’ development” errors. So, for now it will just serve as an example.
The extension as one table 13624 FIKExtension, with a two fields. Code and IsUpgraded. No pages for this table, as it is only used by the setup codeunit. Same codeunit I was really interested in. How did they move the data from the old database fields into the extension?
I had expected a subtype install codeunit with the a OnInstallAppPerDatabase or OnInstallAppPerCompany. But neither are found.
I had also expected that they had been using the “Obsolete Fields” functions, which allows you too remove custom fields over several releases, by first marking them Obsolete and the reason, for then moving them later.
That’s not how its done here. What they did do was to remove the custom fields in the Upgrade toolkit fob. Here for example the fields are moved from the Vendor table to an UPG Vendor table.
The app in it’s codeunit 13655 “FIK Demodata”, has an event subscriber for Codeunit 1 OnInstallAppPerCompany. This subscriber call the DataMigration codeunit, where the function move country fields in the 13650 range of the upgrade tables, to the same 13650 range in the apps extension table.
local procedure MigrateVendorFields();
Obj: Record AllObj;
Vendor: Record Vendor;
if Obj.Get(obj."Object Type"::Table,104038) then begin
if UPGVendor.FindSet then repeat
if Vendor.Get(UPGVendor.field(1)) then begin
until UPGVendor.Next = 0;
A rather simple process. One could easily do it the same way with any other custom change, where you’ve added new fields to an existing table. The example above is changed a little, as it did use the Object table. But that’s not available for Extension development. Instead here we can just as well use the AllObj table. It is worse with some of the other codeunits, who uses a lot of functions not available for Extensions!
The FIK extension handles special Danish FIK payment reference codes. It’s a payment standard with roots in the Giro payment code. A short for common payment card, which was a standardized OCR readable payment slip, which was commonly “pre-printed” on invoices. Today the cards as such are mostly gone, only remaining requirement is the payment reference. It could for example be +71 <000007545022202 +12120108< - a combination of payment type, a reference with checksum and the vendor’s Giro number.
There are no reports in the extension, so the next question was how NAV prints the reference on the invoices? Using events of course. In the sales invoice header table, we have two event publishers: OnGetPaymentReference and OnGetPaymentReferenceLbl.
A major part of the extension are the Danish bank import and export formats. These were introduced together with the Data Exchange framework and NAV 2013 R2, as a feature focused on their Dynamics C5 customers. Here C5 2014 was Microsoft’s first (second if you count Navision Entrepreneur) attempt to create functionally downgraded and simplified version of Navision. And no integrated online banking would be a major point of failure for most customer in the look for a low end SMB product.
In the Extension, these XML format definition files are inserted from text labels.
These labels are inserted into TempBlob and imported as XML. An ok solution for a once off, but personally I wouldn’t like to debug format errors in the code.
This Extension does not contain any fields or tables. It does contain a number of page extensions which strangely removes the visibility some of the fields required for EU Intrastat reporting. I do know that the same fields have always been hidden in the DK version, just never knew why.
It setup a number of EC Sales List/Intrastat VAT report configurations.
Again, this Extension can also only server as an example, it cannot be build into your own app. It’s main functionality is to export the special versions of the EC Sales/Intrastat reports. Old fashioned fixed length flat files. Which of course are exported to FILES. Something we are prevented from doing from VSCode today. But my guess that Microsoft’s internal license does not come with the same limitations as my normal NAV developer license.
The last extension is again much simpler. No fields, no tables, two pages, a codeunit and an XMLport. Plus a test codeunit. Data exchange formats are not defined using locked labels, but by directly “hard-writing” the definitions into the stream, line by line. I’m very happy to see that problems with our Danish special characters ÆØÅ, no longer have any issues. Our Ø (oe) used to give codepage issues.
The Danish version of NAV, despite these three Extension, is still loaded with localization's. Still 187 localized objects, compared to 245 in NAV 2017.
Microsoft also have to turn the OIOUBL e-Invoicing functionality into an extension. Personally, my hope was that they would build something around the PEPPOL functionality. Both are OIOUBL based, but with the big difference that PEPPOL allows for both exporting AND importing documents. The Danish OIOUBL functionality only allows you to export documents. And with it’s currently over 180 changed objects, then it’s current functionality is very “invasive”. Even if it’s changed into an Extension, then it would still have fields and functionality all over the place.
I hope that reason this is not released as an extension by now, is that Microsoft are refactoring this functionality before releasing it.
Personally, I'm thrilled about these new extensions. Not so much because they are special or fantastic. But because they allow me easily to remove them again, or simply not install them.
Most of my Danish NAV clients would never use NAV's own banking functionality. Instead they use the add-on which more or less have been the Danish NAV standard since the DOS version, where it was called NaviBanking, now Payment Management from Continia. Only reason I have had not to recommend PM to anyone was that it was very invasive (touched a lot of standard objects). But soon (I have heard) they will also have PM as an extension. So really no need to have the FIK extension, PM does the job much better and more automated.
Same with the still to be released OIOUBL Extension. While this is truly a most have for companies doing business with the government, then a lot of companies do not. And it have plastered pages like sales orders and invoices etc. with fields.
But hhe future direction is clear. Some years down the road, then we will only have the World-Wide version. Localization's are "just" Extensions, either coming from Microsoft or ISV's.
From someone who have worked a lot with international NAV projects this is sweet music in my ears. Where dealing with global core databases, localization's and translation's used to be something which both required long country by country analysis and development, then going forward that's not really going to be that important. We would be able to have one global database based on W1. And with country based tenants we would be able to load the local extensions we needed.
Right now this is only the DK version, but by the time we get into the spring of 2018 and the next release, then a lot more country localization's will have been turned into Extension.
When looking at the three Danish extensions, then it’s obvious that Microsoft so far have not adopted any internal standards for neither object or file naming, nor have spent much time on the code.
It really looks like it has been three different companies or teams who have created each of them.
Most actual code is just copied from the previous country into the new app. No refactoring or code clean up. Not even spelling errors have been fixed. These becomes very visual in VSCode, if you have a code spell checker extension installed.
Back in 1987, 30 years ago, the programming language Pascal was the first programming language I learned in college. I had just started programming my own accounting system using Pascal, when I first saw PC-Plus, the mother of NAV. It was love on first sight. I instantly knew I didn't have to program it myself, it was already there.
Two years later, when collage was over and I had my first Navision job, there was no more programming Pascal for me. I felt I had enough of programming in college. Meeting Cobol in second year was a mixed experience. So my first NAV job was as a project manager/consultant/trainer (I had worked with accounting before college). IBM Navigator 3.0 had just been released a few month before and included an integrated AL language which was based on Pascal, so I couldn't keep my hands away for long. But except for web design html/css etc. for DUG's website and a few simple C# control add-ins, then I stayed within C/SIDE's and C/AL's safe walls.Until now It's like being back in the first years of college. Back then it was the new Turbo Pascal compiler, created by Danish Anders Hejlsberg, brother of Thomas, NAV software architect since 2003).
The last 2 months I had the time to really get started with Visual Studio Code and the new AL Extensions. I am almost as enthusiastic as I was back then. It's like I have gotten back the same joy in programming, that I had with programming Pascal in college. AL has finally become a real programming language.I see the beginning of a great future for our old Navision.
Have you ever considered using “off-shore resources” for your projects? If you work in “the west” or should we just say in countries with an hourly NAV developer rate of USD +100, then most likely you have. Especially if you work on large projects.
But have you ever been in a project using these so-called off-shore resources? And how did it go?
My friend Peik has done this many time and have written a blog post about how to outsource your development tasks, especially to off-shore resources. Peik gives some tips on how to make your outsourced projects a success. They primary focus on:
I completely agree with all of his comment’s and tips. If you decide to outsource your projects, then that’s a list you need to save and remember.
Now that we know a little about how to do it, then the big questions is, if you should outsource your projects?
If you read Peik’s post, then you also understand that there are a lot of things you need to focus on and give a lot more attention, compared to only using inhouse/sourced resources. You need a very experienced project manager/architect and often much more time on design, documentation and QA. Don’t expect that it comes easy. Face-to-face meetings between the inhouse and offshore teams are very valuable, not just via Skype with video.
My personal experience has primary been gained by working as the ERP solution architect on large international NAV projects. So that’s in a customer environment. Peik’s recommendations are based on his experience in the partner channel. But they are just as valid when used by a customer managed inhouse NAV project.
In the offshore projects I have worked in, we estimated about 15 minutes per outsourced hour for extra project management, communication and quality control. And that’s where you have “your own” team of more or less fully booked developers.
If it’s a one-time project of less than 200-300 development hours, then I would say forget it. And still it could easily take you at least 2-3 project of that size, before you would start seeing the results your expected.
If you are a customer, and your use a Dynamics partner who are using outsourced developers, then make sure to check out references first. If your project is the first they are outsourcing, then I would be scared.
The most successful tasks I have outsourced are within development. And here as already said, primary larger, pre-designed coding tasks. But the more you know your offshore team the smaller task you can assign them. If you have a large user base and a lot of user support, then that could also be an area, just watch time differences.
You have to make sure that your team stay's the same as much as possible. Each time a new developer is assigned to your team, then expect the same delay in productivity, as if you hired a new in-house developer. Here you need to follow the same advises as if you are managing your own employees. If they get bored working on your project, they are more likely to go work for a different company. And much easier if they just have to switch tables.
In the same way, don’t be afraid to tell the company hired them through, if some the developers you were assigned does not live up to your expectations after “a few tries”. Just as you would do if they were your own employees.
As Peik also points out, documentation is very important. It always is, but here even more so here, as it is often the primary source of knowledge transfer. You need to extra carefully document everything. It’s not enough to write a simple requirement specification in a few lines, like just forwarding an error message from a user. If you want things to be done in a special way, then you need to say how. If you have a Skype video meeting, always remember the minutes with any decisions or any follow-up points.
If you are in a company with large enough projects to consider outsourcing, then you probably already have always spend quite a lot of time documenting the processes and standards to be used. At least that’s been my experience as an ERP solution architect. But make sure that your outsourced team are aware of these standards. They should be as easy to use and as close to “Microsoft standards” as possible.
Left is then only to enforce the standards, verify that they are followed. Have a strict code review, before merging any changes with your core system. Give a clear feedback, Skype is often much better than just an email.
If you are not just doing a few projects, but to work with a good full-time team, over a longer period, then yes.
I cannot recommend it unless you give it 100%, as it will take more than one project to get and see the benefits.
To have success with outsourced resources you need to treat them exactly like you would treat any other in-house employees. Which is a lot harder, when they are not in your physical office, but 1000’s of miles away. If you take your time and extra efforts, then you may have great team of relatively low cost Microsoft Dynamics developers.
Just a few days ago I wrote that there would be no new version of Dynamics NAV this year. Instead a new Dynamics 365 "Tenerife" would be released in Spring 2018. Code name "Tenife" would become a "common platform" for both Dynamics NAV and what used to be known as Dynamics 365 for Financials/Finance and Operations, Business Edition. This was announced at the Dynamics partner conference Directions in Orlando on September 18th.
I primary work at end-users, so personally I did not see the big issue. There is nothing worse than buggy releases and I'd rather wait a little longer. But I was not personally in Orlando, so I only had some of the story. It was not so much a question about NAV 2018 being buggy, even if the new AL still is not quite where it needs to be. But that Microsoft seemed to change much more than just the release date of NAV 2018.
Already at the conference this had made a lot of the partners both very upset and confused. Upset because Microsoft not long ago had announced, at a closed partner conference, that there would be a release in Q4, as there had been since the release of NAV 2013. Thus a lot of partners had already lined up customers, ready to go-live as soon as it would be released. And confused because the announcements had been so unclear especially in regards to licensing and pricing.
So at closing session on the conference September 20th., Marko Perisic (General Manager for Dynamics SMB) said that they had heard the feedback. And that we would hear their "reply" soon. Soon, like in not 6 months.
Well it didn't take 6 months to get Microsoft's reply. Friday my fellow MVP Erik Hougaard were the first to spot that there is going be a NAV 2018 released this year.
This was announced by Alysa Taylor in the Microsoft Dynamics 365 Blog. Alysa is General Manager of Global Marketing for the Cloud & Enterprise Business Applications and Industry division at Microsoft (happy I don't have to write that job title too many times ). So she's Marko's boss, as I understand the setup at Microsoft. In the blog post she starts by more or less confirming the announcements made in regards to Dynamics 365. But more importantly "For small businesses who prefer to install their business management solution on-premises, we will continue to offer Dynamics NAV, Dynamics GP, and Dynamics SL. Dynamics NAV 2018 and Dynamics GP 2018 will become generally available later this calendar year".
I'm a little impressed about how fast Microsoft was to come with a statement. Shows that partner and community feedback does matter. Microsoft really does listen. At least for now there is still going go a "traditional" on-premission Dynamics NAV AND a cloud Dynamics 365 for "something" which incorporates a full NAV and a new "ISV-provided/extended" platform. Which basically leaves us just as confused as before Directions.
But I'm also convinced that we have not heard it all yet. It's exciting times!
There will be no new version of Microsoft Dynamics NAV in 2017. That's according to the latest announcement from Microsoft, made at Directions in Orlando yesterday. Instead the next version of Dynamics NAV will be released in "Spring 2018". And it will share the name with what used to be known as Dynamics 365 for Financials.
So far it's common name is Dynamics 365 "Tenerife", but the "x" typically means that it so far only is the project name. Just as they used to call D365 for Financials for "Project Madeira".
You can read much more about the announcements made by Microsoft in waldo 's two blog post about Directions 2017 - Keynote about Dynamics 365 "Tenerife" and Directions 2017 - Keynote 2 about new client and release dates. If you're not at Directions you self, and you work with Microsoft Dynamics, then you should really take the time and read these two posts.
There are also a lot of other interesting updates from Directions. If you have been part of the TAP/ACE program regarding "Tenerife" or if you have checked out the Developer Preview of the new AL/Visual Studio Code development environment, then most of it may not be news to you. But it's the first time we see anything "on paper" - so to say.
When the new version is released, then Dynamics NAV and Dynamics 365 for Financials will be one platform available both for on-premise (installed "locally") and in the cloud. On-premise will remain more or less "as-is", you can continue to host your own fully customized "NAV" locally or in a private cloud. Or you can leave it to Microsoft. You will even have the option of customizing it in the way you're used to. Microsoft still recommends Extensions and that you use the new development and design tools, which creates "customization's" almost in the way you're used to. Microsoft will also handle upgrades, so that you're always running on the newest version. You can even take your current customized NAV and bring it directly to Dynamics 365.
Whereas the previous D365 for Financials only had a subset of the functionality of NAV (no manufacturing, warehousing etc.), then the new version will have all the functionality.
The coming version is still code named "Tenerife", so my guess is that Navision/NAV as a name will history soon. I guess we have all expected this to happen at some point. I just hope that Microsoft is not going to rush into something, that we need to change in a couple of years again. Every name or branding change takes a long time to implement and primarily ends up confusing the customers, who often don't know what they have when they need support.
Personally I'm not at sad about the "delay" (the new version was expected in Q4 as the previous years). I have been part of the "preview programs" and updated my development environment on Azure about every other month. But the "new designer" and the new Visual Studio Code will take some time to get used to. There is a lot of new "stuff" to learn and only so little time. So it gives me (and you) more time to get ready to when it really is going to happen.
Even if you may be able to host your fully customized "NAV" in the cloud, then I believe that most changes going forward are better made as Extensions.
It will make the sessions at the many NAV conferences this fall even more important. You can find a list of the upcoming events here at DUG in our NAV Event Calendar. Or check out the many free webinars at NAV Skills.