If was just taking a closer look at the different standard Extensions, coming with Dynamics 365 Business Central. They have become much more interesting, now that our Danish localization's are shipped as Extensions.
When taking a look from inside the client, then we get this view:
It's listing the Danish localization and other extensions.
I then used PowerShell and use Get-NavContainerAppInfo to see the actual list of Extensions in my container.
PS C:\Windows\system32> Get-NavContainerAppInfo -containerName N12-21229-findk | format-table -Property Name, Publisher, ExtensionType, Scope Name Publisher ExtensionType Scope ---- --------- ------------- ----- Payment and Reconciliation Formats (DK) Microsoft ModernDev Global _Exclude_Late Payment Predictor_ Microsoft ModernDev Global Microsoft Pay Microsoft ModernDev Global _Exclude_ClientAddIns_ Microsoft ModernDev Global Tax File Formats (DK) Microsoft ModernDev Global WorldPay Payments Standard Microsoft ModernDev Global PayPal Payments Standard Microsoft ModernDev Global Essential Business Headlines Microsoft ModernDev Global OIOUBL Microsoft ModernDev Global _Exclude_AnonymizedDataSharing_ Microsoft ModernDev Global Sales and Inventory Forecast Microsoft ModernDev Global Payroll Data Import Definitions (DK) Microsoft ModernDev Global C5 2012 Data Migration Microsoft ModernDev Global
I first noticed this a couple of months ago after NAV 2018 was released and didn’t really think about it until now. It's not in the "regular" NAV, only BC.
Besides all the Extensions we can see in the Danish BC version, then there are three Extensions all starting with _Excluded_.
I’m pretty sure that we all can think what an extension called something like _Excluded_AnonymizedDataSharing_ could be, most apps have some kind of data sharing. I’m sure it’s harmless, but I really would like to see the source code for this extension. I would like to tell my customers, exactly what is running on their data. I am sure all customers and partners agrees.
The actual Extension .app files are also included in the Docker container, so it’s not that they are trying to do a lot to hide anything. Have not tried to debug the system to see what it’s actually doing, unless that part is also excluded.
The NAV 2018 releases used to have the source code, at least for some of the extensions on the DVD. But I would really like to see the source code for all the Extensions I recommend to my clients. When it comes to some of the Danish localization's, access to the source code is very important, as Microsoft’s way to do it often is different from the way many customers use it.
Yes, you can use the same “trick” if you have Extensions your customers/users should not be able to see. Or remove. Because that is really the only reason I can see, why they would want hide some extensions from the list in the client.
And for that purpose, then I can think of a couple of usages of this, especially with global implementations. Extensions which even the local admin/managers should not be able to remove.
It’s very simple to do.
When you name your extension, just make it’s name start with _Excluded_YouExtensionName.
Easy to test if you use the build-in designer. You will notice that it will no longer be visible in the client. But if you list the actual extensions installed with PowerShell, then it will include your _Excluded_YouExtensionName extension
The remaining question is now, how can I download the source code for the extension I just have been hiding? Or can I somehow make it visible again?
May you have a nice Easter, go find some eggs with your Kids, if you have any! If that is not something you "observe", then please still have a nice weekend, when you come to it.
I saw some of the extensions after NAV 2018 came out. I hope what we saw on the DVD was not the actual objects. They almost looked like they just copied the code from C/AL and Txt2AL.
You can also get the code directly from the extension. Just unzip it with WinRar.
The Extension currently only contains the preliminary steps which enable a notification showing once you in a non-demo company have at least 50 CustLedger or 50 GLEntries or 50 Item Ledgers. Then you are prompted to allow it, and your choice is stored in a table. I guess the actual sharing is not made yet or is done directly from the DB ignoring AL.
You can get the code using ForNAV Modern Object Explore, and please do. I'm sure you will also be surprised by the quality of the code :-)