Den OData v2.0-Endpunkt nicht verwenden
Kategorie: Unterstützbarkeit
Wirkungspotential: Hoch
Symptome
Es gibt keine unmittelbaren Symptome, aber Code, der diesen Endpunkt verwendet, wird nicht mehr funktionieren, wenn der veraltete Endpunkt entfernt wird.
Das ursprüngliche Löschdatum war der 11. November 2022. Sie wurde bis zum 30. April 2023 verlängert. Wir haben beschlossen, den Dienst nicht am 30. April 2023 zu entfernen, um den Benutzern mehr Zeit zu geben, ihren Code auf die Verwendung der Web-API umzustellen. Wenn Sie diesen Endpunkt noch verwenden, müssen Sie Ihren Code vorrangig auf die Verwendung der Web-API umstellen, damit Sie vorbereitet sind, wenn das Datum der endgültigen Entfernung bekannt gegeben wird. Weitere Informationen Ankündigung des Entfernungsdatums des OData v2.0-Dienstes.
Anweisungen
Sie sollten jeden Code ändern, der vom Organisationsdatendienst (OData v2.0) abhängt, um stattdessen den Dataverse Web-API-Endpunkt (OData v4.0) zu verwenden.
Für modellbasierte Apps sollten Sie die Xrm.WebApi (Client-API-Referenz) verwenden, die den Zugriff auf die Dataverse Web-API für clientseitige Erweiterungen ermöglicht, die JavaScript-Webressourcen verwenden.
Problematische Muster
Der Organisationsdatendienst verwendet diesen Endpunkt: /XRMServices/2011/OrganizationData.svc
. Sie sollten nach aktivem Code suchen, der diesen Endpunkt verwendet.
Das Dynamics CRM-SDK hat eine JavaScript-Beispielbibliothek als JavaScript-Webressource mit dem Namen sample_/Scripts/SDK.REST.js
bereitgestellt, die Sie hier finden können. Die Xrm.WebApi (Client API Referenz) bietet ähnliche Funktionen zum Erstellen, Aktualisieren, Löschen und Abrufen von Datensätzen.
PowerShell-Skripte, die Invoke-WebRequest verwenden, nutzen manchmal auch den Organization Data Service Endpunkt.
Weitere Informationen
Der Organization Data Service ist ein OData v2.0 Endpunkt, der mit Dynamics CRM 2011 eingeführt wurde. Es wurde mit Dynamics 365 Customer Engagement v8.0 veraltet. Dieser Endpunkt, der auch als OData endpoint oder REST endpoint bekannt ist, unterstützt nur Vorgänge zum Erstellen, Abrufen, Aktualisieren und Löschen von Tabellen.
Sowohl die Dataverse Web-API als auch der Organisationsdatendienst sind OData-Endpunkte, aber es gibt Unterschiede bei der Implementierung. Sie können nicht davon ausgehen, dass vorhandener Code mit nur geringfügigen Änderungen funktioniert.
Einige der wichtigsten Unterschiede werden in den folgenden Abschnitten beschrieben.
Ressourcennamen
Web-API-Ressourcennamen für Tabellen basieren auf dem EntitySetName. Bei Namen von Organisationsdatendiensten war Set
an den SchemaName angehängt.
Internet-API | Organisationsdatendienst |
---|---|
Firmen | AccountSet |
Kontakte | ContactSet |
Aufgaben bei | TaskSet |
Spaltennamen
Spaltennamen in der Web-API sind alle klein geschrieben und verwenden LogicalName. Im Organisationsdatendienst verwenden die Spaltennamen SchemaName.
HTTP-Methoden
Der Organisationsdatendienst verwendet MERGE
oder PUT
und nicht PATCH
, um einen Datensatz zu aktualisieren.
Datenformat
Der Organization Data Service unterstützt sowohl JSON als auch ATOM, ein XML-basiertes Format, das normalerweise für RSS-Feeds verwendet wird. Die Web-API unterstützt nur JSON.
Beschränkungen der Zahl der zurückgegebenen Datensätze
Der Organization Data Service liefert nur 50 Datensätze auf einmal und bietet keine Möglichkeit, die maximale Seitengröße festzulegen.
Die Web-API lässt die Einstellung einer maximalen Seitengröße zu und gibt bis zu 5000 Datensätze zurück. Weitere Informationen: Seitenergebnisse
Legacy-Dokumentation
Dokumentation zum Organization Data Service: Microsoft Dynamics 2015 SDK: Verwenden Sie den OData-Endpunkt mit Webressourcen.
Die folgende Tabelle verbindet verwandte Bereiche für den Organisationsdatendienst und die Web-API:
Beispiele
In diesem Abschnitt werden die Unterschiede zwischen der Verwendung des Organisationsdatendienstes und der Web-API hervorgehoben.
Der Organization Data Service unterstützt nur Vorgänge zum Erstellen, Abrufen, Aktualisieren und Löschen von Tabellen. Die folgenden Beispiele veranschaulichen die Unterschiede zwischen den Diensten, um Ihnen den Umstieg auf die Web-API zu erleichtern.
Datensätze abfragen
Diese Beispiele zeigen die Unterschiede zwischen dem Organisationsdatendienst und der Web-API, wenn Sie Datensätze abfragen.
Der Organization Data Service hat keine andere Möglichkeit, das Paging zu verwalten als die Verwendung von $top
und $skip
. Die maximale Seitengröße beträgt 50 Datensätze.
Anforderung:
GET [Organization URI]/XRMServices/2011/OrganizationData.svc/AccountSet?$select=OwnershipCode,PrimaryContactId,OpenDeals_Date,Telephone1,NumberOfEmployees,Name,AccountNumber,DoNotPhone,IndustryCode&$filter=PrimaryContactId/Id ne null&$top=2 HTTP/1.1
Accept: application/json
Antwort:
HTTP/1.1 200 OK
Cache-Control: no-cache
Allow: OPTIONS,GET,HEAD,POST
Content-Type: application/json;charset=utf-8
{
"d": {
"results": [
{
"__metadata": {
"uri": " [Organization URI]/xrmservices/2011/OrganizationData.svc/AccountSet(guid'7a4814f9-b0b8-ea11-a812-000d3a122b89')",
"type": "Microsoft.Crm.Sdk.Data.Services.Account"
},
"OwnershipCode": {
"__metadata": {
"type": "Microsoft.Crm.Sdk.Data.Services.OptionSetValue"
},
"Value": 2
},
"PrimaryContactId": {
"__metadata": {
"type": "Microsoft.Crm.Sdk.Data.Services.EntityReference"
},
"Id": "dff27d1f-a61b-4bfe-a203-b2e5a36cda0e",
"LogicalName": "contact",
"Name": "Sam Smith",
"RowVersion": null
},
"OpenDeals_Date": "/Date(1663715691000)/",
"Telephone1": "555-1234",
"NumberOfEmployees": 500,
"Name": "Contoso, Ltd. (sample)",
"AccountNumber": "1111",
"DoNotPhone": false,
"IndustryCode": {
"__metadata": {
"type": "Microsoft.Crm.Sdk.Data.Services.OptionSetValue"
},
"Value": 7
}
},
{
"__metadata": {
"uri": " [Organization URI]/xrmservices/2011/OrganizationData.svc/AccountSet(guid'fed58509-4af3-ec11-bb3d-000d3a1a51c1')",
"type": "Microsoft.Crm.Sdk.Data.Services.Account"
},
"OwnershipCode": {
"__metadata": {
"type": "Microsoft.Crm.Sdk.Data.Services.OptionSetValue"
},
"Value": null
},
"PrimaryContactId": {
"__metadata": {
"type": "Microsoft.Crm.Sdk.Data.Services.EntityReference"
},
"Id": "ffd58509-4af3-ec11-bb3d-000d3a1a51c1",
"LogicalName": "contact",
"Name": "Susie Curtis",
"RowVersion": null
},
"OpenDeals_Date": "/Date(1663715691000)/",
"Telephone1": null,
"NumberOfEmployees": null,
"Name": "Fourth Coffee",
"AccountNumber": null,
"DoNotPhone": false,
"IndustryCode": {
"__metadata": {
"type": "Microsoft.Crm.Sdk.Data.Services.OptionSetValue"
},
"Value": null
}
}
]
}
}
Wenn mehr als 50 Datensätze zurückgegeben werden, verwenden Sie die Eigenschaft __next
, um auf die nächste Seite zuzugreifen.
"__next": "https://[Organization URI]/XRMServices/2011/OrganizationData.svc/AccountSet?$select=OwnershipCode,PrimaryContactId,OpenDeals_Date,Telephone1,NumberOfEmployees,Name,AccountNumber,DoNotPhone,IndustryCode&$filter=PrimaryContactId/Id ne null&$skiptoken=1,'accountid','%7B22153355-851D-ED11-B83E-000D3A572421%7D','%7B7A4814F9-B0B8-EA11-A812-000D3A122B89%7D'"
Datensätze erstellen
Diese Beispiele zeigen die Unterschiede zwischen dem Organisationsdatendienst und der Web-API, wenn Sie Datensätze erstellen.
Anforderung:
POST [Organization URI]/XRMServices/2011/OrganizationData.svc/AccountSet HTTP/1.1
Accept: application/json
Content-Type: application/json
{
"OwnershipCode": {
"Value": 2
},
"PrimaryContactId": {
"Id": "dff27d1f-a61b-4bfe-a203-b2e5a36cda0e",
"LogicalName": "contact"
},
"OpenDeals_Date": "12/25/2022",
"CustomerSizeCode": {
"Value": 1
},
"Telephone1": "555-1234",
"NumberOfEmployees": 500,
"Name": "Contoso, Ltd. (sample)",
"AccountNumber": "12225",
"DoNotPhone": true,
"IndustryCode": {
"Value": 7
}
}
Antwort:
Mit dem Organisationsdatendienst werden alle Eigenschaften zurückgegeben, wenn ein Datensatz erstellt wird.
HTTP/1.1 201 Created
Content-Type: application/json;charset=utf-8
REQ_ID: a0c614be-50be-4c1e-9413-1c7ba459c5c9
{
"d": {
"__metadata": {
"uri": "[Organization URI]/xrmservices/2011/OrganizationData.svc/AccountSet(guid'57d4d1af-7b38-ed11-9db0-002248296d7e')",
"type": "Microsoft.Crm.Sdk.Data.Services.Account"
},
"AccountId": "57d4d1af-7b38-ed11-9db0-002248296d7e",
<All properties are returned. Removed for brevity>
}
}
Datensätze abrufen
Diese Beispiele zeigen die Unterschiede zwischen dem Organisationsdatendienst und der Web-API, wenn Sie Datensätze abrufen.
Anforderung:
GET https://[Organization URI]/XRMServices/2011/OrganizationData.svc/AccountSet(guid'b68d56a6-4739-ed11-9db0-002248296d7e')?$select=OwnershipCode,PrimaryContactId,OpenDeals_Date,Telephone1,NumberOfEmployees,Name,AccountNumber,DoNotPhone,IndustryCode HTTP/1.1
Accept: application/json
Antwort:
HTTP/1.1 200 OK
{
"d": {
"__metadata": {
"uri": "https://[Organization URI]/xrmservices/2011/OrganizationData.svc/AccountSet(guid'b68d56a6-4739-ed11-9db0-002248296d7e')",
"type": "Microsoft.Crm.Sdk.Data.Services.Account"
},
"OwnershipCode": {
"__metadata": {
"type": "Microsoft.Crm.Sdk.Data.Services.OptionSetValue"
},
"Value": 2
},
"PrimaryContactId": {
"__metadata": {
"type": "Microsoft.Crm.Sdk.Data.Services.EntityReference"
},
"Id": "dff27d1f-a61b-4bfe-a203-b2e5a36cda0e",
"LogicalName": "contact",
"Name": "Sam Smith",
"RowVersion": null
},
"OpenDeals_Date": "/Date(1663784098000)/",
"Telephone1": "555-1234",
"NumberOfEmployees": 500,
"Name": "Contoso, Ltd. (sample)",
"AccountNumber": "12227",
"DoNotPhone": true,
"IndustryCode": {
"__metadata": {
"type": "Microsoft.Crm.Sdk.Data.Services.OptionSetValue"
},
"Value": 7
}
}
}
Datensätze aktualisieren
Diese Beispiele zeigen die Unterschiede zwischen dem Organisationsdatendienst und der Web-API, wenn Sie Datensätze aktualisieren.
Der Organization Data Service erfordert, dass der X-HTTP-Method: MERGE
-Anfragekopf mit einer POST
-Anfrage verwendet wird.
Anforderung:
POST https://[Organization URI]/XRMServices/2011/OrganizationData.svc/AccountSet(guid'b68d56a6-4739-ed11-9db0-002248296d7e') HTTP/1.1
Accept: application/json
X-HTTP-Method: MERGE
Content-Type: application/json
{
"OwnershipCode": {
"Value": 3
},
"PrimaryContactId": {
"Id": "6db0be2e-d01c-ed11-b83e-000d3a572421"
},
"OpenDeals_Date": "12/26/2022",
"Telephone1": "555-1235",
"NumberOfEmployees": 501,
"Name": "Contoso, Ltd.",
"AccountNumber": "12228",
"DoNotPhone": false,
"IndustryCode": {
"Value": 6
}
}
Antwort:
HTTP/1.1 204 No Content
Datensätze löschen
Diese Beispiele zeigen die Unterschiede zwischen dem Organisationsdatendienst und der Web-API, wenn Sie Datensätze löschen.
Anforderung:
DELETE https://[Organization URI]/XRMServices/2011/OrganizationData.svc/AccountSet(guid'b68d56a6-4739-ed11-9db0-002248296d7e') HTTP/1.1
Accept: application/json
Antwort:
HTTP/1.1 204 No Content
Siehe auch
Wie Sie mit Application Insights die Verwendung des OrganizationData.svc-Endpunkts identifizieren, der im November 2022 außer Betrieb genommen werden soll (Community Forum)
Wie Sie den Solution Checker verwenden, um die Verwendung des OrganizationData.svc-Endpunkts zu ermitteln, der im November 2022 außer Dienst gestellt werden soll (Community Forum)
Verwenden der Microsoft Dataverse-Web-API