Using OData Retrieve in Microsoft Dynamics CRM 2011

With the release of Microsoft Dynamics CRM 2011, we have added a new Windows Communication Foundation (WCF) data services (ODATA) endpoint. The endpoint facilitates CRUD operation on entities via scripts using Atom or Json format. In this blog I would be talking about some of the considerations when using the endpoint, specifically around the use of retrieves.

First, the operations supported over this endpoint are limited to create, retrieve, update and delete. The REST philosophy does not support other operations and so we followed J. We did not implement others since the story around service operations is not fully developed in the current WCF data services offering.

The $format and $inlinecount operators are not supported. We only support the $filter, $select, $top, $skip, $orderby

Some of the restrictions when using the implemented operators are.

Operator

Restrictions

$expand

· Max expansion 6

$top

· Page size is fixed to max 50 records

· $top gives the total records returned across multiple pages

$skip

· When using with distinct queries, we are limited to the total (skip + top) record size = 5000.

· In CRM the distinct queries does not use paging cookie are and so we are limited by the CRM platform limitation to the 5000 record.

$select

· One level of navigation property selection is allowed I.e.

…/AccountSet?$select=Name,PrimaryContactId,account_primary_contact

…/AccountSet?$select=Name,PrimaryContactId,account_primary_

contact/LastName&$expand=account_primary_contact

$filter

· Conditions on only one group of attributes are allowed. By a group of attribute I am referring to a set of conditions joined by And/Or clause.

· The attribute group may be on the root entity

.../TaskSet?$expand=Contact_Tasks&$filter=Subject eq 'test' and Subject ne null

· (or) on the expanded entity.

.../TaskSet?$expand=Contact_Tasks&$filter=Contact_Tasks/FirstName eq '123‘

· Arithmetic, datetime and math operators are not supported

· Under string function we support Substringof, endswith, startswith

$orderby

· Order are only allowed on the root entity.

Navigation

· Only one level of navigation is allowed in any direction of a relationship. The relationship could be 1:N, N:1, N:N

Cheers,

Shashi Ranjan

Read the complete post at http://blogs.msdn.com/b/crm/archive/2011/03/02/using-odata-retrieve-in-microsoft-dynamics-crm-2011.aspx


Posted 2011-3-2 16:28 by Microsoft Dynamics CRM Team Blog
Bookmark and Share