データの同期

Microsoft Dataverse のデータを、他のシステムに格納されているデータと同期させて、統合することが必要な場合があります。 一般的なデータ統合パターンには、外部システムからのデータの取得と Dataverse へのそのデータの転送、Dataverse からのデータの取得とそのデータと外部データ ストアとの同期、または外部データによる Dataverse の更新が含まれています。 現在は、複数の新機能を使用して、これらのシナリオを実現するコードの記述がより簡単になっています。

これらの新機能はどの状況でも必要に応じて別々に使用できますが、外部データとのデータの同期および統合に関連する共通の問題に組み合わせで対処できます。 次の表に、これらの新機能を紹介します。

機能 説明
特定のメッセージを削除する Dataverse には、レコードを更新する個別の操作に対応した複数の特定のメッセージがあります。 これらのメッセージはこのリリースで廃止され、現在は、同じ操作を実行するために Update を使用するだけです。 削除されたメッセージを以下に示します。

- 割り当て
- SetParentSystemUser
- SetParentTeam
- SetParentBusinessUnit
- SetBusinessEquipment
- SetBusinessUnit
- SetState

単にレコードを更新することは、これらのメッセージを使用するよりも簡単であり、データの統合と同期のシナリオに対する開発を効率化することになります。 詳細については、更新を使用して特化された操作を実行するを参照してください。
代替キー Dataverse のエンタープライズ展開では、外部エンタープライズ システムからのデータを、ユーザーに提供できるように、Dataverse にロードすることが一般的です。 これら外部システムは、システムの同期に必要な GUID と呼ばれる、Dataverse レコード ID を格納するように拡張することができないことがよくあります。 一般的なソリューションは、外部システムに関連レコードの ID を格納するために使用できるカスタム列を Dataverse のテーブルに追加することです。

Dataverse でレコードを更新し、Dataverse で関連レコードへの参照を割り当てるデータ ロード プロセスを作成するときは、まず追加の Dataverse の Web サービスを呼び出し、この外部の識別子に基づいて Dataverse の目標レコードを取得する必要があります。 この検索は、適切なインデックスがカスタム列の適切な場所にない場合は遅くなる可能性があり、Dataverse のシナリオでは、これらの検索のそれぞれで、コストのかかるインターネット上のラウンド トリップが必要になります。 これらの余分なラウンド トリップは、Dataverse の各レコードの更新に必要な時間の桁数に応じて増大し、総合的な処理能力を劇的に低下させる一可能性があります。

現在は、Web サービスの操作は、GUID の代わりに、1 つまたは複数の代替キーを使用して、Dataverse のレコードを対象にすることができます。 また、関連レコードへのテーブル参照を、1 つまたは複数の代替キーを使用して指定できます。 代替キーはインデックス付きなので、カスタム列を識別子として追加することと比較して、検索操作のパフォーマンスの向上が見られます。 何か問題がある場合は、システムはエラーをスローして、すべての変更をロールバックします。 詳細: テーブルの代替キーの定義
変更の追跡 組織が Dataverse データを外部ストレージに維持する必要があるときは、データの最初の抽出後、または最後の同期後に変更されたデータを検出することによって、効率の良い方法でデータの同期を維持する方法を現在提供しています。 テーブルの変更を取得するためには、RetrieveEntityChangesRequest メッセージを使用します。 詳細については、変更の追跡を使用してデータを外部システムに同期 を参照してください。
upsert 外部システムから Dataverse にデータを読み込むとき、レコードが Dataverse に既に存在しているか、そして更新する必要があるかどうか、または新しいレコードを作成する必要があるかどうかが分からない場合があります。 新しい UpsertRequest メッセージを使用して、1 回の API 呼び出しで、存在する場合はレコードを更新し、存在しない場合は新しいレコードを作成します。 詳細については、Upsert を使用して Dynamics 365 を外部データで更新を参照してください。

次の表は、これらの新しい機能を使用した場合と使用しない場合の同期の複雑度の比較です。

内容
特定のメッセージを使用する更新プログラム。 各レコードに対して以下を実行します。

1. Dataverse をクエリして、そのアカウントが存在するかどうかを確認します。 存在する場合は、その取引先企業 ID (たとえば、ABC123) を取得します
2. 取引先担当者をクエリして、取引先担当者が存在することを確認します。 存在する場合は、取引先担当者の電子メール ID (例えば contact@company.com) を取得します。
3. 地域 ID (たとえば、NW) を取得または設定するためにクエリします。
4. 所有者を設定するためのユーザー ID を取得するためのクエリ (例えば user@mycompany.com)
5. 取引先企業を更新します。
6. SetState API を呼び出して、取引先企業の状態を設定します。
7. Assign API を呼び出して、所有者を割り当てます。

現在は、この新機能により、前述と同じ操作を実行するのに必要なサーバーへの呼び出しは 1 回だけです。

内容
UpdateRequest による更新。 1 回の呼び出しだけで、一意の ID ABC123 を持つ取引先企業の存在を検証するには、取引先責任者を contact@company.com に、地域を NW に、所有者を user@mycompany.com に、状態をアクティブに設定します。

このセクションの内容

テーブルの代替キーの定義
代替キーの使用
変更の追跡を使用してデータを外部システムに同期
Upsert を使用して Dynamics 365 を外部データで更新
サンプル: Upsert を使用してレコードを挿入または更新
サンプル: 変更の追跡を使用してデータを外部システムに同期

[更新] を使用して特化された操作を実行する
Dynamics 365 用カスタマイズの開発者ガイド

注意

ドキュメントの言語設定についてお聞かせください。 簡単な調査を行います。 (この調査は英語です)

この調査には約 7 分かかります。 個人データは収集されません (プライバシー ステートメント)。