The product that used to be called Microsoft Dynamics 365 for Finance and Operations (I truly don’t know how I should call it these days) allows defining security elements both by developers (delivered together with code) and by power users though GUI (stored in database). You may have a need to work with security objects in code and you want to get information from both sources. An API providing a unified view would be handy.
I’m not going to cover it in detail, but let me show you an example: an iteration of security privileges and getting information about security permissions contained in privileges:
public static void main(Args _args)
var privilegesRepo = SysSecurity::GetSecurityRepository().Privileges;
var privEnumerator = privilegesRepo.LoadAll().GetEnumerator();
Privilege privilege = privEnumerator.Current;
setPrefix(strFmt("Privilege %1", privilege.Name));
var grantEnumerator = privilege.ActionMenuItemGrants.GetEnumerator();
MenuItemGrant grant = grantEnumerator.Current;
info(strFmt("%1 (%2)", grant.Name, grant.Grant.ToString()));
Apart from ActionMenuItemGrants, there are also DisplayMenuItemGrants, OutputMenuItemGrants, DataEntityGrants, ServiceOperationGrants and DataModelGrants.