A question I recently got asked was ‘Is there an easy way to grant access to different modules in the navigation within D365FO?’ I wanted to show how this can be done and provide some resources to hopefully help out!
How is the Navigation Access Decided?
Which navigation objects a user sees within D365FO is directly related to the menu items the user is assigned as the entries in the navigation are menu items (displays, outputs, and actions). You can validate this by clicking on a navigation option, seeing which menu item is being utilized, and then assigning or revoking this access to the user and seeing their navigation change. For example, if we navigate to the All Customers page at Accounts Receivable -> Customers -> All Customers:
We can determine the menu item controlling access to this form by a couple different options:
1) Looking in the URL
2) Right Clicking in the form -> Form Information (need to be assigned SysAdmin for this to work)
In this case we can see that this navigation entry is tied to the CustTableListPage menu item display.
Multiple Navigational Routes
Sometimes a menu item has multiple ways to get to it via the navigation, for example the ‘All Customers’ form can be reached by either:
- Accounts Receivable -> Customers -> All Customers
- Retail and Commerce -> Customers -> All Customers
- Sales and Marketing -> Customers -> All Customers
So how does D365FO handle situations like this? When this menu item is granted at least one of the following navigational paths is presented to the user, which one(s) will be presented will depend on the combination of other menu items being granted to the user. We will look at this more in depth in the next section.
How the navigation is arranged is actually decided by Microsoft dynamically based on the user’s access and is not something that an end user can change. This can sometimes become an issue, lets look at four different examples to see how granting access can change the navigation significantly.
- Scenario #1 (red) – Granting access to All Customers entry found in the Accounts Receivable -> Customers -> All Customers area
- Scenario #2 (yellow) – Granting access to all menu entries in the Customers area (All Customers, Customer On Hold, Customer Past Due, Customer Unmerge)
- Scenario #3 (green) – Granting access to all menu entries from scenario #2 and adding in All Sales Orders
- Scenario #4 (blue) – Granting access to all menu entries in scenario #3 and adding in All Free Text Invoices
Scenario #1 – Granting access to All Customers entry found in the Accounts Receivable -> Customers -> All Customers area
Granting access to just the CustTableListPage menu item display does indeed grant access to the All Customers entry but not in the Accounts Receivable module. Instead it shows up under the Retail and Commerce module.
Scenario #2 – Granting access to all menu entries in the Customers area (All Customers, Customer On Hold, Customer Past Due, Customer Unmerge)
Granting the additional access to the other menu items in the Customers area from above (All Customers, Customer On Hold, Customer Past Due, Customer Unmerge) does not add any additional navigational entries.
But you can still navigate to these forms manually by via URL.
Scenario #3 – Granting access to all menu entries from scenario #2 and adding in All Sales Orders
Add in the All Sales Orders menu item causes a couple other modules to show up (Revenue Recognition and Sales and Marketing). We can see that in the Sales and Marketing module the All Customers entry is available here as well.
Scenario #4 – Granting access to all menu entries in scenario #3 and adding in All Free Text Invoices
When we add in the All Free Text Invoices all of a sudden the Accounts Receivable module is available for navigation and looks to be in the correct layout as well. I am not sure why I had to add all of these for the Accounts Receivable module to show up.
I went through the above example to show that even though you might be granting access correctly, sometimes the navigation for a particular object may show up in a different module or may not even show up at all even if the user has the correct security.
Resources to Help
So you may be wondering how I was able to determine which menu items to assign in my above examples? There is a parameter on all menu objects that lists the navigational path for that particular object, if we combine this with the menu item metadata we can generate a report that looks like this:
This is the output I used to determine which menu item is tied to which navigational entry. It shows the menu path and the menu item that is used to control access to object in the navigation. I am going to make the Excel file I used available publicly here (this was built against a 10.0.26 environment): D365FO Menu Paths