Microsoft Dynamics CRM 4.0 SDK Readme

Microsoft Confidential, Subject to Section 5, Confidentiality, of the Microsoft Dynamics CRM 4.0 Microsoft Software License Terms

SDK Version 4.0, January 2008


This document provides important, late-breaking information about the Microsoft Dynamics CRM 4.0 Software Development Kit (SDK) documentation.  This readme applies to the following product versions:

·         Microsoft Dynamics CRM Live Early Access II

·         Microsoft Dynamics CRM 4.0

Contents of the SDK

The following table lists the files that are included in the download of the SDK.

Name

Contains

Bin\Microsoft.Crm.Sdk.dll

Types and methods needed for developing plug-ins and workflows.

Bin\Microsoft.Crm.SdkTypeProxy.dll

Types and methods needed for developing plug-ins and workflows.

Bin\msidcrl40.dll

Types and methods needed for Windows Live (formerly called Passport) authentication.

Client\ Sample code to demonstrate key topics for the client programming guide.
ProjectTemplates\ Microsoft Visual Studio 2005 project templates for no-code workflows.
Server\ Sample code to demonstrate key topics for the server programming guide.

Tools\

Tools used for workflow and plug-ins.

Walkthroughs\

Sample code that accompanies step-by-step instructions in the SDK Help file.

CrmSdk4.chm The Help file for SDK documentation.
LicenseTerms.doc The Microsoft Software License Terms for the SDK.
SDKReadme.htm This file.
CRM4 UX Design Guide.pdf User interface design guide to help you build applications that are visually consistent with Microsoft Dynamics CRM 4.0.

Getting Started

