Tag Archives: menu

Suppressing CRM Menu Items Based on Privileges

Your first step to simplifying your CRM menu for your users should be to configure security roles that grant READ access to only those entities your users will be working with.  

e.g.. take away their permissions to the CASE entity and like magic no more CASE menu item…

Now, this approach only gets you so far.  For example you will find you have to give users READ permission to Users and Business Units and as a result the Settings and Administration menus remains visible to them.   And you might find you don’t want something like Competitors showing on the menu but you do want users to be able to specify against their Opportunities when they are closing them.

Microsoft have given us a a tool that helps us here – in the Sitemap definition we can add privilege checks to individual menu items.   The privilege check looks like this:

I have highlighted in yellow the section of the Sitemap that defines the Competitor menu item.   Inside the red box is the privilege check.  The addition of this line instructs CRM:  “hide the above menu item unless the user is assigned a security role that gives them CREATE permission on the COMPETITOR entity”.

So, once you’ve trimmed back security roles have a look at what your users are left with and where you want something visible only to your super users ask yourself “what permission do my super users have that my normal users don’t?” and add the corresponding privilege check.

Some examples:

– If Queues are used for Case assignment by team leaders, and your standard user does not have permission to assign Cases then add a privilege check to the Queues menu item based on the ASSIGN permission to the CASE entity.

– If you don’t want the SETTINGS menu to appear then you can hide it using this approach but you will need to add the privilege check to each menu item that is appearing under the SETTINGS menu.  Consider adding a privilege check to each menu item that references the CREATE permission on the USER entity.  This will hide the entire Settings area from everyone except those users who are allowed to create new users.

– In the below example Marketing menu items are each given a privilege check:

Now, if you are struggling to pick a permissions test that will work for you, consider creating custom entities just to support this approach.  For example, create a new entity called HiddenMenu and ensure the security role your senior management users are assigned includes READ permission to this entity.  Then, in your Sitemap file go to each menu item that you want available only to those senior management users and add a privilege check that requires the user has the READ permission to the HiddenMenu entity.   Easy 🙂

Flattening the CRM menu

CRM ships with Sales, Service and Marketing menus to provide a bit of structure and organisation to the menu.  This helps the user experience when your users work across major functional areas and need to be able to work with a wide range of CRM entities.

However, if your use of CRM is focussed on a handful of key entities then you might find this menu design a little cumbersome.   You might find that you mainly work in Sales but there are somethings you have to go to the Workplace.   Jumping between menus can get a bit tiresome and users can get a bit annoyed by not knowing where to look. 

I’ve found that the user experience can be significantly improved by flattening the CRM menu.  In simple terms, you do away with Sales, Service and Markeing and place the menu items that are relevant to your organisation all in the Workplace menu.    One menu, all your screens, your users will love it.

Take the CRM menu from:


Here’s how…

1. Open your exported Sitemap file in a text editor

2. Comment out whichever of the Sales, Service and Marketing areas you don’t want displayed

a. Hint: to comment out XML content you add <!– to start suppressing lines and end the suppression with –>.

b. For example: the entire highlighted section below has been commented out. Note the <!— on the first line and the –> on the last line.

3. Find the menu items from within the Sale, Service and Marketing areas that you want relocated to the Workplace menu and copy and paste those lines to that menu area. Keep in mind these features of the sitemap:

a. Each menu item is listed in the SiteMap as a SubArea node.

b. Subarea nodes may be one liners in the SiteMap or if they have a privilege check specified against them they will span more than one line. Be careful when you copy and paste to make sure you copy the entire node

c. When pasting into the Workplace pick carefully where you will place the menu item

· The Workplace menu (perhaps a little confusingly) has Sales, Service and Marketing sub-menus underneath it.

· Users’ can choose to have these display in their Workplace or not (via their personal options).

· If you want to this option away from your users you can do so by removing the IsProfile=”true” setting. Or, create your own menu groups and place your menu items in those groups.

Adding menu items for specific views

Here’s how to add a menu item in CRM to a specific view – e.g. a “Closed Opportunities” menu item that when clicked takes the user to the Opportunity view has the Closed Opportunities view displayed rather than the default view.

