Extension Development for Non-developers for Dynamics 365 Business Central

Overview

A lot of people using Microsoft Dynamics 365 Business Central want to learn how to develop and publish an extension on their Business Central tenant.

What drives this is that in the old Dynamics NAV, the users are able to easily add fields onto a page even if they’re not developers. Now that they’ve upgraded to Business Central, it’s not as straightforward. For people that are not developers, we want to give the ability to add fields on to a page back in their hands.

While browsing through Youtube, I couldn’t find the video that’s short enough that I felt comfortable sharing.

So I decided to make my own. 

Enjoy!

What You Need

Install VS studio code and AL code on your PC. Microsoft has a pretty good step by step instructions on how to install Visual Studio Code and the AL Extension.

https://docs.microsoft.com/en-us/dynamics365/business-central/dev-itpro/developer/devenv-get-started

Conclusion

I tried to make the video as short, easy, and to the point as possible. I understand there are lots of syntax for the language that I didn’t cover.

If you’re interested in learning more about how to write complex functions, let me know and I’ll make a separate video in the future.

Permission Setting – Preventing Malice vs Accidents

Overview

Permission setting in Dynamics 365 Business Central is a serious, but not serious topic.

When a company coming from a legacy system or no system, they will always want to restrict everything. The older systems are easier to restrict because there’s not a lot of functions you need to worry about. A considerable amount of business processes had to be complimented with manual processes.

In another words, they couldn’t do anything in the legacy system anyway. This is one of the reasons why they’re migrating to Dynamics 365 Business Central.

In my experience, after the company goes live, permission will more likely become an non-issue rather than first priority. The reason is the users can now do a lot more than what their old system can do. They require less time depending on other people for troubleshooting because they have access to troubleshoot the problem on their own.

When operation is smooth, things are smooth.

Nonetheless, when the discussion comes up about setting permissions, there are a few areas and key points to consider.

Ways to Restrict

There are basically 2 fundamental ways you can set security in Dynamics 365 Business Central.

  1. Assigning Permission Sets where you control what tables to access as defined by assigning users Permission Sets
  2. Profile and Role Configurations where you restrict the user’s access to icons and functions

The combination of setting the permission sets and configuring the personalizations for user roles should net you the exact permissions for your organization.

In addition, there are tools like Recording Permission Sets that allows you to set the permission based on what the user actually does in the system so you don’t need to rely on the standard permission sets for the user.

To restrict what the users can see on a particular page, after you’ve customized their profile roles, you can remove the personalization options so they can’t mess around with showing fields they’re not supposed to see.

Having it Just Right

Administrators will make the mistake of setting too much permission where the user can’t do anything. Every little problem they encounter, they will need to reach out to other departments or the supervisors. Give too little they will access the areas they’re not supposed to access.

The guideline to which I always recommend to clients on setting security and access is: “why are you setting this permission”?

  1. Are they using the access to the information for malice?
  2. Are you restricting the access because they might make a mistake?

If giving them access to prevent them from making mistake, I will always advocate training instead of restricting.

In the modern workplace, I will always advocate empowering the  users with more, not less, access to information so they can troubleshoot their own problems and make better decisions on their own without having to bug someone else. Everyone is busy enough already.

If they’ll use the information for malice, then we for sure want to restrict them access and remove the functionality from the menu and permission sets. Having said that, I suspect when companies really get down what data users access for malicious reasons, there’s really not much areas that needs restricting.

Conclusion

Permission setting will take a lot of time. People will underestimate the amount of time required to get it just right.

I always recommend that the end user setup security for their own organization. The partner can do the initial framework, but to get everything exactly the way you want it, you have to get your hands dirty. Otherwise, prepare for large consulting bill and still not have it exactly the way you want.

One other caveat is that the more specific you get down to making your permissions “just right”, the more maintenance and overhaul you’ll need to do when your business requirement changes or new functionalities are introduced.

I can’t tell you how much time we have to “undo” restrictive permission sets in order to help move the company forward and expand their utilization of the system they purchased.

I guess the summary of this whole article about setting security is: Give the benefit of the doubt that the users will use the information for good, not evil.

Good luck!

How to Enter Beginning Bank Balance for Dynamics 365 Business Central v18 and Above

Overview

