管理者が Power Automate クラウド フローの実行履歴を取得する方法 ~失敗調査・複数フローの監視・集計を目的別に使い分ける~

Published: / Last update: / Contributors:
feedback 共有

こんにちは、Power Platform サポートチームの早坂です。
本記事では、管理者が Power Automate クラウド フローの実行履歴を確認・取得する方法についてご案内します。

「特定のクラウド フローが失敗した原因を調べたい」「複数のクラウド フローの実行状況をまとめて監視したい」「実行結果を一覧で取得し、集計してレポートを作りたい」といった場面では、目的によって適したログが異なります。こうした困りごとを解消するために、Power Automate の標準の実行履歴、Application Insights のテレメトリ、Dataverse の FlowRun テーブルという 3 種類のログについて、それぞれの特徴、使い分け、取得方法をご紹介します。目的に合ったログの選び方が分かるよう、次章でまず全体像を整理します。

なお、管理者がクラウド フローの一覧を取得する方法は、弊社ブログ記事「Power Automate のクラウドフロー一覧を管理者が取得する方法」でご紹介しています。

  1. 概要
  2. Power Automate の標準の実行履歴
    1. ログの概要
    2. ログの取得方法
      1. ポータルで確認する
      2. CSV でエクスポートする
      3. PowerShell の Get-FlowRun で取得する
  3. Application Insights のテレメトリ
    1. ログの概要
    2. ログの取得方法
  4. Dataverse の FlowRun テーブル
    1. ログの概要
      1. 対象となるクラウド フロー
      2. 保存される列
      3. 保存されない情報とポータルとの比較
      4. 保持期間
      5. 実行履歴が記録されない主な条件
    2. ログの取得方法
      1. オートメーション センターで確認する
      2. Excel の OData フィードから取得する
        1. Web API エンドポイントを確認する
        2. Excel から接続する
        3. flowruns テーブルを読み込む
      3. Dataverse Web API から取得する


1. 概要

管理者が利用できる主なログは、以下の 3 種類です。用途や確認できる内容、保持期間、取得方法が異なるため、まずは全体像を把握し、目的に合ったログを選んでください。

クラウド フローには、ソリューションに含まれるもの(ソリューション対応クラウド フロー)と含まれないものがあります。それぞれ内部的に管理される場所が異なるため、実行履歴の閲覧可否も異なります。

ログの種類 利用できる人 対象となるクラウド フロー 確認できる内容・主な用途 保持期間 確認・取得の方法
Power Automate の標準の実行履歴 所有者・共同所有者など、対象のクラウド フローへのアクセス権を持つユーザー ソリューション対応クラウド フローと、ソリューションに含まれないクラウド フローの両方 実行、トリガー、アクションの状態や入力・出力。個別の問題調査 既定 28 日 Power Automate ポータル、CSV エクスポート、PowerShell (Get-FlowRun)
Application Insights のテレメトリ エクスポートを設定する管理者と、Azure リソースのログを読み取れるユーザー マネージド環境のクラウド フロー(エクスポートを設定した環境のもの) 実行、トリガー、アクションのテレメトリ。複数のクラウド フローの監視・分析(入力・出力のすべては含まない) 出力先 Log Analytics の保持設定に従う Application Insights のメトリック・ログ (KQL)
Dataverse の FlowRun 対象レコードを読み取れるユーザー(オートメーション センターは追加の条件あり) ソリューション対応クラウド フロー 実行単位の状態、時刻、実行時間、エラー概要。複数のクラウド フローの監視や結果の集計 既定 28 日(変更可能) オートメーション センター、Excel の OData フィード、Dataverse Web API / PowerShell

2. Power Automate の標準の実行履歴

2-1. ログの概要

Power Automate ポータルでは、アクセス権のあるクラウド フローの実行履歴を確認できます。ソリューション対応クラウド フローと、ソリューションに含まれないクラウド フローの両方が対象です。

標準の実行履歴は、実行の記録が欠けない仕組み(トランザクション)で保存されます。既定の保持期間は 28 日です。長期保存が必要な場合は、保持期限が切れる前に必要な情報を取得してください。詳細は フローの実行履歴またはトリガー履歴が見つからない場合の説明 を参照してください。

