Free training for Dynamics NAV – Be Self-Reliant!

One of the most underutilized resources for training is from the MSDN site updated by Microsoft. Instead of paying your consultant for training, train yourself! You’d be surprised at how many so-called “NAV partners” out there that do not know how Dynamics NAV works.

For step by step instructions on each department, click here. Please note that at the time of writing, the manuals are released for NAV 2013R2.  I suspect the content will be released for NAV 2015 soon. You can change the content for your specific version by clicking on the Other Versions.

MSDNHelp

If you’re more into watching videos than reading, MSDN also have a full suite of “How Do I” videos. They can be accessed by clicking here. The videos on here are created by Dynamics NAV MVPs and the product team at Microsoft. The contents on here are more technical than the MSDN help for Dynamics NAV.

Conclusion
Yes, it’s easy to just pick up the phone and call your NAV partner for answers. If you do that, you’re basically asking for a fish. My recommendation to you is teach yourself how to fish.

If you teach yourself how to fish, then your conversation (and your budget utilized) with your NAV partner would be how to make Dynamics NAV better for your company. In all honesty, that’s where you will get the most bang for your buck with your NAV partner.

Unexpected Changes the Expected Receipt Date in Dynamics NAV

Overview
This is one issue that I hear from customers using Dynamics NAV (formerly Navision) quite often is why does the Expected Receipt Date keep changing?

The Expected Receipt Date in Dynamics NAV is the main driver for inventory planning. Dynamics NAV uses this field to calculate the availability of the item. Based on this date, Dynamics navNAV calculates when the item can be received into your warehouse.

On the purchase order, the field is on the header and on the lines. Dynamics NAV will only use the field on the purchase lines in the calculation.

What the Help Says
Looking at the help, the explanation is simple enough:

ExpectedReceiptDate1

Basically, what it says is that the Expected Receipt Date on the purchase line should copy the information from the purchase header, if it exist. Otherwise, it will follow a formula:

Planned Receipt Date (Order Date on the purchase line + Lead Time Calculation on the Vendor/Item Catalog, if it’s blank, then the Lead Time Calculation on the vendor card)
+ Safety Lead Time (On the Item card or SKU card)
+ Inbound Whse. Handling Time (On the Inventory Setup or the Location card)
= Expected Receipt Date

However, if you continue to drill into the help, you’ll find another formula for the Expected Receipt Date:

ExpectedReceiptDate2

Order Date (on the Purchase Order)
+ Lead Time Calculation (From the Item Vendor table, if blank it’ll use the field on the SKU, then the item card)
= Expected Receipt Date

If you drill down on the Lead Time Calculation Help, it will say:

ExpectedReceiptDate3

If I follow the formula correctly based on the help:
Order Date + Lead Time Calculation =
= Planned Receipt Date
= Planned Receipt Date + Inbound Warehouse Handling Time + Safety Lead Time
= Expected Receipt Date

Yes… Nice and Simple…

Other Fields that Affect this Date
What the help doesn’t mention is that there are other fields that will affect the Expected Receipt Date. To test this, just create a purchase order and go to the Shipping Fasttab (or tab if you’re using the classic client) in your version of Dynamics NAV.

ExpectedReceiptDate4

The Safety Lead Time, Lead Time Calculation and the Inbound Whse. Handling Time explanation is pretty straight forward. In our test, the CRONUS database has 1 day on the Safety Lead Time.

Here’s what happens when you change the following dates on the Purchase Header:

Requested Receipt Date, it will changed/updated on the Purchase Line:
– Order Date
– Planned Receipt Date
– Requested Receipt Date

Promised Receipt Date, it will changed/updated on the Purchase Line:
– Planned Receipt Date
– Expected Receipt Date
– Promised Receipt Date

Expected Receipt Date, it will changed/updated on the Purchase Line:
– Planned Receipt Date
– Expected Receipt Date

Here’s Where It Gets Awkward
These dates work FIFO. So whatever date you change on the Purchase Order header will take precedent over what was entered before.

Worst, when you update the dates on the header, you’ll get a message asking if you want to change the Purchase Lines, WHERE ALL THE INVENTORY CALCULATION TAKES PLACE!

Conclusion
There are a lot of instances where the user will want to look at the purchase order header and get a feel for what is coming in what by who. Make sure the user know exactly what’s going on.

An option would be to remove these dates from the header and force the user to enter the lines. But if you have long purchase order, this is not really an option.

In the end, becareful about changing those dates when you’re entering purchase orders in Dynamics NAV!

Optimizing your Aged Accounts Receivables Report

Overview
Doing numerous upgrades from an older version of Navision to NAV 2015 and 2013, one common complaint is how slow the reports are running. This is especially true for larger reports like the Aged Accounts Receivables, Aged Accounts Payables , Inventory Valuation, etc.

