Archive for November, 2010

Goal Management: Behind the scenes

November 26, 2010 Leave a comment

What is goal management?

In today’s world, any competitive organization has well defined goals for its members – measurable, and time bound, and with a clear ownership. Goal management in Microsoft Dynamics CRM 2011 lets you set such goals for members in your organization, and also lets you track the progress being made against them. You can set goals with complex queries spanning across multiple records, goal trees spanning organizational hierarchy, monitor their progress on a day-to-day basis, and all this with perfect ease.

So while you are wondering on the immense possibilities in which you can use this feature, our PM buddy Manu has already done a great job summarizing how you can use this feature to cater end-to-end scenarios here.

And now, for those of you, who want to dig deep into this magic vault, and understand what is happening behind the scenes, so that you can build your own applications on top of this, here’s your share of the pie.

Goal Management comprises of four different entities: goal, goal metric, rollup field, and rollup query.

In colloquial language, if you say: In the Quarter 3 of FY2010, Nancy needs to bring in $250000 revenue through opportunities in New York City, this is how this information maps to goal management entities:


I can generalize the above as:

1. Goal:

     a. Who does it?

     b. How much?

     c. In what time?

2. Metric: Is sort of metadata to goal. What is the type of goal you are setting? Types can be

     a. Count: Goal based on number of records. Like number of phone calls made by David.

     b. Amount: Goals based on aggregated amounts which come from some fields in a CRM entity. Like actual revenue. This has three sub types:

          i. Money

          ii. Integers

          iii. Decimals

3. Rollup Field:

     a. The record on which goal is based.

     b. The attribute in the record which contributes towards the target set in the goal

     c. The date type attribute which is compared against the timelines of the goal to decide if a record contributes towards this goal or not.

     d. The value of state/status that the record should have in order to be able to contribute towards a goal.

4. Rollup Query: What all records contribute?

You’ll notice that there’s a slight overlap of “what all records contribute?” between rollup field and rollup query. Here’s my take on it:

If you want your records to be filtered based only on dates, and statecode/statuscode(for example: closed opportunities), then metric will suffice.

Additionally, if you want to consider only those records which are owned by the goal owner, use the ConsiderOnlyGoalOwnersRecords field set to true for this.

But if you ask for anything more than this, while filtering records, you’ll need to use rollup query to define your query. Let’s say, you want to roll up only those opportunities which are in the city of New York, and have estimated revenue greater than $10,000 and are owned by your team, and have the originating lead also owned by your team, all you need to do is: Create a rollup query which has all the above clauses, and associate it to the rollup field you want to use the query for.

Now, that we understand, what each entity is used for, it’s time for some of my developer secrets to be unveiled. Let’s talk about some of the nuances that you need to know while programming for goal:

Goal timelines:

Goals can be of two types: custom period goal and fiscal period goal.

A fiscal period goal’s timelines match the organization’s fiscal settings. For example if the organization’s fiscal period is quarterly, then you can set quarterly goals, and the start dates and end dates of these goals will align with the organization’s quarter start and end date respectively.

If you do not want to use your org’s fiscal settings, then you can choose your own dates by creating a custom period goal.

Goal Metric: Whenever you create a goal, you associate it with a metric. A metric is not just a reference in goal, but it carries its properties: metricType and goalType to the referring goal as well.

Goal Rollup:

Let us first talk about what we mean by goal rollup.

Goal entity has certain fields that we use to indicate the progress made against the goal. The gathering of this data is termed as rollup.

A goal rollup is a two phase process:

1. For each individual goal, queries are performed based on the rollup fields they are associated with, and aggregates are updated in the goal.

Let’s run this through an example:

We’ll use the out-of-box metric: Revenue for this purpose.

Let’s take the same goal for Nancy that uses the Revenue metric as an example.

If you open Revenue, it has two rollup fields:


So a rollup on Nancy’s goal above will result in two aggregate queries on opportunities:

The Actual(money) field will be updated with an aggregate for Actual Revenue of all opportunities closed as won in Q3 FY20101 in New York.

