Freigeben über


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:

Organisationsdatendienst Internet-API
Microsoft Dynamics CRM 2015-Daten abfragen mithilfe des OData-Endpunkts
OData-Systemabfrageoptionen unter Verwendung des OData-Endpunkts
Daten abfragen
Web-API-Eigenschaften
Datensätze werden erstellt... Erstellen einer Tabellenzeile
Abrufen von Datensätzen Abrufen einer Tabellenzeile
Aktualisieren von Datensätzen Grundlegende Aktualisierung
Löschen von Datensätzen Grundlegende Löschung
Verwendung von Deep Insert Erstellen Sie zusammenhängende Tabellenzeilen in einem Arbeitsgang
Aktualisieren von einzelnen Eigenschaften Aktualisieren Sie einen einzelnen Eigenschaftswert
Zuordnen und Trennen von Datensätzen Zuordnen und Aufheben der Zuordnung von Tabellenzeilen
OData Endpunkt HTTP-Statuscodes Ermitteln von Statuscodes

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