LoginSignup
2
3

More than 1 year has passed since last update.

PowerAutomate: Teams メンバーを組織連動で更新させる

Posted at

背景

組織単位での Team を作ってたりしませんか?
そういう場合に、組織のグループで Team が作れていれば、人事異動の際に困らないんですが・・
うちの場合は、組織グループ ≠ Teamsグループ な為、手動更新が必要です

ってことで、組織グループに追従させる方法です。

概要

  1. 組織グループのユーザー一覧取得
  2. Teams グループのユーザー一覧取得
  3. 不足してるユーザーを追加
  4. 不要なユーザーを削除

全体像

image.png

  • メンバーの取得制限が 999 で、これを超える場合は未考慮
    image.png

グループ メンバーを一覧表示する

組織構造をネスト(入れ子)で対処している為、以下の制限がある。
条件(condition) も計数される為、四階層を超える場合は、子フロー化とかの対処が必要
image.png

フロー定義の制限

詳細

組織グループのユーザー一覧取得

image.png

Teams メンバーはフラットですが、組織メンバーは以下がある為、取得結果を変数で受けられるようにする

  • グループユーザー

ということで、まずは組織メンバーの受け皿変数を準備
image.png

  • 組織メンバー一覧取得
    • グループ メンバーを一覧表示する を使って一覧取得
    • Default: 100 なので、変数化しておいて、Team メンバー取得側と同時に設定できるようにするのがお勧め
      • 動作検証する際は小さく、本番動作時は大きく
  • 取得した結果をループして、
    • ユーザーの場合には、先ほどの変数に追加
    • 階層組織におけるグループの場合には、同様の処理をネストする

ユーザー判断のプロパティ

@{items('Apply_to_each_Create_Department_Members')?['@odata.type']}

ユーザーの場合の値

#microsoft.graph.user

Teams グループのユーザー一覧取得

Teams メンバーはフラットなので、そのまま取得して利用する
image.png

不足してるユーザーを追加

image.png

  • 追加・削除に必要な Team ID を変数に保存
    • メンバー取得の際に対象Team を指定しているので、Team ID(groupId) を利用

@{actions('List_group_members_Teams_SETTINGS')?['inputs']?['parameters']?['groupId']}

引数の再利用は以下を参考に

  • 組織メンバーをループさせて

存在しない場合の確認方法

@{empty(body('Filter_array_Teams'))}

追加対象のグループは、カスタム値で保存した Team ID を利用
image.png

あとは、動的コンテンツで取れるものばかりなので省略

不要なユーザーを削除

image.png

追加との相違点は以下

あとがき

それほど難しくはないので、大きめの組織チームを作った場合には自動化しておくと面倒が無くてよいです。
あとは、差分(追加・削除)時に通知を出すようにしておくと、それに応じた対処がしやすくなりますね

keyword

how to update team members by security group

2
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3