Azure Logic AppsでAzure ADの属性値を操作してみた話

本記事は、[Power Automate Advent Calendar 2022](https://qiita.com/advent-calendar/2022/powerautomate) 21日目の投稿です。

こんにちわ、 [のりじ](https://twitter.com/nori790822) です。  
Azure Logic AppsでAzure ADの属性値をあれこれしようとしたとき、ぶん殴られまくって自分的につまづいたところが色々あったので覚え書き的な内容です。

# 1. Azure ADコネクタを利用するときの準備

[Azure AD](https://learn.microsoft.com/ja-jp/connectors/azuread/) コネクタは、ユーザーの作成・取得・更新、グループの作成・取得・更新など基礎的な情報の操作ができます。が、「削除」アクションは用意されていません。  
じゃあ削除操作はどうするの？できないの？ってなるんですが、ユーザーもグループも削除操作は [Microsoft Graph API](https://learn.microsoft.com/ja-jp/graph/api/overview?view=graph-rest-1.0) を利用すれば対応できます。  

またAzure ADコネクタを利用するためには、ドメインを管理できる権限の付与と「**Azure ADのドメインに属するユーザー**」が必要になります。  

![aad001.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103396/07ecc97f-72e0-f9a7-3e6c-9b4c6b3b9553.jpeg)

既存のAzure ADのドメインに属するユーザーで操作してもいいのですが、Logic Appsの処理用のユーザーを作成して権限付与など行った方がいいのかな？と個人意見。このあたりは運用に合わせるのが吉かと。

そしてAzure ADコネクタ関連のドキュメントですが、残念ながらMicrosoft公式ドキュメント「[コネクタ参照の概要](https://learn.microsoft.com/ja-jp/connectors/connector-reference/)」の「Azure AD」の項目には、利用時に必要な設定などの詳細は記載されていません…。  
なので、何かしらこのコネクタで問題が起きた場合は「Azure AD関連」のドキュメントを漁りましょう。  

# 2. 「ユーザーの作成する」アクションを使ってみる

今回は「ユーザーの作成する」アクションを例として説明します。  

![add002.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103396/eb8b0542-138a-a0d8-731b-b027f71fe668.jpeg)

新規のユーザー作成を行う場合「ユーザーの作成する」アクションを利用しますが、「Add new parameter」の内容を入れたとしても、このコネクタだけでは会社名や国または地域などの情報を入力することができません。

![add003.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103396/87dacc7e-0148-beaa-08dc-01a98f0b720a.jpeg)

ですので、後続に「ユーザーの更新」アクションを追加し「追加のプロパティ」を利用して属性値を追加します。

![add005.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103396/fa10e835-42cc-0031-4a4a-501cec146142.jpeg)

記入方法はこんな感じ。図のように「キーの入力」と「値の入力」を利用していきます。

## 2-1. Azure ADコネクターで追加可能なプロパティ名

「追加のプロパティ」で扱える内容のうち、登録が発生しやすいかな？と思うものを抜粋してみました。

| キー | 値 |
| ---- | ---- |
| 会社名 | CompanyName |
| 国または地域 | Country |
| 従業員 ID | employeeId |
| 利用場所 | UsageLocation |
| 従業員入社日 | employeeHireDate |
| メール | mail |
| その他のメール | otherMails |

マネージャーはAzure ADコネクタの「管理者の割り当て」アクションを利用すると自動登録できます。

### 2-1-1. 従業員入社日（employeeHireDate）の注意点

ユーザーのプロパティ「ジョブ情報」を確認すると、「従業員入社日」はカレンダー形式で選択して入力する形であることがわかります。

![add004.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103396/f2d8adc8-38b5-fd15-6c40-dcefc66e4dd1.jpeg)

なので「追加のプロパティ」のemployeeHireDateに「2022-12-21」のような形で入力してもエラーになってしまうので「May 01 2022」 のような形になるように整形が必要です。  
この部分は「式」を利用することで回避できるので、以下の内容を参考にしてください。（式の内容間違ってたらゴメンナサイ…）

```
concat(formatDateTime(parseDateTime(triggerBody()['key-button-date'], 'ja-JP', 'yyyy-MM-dd'), 'MMM', 'en-US'), ' ', formatDateTime(parseDateTime(triggerBody()['key-button-date'], 'ja-JP', 'yyyy-MM-dd'), 'dd', 'ja-JP'), ' ', formatDateTime(parseDateTime(triggerBody()['key-button-date'], 'ja-JP', 'yyyy-MM-dd'), 'yyyy', 'ja-JP'))

```

### 2-1-2. その他のメール（otherMails）の注意点

「連絡先情報」で確認できる複数のメールアドレスが登録できる部分です。

![add004-1.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103396/defa9b62-9982-41ad-316a-7dd4a87efd9c.jpeg)

キーは「otherMails」になりますが、入力時は配列の形式で記述（例：[aaa, bbb, ccc]）になります。この部分、普通にメールアドレス入力だとエラーになってしまうのが個人的にハマりました…。 

### 2-1-3. 「その他のメール（otherMails）」を設定後エラーになる場合

コネクタ上ではキチンと配列の形で入力されているにも関わらずエラーになる場合があります。  

![add006.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103396/8b25d222-4f00-c9ce-e75d-b3a28a94cbc6.jpeg)

そのときは「追加のプロパティをテキストモードに変える」をクリックします。

![add007.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103396/ca44e2da-3f1b-0724-ad9d-7ec123ae23a8.jpeg)

JSON形式で入力した内容が表示されますが、エラーになる場合は「その他のメール（otherMails）」部分の表記が崩れていないか（ダブルクォーテーションやスラッシュが入っていないか）確認してください。  

![add008.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103396/6d1effde-1541-7596-d254-f80f8b2a3e41.jpeg)

ダブルクォーテーションやスラッシュを削除し、図のような形に修正し、ワークフローを保存します。  
「その他のメール」を追加した場合、「キー値モード」に戻すとこのような状況になりやすいので「テキストモード」のままで利用した方がいいかなと。ワークフローの修正時には注意してみてください。

# 3. 最後に

Azure ADコネクタは実際に使ってみるとLogic Apps以外の問題（権限付与とかMicrosoft Graph APIの利用、アプリの登録など）と色々な問題が絡んでくるので結構クセが強いな…という感想でした。 
ただこのAzure ADコネクタは仲良くなればできることが一気に増えると言う印象なので、私も頑張って仲良くなりたいと思いますｗ

# 4. 参考URL

- [てすとぶろぐ：LogicApps で Azure AD の操作を行う](https://blog.kuma.icu/2017/04/logicapps-azure-ad.html)