Archive for August, 2008

Making Sense of Server Roles

August 21, 2008 Leave a comment

One of the many things that was introduced with Dynamics CRM 4.0 is the concept of server roles.  Available only with the Enterprise license of Dynamics CRM, server roles provide quite a bit of flexibility is controlling what components of the solution run on each server in a multiple server deployment.  However, with flexibility comes confusion.

With Dynamics CRM 3.0, the choice was quite simple when you had a multi-server deployment, there wasn’t one.  You installed the app on the first server and chose to create your new databases.  Then, on the other servers, you installed the same bits as on the first server, but you just pointed to the existing database.  No decisions needed, but every server ended up doing the same types of processing.  If you had a lot of workflow running on your system, the same servers that handled your end-user requests via the web pages also handled the workflow engine.  As a result, user response times could be impacted when there was a heavy workload being handled by the workflow service. 

Now, there are more options than most people need to care about.  In my role, I interact with our various project teams working on systems that will support anywhere from a few hundred users to systems that will support several thousand users.  A large number of our implementations have multiple servers more for redundancy and failover than they do for performance.  In fact, if it weren’t for the need for failover, many of these would have a single server with CRM installed on it.  They can exist just fine with the “all on one” installation and don’t need the extra complexity of worrying about the server roles.  As user counts grow and increased complexities of the deployment come into play, splitting out the server roles onto separate hardware begins to make sense.

Available Roles

The following table lists the various server roles that are available with Dynamics CRM 4.0.  The table also lists the Role Name used in the installation XML configuration file to choose the indicated role:



Config Role Name


SRS Data Connector


Run reports.

SQL Server


Installs the components required on the SQL Server where the Microsoft Dynamics CRM databases are maintained.

Application Server


Runs the Web application server used by the end users.

Asynchronous Processing Service


Process queued asynchronous events such as workflow, asynchronous plugins, bulk e-mail or data import.

Deployment Service


Provides the web service end points for the Deployment Service SDK APIs.

Discovery Service


Provides the web service end points for the Discovery Service.

Help Server


Provides the Dynamics CRM Help.

SDK Server


Provides the web service end points for the core SDK APIs.

The roles listed above can only be individually selected by doing a command line install and leveraging the <Roles> node.  You may have noticed that the standard Application and Platform roles that you can select during the installation wizard are not listed.  There is a reason for that.  Those are not really roles, but are really role “groups”. 

When you choose these groups, you are actually installing several of the roles from the above table.  This capability makes installing easier for most situations by installing the core roles needed for the 2 most common server deployments.  The following table lists which roles are installed when you choose these groups:

In general, these groups will serve the needs of most deployments that want to separate processing.  The Platform Server group will be able to handle the tasks that operate in the “background”.  Things like workflow, asynchronous plug-ins and bulk jobs.  This separates out this “batch” processing from the Application Server machines allowing them to focus their power on servicing the end user requests.

One thing to notice is that the SDK Server is installed with both groups.  This means that any server that has one of these groups installed can service standard SDK calls for the implementation.  So, even though a Platform Server exists, web pages that have been developed that use the SDK APIs can be services on the same machine as the rest of the web requests.  This minimizes web traffic across the servers and can be important when it comes to evaluating performance.

When would I split out the roles?

So, if many solutions can rely on a basic deployment, why would you want to separate the roles?  There are definitely a few situations that come to mind where splitting out the various roles can make sense.  Some of them that come to mind are listed here:

1) A deployment that is supporting several CRM Organizations leveraging the multi-tenant capability of Dynamics CRM 4.0.  Focusing the different server roles on dedicated hardware can provide some better options for managing capacity within the data center and provides some better options for scaling out the infrastructure as the need arises.

2) You have a solution that includes a lot of integration with other systems that make heavy use of the CRM SDK calls.  In this scenario, you might choose to install the SDK Server role on the integration server (or even a server hosting another application that makes CRM SDK calls).  With this approach, the SDK calls can be made to the local SDK web service end point, eliminating a network hop to the CRM server.

3) Your solution includes heavy “batch” processing that would be handled by the Async server.  When you have a high amount of processing that is being handled by the async service, and that service runs on the same machine as the web application, there will be competition for server resources between the web application and the async service.  This can result in slower response times as the web application fights for resources.  Moving the async processing to separate hardware allows the web server to focus its resources on servicing end user requests.


So, there are more options now than we had with Dynamics CRM 3.0.  That can be both bad and good.  I like the options that I now have for our larger clients.  Especially those that have several internal deployments of CRM that leverage the multi-tenancy capabilities that CRM 4.0 provide us.  But, as I’ve mentioned above, it’s just as important to make sure that you are using server roles for the right reasons and not just because they are there. 

