The OData endpoint with web resources provides an alternative interface to work with Microsoft Dynamics CRM 2016 and Microsoft Dynamics CRM Online data. You can use the OData endpoint to execute HTTP requests by using a service that is based on a Uniform Resource Identifier (URI).
The OData endpoint uses the Open Data protocol. This protocol implements a ‘RESTful’ design pattern. REST represents Representational State Transfer. REST is an architectural style in which every resource is addressed by using a unique URI. In Microsoft Dynamics CRM, a resource can be an entity collection or a record.
REST works the way the Internet works. You interact with resources by using HTTP verbs such as GET, POST, MERGE, and DELETE. Various libraries can be used to process the HTTP requests and responses. REST provides a standard interface that you can use with any programming language. REST allows for either synchronous or asynchronous processing of operations. The capability to perform asynchronous operations makes REST well suited for web resources and scripts used in Microsoft Dynamics CRM 2016 and Microsoft Dynamics CRM Online.
Microsoft Dynamics CRM implementation of OData
Microsoft Dynamics CRM 2011 uses the Windows Communication Foundation (WCF) Data Services framework to provide an Open Data Protocol (OData) endpoint that is a REST-based data service. This endpoint is called the Organization Data Service. In Microsoft Dynamics CRM, the service root URI is:
[Your Organization Root URL]/xrmservices/2011/organizationdata.svc
To provide a consistent set of URIs that corresponds to the entities used in Microsoft Dynamics CRM, an Entity Data Model (EDM) organizes the data in the form of records of "entity types" and the associations between them.
OData entity data model (EDM)
The Microsoft Dynamics CRM EDM is described in an OData Service Metadata document available at the following path:
[Your Organization Root URL]/xrmservices/2011/organizationdata.svc/$metadata
The OData endpoint provides an alternative to the SOAP endpoint, but there are currently some limitations.
Only Create, Retrieve, Update, and Delete actions can be performed on entity records.
· Messages that require the Execute method cannot be performed.
The OData protocol is not fully implemented. Some system query options are not available.
You cannot use late binding with managed code against custom entities, attributes, or relationships that did not exist when the code was written.
You will typically use WCF Data Services Client Data Service classes while programming by using managed code. These classes allow for early binding so that you get strongly typed classes at design time. The only entities available to you are those defined in the system when the classes were generated. This means that you cannot use late binding to work with custom entities, attributes, or relationships that were not included in the WCF Data Services Client Data Service classes when they were generated.