Dynamics 365 データを外部システムと同期する

 

公開日: 2017年1月

対象: Dynamics 365 (online)、Dynamics 365 (on-premises)、Dynamics CRM 2016、Dynamics CRM Online

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

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

機能

説明

特定のメッセージを削除する

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

  • Assign

  • SetParentSystemUser

  • SetParentTeam

  • SetParentBusinessUnit

  • SetBusinessEquipment

  • SetBusinessUnit

  • SetState

単にレコードを更新することは、これらのメッセージを使用するよりも簡単であり、データの統合と同期のシナリオに対する開発を効率化することになります。詳細:[更新] を使用して特化された操作を実行する

代替キー

Microsoft Dynamics 365 のエンタープライズ展開では、外部エンタープライズ システムからのデータを、ユーザーに提供できるように、Microsoft Dynamics 365 にロードすることが一般的です。 これら外部システムは、システムの同期に必要な GUID と呼ばれる、Dynamics 365 レコード ID を格納するように拡張することができないことがよくあります。 一般的なソリューションは、外部システムに関連レコードの ID を格納するために使用できる Microsoft Dynamics 365 に、ユーザー定義のエンティティを追加することです。

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

現在は、Web サービスの操作は、GUID の代わりに、1 つまたは複数の代替キーを使用して、Dynamics 365 のレコードを対象にすることができます。 また、関連レコードへのエンティティ参照を、1 つまたは複数の代替キーを使用して指定できます。 代替キーはインデックス付きなので、ユーザー定義属性を識別子として追加することと比較して、検索操作のパフォーマンスの向上が見られます。 何か問題がある場合は、システムはエラーをスローして、すべての変更をロールバックします。詳細:エンティティの代替キーの定義

変更履歴

組織が Dynamics 365データを外部ストレージに維持する必要があるときは、データの最初の抽出後、または最後の同期後に変更されたデータを検出することによって、効率の良い方法でデータの同期を維持する方法を現在提供しています。 エンティティの変更が取得には、RetrieveEntityChangesRequest メッセージを使用します。 詳細については、「変更の追跡を使用してデータを外部システムに同期」を参照してください。

Upsert

外部システムから Microsoft Dynamics 365 にデータを読み込むとき、レコードが Dynamics 365 に既に存在しているか、そして更新する必要があるかどうか、または新しいレコードを作成する必要があるかどうかが分からない場合があります。 新しい UpsertRequest メッセージを使用して、1 回の API 呼び出しで、存在する場合はレコードを更新し、存在しない場合は新しいレコードを作成します。詳細:Upsert を使用してレコードを挿入または更新

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

説明

特定のメッセージを使用する更新プログラム

各レコードに対して以下を実行します。

  1. Dynamics 365 をクエリして、取引先企業が存在するかどうかを確認します。 存在する場合は、その取引先企業 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 を使用してレコードを挿入または更新

サンプル: Upsert を使用してレコードを挿入または更新

サンプル: 変更の追跡を使用してデータを外部システムに同期

関連セクション

[更新] を使用して特化された操作を実行する

Microsoft Dynamics 365 アプリケーションをカスタマイズする

Microsoft Dynamics 365

© 2017 Microsoft. All rights reserved. 著作権