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.

Conclusion

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.

Conclusion

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

8 Tips for Using Microsoft Project

Microsoft Project as a tool has the potential to make your life easier, like any other tool.  It also has the potential to be abused, like any other tool. 

There are a few secrets I’d like to share here on how to use Microsoft Project to make your life easier, and how to avoid abusing it and making your life miserable.  These tips come from the school of hard knocks – basically a lot of trial and error from me abusing the tool originally and then finally settling in to the zen of MS Project. 

1)      Let Project Do the Scheduling – This sounds easy enough.  Often times though, you already have some idea about the end date or about the way the work should flow, and then try to model those dates and flow using the tool.  I call this the “working backwards” approach.  You start with a date that things are due and then try to work backwards from there munging the tasks to make them fit that date.  You will soon find yourself in and endless trap of changing resources, dependencies, duration, and linking tasks to other tasks.  It’s far better to start with a blank slate in MS Project, fill in the tasks and general order, link the dependencies, fill in the durations, and then assign the resources, and then let the chips fall where they may.  Think of it as a way to validate that what-someone-several-weeks-ago-decided-was-the-date-to-hit is actually feasible.  If the dates do not align, you have a problem and should escalate that you have an issue. 

Key Takeaways: Do not force Project to your way of thinking.  Let it schedule the dates.  Adjust the durations but don’t bring them in too much. 

 2)      Use Lag Time – Often times you know a task will complete but the other one can’t start for a few days, or perhaps the first task is a deliverable of some kind that requires approval, but you don’t want to go to all the trouble of building in all the approval steps.  The easiest thing to do in these cases is to create a lag from the first task to the second.  First, link the tasks together as normal, then go into the second task’s properties.  Then find the predecessors list and type 2 (or however many days) into the lag column.   Nuff said. 

Key Takeaway: Use lag time to build in waiting and deliverable approval and feedback tasks.
 
3)      Enable the Work Column – This one is a bit more advanced but worth it especially if you are using Project to estimate work.  Add the Work column to the list of columns displayed.  This column indicates the actual amount of effort required to perform the task, as opposed to the duration.  As project managers, these are two very important concepts to keep separate.  It may take a resource a week to complete a task, but they only work on it for four hours in reality.  The trick here is to assign the duration first, then the effort, and then do both of those things before you assign a resource to the task.  Otherwise Project has already allocated that person at 100% for the task and you’ll be messing with % allocations for the rest of the day.  If you screw up, just remove the resource and start over again.  Also pay attention to the smart tag that appears if you adjust the duration or work, it will ask you how you want to compensate for the change.

 

Key Takeaway: Use the Work column to keep durations separate from actual hours.  This is useful for providing costs estimates and also for freeing up that resource to do additional tasks that week or in a shared project pool.

 4)      Start the Project on a Monday – I tend to think in weekly blocks of time for resources.  If you happened to create a new Project file on a Tuesday, then your project will run from Tuesdays to Mondays for the rest of time, and be especially skewed if you have a large number of 5 day tasks.  Immediately after opening the project go into the properties and just change the project start time to a Monday.  Safe yourself the hassle of doing it later. 

Key Takeaways: Adjust your project start date to a Monday.  Do it right away. 

5)      Summary Tasks, Individual Tasks, and Dependencies – Don’t use summary tasks as predecessors.  It’s ok to use them as the dependent (second) task to link to, but just don’t use them as predecessors.  The reason is, it is far better to identify the single most important task in a group of tasks to complete before the next group of tasks or tasks can complete than to say “all of the tasks in this group must complete before moving on to anything else”.  While it sounds like the proper thing do to, especially in the “finish all development before testing can begin” rule, however reality just never works that way and you’ll end up breaking that dependency at some point anyway.  Conversely, it’s ok to use a single task and link to a summary task.  Basically, you are saying that this is the one task in the previous group that has to be done before anything else in the second group can be done.  I also try to avoid that where possible, but it useful if you need to be extra cautious about developing before requirements are finished, or for modeling the last stage in a project, go live – where a signoff task must be complete before any of the go live steps occur. 

Key Takeaways: Don’t use summary tasks as predecessors. 

6)      Change Leveling to Automatic – Once you start adding resources, notice how it schedules Bob to miraculously finish eighteen 8 hour tasks all on the same day?  Way to go Bob!  Actually no, Project just doesn’t level resources by default.  I change this behavior in the Resource Leveling dialog and then only change it back if I have a super long project and the wait time to watch Project level the resources gets annoying.  So if you do turn it off, just remember to level frequently or else what you think is all good will get whacked the next time Project levels. 

Key Takeaway: Use automatic resource leveling.
 
  7)      Schedule Time Off – It’s easy to forget to add people’s time off.  Request this ahead of time and enter it into their personal calendar in Project.  Set a reminder on your own calendar to request this towards the end of each month.  Also use this tactic for resources who are working on other projects for whatever days.

 

Key Takeaway: Update time off or resource conflicts in the calendar section. 

8)      Schedule Recurring Appointment to Update – As a final word of advice, I encourage you to set up a weekly recurring calendar appointment with yourself, preferably on a Monday, to open your MS Project plans and update them back to reality.  Project is a tool to guide the process and look ahead and can quickly get out of date with reality if you don’t keep up with it.  If you have the discipline to do this at the end of each day, far better.  It’s a bit like cleaning your house.  You can either pick up for 5-10 minutes each day, or pick up for 2 hours every two weeks.  The problem with the second approach is that you just really don’t feel like spending a huge block of your time cleaning and so you either ignore it, postpone it until it gets worse, or do it but get interrupted by other priorities in the process.  The problem with the first approach is that it is very easy to say forget it – I can always make up those 5 minutes tomorrow.  Then tomorrow you can make up those 10 minutes the next day, etc.  Just invest that 5 minutes and get back your two hours. 

Key Takeaway: Feed MS Project 5 minutes a day. 

That’s all I have for now.  Please let me know what real life tips you have for using Project and if any of these resonate (or do not resonate) with your own style.

Posted in Consulting, Project Management | Leave a comment

Danzon No. 2

I heard this on the radio this morning, and thought it was fantastic!

Posted in Music | Leave a comment

A Business Intelligence Primer

I’ve been refreshing my skills in the area of BI.  Here are some links that I found useful so far in my first week.

This one is a really good introduction into the Microsoft BI stack, with a little advice on how to approach BI projects in general.

http://technet.microsoft.com/en-us/magazine/2009.08.introtobi.aspx

To understand BI, you have to eat, breathe, and sleep cubes, facts, dimensions, and measures.  This article lays it all out visually for you.

http://msdn.microsoft.com/en-us/library/ms174587(SQL.90).aspx

Most of these are way over my head at this point, but something to come back to once you’ve played around a bit, made some mistakes, and want to learn best practices.

http://kimballgroup.com/html/articles.html

Posted in SQL / Database | Leave a comment