UiPath Communications Mining 準備編 データ連携 方法① Azureを通じてMicrosoft Exchangeとの統合



# はじめに

今回の記事では、メールデータ連携の一つの方法として、Azureを介してMicrosoft Exchangeとの統合を紹介します。

これから記載する内容は、オフィシャルページを基に作成されたものです。オフィシャルページがアップデートされる可能性があるため、内容に相違がある場合は、以下のオフィシャルページをご参照ください。

https://developers.reinfer.io/integration/exchange-azure-tutorial

# 利用するアカウントについて

これから以下のアカウントを利用して、操作手順を説明します。

- Microsoft 365側

| 表示名 | メールアドレス |種類　|用途　|パスワード必要か|
|:-:|:-:|:-:|:-:|:-:|
| li jun | cm_admin@0chy7.onmicrosoft.com |Azureの**管理者アカウント**|Azureでの設定|**必要**|
| Adele Vance | cm_user01@0chy7.onmicrosoft.com |一般ユーザーアカウント|該当アカウントのメールをCMに取り込む|不要|
| Alex Wilber |  cm_user02@0chy7.onmicrosoft.com  |一般ユーザーアカウント|該当アカウントのメールをCMに取り込む|不要|
| Diego Siciliani |ceo_for_cm_test@0chy7.onmicrosoft.com |一般ユーザーアカウント|CEOアカウント、**メールをCMに取り込まない**、検証のみ利用|不要|

- UiPath側

UiPath Communications Miningでインテグレーション設定できる**管理者アカウント**が必要です。UiPath Cloudへログインするので、**パスワードが必要**です

# Azure側での設定(Azure管理者実施)

上記のAzure管理者アカウント(cm_admin@0chy7.onmicrosoft.com)を使って、Azure Cloud Portalへログインして以下の操作を実施します。
- CM用のアプリの登録
- クライアントセキュリティの登録
- API許可の設定
- CM連携用のサービスアカウント作成
- サービスアカウントに一般ユーザーアカウントのメールへのアクセス権付与

## アプリの登録

**手順：**
1. Azureの「アプリの登録」ページへアクセスしてから、「新規登録」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/177240/6acabeb0-0371-19d4-a81f-8c1b3ed824a7.png)

1. 次の「アプリケーションの登録」画面で、「名前」を入力し、「この組織ディレクトリのみに含まれるアカウント（MSFT のみ - シングル テナント）」を選択し、「登録」をクリックしてください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/177240/fe0a2336-52e2-5aed-cd01-aa20a67d5974.png)
1. 登録が成功したら、次に表示される画面で「アプリケーション (クライアント) ID」と「ディレクトリ (テナント) ID」をメモして、後で使用します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/177240/ef859168-a636-aebd-c6fc-aa6aec864c3c.png)

## クライアントシークレットの作成

アプリケーションにログインするためのクライアントシークレットを作成する必要があります。まず、「管理」サイドバーの下にある「証明書とシークレット」をクリックし、次に示す手順に従ってください。

**手順：**
1. 次の画面で「新しいクライアント シークレット」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/177240/d3213f8d-81ed-c441-1a2f-63c38ad520d6.png)
1. 「クライアント シークレットの追加」画面にて、まず説明を入力し、次に有効期限を設定した後、「追加」をクリックします。![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/177240/d2e76e57-8466-5944-f47b-6b7b0f29748f.png)
1. クライアント シークレットの作成が成功したら、次に表示される画面で表示される値をコピーし、安全な場所に保存してください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/177240/12ee6182-3e94-7d45-805e-43d3ab48b577.png)
:::note warn
Azureはこのシークレット値を一度しか表示しないため、絶対にコピーしておくようにしてください。シークレット値を紛失した場合は、もう一度手順を実行して新しい値を生成してください。
:::

## API許可の設定

