Microsoftのデータ管理サービスと日々のデータを自動連携

# はじめに

近年、企業におけるデータ活用がますます重要になっています。
その中で注目されているのが、Microsoft社が提供するクラウド型データプラットフォーム「Microsoft Dataverse」と「Sharepoint」です。
今回は、これらMicrosoftのクラウド型データプラットフォームと日々のデータをHULFT Squareを利用して、自動連携してみましょう。

例えば、HULFT Squareは、以下の業務において、更新データの受信からMicrosoftのデータ管理サービスへのデータ更新までの一連の手作業を自動化して、業務効率の向上に寄与出来ます。

1.部門担当者は、人事担当者あてに人事データの更新ファイルメール送信
2.人事担当者は、ファイルをマージしてシステム担当者にメール送信
3.システム担当者は、データベースへ登録

![1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3861938/66661d0b-e06d-8288-dc97-3b635dc54ad4.png)

今回はHULFT SquareとMicrosoft Dataverseを連携させることによって業務の自動化につながる仕組みを構築していきます、

:::note info
**HULFT Square**とは、様々なシステムやサービスを連携してデジタル技術のポテンシャルを引き出すためのまとめ役となります。
[HULFT Squareの紹介ページ](https://www.hulft.com/service/hulft-square)

**Microsoft Dataverse**とは、Microsoftが提供しているDynamics 365、Power Platformのデータ保管に使用されているデータベースです
[Microsoft Dataverse紹介ページ](https://learn.microsoft.com/ja-jp/power-apps/maker/data-platform/data-platform-intro)
:::

# 今回やること
HULFT SquareとMicrosoft Dataverseを連携させることにより、ストレージへのファイル受信後の⇒Microsoft Dataverseにレコード追加までを自動化します。

ファイルイベントジョブでデータベース更新用のファイル受信を検知し、Dataverse更新スクリプトを実行

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/50628390-da8c-f312-b702-d910efebd7b0.png)




# 検証手順
## Microsoft Dataverse連携用のコネクション作成
:::note info
連携用コネクションを作成するには、下記の3点の作業が必要です。
(1)	HULFT SquareのREST APIのコネクション設定
(2)	HULFT SquareのOAuth認証用のコネクション設定
(3)	MicrosoftのPower Platform管理センターの設定

今回Microsoft Dataverseへの認証は**OAuth認証**を使用します。
OAuth認証はID・パスワードベースとは異なるトークンベースの認証です。
認証のためにID・パスワードベースを毎回入力する必要がなく、またトークンには有効期限が設定されているためID・パスワードよりもセキュアな認証方法であると言えます。
:::


### 1.HULFT SquareのREST APIのコネクション設定
まず、HULFT SquareでREST APIのコネクションを設定していきます。

**［コネクション］** より、**［新規追加］** をクリックします。
![画像1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3861938/7565205d-c153-918e-5534-f17480852bdd.png)


検索窓に`REST`と入力いただき、**［種類］**　に表示される`REST接続`を選択いただき　**［次へ］** ボタンをクリックします。
![画像2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3861938/a89cfeee-d4fa-46aa-3af1-cbd21efc4c34.png)

任意の　**［名前］**、今回は`REST接続_Dataverse`と入力いただき、**［次へ］** ボタンをクリックします。
![画像3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3861938/bf87f52a-3b2b-f912-c68d-20babc404e18.png)

ここでPower AppsのWebAPIエンドポイントを取得する
![画像4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3861938/4d84dcac-c1b1-2415-86db-703eebc1c086.png)

URLに上記で取得したPower AppsのWebAPIエンドポイントを入力する
接続テストを実行し、成功を確認後、[次へ]ボタンを押下する
![画像5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3861938/efceb18f-d7ac-7113-f66d-304e794b1de2.png)

任意のプロファイルを選択
![画像6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3861938/27cfd945-f755-42f3-a6ac-9106b9c45f35.png)


内容確認後、**［完了］**　ボタンをクリックください。これでHULFT SquareのREST接続のコネクション設定は完了となります。
![画像7.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3861938/b62440b5-fb8e-daf8-896e-c0bbf3e062ee.png)

### 2.OAuth認証のコネクション設定（Entra ID側）

HULFT SquareからMicrosoft DataverseへOAuth認証で連携するためには、OAuth認証コネクション設定が必要になります。

OAuth認証のコネクション設定を行うにあたり、Entra ID(旧Azure AD)側に **［アプリの登録］** を行う必要があります。先に、アプリの登録を行います。

Azureのポータルサイトに接続し設定を実施していきます。
[Azureポータル](https://portal.azure.com/#home)

**［アプリの登録］** をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/ac4f76cf-1baa-2e65-aecd-86d10b060f43.png)



**［新規登録］** をクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/e216ee4c-30f3-0b0f-8de1-22377a2464fc.png)


