This is a hands-on resource for all Microsoft Dynamics 365 Business Central and NAV ISVs.
It is a guide how to best integrate a Gantt chart scheduler into a vertical NAV or Business Central solution.
What, if this could happen with you completely working in C/AL, resp. AL?
If you want to put it into one phrase, the basic idea of a Gantt chart boils down to:
A picture is worth a thousand words
In essence, a Gantt chart visualizes complex time- and resource-oriented planning data and a Gantt chart scheduler helps to efficiently change these data by easy-to-understand drag & drop actions.
Initially, the major innovation of the Gantt chart was that it - for the first time ever - added a time element to the visualization of activities. So other than in any workflow or PERT chart, a Gantt diagram shows activities, their dependencies and their timing.
With the advent of capable software solutions, another element - beyond activities, dependencies and timing - had been added to the Gantt chart. This is: resources. As of today, the main purpose of the Gantt chart is to visualize activities, their timing, their dependencies and the resources needed to perform these activities.
You can learn more about Gantt charts, their evolution and the general question "What is a Gantt chart scheduler" in a separate blog post.
Today, Gantt charts are most effective, when they are used as scheduling tool to deliver operational agility. In that context, it is important to reflect on the difference between scheduling and planning:
Typically, planning happens before scheduling. It defines the desired outcome and a high-level road map to get there. Scheduling then breaks this down into concrete tasks with concrete times and owners (resources). Literally, scheduling aims at putting the plan into action.
We regard Gantt charts not that much as planning tool. Instead, they are a proven instrument to support scheduling.
So, what is the value of a Gantt chart scheduler defining the when and who?
The obvious value is the visualization. A picture says more than a thousand words. This visualization in combination with any state-of-the-art software brings another value: the capability to quickly change one part of the schedule while seeing how this impacts the rest of the schedule.
We call this operational agility. In our experience, a Gantt chart - as long as it is used for scheduling (and neither for planning nor for optimization contexts) - delivers exactly this. Operational agility.
First of all, there are a lot of pros and cons when it comes to manual versus automatic scheduling. A summary of these can be seen from our blog post "What is a Gantt chart scheduler?". With a Gantt chart scheduler, we aim at putting visual scheduling into the foreground.
So, what's this?
Visual scheduling is Gantt chart-led scheduling, in which the user understands what is going on and in which the user triggers any change of the schedule by visual (drag & drop) actions in the Gantt chart.
This does not tell a single word about what happens when the user makes a visual change in the Gantt chart schedule. In our point of view, this is a question of the design of the underlying Microsoft Dynamics NAV or Dynamics 365 Business Central industry solution. You as NAV or D365 BC developer can define if a visual change to the schedule can simply cause a manual change of the plan (1:1 as the user dragged & dropped) or if this change can start an automatic scheduling run following certain defined rules.
The important thing is that the Gantt chart scheduler and the visual scheduling methodology keep the user in the driver’s seat.
Here is a summary of this chapter ... so far.
You should have noticed that the visual scheduling approach is rather hands-on and entirely lacks the elements of both strategic planning and sophisticated optimization. As such, it resonates better with small and medium-sized businesses (SMB) rather than with large enterprises. Hence, we see it as great fit with the customers that you are working with.
If you want to further identify, for whom of your customers visual scheduling might work best, we recommend that you remember what scheduling is all about. It provides clear answers to the when and who. The "when" clearly puts the timing into the foreground, which means that visual scheduling is especially valuable for customers with a given set of customer orders of which the delivery time is really crucial. This is especially (but not exclusively) true for
If you work with these types of customers, enhancing your Dynamics NAV and Dynamics 365 Business Central industry solution with visual scheduling might be a great idea. Please continue reading if you want to learn how to best achieve this.
At first glance, it sounds like semantic hairsplitting by students of linguistic sciences that we make a differentiation between add-in and add-on here. However, it feels like the capability to provide additional functionality to Dynamics NAV by add-on software had always been existing. In contrast, the option to deliver incremental functionality as client control add-in was introduced with the client extensibility framework just a few years ago. The conclusion is obvious: if a client control add-in would be the same as an add-on, there would have been no need for Microsoft to come up with the client extensibility framework ;-)
Without digging into too many details here (we already wrote an extensive blog post about 7 subtle but relevant differences between add-ins and add-ons for Dynamics NAV), the key differentiation can be described as follows.
See the difference?
With Dynamics 365 Business Central (at latest), Extensions have become the technology of choice for enhancing at least the cloud-based deployments of both NAV and D365 BC. Conceptually, they are way closer to an add-in than an add-on and "just" change the options that partners have to change and interact with the Dynamics source code. With an Extension, ISV partners can literally bundle
As the purpose of this site is to elaborate on a Gantt chart scheduler for Dynamics 365 Business Central and Dynamics NAV, and as Gantt chart scheduler by nature are very graphical, everything that is said for add-ins also applies to Extensions.
If you think of providing additional scheduling functionality - precisely: a Gantt chart scheduler - to Dynamics 365 Business Central and/or Microsoft Dynamics NAV, you still have to make your mind if you do this as add-on or add-in. Here are the two main reasons why we recommend you do it the add-in resp. Extensions way.
Overall, an add-in seamlessly integrates into Dynamics NAV and Dynamics 365 Business Central. When working with an add-in, the user does not need to "leave" the system and he stays within the boundaries of his ERP / business management software. An add-in that comes with a similar (if not the same) user experience as the Dynamics software most likely requires less explanations when presented to clients (as they are already familiar with the overall UI principles). This makes it - also for other Dynamics NAV / Dynamics 365 BC partners - easier to sell.
Side note for developers: Being bound to the overall UI of Dynamics 365 BC or Dynamics NAV might feel like a limitation at first. However, you'll quickly realize that this is actually a big "pro" as it quickly clarifies a lot of questions and helps you avoid dealing with (too) many nasty UI decisions.
As ISV, you'll have less hassle with an add-in.
By now you've hopefully decided to go the add-in route for your Dynamics NAV Gantt chart scheduler. Before you start getting "your hands dirty", here are five tips for you to consider. They will help you not fall into some traps that are out there. Actually, we've witnessed many guys fallen into these traps. These folks did not have in-depth experience with developing visual scheduling software for Dynamics 365 Business Central and Microsoft Dynamics NAV.
We said it before. A picture is worth a thousand words. No doubt about it. However, resist the temptation! This sounds trivial, but is important. So, let's repeat it: resist the temptation ... to show every detail of your schedule in your visual schedule. You can show bars for activities, show links, show different symbols for different types of dates (due date, milestone, material availability date, etc). You can also have text on the bars, use color coding for bars, links and symbols, add layers to the bars to represent more information, work with hatching on the bars, etc. If you work with a proper Gantt chart control (for more, see below), there are literally no limits to your visual creativity.
Did we say it before? Resist the temptation.
Start your development with writing down a few clear user stories. These are the typical scenarios in which you want your customers to work with your Gantt chart scheduler. Write down:
Not more, but also not less. Keep it simple!
Do not keep or manage data in the add-in. Let all of this happen in the Dynamics 365 Business Central and Dynamics NAV database (this is what these systems are made for anyway). Any action (mouse click, drag & drop etc.) in the visual scheduling add-in then triggers a bi-directional communication with the underlying business logic leading to an exchange of objects between both entities.
That way you keep your visual add-in stupid, but responsive and fast. The intelligence then comes from the business logic of NAV or D365, or from the industry solution that you build with these core technologies.
It goes without saying that a visual scheduler always is built to fulfill a defined requirement or to tie into a certain business process. As example, there are Gantt chart schedulers for production scheduling, resource scheduling, project planning, service order dispatching, and much more. When you start developing your first scheduler, it seems to be obvious to work with a data model for your scheduler that exactly mirrors the data model of the underlying business logic (such as a manufacturing-specific data model).
Of course, this specific approach will give you some initial tail-wind.
However, it is for sure that this tail-wind will turn into head-wind (blowing stronger, blowing more consistent) over time. In addition to the obvious benefit of you having an own data model, there are a few more advantages of an abstract data model:
A picture is worth a thousand words. We had this before ;-) However, you will use some words in your Gantt chart scheduler. This will happen in the timescale (words for months and days), in the table part of the Gantt chart and most likely also in tooltip texts that you provide and in context menus that you'll create.
So, in the minute you use text, you'll bite into the "universality advantage" of the picture. (Literally) everybody feels comfortable with and is confident to understand a pure visual schedule. As soon as you show "Montag, Dienstag, Mittwoch, ..." in your timescale, your user's brain will tell them: "I do not understand this. Maybe, this is German. Hmm ... seems that this is product is made for German customers only." No kidding here: we have seen this happening over and over again.
The beauty of a visual scheduler is that it can get easily understood by many, many people all around the globe. Do not make it ugly by hard-coding any language into it. Both Dynamics NAV and Dynamics 365 Business Central provide you with enough technological capabilities to separate text from the visualization and hence go for an easy localization of your visual scheduler.
At first glance, a Gantt chart is a trivial thing (that makes it so easy-to-understand, by the way). There is a timescale, there is a table (e.g. either for jobs or resources) and there is the diagram that shows when and how long an activity is happening and who is working on that activity (if you show the resources in the table). This is something you can explain to a 10 years old kid.
However, developing a Gantt chart software from scratch is a different story ... especially if the Gantt chart is to be used in mission critical B2B applications. You will be surprised how many subtle facets with respect to the Gantt chart's look & feel as well as its drag & drop behavior become relevant in that context. Hence, the clear advice is:
Focus on what is core, and outsource what is context.
Even if you are an experienced software developer: avoid going the route of developing Gantt chart software from scratch. Focus on what you are good at: your application, your business logic, your understanding of core customer processes, and your understanding of the required scheduling techniques. Build this. And get a Gantt chart control to embed into your visual scheduling software. There are many rather good Gantt chart components out there - not "just" ours ;-) -- Any control that you use will ease your living and accelerate your time to market.
Any by the way: at the bottom of this page, we'll come up with even more thoughts on the question HTML5 Gantt chart scheduler - make or buy?
We thought about this from three perspectives:
Here are the conclusions to which we came.
Although our recommendation is clear, there are actually a few heavy-weight arguments that speak for going the .NET way:
When it comes to visual scheduling in particular, things seem not to be as obvious as they are from the general viewpoint.
This is particularly true, when you look at this from a make-or-buy perspective and prefer the "buy" option for obvious reasons:
So, let's briefly reflect the state of the Gantt chart controls' market:
There is a plethora of proven Gantt chart controls available for the .NET world. Many of them are robust and have been playing a role in many mission-critical B2B scheduling applications more a decade, or more. Just take our own VARCHART XGantt control, which is used by more than 500 customers around the globe. It has been on the market for almost 30 years (starting as ActiveX control), and is seen as the most complete C# Gantt chart control for building modern and yet industry-proof scheduling applications.
With the advance to Dynamics 365 Business Central, the switch from C/AL to AL, and the support of modern development tools, choices still are there. But they seem to have become a bit more limited:
Let's summarize this (image via giphy):
Quite a bit of a challenge.
Well, this is our thought-provoking idea. We'll spend more details on it at the end of this page. However, before we market our approach, we prefer sharing some more visual scheduling related best practices and insights. We recommend that you apply them even if you decide to pursue your D365 Business Central visual scheduling journey without us.
Now that we spent some time on all general technological considerations that you should make before developing a visual scheduler for Microsoft Dynamics 365 Business Central or Dynamics NAV, we also shed a light on best practices. With this, we also turn the perspective from you to your users and share some insights what they really expect.
We provide this users' perspective from two angles:
Here we look at visual scheduling best practices that make sure your customers get a visual scheduling benefit.
We recommend that you apply both angles when designing and defining the architecture and scope of your visual scheduler.
We have been developing Gantt chart and visual scheduling software for more than 30 years. During this time, we celebrated major achievements but also burnt our fingers with some fancy ideas that we had, and some tough requirements that we tried to cope with. Overall, this helped us building an invaluable treasure of experience with developing visual scheduling software.
Based on this experience, we can share with you five key best practices that we recommend to apply when building a visual scheduling product. Please take into account that list of best practices is not meant to be full-fledged. It is more a kind of "minimum list" that you should really take into account.
When thinking about a Gantt chart, people typically have something in mind that comes from a world where Gantt charts are used for project management purposes. This is: work breakdown structure plus a bunch of symbols in a table on the left hand side, the timescale on the top, and one per bar for each task in each line of the Gantt chart. However, this is only one perspective that you can have on your schedule: It consists of data related to tasks and their timing, whereas the resources that are meant to work on these tasks remain somewhat hidden.
Instead of building just a Gantt chart as everybody has it in mind, ask yourself: "Which questions do my users want to answer with this type of visualization?". This is really fundamental to build a visual scheduler that yields the expected operational agility for your users. Typical, but quite different questions that can both be answered with a visual scheduler are:
These are just example and there are much more questions that a visual scheduler can answer. The point here is: we highly recommend that you create different views on your data - with each view targeting at primarily answering one particular question. Just look at the below two screenshots. Both show a visual schedule representing the exact same data. The first one looks at the respective jobs and is more geared towards answering timing-related questions. The second one looks at the resources and is better suited to provide information about the resource utilization and resource gaps.
A job-centric view - providing timing information
A resource-centric view - providing utilization information
Of course, the horizontal axis of a visual schedule is a timescale. There are a lot of applications, in which you can press a button somewhere in the software to change this timescale from days to weeks to months and to whatever time-frame. This works, but gives the impression of time being something static.
We recommend to look at this in a more dynamic way. For us, the timescale - in combination with the mouse-wheel - is the perfect instrument to seamlessly zoom in and out into your schedule. We believe that this truly allows for better scheduling within Dynamics NAV and D365 Business Central and wrote an entire blog post about it.
Just having an either granular or a broad view on your schedule bring very little real value on their own. It's the combination of the two, achieved through the flexibility of the wheel on your mouse, that enables the real agility.
Understanding the utilization of the resources and making a proper use of the available capacity is one of the key challenges when it comes to visual scheduling. Hence, visualizing the resource load in a load curve ("histogram") is definitely a must have. Overloads as well as unused resources can be recognized immediately. This is especially useful if you want to monitor the aggregated load of a resource group consisting of multiple resource (with varying capacities).
State-of-the-art Gantt chart scheduler also allow to show these kind of load curves within the Gantt chart.
Visual alerts translate your business rules into the visual scheduler and thus bring them to the planner's attention. They are the "soul" of visual scheduling. Use data-driven visualization and send signals to warn the planner if there is something he should take care of. That way, you help the planner to focus on the exceptions and to take care of the truly crucial issues.
In general, the possibilities and the scope for visual alerts is unlimited. But - as often - less can be more and hence we recommend that you work with visual alerts just for those cases that need the immediate attention of your scheduler. Some ideas:
As you can see: the options are manifold. The good news is that both Microsoft Dynamics 365 Business Central and Dynamics NAV consist of many standard data fields that allow building these kind of visual alerts into your visual scheduler. But always keep in mind: less can be more.
Last, but not least: the whole point of scheduling is not just to look at data. Scheduling is all about changing planned data:
Your customers' businesses are agile, and thus should your visual schedulers be. Drag & drop allows for intuitive, quick and simple scheduling changes while never losing track of the modifications’ effects on the overall plan.
From the above you now should have some ideas how to build a visual scheduler that is useful for your customers. Now, let's have a look how you can actually make it also usable for your customers. In our experience, this all boils down to three key requirements (of course: there are more; but let's keep it straight-forward and "clean" here).
This sounds trivial, but is so important. What is the value of a beautifully designed visual schedule, if your user has to wait a perceived eternity for the Gantt chart to react after a drag & drop change? Even worse: how will your users accept your visual schedule if it seems to take ages before they actually can see the first Gantt chart?
There is a need for speed. Period.
If you decide for developing your Gantt chart software on your own, design for performance from day one. If you instead opt for a Gantt chart control to become part of your visual scheduling solution, make sure your vendor designed it for performance. Think that this is too trivial? Well, there are vendors out there, who give their users tips how to optimize their Gantt chart controls when they are loaded with 200 tasks. No kidding!
The development team then quickly came up with some nice "performance improvement" concepts. However, we stopped the entire project. We told ourselves: if the first version already shouts for performance optimization measures, we will spend - in the long run - more time with performance tweaks than with functional enhancements. Hence, we literally trashed everything and decided to start completely new with looking for an alternative approach (which would be more likely to be high performing). Finally, we found this approach and one (!) further year later (!) we were again where we initially had been after six months.
There is a need for speed. Period. Make sure that your Gantt chart developers fully embrace this.
Developing effective visual scheduling systems for the rather complex and dynamic domains of your customers is a serious challenge for designers and developers. Poor usability and a too static approach is one of the core barriers to adoption and a deterrent to its routine use.
A visual scheduler unleashes its full potential to your clients, if it works with a clear set of different visual alerts. These alerts do not necessarily require the user to take action, but act as communication tools to cue something noteworthy. In that regards, the visual alerts are used to make certain items stand out from the crowd. Consequently, they are not always present but appear under certain conditions and can come in various forms (depending on the context they are used and the information they should convey to the users). Visual alerts can take the form of
In order to build meaningful, context-driven visual alerts, make sure your visual alerts:
All above translate into significant UI definition and design challenges for your product teams. Well, getting this done from a conceptual point of view is just one side of the medal. The other is that the tool/technology that you select for your Gantt chart scheduling client control add-in needs to cope with the above. It must support the design of a dynamic layout to support context-sensitive visual alerts.
Without that capability, you will lose a hell lot of the communication capabilities and benefits that a visual scheduler can bring to your Dynamics 365 Business Central and NAV vertical solution.
"Multiple bars in one row? Come on, you are kidding me!" - Well, seriously: when you look out for a ready-to-use Gantt chart scheduler or Gantt chart control which you embed into your application, make sure that it allows showing multiple bars in one row. We know, that this sounds a bit silly. However, it can truly make a difference.
Many people - including many software developers that work on Gantt chart software - look at Gantt charts from a very activity-centric point of view. For them, a Gantt chart shows which tasks of a project or a job have to happen in which sequence to reach a certain milestone. This looks as follows.
See what we mean? There is one bar per row.
This works well if you just want to look at your schedule in an activity-oriented way. However, in the very beginning of this guide we already pointed out that a Gantt chart not only can visualize activities, their timing and their sequence, but that they can also shed a light on which resource is supposed to work on which activity when.
If you want to become resource-centric and use a Gantt chart scheduler to deal with resource allocations and their timings, you will appreciate if you can display multiple bars in one row.
Do you recognize the difference? With multiple bars in one row you can actually build a Gantt chart that allows you to visualize the load of your resources in way that your customers will understand immediately.
Hence, we strongly recommend that you look out for a tool that can be both:
In order to achieve this, you need to be able to show multiple bars in one row.
OK ... time to sum this up and to come to a conclusion. In the very beginning of this page, we said that we'll close with a thought-provoking idea. Let's recap before we actually get there. By now, you learned the following:
The advantages of the make alternative are rather obvious: If you build something on your own, you are in full control:
With building your own Gantt chart scheduler, you do not become dependent from any other vendor and can act completely on your own. This provides you with the maximum flexibility - both technically and commercially.
Actually, these are lot of strong arguments that speak for the make alternative. However, this maximum flexibility comes at some cost and hence here are also considerations that speak for the buy alternative.
So, there are a lot of reasons to buy a Gantt chart control to accelerate your visual scheduling project. And we would 100% agree with this conclusion if the world would still be PC-centric and if you were looking for a tool to help you build a visual scheduler for the Dynamics NAV role-tailored client. .NET would be your choice for a client control add-in and there are a lot of truly B2B-ready .NET Gantt chart controls out there.
This is the question that we initially raised on this page. And this is a question we asked ourselves again and again. Ultimately, we made finding and providing an answer to this question the purpose of a strategic internal development project.
Here are the cornerstones of and key requirements for this development project:
This framework is already used by a few selected early adopting ISV, and we'll share their experiences shortly. What these ISVs get from us:
It requires a development involvement from us (to make the UI widget understand the ISV solution's business logic), but accelerates time-to-market and makes everybody focus on their core competences.
We find this approach thought-provoking and are glad that we can deliver to it.