One really nice thing about the way they have put all this together is that it is easy to start small and add later.  If you aren’t sure you need to split out the server roles, then don’t.  Start with all your servers running all the roles.  Then, over time, monitor the servers and determine if you need to split out the Platform Server Group from the Application Server Group (the most common next step).  You can easily reconfigure your deployment to account for this later without incurring any downtime, all it takes is a little planning.  You can also add additional servers to the deployment later as you decide to scale out the various components.

So, do your planning, but don’t get overwhelmed by the options.  Remember, keep it simple in the beginning and add the complexity later if it’s needed.

Matt Parks


CRM Accelerators – Part III – Event Management Accelerator

August 20, 2008 Leave a comment

Event Management Accelerator – Due to be released in Q3 2008

The event management accelerator gives companies the ability to easily manage the planning, execution, tracking and reporting requirements for events. The event management accelerator focuses on three areas of event management, namely:

  • Event Planning – logistics around an event such as:
    • Booking the venue
    • Presenters
    • Catering
    • Presentation content preparation
  • Event Attendance – all aspects around managing the attendees such as:
    • Inviting the target audience via phone, fax, letter and email
    • Managing registrations via phone, letter, fax, email and web
    • Tracking all people who actually attended the event
  • Event Review – Microsoft Dynamics CRM reports that measure the effectiveness of the event:
    • How many people attended the event?
    • What was the revenue impact of the event?

A core component of the event management accelerator will be a web application that customers and partners can deploy to allow Web registration for their events and track these registrations in Microsoft Dynamics CRM.

The web application will also provide location mapping integration using Microsoft Live Maps!

The following image is taken from the beta version of the Event Management Accelerator:


Kind regards,

Reuben Krippner

Microsoft Dynamics CRM On-Premise and On-Demand: What’s the Difference?

August 18, 2008 Leave a comment

As part of Microsoft’s CRM strategy to deliver the “Power of Choice” to customers and partners, we offer Microsoft Dynamics CRM in a variety of subscription or ownership models:

  • On-premise: Customers purchase the licenses and run the application on their own servers.
  • On-demand: Customers subscribe to the software service on a per user per month basis:
    • Partner-hosted: Microsoft partners host the application in their facilities on behalf of customers, and provide customer service and support.
    • Microsoft-hosted: Microsoft Dynamics CRM Online is hosted in Microsoft corporate datacenters, delivered to customers over the Internet.

With all the deployment choices offered, people often ask about the differences between them. Let me start with the similarities:

  • All are based on the Microsoft Dynamics CRM 4.0 code base, making it easy for customers to migrate across on-demand and on-premise deployments.
  • The core functionality of Microsoft Dynamics CRM is the same regardless of how it is deployed, offering a full-suite of Sales, Marketing and Service functionality – as well as workflow automation and customization capabilities.

Where the deployment options differ is in the level of customization available and authentication mechanisms used. The table below shows a comparison between the on-premise, partner hosted and CRM Online solutions:




Partner Hosted

CRM Online

Authentication Method

Active Directory

Active Directory

Windows Live ID

Authentication Interface

Integrated Active Directory / Forms based

Forms based

Windows Live ID

Custom Entities



Yes (100/200)*

Custom Workflow



Yes (100/200)*

Form Scripting & Events (Jscript)




Custom Reports Built with Ad-hoc Wizard




Dynamic Export to Excel




* The number of customer entities and workflows depends on the product edition

Since the capabilities are essentially the same across all deployment models, the decision to go on-premise or on-demand should be driven by criteria such as budget, existing IT infrastructure and resources. For more information on the offerings available visit


Stephanie Dart

CRM Accelerators – Part II – eService Accelerator

August 18, 2008 Leave a comment
Last week we introduced the Analytics Accelerator which is part of the CRM Accelerators for Microsoft Dynamics CRM customers and partners to be released in the next few months, each week we will unveil more details of each accelerator. In this article we feature the eService Accelerator.
eService Accelerator – Due to be released in Q3 2008

The eService accelerator provides businesses the ability to deliver self-service capabilities to their customers while tracking and managing these interactions in Microsoft Dynamics CRM.

Customer Service is generally considered a cost center where cost-savings and productivity are the top priorities for most businesses. This stands in stark contrast to marketing and sales which is usually viewed as a profit center where revenue generation is the focus. People that manage call centers or customer service operations are constantly looking for new processes and technologies that can help them drive customer service efficiencies. Essentially, they want to service more customers at less cost while at the same time maintaining (or even improving) customer satisfaction. This can be a difficult equation for organizations to solve.