The old reports that took a long time, such as the Inventory Valuation report, will still take a long time. It doesn’t matter what version you go to. However, there are some reports that used to be quick, but is slow after the upgrade.

One of these reports is the Aged Accounts Receivables report (Report ID: 10040 – Aged Accounts Receivable).

The Breakdown
CAUTION: I’m about to get “programmer”. If you want the faster report, just skip down to the bottom and download the object.

Removing the Data Type of Column from the report, we get the following DataItem that the report loops through:

AgedReceivables

On initial look, the report looks simple enough. There are 3 data items:

  • Customer – The report loops through the customer record to see which customer we need to calculate the aging for
  • Cust. Ledger Entry – For every customer record it finds, it will loop through the all of the customer ledger for that customer. For any customer ledger that has a remaining amount, it’ll put it into a temporary table
  • Integer – This dataitem loops through the same records that are inserted into the temporary table on the Cust. Ledger Entry dataitem and summerizes the information to display in different aging “buckets”.

The Problem
The reason why this report is slow is if you check the DataItemTableView property on the Cust. Ledger Entry dataitem, you’ll see that the report is looping through ALL of the customer ledger for that customer.

NoFilterSet

This report will run fine if you’re A/R aging is small. However, this report will get slower as time progresses with more transactions. Worst, it’ll consume all the memory on the server and force you to restart.

The problem becomes real apparent when you have EDI customers that are running hundreds of invoices per day.

The Solution
The idea of the original A/R aging report is correct. Basically, look at the remaining amount based on the date criteria; if there is a balance, then it goes into the calculation.

The problem is that it’s not running any type of filters to exclude old transactions that has no relevance in our calculation.

To address the performance problem, here are the main things we will need to do:

  1. Look at only transactions that are marked as Open
  2. If the report is to be backdated, look into the only the history that pertains to the date criteria

First thing we do is to set the proper DataItemTableView property with the filter of Open.

FilteronOpenOnly

Then we need to add a new Detailed Cust. Ledger Entry dataitem to look at the application history of our A/R transaction:

The Property:

DCLEProperty

The Code:

AddDetailedCustLedger

Basically, we’re limiting the reads of the database to only open transactions and the subsequent A/R applications from the Aged as of Date set on the report.

Here are the report objects and the text file for your reference:
OptimizedARAging

Conclusion
Not sure what the developer at Microsoft is thinking when programming this report. Aged Accounts Receivable/Payable is one of the most data intensive reports next to the inventory valuation. Reading through every record just does not make sense.

Yes, it’ll work in the short run, but give a few years and the report will slow to a crawl, which is already experienced by customers upgrading.

Process vs. Technical Questions

Overview
If you’re an IT or Finance person working in a company that uses Dynamics NAV. First, congratulations! There’s no other ERP product for the mid-market that has the growth (and growth potential) as Dynamics NAV.

Having said that, often times you will be fielded with questions about NAV and it will be difficult to respond. This is especially true when you’re supposed to be the “expert” of the software within your organization. Of course if you really get in trouble, you have your Dynamics NAV partner to back you up so you’re never really alone.

However, in order for your NAV partner to make you look good in front of your peers, you have to phrase your question in a way to get a “on the point” response. Don’t assume your NAV partner to know what you’re thinking, because trust me, being in this business since 1999, I still don’t know what you’re thinking. I did, however, developer a better sense of asking the right questions, but that’s probably a topic for a separate blog post.

When fielding questions, there are generally 2 different types of questions. One is technical question and the other one is Process.

What is Process and What is Technical?
I’m glad you asked that question. Here’s my definition of both

Process Question: A question that’s related to the daily/weekly/monthly workflow of a particular operation. For example, reconciling inventory to G/L at month end. (Non-linear)

Technical Question: A question that’s indirectly related to the daily/weekly/monthly workflow of a particular operation. For example, an error message when you’re trying to post. (Linear)

Troubleshooting the Process
Which of these questions is more straight forward? Of course the technical questions. It follows a linear path. These types of problems can usually be resolved using a debugger.

As the Dynamics NAV go-to person in your company, I bet most of your time is trying to figure out the process questions. The Non-linear questions that can have multiple paths.

It’s important to identify what is process and what’s technical question. If it’s a process question, you should get the experts or the person responsible for that piece of information involved. As much as you like to help out the process by request or making little modifications that solves their process question, it’s not the right way to go about it.

For example, over receiving. Some times the warehouse will complain that you cannot over receive. As an IT guy, yes it’s easy to bypass the check process and just modify the quantity.

However, by doing this, you’ve cascaded the problem and implemented a flawed process that people will get used to.

