WCF アプリケーションで Dynamics 365 のデータ の OData サービスを公開

Jerod Johnson
Jerod Johnson
Senior Technology Evangelist
この記事では、WCF サービスアプリケーションを開発してDynamics 365 のデータの OData フィードを生成する方法を解説します。

CData ADO.NET Provider for Dynamics 365 を使用すると、Windows Communication Foundation(WCF)フレームワークを活用してサービス指向アプリケーションを素早く開発し、Dynamics 365 のデータを OData コンシューマーに提供できます。この記事では、接続用の Entity Data Model を作成し、WCF Data Service を構成して OData サービスを公開する方法を解説します。公開したフィードは、Power Pivot や CData ADO.NET Provider for OData を使用するアプリケーションなど、さまざまな OData クライアントから利用できます。

Dynamics 365 データ連携について

CData は、Microsoft Dynamics 365 のライブデータへのアクセスと統合を簡素化します。お客様は CData の接続機能を以下の目的で活用しています:

  • Sales、Customer Service、Finance & Operations、Marketing など、Dynamics 365 エコシステム全体のデータの読み取りと書き込みができます。
  • カスタマイズ可能なキャッシュと、インテリジェントなクエリ集約・分離により、Dynamics CRM のネイティブ機能を拡張できます。
  • Azure Active Directory、Azure マネージド サービス ID 認証情報、クライアントシークレットまたは証明書を使用した Azure サービスプリンシパルなど、さまざまな方法で Dynamics 365 に安全に認証できます。
  • SQL ストアドプロシージャを使用して、Dynamics 365 エンティティを管理できます。エンティティ間の関連付けの一覧表示、作成、削除などが可能です。

CData のお客様は、データをデータウェアハウスにレプリケートしたい場合(他のデータソースと併せて)や、Microsoft エコシステム内のお気に入りのデータツール(Power BI、Excel など)または外部ツール(Tableau、Looker など)からライブ Dynamics 365 データを分析したい場合など、さまざまな理由で当社の Dynamics 365 接続ソリューションを使用しています。


はじめに


OData サービスの作成

以下の手順で、OData 経由でDynamics 365 のデータへの接続を提供する WCF サービスアプリケーションを作成します。

  1. Visual Studio を開き、新しいプロジェクトを作成します。WCF Service Application テンプレートを選択します。
  2. 自動生成された IService.cs と Service1.svc を削除します。
  3. Entity Framework 6 をインストールします:

    Visual Studio のパッケージマネージャーコンソールを使用して、最新バージョンの Entity Framework をインストールします。以下のコマンドを実行すると、Entity Framework が自動的にダウンロード・インストールされます。

    Install-Package EntityFramework
  4. Entity Framework プロバイダーを登録します:
    1. App.config または Web.config ファイルの "providers" セクションに、以下のプロバイダーエントリを追加します。Entity Framework のインストールが成功していれば、このセクションはすでに存在しているはずです。
      <configuration>
      ...
      <entityFramework>
        <providers>
          ...
          <provider invariantName="System.Data.CData.Dynamics365" type="System.Data.CData.Dynamics365.Dynamics365ProviderServices, System.Data.CData.Dynamics365.Entities.EF6" />
        </providers>
      </entityFramework>
      </configuration>
    2. インストールディレクトリの lib/4.0 にある System.Data.CData.Dynamics365.Entities.dll への参照を追加します。
    3. プロジェクトをビルドして、EF6 のセットアップを完了します。
  5. Project -> Add New Item -> ADO.NET Entity Data Model をクリックします。
  6. 表示される Entity Data Model ウィザードで、'EF Designer from Database' オプションを選択します。
  7. Choose Your Connection ダイアログが表示されたら、New Connection をクリックします。
  8. Connection properties ダイアログで、CData Dynamics 365 Data Source を選択し、必要な認証情報を入力します。

    一般的な接続文字列は以下のとおりです:

    OrganizationUrl=https://myaccount.operations.dynamics.com/;Edition=Sales;

    Dynamics 365 接続プロパティの取得・設定方法

    Microsoft Dynamics 365 への接続

    Microsoft Dynamics 365 ドライバーは、以下のMicrosoft Dynamics 365 エディションへの接続をサポートしています。

    • CustomerService
    • FieldService
    • FinOpsOnline (デフォルト)
    • FinOpsOnPremise
    • HumanResources
    • Marketing
    • ProjectOperations
    • Sales

    Notes:

    • Supply Chain Management はFinance and Operations と同一です。これらのいずれかに接続するには、EditionFinOpsOnline またはFinOpsOnPremise のいずれかに設定します。
    • Microsoft Dynamics 365 Business Central については、個別のMicrosoft Dynamics 365 Business Central ドライバーを使用してください。
    サポートされているMicrosoft Dynamics 365 エディションのいずれか接続するには、次のパラメータを設定します。
    • OrganizationURL:お使いのMicrosoft Dynamics 365 組織のURL。例えば、https://orgcb42e1d0.crm.dynamics.com
    • Edition:上記のエディション一覧に示すとおり。

    Microsoft Dynamics 365 への認証

    Microsoft Dynamics 365 は、Microsoft Entra ID(Azure AD)、Azure サービスプリンシパル、Azure マネージドID(MSI)を経由する認証をサポートします。これらはすべてOAuth 規格に基づきます。 認証方法の詳細は、ヘルプドキュメントを参照してください。

  9. OData クライアントからアクセスさせたい Dynamics 365 のテーブルとビューを選択します。
  10. Project -> Add New Item -> WCF Data Service をクリックします。
  11. データソースクラスを指定し、新しい WCF Data Service へのアクセスを構成します。以下の例では、エンティティの Access Rule が All に設定されています。これは、すべてのユーザーがデータの読み取りと変更を行えることを意味します。

      
    using System;
    using System.Collections.Generic;
    using System.Data.Services;
    using System.Data.Services.Common;
    using System.Linq;
    using System.ServiceModel.Web;
    using System.Web;
    
    namespace Dynamics365Service{
      public class Dynamics365DataService : DataService<Dynamics365Entities> {
        public static void InitializeService(DataServiceConfiguration config) {
          config.SetEntitySetAccessRule("*", EntitySetRights.All);
          config.DataServiceBehavior.MaxProtocolVersion = DataServiceProtocolVersion.V3;
        }
      }
    }
    	
  12. プロジェクトを実行します。これで、OData 対応アプリケーションから Salesforce データにアクセスし、変更を反映できるようになります。ブラウザでフィードにアクセスできます。フィードは次のように表示されます:

Power Pivot から OData サービスを利用する

これで、任意の OData クライアント(例:Excel Power Pivot)からサービスを利用できます。

  1. Excel を開き、Power Pivot Window ボタンをクリックします。
  2. 新しいポップアップが表示されます。From Data Feeds オプションを選択します。
  3. 表示される Table Import Wizard で、OData URL を入力します(例:http://localhost:12449/Dynamics365DataService.svc/)。
  4. OData サービスへの接続後、ウィンドウ下部の Next ボタンをクリックします。
  5. ウィザードの次のウィンドウに、利用可能なテーブルの一覧が表示されます。インポートするテーブルを選択し、Finish をクリックします。
  6. Close をクリックして、Power Pivot にデータをインポートします。

はじめる準備はできましたか?

Dynamics 365 Data Provider の無料トライアルをダウンロードしてお試しください:

 ダウンロード

詳細:

Dynamics 365 Icon Dynamics 365 ADO.NET Provider お問い合わせ

Dynamics 365 データを組み込んだパワフルな.NET アプリケーションを短時間・低コストで作成して配布できます。