On Dynamics 365 Business Central release 18, Microsoft made significant changes to the bank reconciliation features. Most of the articles and videos on entering beginning bank balances are still based on the older versions Dynamics 365 Business Central or Dynamics NAV.

Just thought I would share with the community on setting up your beginning bank balances if you’re moving to Business Central from your legacy accounting /ERP software

The goal is to have your bank balance match your G/L account. Just posting whatever is in your G/L to your bank is not the way to go and you’ll run into trouble later in future reconciliations.

Do it right initially will save you tons of trouble later.

Here are the steps to enter the beginning balances of your bank when you’re migrating from your legacy ERP/accounting software to Dynamics 365 Business Central.

What You Need

As with anything, preparation is key. There are a few things you need before entering your beginning bank balance.

Assuming you’re going live with Business Central on December 1st, they are:

  1. Previous bank reconciliation before you go live. For example, if you plan to go live on December 1st, you’ll need the bank statement from November 30th.
  2. A list of outstanding checks and transactions not cleared by the bank up to November 30th
  3. Your reconciled G/L bank balance from your old legacy system. This means you need to do one last bank reconciliation from your legacy system up to November 30th

How do you know if you have everything put ready? Here’s a simple formula:

Your G/L balance for your cash/bank account as of November 30th
+/- Outstanding bank transactions that’s not been cleared
= Amount on the Bank Statement as of November 30th

For example:

G/L Balance as of 11/30 = 10,000
Outstanding uncleared checks and deposits as of 11/30 = 2,000
The bank statement that you got from the bank on 11/30 should be 12,000.

If the above formula is not true, do not proceed! Get it right so it can save you headaches down the road.

How This is Going to Work

Once you post the entries via General Journal (make sure the Account Type is Bank Account), run your first bank reconciliation as November 30th, or the period before you go live.

When you run your bank reconciliation for November 30th, manually enter the previous bank statement total in the Bank Statement Line section. DO NOT run the bank feed import for this period as nothing you import can be reconciled against.

Click on Matching -> Match Manually to match the entry that you’ve made for the Beginning Bank G/L Balance entry.

Once the matching is done for the beginning entry, you can post the reconciliation.

For your bank reconciliation for the following period, all of the unreconciled transactions will display for you to clear against.

Conclusion

Now you may be asking “But wait Alex, we won’t get your bank statement until a few days after we go live!”

That’s okay!

You don’t need your bank beginning balances as soon as you go live. We typically get the bank beginning balances (and other non-operation related balances) setup about a week after go live.

The Story of Our Dynamics NAV Implementation in Taiwan

This is a story of our Dynamics NAV implementation in Taiwan.

One of the things that I’m most proud of is the people that choose to work with me and the company that we built.

I am proud that everyone shares the same vision on what software implementations should be. That we care about doing the right things, even if it hurts our own bottom line.

That pride is none more so apparent than our team in Taiwan. A little background, our Taiwan branch began operation in 2014. In the relative short amount of time, they developed the Chinese Language Pack for Dynamics NAV. During this time, they’re also involved in a tough implementation in Taiwan for a licensed toy distributor.

Fast-forward today, the customer in Taiwan is so happy with how their Dynamics NAV implementation went, they agreed to speak on behalf of us with Microsoft on one of the most popular IT magazines in Taiwan.

In case you can read Chinese, here’s the link:
http://www.ithome.com.tw/pr/111319

Also in PDF version:

Dynamics NAV_麗嬰國際

Here are the highlights of the article:

– Origially had a 5 year plan to move out of the HEAVILY customized UNIX based system. We only utilized 1.5 years to implement Dynamics NAV. (According to the article, 6 months for analysis and 9 months for implementation)
– Reduce their inventory return amount up to tens of millions in local currency.
– Redesign the inventory put and pick process and increased the accuracy by at least 100%.
– Implement wireless handheld device and doubled the warehouse shipping efficiency
– Improve order process efficiency. Now it only takes one fifth of the time to proces an order (500% increase).

The Challenge

This implementation in Taiwan was indeed one of the most complicated that I’ve been involved in. Not only has their UNIX system insanely customized, but there were virtually no documentation on the operation.

