Game Changing Concept for Cloud ERP with Dynamics 365 Business Central

Overview

One of my personal complaints about any cloud based ERP software the inability to make customizations that your business needs to maintain a competitive edge.

The assumption of a cloud ERP software is that every business should be able to fully utilize the software as the software developers intended. But as we all know in the real world, this is NEVER the case.

The Cloud ERP Problem

As much as software developers tries to develop functions that covers all basis for the users of their software, there will be nuance for each individual businesses and how they operate. This is exponentiated by the fact that their customers will throw out weird curveballs that the user will have to comply, no matter what.

What do you do in these instances? You have make changes to the system or keep track of the changes manually.

In this day and age where products are expected to be ordered in the morning and shipped in the afternoon, there’s no way in hell you can expect the user to keep track of data manually. Worst, the company may have to buy or develop a whole different software just to supplement what the original ERP can’t handle.

Either way, it’s a recipe for disaster.

So now you have a problem, you have a software that is not robust enough to meet your customer’s demands without major workarounds and you have data and processes you have to comply with.

Yeah… It’s not a very good situation…

What Makes Dynamics 365 Business Central Different

One of the main selling points for the old Dynamics NAV (aka Navision) was the ability the user can customize anything they want. Because of this, some very beautiful industry specific and horizontal solutions have been developed without additional integration software. Why? Because it’s built INTO the software.

The ability to modify anything you want is both good and bad and is subject to debate, but at least it’s available should you need it.

When Microsoft announced they’re moving Dynamics NAV to the full cloud and renaming it to Dynamics 365 Business Central, a lot of people kind of assumed we’d be taking away the core essences of what makes NAV great, it’s flexibility.

Then when the product launched, I see this little surprise in the Extension Management screen. The Extension Management screen basically allows you to add/remove any features you want that’s available:

What?! I almost wet my pants when I saw this!

This allows you and/or your NAV partner to make custom extension modifications to your specific Dynamics 365 Business Central deployment!

Not only can you enjoy the great infrastructure of Microsoft cloud, but you’re also able to make customizations to your specific needs?! Microsoft, specifically the Dynamics NAV product team, really hit this thing out of the park.

Still Work to Do

Being able to upload extensions to modify your deployment still has it’s limits.

You will only be able to “extend” on the base application, but you will not be able to actually modify the base code. For example, you will not be able to change how Reservation system works in base NAV, you can only modify around it.

But still, it’s a GREAT first step!

Conclusion

Welp… I’m excited. Cautious, but excited.  Naaa.. I’m just excited…

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.

Chinese Language Pack for Dynamics NAV and Dynamics 365 Business Central

Overview

Recently, we started a branch in Taiwan. One of the reasons, amongst other reasons, I started this branch is because it’s country where I was born. So in a way, I feel a little obligated to help the companies in my home country to be more efficient and enjoy the benefits in what Dynamics NAV has to offer.

There are many lessons learned in terms of starting a company in a different country; the local culture and views on technology, how to speak and appeal to the local management, etc. I’m sure I’ll blog about in a future article. For now, I want to share with you guys the many challenges when doing translation in Dynamics NAV (Navision).

One of the Technical Challenges

When selling into a local market, one of the things that is mandatory is whether you have the local language pack. As you know, Dynamics NAV is a software that’s utilized all over the world. Microsoft also supports languages for many countries out of the box.

Unfortunately, the Chinese language pack is not one of them. This means we had to create our own.

The Process

The process involves creating caption for all the fields, errors, messages, reports, etc.

There are 3 main parts for creating translations that works in Dynamics NAV.
1. Translate the platform by translating the resource file for each DLL file.
2. Translate all the captions by adding a new language into captionML in each object
3. Localize development environment by translating .stx and .etx files. These 2 files have to be sent to the Microsoft regional office and sealed by Microsoft. (Only required if you want the Development Environment to be in Chinese as well)

Fortunately, Microsoft provides tools that allow you to make your own localization. In our case, we did this for the Chinese language. The step by step instruction on how to do this is explained here. Basically download the PLLP (Partner Localization and Translation Licensing Program) and follow the instructions very carefully:
http://blogs.msdn.com/b/nav/archive/2013/11/15/microsoft-dynamics-nav-2013-r2-pllp-toolkit-released.aspx

You will spend most efforts on translate all the captions. However, this part can be accelerated a little bit by exporting all the captions in txt file. Once you translate all the exported captions with A1033 code (English label) to the corresponding language code (e.g. A1028 represents Chinese Traditional), import the txt file back to NAV. Then it’s done!

Introducing the Chinese Language Pack for Dynamics NAV and Dynamics 365 Business Central

As you will see, we did this for Traditional Chinese, but the nice thing about this is that it can be easily translated to Simplified Chinese.

Here are the results:

Chinese Dynamics NAV Selection
Chinese Dynamics NAV Selection
Chinese Dynamics NAV Role Center
Chinese Dynamics NAV Role Center
Chinese Dynamics NAV Departments
Chinese Dynamics NAV Departments
Chinese Dynamics NAV Customer Card
Chinese Dynamics NAV Customer Card

Here it is for Simplified Chinese: