Créer des commandes de travail à l’aide de Power Automate

Vous pouvez créer automatiquement des commandes de travail dans Dynamics 365 Field Service à l’aide de flux de Power Automate. Cela est utile lorsque les commandes de travail doivent être créées en fonction de déclencheurs externes, tels qu’une alerte IoT, une soumission de formulaire, une demande de service d’un autre système ou une modification d’un enregistrement associé.

Power Automate flux utilisent le connecteur Microsoft Dataverse pour interagir avec les enregistrements Field Service. Pour plus d’informations sur la création de commandes de travail via du code, accédez à Créer des commandes de travail à l’aide de l’API Web Dataverse.

Prerequisites

  • Une licence Power Automate (incluse avec la plupart des licences Dynamics 365).
  • Au moins l’un des rôles de sécurité Field Service suivants attribués au compte de connexion du flux. En savoir plus sur la configuration des utilisateurs et des rôles de sécurité.
    • Field Service - Répartiteur
    • Field Service - Administrateur
  • Enregistrements existants pour les champs de recherche requis :
    • Compte de service (account entité)
    • Type d’ordre de travail (msdyn_workordertype entité)
    • Liste de prix (pricelevel entité)

Option 1 : Créer un ordre de travail lorsqu’un enregistrement Dataverse change

Utilisez ce modèle pour créer un ordre de travail en réponse à une modification dans une autre table Dataverse, par exemple quand l’état d’une ressource client change.

Configurer le déclencheur

  1. Dans Power Automate, sélectionnez Créer>Flux de cloud automatisé.

  2. Recherchez et sélectionnez Quand une ligne est ajoutée, modifiée ou supprimée (connecteur Microsoft Dataverse).

  3. Lorsque vous y êtes invité, connectez-vous au connecteur Microsoft Dataverse à l’aide de vos informations d’identification Dynamics 365. Si vous disposez déjà d’une connexion à votre environnement, sélectionnez-le dans la liste déroulante. Les champs de configuration du déclencheur ne remplissent pas tant qu’une connexion active n’est pas établie.

  4. Configurez le déclencheur :

    Champ Value
    Type de modification Modifié
    Nom de la table Actifs du client
    Étendue Organisation
  5. Si vous le souhaitez, ajoutez une condition filtrer les lignes pour limiter le moment où le flux s’exécute. Par exemple : msdyn_operationalstatus eq 690970001 (Nécessite un service).

Conseil

Pour tester les étapes de création de l’ordre de travail sans modifier un enregistrement Dataverse, créez une copie de votre flux et remplacez le déclencheur Dataverse par déclencher manuellement un flux. Ajoutez des paramètres d’entrée (tels que des entrées de texte pour l’ID de compte de service, l’ID de type de commande de travail et l’ID de liste de prix) afin de pouvoir passer des valeurs de test lorsque vous exécutez le flux. Après avoir vérifié que l’ordre de travail est créé correctement, revenez au déclencheur Dataverse dans votre flux de production.

