The Check License tool has existed for many years, and I wrote my first blog about it back in 2015.
You can read the original post here:
The check license is a small tool used for on-premise installations to show developers the object numbers that are included in the license and the version lists used in the solution and it gives the answer to the following questions:
- What extra object numbers are included in the customer license?
- Which add-ons are included in the license?
- What are the Version lists used by us and everybody else?
- But most important, which object numbers included in the license but are not used, and therefore are free for development in the different object types?
All C/AL developers have tried it; I have created a customization that is pure art 🙂
We send it to the customer.
He installs it in C/Side and BAM; Error message: the license does not give permission to execute the new objects.
Now we have to explain to the customer that he does not have enough free objects in his license to run the new customization and he will have to pay for additional objects to get access to the solution.
Kind of hard to explain to the common customer after you already quoted the solution, isn’t it?
Therefore, my highly skilled colleague Martin Jordt Hansen created the first version of this solution and allowed me to share it with everybody that read my blog.
So far so good.
Now, time flies and Microsoft have evolved Dynamics NAV into Business Central and extended the solution with a number of new object types:
- Table Extensions
- Page Extensions
- Report Extensions
- Enum Extensions
- PermissionSet Extensions
- Profile Extensions
Some of these are part of the objects that are limited by the license file and others are not. For example, all extension objects are not part of the objects in the license file. A small exception is in version BC14, where you must have access to table object the with the same number to be allowed to make the table extension object.
Previously, it was not hard to find the next number to be used in an object type. Open C/Side check the last number in the object type and pick the next number or check for a hole in the existing numbers.
Now, Microsoft have changed the naming convention of the object files to not include the object number. And even worse, they are now sorted by the name, which is great when you want to find all files relates to Sales, then you just move to S and check out the objects. Not so great when you are looking for the latest number for your object. The [Control] [Space] on the object number will help showing the latest number but that does not work in all solutions. More and more partners divide their objects in a folder structure that is related to the customization application areas, like:
Which is great right until they find out, that you cannot have multiple extension objects per extended object, which again means that all extension objects need to have a separate number series and they will cover all the application areas.
So, how do we get around that?
This is why, I have extended the check license pages to also handle the new object types and extension objects.
Another thing that we might miss is: are the new objects represented in a permission set?
All too often we implement the extension, but no one bother to make a Permission Set extension to cover the new objects or add them manually to the existing permission sets.
Therefore, I have included two tools here:
A possibility for filtering on all objects that are not included in a permission set (Blue rectangle) and two extra FactBoxes:
The System Permissions FactBox (Red rectangle) shows the permissions from the out-of-the box permission sets
The Tenant Permissions FactBox (Green rectangle) shows the permissions from extension or user permission sets.
The new Check License App
The app – because now it has been converted to an app – is available on GitHub right here:
This opens the License Permissions table filtered on:
- Execute Permission = true
- Object Number = 50000..99999
Both these filters can be changed.
Objects and extension objects are handled differently, because the extensions objects are not represented in the License Permissions table. This can be filtered with the ObjectType filter (Purple rectangle).
The red section gives information about the license and allows to switch between objects and extension objects. It also allows to show or hide the three different factboxes:
- System Permissions
- Tenant Permissions
- Version Overview
The green section allows filtering on each object type alone or in selections.
Here it is also possible to filter for only objects that are both represented in the License Permissions table and already exist as an object in the database – both C/Side and in AL. (Orange rectangle)
As a new feature, it is possible to filter for objects that are not included in a permission set. (Light Blue rectangle)
It also allows to override the object number filter. (Brown rectangle)
The blue section shows the object Number and name, the permissions for the object and if the object exists in the database. If the object exists, it also shows which app the object is created in.
The extension object page looks similar to the objects page:
In the filters, there are the different extension object types available at each version. E.g. BC14 will only support Page Extensions and Table Extensions.
The blue section shows the object Number and name, and which app the object is created in.
In the example above the page extension 50000 and 50001 are created using the design module in the web client.
GitHub holds two different batches:
- Master that supports BC19 with all objects and extension objects available in that version.
- BC14 that supports BC14 with a limited set of objects and extension objects
As usual this is provided with no warranty of any kind