Addressing Performance Problem in Dynamics NAV and Dynamics 365 Business Central

Overview

If you’ve recently upgraded to Dynamics NAV 2017 or later versions, you will have undoubtedly noticed that the new version of Dynamics NAV (or Dynamics 365 Business Central) is incredibly slow… It’s so slow that it took one of our customers that’s using NAV 2017 3 minutes and 38 seconds to open a customer card.

Yes, the customer really measured this. And yes, before they upgraded, opening the customer card is instant.

Note that this blog will include Dynamics 365 Business Central as I didn’t see them improving the standard codebase in the release.

EDIT: Microsoft has released a fix in their monthly Cumulative updates to address the performance problem. Ask your NAV partner to implement these hotfixes for you if you’re still encountering issues with poor performance.

Eye Candy

The problem is all the eye candy that Microsoft tries to implement into Dynamics 365 Business Central that caters to the small/micro businesses, or at least make the demo of the product irresistible.

For some odd and strange reason, Microsoft strongly believes the same customers that currently using Dynamics NAV are the same ones that are going to be using Dynamics 365 Business Central.

I’m not sure how we can tell Microsoft that this is not the case. They firmly believe they know the customer better than the channel.

An Example

Let’s take a look customer card in our example and let’s see why it’s so slow. Note that this is one of many screens in the software that has performance problems. I’m just highlighting this page for the purpose of this article.

In order for Microsoft to make Dynamics 365 Business Central look appealing in demo environments and to encourage companies to sign up on first sight, they really have to include all the bells and whistles. And I do mean all the bells and whistles including, but not limited to:

  • Charts and Graphs to display data visually. Why? Because it’s pretty.
  • Factboxes that quickly brings information to you
  • Quick statistics to give you an overview of the data without having to have that extra click
  • Dynamic control on pages – Hiding fields and really dumbing down the user interface
  • Dynamics CRM and Office connection and integration

Let’s take a look a the customer page in the demo environment in Dynamics 365 Business Central:

Looks great right? You have a really quick statistics of how the customer info. And when you navigate around in the demo environment, it’s fast.

Single Codebase

This is the screen if you use the Dynamics NAV (Dynamics 365 Business Central) on any rendition other than from the signup in the Office 365 Admin Console.

If you looked closely, you’ll notice that the Statistics FastTab is missing.

Apparently, in order to keep Dynamics NAV and Dynamics 365 Business Central on the same codebase, Microsoft just hid whatever is not applicable.

Why It’s Slow

There’s a problem with that… When you just hide the control, it doesn’t really prevent the code from running.

If you look at the customer card in the Development Environment, you will see the Statistics FastTab has the Visibility function set to FoundationOnly.

The toggle for setting this is nowhere to be found if you’re not using Dynamics 365 Business Central accessed from Office 365 Admin console.

The problem is the code is written in the worst way possible with no regards for optimization.

It’s doing calculation on massive amounts of data with every time you click on something on the customer card. Good for small datasets (<1000 records), problem if you actually use the software to manage your business.

This means any time a user does something on the page, it’ll run this calculation, over and over and over and over again. Think about your customers that has a 50 GB database, worst, you’ll notice a slowdown with customers running a 1GB database.

The Fix

One would think the simple fix is to just remove the controls from the page. Wrong… The cause of the slowdown is not on the display itself (although the Dynamic Control does slows down performance), it’s the code that’s running in the background.

The code you need to take out is in the triggers of the page.

And here

Removing code on the OnAfterGetRecord and OnAfterGetCurrRecord triggers dramatically improves the performance of the customer card.

Note there are a lot of other things we have to remove from the customer card to make the performance acceptable for the end user. But I will stop here for now.

The Extension Problem

So how do you do this when we’re going into the Extension world? Extensions will NOT allow you to remove base code, so you’re stuck with whatever crap Microsoft stuffs in there. Tested or not.

Looking at the amount of code in the customer page, I’m actually shocked on how all of this got past Quality Control at Microsoft.

Whoever thought it was a good idea to do a lot of rendering and processing at the page level?

You’re asking for performance problems when you’re rendering a large amount of data. This was one of the first thing they taught us at the Navision development class back in 1999; don’t put code on forms/pages.

Conclusion

This article is just focusing on a single page, the customer card. If you look at Sales Order page, another one of the pages that a lot of companies access frequently, it has the same types of problems: too much code on the pages.

Again, a lot of what they stuff in there is nice for demo environment with small datasets. You’ll notice performance problems real quick as your data set increases.

Perhaps this is an opportunity for developers like us to publish an Extension on AppSource. Basically redo NAV pages so people can actually use it.