Here’s a screenshot where I’ve added a new menu item to a custom view of Hot Opportunities for my sales managers:

1. Determine the URL of the view you want a menu item for, by using CRM’s Copy Link feature. E.g. If you want the URL of the Closed Opportunities view:

a. Go to the Opportunities list view and select the Closed Opportunities view from the View dropdown

b. From the More Actions menu select: Copy Shortcut à Of Current View

c. Open Word or Notepad and from the Edit menu select Paste

d. This will give you something like this:

Closed Opportunities


Note: there are 3 ‘layers’ to this URL:

– The first section of the URL provides the address to your CRM system,

e.g.: http://gtapp3/CRMArchitects/_root/homepage.aspx?etc=3&viewid=%7b00000000-0000-0000-00AA-000010003006%7d

– If we just launched this URL then CRM would open and the default entity view would appear.

– We don’t actually need this part of the URL, the Sitemap will add this for us if it is not present and it is better to do this as the sitemap will then be able to deployed to other environments.

– The second part is the URL provides the address to a specific entity’s list view,

e.g.: http://gtapp3/CRMArchitects/_root/homepage.aspx?etc=3&viewid=%7b00000000-0000-0000-00AA-000010003006%7d

– If we launch this URL then CRM would open and the entity specified by the ‘etc’ parameter would be displayed. The default view of that entity would be displayed.

– The 3rd part is an optional parameter that will allow a specific view to be displayed (it refers to the unique GUID assigned to the view):

e.g.: http://gtapp3/CRMArchitects/_root/homepage.aspx?etc=3&viewid=%7b00000000-0000-0000-00AA-000010003006%7d

– This is what we wanted. Now we have a URL that once pinned behind a menu item in the SiteMap will allow our users to have one-click access to a specific view.

– Given we don’t need the first part of the URL, the URL that we want is:


But there’s a trick required here, because our URL has a & in it we have to do one little fiddle. Replace that & with &amp;

e.g.:  /_root/homepage.aspx?etc=3&amp;viewid=%7b00000000-0000-0000-00AA-000010003006%7d

Now you may have hit an issue back when you tried to copy the shortcut to the view.

– CRM does not always let you copy the shortcut of a view, sometimes you will be told “Shortcut for the selected view is not available”. I think you get this on the ‘My’ views – e.g. “My Opportunities”, “My Appointments”.

– I’m not sure if you can get around this by having a look in the database and determining the GUID of the view and then building the URL up from that.  That might be a solution.

– When I hit this limitation, I was able to get around it by making the view I wanted the default view for the entity. I then used a less specific URL, e.g. http://gtapp3/CRMArchitects/_root/homepage.aspx?etc=3 which would just takes the user to the entity’s list view, where my view shows by default. Of course you won’t always be able to solve this limitation this way.

Back to the sitemap…

2. Add a new SubArea node for your new menu item, e.g.:

<SubArea Id="nav_closedopps" Entity="opportunity" Title="Closed Opportunities" Url="/_root/homepage.aspx?etc=3&viewid=%7b00000000-0000-0000-00AA-000010003006%7d " />


– The SubArea ID is something you make up. It must be unique in your sitemap file.

– The Title is whatever you want displayed on the navigation menu.

– The URL is where you paste your URL (remember to drop off the prefix)

4. That’s it! Now, import your sitemap and then refresh your browser and you should see your new menu item.

Modifying the CRM Navigation Menu

The CRM navigation menu is customised via editing the SiteMap XML file that is stored in CRM. To access this file you export the SiteMap via: Settings – Customisation – Export Customisation


Once exported you can edit the SiteMap in Notepad, or an XML editor or better still in Visual Studio. But Notepad will do the trick.

There’s already plenty of useful instructions out there for editing the SiteMap so if this is all new to you then you should start there. I recommend: http://msdn.microsoft.com/en-us/library/dd393294.aspx

The end result can be a personalised, streamlined menu with instant access to key functionality and no clutter.   Here’s a few tweaks that might give you some ideas:

In my next few blogs I’ll show you how to achieve some of the above customisations.