The In-Progress(Money) field will be updated with an aggregate for Est. Revenue of all opportunities active in Q3 FY2010 in New York.

2. A goal can have one or more child goals, and hence you can create trees of goals to represent goals for an organizational hierarchy. In such scenarios, a child goal contributes towards a parent goal. Let’s say, Nancy reports to David, and David to Kevin. So we have the following hierarchy:

Kevin-> David->Nancy

Hence Nancy’s goal contributes towards David’s, and David’s goal in turn contributes towards Kevin’s goal.

So in the second phase, the child goal’s contribution is rolled up to the parent goal, all the way up to the root goal of the goal tree.

Rollup only from child goals field:

While creating a goal, you can choose not to roll up any data from participating records into the goal. The rollup fields in this case will contain data aggregated only from the child goals. So the step 1 in goal rollup section above will not be executed for this goal.

When does goal rollup happen?

Goal rollup has two modes: asynchronous and synchronous.

There’s a recurring async job that performs the rollup with a frequency configurable in organization settings.

Also, there’s a Recalculate button that you can use to do the rollup for a specific goal tree on an on-demand basis.

Goal targets:

You set a target in a goal. The target can be one of the three types: money, decimal, integer, and hence we have the following target fields respectively:

1. targetmoney

2. targetdecimal

3. targetinteger

Based on the metric you are referring, you will use only one of these at any given point of time.

Goal Rollup Fields:

In order to measure how the goal owner is doing, we have a set of rollup fields: Actuals, In-Progress, and Custom.

Actuals – This indicates the actual amounts achieved so far. Example, in case of revenue goals, this can indicate all opportunities closed as won.

In Progress – This is an indicator of the amounts you expect to achieve. Example, in case of revenue goals, this can indicate all open opportunities.

Custom – In case you need to track anything else as a performance indicator, you can use this field. For example, for revenue goals, you have two indicators: open opportunities with rating = hot strongly indicate potential revenue, while those with rating = warm indicate potential revenue, but much less likely than the former. In this case, you can use the In-Progress field for one, and the custom rollup field for another case.

Each of these is again of the three type variants. So we get the matrix:

  Money Integer Decimal
Actual ActualMoney ActualInteger ActualDecimal
In Progress InProgressMoney InProgressInteger InProgressDecimal
Custom CustomRollupFieldMoney CustomRollupFieldInteger CustomRollupFieldDecimal


Once you select a metric, which has one or more rollup fields, mapping to actual, in progress or custom rollup fields in goal, then while working on goal entity, you should use the respective field from rollup field, and respective type from the metric’s goal type.

Rollup Queries:

Again, based on the metric’s goal type, you’ll have a rollup query for your actual, in-progress, and custom rollup fields. Following is the table mapping for rollup query lookup fields and goal’s rollup fields:

Rollup Query Lookup
Goal Rollup Field
RollupQueryActualIntegerId ActualInteger
RollupQueryActualDecimalId ActualDecimal
RollupQueryActualMoneyId ActualMoney
RollUpQueryInprogressIntegerId InProgressInteger
RollUpQueryInprogressDecimalId InProgressDecimal
RollUpQueryInprogressMoneyId InProgressMoney
RollUpQueryCustomIntegerId CustomRollupFieldInteger
RollUpQueryCustomDecimalId CustomRollupFieldDecimal
RollUpQueryCustomMoneyId CustomRollupField


Based on your metric’s goal type again, there will be at max three rollup queries in use at any given point.

Auto-computed Attributes:

A set of auto calculated fields have been provided for making your life easy:

Field Name
ComputedTargetAsOfTodayMoney Indicates what should be the actual target value as of today based on the target value and the goal’s start date.

Used when goal is a money type goal.

ComputedTargetAsOfTodayDecimal Indicates what should be the actual target value as of today based on the target value and the goal’s start date.

Used when goal is a decimal type goal.

ComputedTargetAsOfTodayInteger Indicates what should be the actual target value as of today based on the target value and the goal’s start date.

Used when goal is an integer type goal.