Changing Costing Method in Dynamics NAV (Dynamics 365 Business Central)

Overview

Every once in a while, a company will want to change their costing method from whatever they have into something else for whatever reasons.

The official way of changing the costing method for any items in Dynamics 365 (Dynamics NAV) is to basically zero out the item and create a new set of item numbers with the new costing method.

However, doing this may not be feasible because you end up losing all item history, in addition, depending on how much history you have, renaming item numbers will take a long, long time.

The Unofficial Way

There’s an unofficial way that Microsoft does not promote for companies to change the costing method. This is understandable because if the user does not follow the instructions, there’s no way Microsoft can support all of the different scenarios that comes up.

The Preparation

Before the company can make such a change to the costing method, the following tasks has to be done:

  • All Receipts needs to be invoiced
  • All Shipments needs to be invoice
  • All Production consumptions needs to be output
  • All Transfer Shipments must be received
  • All Service shipped/consumed must be invoiced
  • Remove all reservation entries in the system
  • All Drop Shipment orders needs to be removed
  • Run Adjust Cost – Item Entries process

The biggest problem that companies run into is documents that are “stuck in the middle”, basically, shipped/received not invoiced. By not having a clean break, if you were to proceed with the costing method change, you will never be able to tie out your inventory valuation to the General Ledger.

The Method

Here’s what you will need to do in Dynamics 365 (Dynamics NAV) in order to convert to a different costing method:

  1. Run Adjust Cost – Item Entries
  2. Negative adjust all items to 0 as of a specific date (for example, 03/31/2018)
  3. Run Adjust Cost – Item Entries
  4. Force change the costing method using code without running validation (use RapidStart or get a developer should do this)
  5. Positive adjust all items back in on the day after step #2 (for example, 04/01/2018)
  6. Run Adjust Cost – Item entries

Then done, you’re done.

The Aftermath

After the costing method change is done, back dating of inventory transactions cannot be allowed.

This includes any item charges that may apply to receipts posting in the previous periods!

For example, if we change the items from FIFO to standard on 03/31/2018, no additional postings for these items on or prior to 03/31/2018 should be made. This will need to controlled through the Allow Posting From on the General Ledger Setup and the User Setup.

In addition, revaluation of inventory should not be done prior to 03/31/2018 as well for the items. Doing so may cause irreparable damage on the inventory value and will cause your inventory ledger to not match your G/L.

Conclusion

The method described above is not recommended by Microsoft. I think this is because there are many ways things can go wrong if not done properly.

Having said that, we’ve done this for many of our customers without problems. Strict controls on when the posting is allowed must be followed. If done properly, changing costing method is really not that big of a deal.

Roadmap for Dynamics 365 Business Central (Formerly Dynamics NAV)

Here’s the screenshot released by Marko during Directions Asia

regarding the future of Dynamics 365 Business Central (formerly Dynamics NAV)

It looks like the name Dynamics NAV 2018 will be the last release where the product is called Dynamics NAV…

For what it’s worth, I still prefer the name Navision.

Job Queue Being Deleted in Dynamics NAV 2017

Overview

As more of our clients are going live with NAV2017, we’re finding some inconsistencies on the features that were working as we thought it should, verses the way it’s working now.

One of such feature is the Job Queue function. Note that this only applies to NAV 2017, they’ve since rewrote how this process works in NAV 2018.

The purpose of a job queue is to run processes automatically at a preset time. For the process to run continuously, you would need to set the job to run as Recurring.

If you do not set the job queue entry as recurring, it would delete the Job Queue Entry because the process is only a one time deal. This feature was added because the users are now allowed to schedule their reports using job queue. Some reports/processes only needed to be ran once for the user.

The Problem

After the clients went live, we started noticing the jobs that were set to recurring was being deleted as well. This confused the hell out of us because there were nothing on MSDN that talks about Job Queue Entries that are deleted when it’s set to Recurring.

Digging into this, the problem is on Codeunit 453 – Job Queue – Enqueue. More specifically, a function called RemoveFailedJobs.

Looking at this, the system will remove any Job Queue Entry records that it runs into an error. So this means that at any given point if your mission critical job fails, it’ll simply remove it from running ever again…

Yes, I could’ve setup notifications to warn you if something failed… I didn’t need to do this extra step before..

This is a steep contrast to how Dynamics NAV Job Queue ran before. In addition, this is not how NAV 2018 behaves now.

Conclusion

You can comment out the code completely or just add the following code:

JobQueueEntry2.SETRANGE(“Recurring Job”,FALSE);

