Silverlight and CRM Cookbook – Recipes II

Silverlight and CRM are a natural fit.  CRM provides the data structure and back end services to store your data.  Silverlight provides an excellent front end to give your users a rich client experience.  There seem to be plenty of samples out there on the web now describing how to integrate the two, so I’d like to explore these a bit and see if there are some general patterns and design principles.

Continuing from yesterday, I’d like to dive into another example of using CRM together with Silverlight to empower rich client experiences.  I encourage you to watch this video on Channel 9.  It demonstrates an approach that combines CRM records with your Outlook appointments to make it easier to enter project time each week.

Once entered, you can then being to visualize the data in useful ways.

While the demo was written with an earlier version of WPF, this kind of functionality can now be written with Silverlight 4, given SL4’s newfound capabilities of integrating with Office, isolated storage, and out of browser experience.


I think there are two useful design principles to learn from this sample.

Overlaying CRM Data with a Second Application

First, Silverlight can integrate data from CRM and another application and overlay these on top of each other.  The other application could be Outlook, Excel, SharePoint, a back end ERP system, or any other data that you can expose an interface to.  Personally, I think there is enormous potential here for combining Outlook appointments, emails, tasks, or contacts with CRM data to better visualize both. 

For example, imagine being able to view your open CRM cases and dragging and dropping the cases into open spots on your Outlook calendar to create appointments for yourself to research the cases.  Or imagine having a Getting Things Done® productivity dashboard that shows your upcoming CRM phone calls, Outlook appointments, and Inbox emails and allows you to process these items with the click of a button.

Interacting with a Real World Model

The other principle this example shows is that in general there are two ways to interact with data.  You can work with native lists of records, or you can interact with a model that looks and feels like what the data represents. 

For example, would you rather work with this:


Or with this:


The second example is a more natural representation of the data.  The tradeoff is that it takes longer to build.


So now you have an additional two “recipes” or reasons to bring Silverlight into your CRM implementation.  Silverlight can overlay additional information on top of CRM or CRM information on top of other information.  Or you can use Silverlight to build real world models of the data, using CRM as the data store and updating information in real time behind the scenes.

Now go get cooking…

Posted in CRM 4.0, Silverlight / WPF | 1 Comment

Silverlight and CRM Cookbook – Two Recipes to Start

Silverlight and CRM are a natural fit.  CRM provides the data structure and back end services to store your data.  Silverlight provides an excellent front end to give your users a rich client experience.  There seem to be plenty of samples out there on the web now describing how to integrate the two, so I’d like to explore these a bit and see if there are some general patterns and design principles.

In doing a search on the terms Silverlight and CRM, one of the first hits is from 2007, when Silverlight first launched.  In this sample, an author is displayed along with related books that the author wrote.  In technical terms, this is a parent entity with a one-to-many relationship to a child entity.  Users can drag a book over to a landing spot on the right, where more information about the book is displayed. 


I think there are two useful design principles we can get out of this example. 

Visualizing Parent Child Relationships

First, Silverlight can bring parent / child (one-to-many) relationships to life, which makes it easier for users to understand how the system data is structured.  The example displays one related entity, books, and this can be extended to show multiple entities.  For example, imagine an opportunity icon surrounded by activities, products, and competitors.  Clicking on one of the child icons would scroll that particular icon onto center stage, where the child records to that entity are displayed.  Instead of lists of information in tables, users can see how the data maps out visually which may be a more natural way of interacting with the data, with the bonus of less clicks to move around the system.


Previewing Information from Child Records

Second, Silverlight can display previews of information which saves users from having to launch a second page to see the detailed information.  This can also help prevent information overload, as the preview only displays the relevant information about the child record in context to the parent.


Conclusion (For Now)

There you have it.  I don’t think it’s more complicated than that. Two uses of Silverlight are Visualizing Parent Child Relationships and Previewing Information from Child Records.  There are more, but I thought that’s a good place to start.

How about you?  What types of design patterns have you seen or would like to see in visualizing CRM data?

Posted in CRM 4.0, Silverlight / WPF | Leave a comment

Microsoft Dynamics CRM Email and Snail Mail Activities: The Trigger, Print, Complete (TPC) Method