ComputedTargetAsOfTodayPercentageAchieved Indicates what percentage of the target should the actual be as of today based on the target value and the goal’s start date.
Percentage Indicates what is the actual achieved percentage of the goal against the target.

Uses target and actual fields to compute this.


Overriding goal rollups:

In normal course of things, goal rollups happen in background with a fixed frequency and the rollup fields are updated by the rollup job. However, if you explicitly want to override what the rollup job has calculated for the rollup fields, you can set the isoverride, and isoverridden fields = true and update the rollup fields.

If you set isoverridden to false, then the next rollup on that goal will overwrite these values with calculated values again.

Please note that you can do this only using SDK. The UI does not allow you to do this.

Goal owner vs goal manager: Looking at goal SDK, you’ll find two attributes: goalownerid, and ownerid. Goalownerid stands for the person/team for which the goal is being set. Ownerid is in traditional sense the CRM owner of the record, but since in real life scenarios, a manager governs her reportees goals, hence ownerid is named as Manager in the UI.

A goal rollup always happens in the context of goal’s manager.

Goal trees:

In a given goal tree, the following attributes will be same across the tree:

1. Goalperiodtype

2. Goalstartdate/goalenddate

3. Goalmetric

Goal currency: A goal’s currency is defaulted to organization’s currency, and is not valid for update.

Recalculate message: Goal rollup can be done synchronously using the Recalculate message. A recalculate for a goal will recalculate the entire goal tree. For code samples, you can refer to the SDK documentation.

By now you have enough insights to get started with goal management in CRM. Time to get your hands dirty!


Your friendly dev,

Nimisha Saboo


Setting Revenue Quotas/Targets in Multiple Dimensions

November 25, 2010 Leave a comment

Ever wondered about the complexities involved in tracking the progress against sales targets in an organization, which is active in multiple territories, selling wide range of products, working on big accounts… If you are looking for an easy solution to this very complex problem, then you are at the right place. In this post, I will explain about my favorite feature in Microsoft Dynamics CRM 2011, that allows you to track variety of targets/goals in multiple dimensions across the hierarchy with automatic rollup of the actuals.

Situation-1: Managing different targets for different Accounts

Let us take the following organizational structure.

Kevin has the target of USD 300,000 for Q2. He wants to distribute it as follows –

Nancy: 90000, David: 120,000, Michael:90,000 for Account1 and 110000 for Account2. He follows the steps below in MSCRM to do this.

1) He opens his goal record, which has been set by his manager. Metric for this goal is set as “Revenue’. This metric gets shipped out of the box with MSCRM.

2) He goes to the “Child Goals” sub-grid and clicks on “Add new goal”. He provides a name of the goal, then sets the owner as “Nancy” and puts the target amount as 90,000. He clicks on “Save & new” to set the target for David in the same way.


3) Based on above goal definition for Nancy and David, system will rollup the actuals and in-progress data purely based on ownership. That means system will calculate the actuals and in-progress for Nancy from all the opportunities which is owned by her.

4) Goals for Michael needs to be set differently, as Kevin wants to set two goals for Michael. So, somehow he will need to tell the system that “Opportunities related to Account1” should rollup into the goal-1 and “Opportunities related to Account2” should rollup into goaL2.

5) To achieve this, Kevin creates two rollup queries. He goes to rollup query grid and clicks on new. He provides a name “Opps coming from Account1” for the rollup query and sets the record type as “Opportunities”. A query control comes up on the form, there he describes the filter as “Potential Customer” equals “Account1”.


6) He saves it and creates the 2nd rollup query “Opps coming from Account2” in similar way.

7) Now he goes to his goals window and adds a new child goal. He gives this goal a name “Michael-Acc1-Q2”, owner=Michael, Target = 90,000 and he scrolls down to find the “Goal Criteria” section. There he provides the Rollup query as “Opps coming from Account1” for Actuals and In-progress fields.


8) In the similar way, he creates the 2nd goal for Michael.

Kevin is done with the goal definition. This way, all actuals and in-progress data rolls up correctly in the goals of his team members. And then the same rolls up into his goal according to the following formulae.

