Dynamics 365 新機能
外部APIと連携できる仮想エンティティの活用方法
杉本 和也 @sugimomoto
第6回 JDUC勉強会
2017-12-13
See the World as a Database
Speaker
杉本 和也:Kazuya Sugimoto
• CData Software Japan, LLC Lead Engineer
• Microsoft MVP for Business Solution(Dynamics CRM/365)
• 青森県出身。会社は仙台。住まいは東京。今日は名古屋。
Blog:Morning Girl
http://kageura.hatenadiary.jp/
Twitter:@sugimomoto Facebook:sugimomoto
CData Software, Inc. (http://www.cdata.com/)
Started: 1994 (/nsoftware)
Location: Chapel Hill, NC, USA
CData Japan: 2016/6 (JV with Infoteria) (http://www.cdata.co.jp)
About
CData Software はデータアクセスおよび連携ソリューションのリーディングカンパニーです。弊社はドライバーとデータアクセステク
ノロジーの開発に特化し、お客様のオンラインおよびオンプレミスのアプリケーション、データベース、WebAPI へのリアルタイム接続を
実現します。
CData ドライバーは、ODBC、JDBC、ADO.NET、OData、SSIS、BizTalk、Excel などの標準コネクターや標準アプリケーションプ
ラットフォームを経由したデータアクセスを提供します。
See the World as a Database
Dynamics 365 V9.0 新機能:仮想エンティティ
Dynamics 365 外部で公開されているWeb API(OData)データを、
Dynamics 365の一つのエンティティかのうように扱うことができる機能
※既にBlogに詳しい手順が書いてあります。
Dynamics 365 9.0 新機能 仮想エンティティの使い方 その1 概要
http://bit.ly/2j5tUmd
Dynamics 365 v9.0 新機能 仮想エンティティの使い方 その2 構成手順
http://bit.ly/2ARjZsL
See the World as a Database
背景:分散管理がどんどん増えている
マーケティング
製品・在庫管理
手作業
DWH
BI
SFA
あらゆるアプリ・
サービスが
「多対多」でつながる
マイクロサービス
アーキテクチャ
See the World as a Database
各連係アプローチの比較
メリット デメリット
ETL・バッチ
・データの変換まで踏まえた柔軟な連係が可能
・大量データの処理向き
・同期に時間がかかる
・開発コストが高い
サーバーレス
・開発が安易
・リアルタイムに近い非同期で連係可能
・レコード単位の連係が中心
・失敗時の取り回しがしづらい
仮想エンティティ
・リアルタイムにデータの参照が可能
・必要な作業は設定レベル
・読み取り専用
・ODataの準備・開発が必要
どれが優れているという話ではなく、
各々の特性を踏まえて選択
ハイブリッド運用や
シフトも必要
See the World as a Database
External service Dynamics 365 Service
OData Service A
https://****.seriveA.com/
OData Service B
https://****.seriveB.com/
仮想エンティティの構成イメージ
Virtual Entity Data Source
Record A
https://****.odata.com/
Record B
https://****.odata.com/
Product Entity
External Name: Product
Custom Entity Definition
Product Table
Service Table
Customer Table
User Table
Web API OData Service
Product Entity
External Name: Service
Product Entity
External Name: User
See the World as a Database
仮想エンティティ用ODataの要件
・Dynamics 365 では、すべてのエンティティが ID 属性を持つことが必要になります。この ID は一意の識別子と
して知られ、値は GUID にする必要があります。 ID フィールドは、EDM.Guid データ型の外部フィールドにのみマッ
プできます。 Dynamics 365 では、EDM.Int32 データ型を uniqueidentifer データ型フィールドのマップする
ことはできません。
・NULL 値が許容されるプロパティを使用する OData エンティティは、仮想エンティティにマップされたフィールドに
一致するよう設定する必要があります。 たとえば、Nullable=False の OData エンティティ プロパティは、
Dynamics 365 フィールド要件属性のマップされたフィールドを [必須項目] に設定する必要があります。
・グリッドにデータをロードするなど複数のクエリを取得する場合、クエリ パラメーターの選択とフィルターを使用して、
外部データ ソースから返されるデータセットのサイズを制御します。
・システム管理者は、既に有効にされていない場合はプラグイン トレースを有効にしてください。 有効にすると、
OData エンドポイントからのすべてのエラーがプラグイン トレース ログでキャプチャされます。 詳細: [システムの設
定] ダイアログ ボックス - [カスタマイズ] タブ
※引用元: MSDN OData v4 データ プロバイダー ベスト プラクティス
https://docs.microsoft.com/ja-jp/dynamics365/customer-engagement/customize/virtual-
entity-odata-provider-requirements
See the World as a Database
仮想エンティティの注意点(MSDNから抜粋)
・すべての仮想エンティティは読み取り専用です。
・既存のエンティティは、仮想エンティティに変換できません。
・仮想エンティティは監査をサポートしていません。
・仮想エンティティ フィールドは、ロールアップまたは計算フィールドでは使用できません。
・仮想エンティティは組織によって所有され、行レベルの Dynamics 365 セキュリティ概念はサポートされません。
外部データ ソースには独自のセキュリティ モデルを実装することをお勧めします。
・仮想エンティティでは変更の追跡がサポートされておらず、データ エクスポート サービス などの Dynamics 365
機能を使用して同期することができません。
※引用元:仮想エンティティを使用する際の考慮事項
https://docs.microsoft.com/ja-jp/dynamics365/customer-engagement/customize/create-
edit-virtual-entities#considerations-when-you-use-virtual-entities
See the World as a Database
Dynamics 365 仮想エンティティ連係イメージ
Azure Web Apps
(IIS or Tomcat etc...)
CData API SeverAzure SQL
Database
OData
Dynamics 365データベース
を参照
Web API標準
プロトコルの
ODataに変換
仮想エンティティ
で読み取り
See the World as a Database
まとめ
・製品マスタなどの連係には嬉しいかもしれない
・ちょっとODataの要件が厳しいかも
(GUID必須が結構ハードル高い)
(Swaggerで連係できるようになれば嬉しいが、リクエストの多様性を考えるとOdata
しか対応しなさそう)
・各々の連係メリット・デメリットを踏まえた上で、選択肢の一つとして是非
(ちなみにSalesforceでは以前から存在)
・日本リージョンで動かない?
See the World as a Database
Thank you!

第6回jduc勉強会 dynamics 365 新機能 外部apiと連携できる仮想エンティティの活用方法

  • 1.
  • 2.
    See the Worldas a Database Speaker 杉本 和也:Kazuya Sugimoto • CData Software Japan, LLC Lead Engineer • Microsoft MVP for Business Solution(Dynamics CRM/365) • 青森県出身。会社は仙台。住まいは東京。今日は名古屋。 Blog:Morning Girl http://kageura.hatenadiary.jp/ Twitter:@sugimomoto Facebook:sugimomoto
  • 3.
    CData Software, Inc.(http://www.cdata.com/) Started: 1994 (/nsoftware) Location: Chapel Hill, NC, USA CData Japan: 2016/6 (JV with Infoteria) (http://www.cdata.co.jp) About CData Software はデータアクセスおよび連携ソリューションのリーディングカンパニーです。弊社はドライバーとデータアクセステク ノロジーの開発に特化し、お客様のオンラインおよびオンプレミスのアプリケーション、データベース、WebAPI へのリアルタイム接続を 実現します。 CData ドライバーは、ODBC、JDBC、ADO.NET、OData、SSIS、BizTalk、Excel などの標準コネクターや標準アプリケーションプ ラットフォームを経由したデータアクセスを提供します。
  • 4.
    See the Worldas a Database Dynamics 365 V9.0 新機能:仮想エンティティ Dynamics 365 外部で公開されているWeb API(OData)データを、 Dynamics 365の一つのエンティティかのうように扱うことができる機能 ※既にBlogに詳しい手順が書いてあります。 Dynamics 365 9.0 新機能 仮想エンティティの使い方 その1 概要 http://bit.ly/2j5tUmd Dynamics 365 v9.0 新機能 仮想エンティティの使い方 その2 構成手順 http://bit.ly/2ARjZsL
  • 5.
    See the Worldas a Database 背景:分散管理がどんどん増えている マーケティング 製品・在庫管理 手作業 DWH BI SFA あらゆるアプリ・ サービスが 「多対多」でつながる マイクロサービス アーキテクチャ
  • 6.
    See the Worldas a Database 各連係アプローチの比較 メリット デメリット ETL・バッチ ・データの変換まで踏まえた柔軟な連係が可能 ・大量データの処理向き ・同期に時間がかかる ・開発コストが高い サーバーレス ・開発が安易 ・リアルタイムに近い非同期で連係可能 ・レコード単位の連係が中心 ・失敗時の取り回しがしづらい 仮想エンティティ ・リアルタイムにデータの参照が可能 ・必要な作業は設定レベル ・読み取り専用 ・ODataの準備・開発が必要 どれが優れているという話ではなく、 各々の特性を踏まえて選択 ハイブリッド運用や シフトも必要
  • 7.
    See the Worldas a Database External service Dynamics 365 Service OData Service A https://****.seriveA.com/ OData Service B https://****.seriveB.com/ 仮想エンティティの構成イメージ Virtual Entity Data Source Record A https://****.odata.com/ Record B https://****.odata.com/ Product Entity External Name: Product Custom Entity Definition Product Table Service Table Customer Table User Table Web API OData Service Product Entity External Name: Service Product Entity External Name: User
  • 8.
    See the Worldas a Database 仮想エンティティ用ODataの要件 ・Dynamics 365 では、すべてのエンティティが ID 属性を持つことが必要になります。この ID は一意の識別子と して知られ、値は GUID にする必要があります。 ID フィールドは、EDM.Guid データ型の外部フィールドにのみマッ プできます。 Dynamics 365 では、EDM.Int32 データ型を uniqueidentifer データ型フィールドのマップする ことはできません。 ・NULL 値が許容されるプロパティを使用する OData エンティティは、仮想エンティティにマップされたフィールドに 一致するよう設定する必要があります。 たとえば、Nullable=False の OData エンティティ プロパティは、 Dynamics 365 フィールド要件属性のマップされたフィールドを [必須項目] に設定する必要があります。 ・グリッドにデータをロードするなど複数のクエリを取得する場合、クエリ パラメーターの選択とフィルターを使用して、 外部データ ソースから返されるデータセットのサイズを制御します。 ・システム管理者は、既に有効にされていない場合はプラグイン トレースを有効にしてください。 有効にすると、 OData エンドポイントからのすべてのエラーがプラグイン トレース ログでキャプチャされます。 詳細: [システムの設 定] ダイアログ ボックス - [カスタマイズ] タブ ※引用元: MSDN OData v4 データ プロバイダー ベスト プラクティス https://docs.microsoft.com/ja-jp/dynamics365/customer-engagement/customize/virtual- entity-odata-provider-requirements
  • 9.
    See the Worldas a Database 仮想エンティティの注意点(MSDNから抜粋) ・すべての仮想エンティティは読み取り専用です。 ・既存のエンティティは、仮想エンティティに変換できません。 ・仮想エンティティは監査をサポートしていません。 ・仮想エンティティ フィールドは、ロールアップまたは計算フィールドでは使用できません。 ・仮想エンティティは組織によって所有され、行レベルの Dynamics 365 セキュリティ概念はサポートされません。 外部データ ソースには独自のセキュリティ モデルを実装することをお勧めします。 ・仮想エンティティでは変更の追跡がサポートされておらず、データ エクスポート サービス などの Dynamics 365 機能を使用して同期することができません。 ※引用元:仮想エンティティを使用する際の考慮事項 https://docs.microsoft.com/ja-jp/dynamics365/customer-engagement/customize/create- edit-virtual-entities#considerations-when-you-use-virtual-entities
  • 10.
    See the Worldas a Database Dynamics 365 仮想エンティティ連係イメージ Azure Web Apps (IIS or Tomcat etc...) CData API SeverAzure SQL Database OData Dynamics 365データベース を参照 Web API標準 プロトコルの ODataに変換 仮想エンティティ で読み取り
  • 11.
    See the Worldas a Database まとめ ・製品マスタなどの連係には嬉しいかもしれない ・ちょっとODataの要件が厳しいかも (GUID必須が結構ハードル高い) (Swaggerで連係できるようになれば嬉しいが、リクエストの多様性を考えるとOdata しか対応しなさそう) ・各々の連係メリット・デメリットを踏まえた上で、選択肢の一つとして是非 (ちなみにSalesforceでは以前から存在) ・日本リージョンで動かない?
  • 12.
    See the Worldas a Database Thank you!