「削除されたフローを管理者として復元する」アクションを使ってみた

※ この記事は、[Microsoft Power Automate Advent Calendar 2024](https://qiita.com/advent-calendar/2024/powerautomate) 12月6日 担当分の記事です。

# 「削除されたフローを管理者として復元する」アクション

Power Automate管理コネクタに「削除されたフローを管理者として復元する」アクションがあります。
誤って削除したフローを復元するのに便利です。
今まで、PowerShellで復元したりしていたのですが、クラウドフローでできるならやってみようということで検証してみました。

といっても、復元する方法は、ちゃんと公式ドキュメントに記載があります。
[Power Automate で削除されたフローを復元する - Power Automate | Microsoft Learn](https://learn.microsoft.com/ja-jp/power-automate/how-tos-restore-deleted-flow?WT.mc_id=DX-MVP-5005072)

ということで、公式ドキュメントを見ながら、進めていきます。

「削除されたフローを管理者として復元する」アクションに指定するのは、「環境」と「Flow」となっています。
どちらも選択肢になっていますが、「Flow」の方に削除したフローが選択肢に出るわけもないですね。。。

![restoreflow01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1382111/b303bd16-5f4b-024a-26f7-d3020720e8fa.png)

ドキュメントを見ると、「管理者としてフローの一覧を取得 (V2)」アクションを使えば、削除されたフローも一覧として取得できるようです。
「論理的に削除されたフローを含める」オプションを「はい」に設定すればよいようです。

![restoreflow02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1382111/ca9382e4-047b-d541-c63a-8d7c844cd09a.png)


# 「管理者としてフローの一覧を取得 (V2)」アクション
ということで、さっそく、削除されたフローが一覧として取得できるかから試してみます。

・・・ん？出力にさっき削除したはずのフローが出ていない。
まさかとは思うが、「はい」と「いいえ」が逆とか？と思い、「論理的に削除されたフローを含める」オプションを「はい」にしたり、「いいえ」にしたり、何も設定しなかったりと、テストを繰り返します。
どの設定にしても、取得したフローの数が一緒で、削除したはずのフローの情報は出力されません。。。
・
・
・
・
・
またですか・・・・・
（なんのことかお分かりにならない方は、[管理者用 Power Automate 管理コネクタの「フローの承認を削除する」アクションを使ってみた](https://qiita.com/dreams_panda/items/9fe118c71518b1746ee3)をご覧ください。）

ひとまず、PowerShellで削除したフローが取得できるか確認してみようということで、以下でフローの一覧を取得します。
```
Get-AdminFlow -EnvironmentName ＜環境ID＞-IncludeDeleted $true
```
[]()

あるよ。削除したフローちゃんと出てくるよ。ねーさん。
![restoreflow03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1382111/8852a365-9463-a4bf-97af-6a9ca74b750e.png)


# 問い合わせへ（再）
「分からないなら聞いちゃえばいいじゃない」ということで、問い合わせをする（SR発行）ことにしました。
・
・
・
・
・
数日後・・・

「改ページ」を有効化しろやボケ と言われました（注意：言われていません）

# 改ページが無効な場合の挙動
「あっ、改ページかー、たしかに」と思ったのですが、少し疑問がありました。
「削除されたフローを管理者として復元する」アクションは、「環境」を指定して、環境内のクラウドフローの一覧を取得するものです。

A環境だと「13」でしたので、すべて取れていると勘違いしたのです。
改ページ有効にすると「28」でしたので、それは勘違いだったわけですが、改ページ無効だとして、取得できる数が少ないなーと感じました。

たとえば、SharePointコネクタの「複数の項目を取得」アクションですと、改ページを無効化している状態では、最大 100件 までしか取得できません。
100件以上の情報を取得するためには、改ページを有効にするわけです。

そこで、改ページを無効にした状態でいくつかの環境にあるクラウドフローの数をカウントしてみたのが以下でとなります。

| No.| 環境| 改ページ無効 |改ページ有効| 
|:-----------|:-----------|:------------|:------------|
|01|A環境|13|28|
|02|B環境|28|70|
|03|C環境|147|147|
|04|D環境|8|23|
|05|E環境|4|4|
|06|F環境|27|27|

「管理者としてフローの一覧を取得 (V2)」アクションをの場合ですと、改ページの設定に関係なく同じ場合もあったり、改ページ有効の場合、ほとんどの環境において、20以上あるわけですが、無効の場合の取得できる数がまちまちです。
100以上ある環境の場合、無効の場合も有効の場合も同じ数が取れています。
改ページ無効でも「147」取得できる場合もあるわけで、無効の場合に取得できる上限はどうなっているのでしょうか？

とりあえず、どんなに数が少ないとしても、「管理者としてフローの一覧を取得 (V2)」アクションを利用する場合は、必ず改ページを有効化した状態で使うことが望ましいようです。

※ このあたりの仕様については、引き続き、問い合わせをしているので、動作が分かりましたら追記したいと思います。
（2024/12/27追記）「管理者としてフローの一覧を取得 (V2)」アクションにすべてのFlow一覧取得できない事象は、製品の既知の問題として扱っているそうです。対応策としては［改ページ］の設定にて改善すること、またはPowerShellにて取得することとのこと。

# 「削除されたフローを管理者として復元する」アクション

疑問が残ったままですが、「管理者としてフローの一覧を取得 (V2)」アクションで削除したフローが取得できない問題は解決したので、本題の「削除されたフローを管理者として復元する」アクションの動作を確認していきます。

「管理者としてフローの一覧を取得 (V2)」アクションの出力結果から、"state"が"Deleted"となっているのが、削除されたクラウドフローであることが分かりました。

'state'が "Deleted"であった場合、クラウドフローを復元するようにアクションを設定していきます。

![restoreflow04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1382111/dc61205d-fe6a-8a03-3b40-cff6d2b7fba1.png)


＜フローの全体像＞
![restoreflow05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1382111/abb462ee-333e-6877-39cd-22793cfa5600.png)


環境の中で削除されたクラウドフローを復元することができました。
復元されたクラウドフローは、無効状態で復元されます。
![restoreflow06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1382111/b3c9e983-f47c-0a92-ce54-e69a7ff9fa42.png)

:::note info
復元できるクラウドフローは、「削除後 21 日以内」のものに限られますので、その点はご注意ください。
:::

また、クラウドフローの復元は、Power Platform管理者の方しかできない点にも注意が必要です。
Power Platform管理者権限がないユーザーで実行した結果、以下のエラーが発生しました。
![restoreflow07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1382111/cb6f7165-26a7-e778-eb8e-127cea010754.png)

Power AutomateのCopilotが解説してくれた内容
![restoreflow08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1382111/5d8834ed-9777-6169-6d0f-86eb5fe8e231.png)



# さいごに
公式ドキュメント「[Power Automate で削除されたフローを復元する - Power Automate | Microsoft Learn](https://learn.microsoft.com/ja-jp/power-automate/how-tos-restore-deleted-flow?WT.mc_id=DX-MVP-5005072)」に記載されているとおり、「管理者としてフローの一覧を取得 (V2)」アクション と 「削除されたフローを管理者として復元する」アクションを組み合わせることで、誤って削除したクラウドフローを復元することが可能です。

PowerShellでも、アクションを利用する場合においても、クラウドフローを復元するには、フローIDが必要になります。
ユーザーから「誤ってクラウドフロー削除したから、復元して欲しい」といわれても、復元するには、フローIDの確認から行わなければ実施する必要があるわけです。
しかし、削除したクラウドフローのフローIDなんて覚えているわけもないわけですよね。
「管理者としてフローの一覧を取得 (V2)」アクションを利用すれば、環境内で削除されたフローが検出でき、かつ、フローIDも併せて取得できますので、該当のクラウドフローを見つけ出すことが簡単にできます。

今回は、環境内で削除されたクラウドフローをすべて復元するように作成しましたが、「管理者としてフローの一覧を取得 (V2)」アクションでは、"creator"の"userId"も取得できるため、Office 365 ユーザーコネクタを組み合わせることで、環境内の特定のユーザーが削除したクラウドフローだけを復元することも可能です。

Power Platform管理者が、クラウドフローの復元依頼があった際に、活用できるクラウドフローが作成できるのではないでしょうか。

それでは、これからも、Power Automate Liefを楽しんでください。