2-2. ログの取得方法

標準の実行履歴は、Power Automate ポータルで確認できるほか、CSV でエクスポートしたり、PowerShell の Get-FlowRun で取得したりできます。個別の問題調査にはポータル、一覧での取得には CSV や PowerShell が適しています。

2-2-1. ポータルで確認する

個別の問題を調査する場合は、はじめに Power Automate ポータルの実行履歴から対象の実行を特定します。

  1. Power Automate で対象の環境へ切り替えます。
  2. 対象のクラウド フローを開き、実行履歴から調査する実行を選択します。
  3. 失敗したトリガーまたはアクションを展開し、エラー、入力、出力を確認します。

実行詳細ページの URL は以下の形式です。

1
https://make.powerautomate.com/environments/<環境 ID>/flows/<クラウド フロー ID>/runs/<実行 ID>

ソリューション対応クラウド フローの場合は、以下の形式になります。マイ フロー から開いた場合は、<ソリューション ID> の部分が ~preferred になります。

1
https://make.powerautomate.com/environments/<環境 ID>/solutions/<ソリューション ID>/flows/<クラウド フロー ID>/runs/<実行 ID>

URL の <実行 ID> は FlowRun テーブルの name に対応するため、4. Dataverse の FlowRun テーブル で同じ実行を探すときの手がかりになります。

失敗した実行を Power Automate ポータルで開くと、実行の詳細画面の上部にアクション名とエラーの詳細が表示されます。

Power Automate の実行詳細画面。上部に「フロー実行に失敗しました。アクション 'Divide_by_zero' に失敗しました」と失敗したアクション名とエラーの詳細が表示され、キャンバス上で該当アクションが失敗、後続アクションがスキップされている

2-2-2. CSV でエクスポートする

実行履歴を CSV として取得する場合は、次の手順で操作します。

  1. Power Automate で マイ フロー から対象のクラウド フローを開きます。
  2. 実行履歴 の すべて表示 を選択します。
  3. CSV のダウンロード を選択します。

詳細は 実行履歴をエクスポートする を参照してください。CSV には、実行の状態や開始・終了時刻に加えて、トリガーとアクションの入力・出力も含まれます。

2-2-3. PowerShell の Get-FlowRun で取得する

標準の実行履歴は、Microsoft.PowerApps.PowerShell モジュールの Get-FlowRun でも取得できます。管理者向けモジュールではなく、作成者向けモジュールに含まれるコマンドです。

以下は、モジュールをインストールし、サインインして対象のクラウド フローの実行履歴を取得する使用例です。環境 ID とクラウド フロー ID を対象の値に置き換えてください。使用にあたっては サンプルコード免責事項 をご確認ください。

1
2
3
Install-Module -Name Microsoft.PowerApps.PowerShell -Scope CurrentUser
Add-PowerAppsAccount
Get-FlowRun -EnvironmentName '<環境 ID>' -FlowName '<クラウド フロー ID>'

サインインするユーザーには、所有者や共同所有者など、対象のクラウド フローへのアクセス権が必要です。管理者ロールがあるだけで、すべてのクラウド フローの実行履歴を取得できるわけではありません。

モジュールの利用方法は Power Apps 用の PowerShell サポート を参照してください。

3. Application Insights のテレメトリ

3-1. ログの概要

個別の調査ではなく、アクション単位のテレメトリを長期的に保持して監視・分析したい場合は、Application Insights へのエクスポートをご検討ください。

重要

Power Automate の Application Insights へのエクスポートは、現在パブリック プレビューです。詳細は Application Insights へのデータのエクスポートを設定する を参照してください。

Application Insights では、クラウド フローの実行は requests、トリガーとアクションは dependencies に保存されます。customDimensions の environmentId と resourceId(クラウド フロー ID)に加え、発生時刻やアクション名を使って、ポータルで確認した実行に絞り込みます。ただし、テレメトリは各アクションの入力・出力のすべてを保存するわけではありません。