任意の　**［名前］**、今回は`HSQ_Microsoft Dataverse` と入力いただき、
リダイレクトURL　`https://app.square.hulft.com/connections/oauth2/callback` を入力し、**［登録］** をクリックします。

:::note warn
HULFT SquareへのリダイレクトURLは固定となります。このまま設定してください。
:::

数秒後、アプリが作成されます。以下の画面で認証に必要な値を取得していきます。


①　**［概要］**　ページで表示される **［アプリケーション (クライアント) ID］**　の値を取得します。

![画像8.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3861938/dce3bee6-2f1a-ddca-450b-1faea151bef5.png)

②、③　**［エンドポイント］**　タブで　**［OAuth 2.0 承認エンドポイント (v2)］** 、**［OAuth 2.0 トークン エンドポイント (v2)］**  の値を取得します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/cc5ee835-0e7b-621c-9667-280d98ca0212.png)

④　**［クライアントシークレット］**  の値を取得します。
**［証明書とシークレット］**　ページで **［新しいクライアントシークレット］**　をクリックします。

![画像12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3861938/cc51fe98-1915-c8f1-2c87-34afab1146ba.png)

任意の　**［名前］**、今回は`HULFT SquareからDataverseへ接続` を入力して、**［追加］** をクリックします。

![画像14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3861938/32dc1f0b-61c7-ed8c-810c-c14f216542b0.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/433fc9f2-4fdf-4cdd-37d6-c0573d0069a7.png)

:::note alert
必ず値を控えておいて下さい、一度しか表示されません。
:::

次にAPIのアクセス許可設定を実施していきます。
まず、「マニフェスト」よりallowPublicClientをtrueに変更して「保存」します。

![画像15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3861938/25147ee5-4217-6404-1e66-d8c73ea33f05.png)

 **「APIのアクセス許可」** より **「アクセス許可の追加」** を行います。

![画像16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3861938/a2a99ac5-29c5-ecfb-40f3-22b1afa377ca.png)

 **「所属する組織で使用しているAPI」** より **「Dataverse」** を選択します。
 
 ![画像17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3861938/2e385c33-2770-ae5f-6b6f-f89ef95b1bcd.png)

「委任されたアクセス許可」を選択して、オプションにチェックを付けたら「アクセス許可の追加」を選択します。

![画像18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3861938/45bcb36b-a6e3-014b-0bab-9b344ce27dba.png)

### 3.OAuth認証のコネクション設定（HULFT Square側）
続いてHULFT SquareでOAuth認証用のコネクションを設定していきます。

**［コネクション］** より、**［新規追加］** をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/39acaf30-f583-fc0d-0473-8b3aac77be0b.png)

検索窓に`oauth`と入力いただき、**［種類］**　に表示される`OAuth2.0認証`を選択いただき　**［次へ］** ボタンをクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/cb237c86-f293-c8e8-9579-b821ecdd40bb.png)

任意の　**［名前］**、今回は`OAuthDataverse`入力いただき、**［次へ］** ボタンをクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/d3d51034-5495-61ca-8ba4-241123c3aeca.png)

**［2.OAuth認証のコネクション設定（Entra ID側）］** で取得した値を設定して、リフレッシュトークンを発行します

**［スコープ］**　：`Offline_access`と`https://orgxxxxxxxx.api.xxxx.dynamics.com/user_impersonation`を設定します。
※ドメインは、Power Appsの「WebAPIエンドポイント」のドメインをご指定下さい。