Doing this, the process will leave the jobs that are set to Recurring alone.

I’m not sure if Microsoft has address this in the later CU releases for Dynamics NAV 2017, but if not, I would highly recommend you modify the code so your mission critical processes does not simply disappear!

How to Unlock More Features on Dynamics 365 Business Edition

Overview

When you first sign up for Microsoft Dynamics 365 For Business, you will get a very simple application that will most likely satisfy only the most basic accounting needs.

Using only the basic accounting functions is NOT the reason why you signed up for Dynamics 365 for Business. You signed up for D365 because you want an ERP software for the cost of an accounting software!

Unlock the POWER!

To unlock the full feature of Dynamics 365 for Business, you will need to do the following:

  1. Go to Company Information (you can use the search function)
  2. Expand the User Experience Fasttab
  3. Change the Experience to Advanced

Now when you open the sales order, you’ll be able to have the ability to print simple pick tickets to enabling full manufacturing and warehousing features of Dynamics NAV!

Change User Experience

Before and After

You can see the difference in the sales order heading when you leave the Experience as Basic verses Advanced.

Sales Order Page on Basic Setting on D365

Here’s with the Advanced Setting

Sales Order Page with Advanced Setting in D365

Conclusion

There are a lot more features that are unlocked when you change the Experience. For most businesses that signed up for D365 in the first place, I can’t imaging them sticking with the Basic user experience.

Nonetheless, contact your solution provider to find out more features between the difference experiences.

Enjoy the ride!

Doing a Physical Inventory Count with Warehousing in Dynamics NAV or Dynamics 365

Overview

Here’s a quick video about doing a physical inventory count in Dynamics NAV (or Dynamics 365) when you have the Directed Pick and Put-away feature turned on.

There are basically 5 steps:

  1. Go to the Whse. Phys. Invt. Journal
  2. Run the Calculate Inventory process
  3. Fill in the Qty. Physical field
  4. Register the journal
  5. Go to the Item Journal and run the Calculate Whse. Adjustment process to true up the Bin Content and the Item Ledger

Note that this video assumes you do not have ADCS (wireless barcode scanner) setup to do physical count.

Enjoy!

Video

Relax… Microsoft is not killing Dynamics NAV

Overview

So this morning, I get an e-mail with the following:

On initial look, the e-mail is implying Microsoft has decided to kill Dynamics NAV (which was rebranded into Dynamics 365 Finance and Operation, Business Edition).

Look how it’s worded specifically about “Microsoft decision to kill Dynamics 365 Business Edition model”. Which implies Microsoft is killing NAV altogether. Then there’s a link that follows to a site where you need to register for a webinar for a company selling their cloud service.

The Misinformation

Having a sudden heart attack, I immediately reached out to Marko Perisic to confirm the rumors. This was a direct opposite for what Microsoft, as a whole, is telling and spending hundreds of millions on. Seems really weird that they would just turn 180 degrees on their investment without any cataclysmic reasons to do so.

Needless to say, the statement from the marketing (and borderline phishing) e-mail is a flat out lie and is aimed to misdirect consumers. Unfortunately, fear is one of the marketing techniques companies use to sell you their products…

I later found out this is a play on what James Phillips (the new head of Microsoft Dynamics) mentioned about killing off the NAME business/enterprise to make it more streamlined. Goes to show you what every little things said by these people gets misinterpreted. It’s no wonder why these people in power are always so vague…

The Truth

The truth of the matter is, Microsoft wants to simplify their NAMING of the products. They’re getting rid of the “Business” and “Enterprise” terminology in favor of something more… catchy. Or at least easier to read.

Let’s face it, Dynamics 365 for Finance and Operations, Business Edition or Dynamics 365 for Finance and Operations, Enterprise Edition doesn’t really catch anyone’s attention, rather, it confuses people more. What exactly is Business or Enterprise? What’s the difference? You can see how it adds complexity to a consumer’s decision making.

So I fully understand why Microsoft would want to rebrand or rename their products. But this is strictly a marketing thing, it doesn’t affect the products at all.

Disappointment

Alas… This is my gripe about the “dark side” of our industry. People will say anything, including instill false fear and publishing near-fake information as facts. All this just to make their sales quota…

Conclusion

Don’t worry, your Dynamcis NAV investment is safe. From our conversations, it looks like Dynamics AX and Dynamics NAV, interms of ERP, will be around for a long, long time.

Recap of Directions 2017 – To Be Determined

Overview

This year, the Dynamics NAV Directions conference is held in a nice resort in Orlando. I always feel guilty about attending these conference nice resort hotel without my kids…

