Customizing Main Navigation of CRM 4.0 – Part1


While we’re posting the Channel9 videos, I thought it’d be good to get back to basics and show how we built some of the components in the demo. With CRM’s entity/relationship system under the hood, it is very easy to create "xRM" applications that looks completely different. For example in the screenshot below, to the left is the out-of-box UI and on the right is how you can modify it with simple customizations.

Crm4Navigation

We did a few things to the navigation here

  • Added additional navigation items like Time and Expense, Projects, Knowledge Center, etc.
  • Renamed Sales to Business Development.
  • Removed the out-of-box Resource Center.

Let us look at how a developer can go about to do these changes. There are couple of ways you can do that.

Changing Sitemap.xml

All of CRM’s main navigation is stored in this single file. The way you edit is you goto Settings -> Customization -> Export Customizations and export "Site Map". The sitemap will download as a compressed file and you can modify the .xml within to change the navigation as you like. The tool I commonly use is either Visual Studio 2008 or one of the advanced notepad editors like Notepad++.

Details on the SiteMap schema can be found here within the SDK. Most importantly, if you screw up the navigation,  check out this section on how to recover from errors. You have got to bookmark this. Trust me, I’ve panicked number of times without realizing I could recover.

However editing Plain Old XML (POX) is not a favorite thing to do. In the next part, let me show you a tool that simplifies this into a much easier process.

Comments (6)

  1. If you have tried editing CRM Navigation as described in part1 , you’ll be more than relieved to know

  2. In part 1 and part 2 of the navigation series, we saw how to customize CRM’s navigation. Custom navigation

  3. In part 1 and part 2 of the navigation series, we saw how to customize CRM's navigation. Custom navigation

  4. If you have tried editing CRM Navigation as described in part1 , you'll be more than relieved to

  5. John says:

    I have a ‘Role’ field on the Details tab of a contact.

    I have created some entities which are related to a contact but only if the Role = Employee.

    These entities are always visible in the main navigation if you view the contact details. How do I hide these entities if ‘Role’ field <> Employee?

  6. girishr says:

    John,

    Is Role an attribute within contact entity? If so, there are ways to hide the related information but you have to re-architect your data model to secure them.

    One idea I could think of to hide them is: instead of displaying the related information grid as nav. items, if you display them as tabs, you could write Javascript code at OnLoad event of contact to hide those tabs.

    Hope this helps.