Ajouter l’action Créer un ordre de travail

  1. Sélectionnez + Nouvelle étape et recherchez Add une nouvelle ligne (connecteur Microsoft Dataverse).

  2. Sélectionnez la même connexion Dataverse que celle que vous avez utilisée pour le déclencheur. Le champ Nom de la table s’affiche uniquement une fois qu’une connexion est sélectionnée.

  3. Réglez le nom de la table sur Ordres de travail.

  4. Renseignez les champs obligatoires :

    Champ Value
    Numéro de bon de travail Entrez l’expression guid() en tant qu’espace réservé. Le champ Numéro de commande de travail est utilisé par l’interface utilisateur du connecteur Dataverse, mais le plug-in autonuméro de Field Service attribue automatiquement le numéro de commande de travail séquentiel correct lorsque l’enregistrement est sauvegardé. Pour entrer une expression, sélectionnez le champ, basculez vers l’onglet Expression dans le volet de contenu dynamique, tapez guid(), puis sélectionnez OK.
    Compte de service Sélectionnez le compte à l’aide du champ de recherche ou entrez l’expression concat('/accounts(', 'service-account-guid', ')') sous l’onglet Expression si vous devez utiliser un GUID codé en dur ou dynamique. Consultez ci-dessous pour savoir comment le trouver.
    Type d’ordre de travail Sélectionnez le type d’ordre de travail à l’aide du champ de recherche ou entrez l’expression concat('/msdyn_workordertypes(', 'work-order-type-guid', ')') sous l’onglet Expression si vous devez utiliser un GUID codé en dur ou dynamique. Consultez ci-dessous pour savoir comment le trouver.
    Liste de prix Sélectionnez la liste des prix à l’aide du champ de recherche ou entrez l’expression concat('/pricelevels(', 'your-price-list-guid', ')') sous l’onglet Expression si vous devez utiliser un GUID dynamique ou codé en dur. Si vous récupérez la liste de prix de manière dynamique à l’aide d’une action De lignes de liste dans une boucle For each , utilisez concat('/pricelevels(', items('YourLoopName')?['pricelevelid'], ')') plutôt, en remplaçant YourLoopName par le nom de votre boucle. Consultez ci-dessous pour savoir comment le trouver.
    État du système 690970000 (Non planifié)
    Imposable false
    Instructions Utiliser du contenu dynamique à partir du déclencheur, par exemple le nom de la ressource

    Compte de service : tapez le nom du compte directement dans le champ Compte de service pour rechercher et le sélectionner. Si le déclencheur est un changement de ressource client et que la ressource est liée à un compte, vous pouvez plutôt sélectionner Compte (ressources client) dans le volet de contenu dynamique. Si vous devez utiliser un GUID directement, accédez directement auxcomptes> de zone >de service dans Field Service, ouvrez le compte et copiez l’ID d’enregistrement à partir de l’URL du navigateur (la valeur entre %7B et %7D, ou le GUID brut si l’URL n’est pas codée).

    Type d’ordre de travail : tapez le nom du type d’ordre de travail directement dans le champ Type d’ordre de travail pour rechercher et sélectionner celui-ci. Si vous devez utiliser un GUID directement, accédez à la zone Paramètres, >Ordre de travail>Types d'ordre de travail dans Field Service, ouvrez le type d'ordre de travail et copiez l'ID d'enregistrement depuis l'URL du navigateur.

    Liste de prix : tapez le nom de la liste de prix directement dans le champ Liste de prix pour rechercher et sélectionner celui-ci. Si vous devez utiliser un GUID directement, accédez à Paramètres>généraux>des listes de prix dans Field Service, ouvrez la liste des prix et copiez l’ID d’enregistrement à partir de l’URL du navigateur.

    Note

    Le connecteur Dataverse nécessite des champs de recherche pour utiliser un chemin de référence d’entité OData (par exemple, /accounts(guid)) plutôt qu’un GUID brut. L’entrée d’un GUID nu provoque une ODataUnrecognizedPathException opération au moment de l’exécution. Les concat expressions ci-dessus construisent le format de chemin d’accès correct.

  5. Enregistrez le flux et testez-le.

Option 2 : Créer une commande de travail à partir d’une requête HTTP

Utilisez ce modèle pour créer une commande de travail à partir d’un système externe, tel qu’un portail client, un système de tickets ou une plateforme IoT.

Configurer le déclencheur

  1. Dans Power Automate, sélectionnez Créer>flux cloud instant.

  2. Nommez le flux et sélectionnez Quand une requête HTTP est reçue en tant que déclencheur.

  3. Sélectionnez Créer.

  4. Dans le champ Schéma JSON du corps de la requête , collez le schéma suivant :

    {
      "type": "object",
      "properties": {
        "serviceAccountId": { "type": "string" },
        "workOrderTypeId": { "type": "string" },
        "priceListId": { "type": "string" },
        "instructions": { "type": "string" }
      },
      "required": ["serviceAccountId", "workOrderTypeId", "priceListId"]
    }
    
  5. Pour qui peut déclencher le flux, sélectionnez l’une des options suivantes :

    Option Quand utiliser
    Seuls les utilisateurs de mon locataire Recommandé pour la production. Les appelants doivent s’authentifier avec Microsoft Entra ID et présenter un jeton de porteur OAuth valide. Utilisez cela pour des systèmes internes ou des principaux de service approuvés.
    N'importe qui L’URL elle-même agit en tant qu’informations d’identification. Aucun en-tête d’authentification supplémentaire n’est requis. Utilisez uniquement lorsque le système appelant ne peut pas obtenir un jeton Entra ID et que vous pouvez vous assurer que l’URL est stockée en toute sécurité.

    En savoir plus sur la sécurisation des flux déclenchés par HTTP dans l’ajout d’une authentification OAuth pour les déclencheurs de requête HTTP.

  6. Le champ URL HTTP est en lecture seule . Ne le renseignez pas. Power Automate l’remplit automatiquement lorsque vous enregistrez le flux pour la première fois.

  7. Enregistrez le flux. Le champ URL HTTP est maintenant rempli avec l’URL du point de terminaison. Copiez cette URL et fournissez-la à quiconque configure le système externe (par exemple, un développeur ou un administrateur système). Le système externe déclenche le flux en envoyant une requête HTTP POST à cette URL avec un corps JSON qui correspond au schéma que vous avez défini. Par exemple:

    POST <paste the HTTP URL here>
    Content-Type: application/json
    
    {
      "serviceAccountId": "<account record GUID>",
      "workOrderTypeId": "<work order type record GUID>",
      "priceListId": "<price list record GUID>",
      "instructions": "Reported issue: equipment not functioning"
    }
    

    Chaque fois que le système externe envoie cette requête, Power Automate exécute le flux et crée un ordre de travail dans Field Service.