Overall the conference was a bit confusing for me as Microsoft had decided on the last minute to delay the release of the new version of Dynamics NAV “Tenerife”. This created a lot of confusion amongst partners and the people giving sessions on exactly what they’re trying to present.

The general sense of the sessions I’ve attended is that everything is still to be determined. Which made it a really frustrating event in that whatever I learn today, may be wrong tomorrow.

What’s New

The breakout sessions didn’t help to clear things up, but here’s what we know:

  • Dynamics NAV will be renamed to Dynamics 365 for Finance and Operations, Business Edition. Yes, it rolls right off the tongue.
  • This release will be the full cloud platform that will include every functionality in the standard Dynamics NAV.
  • For any modifications that you need, “Tenerife” will allow you to make custom changes to extensions for your customer into their extensions
  • The next release will be deployable on both on premise and full cloud.
  • Future developments for Extensions will be in VS code
  • To take full advantage of the features of Dynamics 365 for Finance and Operations, Business Edition, you will need Office 365 – Business Premium Edition

Closing

The highlight of this conference was the closing session given by Marko Perisic. It was a heartfelt and unscripted speech regarding the future of NAV, the reseller/ISV channel, and the blood, sweat, tears, and joys of Microsoft employees that worked on the Tenerife project.

Marko firmly believes the future is bright for the Dynamics 365 for Finance and Operations, Business Edition. He is extremely proud of the product and what it can do for the customers.

From what they’ve showcased so far, although a ton of work still needs to be done, I’m extremely excited for this release as well. In addition to pricing competitiveness, it will be hard to see why customers would want to purchase NetSuite or Acumatica when Microsoft releases “Tenerife”.

Advice You Need to Heed

If you haven’t already, get used to developing your custom code and addons for the Microsoft AppSource. There will be challenges on how you approach developing extensions and the pitfalls you will run into.

You will not be able to remove code from the core product and you will not be able to dictate the order in which your extension and other extensions should run. Those are all under the To Be Determined.

Going Live with Dynamics NAV (Dynamics 365) is the Easy Part

Overview

After doing ERP implementations with Dynamics NAV (aka Dynamics 365) for almost 2 decades (18 years to be exact…), you kind of know how to get things done.

Usually, when you prepare for a go-live during a software conversion, there are certain tasks and steps that absolutely have to be accomplished in a certain manner. There are certain things that you will also postpone until after you go live with the new system. Balancing what are absolulte musts and what can wait are what every legitimate project manager should do.

Another pitfall is spending countless hours talking about the exceptions and the wrong business process that ensues. Again, a legitimate NAV project leader should not take you down that path. From my experience one of the guarantee failures of taking a customer live is trying to “do too much”. Focusing on things that does not really matter to the business. As a legitimate Dynamics NAV (Dynamics 365) project manager, you should be well aware of what to be done and what shouldn’t be done when going live. On this subject, this is probably a separate article.

The Go-Live

A week prior to, you begin to feel the nervousness about switching to a new system. Despite my assurance on how everything will be fine because we followed the plan, they will still feel very anxious. The anxiety in the air is so thick you can scoop it with a spoon.

When the live date approaches, we do our thing to do the final cut over to their legacy system to Dynamics NAV. Run through our check-list and have the customers go through their check-list.

The next day when people come in for work, you can tell they were ready. They were ready for this because that’s what they’ve prepared for.

About a few days after the customer is live with the new system, the most frequent response I get is:

“That’s it?”

The Real Challenge

“Yes, that’s it. You’re live with Dynamics NAV.” That’s the response I typically give in response with a smile. As I mentioned, going live with Dynamics NAV is the easy part.

This is the point where my anxiety begins to increase, little by little.

Why?

If the customer just transacts with their normal business process and their customers and vendors behaves the same way, then everything would be okay. But it never happens that way.

There are always new problems and challenges as time progresses. Businesses do not stand still.

A couple of of these issues after go live that will begin to raises my blood pressure are, but not limited to the following:

– Exception problems or problems that are just weird and unusual
– Things that were allowed from their old system that are no longer allowed in the new system (i.e. just deleting a posted transaction)
– People circumventing the agreed upon process
– Wanting to turn on new features
– The “I didn’t mention because it’s not that important” processes. Well… It’s important now.

The toughest portion for the end user is after they go live for about 2-3 weeks. This is when all of the weird processes and exceptions start occurring and they have to deal with problems using the new environment and new thinking. Problems where they could just change a few numbers or transactions in the old system quickly, but they can’t do that anymore.

