Запрос на удаленные объекты в Dynamics 365 XRM Tooling SDK - PullRequest
0 голосов
/ 08 января 2019

Я пишу общую интеграцию, которая должна использовать базу данных в Dynamics 365 для взаимодействия с клиентами в качестве системы записей. Я буду время от времени опрашивать его, чтобы обновлять данные в других вспомогательных системах. Конечно, я могу узнать, когда записи изменились, проверив атрибут «updatedon». Я могу создать запрос: «дайте мне все записи, которые изменились с момента последнего запроса». Однако было бы оптимальным иметь возможность узнать, какие записи были УДАЛЕНЫ с момента последнего запроса. У меня аналогичная интеграция с Salesforce, и это тривиально для API SalesForce, но я не понимаю, как это сделать с помощью Dynamics 365. API.

Похоже, что единственная возможность для меня - это сохранить список всех первичных ключей записей в моей интеграции и загружать при каждом опросе ВСЕ записи, существующие в CRM, а затем самостоятельно определять удаленные из них по их отсутствию. , Это довольно уродливо и неэффективно.

Есть идеи или советы?

Ответы [ 2 ]

0 голосов
/ 09 июля 2019

Я хотел бы внести свой вклад в этот вопрос, который дал мне отличный совет для направления. Хотя эта документация плохо документирована в официальном документе Dynamics и не упоминается, где объясняется отслеживание изменений, эта мощная функция также доступна в Soap API:

Надеюсь, это кому-нибудь поможет.

0 голосов
/ 08 января 2019

MS представила отслеживание изменений для этой цели.

Функция отслеживания изменений в Dynamics 365 для взаимодействия с клиентами. Взаимодействие с клиентами предоставляет способ обеспечить синхронизацию данных эффективным способом, обнаруживая, какие данные изменились с момента первоначального извлечения или последней синхронизации.

Пример примера веб-API ниже:

GET [Organization URI]/org1/api/data/v9.0/accounts?$select=name,accountnumber,telephone1,fax HTTP/1.1
Prefer: odata.track-changes

Ответ будет содержать дельта-ссылку с дельта-токеном:

"@odata.deltaLink": "[Organization URI]/api/data/v9.0/accounts?$select=name,accountnumber,telephone1,fax&$deltatoken=919042%2108%2f22%2f2017%2008%3a10%3a44"

Когда вы используете вышеуказанный URI, вы можете получить изменения, включая удаленные записи.

{
          "@odata.context":"[Organization URI]/data/v9.0/$metadata#accounts(name,telephone1,fax)/$delta",
          "@odata.deltaLink":"[Organization URI]/api/data/v9.0/accounts?$select=name,telephone1,fax&$deltatoken=919058%2108%2f22%2f2017%2008%3a21%3a20",
"value":
    [
        {
            "@odata.etag":"W/\"915244\"",
            "name":"Monte Orton",
            "telephone1":"555000",
            "fax":"10101",
            "accountid":"60c4e274-0d87-e711-80e5-00155db19e6d"
        },
        {
            "@odata.context":"[Organization URI]/api/data/v9.0/$metadata#accounts/$deletedEntity",
            "id":"2e451703-c686-e711-80e5-00155db19e6d",
            "reason":"deleted"
        }
    ]
}

Пример: синхронизация данных с внешними системами с использованием отслеживания изменений

...