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内はフラットな階層で並べます。
インポート成功したファイルはこちらのように保存されます。
エクスポート時には、こんな名前で保存されます。全部Zip形式です。
データ連携の間隔
インポート
インポート(OneDrive→D365FO)は、OneDriveにファイルがインプットされるたびにデータ連携されます。従って、IFサーバーのジョブ実行間隔によってデータ連携間隔が決定されます。
エクスポート
エクスポート(D365FO→OneDrive)は以下のように繰り返しの間隔を指定する形式のロジックフローです。
以下の場合、ロジックアプリのアクションは30秒間隔でD365FOのData management platformにおけるデータ連携プロジェクトのジョブを見に行ってパッケージのダウンロードを試みます。
従って、結局データ連携間隔はD365FO側のジョブ実行間隔によって決定されます。
構築手順
インポート
こちらから、インポート用のテンプレートをデプロイしていきます。
https://github.com/Microsoft/Dynamics-AX-Integration
以下のようなサイトが表示されるかと思います。Deploy to Azureボタンでウィザードを開きます。
Azureへのログイン後、こんな画面が表示されるかと思います。
- Azure系の情報は思い思いの値を入れてください。
- Pramdynamicsax_instanceにD365FOのURLを指定します。
- Pramexception_email_idは例外処理が発生したときに通知するメールアドレス(こっちは通知先です)を指定します。
アカウントを諸々指定します。
Office 365、というのはメールサーバーとしてOffice 365 Exchange Onlineのあるアカウントを指定します。
入力が完了したらPurchaseをクリックします。自動でデプロイが始まります。
AzureのNotification Barより、デプロイ完了通知が来ます。デプロイ先のリソースに移ります。
先程指定した名前のLogic Appsを開きます。
Logic App Designerにて、ロジックフローを見ることができます。
エクスポート
エクスポートの場合、まだ標準トリガーが用意されていないため(多分そういう理由)、D365FO側でデータ連携プロジェクトを立てる必要があります。
System administration > Workspaces > Data management
Exportをクリックします。
ここでエクスポートしたいデータエンティティを指定します。
https://github.com/Microsoft/Dynamics-AX-Integration
以下のような画面が表示されます。インポートと同じように入力していきます。
Data projectには、先程のGroup nameを入力します。
OneDrive Download folderには、OneDriveに保存する際のルートフォルダを指定します。
OneDriveにてルートディレクトリを作成します。
Azure Portalに戻って同様に、デプロイ完了の通知からリソースに移動します。
デザイナーを開くと、以下のようにフローが確認できます。
以上
最後までご覧いただきありがとうございました。