This is the part where the problems gets interest, and quite frankly, more fun. This is also the part where most solution center do not focus on because it’s not as lucrative.

Good Business Practice is a Lifestyle

What you resolved with your NAV partner during a new implementation is what you’re currently doing and where you want to go. These are known problems that has been brought up and addressed during the design of the software.

What challenges you going to face in the future are what we haven’t spoken about. It’s tough to plan and have a solution for something that you don’t even know about.

Dynamics NAV is a very good system. It’s also a very strict system. When you have an accurate system, sometimes problems come up where it was not apparent before or been swept under the rug. The reason is because it’s not important enough to deal with on a daily basis. i.e. inventory inaccuracies on the bins or returns processing.

With an accurate system, all of these normal process that no one wants to deal with will become apparent and will require a correct process and procedure for. Sometimes, when addressing these annoyance, owners will be surprised that they need additional resources to manage those processes.

Most of the time, when left unaddressed, those problem will blow up like a huge volcano. Implementing Dynamics NAV prevents these volcano type problems because it needs to be tracked.

Conclusion

Compound to real problems arising after 2-3 weeks is that implementation consultants will have already left by then, patting themselves on the back on a job well done.

As much as I advise on budgeting enough time and money for post implementation support, they always go unheard. Most of the quote that they receive for new software implementation are only enough to take them live, not to address these more interesting problems after they’re live.

Going live with Dynamics NAV (aka Dynamics 365) is the easy part. What comes after will be the core of the challenge during the implementation lifecycle.

Types of Training in Dynamics NAV

Overview

Often, we get calls from companies that asks us to help with their Dynamics NAV implementation. The conversation would usually start off about a little history of their implementation, the problems they’re running into, and what they’re looking to resolve.

Inevitably, the request will lead to training the users on how to better use Dynamics NAV.

This is a tough question to respond to.

With every release of Dynamics NAV, the software has become more intuitive and easy to use. In addition, Microsoft has released the full manual on their MSDN site. In addition, there are great step by step examples on how to process, for example, a sales order. So whenever I hear this request, my sense immediately goes into overdrive.

Of course, the customer will want an estimate on how long that will take.

Tough Question

What makes the subject of training a tough question is that the training, in itself, is not what the customer is looking for. What the customer is really looking for is, by the end of our task (whatever that may be), their users will have thorough understanding of their job responsibilities within the company and how Dynamics NAV can better their ability within their job roles.

They’re looking for their users to have an A-ha basically saying “Wow! I fully understand my job and can do my job 300% faster now!”.

The Response

Being a terrible salesperson, instead of giving them some numbers and try to close the deal, will naturally ask a ton of questions on their request. I will even question their question because I just find this request (although challenging) very fascinating.

Most of the time, the people that are reaching out are not the managers or the people that are responsible for the task. They’re just “forced” into it by their boss or owners. Instead of a number so they can create a list to find the cheapest one, they get more questions.

On a side note, the calls we get where the person has to hang up and ask their boss or other people for more information ususally never calls us back. Subsequent follow up calls are ususally unreturned as well.

Not All Training Are the Same

There are many aspects when we talk about training. To keep things simple, we’ll just talk about 2 types of training. One is just learning how to use Dynamics NAV, the other is learning how to use Dynamics NAV in conjunction with your job roles within your organization.

In my opinion, training just how to use NAV is not worth to company to spend their money on. The reason is, as mentioned above, there are plenty of resources (such as MSDN site mentioned above) that are free for the user to learn how to navigate around Dynamics NAV.

The training that I would always recommend is the implementation type of training is where the training covers the details of their job on how Dynamics NAV can help them do their specific job. The training would be how to better do their job with Dynamics NAV, instead of just using NAV.

The Challenge

The challenge is how to explain this to the customer who is tasked by their supervisor to “get more training”.

They would need to understanding their internal business process for each department and how NAV will fit into each part of the business process. They will need to fill the consultants in on how things work for the consultants to devise a training plan.

If the customer does not do , they will need to spend the money to have someone else to do so. Very much like an implementation.

Conclusion

Of course if the users do not have time to learn the product or they prefer to learn in a classroom environment, consultants like us would step in and help out. Even then, the training shouldn’t be just how to use NAV. Rather, it should incorporate what their job functions are within NAV.

Sometimes the training should just consist of a big Q&A session where the users can bring up what they’re doing and how to better utilize their job function in the system.

Understanding what type of training you require will save you a ton of time and unnecessary costs from consultants like ourselves. It does require some work on the end user to determine what kind of training is needed.

Better to put the work up front than having to pay, a lot, later.