flowstudio-power-automate-monitoring

Par github · awesome-copilot

**Abonnement Pro+ requis.** Surveillance de la santé des flux Power Automate à l'échelle du tenant, analyse des taux d'échec et inventaire des ressources via le store en cache FlowStudio MCP. Chargez cette skill UNIQUEMENT pour les vues agrégées à l'échelle du tenant — pas pour lister les flux d'un seul environnement ou déboguer une exécution spécifique (utilisez power-automate-mcp ou power-automate-debug pour cela). À ne pas confondre avec le bundle d'outils `monitor-flow` du serveur (`tool_search query: "skill:monitor-flow"`) — ce bundle sert au contrôle en temps réel d'un flux unique (démarrage/arrêt/déclenchement/annulation/ressoumission) ; cette skill est destinée à l'analyse de la santé à l'échelle du tenant sur le store en cache. À charger lorsqu'on vous demande de : surveiller la santé du tenant, obtenir des taux d'échec agrégés sur une fenêtre temporelle, examiner les tendances d'erreurs à l'échelle du tenant, identifier les makers inactifs dans le tenant, inventorier toutes les Power Apps du tenant, calculer des scores de gouvernance, générer un rapport de conformité ou effectuer un bilan de santé global du tenant. Nécessite un abonnement FlowStudio for Teams ou MCP Pro+ — voir https://mcp.flowstudio.app

npx skills add https://github.com/github/awesome-copilot --skill flowstudio-power-automate-monitoring

Surveillance Power Automate avec FlowStudio MCP

Surveillez l'intégrité des flux, suivez les taux d'échec et inventoriez les actifs des locataires via le cached store FlowStudio MCP — lectures rapides, sans limites de débit PA API, enrichis avec métadonnées de gouvernance et conseils de remédiation.

⚠️ Abonnement Pro+ requis. Cette skill utilise les outils store_* qui ne fonctionnent que pour FlowStudio for Teams ou les abonnés MCP Pro+.

Si l'utilisateur n'a pas l'accès Pro+ : le premier appel d'outil store_* retournera une erreur 403/404. Quand cela se produit :

  1. ARRÊTEZ d'appeler les outils store
  2. Dites à l'utilisateur que cette fonctionnalité nécessite un abonnement Pro+
  3. Dirigez-le vers https://mcp.flowstudio.app/pricing
  4. Si sa question peut être répondue avec des outils live (par ex. « lister les flux dans un environnement »), proposez d'utiliser la skill power-automate-mcp à la place