Because of the type of business they’re in, they add between 10,000 to 20,000 items every month. That’s right! over 10k new items every month. You can see why order entry and communicating those new items with their large distribution network is a nightmare. In addition, think about how the warehouse will go about fulfilling these orders.

When we did our first analysis, I was personally shocked at how they were able to manage such a large volume of business with their current setup. Basically, our job was to go from no documented business process to having Dynamics NAV fully functional. The fact that our team did it in 1.5 years is nothing short of amazing.

There were countless fierce meetings and conversation both internally and with the client to better their existing business process. Even though these discussion were fierce, the client really appreciated that we did not just go with the status quo and replicate their existing business process.

Conclusion

Having the right people in the right place really makes all the difference in the world. This project wouldn’t be a success without their involvement. The people that works with me, quite honestly, can work anywhere else and any company; but they choose to work with me. That really gets me in the feels…

Properly Setup Bin Code for Warehouse Management in Dynamics NAV

Overview
One of the most often asked about features when dealing with inventory is the ability to keep track of inventory by bins in the warehouse. While The Warehouse Management System will benefit the accuracy of the items that are stored in the bins, careful consideration must be made during setup so when you go live, less additional work is needed for the system to work for you.

On a macro level, before you eve consider implementing a warheouse management system, your warehouse itself MUST BE ORGANIZED! What I always tell customers is that the purpose of a computer systems is to help you do something faster. This means that if you’re warehouse is a mess, implementing a warehouse system will make it more messy, faster. However, if you’re warehouse operation is efficient and optimized, then implementing a warehouse system will help you become more efficient and optimized, faster.

The Bin Codes
While there are many considerations for setting up warehouse management in NAV, this article will focus on one of the most overlooked areas.

The Bin Codes.

The Path of the Picker
There are many differnet theories about how to create the most efficient picking path. But generally, you want the path of the picking so the following occurs:

1. When picking for an order, they would not have to come back to the same bin in the same level
2. When picking, they should pick from the eye level (or the level where they don’t need special equipment). This is typically the first level.

Keeping it simple and not concerning with spliting into Zones, wave picking, and whatnot, the pattern the warehouse picker should walk is the following:

Warehouse path for picker
Warehouse path for picker

Only when the above is exhausted, do we use special equipment and pick from the higher levels. The general rules are the same, you want to use the run time for the special equipment should be as minimal as possible.

The Sort Order of the Pick Bins
In order to get the path described above, we have to first understand how Dynamics NAV priortizes what bin is selected when a pick is generated. Consider the following bins numbers for your warehouse:

Typical Bin Code for Warehouses
Typical Bin Code for Warehouses

The first 2 characters is Section, then Isle, then Level

When the pick from NAV is generated, it will suggest the pick in the following order (assuming no bin ranking is used).

NAV Suggested Pick Order
NAV Suggested Pick Order

As you can see, it will create the pick on a decending order.

Why Suggest the Bins in Decending Order?
The answer lies in the help for the Bin Ranking field found in the Help or on MSDN:

The program will suggest a pick from the bin with the highest numerical ranking. Items in the highest-ranking bins (bins with the highest number in the field) will thus be picked first

Makes sense.

Why Not Use the Bin Ranking?
We could. But tread carefully! Bin Ranking provides a lot of flexibility on how the bins are ordered during the directed pick/put-away. Not paying special attention to how to rank the bins will give you more pain and suffering.

Assuming you rank all of the 1st level bins the highest, and level 4 the lowest. The resulting pick order NAV would generate for its pick is the following:

Warehouse4

This means that NAV will ask the warehouse picker to pick from the section that’s furthest away from the warehouse (assuming that’s section C). Very good for letting your warehouse picker get excercise, not really good for pick efficiency.

Two Ways You Can Go About This

Property Setup the Bin Ranking
If you want to utilize the Bin Ranking, then you will need to sort it based on how you want the warehouse user to logically pick/put-away. In the example above, the bin ranking would be set as the following:

Proper Bin Ranking Setup for a Warehouse
Proper Bin Ranking Setup for a Warehouse

You will need to carefully configure how to assign the bin ranking. In addition, if there are any changes to your bins (add/remove), you will need to break out the spreadsheet and reassign all bin rankings again.