**手順：**
1. 次に、「管理」サイドバーにある「APIのアクセス許可」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/177240/688cadb5-d993-565e-9c9e-f11c0426a5b9.png)
2. 「API アクセス許可の要求」画面で「microsoft Graph」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/177240/93ff5f2f-cfdd-60f2-eefc-40757f404c63.png)
2. その後、「委任されたアクセス許可」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/177240/750f6f09-6ca6-56e4-dc54-c9d90490417e.png)
2. 「アクセス許可を選択する」欄に、「EWS.Access」を入力して検索します。EWSの許可を展開し、`EWS.AccessAsUser.All`をチェックし、最後に「アクセス許可の追加」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/177240/c7933b7c-b504-d62e-84ae-02894f4564a7.png)
2. 「APIのアクセス許可」画面に戻り、「MSFT に管理者の同意を与えます」をクリックし、その後に表示される「管理者の同意の確認を与えます」ダイアログの「はい」を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/177240/632999b2-85ec-0089-090f-4df27ba2622c.png)
2. 操作が成功すると、次に示すようなポップアップが画面に表示されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/177240/71615d36-be14-ce18-f06a-e84cd57916e7.png)

EWS及び委任に関する詳細情報については、下記のリンク先のページをご覧ください。

https://learn.microsoft.com/ja-jp/exchange/client-developer/exchange-web-services/how-to-authenticate-an-ews-application-by-using-oauth

:::note info
EWS.AccessAsUser.All の委任許可について：
- 同意の種類：この許可では、エンドユーザーが自分自身のデータに対するアクセスを許可するか、または管理者が全員または特定のユーザーに対するアクセスを許可することができます。
- 説明：この許可により、アプリケーションはExchange Web Servicesを介してサインインしたユーザーと同じアクセス権を持って、メールボックスにアクセスすることが許可されます。
:::

## CM連携用のサービスアカウント作成

CMと連携させたいメールボックス(cm_user01@0chy7.onmicrosoft.comとcm_user02@0chy7.onmicrosoft.com)にアクセスするためのサービスアカウントが必要です。
Microsoftでの手順を参照して、必要なユーザーを追加します。

https://learn.microsoft.com/en-us/microsoft-365/admin/add-users/add-users?view=o365-worldwide

**手順**
1. Azureの管理者アカウントを使用し、「[Microsoft 365 admin center](https://admin.microsoft.com/AdminPortal/Home?#/users)」にアクセスします。
1. 次に表示されるユーザー管理画面で、「Add a user」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/177240/003936f0-7a3b-9cff-89c8-792a0656064a.png)
1. 次に表示される画面で、新しいユーザーの姓名、表示名、およびメールアドレスを入力し、「Next」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/177240/811a3d96-6663-d10e-8eb7-cbba2b968cc7.png)
1. 続いて表示されるライセンス割り当て画面では、ユーザーのロケーションを選択し、必要なライセンスを割り当てます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/177240/48520ed7-75bc-1240-d771-5e4dc35c1b1a.png)
1. 次に表示される「Optional settings」画面で設定をデフォルトのままにし、「Next」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/177240/01f28bd6-9f52-59cb-1c8f-5b0038899c56.png)
1. 「Review and finish」画面で全ての内容を確認し、問題がなければ「Finish adding」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/177240/c90dd1b0-a273-ce85-83de-8d37c8f45567.png)
1. 以上の手順で新しいアカウント(cm_service@0chy7.onmicrosoft.com)の作成が完了しました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/177240/357daf7f-eb9f-d438-542a-6f6be855ad35.png)

## サービスアカウントに一般ユーザーアカウントのメールへのアクセス権付与

CM連携メールボックスに対して、サービスアカウントへのアクセスを設定します（サービスアカウントに読み取り専用のアクセスを与えるだけで十分です）。これを行うためには、主に2つの方法があります：
1. 共有メールボックスを作成し、そのアクセス権をユーザー（サービスアカウントを含む）に付与します。
2. ユーザーのメールボックスへのアクセス権をサービスアカウントに与えます。