Before you install the Microsoft Dynamics CRM SDK, you should review these release notes. You should also read the Microsoft Dynamics CRM Implementation Guide (http://go.microsoft.com/fwlink/?LinkID=107055&clcid=0x409). Detailed instructions for installing Microsoft Dynamics CRM 4.0 Server and Microsoft Dynamics CRM 4.0 for Microsoft Office Outlook software are provided in the Microsoft Dynamics CRM Implementation Guide.

Known Issues

Organization specific URL requests to CrmService.asmx are case-sensitive (32068)

You must use all lowercase for mscrmservices in the following URL.

http://ServerName/OrgName/mscrmservices/2007/CrmService.asmx

Plug-in Walkthrough Changes

In the Build the Plug-in Developer Tool walkthrough, you should ignore steps 7 through 10 because the SamplePlugin project no longer exists.

In the Registering a Plug-in Using the Plug-in Developer Tool walkthrough, the sample plug-in is no longer included in the SDK. You can use the plug-in provided in the SDK\Walkthroughs\Plugin\CS\AccountCreate folder to test the PluginDeveloper tool. A register.xml configuration file is provided in the AccountCreate plug-in folder for use with the PluginDeveloper tool. For information about how to build and test the plug-in, see the walkthrough named “Creating a Simple Plug-in." However, ignore step 5 of that walkthrough and use the PluginDeveloper tool to register the AccountCreate plug-in. For more information about how to build and run the PluginDeveloper tool, see the Readme.doc file located in the SDK\Tools\PluginDeveloper folder. 

PreReturnValue.Stop Callout in 3.0 does not show any error (22605)

Returning a Stop value from a Microsoft Dynamics CRM 3.0 callout has been deprecated and is made equivalent to returning an Abort value. Callouts returning a Stop value will result in an Abort. However, a standard error message will be displayed to the user instead of a custom message.

Offline plug-ins or offline SDK creating entities   (10858)

Inside a plug-in, if an entity is created or updated, the action is recorded as offline user even though it is impersonated as SYSTEM.

Offline plug-in impersonation    

Offline plug-ins that create entities use the offline user's credentials, even if the plug-in specifies impersonation.

Deletion of plug-ins   (8574)

When an Asynchronous plug-in or Custom Workflow Activity is deleted, it is recommended that you stop and restart the Async Service so that entries in the Async queue are aware of the plug-in or custom workflow deletion.

PreCalloutReturnValue.Stop callout return value backward compatibility break (22605) 

Returning a Stop value from a Microsoft Dynamics CRM 3.0 callout has been deprecated and is made equivalent to returning an Abort value. Callouts returning a Stop value will result in an Abort, except that a standard error message is displayed to the user.

Metadata API: Failure on update of system required attribute  (32170)

When you try to update an attribute that is system required, an exception is thrown.

Workaround: Set the required level to NULL before calling update.

Metadata API: Unable to update the default value on the statuscode attribute (31251)

There is no method in the MetadataAPI that allows you to update the default value for a statuscode attribute.

Workaround: Use import or edit the value using the application user interface.

Metadata API: GetValidReferencingEntities and GetValidReferencedEntities messages return results for entities that cannot be referenced from the task entity (32116)

The task entity cannot be a referenced or referencing entity in a custom relationship. However, the GetValidReferencing and GetValidReferenced messages return a list of possibile entities for a relationship.

Workaround: Use the CanBeReferenced or CanBeReferencing messages to determine if the task entity can participate in a relationship.

Text attribute value cannot contain escape characters   (2134)

When you create an entity instance such as an account, the name attribute value cannot contain escape characters. For example, if you create an account where the name is "Name_\r_123", after the create the actual name of the account will be "Name_\n_123".

Bulk Delete UI: Deleted records not shown in Bulk Record Deletion Grid (31741) 

When executing the BulkDelete message, if the BulkDeleteRequest.RecurrenceStartTime property is set to "today", the Bulk Record Deletion grid will not show the correct number of deleted records and the number of failures for the bulk delete job.

Lookup Type is not always populated (31612)

For the following attributes, the lookup type is not set when you retrieve an entity instance:

activitypointer.serviceid
annotation.objectid
appointment.serviceid
customeraddress.parentid
documentindex.documentid
fax.serviceid
incidentresolution.serviceid
letter.serviceid
listmember.entityid
opportunityclose.serviceid
orderclose.serviceid
phonecall.serviceid
queueitem.objectid
quoteclose.serviceid
site.createdby
site.modifiedby
task.serviceid
timezonelocalizedname.timezonedefinitionid
timezonerule.timezonedefinitionid

Possible failure using the method CrmService.RetrieveMultiple found in SdkTypeProxy.dll (32227)

Calling this method may result in an InvalidOperationException.

Workaround: Use the CrmService.Execute method with the RetrieveMultiple message instead.

AssociateRequest message does not work for several relationships (28900)

The AssociateRequest message will fail for these relationships: systemuserroles_association and teammembership_association.

Workaround: Use the following specialized requests that are available for these relationships: AssignUserRolesRoleRequest and AddMembersTeamRequest.

SPLA/IFD: Anonymous access for DiscoveryService in SPLA is not allowed on all methods (32683)

In some configurations, download of the WSDL will fail because anonymous access is not allowed.

Workaround:  You can publish the Discovery service WSDL for partners/developers. You can use the static WSDL shipped with the SDK, located in the folder \SDK\WSDL.

 

Documentation Feedback

The Microsoft Dynamics CRM Documentation Team welcomes your suggestions and comments about the documentation. You can quickly and directly send e-mail feedback to Documentation Feedback. All feedback must be in English. Please note, the Microsoft Dynamics CRM Documentation Team does not respond to technical support questions. Notice that the feedback e-mail you send is not tracked in Microsoft Dynamics CRM as an activity.

Copyright

Information in this document, including URL and other Internet Web site references, is subject to change without notice.  Unless otherwise noted, the companies, organizations, products, domain names, e-mail addresses, logos, people, places, and events depicted in examples herein are fictitious.  No association with any real company, organization, product, domain name, e-mail address, logo, person, place, or event is intended or should be inferred.  Complying with all applicable copyright laws is the responsibility of the user.  Without limiting the rights under copyright, no part of this document may be reproduced, stored in or introduced into a retrieval system, or transmitted in any form or by any means (electronic, mechanical, photocopying, recording, or otherwise), or for any purpose, without the express written permission of Microsoft Corporation.

Microsoft may have patents, patent applications, trademarks, copyrights, or other intellectual property rights covering subject matter in this document.  Except as expressly provided in any written license agreement from Microsoft, the furnishing of this document does not give you any license to these patents, trademarks, copyrights, or other intellectual property.

© 2008 Microsoft Corporation.  All rights reserved.

Microsoft, Windows, Windows Server, Windows Vista, Active Directory, Outlook, Visual Basic, and Visual Studio are trademarks of the Microsoft group of companies.

All other trademarks are property of their respective owners.