eService provides the mechanism to help businesses solve that difficult equation. At its core, eService is comprised of a range of technologies that allow businesses to provide online support to customers, which can “deflect” calls and in-person visits, or at minimum reduce a portion of the cost to manage a service issue. As demographics shift worldwide and Internet technologies become more pervasive, many customers prefer to use an eService channel.

The Microsoft Dynamics CRM 4.0 eService accelerator provides customer self-service capabilities (via a web portal) as a configurable out-of-the-box offering. The web self-service portal exposes the following CRM functions to customers:

  • Customer authentication into the portal and workflows to manage the setup of a contact as a web self-service customer.
  • Customer profile updates to contact details; this capability is configurable allowing organizations to choose which attributes of the profile they want to expose to the customer portal such as name, contact details and communications preferences.
  • The ability to view, create, edit and close service cases. There are two permission levels available to web portal customers:
    • Account-Level: these customers can view and modify all cases raised against the account they are associated with.
    • Contact-Level: these customers can only view and modify service cases that they themselves have raised.
  • Online service scheduling allowing customers to search for convenient times and then book service appointments with the organization.
  • Search against the Microsoft Dynamics CRM knowledge base (KB) using keywords. Once the appropriate KB article has been located the customer can then email that article to themselves or others.

The accelerator can either be used within the customer’s own web portal or they can use the pre-built portal solution provided by Microsoft in the ASP.NET 2.0 Small Business Starter Kit All source code from the customer portal solution is provided so that customers and partners can extend the solution further and tailor it to their specific business requirements.

The following images are taken from the beta version of the eService Accelerator:


Beta sample Customer Profile edit page


Beta sample KB Search page


Beta sample Service Scheduling page

Kind regards,

Reuben Krippner

MS Word Proposal for CRM Online

August 18, 2008 Leave a comment

Over the last few months, I’ve presented at 3 conferences ( Tech Ed, IT Pro, ms internal – Tech Ready ) about building software as a service solutions with Microsoft Dynamics CRM. Now that all the conferences are over, I’m making more of this content available.

I’ve created a video repro of the solution demo.

Also available from the home page.

This is a nice example to demonstrate the value of software + software as service.  The demo show CRM Online data being hosted in Word and inserted into a Word document. Dynamics CRM offers you other means without custom code to get data into Word, Office, Outlook, and Excel. The advantage of the proposal solution is that you get much more flexible control of content format and the interface is very user friendly.

I’ll be posting more video’s showing how to build the solution.

Jon White

Client Extensions and Scripting Samples in the SDK Part 1

August 11, 2008 Leave a comment

I want to call attention to some of the client extension and scripting samples included in the SDK. There are a number of new capabilities and samples sprinkled throughout documentation. People who have been working with Microsoft CRM for a long time may not have noticed unless they make it a habit to compare each new release of the SDK with the previous versions or read the release notes very carefully.

When creating samples for the SDK we have to be very careful not to include anything that is unsupported. Many of the samples are brief and very simple. But where possible we have tried to include samples that begin to approach some real business problem solutions within the constraints of strictly supported methods and constraints on length. These aren’t intended to be full production quality solutions -but they should provide some ideas about how to apply and combine different techniques.

If you have any samples that you would like to see, or feedback on the existing samples please let me know.

Here is a list of a few selected newer samples, I’ll discuss five more in my next post.

Add Customer Address data to the Case record form.

Integrate Live Search into your forms

CrmService method samples

Add Customer Address data to the Case record form

We were looking for a sample to illustrate how the CRM Web Service RetrieveMultiple message can be used in client-side JScript. I worked with Microsoft Dynamics CRM Developer support and they suggested that a common scenario is to add Customer address information to a case form. The result is the sample Retrieving Data from Related Records.

This sample will not work with Microsoft Dynamics CRM Online as written because it requires an html page to be placed on the server. But I’ve been thinking that it could work in Microsoft Dynamics CRM Online if the HTML page could be generated in script defined for the button in ISV.config. If this is something you are interested in or have done – let me know.

Integrate Live Search into your forms

There are actually two samples that show how to do this.

The first is Add Search Capability to a Form Using an IFRAME. This is a really easy method that illustrates how an IFrame can be used to host an external page and how code can interact with it to create a useful tool. However, it displays all the Live Search branding and advertisements. Despite how much we love Live Search here at Microsoft, I can see how that might be a little distracting.

The second is a bit more sophisticated: Accessing Other Web Services. Ultimately the goal here was to show an example of how a web service external to Microsoft CRM could be used. In addition, the web service needed to be a web service that Microsoft provides. Finally – I wanted to create a sample that didn’t require any files on the server so it would work with Microsoft Dynamics CRM Online.