Modify the Default Bin to sort in Acending Order instead of Decending Order
Doing so will allow Dynamics NAV to “sort” to pick from A section to D section. However, it will also ask the picker to pick from multiple levels first instead of the 1st level.

You will need to reconfigure how your bin codes are setup. Instead of Section – Row – Level, you will need to reconfigure your layout as Level – Section – Row:

Warehouse6

This will ensure that all of the 1st levels are picked first. Then it will then pick the 2nd level, then the 3rd, etc. This option may not be feasible if you’ve already spent the time and effort on labeling all of your bins. This option may also not be feasible if you want them to pick from the same column once they got the forklift truck. However, this option will require the least amount of maintenance.

Conclusion
Having implemented both methods for clients with warheouse management requirements for Dynamics NAV, both methods have their pros and cons. And they both work for the respective companies.

Bin Ranking will work wonders if you take the time to set it up right, but maintenance is a hassel. Reconfiguring the bins is simple, but you have to becareful about how NAV sorts the bins.

Again, both methods work. It really depends on how you implement this.

Understanding What You Want Out of Your Business

Overview

Having visited numerous SMB (Small or Medium Business) companies and implementing Dynamics NAV since 1999, I’ve had the wonder pleasure of meeting unique and interesting people. The business problems that were discovered are both exciting and challenging. Over the years, I’ve learned a lot both about businesses in general, as well as myself and our organization.

Rewind a few years in my career, I remember whenever I go into a company on a consulting engagement, after analyzing the customer’s business, I would make all these really good, cost effective, and sometimes contradictory recommendations on how to make their business more efficient and effective.

I would say out of the 10 recommendations and suggestions I would make, if I was lucky only about 3 or 4 of the recommendations I make are heeded. Some of the recommendations that I thought would be a sure hit turned out to be duds. I’ve always thought that the only reason why certain projects didn’t go through was because of the budget.

To a certain extent, it’s true, the monetary cost of certain projects will definitely be ignored especially if the benefit cannot be justified. But as I grow older (and hopefully wiser), I realized that most of these projects were rejected even before it got to “how much it’s going to cost” stage.

I realized that there is something else that is involved on deciding whether certain project gets supported. That “something else” is the current life stage of the owner.

It’s About the Money, but Not Really

It’s all so simple. A 30 year old person will make different “long term” decisions than a 60 year old person. What the younger me was trying to do is make suggestions for long term strategic growth for a business owner that’s trying to retire and/or sell the company. And making strategic short time gain recommendations who’s in the business for the long haul.

As I mentioned earlier, often these suggestions and recommendations will contradict each other. How should a company spend the time and resource to hire an assistant or spend the time and resource on training to make the team more effective? Invest in new equipment or just repair and patch the old one? Should we just patch this deficient business processes? Or totally revamp it? There are business cases for all, and depending on which way you swing, you can argue it either way.

After years of frustration on why my brilliant ideas were so casually disregarded, I realized that without understanding what the owner intention is for the business, a lot of energy I spent figuring out solutions to what I think is their business problem is will fall on deaf ears.

At the end of the day, what every SMB business owner want is for all of their problems to go away. But how do we, as a hired guns, help facilitate this? And how do we know which problems they consider “must solve now” or “solve later”?

For a while, my most feared question from our clients is: “How do we make our company more effective?”. Because this entailed hours analyzing and writing up recommendations, then having it shot down. Very demoralizing, billable or not.

The First Thing that We Need to Understand

What do you want from your business?

Are you looking for this business to provide comfortable retirement? Or do you want to expand it?

To expand it (and maybe sell it at one point), you have to invest and make changes in your business. To provide comfortable retirement, you may not want to change too much; stay the current course.

There are ways to implement the proper strategy for both scenarios. But don’t try to ask for advice on expansion when your goal is retirement. It will not work and you will come back and want to change everything.

Similarly, don’t think about short term retirement if your goal is to expand. Because to make your company more efficient in the long run, it will force you to make painful decisions on personnel, technology, and the way you do business.

Knowing their frame of mind and putting myself in their shoes allowed me to become more effective on providing recommendations for resolving the CEO’s problems on “what should be resolved right now”.

Conclusion

Note that the subject matter is usually very tense and a lot of CEOS and owners of the organization were taken back by the rather blunt question. Sometimes, it’s not as straightforward when family members are involved. Sometimes, the CEO wants to retire themselves but want to expand so their family members can take over. These contradictory objectives requires hashing out by answering more tough (and blunt) questions.