Today I’d like to highlight an approach to handling the mass distribution of email and letter activities in Microsoft Dynamics CRM.   This is a strategy you can use when you have the need to distribute email and letter activities to a large audience, similar to marketing campaigns, but whenever the intended recipients of those activities are determined at random throughout the day.

Let’s face it.  Even in this day and age not everyone has an email address.  When you need to run a campaign and communicate with a wide variety of people, one challenge is in building a system that can handle both types of consumers.  On the one hand, people with an email address could receive an email immediately, and people without an email address….well, you still want to communicate with them but it’s not quite as immediate or easy to pull off.

For example, let’s say you wanted to build a communication module that will notify applicants if they’ve been accepted or denied.  The system should send an email to any applicant that has an email address.  The system should also assist you printing a letter for any applicant that does not have an email address.

Since applicants can be accepted or denied at various random times throughout the day.  Emails are easy enough as the system will just send them immediately.  But for letters, how do you keep track of who needs one?  How can you print them easily and know who you’ve already printed one for?

Enter Microsoft Dynamics CRM.  In this scenario, there are really three key steps in the process.  I call it the Trigger, Print, Complete (TPC) Method.

Step 1: Trigger

In the TPC Method, first you build workflows in CRM that are triggered by system events.  The workflows send emails or create activities, depending on the recipient’s profile.  For example, the workflow below checks first to see if the recipient has an email address.  If so, then it sends an email immediately.  If not, then it creates a letter activity immediately, giving it a specific subject line.  This letter activity will remain open for the next step.

Step 2: Print

The next step is to locate recipients who need a letter.  Using CRM’s advanced find feature, you can build a search that will find any recipient who has a letter activity with a certain subject line that is still in the open status.  Letters in the open status still need to be printed and sent.

 I recommend that you save this view or create a system view so that you can find the recipients with just a few clicks the next time:

Once you have the list in front of you, now you can take two paths.  First, you can use the native CRM mail merge to author and print a letter for each recipient.  You can start with an existing template or create a new one.  Once you are finished, you can save the template for next time.

Mail merge is great for most letters but does have two limitations you should be aware of.  First, there is a limit to the number of records you can mail merge at any one time.  The limit is 5000 as of this writing.  Second, mail merge can pull data in from the recipient, or from any related or parent record where there is an N:1 (many-to-one) relationship.  It does not allow you to pull in information from related records where there is a 1:N (one-to-many) relationship.  If you think about it, it kind of makes sense since Microsoft Word expects a single row by row source of recipients, there is no way to tell Word how to handle one-to-many type “detail” records for your recipient.

If you find you need to get around the 5K or one-to-many limits, you can create a SQL Reporting Services report to fill the gap.  In this case you build the report, typically in Visual Studio or Report Builder, and then publish the report to CRM.  When you build the report, you can bring in data from anywhere in CRM, and users will be able to print over 5,000 pages, assuming the printer can handle the load.  Be sure to set the “display in” related records options when you upload the report, so that the report is available in the same toolbar as the Word mail merge button.

Step 3: Complete

Finally, you need to tell CRM that the recipients are now done so they do not show up in the next search.   In general there are two ways to do this.  First, you can close each letter activity individually.  I prefer to create a “Close Activity” workflow for this so that you can highlight several activities at one time and then close them in batch. 

Second, you can write a workflow that you can run from the recipient level to close the related activities.  This one is a bit trickier.  You will need to write a .NET custom workflow assembly to find all related activities with a specific subject line and then build a workflow at the recipient level to call the custom assembly.  If you have the basic .NET skills to do it, that method is better since you can run the workflow using the same advanced find search you created in Step 2.


That’s it – so there are three steps in the TPC Method: Trigger, Print, and Complete.  Most of this uses native CRM functionality, with a few options to enhance the end user experience with SQL Server Reporting Services and a custom plug-in if needed.

Posted in CRM 4.0 | 1 Comment

10 Steps For Better Note Taking (for Requirements Gathering)

As a consultant your job is often to play the role of business analyst, gathering requirements from stakeholders, clarifying ambiguity, and then organizing all relevant information in a format that is clear to everyone.  The first part of that journey begins as you are meeting with clients, discussing their challenges, asking better questions, and taking notes along the way.

