Creare ordini di lavoro usando Power Automate

È possibile creare automaticamente ordini di lavoro in Dynamics 365 Customer Voice usando flussi di Power Automate. Ciò è utile quando gli ordini di lavoro devono essere creati in base a trigger esterni, ad esempio un avviso IoT, un invio di modulo, una richiesta di servizio da un altro sistema o una modifica a un record correlato.

I flussi di Power Automate usano il connettore Microsoft Dataverse per interagire con i record di Field Service. Per informazioni sulla creazione di ordini di lavoro tramite codice, vedere Creare ordini di lavoro usando l'API Web Dataverse.

Prerequisiti

  • Una licenza di Power Automate (inclusa nella maggior parte delle licenze di Dynamics 365).
  • Almeno uno dei seguenti ruoli di sicurezza di Field Service assegnati all'account di connessione del flusso. Per altre informazioni, vedere Configurare utenti e ruoli di sicurezza.
    • Field Service - Distributore
    • Field Service - Amministratore
  • Record esistenti per i campi di ricerca obbligatori:
    • Account di servizio (entità account)
    • Tipo di ordine di lavoro (msdyn_workordertype entità)
    • Listino prezzi (pricelevel entità)

Opzione 1: Creare un ordine di lavoro quando viene modificato un record Dataverse

Usare questo modello per creare un ordine di lavoro in risposta a una modifica in un'altra tabella di Dataverse, ad esempio quando lo stato di un asset del cliente cambia.

Configurare il trigger

  1. In Power Automate, seleziona Crea>Flusso cloud automatizzato.

  2. Cercare e selezionare Quando viene aggiunta, modifica o eliminata una riga (connettore Microsoft Dataverse).

  3. Quando richiesto, accedere al connettore Microsoft Dataverse usando le credenziali di Dynamics 365. Se hai già una connessione al tuo ambiente, selezionala dal menu a discesa. I campi di configurazione del trigger non vengono popolati finché non viene stabilita una connessione attiva.

  4. Configurare il trigger:

    Campo Valore
    Modificare il tipo Modificato
    Nome della tabella Risorse dei clienti
    Scope Organizzazione
  5. Facoltativamente, aggiungi una condizione Filtra righe per limitare l'esecuzione del flusso. Ad esempio: msdyn_operationalstatus eq 690970001 (Richiede il servizio).

Suggerimento

Per testare i passaggi di creazione dell'ordine di lavoro senza modificare un record Dataverse, creare una copia del flusso e sostituire il trigger Dataverse con Attivare manualmente un flusso. Aggiungi parametri di input (ad esempio input di testo per l'ID dell'account del servizio, ID tipo di ordine di lavoro e ID listino prezzi) in modo da poter superare i valori di test quando si esegue il flusso. Dopo aver verificato che l'ordine di lavoro sia stato creato correttamente, passa nuovamente al trigger Dataverse nel flusso di produzione.