At the end of the day, knowing what you want out of your business will not only make our job easier, also make your life easier and happier.

Find and Replace Data in Dynamics NAV 2016 with RapidStart

Overview
One of the powerful tools in the old Navision classic client was the ability to do a Find/Replace. For example, if you wanted to change the Salesperson Code on the Customer Card from one value to another, just go to the field you want and click on Find, then Replace.

FindReplaceNavision

When you click on Replace All, it will find all values on this field with PS and replace it with AH.

This was a great function that allows the user to manually do mass change on the data without having to ask a NAV developer to write a process only report or some other modification to do the mass data change. While dangerous, this function did more good than bad in the companies that I work with.

New Version
When Microsoft released the Role Tailored Client, now called the Windows Client, they took away this ability. Instead, they gave us… This?

FindReplaceNavision2

Yes, we’ve gotten a lot of calls from our clients asking us what happened here.

The New Find/Replace
Thankfully, there’s another tool that can replace the Find/Replace option in Dynamics NAV. The tools is using the RapidStart functionality that’s built into Dynamics NAV. The nice thing about using RapidStart is that it validates whether the data is good or not.

Here’s a 2 minute video that shows you how to do a Find and Replace in Dynamics NAV 2016 using RapidStart.

Undo Receipt with Directed Put-away and Pick for Dynamics NAV

Overview
Undo receipt has become a necessity in some warehouse environments where the staff may not be able to keep up with the paper flow. Strictly speaking, the undo receipt process shouldn’t be necessary because the process in place should be able to accommodate. However, if there is a situation where a department “can’t keep up”, it usually means that something is wrong within that particular department. It may not be the people, it may just be how things are being done or may just lack the manpower.

Nonetheless, while you’re trying to figure out a more efficient way in that particular department; in our case the warehouse, mistakes in receipt will be made. We need to be able to correct the mistakes in the warehouse without causing the other departments (such as accounting) a ton of headaches on reversing.

Undo Receipt
The Undo Receipt functionality is pretty straightforward. Basically, you just bring up the Posted Purchase Receipts and do the undo receipt. In fact, it’s so easy it’s explained in a step by step instruction here: Undo Receipt in Dynamics NAV

Undo Receipt with Directed Pick & Put-away
When you enable the Directed Put-away and Pick (or the full Warehouse Management in Dynamics NAV), it may be a little more complicated.

If you follow the steps on MSDN, you’ll get one of these 2 error messages:
UndoReceipt1
“You cannot undo line xxxxx because warehouse activity lines have already been posted.”

UndoReceipt2
“You cannot undo line xxxxx because there is not sufficient content in the receiving bins.”

One error says you do not have enough on the receiving bin for undo, the other error message says you have a put-away (registered or not) out there.

How Is This Possible?
Right now you may be asking, “how is it possible to register the put-away when it’s physically not there?”

You’re absolutely right. It is impossible to physically put-away something that you didn’t even receive. This is what makes Warehouse Management in Dynamics NAV work; it’s the accuracy of data entry from the actions performed in the warehouse. In real time!

The real problem here is the process within the warehouse receiving department. If the procedures are followed, you should never have to undo. We have to dig deeper on why the warehouse receiving staff are not following the rules for unloading the truck and putting the stuff away. Sometimes there are legitimate reasons why the procedures cannot be followed. In those cases, a new process needs to be thought out to better accommodate the receiving staff.

Resolving issues like this may take a while and this is where we spend time with the client. Often times, I wish it was as easy as just telling the warehouse people to just follow directions.

But I digress…

Undo Receipt After the Put-away is Registered
Here are the steps that need to be done in order to undo receipt after the put-away is registered.

Delete the Registered Pick:
1. Locate the Posted Purch. Receipt
2. Click on Navigate
3. Show the Posted Whse. Receipt Line
4. Click on Navigate –> Show Posted Whse. Document
5. Click on Navigate –> Registered Put-away lines
6. Click on Navigate –> Show Registered Document
7. Push Delete

Adjust the items into the Receipt Bin. In this case, our receipt bin is R:
1. Warehouse Item Journal
2. Negative adjust the item from the bin you want to take out
3. Positive adjust the quantity to the R bin

