Archive

Archive for August, 2009

Update Rollup 6 for Microsoft Dynamics CRM 4.0

August 31, 2009 2 comments

The Microsoft Dynamics CRM Sustained Engineering team released Microsoft Dynamics CRM 4.0 Update Rollup 6 on Thursday, August 27, 2009.

Below are the links to the release and related information about the Rollup. Please see the Knowledge Base (KB) article for more details about the Update Rollup 6 content and instructions.

Install Details about Update Rollup 6

  • Update Rollup 6 is cumulative. You do not need to install any previous Update Rollups prior to Update Rollup 6
  • The Update Rollup 6 client can be deployed before the server is upgraded to Update Rollup 6
  • Update Rollup 6 can be uninstalled
  • Steps to make Update Rollup 6 available via AutoUpdate can be found in the Update Rollup 4 blog posting. The Link and Patch IDs can be found in the kb article at http://support.microsoft.com/?kbid=970148.
  • Information about how to avoid reboots when installing the CRM Outlook Client can also be found in the Update Rollup 4 blog posting.

Update Rollup 6 and all future Update Rollups will contain Mobile Express

The CRM team released the English version of Mobile Express on July 8, 2009 as an update to the CRM Server. Since Mobile Express is now part of the Server product it will be installed and updated as part of all Update Rollups going forward. There is a Getting Started: CRM Mobile Express blog that has some pointers on how to get started. The localized versions of Mobile Express will be delivered in a future update rollup.

Cheers,

Matt Brown

Advertisements

Build a handy Microsoft Dynamics CRM development environment

August 28, 2009 Leave a comment

Last month, Sonoma Partners and Microsoft had an very useful article for Microsoft Dynamics CRM developers: Setting Up Your Development Environment. I provided an abstract this article for our Chinese readers. In this post, I’d like to give my ideas about how to build up a handy Dynamics CRM development environment.

The typical situation is that a CRM developer runs a Virtual PC image on his/her own PC that is an all-in-one CRM system (with Windows Server, SQL, IIS, CRM, SharePoint installed). I’m assuming the Host PC also has Visual Studio installed. I’m not going to discuss an implementation where many developers share one development environment using TFS in this article.

Setup Virtual PC environment:

Microsoft Virtual PC is a free software, it has all we need to host a development environment. You firstly install Windows Server 2003/2008 on the VPC, then install AD, DNS, IIS 6/7, SQL server 2005/2008, CRM 4, etc. Finally it’s an all-in-one CRM box, I’d like to point out that:

  1. It can be a Domain Controller – that’s for your development only, not for production.
  2. You may need 3 Network Adapters in the VPC:

a. Local only – for VPC internal use

b. Microsoft Loopback Adapter – for the communication between Host and VPC

c. Host’s Physical Adapter – for the Internet access via the Host PC

Read more…

Cheers,

Jim Wang

CRM Customization ROI Calculator

August 25, 2009 Leave a comment

When implementing Dynamics CRM or designing a customized solution within Dynamics CRM you will often find yourself asked by the powers-that-be what their Return on Investment (ROI) will be. Since I consult for a living, I get asked this more than most.

Here is a common approach to show the ROI for a specific customization made to Dynamics CRM.

Understanding the User’s Workflow

Note: In this particular case, I’m not referring to the workflow process built into Dynamics CRM, but rather, the procedures and processes performed by the user.

The best way to understand how a user utilizes CRM is simply to watch them work. What you are looking for is repetitive, reproducible tasks that get performed on a frequent basis.

For example: The scheduling a follow-up call with a customer.

Ask yourself the following questions:

  1. What did the user need to do to make that action happen?
  2. How long did it take them to get to a location where they could enter data?
  3. How many times per day do they perform this operation?

Calculating ROI

Once we have the basics for our operation recorded, we can start the ROI calculation process.

Step 1: Calculating the cost per minute of the user

First of all, we need to know how much the user cost the company per minute, which we can determine using the following calculation:

Cost per Minute = Salary / Number of minutes per year

Which looks like this in Excel:

clip_image002

Step 2: How long does the operation take

As part of our user workflow analysis, we recorded the number of seconds it took the user to record our action. Using this calculation, we can determine the assumed cost of operation:

Cost = (cost per minute / 60) * time [in seconds] of the operation

Which looks like this in Excel:

clip_image004

Step 3: Determine Repetitions