I wanted to make this something that would potentially useful, so I used the Live Search Web Service SDK to generate a more subtle search functionality and remove all the Live Search branding. Now the Live Search team has a cool interactive SDK on their web site to provide the server side code to call the web service – but our sample is all JScript.

The end result looks like this:


The search results are displayed in an IFrame based on the text in the Company Name field. The HTML for the search results is all injected into the contentWindow property of the IFrame using script.

The major drawback for this sample as it is documented is that it only works for the onChange event when the Company Name field is changed. The code could also be configured to work when the form onload event occurs, but doing that required a few lines of code that uses an unsupported technique and could not be included in the SDK or in this blog (See Unsupported Scripting). We don’t support definitions of event handlers or functions in event scripts because it may introduce complications during an upgrade. But I know this wouldn’t stop many of you reading this. Let’s just say that the IFrame contentWindow may not be ready to be written to when the onload event code fires. The IFrame loads asynchronously to the rest of the form. If there were a way to wait for the readyState property of the IFrame to indicate that it is finished loading (‘complete’), the code would work just like it does in the OnChange event. Remember – any unsupported techniques might not upgrade gracefully. The way this works (or doesn’t) could change in future versions.

CrmService method samples

I admit I struggled for a while trying to find good way to generate code samples showing how to call Microsoft Dynamics CRM web services in JScript. Unlike the strongly typed Server side code samples, we weren’t going to have the resources to create full reference information and samples for calling each of the Web Service messages using JScript. At least we could mirror the basic method samples available for the server-side code.

At the time, before Microsoft CRM 4.0 was released, it seemed that everyone was using Fiddler. The first sample I created was a basic walk through (Capturing Sample HTTP Requests) using Fiddler calling a WhoAmI message where I basically documented what I learned along the way. Later, I used Microsoft CRM MVP Michael Hohne’s solution to capture generate these script samples based on the strongly typed .NET code. I highly recommend Michael’s solution.


I hope that you found something you didn’t know was in the SDK.

In my next post I’ll cover :

• Add default form data values using QueryString arguments

• Create Activity Record Templates

• How to Control Update Access for a Field

• Get GUID values for items selected in grids

• OnSave Event Modes

If you have any questions or comments about the samples – or ideas about new samples you would like to see. I’d love to hear from you.

Jim Daly

CRM4 Outlook Client – Issues and Fixes

August 8, 2008 Leave a comment

In the past several months since the release of the CRM 4.0, we’ve had the usual stream of customer issues come in through our support channel. No software is bug free and even with all the rigorous testing that we do, there are things that get overlooked.

CRM for Outlook is a product surface that gets a lot of end-user exposure and we hear loud and clear when our customers are hitting issues. Our support and engineering teams regularly work together to address these post-ship bugs and release hotfixes which focus on customer satisfaction with maximum impact. Though we have more fixes in the pipeline, I wanted to take a few minutes and acknowledge that we hear your pain and pass on info for fixes to common problems that exist today.

Note: The hotfix package for KB950088 is a cumulative hotfix which resolve all the issues below.

1. Outlook hangs during initialization (progress toolbar displays “Loading…” and never finishes)

This must-have fix is likely the most common perf/stability issue out there, especially on Outlook 2007. This fix resolves the issue. A current workaround exists by turning off the To Do bar.

2. With E-mail Auto Promotion Enabled, Outlook may not close cleanly/properly.

This fix addresses a memory allocation issue that can occur somewhat unpredictably. If your users are using e-mail auto promotion, I encourage you to deploy this hotfix.

3. Contacts with birthdays earlier than 1/1/1970 causes Outlook to crash

This was caused by an API change by one of our dependencies.

4. Items in Shared Calendars will report Sync Issues

We do not support Shared Calendars in CRM 4.0, we encountered a couple of cases where some code was getting executed against a shared calendar and causing problems.

5. Cannot Promote an E-mail where the name of the attached file contains a ‘&’ symbol.

If the attachment to an e-mail contains the ‘&’ symbol, it will fail to track in CRM.

6. Selecting Dismiss on Outlook Calendar reminder for Service Activity causes record to change Status Reason back to default value for that record.

Selecting Dismiss on Outlook Calendar reminder for Service Activity causes record to change Status Reason back to default value for that record  (not yet published)

7. OWA Sent Emails Get Stuck in Outlook Draft Folder When Outlook Is Open And CRMADDIN is Enabled

When you have both Outlook and OWA open, and you have the Microsoft Dynamics CRM client for Microsoft Office Outlook installed, and you send an email form OWA, the email will be stopped in the Draft folder instead of being sent

Smiti Shah