Application Insights に保存されるのは、エクスポート対象として設定したクラウド フローの実行、トリガー、アクションのデータです。エクスポートできるのは、Dataverse データベースを持つマネージド環境だけです。設定するユーザーには、テナントの Power Platform 管理者または Dynamics 365 管理者ロールに加え、対象環境の環境管理者またはシステム管理者ロールが必要です。また、出力先 Azure リソースに対する権限も必要です。ログを確認するユーザーにも、その Azure リソースのログを読み取る権限が必要です。

保持期間は、出力先 Log Analytics ワークスペースおよびテーブルの実際の設定に従います。AppRequests と AppDependencies の既定の保持期間は 90 日で、テーブルごとに変更できます。設定は Log Analytics ワークスペースでデータ保持を管理する を参照してください。

重要

Application Insights のテレメトリはトランザクション データではないため、すべてのログが欠落なく保存されることは保証されません。

3-2. ログの取得方法

設定から確認までの流れは以下のとおりです。画面付きの詳しい手順は、各リンク先の公開情報を参照してください。

  1. Application Insights へのデータのエクスポートを設定する に沿って、Power Platform 管理センターで対象環境と出力先を指定し、Power Automate の実行、トリガー、アクションからエクスポートするカテゴリを選択します。
  2. データの反映を待ち、Application Insights を使用してクラウド フローを監視する に沿って、Application Insights のメトリックやログを確認します。データの配信には最大 24 時間かかる場合があります。
  3. ログの絞り込みや集計には、同ページに掲載されている KQL の例を、対象環境やクラウド フローに合わせて書き換えて使います。

4. Dataverse の FlowRun テーブル

4-1. ログの概要

FlowRun は Dataverse のエラスティック テーブルで、クラウド フローの実行単位の情報が保存されます。実行結果を一覧で取得・集計する用途に適しています。

4-1-1. 対象となるクラウド フロー

FlowRun テーブルに実行履歴が保存される対象は、ソリューション対応クラウド フロー(定義が Dataverse に保存されているクラウド フロー)です。

対象のクラウド フローの定義が Dataverse に存在するかどうかは、Web API で workflow テーブルを参照して確認できます。

1
GET https://<組織 URL>/api/data/v9.2/workflows(<クラウド フロー ID>)?$select=name,category

クラウド フローの情報が返れば FlowRun に実行履歴が記録され、404(定義が見つからない)の場合は記録されません。

4-1-2. 保存される列

保存される列の詳細は、Dataverse でクラウド フロー実行履歴を管理する を参照してください。

4-1-3. 保存されない情報とポータルとの比較

以下のようなアクション単位の情報は FlowRun テーブルに保存されません。

  • アクションの表示名
  • アクションごとの状態や実行時間
  • アクションの入力と出力

失敗した実行では、errorcode に ActionFailed などのコードが、errormessage に次のような JSON が保存されます。

1
2
3
4
5
{
"code": "ActionFailed",
"message": "An action failed. No dependent actions succeeded.",
"messageTemplate": "An action failed. No dependent actions succeeded."
}

FlowRun と Power Automate ポータルで取得できる情報の違いは以下のとおりです。失敗した同じ実行を、両方で確認した結果です。

情報 FlowRun Power Automate ポータル
実行の状態 確認可 (status) 確認可
エラー コード 確認可 (errorcode) 確認可
失敗したアクション名 確認不可 確認可
エラーの詳細 概要のみ (errormessage) 確認可
アクションの入力と出力 確認不可 確認可
クライアント追跡 ID 確認可 (clienttrackingid) 確認可

このように、errormessage から取得できるのは実行単位の概要までです。どのアクションが失敗したかを特定する場合は、2-2-1. ポータルで確認する の手順でポータルから確認してください。

4-1-4. 保持期間

FlowRun レコードの既定の保持期間は 28 日です。

Power Platform 管理センターから保持期間を変更する手順は以下のとおりです。

  1. Power Platform 管理センター にサインインします。
  2. 管理 > 環境 から対象の環境を選択し、設定 を開きます。
  3. 製品 > 機能 を選択します。
  4. Dataverse のクラウド フロー実行履歴 の FlowRun エンティティの Time to Live を設定します。

Power Platform 管理センターの機能ページに表示される Dataverse のクラウド フロー実行履歴の設定

選択できる値は、有効 - 28 日間保持 (既定)、有効 - 14 日間保持、有効 - 7 日間保持、無効 の 4 つです。