Kevin’s actual = sum of actuals of child goals + Actuals from the opportunities owned directly by Kevin.

Note: In the same above way Kevin can set goals based on territories by specifying proper filters in the rollup queries.

Situation-2: Managing different targets for different Products

If the organization tracks the targets based on the product, it becomes very clear that revenue cannot get aggregated from opportunities directly, as one opportunity can carry many products. In this case, actual and in-progress revenue towards goal would need to be calculated from Opportunity Products (line items). To do this, organization is recommended to first deactivate/delete the “Revenue’ metric or modify this. Then they would need to create new “Revenue” metric as follows –

1) Go to the goal metric grid and click on “new”

2) Give a name “Revenue”

3) Then set “Type” as “Amount” and “amount data type” as “Money”. Save it.


4) Click on Rollup field subgrid and click new to create definition for “Actual(Money)”.

5) Provide the following values, if you are tracking revenue in Opportunities. If you are tracking actual revenue in orders, the select “Source Record Type” as OrderProduct


6) Click “Save & New” and provide definition for “In-progress(Money)” field


7) Save & close. Close the metric and you are ready to set goals based on any dimension including products.

Now that we have setup the right metric to track revenue goals, we can create the goals as follows. Let’s take example where Nancy has target of 90,000 on Product1 and target of 110,000 on Product2. And Targets for David and Michael are same as described in situation-1.

While setting up goals for Nancy, Kevin will create two rollup queries. 1st one will get revenue from Product1 and 2nd one from Product2. Screen shot for Product1 is given below.


Now Kevin will use these Rollup Queries to create goals for Nancy, so that system rolls up amount corresponding to these specific products.

While setting up goals for Michael, Kevin will create Rollup queries for Account1 and Account2. Screen shot for Account1 is given below.


Using these two rollup queries, Kevin can now setup goals for Michael.

Please note that Kevin is using only one metric for revenue for all kinds of goals and not only for product based goals. This is makes the life easier while monitoring the progress against these targets. If organization don’t track target for different products, then they can use the Revenue metric shipped with product, which aggregates data from Opportunities. They can also change the metric to make system rolls up Actual from fulfilled orders and In-progress from open opportunities.

With these capabilities, one can set goals in multiple complex dimensions. As Rollup queries supports all the capabilities of advanced find query, so one can build really complex queries to rollup the data against specific goals. You are welcome to further explore charts and dashboards available to monitor the performance against these goals. Hope you enjoy using this feature.


Manbhawan Prasad

Tips and Tricks: Filling in Lookups

November 25, 2010 Leave a comment

Who hasn’t been thankful for the form assistant in Microsoft Dynamics CRM 4.0 when doing a demo? You could quickly click on any of the records that showed up to fill in the lookups. After all, it didn’t really matter if you added Jane Doe or John Doe as a contact.

Microsoft Dynamics CRM 2011 doesn’t have a form assistant anymore, so now are you doomed to use the lookup dialog? Actually there is a much better way than the form assistant and the Lookup dialog and it’s called MRU (Most Recently Used). It just needs a little bit of preparation. CRM 2011 has this new capability that allows you to select a record directly from the lookup field without ever leaving it. The only prerequisite is that you have added the record to the same lookup type before. Here is it how you do it:

Open any form that has a contact lookup and add a contact let’s say Jane Doe using the Lookup dialog or if you know the spelling let auto-resolve take care of it (just press CTRL+K).


Now open another form with a Contact lookup, for example an Opportunity. In this case the lookup is called Customer, which could actually be either a contact or an account. Start typing the letter “J” notice how the MRU pop up gives you “Jane Doe”. You can now either use the keyboard (DOWN ARROW to select and ENTER to add) or the mouse to add it to the lookup field.


If you don’t care which record you are adding in the lookup field you, CRM 2011 lets you bring up the entire list of your most recently used records in alphabetical order. All you need to do is press ALT+DOWN ARROW in the empty (this is important!) lookup field and in case of the Customer lookup you get a list of recently used contacts and accounts, since both are valid entities for this lookup type.


