背景
組織単位での Team を作ってたりしませんか?
そういう場合に、組織のグループで Team が作れていれば、人事異動の際に困らないんですが・・
うちの場合は、組織グループ ≠ Teamsグループ な為、手動更新が必要です
ってことで、組織グループに追従させる方法です。
概要
全体像
詳細
組織グループのユーザー一覧取得
Teams メンバーはフラットですが、組織メンバーは以下がある為、取得結果を変数で受けられるようにする
- グループユーザー
- 組織メンバー一覧取得
- グループ メンバーを一覧表示する を使って一覧取得
- Default: 100 なので、変数化しておいて、Team メンバー取得側と同時に設定できるようにするのがお勧め
- 動作検証する際は小さく、本番動作時は大きく
- 取得した結果をループして、
- ユーザーの場合には、先ほどの変数に追加
- 階層組織におけるグループの場合には、同様の処理をネストする
ユーザー判断のプロパティ
@{items('Apply_to_each_Create_Department_Members')?['@odata.type']}
ユーザーの場合の値
#microsoft.graph.user
Teams グループのユーザー一覧取得
Teams メンバーはフラットなので、そのまま取得して利用する
不足してるユーザーを追加
- 追加・削除に必要な Team ID を変数に保存
- メンバー取得の際に対象Team を指定しているので、Team ID(groupId) を利用
@{actions('List_group_members_Teams_SETTINGS')?['inputs']?['parameters']?['groupId']}
引数の再利用は以下を参考に
- 組織メンバーをループさせて
- Team メンバーに一致する ID (ユーザー) がいるか?を FilterArray で確認
- 存在しない場合に、ユーザー追加:メンバーをグループに追加する
- Team メンバーに一致する ID (ユーザー) がいるか?を FilterArray で確認
存在しない場合の確認方法
@{empty(body('Filter_array_Teams'))}
追加対象のグループは、カスタム値で保存した Team ID を利用
あとは、動的コンテンツで取れるものばかりなので省略
不要なユーザーを削除
追加との相違点は以下
- ループさせるメンバーが、追加側と逆
- 追加ではなく、メンバーをグループから削除する を利用
あとがき
それほど難しくはないので、大きめの組織チームを作った場合には自動化しておくと面倒が無くてよいです。
あとは、差分(追加・削除)時に通知を出すようにしておくと、それに応じた対処がしやすくなりますね
keyword
how to update team members by security group