FlowRun エンティティの Time to Live で選択できる 4 つの値

管理センターに用意されていない任意の値が必要な場合は、組織テーブルの FlowRunTimeToLiveInSeconds を直接変更します。値を 0 にすると、新しい実行が記録されなくなります。

Note

保持期間の変更は、変更後に作成される FlowRun レコードにのみ適用されます。既存のレコードの保持期間は変わりません。

4-1-5. 実行履歴が記録されない主な条件

FlowRun に実行が記録されない代表的な条件は以下のとおりです。

条件 内容
クラウド フロー所有者の権限不足 クラウド フローのプライマリ所有者が FlowRun テーブルへの読み取り権限を持たない場合、FlowRun に実行が記録されません。FlowEvent に ElasticTableNoRoleForUser が記録されます。
パーティション サイズの上限 エラスティック テーブルには、現時点でパーティションあたり 20 GB の制限があります。上限に達すると、そのユーザーが所有するクラウド フローの実行だけが記録されなくなります。
取り込みレートのスロットリング 1 人のユーザーが実行頻度の高いクラウド フローを多数所有している場合、記録が制限され、一部の実行が記録されないことがあります。
保持期間が 0(無効) FlowRunTimeToLiveInSeconds が 0 の場合、新しい実行が記録されなくなり、FlowEvent に TtlSettingEqual0 が記録されます。

Note

FlowRun はユーザー単位でパーティション分割されるため、上記の上限やスロットリングは組織全体ではなく、クラウド フローの所有者ごとに評価されます。特定のユーザーにクラウド フローの所有権が集中している環境では影響を受けやすくなります。

警告

FlowRun には、すべての実行が記録されるとは限りません。監査や完全な実行記録が必要な用途では、他の方法をご検討ください。

実行履歴に不足がある場合は、FlowEvent テーブルの FlowRunIngestion イベントを確認してください。保持期間の無効化、ストレージ容量、パーティション上限、取り込みレートの超過など、記録されなかった理由が残ります。

重要

ただし、FlowEvent に何も記録されていなくても、すべての実行が FlowRun に記録されているとは限りません。一時的な問題で記録されなかった実行は、FlowEvent にも記録されないためです。

4-2. ログの取得方法

環境内の複数のクラウド フローの実行状況をまとめて監視する場合はオートメーション センター、コードを書かずに一覧を取得・集計する場合は Excel の OData フィード、自動処理に組み込む場合は Dataverse Web API が適しています。いずれも、クラウド フローの実行データとして FlowRun を参照します。

4-2-1. オートメーション センターで確認する

オートメーション センターでは、ダッシュボードから実行ログ、エラー、パフォーマンスなどを確認できます。クラウド フローについては、ソリューション対応クラウド フローが対象です。オートメーション センターは FlowRun のデータを表示するため、本記事では FlowRun の確認方法の一つとして紹介します。

表示には、クラウド フローの所有者であること、または環境全体の関連データへの読み取りアクセス権が必要です。共同所有者であることだけでは十分ではありません。 workflow、flowrun、flowsession などの関連テーブルに対する読み取り権限と、その範囲(自分のレコードだけか、組織全体かなど)を確認してください。

Power Automate で対象環境の オートメーション センター を開き、実行ログやパフォーマンスを確認します。画面付きの操作方法とアクセス条件は オートメーション センターの概要 を参照してください。

4-2-2. Excel の OData フィードから取得する

FlowRun の内容は、Excel の OData フィードから取得することもできます。コードを書かずに一覧を取得できるため、定期的な集計やレポートの作成に適しています。

4-2-2-1. Web API エンドポイントを確認する

  1. Power Apps で対象の環境へ切り替えます。
  2. 右上の歯車アイコンから 開発者リソース を選択します。
  3. Web API エンドポイント に表示されている URL を控えます。

Power Apps の開発者リソース画面。Web API エンドポイントの URL が表示されている

4-2-2-2. Excel から接続する

  1. Excel で空白のブックを開きます。
  2. データ タブ > データの取得 > その他のデータ ソースから > OData フィードから を選択します。

