Known issues when developing for MSCRM 4.0
If you get the MSCRM 4.0 SDK, there is a little HTML file called sdkreadme.htm, which you would assume (incorrectly) is about the SDK itself and not the development side. Well, in there are a number of issues that can occur. So, in the interest of helping someone out who is searching for this particular issue on the net (instead of reading the manual, like we ever do that), here are the issues (related to development only—there is some sample stuff that I have removed):
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
PreReturnValue.Stop Callout in 3.0 does not show any error (22605)
- Returning a
Stopvalue from a Microsoft Dynamics CRM 3.0 callout has been deprecated and is treated equivalently to returning anAbortvalue. Callouts returning aStopvalue will result in anAbort, but a standard error message is displayed to the user instead of a custom one.
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 an offline user—even though it is impersonated as
SYSTEM. - 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 workflow deletion.
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
NULLbefore callingupdate().
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
statuscodeattribute. - Workaround: Use import or edit the value through the application user interface.
Metadata API: GetValidReferencingEntities and GetValidReferencedEntities return results for entities that cannot reference the task entity (32116)
- The task entity cannot be a referenced or referencing entity in a custom relationship. However, the
GetValidReferencingandGetValidReferencedmessages return a list of possible entities for a relationship. - Workaround: Use the
CanBeReferencedorCanBeReferencingmessages 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 (e.g., 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 creation, 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
BulkDeletemessage, if theBulkDeleteRequest.RecurrenceStartTimeproperty is set to "today", the Bulk Record Deletion grid will not show the correct number of deleted records or 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.serviceidannotation.objectidappointment.serviceidcustomeraddress.parentiddocumentindex.documentidfax.serviceidincidentresolution.serviceidletter.serviceidlistmember.entityidopportunityclose.serviceidorderclose.serviceidphonecall.serviceidqueueitem.objectidquoteclose.serviceidsite.createdbysite.modifiedbytask.serviceidtimezonelocalizedname.timezonedefinitionidtimezonerule.timezonedefinitionid
AssociateRequest message does not work for several relationships (28900)
- The
AssociateRequestmessage will fail for these relationships:systemuserroles_associationteammembership_association
- Workaround: Use the following specialized requests available for these relationships:
AssignUserRolesRoleRequest(forsystemuserroles_association)AddMembersTeamRequest(forteammembership_association)
SPLA/IFD: Anonymous access for DiscoveryService in SPLA is not allowed on all methods (32683)
- In some configurations, downloading the WSDL may fail because anonymous access is not allowed.
- Workaround: You can publish the DiscoveryService WSDL for partners/developers. Use the static WSDL shipped with the SDK, located in the folder
\SDK\WSDL.