Using the cost per operation, we can insert the number of times the user said they perform the action per day then extrapolate that number into weekly, monthly and yearly frequency and costs:

clip_image006

Step 4: Determining operational costs

Finally, we can calculate the operational cost of this activity:

Operational cost = Number of personnel * year cost [of action]

clip_image008

ROI in Action

Now that we know the assumed annual cost for the action, we can calculate our ROI for our solution.

Solution: Place a Phone Call button on the toolbar of the Contact Form.

Time Saved: 2 seconds

Cost Savings Is calculated by:

number of seconds saved * cost per second * yearly number of repetitions

Which we can as:

clip_image010

If it cost $150 to implement and test the solution, then our actual savings over the course of a year is $619.23. When you consider that other, similar solutions can be implemented, your ROI continues to rise.

Summary

Today I’ve shown you how to perform a simple and quick ROI calculation to justify a proposed customization change to CRM to make the job of the CRM user more efficient and easier.

An Excel worksheet with this calculation may be found on my blog in the Free Utilities section.

Cheers,

Mitch Milam

Synchronizing CRM Contacts I do NOT own to my Outlook

August 25, 2009 Leave a comment

I was challenged with this task back in the 3.0 days.  It is great that CRM automatically syncs my CRM contacts to Outlook.  “What happens when multiple users have the same Outlook contact and try to track in CRM?”  Well if the Contact has already been tracked in CRM, the second user will receive a duplicate detection warning when they select Track in CRM from Outlook.  So how can I allow multiple users to have the “synched” contact appear in their Outlook as a tracked Contact?  The answer is pretty simple.  Modify the synchronization rules to include more criteria than just “My Contacts”.  NOTE: You must modify the My Contacts data group as you cannot create a second Contact entity data group.  This works in both Online and Onpremise Outlook Clients.

The following screenshots show you how to accomplish this enhanced synchronization.

  1. Add a custom attribute to the Contact entity.  In this example I created a bit attribute called “Shared Contact?” and formatted it as a checkbox.
    Owned by another user but Shared Contact
    Notice that the Contact Adrian Dumitrascu does not exist in my Outlook Contacts as it is owned by my colleague Jon White.
    Outlook wo contact
  2. Modify the Local Data Groups in the Outlook Client.  Select CRM > Modify Local Data Groups.
    modify local data groups

    • Depending upon which version of the CRM Outlook client you are running (Online or Offline) you will see slightly different results in the Local Data window.
      Offline Local DataOnline Local Data
    • If you attempt to create a new data group for an entity that already is configured you will receive the following error.  To resolve, simply modify the existing entities filtering criteria and click save (not save as).
      must modify existing
  3. Add the new filtering criteria “Shared Contact?” = Yes and group the conditions as OR (select both rows and click on Group OR at the top).
    data group filter

The next time the Outlook synchronization occurs the Shared Contacts will now appear in the users Outlook even if they do not own the Contact in CRM.  Note Adrian Dumitrascu as now synchronized to Outlook below.

outlook w contact

Enjoy!

Eric Boocock

Microsoft Dynamics Certification (FAQ)

August 25, 2009 Leave a comment

Periodically I get pinged about the process for getting training and certified for Microsoft Dynamics CRM. Certifications help show the expertise in the solutions you provide to your customers. Your customers can feel confident that your employees have the tools and knowledge necessary to ensure a successful implementation and continued technical support of their solution.

Certifications for Microsoft Dynamics™ and related business products can also help your organization maintain a staff of technically skilled individuals, which improves your organization’s own productivity and profitability.

Certified employees are more likely to learn, practice, and retain important skills. Partner organizations that encourage certification and hire certified staff can be more confident that they are taking a positive step toward satisfying customers and competing effectively. Internally, a staff of certified employees will enable you to reduce costs by reducing unscheduled downtime and the need for external support.

Another benefit is that when you choose to hire certified candidates, certifications can help you quickly identify qualified resources and streamline the recruitment process. You can also use certifications to motivate staff toward excellence and career advancement.

You can read more at Certifications for Microsoft Dynamics Frequently Asked Questions.

Cheers,

JaAG

Tracking Enhancements in CRM

August 17, 2009 Leave a comment

While working on any CRM installation, you will inevitably find yourself needing to record possible enhancements to the system. What better place to store that information than within CRM itself?

The Enhancement Entity