Techniques to take great notes during those meetings is crucial, but often never discussed.  Everyone has their own style and method.  This is an area I’ve struggled with in the past and so recently have paid close attention and calibrated my technique a bit to help.

The following is a general technique that can be used in different types of projects and scenarios.  It works great for meetings held over the phone.  It can also work great for in-person meetings, however I recommend bringing a fellow note-taker along who also knows the technique and can handle it for you.

Step 1 – Start with Four Sections

Start with a blank notebook, either real or virtual (I happen to use Microsoft OneNote).  Add four sections with some area underneath and the following labels: Problems and Pain Points, Facts and Processes, Solution Ideas, and Action Items.

Step 2 – Ask Open Ended Questions to Get Going

Unless you or one of your stakeholders have already thought things through, you need to open the meeting.  State the objective of the meeting and get going by asking some open ended questions.  Open ended questions are questions that do not have a simple yes / no or multiple choice answer.  The other person must talk through the answer, which gets them thinking more about their needs.  Questions that start with “Describe for me…”, “Help me to understand….”, or “Tell me about….” are open ended questions.

Step 3 – Expect to Bounce Around

People will naturally tend to bounce around between pain points, solution ideas, processes, facts, and action items.  They won’t give this information to you linearly.  If you come from a software development background like me (or tend to think analytically), then you’ll find yourself wanting to first discuss challenges, then move on to processes, then move on to solution ideas, etc.  But most people simply don’t think this way.  Just enter your note under the most appropriate section and let the conversation flow freely.

Step 4 – Jot Keywords and Phrases Only

Write down keyworks and phrases only.  Don’t try to capture every sentence.  In a later step, you’ll take these bits and pieces and flesh them out more.

Step 5 – Ask Closed Ended Questions to Confirm Understanding

When the conversation is winding down, begin to ask closed ended questions to confirm your understanding.  Often times what a person says can have multiple meanings, so after they’ve had a chance to talk for a while, start to ask closed ended questions to confirm which meaning they intend.  Closed ended questions look like “So given the choice between X and Y, you would prefer X because it gives you better management capability.  Is that correct?”, or “So basically you can’t create those types of reports because your current tool lacks the capability, right?”.  Then write those keywords into the appropriate section.

Step 6 (Crucial) – Schedule 30 Minutes Immediately After for Cleanup

This step is crucial, and is also the one most often overlooked.  Before the meeting even starts, schedule 30 minutes on your calendar for wrap up.  Now is the time where you will look over all the keywords and phrases that you added and immediately turn each one into a sentence.  Turning each into a complete sentence is key, as this will enable you to send the notes for confirmation, save you time later when writing your deliverables, and save you from having to remember what some random phrase like “mlk – ask pos jump” means three weeks from now.  At this time, you may also move items around as needed, but keep the four sections intact.

Step 7 – Circulate for Confirmation

Now that you have nice clean notes, circulate them to everyone at the meeting for validation.  Circulating your notes will send the signal that you appreciate their time, that you listen, and ultimately will make them more accurate.  This can be a bit intimidating at times, especially when you have to make assumptions and fill in meaning, but that’s the idea – turn it into a collaborative process and you’ll save time and build trust simultaneously.

Step 8 – Add Challenges To Your Business Case or Project Charter

Copy and paste the challenges identified into your business case or project charter.  This is another reason while scheduling that crucial time immediately after your meeting is important – the work will already be done and will be closer to the truth of what was discovered during the meeting.

Step 9 – Turn Solution Ideas into Additional Sessions or into Requirements

Take the solution ideas identified and decide which deserver their own meeting.  Dive further into the specific pain points, processes, solution ideas, and action items for that specific requirement.  Or, if the information is good enough to write the requirements, then do so.  Repeat this process until all stakeholders are satisfied that the project requirements have been captured.

Step 10 – Manage Action Items

Finally, log your action items into some system for follow up.  Include them in a weekly status, keep them in a notebook, Outlook, SharePoint.  These particular types of notes can be easy to forget and quickly get buried in an inbox or tucked away at the bottom of the document, so bring them to light and hold people accountable for getting them done.

