Customize Microsoft CRM 3.0 Tool Bar By Adding A Custom Button

After my last post, I had a few inquiries as to how to customize Microsoft CRM 3.0’s tool bar. So in this post I will walk through all the steps necessary to accomplish this.

I will use the “Quick Email” example/code from my last post. (Send Emails to Deactivated Leads Without Needing to Activate Them First)

High level steps:

  1. Add a new website for the button. We will create a website called QuickEmai. PLEASE NOTE: You can always add your web page created in the next step in the ISV directory. This post will show an alternative.
  2. Place the code inside an html page and place the html page in the QuickEmail directory/website.
  3. Edit the isv.config file to add the button to the Lead form Action Tool Bar

Add a new website:

Please NOTE: You can always install your web page in the ISV directory. However, we will create a directory; best to create it under C:InetpubCustom

Start IIS Manager (Internet Information Services Manager)

IIS Manager

Expand the node that is the Local Computer.

IIS Manager

Right click on “Web Sites” and create a new “web site”. This starts the Web Site creation wizard.

First screen asks you to enter a description.

Second one will ask you enter the port number. Choose a port number you know is not being used:

Web Site Creation Wizard

On the next screen put the full path to the directory we created in Inetpub. At this point if we had not created the directory, we can create it.

Web Site Creation Wizard

Browse For Folder

On the next screen if you are doing more than a read, then check other items. For example if you are going to run a script (such as ASP), then check “Run scripts” as well.

Web Site Creation Wizard

Ok you are done. All you have to do now is to restart IIS.

Place the code inside an html page and place the html page in the QuickEmail directory

You can get the code form the previous post. (Send Emails to Deactivated Leads Without Needing to Activate Them First)

Place that code inside an html file: QuickEmail.html

Place QuickEmail.html file in C:InetpubCustomQuickEmail directory


Edit the isv.config file to add the button to the tool bar:

Since this button is only relevant to a Lead record, we will place it on the Lead Form’s Action Bar

TEST QuickEmail

Next we will edit the isv.config file. For obvious reasons, please make a copy of this file as a backup before you edit it.
You will find this file under “_Resources” directory of you Microsoft CRM 3.0 installed directories. For one of my customer’s implementation it is located:


Edit the Microsoft CRM 4.0’s isv.config.xml file as follow:

In the file

  • Expand the <Entities> node
  • Expand the <Entity name=lead> node
  • Expand the <ToolBar ValidForCreate=0 ValidForUpdate=1> node

Place the following line under this node:

<Button Title=Quick Email ToolTip=Send Email to a disqualified Lead without needing to activate the Lead first Icon=/_imgs/ico_16_138.gif Url=/QuickEmail/QuickEmail.htm Client=Web,OutlookWorkstationClient PassParams=1 WinMode=1 WinParams=menubar=no,status=yes,toolbar=no,width=600,height=350 AvailableOffline=false />

Here is a partial view of the file:

Microsoft Visual Studio

Save and close.

Refresh Microsoft CRM 3.0.

Check this capability by opening a Lead record to see the button you just added.

Microsoft CRM Consultant
Unitek Microsoft CRM Services

Unitek’s New Free Microsoft CRM Add-on!

Unitek’s Microsoft CRM Training Team is pleased to announce that we have a new product for CRM 4.0 that we’re giving away! The add-on, Quick Activity, can be downloaded from our site here: Unitek Microsoft CRM Add-On

Quick Activity allows users to add History records with just a couple of clicks. It’s a nice alternative to the existing CRM activity, saving a few clicks per activity and quite a few clicks per day!

Come back to our blog soon and we’ll provide you another method of using the Quick Activity from the entity grid. This will let you create history records for an item without actually opening the record!

Send Emails to Deactivated Leads Without Needing to Activate Them First

It happens often that a sales rep wants to send an e-mail to a lead that has been deactivated and they either don’t want to or don’t have the permission to activate the Lead. As you know once a Lead record is deactivated you cannot log an activity against it including sending an E-mail.

As a CRM consultant, recently I had a client request to provide a way for their sales rep to be able to send Emails to deactivated Leads. What follows is the steps required to make this happen.
The solution involves providing a button on the Tool Bar of the Lead record. This button once clicked will open up an E-mail activity record for the deactivated Lead.

This blog entry assumes that the reader already knows how to customize the Tool Bar by adding a custom button. If you don’t know, please let us know and we will provide the instructions.

Here is the custom code to accomplish the above:

Two points to remember:

  1. Please know that copying this code as is might be problematic with the use of quotations. Once you copy the code, you will need to go through and replace the single and double quotes using your keyboard.
  2. In http://crmsvr/activities/email/edit.aspx?pId=, you have to replace “crmsvr” with the name of your Micorosft CRM server.


<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “”>

<html xmlns=”” >


<title>Quick Email</title>



<h1 align=”center”>Please Wait</h1>

<script type=”text/javascript”>

var oOpenLead = window.dialogArguments;