We will first need to create a new entity called Enhancement, which will look like this:

clip_image002

As you can see, the Ownership type is set to User so that each Enhancement can be assigned to a specific CRM user.

Since this Entity will generally be used by System Administrators or System Customizers, we’re only going to expose it in the Settings Area.

I’ve decided to name the Enhancement’s Primary Attribute Topic, which will record the Entity, area of action, or section within CRM that needs to be modified:

clip_image004

Adding Attributes

The following attributes are added to the Entity:

Attribute Type Length / Characteristics Required
Description of Change Nvarchar 255 Yes
Detail Ntext 2000 No
Expected Delivery Date Datetime Date Only No
Date Completed Datetime Date Only No
Status Picklist Values:

Completed

Denied

Duplicate

In Progress

New

On Hold

Pending

Researching

Yes
Priority Picklist Values:

1

2

3

4

5

6

7

No
Percent Complete Int Range: 0 – 100 No

Feel free to make changes to this structure as your needs dictate.

Status Attribute OnChange Event

We have just a minor amount of JavaScript in this solution, and it is really just to help with the final disposition of the Enhancement request.

If the user selects a Status of Completed, it will set the Percent Complete value to 100 and the Date Completed to today’s date. Afterwards, both attributes will be disabled so they can’t be changed:

if (event.srcElement.DataValue == ‘7’) /* completed */

{

crmForm.all.m3_percentcomplete.DataValue = 100;

crmForm.all.m3_percentcomplete.Disabled = true;

crmForm.all.m3_percentcomplete.ForceSubmit = true;

crmForm.all.m3_datecompleted.DataValue = new Date();

crmForm.all.m3_datecompleted.ForceSubmit = true;

}

else /* in case someone changes their mind */

{

crmForm.all.m3_percentcomplete.Disabled = false;

crmForm.all.m3_datecompleted.DataValue = null

}

Form OnLoad Event

To ensure that our form displays properly, we need to check the Percent Complete Attribute and if it set at 100%, we’ll disable the field:

if (crmForm.all.m3_percentcomplete.DataValue == 100)

{

crmForm.all.m3_percentcomplete.Disabled = true;

}

Final Result

And here is what the user will see when creating a new Enhancement Request:

clip_image006

Conclusion

Today I’ve shown you how to create a simple Enhancements Request system within CRM. You can expand on this solution by adding workflow automation to send out notifications, make sure deadlines are met, etc. with just a little more effort.

The customizations for this solution have been uploaded to the Free Utilities section of my blog for your convenience.

 

Cheers,

Mitch Milam

Architectural Model: CRM Online Extensions with Azure

August 17, 2009 Leave a comment

Rarely will a  commercial off the self software system provide you 100% of the functionality that your business will need. The reason is there is just too many situations that would have to be accounted for. When purchasing COTS solutions, you’ll want to understand the flexibility of the platform it offers.

Microsoft Dynamics CRM Online provides a variety of ways to extend the functionality of your business applications via configuration/customization changes and the CRM Web Services.

Microsoft’s recently announced cloud platform, Azure, offers a number of services to help enable building extensions to your CRM Online solutions. While, you can certainly build out extensions on any hosted platform, the Azure platform will provided you with many benefits such as storage services, infrastructure and a familiar development platform. Another interesting aspect of Azure is the idea of running code in it’s own space (for example Worker Role ). This code can run independent of a user so it’s excellent option for batch processing and responding to events. Web Roles in the Azure platform provide the functionality of applications that are user interactive.

BkUpDiagram

One such extension might be a cloud based back up application. In my example, the back up application would consist of 2 user interfaces and a backend process. The diagram above gives an over all view of the model. The first component is a user interface that allows the configuration information to be collected. This information would specify aspects such as which records to back up and when to run the back up. The second user interfaces would allow the user to access the data sets and perhaps re-instate the data or export out to external storage. Here’s an example of what the configuration user interface might like look like in CRM Online.

Config

Using the Azure platform, the application could take advantage of cloud data storage to hold the datasets.

This next image shows a user interface screen that would allow user to view the back up data sets.

DataSets

To summarize, you can build and extend functionality in your CRM Online system by using hosting applications and the CRM web services to access information. By using the Azure platform you can benefit from the cloud storage, infrastructure, and as well the worker services. You can also host your user interface inside the CRM application giving your users a singular experience.

Cheers, 
Jon White