Do the undo Receipt:
1. Locate the Posted Purch. Receipt
2. Click on the line that you want to undo receipt
3. Click on Function –> Undo Receipt

Conclusion
This is just to get by until you can get to the bottom of why the receiving staff are having trouble with receiving. That’s where the real problem and the solution lies.

Why it makes sense to upgrade to (at least) Dynamics NAV 2015

Overview
As you are all probably know, Microsoft has announced the next release of Dynamics NAV, called Microsoft Dynamics NAV 2016. With this release, there are a lot of fantastic features that are out of the box. Here’s an image of the planned features releases for Dynamics NAV 2016:

NAV2016

Historically, there are 2 major time consuming portion of an upgrade:

  • Code Merge
  • Data Upgrade

However, since the release of Dynamics NAV 2015, Microsoft introduced a number of PowerShell cmdlet to automate the upgrade process.

One of the cmdlet in the Development Shell called Merge-NAVApplicationObject, it essentially merges the application code for you and spits out any conflicts for you to resolve manually.

Additionally, Microsoft also introduced the cmdlet Start-NavDataUpgrade that will essentially run the upgrade toolkit for all companies as a script.

This means what used to take hundreds (sometimes thousands) of hours for an upgrade can now be done at a fraction of the time!

Not only major upgrades, you can use the same method to apply hotfixes that are released every month into your database without spending tons of hours on consulting fees.

All this… Providing you upgrade to at least Dynamics NAV 2015.

The Strategy Behind This
Prior to Dynamics NAV 2015, clients would wait, and wait, and wait, then wait some more until they find a version with the improvements they like; or sometimes wait until they can’t run Dynamics NAV in their current operating system before they even consider upgrading. This is why you see some end user sites running version 5.0, 4.0, 3.7, or even 2.0!

The problem when you’re behind on the versions in any software is that when you do decide to upgrade, it’ll be a major impact on your business and your budget. In some cases, companies running on older version of Dynamics NAV (or Navision as it was called back then) may decide to get rid of Navision and make the mistake of moving into a competing product.

This is a threat to Microsoft and they realize this. With the Upgrade cmdlets, Microsoft finally has a solution to this.

What Microsoft Hopes You Do
With these improvements, instead of having a major upgrade, you would do “incremental” upgrades (hotfixes every month, R2 releases, etc). This means that you would implement Dynamics NAV, apply all the monthly release hotfixes with the cmdlets, then use the same method to upgrade to the newer version when it’s released.

This goal is that when you guys do go to a newer version, the impact on your business and your budget will be incredibly minor; while the benefits for the newer version will have greater beneficial impact for your business.

What Microsoft do not want you to do is to wait and then do a big version jump with a big upgrade cost.

Conclusion
As any developer that have use the upgrade cmdlets will tell you, it’s good but it’s not perfect. However, it’s a FANTASTIC starting point.

What my personal hope is that the upgrade process will be so easy with future releases that the end user can run the upgrade themselves, rather than to hire a consultant to do it for them.

 

When to Expect the Next Promotion for Dynamics NAV

Just a quick note on when to expect the next Dynamics NAV promotion from Microsoft.

There are 2 main periods during the year where Microsoft will MOST LIKELY release promotions and discounts for Dynamics NAV (or AX and other Dynamics product line). They are:

Microsoft Fiscal Year End
Microsoft’s fiscal year ends on June 30th. They want to drive their numbers up so they can report a strong fiscal year. So look for new discounts and promotions about 2 to 2.5 months prior to June. So look for discounts starting in late March or April.

Calendar Year End
December 31st is another period where Microsoft will have a lot of promotions and discounts. The calendar year end discounts will be released about 2 to 2.5 months prior as well. So look for discounts starting late September or October.

Conclusion
To get the most bang for your buck, I would hold off on purchasing until these promotions appear. Even though there are promotions from Microsoft, there may be certain terms and conditions which will exclude you from taking advantage of the promotion. So even if you waited, you may still be excluded.

Having said that, businesses can’t wait. If you need a module or new user sessions right now; get it. Promotions are nice, but if it hurts your business because other people can’t log in to do their job it won’t make much sense to wait.