var oLead = oOpenLead.document.crmForm;

var FirstName = oLead.firstname.DataValue;

var LastName = oLead.lastname.DataValue;

var GUID = oLead.ObjectId;

PA =“http://crmsvr/activities/email/edit.aspx?pId=” + GUID +“&pType=4&pName=”+FirstName+“%20”+LastName+“&partyid=”+ GUID +“&partytype=4&partyname=”+FirstName+“%20”+LastName+“&partyaddressused=&contactInfo=”,,‘menubar=0, status=1’);





Microsoft CRM Consultant
Unitek Microsoft CRM Services

Using Scribe to Import Zip Code Fields

If you’re a Microsoft CRM Consultant and ever needed to work with Microsoft Excel for cleansing data you’ve probably encountered the unwanted formatting of certain characters like leading and trailing spaces, and more to the point, leading zeros. Of course any Office guru can remind you about the ‘special’ formatting on cells in excel like ‘zip code,’ but what if your experience in excel is just one stop in your data cleansing experience, and you don’t plan on using excel as the data source?

If you’re using Scribe as an ERP migration/integration tool like Unitek Consulting does, you’re probably in the habit of opening the .csv file to make sure your formatting kept the leading zeros on your zip codes intact – but of course excel does not store cell formatting changes in .csv files so you won’t see your leading zeros.

So let’s say you don’t open that .csv file, and use it as a source for your Scribe import (Scribe has an Excel Driver, but you can’t run SQL queries for your pre-operation step controls or data translations) without opening the file in Excel – you STILL don’t see your leading zero!
The problem there exists when your ODBC driver fails to capture the leading zero because it would rather see a VARCHAR field…

Force Scribe to read your zip code fields that only have 4 characters by using the following formula expression:

IF( LEN( S1 ) < 5, SUBSTITUTE( PAD( S1, “R”, 5), ” “, “0”), S1 )

Where S1 is your zip code source field.

Please note that this is only one of several solutions, but if you are in the Scribe Workbench you can avoid lots of data cleanup in various other applications.

For more information about working with .csv files converted from Excel, please visit: Creativyst Docs.

Happy Migrating!!

Microsoft CRM Consultant
Unitek Microsoft CRM Services

Resolving Multiple Default Public Views In Microsoft CRM 4.0 Using A Supported Method

Hello fellow Microsoft CRM 4.0’ers – today’s blog entry involves an issue that at least 3 implementations that I’m aware of are suffering. This issue sometimes appears when you import customizations and subsequently attempt to change the default public view for that entity.

In this scenario, I’ve renamed the “Accounts” entity to “Company” (a common customization) and according to the business requirements I attempted to change the default public view to “Active Companies.”

When this is completed we see two default public views for this entity: Read more

Read, Query & Update Field(s) in Other Microsoft CRM Entities Inside OnLoad, OnSave and OnChange Events Using Jscript

It happens often that you would want to access/update fields of other entities using jscript from either OnLoad, OnSave or OnChnage events. Here I am using SOAP calls to make this happen.

As a CRM consultant, recently I had to do a project that required using a read, check and update SOAP calls. I will provide a very simplified version of this project for this blog entry.

Company X sells widgets and not only they want to keep track of who they sell these widgets to but also they want Microsoft CRM to automatically generate a Serial Number each time they create a new widgets record. To keep it simple, we will use a simple Serial number format: WID1000 would be the first Serial number; WID1001 would be the second, WID1002 the third and so on.

Created a new custom entity named “Widget”. Related it to Account entity with a Parental relationship (Account being the parent). Created an attribute for the Widget entity and named it WidgetSerialNum.

Created a new custom entity called Counter to hold the next available counter value. Added three attributes to this entity:

  1. “ItemType” to hold the type of the item we would want to create serial numbers for. In this scenario there is only one; Widget. The value is “Widget”
  2. Prefix set to “WID” to hold the Prefix for the serial number
  3. Countervalue set to 1000 to hold the next available counter value

Placed the following Code in the OnSave event of the Widget entity. All the instructions are part of the comments so you can just cut and past the code.

Read more

The Short & Skinny On Deleting Upgraded Entities In Microsoft CRM 4.0

If you are planning an upgrade and have considered the enhanced functionality with the new N:1, 1:N and N:N (Many to Many) relationships, you may be re-working some of your entities in the new Microsoft CRM 4.0 deployment, or you may just be cleaning up unused custom entities from your initial Microsoft CRM 3.0 deployment. We were excited at the flexibility in Microsoft CRM 3.0 with the many to one relationship creation and the platform’s protection and involvement in that process, but in many cases the creation of custom entities was over-used in Microsoft CRM 3.0 so we have some clean-up to perform.

If you plan on re-working some of your entities to take advantage of the new Many to Many capabilities, you may be removing some of your entities and consolidating them in Microsoft CRM 4.0, so it may save you some time to move the data from the re-purposed entities and delete them in Microsoft CRM 3.0 before you upgrade because when you go through the upgrade process you’ll have to consider removing references to your related entity from all your column views in the primary entities as well as the filter criteria.

