Tuesday, February 3, 2009

Simple Audit Tracking in Microsoft CRM 4.0

Oh dear, what happened to January! It seems I blinked and missed the first month of the year. One of my goals for 2009 was to ensure I had at least 5 to 8 quality blog posts a month. Hmm I’ll have to work harder at that one!

Looking back at my 2008 posts, I seem to have a few that talk about Microsoft CRM’s workflow functionality and how I’ve used it to solve some real world problems. This was never intentional however it does show the power of the workflow functionality and hopefully the simplicity as well. I thought I’d carry on that theme for my first 2009 post and show how I’ve used workflow to create some simple audit tracking. Again this is a zero code example. I’m a firm believer in avoiding writing code unless it is absolutely necessary.

For this example I would like to track each time the estimated close date changes on an opportunity. I want to track who changed it and when. First I need create a new entity to store the audit data in. For this I’ve created a simple entity called Audit History with some additional fields as shown in the image below. Next I created a n:1 relationship between my new entity and the opportunity entity and update the form.

image

Now I’m ready to create the workflow against the Opportunity entity. I set the workflow to start both when the record is created and on the change of an attribute; namely the Estimated Close Date attribute. I also set the scope to Organisation so it will run for all users.

image

For my first step I want to check if the opportunity is being created or updated. To do this I create a Check Condition step and check if the opportunity Created On Date equals the Modified On Date. If they are equal I know the opportunity has been created, otherwise its being updated :)

image

Inside my Check Condition I create a Create Record step and create an Audit History record. Note for this step I set the Change Description to “Opportunity is Created” and copy the various fields from the related opportunity.

image

For the Default Action step I know if the workflow steps in here the opportunity is being updated so I create a Create Record step and create an Audit History record as above with the only difference being the Change Description which I set to “Estimated Close Date Updated”

image

The final result would then look like the below image.

image

I would recommend you set your security for the Audit History entity to be read only so the records cannot be changed. Hopefully this gives you some further ideas for simple audit tracking. For more advanced Auditing where you need to track changes to any field you will have to look at developing a plugin or use an ISV product like the c360 Audit tool.

Wednesday, December 24, 2008

Wishing Everyone a Merry Christmas and a Happy New Year

Well the end of the year really did sneak up on me this year! It seems like just yesterday 2008 was starting full of promise and opportunity. Overall 2008 was a very good year for me personally, with the birth of my beautiful daughter a definite  highlight. On the CRM front Microsoft released Microsoft Dynamics CRM 4.0 ( well December 2007 really) which saw the product mature further and become a real challenger in both mid-market and enterprise. This is clearly demonstrated by the release of the Forrester Wave Q3 2008 report showing Microsoft CRM as a leader in both the enterprise and mid-market.

image

My guess is that, while 2009 will have its challenges (when will the financial crisis bottom out?), it will again be a good year for CRM overall.  Having seen some of the sneak previews of Microsoft CRM 5.0 the product will again see some significant improvements and new functionality. This will allow us to push the product harder and create even more innovative solutions. I’m also a firm believer in the value of CRM solutions overall and especially in a downturn market. Organisations  that recognise this value while others are cutting back on IT spend are generally, I believe, the ones that come out not only alive, but ahead. I’m looking forward, along with the rest of the CRM community, to being a small part of creating that value.

I’d like to wish everyone a very happy, merry and safe Christmas. May your stockings be filled with love, kindness and maybe a great gadget or two.

Monday, December 22, 2008

Why analytics is a critical part of any CRM solution

These days any good CRM application will have some form of analytics as part of the application. Sometimes this is in the form of basic reports, other times it is through interactive excel spreadsheets or dashboards. While this functionality is critical in a CRM application I always shudder when in built analytics (or worse flat reporting) gets sold as CRM analytics! A good CRM analytical solution is so much more than out of the box reporting or dashboards.

For example you will often find in a CRM application that the out-the-box analytical solutions focus on sales and opportunities, with reports such as a pipeline analysis. The initial Microsoft CRM 3.0 Microsoft Dynamics CRM Analytics Foundation and now the Analytics Accelerators for Microsoft Dynamics CRM 4.0 have a number of demonstration reports focusing on sales and opportunities. But this will be meaningless, for example, to my education clients where there is no concept of a sales pipeline. They may wish to analyse student enrollment by year level rather.

