Thursday, May 19, 2011

Customizing BasicHomeTab



So I've been banging my head against the wall trying to figure out how to add a button to the BasicHomeTab in CRM 2011. And if you googled around, you aren't going to find many samples out there. Finally I had a Eureka moment!


I decided to do a blog post to help the masses out there.

First thing you should do is create a new solution in CRM 2011. Once you have created it, you should add existing "Application Ribbon'. This will pull in your instance's application ribbon into your solution. Save your solution. Then export the solution. You will obviously save it to somewhere on your machine that you can get to. Unzip the file.

You will have 3 XML files and a Web Resources folder to where you unzipped it. Open the Customizations.xml file in VS2010 or any text editor (e.g. Notepad)

What you are looking for is CustomAction node.

So here is a quick sample I whipped up.



Save your Customization.xml file once you have the right nodes updated with the above. Take all 3 XML files and the Web Resources folder, and zip it back up. Import back into CRM 2011. Publish all Customizations. Refresh your browser window once it is done. Go to Resource Center or any non-CRM sitemap link you have. And there you have a button.

Now if your goal is to have that button everywhere. You will need to add a button to the Location of Mscrm.HomepageGrid.{!EntityLogicalName}.MainTab.ExportData.Controls._children. And make sure the Sequence number is greater than 70. This will put the button after the Advanced Find button. Also important is the TemplateAlias. TemplateAlias should be o3 for entity ribbon adds instead of isv.

Enjoy!





Monday, April 18, 2011

The easiest option is sometimes not the best.

In my years of CRM, the one thing that makes me cring is the dreaded optionset (picklist) field. What's so bad about it?

It always starts off with a set number of choices. Then you get requests to add more options. Or worse, add the dreaded "Other". "Other" then requires another field to store that value. Now you must be thinking...how many times has this guy faced "Other". But the truth is that I've learned to ask specific questions during the requirements phases of a CRM implementation. "Other" brings chaos. Users will put all sorts of garbage in that Other field. Where this all becomes any issue is if you have to do any reporting and aggregation on that field. Then everyone looks at the "Other" field and want to add that to the list of options. It's a cursed cycle.

While in CRM 2011, optionsets are much more flexible with global usage options. I am still partial to using a little Javascript to account for impending "Other". I take a standand CRM text (navchar) field. Add on a webresource with a script that transforms the text field into a picklist OnLoad of the form. One field...multiple options, and you could even have the user to select "Other", and the text field would reveal itself. I've even been asked to only show existing values of other records as options.

There is always another way to skin a cat, but then you have a bald cat.