Skip Navigation LinksHome > HQ > CRM Articles > CRM ISV XML

Editing the ISV.Config XML File

Microsoft Dynamics CRM 4.0

ISV Config Productivity Tip

June 4, 2009, by Bill Bonofiglo, Dynamics MCT

Abstract

An example of how to add a custom menu to CRM using Visual Web Developer Express 2008 to edit the XML file.

Getting Started

How do I edit the CRM 4.0 ISV Config XML file? This is a great question and hopefully you will gain some great knowledge from this article.

Editing the XML file can be a bit tricky at first. Here is an excellent resource to get you started (Edit Your CRM 4.0 Site Map) with the process. Keep in mind the ISV Config file and the Site Map are very similar and both share the same tools and somewhat similar schema for editing. What you learn from the Site Map article will apply to customizing the ISV Config.

Here is a good resource for the ISV Config file. If you are familiar with these files and tools, jump right in here.

Scope

To build and place a custom menu on the global Application tool bar next to Advanced Find.

Example

Main toolbar

Custom menu

Benefits

Save time, clicks and drill down time. Get to where you need to Customize very quickly without leaving the current "bucket" and keep the Navbar area free.

One click on "Import Customizations" gets you this:

Import customizations

One click on Contact > Form...

Sub Menu

And get this in a new window:

Contact Customization

I think you get the point of where the other menu shortcuts go. You can add to or modify my code to suit your needs. The trick to the ISV Config file is eliminating, or turning off, certain parts of it so all the Microsoft examples do not show (we will get to that shortly).

Drawbacks

Everyone sees it. Trying to control its rendering via Security Roles is simply not worth the effort (my opinion). However, each individual menu "link" is controlled by Security Roles. For example, if you do not have the privilege to "Export Customizations," clicking this link will simply load an access denied page. A little common sense and training could solve all this. "Hey, don’t worry about that button, it is for Administrators" may do the trick.

There are two semi work a rounds for this minor issue.

Work around 1

Simply have two ISV Config Files: 1) with the custom menu and 2) without it. When you get into "Customization mode," simply import the custom menu one, leverage your time and simply replace it with the other one when you are done. No kidding! It is 15 seconds worth of work. Then, Users will see the custom menu ONLY for brief periods or maybe not at all depending if they are using it at the time, refresh (F5) ect.

Work around 2

There is a setting (see image) that each Security Role has called "ISV Extensions." If this setting is not enabled (for any role) the User will NOT see any ISV customizations. I know what you are thinking. "I can just not allow certain Users to not see ANY ISV customizations at all." Fine and dandy if this customization menu of mine is the only one you will ever use. You are in business! However, the permissions are "all or nothing." Can’t pick and choose.

Security role

For example, I have included a custom button for the Contact form in my sample code (we will get there shortly, it is really cool). If you have Users with the Salesperson Security Role for example, and disable ISV Extensions, they will not see or be able to use the cool Google Maps button in a Contact form. They won’t see any at all. You prevented them from seeing the Customization button, but blocked them from things they should be able to use.

All in all it is not invasive to leave it for all to see but not use nor invasive to swap out two different ISV Config files when diligently customizing. Turning off this feature via a Security Role is only good if it is the only ISV Config customization and that may work. However, I encourage all of you to take advantage of adding a Custom button that launches Google Maps or whatever suits your needs.

It is worth the effort and you can leverage the CRM Application.

Future Possible Change CRM 5.0

Keep in mind there is the "Privilege" attribute in the Site Map entity that allows a degree of control over who sees what link based on Security settings. We may see this control in the next version for the ISV Config file, so let’s not dwell on it. Move on I say!

This is for CRM Online

This XML file and customizations were done in CRM Online. I am confident the main difference between the On Premise and CRM Online is the first line of the file. However, the schema are the same. Familiarizing yourself with the schema and a bit of copy and paste can go a long way to clear any difference up.

IMPORTANT SAFETY TIPS

1) "Disaster recovery" URL:

http://CRM_Servername/Organization_name/tools/systemcustomization/
ImportCustomizations/importCustomizations.aspx

In the event you blow up either the Site Map or ISV Config file, you can use this URL (change server and organization name to yours) and open the import customization page in IE and import the working backup file you will make next.

2) Export your ISV Config file and save it as a backup. You can import it back easily if you need to and it serves as a restore point. Make a copy of it, rename the copy, and work with that one.

3) If you have never enabled the ISV.Config file, do so. Go to Settings > System Settings > Customization tab. In the "Custom menus and toolbars" section, click the ellipse button and choose all the Clients you want any ISV customization to show up in. I choose all of them:

Web Application;Outlook;Outlook Offline

System Settings

HOWEVER, maybe just enable the "Web" part to get started. You will see why this may be a good idea next.

4) If this is the first time you have enabled it, hang on for a bit of surprise. Every single example Microsoft has programmed into the ISV Config file becomes enabled. Look around. Check out the Account form etc. This is a great way to see how the file works. Investigate. You have not hurt a thing. All you have to do is clear all the choices you made in Step 3 and you will disable the ISV Config file again.

5) You need to edit the ISV Config file so ALL the examples do NOT show. The theory is to "trim it down" and simply add the elements you wish to show when it is enabled. You have a backup, so we can get aggressive. I use a combination of "commenting out" certain code (leaving it for example or future use) and outright deleting certain areas, or nodes. The trick is to trim the file down eliminating all the examples from showing and importing it back in successfully. Say what?

I am almost snickering thinking of how much trauma it would have saved me for this advice when I fist edited the ISV Config file. I learned the slow, painful, hard way. But you, can now benefit by missing "all the fun" I went through.

You’re killing me Guy!

Fork over the code! All right I say. You understand the process and that is enough. It is time for a "Ninja shortcut!" You can use Microsoft Visual Web Developer 2008 Express, XML NotePad or just plain NotePad. However, I recommend Microsoft Visual Web Developer 2008 Express as described in the Edit Your CRM 4.0 Site Map article.

Keep in mind, to simply take a peek, clicking the code link below should launch you into IE where you will get a good look at it color coded and all. Right clicking the link and choosing "Save Target As…" will allow you to save it to your hard drive.

Get Code Here

IMPORTANT

You must edit ALL the URLs in the ISV.Config file for the Customizations Menu only.

YourDomainNameHere.crm.dynamics.com is for CRM Online. Simply replace "YourDomainNameHere"

Example URL from the file

https://YourDomainNameHere.crm.dynamics.com/tools/systemcustomization/
systemCustomization.aspx?pid=01

On Premise Users simply replace it accordingly.

Check out the XML code. You are welcome to use it as "your" starting point. If you have CRM Online, you can import it in as is. Instant gratification and what a head start.

If you have On Premise CRM, either modify the first line (declaration line) and what else may be required (you may have to use your new knowledge and "trim it down"), or simply copy and paste the modified code into the right node after trimming. I DO NOT recommend importing the CRM Online version into On Premise (probably get an error preventing it anyway).

Bonus

Please notice the button I created for the Contact entity. I left it in there so you can see an example of a new button added to the Contact. It is very cool to have the address passed to Google Maps and a new browser open up with just a click! This is another huge productivity trick worth doing. This CRM Ninja tactic is fully functional on my CRM Online deployment and maybe we can save that blog for another day.

Thank You

Bill Bonofiglo
Dynamics MCT / MCP / CIS Instructor