This is much better than the form assistant especially for lookups like customer, where you had only a list of accounts or a list of contact that the time. It’s also has a much better performance, since the MRU items are stored locally and synced with the server only every 20 min or when a session closed.

Btw, the auto-complete feature is also pretty neat and easy to use. Just type a name or the first letter and press CTRL+K. Then click on the red underlined text in the lookup field. The auto-complete pop up gives you a list of all (not just MRU) matching records. Note that this can take a bit longer to load depending on how many records you have in the system.



Karin Zimprich

Update Rollup 14 for Microsoft Dynamics CRM 4.0

November 22, 2010 Leave a comment

The Microsoft Dynamics CRM Sustained Engineering (SE) team released Microsoft Dynamics CRM 4.0 Update Rollup 14 on Thursday, November 18, 2010.

The links below will take you to the necessary information about Update Rollup 14.

General details about Update Rollup 14


Update Rollup 14 is cumulative. However, the Update Rollup 14 CRM Client and Data Migration Client packages require Update Rollup 7 to be installed. For all other CRM components, you do not need to install any previous Update Rollups prior to Update Rollup 14.

The Update Rollup 14 download contains updates for the 40 supported Language Packs. Prior to installing the Update Rollup 14 Language Pack, you must install the original Language Pack. If you have Language Packs installed, you should

  1. Download the Update Rollup 14 Language Pack
  2. Install the Update Rollup 14 Language Pack
  3. De-provision the Language Pack
  4. Re-provision the Language Pack

Information about how to avoid reboots when installing the CRM Outlook Client can be found in the Update Rollup 4 blog posting.  

The Update Rollup 14 Client can be deployed before the server is upgraded to Update Rollup 14.

Steps to make the Update Rollup 14 Client available via AutoUpdate can be found in the Update Rollup 4 blog posting. The Link and Patch IDs can be found in KB article 2389019.

Each update rollup could have fixes that require manual configuration. Please see the “Hotfixes and updates that you have to enable or configure manually” section in KB article 2389019.


How to get support for Update Rollup 14

For support, please contact Microsoft Product Support. For a complete list of Microsoft Product Support Services telephone numbers and information about support costs, visit the following Microsoft Web site:;[LN];CNTACTMS.

Note: In special cases, charges ordinarily incurred for support calls may be canceled if a Microsoft Support Professional determines that a specific update will resolve your problem. The usual support costs will apply to additional support questions and issues that do not qualify for the specific update in question.


Matt Brown

Upgrading a CRM 4.0 Custom Workflow Activity to CRM 2011

November 18, 2010 Leave a comment

I recently upgraded one of my custom workflow activity plugins to CRM 2011 and thought it would be an interesting exercise to walk through that process with you. So let’s walk through the changes, from top to bottom.

Reference Assemblies

As with any application that communicates with CRM, you need to reference the CRM SDK assemblies:

CRM 4.0

using System.Workflow.Activities;

using System.Workflow.ComponentModel;

using System.Workflow.ComponentModel.Compiler;

using Microsoft.Crm.Sdk;

using Microsoft.Crm.Sdk.Query;

using Microsoft.Crm.SdkTypeProxy;

using Microsoft.Crm.Workflow;

CRM 2011

using System.Activities;

using Microsoft.Crm.Sdk.Messages;

using Microsoft.Xrm.Sdk;

using Microsoft.Xrm.Sdk.Workflow;

Creating Parameters for the Activity

This activity accepts 4 parameters, one of which was required. In this example, we are:

  • “Decorating” a Lookup property to show the label “Marketing List” in the Workflow user interface.
  • The parameter is required
  • Since it is a lookup, the lookup is referencing the list Entity, which is a Marketing List.
CRM 4.0

With CRM 4.0 developers were generally targeting the .NET Framework v3.0 (or3.5), so to define an input parameter looked something like this:

public static DependencyProperty MarketingListLookupProperty = DependencyProperty.Register("MarketingListLookup", typeof(Lookup), typeof(RemoveFromMarketingList));


[CrmInput("Marketing List")]



public Lookup MarketingListLookup




        return (Lookup)base.GetValue(MarketingListLookupProperty);




        base.SetValue(MarketingListLookupProperty, value);