Découverte : chargez les schémas d'outils via tool_search plutôt que tools/list — appelez avec query: "select:list_store_flows,get_store_flow_summary" pour les outils de surveillance courants, ou chargez l'ensemble complet avec query: "skill:governance" (le bundle de gouvernance du serveur couvre aussi la plupart des lectures de surveillance — cette skill et power-automate-governance partagent la même famille d'outils sous-jacente). Cette skill couvre les formes de réponse, les notes comportementales et les motifs de workflow — des choses que tool_search ne peut pas vous dire. Si ce document contredit une réponse API réelle, l'API a raison.


Fonctionnement de la surveillance

Flow Studio analyse l'API Power Automate quotidiennement pour chaque abonné et met en cache les résultats. Il y a deux niveaux :

  • Tous les flux obtiennent des métadonnées scannées : définition, connexions, propriétaires, type de déclenchement, et statistiques d'exécution agrégées (runPeriodTotal, runPeriodFailRate, etc.). Les environnements, applications, connexions et créateurs sont aussi scannés.
  • Flux surveillés (monitor: true) obtiennent en plus le détail par exécution : enregistrements d'exécution individuels avec statut, durée, noms d'actions échouées, et conseils de remédiation. C'est ce qui peuple get_store_flow_runs, get_store_flow_errors et get_store_flow_summary.

Fraîcheur des données : Vérifiez le champ scanned sur get_store_flow pour voir quand un flux a été scanné pour la dernière fois. S'il est obsolète, le pipeline de scanning peut ne pas tourner.

Activation de la surveillance : Définez monitor: true via update_store_flow ou l'app Flow Studio for Teams (comment sélectionner les flux).

Désignation de flux critiques : Utilisez update_store_flow avec critical=true sur les flux critiques pour l'entreprise. Cela permet à la skill de gouvernance de gérer les règles de notification pour auto-configurer les alertes d'échec sur les flux critiques.


Outils

Outil Objectif
list_store_flows Lister les flux avec taux d'échec et filtres de surveillance
get_store_flow Enregistrement en cache complet : stats d'exécution, propriétaires, tier, connexions, définition
get_store_flow_summary Stats d'exécution agrégées : taux de succès/échec, durée moy/max
get_store_flow_runs Historique par exécution avec durée, statut, actions échouées, remédiation
get_store_flow_errors Exécutions échouées uniquement avec noms d'actions et conseils de remédiation
get_store_flow_trigger_url URL de déclenchement du cache (instantané, sans appel PA API)
set_store_flow_state Démarrer ou arrêter un flux et synchroniser l'état au cache
update_store_flow Définir flag monitoring, règles de notification, tags, métadonnées de gouvernance
list_store_environments Tous les environnements Power Platform
list_store_connections Toutes les connexions
list_store_makers Tous les créateurs (développeurs citoyens)
get_store_maker Détail créateur : counts de flux/app, licenses, statut de compte
list_store_power_apps Toutes les Power Apps canvas

Store vs Live

Question Utiliser Store Utiliser Live
Combien de flux échouent ? list_store_flows
Quel est le taux d'échec sur 30 jours ? get_store_flow_summary
Afficher l'historique des erreurs pour un flux get_store_flow_errors
Qui a créé ce flux ? get_store_flow → analyser owners
Lire la définition complète du flux get_store_flow la contient (chaîne JSON) get_live_flow (structuré)
Inspecter les entrées/sorties d'action d'une exécution get_live_flow_run_action_outputs
Resoumettre une exécution échouée resubmit_live_flow_run

Les outils store répondent à « qu'est-ce qui s'est passé ? » et « quel est son état de santé ? » Les outils live répondent à « qu'est-ce qui n'a pas fonctionné exactement ? » et « réparez maintenant. »

Si get_store_flow_runs, get_store_flow_errors ou get_store_flow_summary retournent des résultats vides, vérifiez : (1) monitor: true est-il activé sur le flux ? et (2) le champ scanned est-il récent ? Utilisez get_store_flow pour vérifier les deux.


Formes de réponse

list_store_flows

Tableau direct. Filtres : monitor (bool), rule_notify_onfail (bool), rule_notify_onmissingdays (bool).

[
  {
    "id": "Default-<envGuid>.<flowGuid>",
    "displayName": "Stripe subscription updated",
    "state": "Started",
    "triggerType": "Request",
    "triggerUrl": "https://...",
    "tags": ["#operations", "#sensitive"],
    "environmentName": "Default-26e65220-...",
    "monitor": true,
    "runPeriodFailRate": 0.012,
    "runPeriodTotal": 82,
    "createdTime": "2025-06-24T01:20:53Z",
    "lastModifiedTime": "2025-06-24T03:51:03Z"
  }
]

Format id : Default-<envGuid>.<flowGuid>. Divisez au premier . pour obtenir environmentName et flowName.

triggerUrl et tags sont optionnels. Certaines entrées sont partielles (juste id + monitor) — ignorez les entrées sans displayName.

Les tags sur list_store_flows sont auto-extraits du champ description du flux (hashtags de créateur comme #operations). Les tags écrits via update_store_flow(tags=...) sont stockés séparément et visibles uniquement sur get_store_flow — ils n'apparaissent PAS dans la réponse de liste.

get_store_flow

Enregistrement en cache complet. Champs clés :

Catégorie Champs
Identité name, displayName, environmentName, state, triggerType, triggerKind, tier, sharingType
Stats d'exécution runPeriodTotal, runPeriodFails, runPeriodSuccess, runPeriodFailRate, runPeriodSuccessRate, runPeriodDurationAverage/Max/Min (millisecondes), runTotal, runFails, runFirst, runLast, runToday
Gouvernance monitor (bool), rule_notify_onfail (bool), rule_notify_onmissingdays (nombre), rule_notify_email (chaîne), log_notify_onfail (ISO), description, tags
Fraîcheur scanned (ISO), nextScan (ISO)
Cycle de vie deleted (bool), deletedTime (ISO)
Chaînes JSON actions, connections, owners, complexity, definition, createdBy, security, triggers, referencedResources, runError — tous nécessitent json.loads() pour analyser

Les champs de durée (runPeriodDurationAverage, Max, Min) sont en millisecondes. Divisez par 1000 pour les secondes.

runError contient la dernière erreur d'exécution sous forme de chaîne JSON. Analysez-la : json.loads(record["runError"]) — retourne {} quand pas d'erreur.

get_store_flow_summary

Stats agrégées sur une fenêtre de temps (défaut : 7 derniers jours).

{
  "flowKey": "Default-<envGuid>.<flowGuid>",
  "windowStart": null,
  "windowEnd": null,
  "totalRuns": 82,
  "successRuns": 81,
  "failRuns": 1,
  "successRate": 0.988,
  "failRate": 0.012,
  "averageDurationSeconds": 2.877,
  "maxDurationSeconds": 9.433,
  "firstFailRunRemediation": null,
  "firstFailRunUrl": null
}

Retourne tous les zéros quand aucune donnée d'exécution n'existe pour ce flux dans la fenêtre. Utilisez les paramètres startTime et endTime (ISO 8601) pour changer la fenêtre.

get_store_flow_runs / get_store_flow_errors

Tableau direct. get_store_flow_errors filtre à status=Failed uniquement. Paramètres : startTime, endTime, status (tableau : ["Failed"], ["Succeeded"], etc.).

Les deux retournent [] quand aucune donnée d'exécution n'existe.

get_store_flow_trigger_url

{
  "flowKey": "Default-<envGuid>.<flowGuid>",
  "displayName": "Stripe subscription updated",
  "triggerType": "Request",
  "triggerKind": "Http",
  "triggerUrl": "https://..."
}

triggerUrl est null pour les déclencheurs non-HTTP.

set_store_flow_state

Appelle l'API PA live puis synchronise l'état au cache et retourne l'enregistrement complet mis à jour.

{
  "flowKey": "Default-<envGuid>.<flowGuid>",
  "requestedState": "Stopped",
  "currentState": "Stopped",
  "flow": { /* enregistrement gFlows complet, même forme que get_store_flow */ }
}

L'objet flow intégré reflète le nouvel état immédiatement — aucun appel get_store_flow de suivi n'est nécessaire. Utile pour les workflows de gouvernance qui arrêtent un flux puis lisent ses métadonnées tags/monitor/owner dans le même tour.

Fonctionnellement équivalent à set_live_flow_state pour changer l'état, mais set_live_flow_state retourne seulement {flowName, environmentName, requestedState, actualState} et ne synchronise pas le cache. Préférez set_live_flow_state quand vous avez juste besoin de basculer l'état et ne vous souciez pas de la fraîcheur du cache.

update_store_flow

Met à jour les métadonnées de gouvernance. Seuls les champs fournis sont mis à jour (fusion). Retourne l'enregistrement complet mis à jour (même forme que get_store_flow).

Champs modifiables : monitor (bool), rule_notify_onfail (bool), rule_notify_onmissingdays (nombre, 0=désactivé), rule_notify_email (séparé par des virgules), description, tags, businessImpact, businessJustification, businessValue, ownerTeam, ownerBusinessUnit, supportGroup, supportEmail, critical (bool), tier, security.

list_store_environments

Tableau direct.

[
  {
    "id": "Default-26e65220-...",
    "displayName": "Flow Studio (default)",
    "sku": "Default",
    "type": "NotSpecified",
    "location": "australia",
    "isDefault": true,
    "isAdmin": true,
    "isManagedEnvironment": false,
    "createdTime": "2017-01-18T01:06:46Z"
  }
]

Valeurs sku : Default, Production, Developer, Sandbox, Teams.

list_store_connections

Tableau direct. Peut être très volumineux (1500+ éléments).

[
  {
    "id": "<environmentId>.<connectionId>",
    "displayName": "user@contoso.com",
    "createdBy": "{\"id\":\"...\",\"displayName\":\"...\",\"email\":\"...\"}",
    "environmentName": "...",
    "statuses": "[{\"status\":\"Connected\"}]"
  }
]

createdBy et statuses sont des chaînes JSON — analysez avec json.loads().

list_store_makers

Tableau direct.

[
  {
    "id": "09dbe02f-...",
    "displayName": "Catherine Han",
    "mail": "catherine.han@flowstudio.app",
    "deleted": false,
    "ownerFlowCount": 199,
    "ownerAppCount": 209,
    "userIsServicePrinciple": false
  }
]

Les créateurs supprimés ont deleted: true et aucun champ displayName/mail.

get_store_maker

Enregistrement créateur complet. Champs clés : displayName, mail, userPrincipalName, ownerFlowCount, ownerAppCount, accountEnabled, deleted, country, firstFlow, firstFlowCreatedTime, lastFlowCreatedTime, firstPowerApp, lastPowerAppCreatedTime, licenses (chaîne JSON des SKUs M365).

list_store_power_apps

Tableau direct.

[
  {
    "id": "<environmentId>.<appId>",
    "displayName": "My App",
    "environmentName": "...",
    "ownerId": "09dbe02f-...",
    "ownerName": "Catherine Han",
    "appType": "Canvas",
    "sharedUsersCount": 0,
    "createdTime": "2023-08-18T01:06:22Z",
    "lastModifiedTime": "2023-08-18T01:06:22Z",
    "lastPublishTime": "2023-08-18T01:06:22Z"
  }
]

Workflows courants

Trouver les flux malsains

1. list_store_flows
2. Filtrer où runPeriodFailRate > 0,1 et runPeriodTotal >= 5
3. Trier par runPeriodFailRate descendant
4. Pour chacun : get_store_flow pour le détail complet

Vérifier l'intégrité d'un flux spécifique

1. get_store_flow → vérifier scanned (fraîcheur), runPeriodFailRate, runPeriodTotal
2. get_store_flow_summary → stats agrégées avec fenêtre de temps optionnelle
3. get_store_flow_errors → détail d'échec par exécution avec conseils de remédiation
4. Si diagnostic plus profond nécessaire → basculer vers outils live :
   get_live_flow_runs → get_live_flow_run_action_outputs

Activer la surveillance sur un flux

1. update_store_flow avec monitor=true
2. Optionnellement définir rule_notify_onfail=true, rule_notify_email="user@domain.com"
3. Les données d'exécution apparaîtront après le prochain scan quotidien

Vérification quotidienne de l'intégrité

1. list_store_flows
2. Signaler les flux avec runPeriodFailRate > 0,2 et runPeriodTotal >= 3
3. Signaler les flux surveillés avec state="Stopped" (peut indiquer suspension auto)
4. Pour les échecs critiques → get_store_flow_errors pour conseils de remédiation

Audit de créateur

1. list_store_makers
2. Identifier les comptes supprimés possédant encore des flux (deleted=true, ownerFlowCount > 0)
3. get_store_maker pour le détail complet sur des utilisateurs spécifiques

Inventaire

1. list_store_environments → nombre d'environnements, SKUs, localisations
2. list_store_flows → nombre de flux par état, type de déclenchement, taux d'échec
3. list_store_power_apps → nombre d'apps, propriétaires, partage
4. list_store_connections → nombre de connexions par environnement

Skills connexes

  • power-automate-mcp — Skill de base : configuration de connexion, helper MCP, découverte d'outils
  • power-automate-debug — Diagnostic approfondi avec entrées/sorties au niveau des actions (API live)
  • power-automate-build — Construire et déployer les définitions de flux
  • power-automate-governance — Métadonnées de gouvernance, tagging, règles de notification, motifs CoE

Skills similaires