Any CRM analytical solution needs to be an integral part of the initial planning phase of a CRM project. Quite often the analytical requirements will drive the requirements of the overall CRM solution. For example a client may wish to analyse its customers satisfaction over a period of time. This means there needs to be somewhere in the CRM application to maintain a history of customer satisfaction. A process also needs to be developed to ensure staff know where and how to capture and rate customer satisfaction.

Having relevant analytics available in a CRM application will help drive user take up and use of the application. Staff will know for example, that if they need to see how they are tracking against their targets they can get that information from the CRM application. They also know that in order for the information to appear in the first place they need to capture it in the CRM application. Having said that CRM analytics should never be sold or conveyed as a Big Brother is watching you solution. This is one sure fire way of staff not using or resenting the solution.

Now having said earlier that the Analytics Accelerators for Microsoft Dynamics CRM 4.0 has some focus on sales and opportunities it is much much more and is a fantastic starting point to build an analytical solution. However ensure that part of the planning process is focused on the analytics requirements and those requirements are used to develop an analytical solution that provides meaningful data to the right people. I have found almost without fail that if you get this right user adoption sky rockets! Happy analysing :)

Thursday, December 18, 2008

Microsoft CRM 4.0 Viewing the Original Lead’s Notes in an Account

I’ve often been asked by my clients if it is possible to easily view the notes captured against a lead in the created account or contact after a lead is qualified. Unfortunately other than going back to the original lead there is no way to easily achieve this. However there are a few options available  to solve this  problem and these include:

  1. Develop a plug-in to copy notes from the originating lead to the created account or contact.
  2. Write a Reporting Services Report to show notes from the originating lead and allow the user to run the report from within the account or contact.
  3. Show the originating lead’s notes in an iFrame in the account or contact screen.

I have found #3 the easiest to implement and users generally like it as they don’t need to go outside of the account / contact form to see the originating lead’s notes.

To demonstrate how to achieve this I’ll use the account form in my example but you could just as easily achieve this in the contact or opportunity form. First we will need to customise the account form, adding a new tab and section called Originating Lead Notes and then adding an iFrame called IFRAME_LeadNotes. Set the URL of your iFrame to about:blank and untick Restrict cross-frame scripting. I also set my iFrame to automatically expand to use the available space.

image

Next add the following JavaScript code to your form onload event":

var lookupItem = new Array;
lookupItem = crmForm.originatingleadid.DataValue;

if (lookupItem != null)
{
crmForm.all.IFRAME_LeadNotes.src="/_controls/notes/notesdata.aspx?id="+  lookupItem[0].id +  "&ParentEntity=3&EnableInlineEdit=false&EnableInsert=false";
}
else
{
crmForm.all.IFRAME_LeadNotes.src="about:blank";
}

Publish your changes and you are now able to view the original lead’s notes in your account form.
image
To make the solution even more user friendly rather than show a blank iFrame you may want hide the Lead Notes tab if there is no Originating Lead. This solution can also be used in other areas where you want to show notes from another record on a form. The skies are the limit :)

Wednesday, December 17, 2008

Opening an Email when double clicking on the email address in Microsoft CRM.

I’ve often been asked by my clients if they can double click on an email address in the contact screen and have it create a new email in Outlook. I found this solution on Michael Höhne from Stunnware’s blog (found here).

Copy and paste the following code in the load event of the contact form:

if (crmForm.all.<name of text field> != null) {
    crmForm.all.<name of text field>.ondblclick = function() {
var email = crmForm.all.<name of text field>.DataValue;
if ((email != null) && (email.length > 0)) {
            window.navigate("mailto:" + email);
        }
    }
}

Replace the <name of text field> with the schema name of your email field. Normally this is emailaddress1.

Users will now be able to open a contact’s record, double click on the email address and it will open a new email in Outlook. They can then make a decision as to whether they want to track the email by clicking on the Track in CRM button. Simple but very effective and most importantly users love it!

I find that I am often on Michael’s blog using his solutions in the Real World. Check it out if you haven’t yet www.stunnware.com!

Thursday, December 11, 2008

Using Workflow to Generate Autonumbers in Microsoft CRM 4.0

 

I have encountered many scenarios where clients have required an autonumber on an entity. For example they needed to generate a customer number on an account or a quote number etc. There are a number of ways to generate autonumbers using code usually through plugins. You can find a create example of  autonumber code here. Today I’ll take you though how to create an autonumber solution using standard Microsoft CRM Workflow with no coding required.