Read more

Improving The Default Views In Microsoft CRM 3.0 & 4.0 – Part II

In one of our previous blogs we gave you the instructions to change the Default Views in CRM. Today we’ll discuss making another change to Views that is a simple change but the effect is powerful.

While viewing the History of an Account, Lead, Contact, etc., the default view in the History grid is missing an important column, Description. The Description field contains the details of the phone call, email, etc. This forces the users to open the activity record so they can read the full content of the record. For new CRM implementations, users can get quite frustrated with all these clicks (a double click to open the record, a single click to close the record). What we’re going to do is add the Description field to the views so that we can reduce those clicks.

In CRM 3.0 or CRM 4.0, go to Settings then Customization. Open the Activity entity and then go into Forms and Views. Locate & open the view Closed Activity Associated View. In the new window click the Add Columns on the right hand side. Click the Description field, and then click OK. Click Save & Close and make sure you Publish.

Since this is the Associated View for activities, it will affect all activities for all entities. Meaning you only make the change once and it will take effect on Contacts, Leads and so on.

Finally, even though the Description field is now a viewable column, users will still not be able to read the entirety of the many records since the length is too long. Our job now is to train users to use the mouse-over tool tip. By simply placing the mouse over the Description of one of our History records, the tool tip will display the contents (see image).

All in all, a very simple modification but one that will save possible hundreds of clicks per day!

Changing Views In CRM

Microsoft CRM Consultant
Unitek Microsoft CRM Services

Microsoft CRM: Should We Use Leads?

Microsoft CRM is certainly a dynamic solution, but with ANY solution that has wealth of options, there must be careful consideration taken to ensure that your company’s implementation is specific to your needs. Everyday, I see companies that rush to implement CRM and don’t take the time to map out their business process or policies. Then, when it’s time to launch CRM, there’s the usual backlash of user adoption, frustration from divisions/departments, and sometimes a blatant distaste for CRM. Why?? CRM didn’t do anything! It’s the lack of forethought and proper planning that causes these headaches. For example, let’s look at Best Practices regarding leads…

Not all organizations will use leads because every organization considers qualified prospects differently. Those that depend on mass demand generation processes – such as advertisements, trade shows, cold calling lists, and so on – will likely use leads. These organizations would benefit from lead management because this process helps sort through the massive amounts of data and helps sales focus their efforts in the best direction.

Those companies that start their sales process from the opportunity stage rather than the lead stage would do better to eliminate the need for leads and focus only on opportunities. If the sales process doesn’t begin with a lack of information or a need to gauge interest, leads might not apply. Companies we’ve seen implement this practice are from a variety of industries like Real Estate, Housing Development, Government, Brick & Mortar Retail Stores, etc…

Ask yourself or your company this…

  1. Do we invest time and money into generating lists of potential customers? Do we have mass mailings, cold calling, etc.
  2. Do we keep lists of people who are target customers, but the lists have limited contact information?
  3. Do we have personnel devoted to sifting through lists of possible customers to identify “good” prospects?
  4. Do we need to manage lists of potential customers separately from the Accounts or Contact lists?

If the answer is “Yes,” then you may want to use leads. If “No,” then don’t! Don’t be afraid to make the necessary customizations to your Microsoft CRM implementation that will benefit your overall needs. This can ONLY be done when you have taken the time to analyze your processes and determine what is best. Don’t forget to keep in mind…”Where will we be in 5 years and will our processes be the same as they are today?” Without these critical steps, you and your implementation will suffer the consequences.

Microsoft CRM Consultant
Unitek Microsoft CRM Services

Top 10 Questions To Reveal A Successful Microsoft CRM Implementation:

  1. Do you have the ability to review (in dashboard format) your sales pipeline report in graphical format?
  2. Do your key performance indicators allow you to review sales efficiency in real time?
  3. Do your users appreciate the seamlessness of the CRM Solution adapting to the business process flow?
  4. Do you use automated workflow processes to simplify tasks for your users and to ensure the correct capture of customer data?
  5. As a business decision maker do you have the ability to view successful marketing campaigns and determine on the basis of past performance quickly whether to repeat these campaigns?
  6. Are you able to execute marketing campaigns in “lock-step” order?
  7. Is your sales environment a collaborative one that your CRM solution offers a team-oriented 360 degree view per geographical, territories and/or product group basis?
  8. Do you have a simple to use, knowledge base that allows reps to search, submit questions, post articles, and expose the knowledge base across the service organization?
  9. Does your contact-centric organization have forms logically grouped in such a fashion to capture information in sequential format as they interact with customers without having to switch back and forth between screens, tabs or applications?
  10. Have you watched your Training Cycle decrease as you began to use it also for company training to reduce the amount of technical information new sales reps need to come on board and quickly become productive?

Microsoft CRM Consultant
Unitek Microsoft CRM Services