In this example, why is it flawed? Among the various reasons, one of the biggest problem is because when the vendor send you extra items, who’s responsible for it? Do you have to pay for it? Should the vendor give it to you for free? What if the buyer did not want to receive the additional items because it messes with their budgeting? You get the point.

Changing the Process
That’s not to say that processes cannot be changed. It’s really about how you go about changing the process.

The first step is to get with the people responsible for the process. For some reason there are some internal IT and finance people that simply will not do this. They want to assume they know what they’re doing or they do not want to ask the people responsible questions. This is absolutely a MUST!!

In our example, the purchaser should be involved and the warehouse manager should be involved. Sit with them and describe this problem and ask the all important question: “how do you want to resolve this?”. It’s up to them to define a process that satisfy the buyer and their vendors, the warehouse and the receiving process. Once that process is agreed upon, then it becomes a technical question.

Conclusion
As the NAV guru in your company, you’re most likely swamped.

We want resolve problems and issues to “get them off our plate” as soon as possible that sometimes, we mistakenly treat process questions as technical questions. I know because I’m guilty of that as well. This is not the right way to go about doing implementations and certainly not the way you should go about addressing the needs for your company.

Because ususally when IT gets involved in process questions, developers tend to find the shortest way to resolve the problem, not the right way. As always, finding the shorest way will always require exceptions in processes. Exceptions are fine until there are exceptions to exceptions. Then exception to exceptions to exceptions. This is a sure fire way to complicate your business process and have each department not taking responsibility and point fingers at each other.

Why am I doing Dynamics NAV

Overview
Recently, one of my employees challenged me about what my goal is for the company. I was taken a back because I never thought about this. I knew why I was working in this industry but I never thought it was relevant to tell anyone.

What started as a short e-mail paragraph turned into a… Well… an essay. My original intention was just to circulate within the company, but I haven’t made an actual confession on this blog in a while.

My Background
The times I’ve spent with my family are my most valuable moments. Why? Because when I was growing up, I didn’t have these moments.

My father owned a business and made a lot of money. My mom was a pretty good mom when she was present. Looking at it from the surface, everything was nice. But we had a lot of problem as a family. To this day, I never understood why my dad thought money and status was so valuable or why my mom thought gambling was more important than her kids.

I don’t blame them for what happened because it’s not their fault. They had to do what they did in order to survive.  Just like what my brother and sister had to do in order for us to survive. We’ve all made decisions that we’ve regretted looking back; however, at that particular moment in time (and that particular environment) it was the best possible decision we can make.

When I was probably 13 or 14, and I don’t remember what exactly happened, I cried in bed and made myself promise that one day I will start a family of my own and I will be a good husband and a good father.

I will not let my kids to have the same kind of childhood I had. I will always be available when they need me and I will be their father. I will love and cherish my wife with all my heart and never let her feel lonely.

The Miracle
I don’t know why. Maybe God took pity on me. I was able to achieve what I wanted. I met my wife and she gave me exactly what I was missing in my life. A stable family.

Although striving to become a good husband and a good father is still an ongoing process, there’s not a moment where I don’t feel blessed and feel that I’m incredibly lucky.

The Improvement
Because of my past, I frequently think about how we can finish our work in a more efficient and accurate manner. So we can quickly go home to our loved ones.

Every time I see people work until late at night, I always think about that person(s) waiting for them at home. But they couldn’t go home; they had to finish their work.

I want them to use that time at work, and instead use that to spend time with their kids and loved ones. Because time, once it’s gone. It’s gone.

Why ERP?
So why do I want to get into the ERP software industry?

My answer is that it was not my intention. You remembered when I said that I was lucky earlier? I think I really am.

When I was a student, I only had a student visa. After I graduated, I needed a company that was willing to sponsor for my permanent stay in the US. My grades weren’t that great and my social skills were lacking, but I made sure my determination and persistence was there. After countless interviews and networking/recruiting events, no companies hired me.

My lucky break came when one of my friends gave my resume to a company that sold Navision (my friend worked in a company that bought NAV). This company was very special, it was their strategy to hire a tone and fire quickly you did not work out within a few months.  During my 2.5 year at the company, I must’ve seen 30-40 people come and go, and we were only a 10 people company.

At the time when I got started, we had the Y2K problem. Within a month, there were on average of 3-4 implementations going on. It was trial by fire. Tiring, but fun.

The Revelation
I remembered my first year in this company. When I go to client sites to implement NAV, I couldn’t believe why people needed to work such long hours. What were they working on? Why does it take such a long time?

I always thought, if they can finish their work could they go home earlier?

This gave me the insight into how I can use software to help other people. I wanted to learn more about ERP (in particular Dynamics NAV) so I can help others.

This will become my tool to help others to have the opportunity to give what I’ve always wanted when I was growing up. A happy family.

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: