製品をチェック

製品の情報と30日間無償トライアル

Dynamics CRM 連携ソリューション 相談したい

Azure App サービスでDynamics CRM IFTTT フローをトリガー

この記事では、Logic Apps の標準ウィザードを使用してIFTTT (if-this-then-that) ワークフローを自動化する方法を説明します。

古川えりか
コンテンツスペシャリスト

最終更新日:2022-12-02
dynamicscrm ロゴ

CData

apiserver ロゴ画像
Microsoft Azure Logic Apps ロゴ

こんにちは!ドライバー周りのヘルプドキュメントを担当している古川です。

OData やSwagger などの標準ベースのインターフェースを介してCData API Server をADO.NET Provider for DynamicsCRM(もしくは250+ の他のADO.NET Providers)と組み合わせることで、Dynamics CRM を使用してLogic Apps と Power Automate のネイティブエクスペリエンスを提供します。OData は、データへのリアルタイム接続を可能にします。Swagger を使用すると、Logic Apps とPower Automateのウィザードのスキャフォールディング(コード生成) および、Power Apps のスキャフォールディングが可能になります。この記事では、Logic App のIFTTT (if-this-then-that) ワークフローにDynamics CRM を追加する方法を説明します。

API サーバーをセットアップ

以下のステップに従って、安全でSwaggerに対応するDynamics CRM API の作成を開始します。

デプロイ

API サーバーは独自のサーバーで実行されます。Windows では、スタンドアロンサーバーまたはIIS を使用して展開できます。Java サーブレットコンテナで、API Server WAR ファイルをドロップします。詳細とハウツーについては、ヘルプドキュメントを参照してください。

API サーバーは、Microsoft AzureAmazon EC2Heroku にも簡単にデプロイできます。

Dynamics CRM に接続

API サーバーとADO.NET Provider for DynamicsCRM を展開した後、[Settings]->[Connections]をクリックし、API サーバー管理コンソールで新しい接続を追加して認証値とその他の接続プロパティを指定します。 次に、[Settings]->[Resources]をクリックして、API サーバーへのアクセスを許可する エンティティを選択できます。

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

Dynamics CRM では、インスタンスごとに接続文字列の設定が必要です。 Authentication セクションでは、有効なDynamics CRM のUser、Password の入力、およびDynamics CRM Server Organization root のURL を設定します。さらに、CRMVersion プロパティに、'CRM2011+' もしくは'CRMOnline' を設定します。IFD コンフィグレーションもサポートされていますので、InternetFacingDeployment をTRUE に設定してください。

また、Security Token Service(STS)、もしくはAD FS エンドポイントをSTSURL プロパティに設定することもできます。 この値はGetSTSUrl ストアドプロシージャで取得できます。 Office 365 ユーザーはデフォルトSTS URL にCRMVersion の設定だけで接続することができます。

また、CORS を有効にし、[Settings]->[Server]ページで次のセクションを定義する必要があります。[*]なしですべてのドメインを許可するオプションを選択することもできます。

  1. Access-Control-Allow-Origin:値を[*]に設定します。Logic Apps Designer でAPI サーバーを使用するには、Access-Control-Allow-Origin ヘッダー値[*]が必要です。
  2. Access-Control-Allow-Methods:値を[GET,PUT,POST,OPTIONS]に設定します。
  3. Access-Control-Allow-Headers:[x-ms-client-request-id, authorization, content-type]に設定します。

API サーバーユーザーを承認

作成するOData サービスを決定したら、[Settings]->[Users]をクリックしてユーザーを承認します。API サーバーは、認証トークンベースの認証を使用して主要な認証スキームをサポートします。SSL を使用して、接続を認証及び暗号化することができます。アクセスはIP アドレスによって制限することもできます。デフォルトでは、ローカルマシンのみに制限されています。

簡単にするために、API ユーザーの認証トークンをURL で渡すことができます。データディレクトリにあるsettings.cfg ファイルの[Application]セクションに設定を追加する必要があります。Windows でこれは、アプリケーションルートのapp_data サブフォルダにあたります。Java エディションでは、データディレクトリの場所はオペレーティングシステムによって異なります。

  1. Windows:C:\ProgramData\CData
  2. Unix or Mac OS X: ~/cdata
[Application] AllowAuthtokenInURL = true

Logic App でDynamics CRM にアクセス

Logic App でAPI サーバーを使用し、Dynamics CRM の周りにプロセスフローを作成できます。HTTP + Swagger アクションは、Dynamics CRM に対して実行する操作を定義するためのウィザードを提供します。以下のステップでは、Logic App でDynamics CRM を取得する方法を説明しています。