Aggiungere l'azione Crea ordine di lavoro

  1. Selezionare + Nuovo passaggio e cercare Aggiungi una nuova riga (connettore Microsoft Dataverse).

  2. Selezionare la stessa connessione Dataverse usata per il trigger. Il campo Nome tabella viene visualizzato solo dopo aver selezionato una connessione.

  3. Impostare Nome tabella su Ordini di lavoro.

  4. Compilare i campi obbligatori:

    Campo Valore
    Numero ordine di lavoro Immettere l'espressione guid() come segnaposto. Il campo Numero ordine di lavoro è richiesto dall'interfaccia utente del connettore Dataverse, ma il plug-in numerazione automatica di Field Service assegna automaticamente il numero di ordine di lavoro sequenziale corretto al salvataggio del record. Per immettere un'espressione, selezionare il campo, passare alla scheda Espressione nel pannello del contenuto dinamico, digitare guid()e selezionare OK.
    Account di servizio Selezionare l'account usando il campo di ricerca oppure immettere l'espressione concat('/accounts(', 'service-account-guid', ')') nella scheda Espressione se è necessario usare un GUID hardcoded o dinamico. Vedere di seguito per informazioni su come trovarlo.
    Tipo di ordine di lavoro Selezionare il tipo di ordine di lavoro usando il campo di ricerca oppure immettere l'espressione concat('/msdyn_workordertypes(', 'work-order-type-guid', ')') nella scheda Espressione se è necessario usare un GUID hardcoded o dinamico. Vedere di seguito per informazioni su come trovarlo.
    Listino prezzi Selezionare il listino prezzi usando il campo di ricerca oppure immettere l'espressione concat('/pricelevels(', 'your-price-list-guid', ')') nella scheda Espressione se è necessario usare un GUID hardcoded o dinamico. Se si recupera il listino prezzi in modo dinamico usando un'azione List rows all'interno di un ciclo For each , usare concat('/pricelevels(', items('YourLoopName')?['pricelevelid'], ')') invece, sostituendo YourLoopName con il nome del ciclo. Vedere di seguito per informazioni su come trovarlo.
    Stato del sistema 690970000 (Non programmato)
    Imponibile false
    Istruzioni Utilizzare il contenuto dinamico dal trigger, ad esempio il nome dell'asset

    Account del servizio: digitare il nome dell'account direttamente nel campo Account del servizio per cercare e selezionarlo. Se il trigger è una modifica dell'asset cliente e l'asset è collegato a un account, è invece possibile selezionare Account (Asset cliente) nel pannello del contenuto dinamico. Se è necessario usare direttamente un GUID, passare all'area Servizio>Clienti>Account in Field Service, aprire l'account e copiare l'ID del record dall'URL del browser (il valore compreso tra %7B e %7D, o il GUID normale se l'URL non è codificato).

    Tipo di ordine di lavoro: digitare il nome del tipo di ordine di lavoro direttamente nel campo Tipo di ordine di lavoro per cercare e selezionarlo. Se è necessario utilizzare direttamente un GUID, passare all'area Impostazioni>Tipi di ordine di lavoro in Field Service, aprire il tipo di ordine di lavoro e copiare l'ID record dall'URL del browser.

    Listino prezzi: digitare il nome del listino prezzi direttamente nel campo Listino prezzi per cercare e selezionarlo. Se è necessario usare direttamente un GUID, passare a Impostazioni>prezzi generali> in Field Service, aprire il listino prezzi e copiare l'ID record dall'URL del browser.

    Annotazioni

    Il connettore Dataverse richiede che i campi di ricerca usino un percorso di riferimento dell'entità OData (ad esempio, /accounts(guid)) anziché un GUID normale. L’inserimento di un GUID non formattato provoca un’eccezione ODataUnrecognizedPathException in fase di esecuzione. Le concat espressioni precedenti costruiscono il formato di percorso corretto.

  5. Salvare e testare il flusso.

Opzione 2: Creare un ordine di lavoro da una richiesta HTTP

Usare questo modello per creare un ordine di lavoro da un sistema esterno, ad esempio un portale per i clienti, un sistema di ticket o una piattaforma IoT.

Configurare il trigger

  1. In Power Automate, seleziona Crea>Flusso cloud istantaneo.

  2. Assegnare un nome al flusso e selezionare Quando viene ricevuta una richiesta HTTP come trigger.

  3. Fare clic su Crea.

  4. Nel campo Schema JSON del corpo della richiesta incollare lo schema seguente:

    {
      "type": "object",
      "properties": {
        "serviceAccountId": { "type": "string" },
        "workOrderTypeId": { "type": "string" },
        "priceListId": { "type": "string" },
        "instructions": { "type": "string" }
      },
      "required": ["serviceAccountId", "workOrderTypeId", "priceListId"]
    }
    
  5. Per Chi può attivare il flusso, selezionare una delle opzioni seguenti:

    Opzione Quando utilizzare
    Solo gli utenti del mio tenant Consigliato per la produzione. I chiamanti devono eseguire l'autenticazione con Microsoft Entra ID e presentare un token di connessione OAuth valido. Usare questa opzione per sistemi interni o entità servizio attendibili.
    Chiunque L'URL stesso funge da credenziale. Non è necessaria alcuna intestazione di autenticazione aggiuntiva. Usare solo quando il sistema chiamante non può ottenere un token Entra ID ed è possibile assicurarsi che l'URL venga archiviato in modo sicuro.

    Altre informazioni sulla protezione dei flussi attivati da HTTP in Aggiungere l'autenticazione OAuth per i trigger di richiesta HTTP.

  6. Il campo URL HTTP è di sola lettura, non compilarlo. Power Automate lo popola automaticamente quando si salva il flusso per la prima volta.

  7. Salvare il flusso. Il campo URL HTTP è ora popolato con l'URL dell'endpoint. Copiare questo URL e specificarlo a chiunque configuri il sistema esterno, ad esempio uno sviluppatore o un amministratore di sistema. Il sistema esterno attiva il flusso inviando una richiesta HTTP POST a questo URL con un corpo JSON che corrisponde allo schema definito. Per esempio:

    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"
    }
    

    Ogni volta che il sistema esterno invia questa richiesta, Power Automate esegue il flusso e crea un ordine di lavoro in Field Service.