Excel のデータ タブで、データの取得からその他のデータ ソースからを展開し、OData フィードからが表示されている

  1. 4-2-2-1. Web API エンドポイントを確認する で控えた Web API エンドポイント の URL を入力し、OK を選択します。

OData フィード ダイアログに Web API エンドポイントの URL を入力した状態

  1. 組織アカウント を選択し、環境に対する権限を持つユーザーでサインインします。サインイン後、接続 を選択します。

OData フィードの認証画面。左側の一覧から組織アカウントが選択されている

重要

認証方法の既定は 匿名 です。組織アカウント を選択しないと接続できません。

4-2-2-3. flowruns テーブルを読み込む

  1. ナビゲーターの検索ボックスに flowruns と入力し、表示されたテーブルを選択します。
  2. プレビューの内容を確認し、読み込み を選択します。

ナビゲーターで flowruns を検索して選択し、右側にプレビューが表示されている

Excel のワークシートに FlowRun のレコードが読み込まれます。

Excel に flowruns テーブルが読み込まれ、クエリと接続ウィンドウに読み込み済みの行数が表示されている

Note

接続時にテーブルの情報を読み込むため、完了までに時間がかかる場合があります。

Note

Excel の OData フィードや Dataverse コネクタは、比較的小規模なデータを扱う分析シナリオを想定しています。大量データを継続的に抽出する場合は、Azure Synapse Link の使用が推奨されています。詳細は Dataverse コネクタの制限事項と考慮事項 を参照してください。

4-2-3. Dataverse Web API から取得する

ここでは、Dataverse Web API を使ってデータを読み取る例を紹介します。API の実行には、対象環境の FlowRun テーブルを読み取る権限と、Dataverse Web API 用のアクセストークンが必要です。システム管理者ロールなど、環境内のすべての FlowRun レコードを読み取れる権限があれば、自分が所有していないクラウド フローの実行履歴も取得できます。

Dataverse Web API の $select で指定する論理名と説明は、Flow Run (flowrun) テーブル/エンティティ参照 を参照してください。

Note

duration の単位は、Microsoft Learn の日本語ページ間で記載が異なります。Dataverse でクラウド フロー実行履歴を管理する では「実行期間」が 秒単位、Flow Run (flowrun) テーブル/エンティティ参照 の DurationInMs では「実行時間 (ミリ秒単位)」と記載されており、弊社の検証環境でもミリ秒単位であることを確認しました。

重要

status と triggertype を $filter で指定する場合は、画面の表示名ではなく API が返す値を使ってください。弊社の検証環境では、triggertype に Scheduled(画面の表示は「スケジュール済み」)や Instant(「すぐに」)が、status に Succeeded や Failed が格納されていました。Dataverse でクラウド フロー実行履歴を管理する に記載されている「自動化」「予定されている」「マニュアル」も API の値ではないため、そのまま $filter に指定しても一致しません。

FlowRun テーブルのエンティティ セット名は flowruns です。以下のような GET 要求で実行履歴を取得できます。使用にあたっては サンプルコード免責事項 をご確認ください。

重要

以下のサンプルの <クラウド フロー ID> には、Power Automate の マイ フロー から対象のフローを開き、URL の /flows/ の直後に表示される FlowId を指定してください。ソリューション エクスプローラーから開いた URL に含まれる workflowUniqueId はバージョンごとに変わるため、使用しないでください。詳細は ソリューションに対応したクラウド フローのドラフトとバージョン管理 - 既知の問題 を参照してください。

1
2
3
4
5
6
7
8
GET https://<組織 URL>/api/data/v9.2/flowruns
?$select=name,starttime,endtime,duration,status,triggertype,errorcode,errormessage,clienttrackingid,workflowid,partitionid,ttlinseconds
&$filter=workflowid eq '<クラウド フロー ID>'
&$orderby=starttime desc
&$top=100
Accept: application/json
OData-Version: 4.0
Authorization: Bearer <アクセストークン>

PowerShell から取得する場合は、はじめに Dataverse Web API 用のアクセストークンを取得します。以下の例では Azure CLI を使用し、対象組織の URL をリソースとして指定しています。

1
2
3
az login
$webApiUrl = 'https://<組織 URL>/api/data/v9.2'
$accessToken = az account get-access-token --resource "https://<組織 URL>" --query accessToken --output tsv