テーブルにレコードの作成日を含むカラムがある場合は、以下のステップに従って新しいレコードのカラム値をチェックする関数を作成できます。それ以外の場合は、[Create a Logic App]セクションにスキップし、フィルタに一致するエンティティにメールを送信します。

新しいDynamics CRM エンティティを確認

特定の新しいDynamics CRM エンティティを見つけるために、インターバルの開始日時の値を取得する関数を作成できます。

  1. [Azure Portal]で、[New]->[Function App]->[Create]と進みます。
  2. 名前を入力し、サブスクリプション、リソースグループ、App Service プラン、そしてストレージアカウントを選択します。
  3. Function App を選択し、Webhook + API シナリオを選択します。
  4. 言語を選択します。この記事では、JavaScript を使用します。
  5. 以下のコードを追加し、JSON オブジェクトで前の時間を返します。
    module.exports = function (context, data) { 
      var d = new Date();
      d.setHours(d.getHours()-1); 
      // Response of the function to be used later.
      context.res = { 
        body: { 
          start: d 
        } 
      }; 
      context.done(); 
    };
    

トリガーにDynamics CRM を追加

以下のステップに従って、フィルタに一致する結果をDynamics CRM で検索するトリガーを作成します。上記の関数を作成した場合は、返されたインターバルの開始後に作成されたオブジェクトを検索できます。

  1. Azure Portal で[New]をクリックし、[Web + Mobile]セクションで[Logic App]を選択してリソースグループとApp Service プランを選択します。
  2. これで、Logic App Designer で使用可能なウィザードが使用できます。このウィザードには、Logic App の設定ブレードからアクセスできます。Blank Logic App templateを選択します。
  3. Dynamics CRM オブジェクトをポーリングするRecurrence アクションを追加します。この記事では、一時間ごとにポーリングします。タイムゾーンを選択します。デフォルトはUTC です。
  4. 関数アクションを追加します。[Add Action]ダイアログのメニューを展開し、リジョンにAzure 関数を表示するオプションを選択します。先に作成したFunction App を選択し、インターバル開始を返す関数を選択します。
  5. からの中括弧のペア({})を入力し、からのペイロードオブジェクトを関数に渡します。
  6. HTTP + Swagger アクションを追加し、API サーバーのSwagger URL を入力します。 http://MySite:MyPort/api.rsc/@MyAuthtoken/$oas
  7. [Return Account]操作を選択します。
  8. 各プロパティの説明を使用して、取得する列やフィルターなどの追加パラメータを指定します。以下はフィルタの一例です。

    FirstName eq 'Bob'

    API サーバーは、Swagger ドキュメントにて説明とその他のドキュメントを返します。OData API とサポートされているOData の使用方法についての詳細は、API サーバーのヘルプドキュメントを参照してください。

  9. getInterval 関数から返された日時値を使用するには、Account テーブルの日時列で[ge]演算子を使用し、ダイアログでBody パラメータを選択します。日時値を囲むには、クォーテーションを使用する必要があることに注意して下さい。

    An OData filter on the results of an Azure Function App, getToday.(Salesforce is shown.)
  10. [Code View]に切り替え、$filter 式を変更してインターバルの開始を含むプロパティを抽出します。'@{body('MyFunc')['MyProp']' 構文を使用します。

    "getAllAccount": {
      "inputs": {
        "method": "get",
          "queries": {
            "$filter":"CreatedDate ge '@{body('getInterval')['start']}'"
          },
          "uri": "https://MySite:MyPort/api.rsc/@MyAuthtoken/Account"
      }
    

これで、ワークフローのデータソースおよび宛先としてDynamics CRM にアクセスできます。

新しレコードをメールで送信

以下のステップに従って、新しいAccount エンティティを含むレポートをメールで送信します。

  1. [Logic Apps Designer]で[SMTP - Send Email]アクションを追加します。
  2. SMTP サーバーに必要な情報を構成します。
  3. From、To、Subject、Body を構成します。返されたDynamics CRM 列からパラメータを追加できます。

[Save]をクリックし、[Run]をクリックして過去一時間に作成されたDynamics CRM レコードに関する電子メール通知を送信します。

Dynamic columns added to template the body of an email.(Salesforce is shown.)

トライアル・お問い合わせ

30日間無償トライアルで、CData のリアルタイムデータ連携をフルにお試しいただけます。記事や製品についてのご質問があればお気軽にお問い合わせください。