上記の２番の方法を利用しますので、以下のページの手順(Read email in another user's mailbox)を参照して実施します。

https://learn.microsoft.com/en-us/microsoft-365/admin/add-users/give-mailbox-permissions-to-another-user?view=o365-worldwide#read-email-in-another-users-mailbox

**手順**
1. Azureの管理者アカウントを使用して、「[Microsoft 365 admin center](https://admin.microsoft.com/AdminPortal/Home?#/users)」へアクセスします。
1. CMへメールを取り込むアカウントである「cm_user01@0chy7.onmicrosoft.com」と「cm_user02@0chy7.onmicrosoft.com」のアクセス許可を新規作成した「cm_service@0chy7.onmicrosoft.com」サービスアカウントに付与します。「cm_user01@0chy7.onmicrosoft.com」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/177240/7aa41bbb-3eec-0b76-5aa4-4437b23767d0.png)
1. 次に表示される画面で「Mail」タブをクリックし、Mailbox permissionsにある「Read and manage permissions」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/177240/3e7c1131-63c5-b05d-57ad-a875491fa1ec.png)
1. 「Read and manage permissions」画面にて「Add permisions」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/177240/4d9ef032-c95f-5916-61e8-672960823194.png)
1. 次の画面で、「cm_service@0chy7.onmicrosoft.com」サービスアカウントを選択し、「Add」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/177240/bf6d0a15-8886-6057-103a-3e59f668c102.png)
1. この手順を繰り返し、「cm_user02@0chy7.onmicrosoft.com」にも同様の操作を行います。

ここまでの手順で、AzureとMicrosoft 365 admin centerにおける設定が完了しました。

# UiPath CM側の設定(UiPath CM管理者実施)

UiPath Cloudでの管理者アカウントを使用して、UiPath Automation Cloudへログインして、以下の操作を行います。

**手順：**
1. CMにアクセスし、右上隅にある歯車アイコンをクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/177240/e49c7dae-a016-cf95-5b75-87c9725f582e.png)
1. まだプロジェクトが作成されていない場合は、「Manage Access」タブの中の「All projects」をクリックします。(既にプロジェクトが存在する場合は、No2-No4のステップが不要です)![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/177240/5d2fdcba-718b-ff44-2853-33c10c9585a3.png)
1. 次に表示される画面で「New」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/177240/f956fc6e-9ea8-00b9-82fd-d8127d51e9ee.png)
1. プロジェクト名やユーザーなどの必要な情報を入力し、「Create project」をクリックして新しいプロジェクトを作成します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/177240/78c0e53f-aaf3-1663-5c29-3ba61137e6f2.png)
1. 次に、「Administration」画面に戻り、「New integration」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/177240/f5bd816d-94dc-f405-ad49-500b937d3dd5.png)
1. 「Create a new Integration」画面で、プロジェクト名やタイトルなどの情報を入力し、「Continue」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/177240/1b57c544-b33d-dac6-b8ae-bb62b9923687.png)

1. その後、Azureで登録したアプリ及びサービスアカウントの情報を設定し、「Validate & save credentials」をクリックして情報の有効性を確認します。
    -  Oauth Authority: `https://login.microsoftonline.com/{tenant_id}`、{tenant_id}がAzureで登録したアプリのテナントIDです。
    -  Oauth Client Id: Azureで登録したアプリのクライアントIDです。
    -  Username: Microsoft 365 admin centerで作成したサービスアカウント `cm_service@0chy7.onmicrosoft.com`
    -  Password: 上記サービスアカウントのパスワード
    -  Client Secret：Azureで作成したクライアント シークレット値
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/177240/5aef10dd-fe80-e289-e7d3-c8b9cce33688.png)
1. 確認が完了すると、以下の図に示されているような緑色の表示が現れます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/177240/3e456ee4-3ae0-51a1-f45c-6f4d3af0a475.png)
1. 次に、「Continue」をクリックし、連携するメールボックスを追加します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/177240/9836027e-e249-de04-61ce-ac575ec728d4.png)
1. 「cm_user01@0chy7.onmicrosoft.com」メールボックスを追加します。まだバケットが存在しない場合は、新規に作成し、「Add mailbox」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/177240/8f7e13c0-cde7-d8e9-ecae-bb5b4961f8a8.png)
1. 次に進み、「cm_user02@0chy7.onmicrosoft.com」メールボックスも追加します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/177240/cfb4930a-0d7a-84df-216b-b53c6c8a859c.png)
1. 追加が完了すると、以下の二つメールボックスのメールが連携されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/177240/d0065b43-41a2-7102-89c1-0eca045706d7.png)