取得したアクセストークンを使用して、次のように取得できます。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
$flowId = '<クラウド フロー ID>'

$select = 'name,starttime,endtime,duration,status,triggertype,errorcode,errormessage,clienttrackingid,workflowid,partitionid,ttlinseconds'
$filter = [uri]::EscapeDataString("workflowid eq '$flowId'")
$requestUri = "$webApiUrl/flowruns?`$select=$select&`$filter=$filter&`$orderby=starttime desc&`$top=100"

$headers = @{
Authorization = "Bearer $accessToken"
Accept = 'application/json'
'OData-Version' = '4.0'
'OData-MaxVersion' = '4.0'
}

$response = Invoke-RestMethod -Method Get -Uri $requestUri -Headers $headers
$response.value

オートメーション センターの概要 には、クラウド フローの実行履歴が Dataverse とオートメーション センターで利用できるようになるまでに最大 1 時間かかる場合があると記載されています。実行直後に取得する場合は、時間をおいて取得するか、再試行する処理を入れてください。

ヒント

Web API エンドポイントは、開発者リソース画面では https://<組織名>.api.crm.dynamics.com/api/data/v9.2 の形式で表示されます。弊社の検証環境では、api を含まない組織 URL (https://<組織名>.crm.dynamics.com/api/data/v9.2) でも同じ結果を取得できました。

まとめ

管理者がクラウド フローの実行履歴を確認するときは、目的に応じて次のように使い分けてください。

  • 個別の実行を確実に調査する場合は、Power Automate ポータルの実行履歴を使います。アクション名、入力、出力まで確認できます。
  • アクション単位のテレメトリを長期的に保持して監視・分析する場合は、Application Insights を使います。ただしマネージド環境が必要です。
  • 複数のクラウド フローの実行状況をまとめて監視したり、実行結果を一覧で取得・集計したりする場合は、FlowRun を使います。ダッシュボードで確認する場合はオートメーション センター、コードを書かずに済ませたい場合は Excel の OData フィード、自動処理に組み込む場合は Dataverse Web API や PowerShell が適しています。

FlowRun には、アクション名やアクションごとの入力と出力は保存されません。また、FlowRun には記録されない実行がある可能性があるため、監査など欠落が許されない用途では Power Automate ポータルの実行履歴と併用してください。

参考情報

サンプルコード免責事項

重要

===サンプルコード免責事項===

・本記事で紹介しているサンプルコードは説明のためのサンプルであり、お客様の要望を直接満たすためのご提供ではございません。

そのため、製品の実運用環境で使用されることを前提に提供されるものではありません。

・エラー処理などは含まれておりません。また、弊社にてその動作を保証するものではございません。

・サンプル コードおよびそれに関連するあらゆる情報は、”現状のまま” で

提供されるものであり、商品性や特定の目的への適合性に関する黙示の保証も含め、

明示、黙示を問わずいかなる保証も付されるものではありません。

ご使用の際には、十分にご検証いただき、ご使用くださいますようお願い申し上げます。

マイクロソフトは、お客様に対し、サンプル コードを使用および改変するための

非排他的かつ無償の権利ならびに本サンプル コードをオブジェクト コードの形式で

複製および頒布するための非排他的かつ無償の権利を許諾します。

但し、お客様は下記に同意するものとします。

(1) サンプル コードが組み込まれたお客様のソフトウェア製品のマーケティングのために

マイクロソフトの会社名、ロゴまたは商標を用いないこと

(2) サンプル コードが組み込まれたお客様のソフトウェア製品に有効な著作権表示をすること

(3) サンプル コードの使用または頒布から生じるあらゆる損害 (弁護士費用を含む) に

関する請求または訴訟について、マイクロソフトおよびマイクロソフトの取引業者に対し補償し、

損害を与えないこと

※本記事の執筆には生成 AI を使用しています。参考


免責事項
※本情報の内容 (添付文書、リンク先などを含む) は、作成日時点でのものであり、予告なく変更される場合があります。

※本情報の内容(添付文書、リンク先などを含む)は、作成日時点でのものであり、予告なく変更される場合があります。