CRM 2011

In the .NET Framework 4.0, the parameter definition is slightly condensed:

[Input("Marketing List")]



public InArgument<EntityReference> MarketingListEntityReference { get; set; }

Class Definition

The class definition has changed slightly due to the change in Windows Workflow versions. Beside the base class changing from SequenceActivity to CodeActivity, you will notice the CRM 2011 version does not have the “decorations” that specify the group and name that will be displayed within the CRM workflow editor. More on that later.

CRM 4.0

[CrmWorkflowActivity(“Remove from Marketing List”, “CRM Accelerators”)]

public class RemoveFromMarketingList: SequenceActivity

CRM 2011

public class AddToMarketingList : CodeActivity

Execute Method

The Execute method remains the sole method required for a custom workflow activity though the Context parameter and return value have changed.

CRM 4.0

protected override ActivityExecutionStatus Execute(ActivityExecutionContext executionContext)

CRM 2011

protected override void Execute(CodeActivityContext executionContext)

Connecting to CRM

The code that defines the connection to the CrmService has changed slightly as well, but overall, the concepts remain the same:

  1. Get the Execution Context
  2. Get a handle to the Workflow Context or Organizational Service Factory
  3. Create an instance of the CrmService
CRM 4.0

IContextService contextService = (IContextService)executionContext.GetService(typeof(IContextService));

IWorkflowContext context = contextService.Context;

ICrmService crmService = context.CreateCrmService();

CRM 2011

IWorkflowContext context = executionContext.GetExtension<IWorkflowContext>();

IOrganizationServiceFactory serviceFactory = executionContext.GetExtension<IOrganizationServiceFactory>();

IOrganizationService service = serviceFactory.CreateOrganizationService(context.UserId);

Accessing Parameter Values

Accessing the values found within the input parameters is slightly different in CRM 2011 where the value of the parameter is not actually extracted until you actually need to use it. In CRM 4.0, that process happens more or less automatically due to the DependencyProperty setup.

CRM 4.0

Guid ListId = MarketingListLookup.Value;

CRM 2011

Guid ListId = MarketingListEntityReference.Get<EntityReference>(executionContext).Id;

Doing the Work

After you have all of the above code in place, the remainder of your code should function as it did in CRM 4.0. I did not have to make any changes to my code once the “plumbing” was upgraded.

Registering your Plugin

The registration process is exactly the same between versions: You use the Plugin Registration Tool.

The biggest difference between the two is in CRM 2011, the Plugin Registration Tool is where you specify how the custom workflow activity is displayed to the user within the workflow editor.

When you highlight the workflow activity, you need to specify the FriendlyName, Name, and WorkflowActivityGroupName properties as shown below:


Note: Even though the above figure doesn’t show it, the FriendlyName and Name properties need to be the same.


Well, that is about it. It probably only took me 2 hours to perform the upgrade of my code and that was starting from scratch with zero knowledge of the process. I just reviewed the SDK documentation and sample code and worked through each issue as it was encountered.

I hope this helps and good luck.

Mitch Milam

Social Activity Dashboard for Microsoft Dynamics CRM 2011

November 17, 2010 Leave a comment

Over the past few days I have been wondering if the new dashboard capabilities in Microsoft Dynamics CRM 2011 would enable me to create a dashboard that monitors activities on various social media sites. Monitoring social media sites is important for small, medium and larger businesses. By doing this a business can keep track of the conversations that people in social communities are having about their brand or service, or even about their competitors.

I imagined myself to be an owner of a small business that sells shoes and other footwear, and asked myself this question: what are the things that I would like to track. Some of the things that came to mind were –

  1. What are the latest updates from the brands that I sell?
  2. What does the social media activity around the various shoe brands look like?
  3. What are some of the biggest conversation topics related to shoes and footwear these days?
  4. What is the current set of conversations happening around shoes and footwear?

Social Media Widgets for CRM Dashboards

