Udemy 新コース: 作って学ぶPower Automate !

サーバーレスIFサービスの構築! D365FO with Logic Apps

Dynamics がクラウド版になったことでインターフェース(IF)がどうなるのか話題になっていました。

Dynamics 365 for Finance and Operations(D365FO)は基本Web-API経由のIF連携にのみ対応しているため、これまでのいわゆるレガシー連携(FTP、SSH通信など)との連携は何かしらの対応をせざるを得なくなるわけです。

今回、その対応に利用できるテンプレートが色々マイクロソフトからも提供されていますが、その中の一つであるLogic AppsによるIFテンプレートを紹介いたします。

フジワラ個人的にはこのテンプレートが一番アツいと思っています。サーバーレスで考えられますし、簡単に改変できる所が良く、トレンドの内製化にも寄与できるかと思います。

ただ、一時テンプレートが使えなくなっており実環境での利用を控えていました。

それが修正が図られ、また表示されるようになりましたので紹介しようと思います。

https://github.com/Microsoft/Dynamics-AX-Integration/wiki/File-based-integration-using-Logic-Apps

GitHubにはこちらで紹介されておりますので、合わせてご覧ください。

サーバーレス・アーキテクチャ

上記URLのGitHubで以下のようにテンプレートが紹介されています。概念図ですね。

もう少し噛み砕いて説明すると、外部システムと連携を行うIFサーバーがあるとして、そのファイルをOneDriveにて受け取りFOに連携するそんな仕掛けです。

このエラー・例外処理含め、Logic AppsにてD365FOのステータスを見ながらやってくれます。

注意なのが、ここでやり取りするファイルの形式がZip形式なことです。

CSVなどでIFサーバーから受け取ったファイルも、D365FOで利用できるマニフェスト、ヘッダーを連携するCSVに同梱してZipする必要があります。

 

こんなファイルをZip形式にして投げます(Importの場合)。

これはちょっとクセありますね。

Exportの場合、同じようにZip形式で保存されます。

ファイル・フロー

連携されたファイルはInputフォルダに入り、Logic Apps実行中はProcessingフォルダに入り、連携にSuccess・Error・Exceptionの結果ごとにフォルダ分けされ保存されます。

 

Logic Appsの中のフローではこんな感じで処理が書かれます。説明なくてもなんとなくわかりますよね?

 

Import用Rootフォルダ(Logic Appsデプロイ時に指定)のOneDrive内はフラットな階層で並べます。

 

インポート成功したファイルはこちらのように保存されます。

ちなみに、Legal entity名をファイル名にプレフィックスとしてネーミングしてあげる必要があります。その後ろは何でも良いです。

 

エクスポート時には、こんな名前で保存されます。全部Zip形式です。

 

データ連携の間隔

インポート

インポート(OneDrive→D365FO)は、OneDriveにファイルがインプットされるたびにデータ連携されます。従って、IFサーバーのジョブ実行間隔によってデータ連携間隔が決定されます。

エクスポート

エクスポート(D365FO→OneDrive)は以下のように繰り返しの間隔を指定する形式のロジックフローです。

これは、まだ、D365FOの標準トリガーが用意されていないためだと思われます。

以下の場合、ロジックアプリのアクションは30秒間隔でD365FOのData management platformにおけるデータ連携プロジェクトのジョブを見に行ってパッケージのダウンロードを試みます。

従って、結局データ連携間隔はD365FO側のジョブ実行間隔によって決定されます。

 

構築手順

インポート

こちらから、インポート用のテンプレートをデプロイしていきます。

https://github.com/Microsoft/Dynamics-AX-Integration

 

以下のようなサイトが表示されるかと思います。Deploy to Azureボタンでウィザードを開きます。

 

Azureへのログイン後、こんな画面が表示されるかと思います。

Azure サブスクリプションは事前に取得をお願いいたします。
  • Azure系の情報は思い思いの値を入れてください。
  • Pramdynamicsax_instanceにD365FOのURLを指定します。
  • Pramexception_email_idは例外処理が発生したときに通知するメールアドレス(こっちは通知先です)を指定します。

 

アカウントを諸々指定します。

Office 365、というのはメールサーバーとしてOffice 365 Exchange Onlineのあるアカウントを指定します。

入力が完了したらPurchaseをクリックします。自動でデプロイが始まります。

Exchange Onlineのライセンスがない場合、デプロイ後にGmailやOutlookに変更することができます。

 

AzureのNotification Barより、デプロイ完了通知が来ます。デプロイ先のリソースに移ります。

先程指定した名前のLogic Appsを開きます。

 

Logic App Designerにて、ロジックフローを見ることができます。

 

エクスポート

エクスポートの場合、まだ標準トリガーが用意されていないため(多分そういう理由)、D365FO側でデータ連携プロジェクトを立てる必要があります。

System administration > Workspaces > Data management

Exportをクリックします。

 

ここでエクスポートしたいデータエンティティを指定します。

データフォーマットはUnicode形式である必要がありますのでご注意ください。
ここで、あとでGroup nameを使いますのでメモしておきます。
先程インポートと同じページからエクスポートのロジックアプリもデプロイすることができます。

https://github.com/Microsoft/Dynamics-AX-Integration

 

以下のような画面が表示されます。インポートと同じように入力していきます。

 

Data projectには、先程のGroup nameを入力します。

OneDrive Download folderには、OneDriveに保存する際のルートフォルダを指定します。

自分でこちらからデプロイしてもOneDriveのディレクトリは自動で作ってくれないので、手動で作ってあげる必要があります。

OneDriveにてルートディレクトリを作成します。

 

Azure Portalに戻って同様に、デプロイ完了の通知からリソースに移動します。

 

デザイナーを開くと、以下のようにフローが確認できます。

 

以上

 

最後までご覧いただきありがとうございました。

 

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です