That’s all!  Anyway that was a process I’ve followed recently and thought I would share.  What do you think?  How do you take notes?

Posted in Consulting, Project Management | Leave a comment

XRM Dashboard

In case you missed this a few months back, here’s a nifty video demonstrating how interactive you can get with Silverlight + CRM.

Posted in CRM 4.0, Silverlight / WPF | Leave a comment

This Week’s Theme: Visual Studio 2010 and Silverlight 4.0

This week’s theme is Visual Studio 2010 and Silverlight 4.0.  Apparently one of the areas Microsoft has focused on in Silverlight 4.0 is in developing line of business applications.  This week we’ll explore some of those capabilities and what the new platform has to offer.

I’m going to get started by downloading and installing everything, thanks to Scott Guthrie’s post.

Posted in Silverlight / WPF | Leave a comment

CRM Analysis: Clarifying Business Challenges, Solutions, and Impact

One of the challenges faced when beginning CRM requirements gathering is knowing where to start.  Companies don’t implement CRM systems just because they need a CRM system.  There has to be some business problems and goals to solve that drive the reason behind the project.

Fortunately, common themes have emerged over the past decade when looking across the broad spectrum of CRM implementations.  These themes can be cataloged and standardized.  This has the advantage of giving companies a place to start when determining and documenting their own CRM business problems.  It also opens the possibility that a standard set of evidence and impact statements can be defined across the industry to help map these challenges to product features.

For example, one common challenge faced in managing CRM leads is in relating the CRM leads back to marketing dollars spent on the lead sources.  How do companies determine which lead sources are most effective, and therefore which sources to budget additional dollars in for the next period?

The description of this challenge can be standardized:

Unable to Determine Lead Source Effectiveness – Lead sources are not tracked or are tracked inconsistently.  Information about which leads are qualified is missing.  This makes it impossible for marketing to know which lead sources were the most effective.

This is one such example.  A catalog of such examples would list these challenges in a common format, giving companies a way to evaluate their own issues against the standard.

But challenges are only one side of the equation.  The next step would be to list common solutions to the challenges and specific product features or add on products that are meant to address them.  Or, if a technology solution is not the answer, then perhaps a business process or training issue is in order.  Either way, the catalog would help businesses to generate ideas to solve problems within their own organizations.

For example, one common solution to this problem is:

Lead Capture and Metrics – Provide a centralized place for salespersons to track leads.  Require or recommend that the Lead Source field be captured during data entry.  Ensure that leads are being qualified and converted by comparing the assignment date on the lead to the conversion date of the lead and following up with individuals whose lead conversions consistently fall out of range.

Finally, the business impact of fixing the issue should be noted.  This separates the problem “pain points” from the benefits of resolving the problem.  In the example above, the business impact would look something like:

Increased Return on Investment of Marketing Spend – Dollars can be directed towards lead sources that have the highest rate of conversions, increasing return on investment.

Having such a catalog could be used during the analysis and discovery phases of CRM projects to drive questions to ask the business units of the organizations that are having the challenges.  Once these challenges are identified, they can be selected and reported in an analysis document or project charter, highlighting the high level business requirements and overall justification for the initiative.

Standardizing the names and language of the challenges, solutions, and impact decreases the amount of time that additional business analysts familiar with the catalog can get up to speed on the solution.  This is often useful in cases where multiple analysts are working with the organization, or where over time a comparison is needed to determine if the solutions implemented are indeed solving the problem.

Using a catalog would also help to ensure that all areas of the solution have been discussed.  By scanning through the challenges, additional areas that would not have been identified through open ended solicitation may surface and can be analyzed further.

There would be entries that seem to apply across all industries.  Other entries would be very industry specific.   Other types of information, such as average length of time to implement a solution, standard reporting metrics, or user adoption issues with implementing could be appended as needed.

Having a CRM CSI (Challenges, Solutions, Impact) catalog is no guarantee of a successful implementation and is not a substitute for full discovery elicitation.  However, applying a standard diagnostic tool to organizations would serve as an excellent place to begin the process, increase the chances that most requirements have been captured, and reduce the amount of time to identify issues and to frame the business value of CRM.

Posted in Consulting, CRM | Leave a comment