Microsoft CRM 3.0 SDK

banner art

Welcome to the Microsoft CRM 3.0 Software Development Kit (SDK). This SDK contains a wealth of resources, including code samples, that are designed to help you build powerful vertical applications using the Microsoft CRM platform. It includes the following sections:

Server Programming Guide – A guide for developers writing server side code, custom business logic, integration modules, workflow assemblies and more. This guide provides an architectural overview of Microsoft CRM, the entity model, security model, Web services, and sample code.

Client Programming Guide – A guide for developers customizing the Web or Outlook clients, including scripting, integration of custom Web pages, and sample code.

ISV Programming Guide - A guide for independent software vendors (ISVs) developing installable add-ins for Microsoft CRM.

Report Writers Guide - A guide for developers writing reports for Microsoft CRM using Microsoft SQL Server Reporting Services Report Designer.

Appendix A: Security Roles and Privileges - A detailed list of the roles and privileges provided.

Glossary – A glossary of definitions for the terminology used in this document.

The Microsoft CRM 3.0 SDK includes documentation that provides a wide range of instructive and practical information. Besides a comprehensive class library reference, the documentation offers conceptual overviews, application integration details, schemas, and sample code. To help you locate the information that interests you the most, see Getting Started, which lists the main areas of the documentation.

Before you can use this SDK effectively, it is very important that you have Microsoft CRM 3.0 installed. To ensure a successful installation, follow the detailed procedures in the Readme and Microsoft CRM 3.0 Implementation Guide. These documents describe the essential steps to setting up the environment before installing Microsoft CRM 3.0. The Microsoft CRM 3.0 Implementation Guide is now available on the Microsoft Download Center at:

For detailed information about changes to this documentation, see Release History.

Release Date
SDK Version 3.0.7, April 2007

Release History

The following table describes the release history for the Microsoft CRM SDK.

Release New and updated topics Description of changes
Version 3.0.7, April 2007   Bug fixes.
  Callout Sample Added note to the sample code: Microsoft CRM 3.0 callouts must be created with the .NET Framework version 1.1. Visual Studio 2003 supports this version of the .NET Framework.
  Configuration File Reference Added note specifying that entity name must be lower case.
  Callout Method Signatures Added information regarding using override keyword for callout signatures.
  SubArea Fixed bug in specification of the Client attribute for SiteMap SubArea.



Fixed bug in description of these messages that incorrectly indicated that these messages worked only on leads.


















Fixed bug in table that incorrectly indicated that the fields are valid for update. Added remarks to createdby, createdon, modifiedby and modifiedon fields for every entity specifiying that the value of the field is set by the system.
Version 3.0.6, March 2007   Fixed broken links throughout document.
  Callout Source Code Sample Updated sample code.



Added related entity information for the field regardingobjectid.

Fixed type information for the campaignitem.entitytype attribute.

  Client Side Scripting Bug fixes.
  Create a Customer Relationship Added sample code showing how to create a customer relationship.
  Create an Opportunity and Set a Picklist Added sample code showing how to instantiate types when creating an entity instance.
  CrmDateTime.Value Field

ExecuteFetch Message

Merge Message

PublishXml Message

UploadFromBase64DataActivityMimeAttachment Message

UploadFromBase64DataAnnotation Message

Bug fixes in sample code.
  How to Retrieve Status Codes Added Visual Basic .NET version of this sample.
  Perform Bulk Delete Added sample code showing how to perform a bulk delete operation.
  Performance Best Practices Added topic describing best practices to help you write better performing code.
  Pricing Methods Added Pricing Methods topic.
  Related Documentation Added links to Microsoft CRM related content such as blogs, and so on.
  Report Development Environment Updated information on tools required for report development.
  Sample Code Reorganized sample code topics for ease of use.
  SetBusinessSystemUserRequest Class Corrected inconsistency in documentation. A value must be provided for the SetBusinessSystemUserRequest.ReassignPrincipal Field. Added sample code to the SetBusinessSystemUser Message.
  SystemUser In order to create an instance of a system user entity, the user must already exist in Active Directory.
  TargetOwnedIncident Class Bug fix. The documentation incorrectly stated that an incident can be assigned to another user using the Assign message. The incident entity does not support the Assign message.
  Using the Paging Cookie



Added a description of how to use the PagingCookie in queries.
Version 3.0.5, June 2006   Updated the file SDK Readme.htm with known issues and workarounds. This can be found in the download version of the SDK at
  Accessing Web Services Added new topic that explains how to access the Microsoft CRM Web services from your custom scripts.
  Callouts: Supported Callouts for Entities Bug fix: removed Route from the list of events for which callouts can be triggered.
  Callouts: Support for Version 1.2 Post Callouts Added information on enabling version 1.2 post callouts after upgrade to version 3.0.
  Client Programming Guide: Form Object Model Updated information and samples for:

Form Properties

Lookup Field Type

Customer Field Type

Date/Time Field Type

  Client Programming Guide: IFrame Support Added information about passing parameters to an IFrame. Also added a note regarding support for IFrames in the Outlook Client.
  CrmDateTime Bug fixes in the description of supported formats for date/time strings.
  CrmService Entities Completed attribute documentation for all entities.
  CrmService Enumerations Added state and status reason mapping to all state enumerations.

