Way back in 2004 at Microsoft we had a project running called Elba. The goal of it was to release a wrap pack version of NAV (or Microsoft Business Solutions-Navision as it was called in those days) and was popularly known as Navision Light. Now with NAV 2015 Easy to Use pillar this project came to my mind again. Back then one of the attempts to get Navision lighter was to 'wipe out' needless UI elements with respect to the Elba user license, which obviously would have been much more restricted than the average user license used to be in those days. The thought up technical solution was to process all forms based on this Elba user license in such a way that all these needless UI controls would be removed from the object when building the application. Hence the eventual form objects would often be much lighter than their original version. In a way it resembles the UI Elements Removal feature that NAV 2015 entails even though they are technically totally different.
But before elaborating further, I first should confess that I somewhat have been sleeping since NAV 2013 R2 was released as part of this feature was already implemented in it. [H]
Nevertheless, now in NAV 2015, this has been extended. So what is this UI Elements Removal feature about? In a nutshell you could say that any UI element that accesses an object that your license or your role permissions do not grant you right to, will not be shown to you. This might be a field, an action or a page part. When rendering the UI this element will not appear on screen. Note that there are various facets to this 'story':
- Those UI elements that have an implicit relation to an object outside your license will be removed on the fly; for example fields that reference an outside object by means of a TableRelation or a FlowField CalcFormula (already available on NAV 2013 R2)
- But as developers we can now also set up a relation to such an outside object by means of the new AccessByPermission property, which you would typically use for UI elements that do not have an implicit relation or to overall such an implicit relation (like in the case of the Shipping Agent Code on TAB18 as shown in the following screen shot); note that the UI element will be removed if the user does not have permissions to outside object as specified in the Access By Permission window
- In conjunction with the above the eventual result is determined by the mode the application server is running. On NAV 2013 R2 it was the RemoveUnlicensedUIElements key of the server that enabled you to turn it on or off. With NAV 2015 this has been replaced by a new key:
<add key="UIElementRemovalOption" value="LicenseFileAndUserPermissions" />
I guess the three options are self explanatory, but let me be somewhat redundant. When running the server …
- in the standard mode (i.e. with option LicenseFileAndUserPermissions) a UI element is removed if the related object is not included in the license file and the user does not have permissions to the object as defined in the AccessByPermission property
- with option LicenseFile a UI element is removed if the related object is not included in the license file
-
with option None all UI elements are displayed
Notes
- When configuring pages, make sure that the UI Elements Removal field is set to its default (i.e. LicenseFileAndUserPermissions) so that you only see the relevant UI elements shown in the Customize window
- In the same manner make sure, when developing, that the UI Elements Removal field is set to None so that all UI elements are visible when you review the UI
You know …
… even thought at first Elba looked promising it was 'killed' way before it even got to the market (by Microsoft's current CEO Satya Nadella). Some years later Entrepreneur suffered more or less the same fate.
[added the day after]
Now rereading the full post I was somewhat wonder-struck by the last paragraph as I now read it as a kind of premonition. NAV 2015 might go the same way. Ouch, no. Surely not. I think NAV is better shaped than ever. I guess some kind of old bewilderment just popped up. [:#]
As NAV 2015 is not released yet, i unfortunately do not have a customer license, so I couldn't check all details myself. One thing I am particular curious about is how conditional table relations are handled …
Hope to check and find out later.
I guess I still cannot compete in naggyness with you 😉