I then looked around to find ways in which such information could be displayed on a CRM dashboard. Fortunately, the solution was not too hard to find. There are several web sites that provide social media widgets free of use. One just has to grab the HTML\Java Script code for these widgets and add them into a CRM Web resource. Having done that we are ready to create a “Social Activity Dashboard” – we just have to add these web resources on the dashboard.

Getting the Widgets

Some of the most useful widgets for monitoring social activity can be download directly from Twitter. These widgets provide a real time update into profile pages, and search keywords. The widgets solve the problem by providing the data., so these are good candidates for our dashboard.

In addition to the live data from Twitter, we also need to be able to do some basic analysis such as retrieving the keywords that people are talking about, and the activity timeline for various search terms that I as a shoe business owner may be interested in. Looking around the web I found that the Fuse Labs gadgets from Microsoft provide me a rich set of aggregation capabilities.

Twitter Widgets

I found the following two Twitter widgets interesting for our Social Activity Monitor Dashboard. These are downloadable from

Twitter Profile Widget:

I used this widget to get live updates about a profile, in this case Nike – one of the brands that I as a business owner would deal with.


Twitter Search Widget:

I used this widget to get live updates regarding the search keywords that I as a business owner was interested in – in this case my search keywords were Nike, Adidas, and Puma.


Fuse Labs Gadgets:

The gadgets from provide the ability to aggregate information from Twitter and provide some basic analytics regarding the social media conversations. These are available at –

Fuse Labs Gadget – Tag Cloud

This gadget provides a tag cloud for the keywords provided by the user. I used the keyword “Shoes” to generate this tag cloud gadget


Fuse Labs Gadget – Comparison

I used this gadget to provide a comparison across conversations in the 3 brands that I deal with – Nike, Adidas, and Puma.


Creating Web Resources and Dashboard

The next task is to create the web resources after the widgets have been identified. The widgets from Twitter, and Microsoft Fuse Labs allow the HTML code for these widgets to be downloaded, and embedded into custom applications. I downloaded the code for these widgets and embedded them into CRM Web resources. After creating the web resources, creating the dashboard was easy. For details on how to do this see


The Solution package for the Social Activity Dashboard shown above can be downloaded from the following codeplex site – If there are more interesting ways in which social information can be consumed, please mention it in your comments.


Siddhartha Rai

Social CRM with Microsoft Dynamics CRM and Windows Azure

November 15, 2010 Leave a comment

Seven years ago we launched Microsoft CRM 1.2 to a small but enthusiastic audience.  CRM 1.2 was a market breakthrough for us but it was only after a healthy independent software vendor community came to fill critical feature gaps. One of the first people to recognize those needs in CRM 1.2 was John Gravely. He built a tremendous business around add-on utilities for CRM 1.2 and was instrumental to the early success of Microsoft CRM.

As we get ready to launch Microsoft Dynamics CRM 2011 I see fewer product gaps but no less opportunity for ISVs.  ISVs will continue to add tremendous value to CRM through both horizontal and vertical industry extensions to the product.  Once again John has identified a critical set of customer needs around CRM and has been driving great innovation with his new ClickDimensions product built on Microsoft Dynamics CRM.

ClickDimensions is a digital marketing automation application that connects your Web and e-mail analytics to your sales and marketing efforts within CRM. The application provides lead scoring based on Web tracking, social discovery of leads and multi-channel communications capabilities powered by the ExactTarget engine. Today, most of these digital marketing tasks have to be managed with a hodge-podge of tools that aren’t well integrated. ClickDimensions will make it easy to use Microsoft Dynamics CRM as the one place you can go to manage and execute digital marketing campaigns.


The CRM portion of the product can run on premises or in CRM Online but the real intelligence of the application is in Windows Azure where the lead scoring, Web tracking and logic for social discovery occur. This will let ClickDimensions provide mass scale without the need for a complicated deployment – a key selling feature for nimble marketing organizations.

I am hoping to get John to share some of his architectural learnings with us at Extreme CRM 2010 this November (please encourage him to come out for the event and do a presentation for us) but if you’d like information and a demontration sooner you can register for a September 28th Webinar hosted by ExactTarget.


Barry Givens