Added values to all enumerations.

  CrmService Messages Updated sample code for the following messages:




  Dynamic Entity Targets Bug fixes in the Dynamic Entity sample code.
  Finding the ID of an Entity Instance Added new topic describing multiple ways to find the entity instance ID of a record for use in SDK methods and messages.
  Helper Code for ISVs Updated the IsvReadiness sample code:

Added new types: OnErrorType, PreCalloutType, PostCalloutType.

Removed one type: CalloutType.

Added new methods to the CalloutConfigCustomizer class.

  How to Work with Lookup Form Controls Added sample code scenario to client side SDK.
  Mapping from Version 1.2 Added information regarding the deprecated 1.2 methods for uploading attachments.
  Privileges by Message Added the set of privileges required for each message.
  Report Development Environment Added information on how to develop reports using a text editor instead of Visual Studio .NET.
  Retrieve the Status Codes for Account Added a sample demonstrating how to use the metadata Web service to retrieve the possible status codes for the account entity.
  Sample Code Updated the following code samples:

Retrieve the Localized State Name

Route an Incident from a User to a Queue

Added new code samples:

Convert a Dynamic Entity to a Core Entity

  Security and Impersonation Expanded the description of impersonation.
  Serializing Callouts Changed example code to work around a memory leak in ASP.NET 1.1.
  SetStateContract Added information to the SetStateContract message specifying the requirements that must be met to set the state of a contract to Invoiced.
  Support for Biz Talk 2004 Added section on support for BizTalk 2004.
  Using CRM Attribute Types Updated information regarding the mapping of types from the CRM application to the SDK types. See also Dynamic Entity Classes.
  Using Dynamic Entity Bug fixes in the Dynamic Entity sample code.
Version 3.0.4, March 2006 MetadataDiagram Added project and solution files, removed duplicate entities, added excluded entities and relationships to the sample code.
  Business Logic Extensions (Callouts) Added documentation for PostDeliver and PreSend callouts.
  Callout Configuration Added improved sample code for determining which entity attributes can be used in a callout.
  Callout Configuration File Reference Added information to the topic on callout configuration.
  Customization File Reference Added detailed reference information about the schema of the import/export customization file.
  Field Types, Properties and Methods Bug fixes in documentation for String and Picklist types.
  Form Properties Added information about the various form types found in the SDK.
  IFrame Support Added information to the topic on IFrame support.
  ISV Guidelines Added a book that contains guidelines for people creating add-ons for Microsoft CRM.
  Microsoft CRM Entity Model Updated entity model diagrams throughout the entity model topics. Added Key to Entity Diagrams to explain color coding for new diagrams.
  Registry Settings Added registry keys used in the Hosted Microsoft Dynamics CRM 3.0 release.
  Report Writers Guide Added information on how to create context-sensitive reports.
  Sample Code Merged similar samples Using Dynamic Entities and CRUD Operations using Dynamic Entities.

Updated the following samples:




Version 3.0.3, January 2006 Callouts Added information about how to retrieve all attributes in a callout. Added note about callouts for system generated activities such as an OrderClose activity.
  AssignRequest Entity instances cannot be assigned to teams. Removed erroneous documentation.
  TimeBlock Clarifed information about changing styles for a TimeBlock.
  Class and Method Mapping

Quote Detail

Sales Order Detail

Opportunity Product

Changed RetrieveQuantity references to GetQuantityDecimal.


Added reference sample code to messages.
  Download an Attachment Added sample code to demonstrate how to download an attachment programmatically.
  CRUD Operations Using Dynamic Entities Added sample code to demonstrate basic create, update, retrieve and delete operations using dynamic entity.
  Retrieve the Localized State Name Added sample code to demonstrate how to retrieve the localized state name
  Route an Incident from a User to a Queue Added sample code to demonstrate how to route an incident from a user to a queue.

Added a note to the Assign message regarding the use of the Route message for changing the ownership of an incident.

  Support and Certification Added a topic on Support for .NET Framework Versions.

Additions to Unsupported Customizations.

  Client Side Scripting Bug fix in sample code for the OnSave method.

Updated sample code for the Lookup field type.

  Execute Method Reorganized this topic for greater clarity.
  Helper Code for CRM Types Added missing examples and documentation for the CRM types helper code.
Version 3.0.2, December 2005 RetrieveMultiple Expanded documentation on the use of the PagingCookie field.
  Client Side Scripting New information added about script upgrade issues.

Updated information for scripting Lookup fields.

  Callouts Information added about how to determine valid pre and post values for the callout configuration file. Information added about not writing to system console in callout code.
Version 3.0.1, December 2005 Callouts Impersonation code snippet updated to use CalloutUserContext.UserId. Information added about multiple callout methods for the same entity and event. Information added about implementing an IDisposable.Dispose method in callout component classes.
  Workflow Workflow plug-in sample modified to obtain the user ID from the workflow rule.
Version 3.0.0, December 2005   Initial release.

© 2007 Microsoft Corporation. All rights reserved.