Aggiungere l'azione Crea ordine di lavoro

  1. Selezionare + Nuovo passaggio e cercare Aggiungi una nuova riga (connettore Microsoft Dataverse).

  2. Accedere al connettore Microsoft Dataverse o selezionare una connessione esistente. Il campo Nome tabella viene visualizzato solo dopo aver selezionato una connessione.

  3. Impostare Nome tabella su Ordini di lavoro.

  4. Mappare i campi del corpo della richiesta HTTP ai campi dell'ordine di lavoro:

    Campo di Ordine di Lavoro Valore
    Numero ordine di lavoro Immettere l'espressione guid() come segnaposto. Il campo Numero ordine di lavoro è richiesto dall'interfaccia utente del connettore Dataverse, ma il plug-in numerazione automatica di Field Service assegna automaticamente il numero di ordine di lavoro sequenziale corretto al salvataggio del record. Per immettere un'espressione, selezionare il campo, passare alla scheda Espressione nel pannello del contenuto dinamico, digitare guid()e selezionare OK.
    Account di servizio concat('/accounts(', triggerBody()?['serviceAccountId'], ')')
    Tipo di ordine di lavoro concat('/msdyn_workordertypes(', triggerBody()?['workOrderTypeId'], ')')
    Listino prezzi concat('/pricelevels(', triggerBody()?['priceListId'], ')')
    Stato del sistema 690970000 (Non programmato)
    Istruzioni @{triggerBody()?['instructions']}
  5. Facoltativamente, aggiungere un'azione Risposta per restituire il nuovo ID ordine di lavoro al sistema chiamante:

    1. Selezionare + Nuovo passaggio e cercare Risposta (dal connettore di richiesta ).
    2. Impostare Codice di stato su 200.
    3. Nel campo Corpo selezionare l'icona del contenuto dinamico e scegliere msdyn_workorderid dal passaggio Aggiungi una nuova riga . Si tratta dell'ID univoco dell'ordine di lavoro appena creato.

    Senza questo passaggio, il sistema chiamante non riceve alcuna risposta e la richiesta HTTP scade dopo l'attesa. Se si aggiunge questo passaggio, il sistema chiamante riceve una 200 risposta con l'ID dell'ordine di lavoro non appena il flusso viene completato.

Valori delle opzioni di stato del sistema

Usare questi valori interi quando si imposta Lo stato del sistema in un flusso o chiamata API.

Etichetta Valore
Pianificazione annullata 690970000
Pianificato 690970001
In corso 690970002
Finito 690970003
Registrato 690970004
Operazione annullata 690970005

Considerazioni

Proprietà dell'account di connessione Flow

Gli ordini di lavoro creati da un flusso sono di proprietà dell'account di connessione usato nel connettore Dataverse. Assicurarsi che questo account abbia il ruolo di sicurezza corretto e che gli ordini di lavoro creati dal flusso vengano visualizzati nelle visualizzazioni e nelle code previste.

Record figlio

L'azione Aggiungi una nuova riga crea solo l'intestazione dell'ordine di lavoro. Per aggiungere prodotti, servizi o attività di servizio per gli ordini di lavoro, aggiungere passaggi di Aggiungi una nuova riga separati per ogni tabella figlio (msdyn_workorderproduct, msdyn_workorderservice, msdyn_workorderservicetask) e imposta il campo di ricerca Ordine di lavoro sull'ID restituito dal passaggio di creazione.

Limiti di frequenza API

I flussi di Power Automate sono soggetti ai limiti dell'API di Dataverse. Per scenari con elevati volumi di dati, è consigliabile utilizzare l'endpoint batch dell'API Web Dataverse o distribuire le esecuzioni del flusso utilizzando un trigger pianificato con elaborazione batch.

Evitare ordini di lavoro duplicati

Se un flusso viene eseguito frequentemente nello stesso trigger, aggiungere una condizione per verificare se esiste già un ordine di lavoro prima di crearne uno nuovo. Usare un'azione Elenca righe filtrate in base all'ID del record di origine per verificare la presenza di ordini di lavoro esistenti.

Gestione errori

Per i flussi di produzione, racchiudi il passaggio Aggiungi una nuova riga in un'azione Ambito e aggiungi un ramo parallelo configurato per eseguire non riuscita. Usare questo ramo per registrare l'errore o inviare una notifica. Per i flussi attivati da HTTP, aggiungere sempre un'azione Di risposta in modo che il sistema chiamante riceva un codice di stato di esito positivo o negativo anziché il timeout.

Passaggi successivi