![画像19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3861938/0305e336-7f9f-7a69-41b7-477f964e93ee.png)

下記画面に遷移後、**［承諾］** ボタンをクリックすると、リフレッシュトークンが発行されます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/f6a05ddf-7bf7-f2d5-626f-1a4d1402c56e.png)



![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/0aec2d79-331a-6a12-c68d-9bf24585d6c7.png)

**［次へ］**　ボタンをクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/948746c1-9b9e-2d4a-5386-80a865187082.png)

**［完了］**　ボタンをクリックします。これでOAuth認証用のコネクション設定は終了です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/01d91f28-da0d-a7ae-aaf8-883d438ce5cc.png)


### Power Appsの管理センターにアクセスする

Microsoft Entra ID アプリケーションが Dataverse データにアクセスできるように、この環境内のユーザーを作成します。
https://admin.powerplatform.microsoft.com/home

![画像20.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3861938/af448b75-8655-9e35-8b00-7570469a8679.png)

対象のDataverseの環境を選択する

![画像21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3861938/30ebdeb0-fea9-8b19-3645-d2472da34068.png)

![画像23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3861938/46f6a1af-c21e-ed99-8233-40f3f7a3390a.png)

「ユーザーとアクセス許可」より「アプリケーションユーザー」を選択します。

![画像24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3861938/97a43efe-2d88-7b7d-cc0f-e2fab75b86a8.png)

![画像25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3861938/3822caa6-aab0-a2de-005b-20481cc3fd1a.png)

「アプリの追加」よりP.5-6で作成したアプリケーションを選択して、追加を押下します。
![画像26.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3861938/e03ead48-a135-2df7-2445-97383e8c303d.png)

以上で、HULFT SquareとDataverseの連携に必要な接続情報の設定は完了です。

## スクリプト作成

今回は「Microsoftデータベース連携」プロジェクトを作成して、その配下に`Dataverse_post`スクリプトを作成しています・

**[HULFT Square Designer]** を起動し、スクリプトを作成していきます。

**[ツールパレット]**　より　**[ネットワーク＞REST＞POST実行]**　アイコンを選択しドラッグ＆ドロップしてスクリプトキャンバスへ配置します。
![2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3861938/cde4004c-6ce7-638d-f51d-0de5a0c8d621.png)

**[必須設定]**　タブを設定します。

![3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3861938/b017c254-ee3a-1ca1-313a-db49bd14540c.png)

**[接続先]**　作成した`REST接続_Dataverse`コネクションを選択
**[パス]**　対象のデータベースを指定

次に　**[認証]**　タブを設定します。

![4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3861938/c8eef4e2-fb9b-bb91-f2f5-0a2d5214c481.png)

**[認証］**　`Authコネクションを利用`を選択
**[接続先]**　作成した`OAuth 2.0認証_Dataverse`コネクションを選択

下記のように　**[start]**　から　**[END]**　までドラッグ＆ドロップでプロセスフローの矢印を繋ぐとデータアンロード用スクリプトの完成です。

![5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3861938/3daa9bdb-a69c-d25a-7898-fb13d04d6909.png)


## ファイルイベントジョブ設定
Dataverse_postスクリプトを実行するファイルイベントジョブを設定します。
今回は 監視対象ディレクトリー　**[SE_HSQブログ用/MSEOTEST]**　へファイルが作成された場合、Dataverse_postスクリプトが実行されます。

![6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3861938/3124053c-b01a-7e58-e4b0-74ca987f339b.png)


## 検証結果確認

監視対象ディレクトリーにファイルが作成された直後、ファイルイベントジョブが起動され、Dataverseにデータ更新することが確認できました。

![7.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3861938/a673c9ce-a12e-6764-f9d9-025e92664c41.png)

![9.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3861938/6f4f442e-0f03-ec13-da85-67f881f9af25.png)


# 終わりに
いかがだったでしょうか。HULFT SquareとMicrosoft Dataverseをつないで、データベース(Dataverse)への自動更新機能を作成してみました。

当記事が、iPaaSとクラウドベースのメールサービスの連携を用いての業務改善の一助になれば幸いです。それではまた！