New Tools More Fun!

Recently I have been tasked with updating Geoson Solutions very own Contract Management extension. This task required me to learn the new and exciting tool D365 Business Central (BC) and programming in AL.


Picking up a new tool can be a daunting task, but Sonny and Dawn provided me with several learning tools to help. I began with a course on Udemy [1], linked below, to help me quickly understand the basic UI aspects of D365 BC and how to make basic modifications directly within Business Central. Next stop was Erik Hougaard on YouTube [2]. He creates various D365 BC AL programming videos on assorted topics from basic customizations to OAuth verification and releasing an app to AppSource. I began following along with his “Getting started with Business Central AL Development” [3] video which functioned as a tutorial for setting up your programming environment and deploying an extension.

In the video, Erik recommends using VSCode, a text editor that allows you to get many extensions for all your programming needs. One of these extensions he recommended is the AL language extension which provides you with an AL SDK complete with tools for compiling code, deploying it to your web client, syntax highlighting, and more.

I personally recommend downloading another extension as well, that being the AZ AL Dev Tools. This extension allows you to view the contents of any symbols you have downloaded, including the base application symbols. This is incredibly useful in helping learn how existing functionality is programmed.

After Erik’s tutorial video, I then moved onto Microsoft’s AL learning resources to use one of their tutorials to build my own extension [4]. This method allowed me to only use the tutorial if I was lost while still providing me direction in terms of what the extension should contain. This covered assorted topics such as creating your own table, page, page extensions, code units, as well as how to release an update that overwrites parts of your extension (i.e. a name change). I encourage you to at least attempt this tutorial as it gives some hand on experience on a big chunk of the concepts that are unique to AL.

After all my training, I felt comfortable looking through our code to update our app. To begin, I wanted to launch the app on my sandbox environment. This required me to update the “application” and “runtime” properties in the app.json file to correspond to my current environment ( and 12.0 respectively). After making this change, I launched the app into my sandbox and began testing out the functionality. There was an issue with the verification of the user’s license which allowed them to continue to use our extension even when their license expired. Leveraging the existing table from the Spare Brained Licensing extension [5] we were using. This extension provided a page for users to activate licenses for extensions and check how long until their trial ends. Initially, this extension was used to verify the license, however, it was claiming the license was active after the grace period had ended and the user had not purchased a license. To resolve this issue, I created my own verification system leveraging the existing data in the Licensing extension. It manually checks if the license is active or if the license grace period has been exceeded.

After making these changes, I began to set up our digital signing certificate. After following the steps provided by DigiCert [6] and the Microsoft signing an AL extension [7], I was able to successfully sign our BC extension. Now I go through the lengthy process of publishing the application through Microsoft’s partner center.


[1] Business Central: The Ultimate Beginner's Guide | Udemy

[2] Erik Hougaard - YouTube

[3] Getting started with Business Central AL Development - YouTube

[4] Build your first sample extension that uses new objects and extension objects - Business Central | Microsoft Learn

[5] Spare Brained Licensing (

[6] Signer guide (

[7] Sign an app package file - Business Central | Microsoft Learn

Post a comment