Ajouter l’action Créer un ordre de travail

  1. Sélectionnez + Nouvelle étape et recherchez Add une nouvelle ligne (connecteur Microsoft Dataverse).

  2. Connectez-vous au connecteur Microsoft Dataverse ou sélectionnez une connexion existante. Le champ Nom de la table s’affiche uniquement une fois qu’une connexion est sélectionnée.

  3. Réglez le nom de la table sur Ordres de travail.

  4. Mappez les champs du corps de la requête HTTP aux champs d’ordre de travail :

    Champ Ordre de travail Value
    Numéro de bon de travail Entrez l’expression guid() en tant qu’espace réservé. Le champ Numéro de commande de travail est utilisé par l’interface utilisateur du connecteur Dataverse, mais le plug-in autonuméro de Field Service attribue automatiquement le numéro de commande de travail séquentiel correct lorsque l’enregistrement est sauvegardé. Pour entrer une expression, sélectionnez le champ, basculez vers l’onglet Expression dans le volet de contenu dynamique, tapez guid(), puis sélectionnez OK.
    Compte de service concat('/accounts(', triggerBody()?['serviceAccountId'], ')')
    Type d’ordre de travail concat('/msdyn_workordertypes(', triggerBody()?['workOrderTypeId'], ')')
    Liste de prix concat('/pricelevels(', triggerBody()?['priceListId'], ')')
    État du système 690970000 (Non planifié)
    Instructions @{triggerBody()?['instructions']}
  5. Si vous le souhaitez, ajoutez une action Réponse pour renvoyer le nouvel ID d’ordre de travail au système appelant :

    1. Sélectionnez + Nouvelle étape et recherchez La réponse (à partir du connecteur De requête ).
    2. Définissez le code d’état sur 200.
    3. Dans le champ Corps , sélectionnez l’icône de contenu dynamique et choisissez msdyn_workorderid à partir de l’étape Ajouter une nouvelle ligne . Il s’agit de l’ID unique de l’ordre de travail qui vient d’être créé.

    Sans cette étape, le système appelant ne reçoit aucune réponse et la requête HTTP expire après l’attente. Si vous ajoutez cette étape, le système appelant reçoit une réponse 200 avec l’ID de l'ordre de travail dès que le flux se termine.

Valeurs définies par l’option État du système

Utilisez ces valeurs entières lors de la définition de l’état du système dans un flux ou un appel d’API.

Étiquette Value
Non planifié 690970000
Planifié 690970001
En cours 690970002
Terminé 690970003
Validé(e) 690970004
Annulé 690970005

Observations

Propriété du compte de connexion de flux de données

Les commandes de travail créées par un flux appartiennent au compte de connexion utilisé dans le connecteur Dataverse. Vérifiez que ce compte a le rôle de sécurité approprié et que les ordres de travail créés par le flux apparaissent dans les vues et files d’attente attendues.

Enregistrements enfants

L’action Ajouter une nouvelle ligne crée uniquement l’en-tête d’ordre de travail. Pour ajouter des produits de commande de travail, des services ou des tâches de service, ajoutez des étapes distinctes Ajouter une nouvelle ligne pour chaque table enfant (msdyn_workorderproduct, msdyn_workorderservice, msdyn_workorderservicetask) et définissez le champ de recherche Ordre de travail sur l’ID retourné par l’étape de création.

Limites de débit d’API

Power Automate flux sont soumis aux limites de l’API Dataverse. Pour les scénarios à volume élevé, envisagez d’utiliser le point de terminaison de lot de l’API Web Dataverse ou de répartir les exécutions de flux à l’aide d’un déclencheur planifié avec traitement par lots.

Éviter les commandes de travail en double

Si un flux s’exécute fréquemment sur le même déclencheur, ajoutez une condition pour vérifier si un ordre de travail existe déjà avant de créer un nouveau. Utilisez une action Liste de lignes filtrée par l’ID d’enregistrement source pour rechercher les commandes de travail existantes.

Gestion des erreurs

Pour les flux de production, encapsulez l’étape Ajouter une nouvelle ligne dans une action Scope et ajoutez une branche parallèle configurée pour s’exécuter en cas d’échec. Utilisez cette branche pour consigner l’erreur ou envoyer une notification. Pour les flux déclenchés par HTTP, ajoutez toujours une action Réponse afin que le système appelant reçoive un code d’état de réussite ou d’échec plutôt que d’expirer.

Étapes suivantes