1. 「Create integration」をクリックすると、以下のようなインテグレーションが作成されます。![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/177240/daac027e-77fc-73c6-d664-b7af36da6138.png)


# 検証(UiPath CM管理者実施)

次に、上記の設定の有効性及びセキュリティー関連の検証を実施します。

## 準備作業

検証するため、必要なデータセット及び関連付けの設定が必要です。

**手順：**
1. 以下の「Source」タブでの「New source」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/177240/092ad54b-8c78-1dd9-116d-313b972fb281.png)
2. basic infoで所属プロジェクトを選択し、API Nameを入力し、次に作成したバケットを選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/177240/924ca166-ae96-f6f7-b9cf-3d9ba92125c7.png)
1. 次に、CMのホーム画面に戻り、「New dataset」をクリックし、データセットを作成します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/177240/cca96c1b-ca97-7fa2-a717-08fa4c273614.png)
1. ポップアップされた以下の画面で、「Connect to an existing source」をクリックして、先ほど作成したSourcesをデータセットに追加します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/177240/13a749ff-d0ba-27d1-efc8-de7c068148d3.png)
1. 「Soures」欄に、作成したsourceを指定し、下の「Update dataset」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/177240/c84d5c67-748e-c7a7-3b9e-b577c579a26c.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/177240/ccf6b667-db57-6771-7b79-63a9b721d323.png)
1. データセットが作成されたら、該当データセットの「Explore」タブをクリックして、連携予定の二つメールボックスのメールが表示されました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/177240/10cd5489-c780-9874-a99b-eddd5a563c53.png)



## 検証1

CMに連携された二つメールボックスにメール送信して、CM側で該当メールが連携されたのを検証できました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/177240/e80ea3ba-00a0-5970-1615-465620b06f83.png)

## 検証2

サービスアカウントの`cm_service@0chy7.onmicrosoft.com`にメールの読み取り権限を与えたのは、以下の二つアカウントです：
- `cm_user01@0chy7.onmicrosoft.com`
- `cm_user02@0chy7.onmicrosoft.com`

もしこの二つ以外のアカウントをCMに追加したら、メールもCM側に連携されるかを検証します。
- `cm_admin@0chy7.onmicrosoft.com`：Azure管理者アカウント
- `ceo_for_cm_test@0chy7.onmicrosoft.com`：CEOのアカウント

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/177240/71acf69e-2cef-985e-192c-98d50834dd48.png)

上記の四つメールアドレス宛に、別々にメールを送信します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/177240/0fb9fe2a-93e6-49b1-0aa5-0075e3a4b1c0.png)

CM側を確認します。権限がある二つアカウントのメールがCMに連携され、Azure管理者とCEOのアカウントメールが連携されませんでした。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/177240/3220b8df-edd4-875d-fdf2-3bd956d0c2cb.png)

# 終わり

上記の手順に従うと、Microsoft Exchangeとのインテグレーションが可能となり、設定されたメールボックスで新しいメールを継続的に取得することができます。さらに、CMの画面では、設定されたメールボックスのフォルダーや取得日などを細かく指定することもできます。これはUiPathが特に推奨する連携方法の一つです。
もし顧客がPoCの実施を希望する場合、またはセキュリティの関係でMicrosoft Exchangeとの直接的なインテグレーションが困難な場合は、次の記事で紹介するOutlookのPSTファイルを利用した連携方法をご参考ください。