First create a new entity called “Auto Number” to store the next available number for your autonumber. Next create single integer attribute called next number and place that on your form. Now you will need to create a 1:n relationship to the entity where you want to use the Autonumber. In my example I’ve created an 1:n relationship to the account entity. Ensure you can access your new entity from the settings area and publish your changes. Navigate to your new entity and create a record as shown below. I’ve called my record “Account Auto Number” and I’ve set my next number to 1.

image 

Next create a new integer attribute on the entity where you want to the auto numbering to occur. In my example I’ve created an attribute called Customer Number on the Account Entity.

The next step is to create the workflow against, in my case, the account entity. The workflow will be started on the creation of a new account. Create the following steps in your workflow:

  1. Your first step in your workflow will be an update to the Account. In the Update Account screen select the additional fields tab and find the auto number lookup field created when you created your 1:n relationship. Click on the look up and select “Account Auto Number”
    image
  2. Next create another update to the account step in your workflow. It is important to do this as a separate step as you need to link your account to the “Account Auto Number” record first.  In your Update Account screen set your Customer Number field to be a dynamic value. Set your look for to your Auto Number entity and select the Next Number as the field.
    image
  3. Lastly we need to go back and increment the next available customer number by 1. To do this create a new update step. This time you  will be updating the Auto Number Entity. In the Update Auto Number field increment the Next Number by 1.
    image

Publish your workflow and that’s it :)

There are a few things to note in using a workflow rather than a plugin to generate a auto number. Firstly a workflow is asynchronous and thus a user will not see the next number update immediately after saving the record. They will need to wait until the workflow has run and re-open the record. Also workflows do not run offline so the user will need to wait until they go online to generate a auto number.

Tuesday, December 9, 2008

Creating a Relevant Microsoft CRM Demo

During my time as a Microsoft CRM partner I have both been presented to and have presented a fair number of CRM application demos. Some of those demonstrations have been fantastic and some have been absolutely dreadful! For today’s article I would like to take a look at what a prospective customer should look for in a Microsoft CRM product demo and from a vendors point of view how to not only successfully present Microsoft CRM, but also ensure the demonstration is relevant to the customer’s needs. The following is my top five points on how to create a successful, relevant Microsoft CRM demo:

Create relevant demo data.
One of the easiest traps to fall into in presenting Microsoft CRM, and one that really annoys most, is to use the standard Microsoft CRM demo data. For anyone who hasn’t played with a demo version of Microsoft CRM, the demo data is based on a fictitious company Adventure Works, a bicycle manufacturer. Unfortunately this data is not relevant to most industries. Presenting a solution using the prospective customers own data adds real relevance to the demo. From a customer’s perspective it allows the customer to better understand how the application will work in their own environment.

Present a solution not the product.
Rather than show off the features and functionality of Microsoft CRM, demonstrate how Microsoft CRM can solve the prospective customer’s business problems and how it can be used to create a solution. This will mean that before creating the Microsoft CRM demo, some time will need invested with the prospective customer understanding why they are looking at implementing a CRM application and what business problems they are trying to solve.

Demonstrate Microsoft CRM through a storyline. Following on the previous point demonstrate Microsoft CRM from a particular user’s point of view through a storyline. For example you can demonstrate a “Day in the life” of the Sales Manager and show how he may use the Microsoft CRM to assist him through the day. Again rather than demonstrating features and function you will show how the application can assist the Sales Manager in productively managing his day.

Create a demo script but be prepared to be flexible. Ensure you that have created and printed out a predefined demo script that you can follow during the Microsoft CRM demo. This will ensure that you don’t forget to demonstrate any part of the solution. However you may find that during the Microsoft CRM demo that the customer may want to see a certain area in more detail, or alternatively may want to skip over particular area that is not relevant. Don’t be too attached to your demo script and allow yourself to be driven by the customer’s needs during the demo.

Keep the Microsoft CRM demo short and focused.
Know how long you have for the demo beforehand and ensure that you allow time for questions during and after. Ensure that your demo presents the areas that the customer has expressed interest in beforehand and don’t labour too much on general look and feel and basic functionality. For example the customer will expect that the application can track company and contact information, so while you may mention this, don’t go into detail, rather spend time on how the customer can easily extract and analyse vital sales information, which will help them manage their business.