Creación de pedidos de trabajo mediante Power Automate

Puede crear automáticamente pedidos de trabajo en Dynamics 365 Field Service mediante flujos de Power Automate. Esto resulta útil cuando es necesario crear pedidos de trabajo basados en desencadenadores externos, como una alerta de IoT, un envío de formulario, una solicitud de servicio de otro sistema o un cambio en un registro relacionado.

Los flujos de Power Automate utilizan el conector Microsoft Dataverse para interactuar con los registros de Field Service. Para obtener información sobre cómo crear pedidos de trabajo a través del código, vaya a Creación de pedidos de trabajo mediante la API web de Dataverse.

Prerrequisitos

  • Una licencia de Power Automate (incluida con la mayoría de las licencias de Dynamics 365).
  • Al menos uno de los siguientes roles de seguridad de Field Service asignados a la cuenta de conexión del flujo. Obtenga más información en Configuración de usuarios y roles de seguridad.
    • Field Service: distribuidor
    • Field Service: administrador
  • Registros existentes para los campos de búsqueda necesarios:
    • Cuenta de servicio (account entidad)
    • Tipo de pedido de trabajo (msdyn_workordertype entidad)
    • Lista de precios (pricelevel entidad)

Opción 1: Crear un pedido de trabajo cuando cambia un registro de Dataverse

Use este patrón para crear un pedido de trabajo en respuesta a un cambio en otra tabla de Dataverse, como cuando cambia el estado de un recurso de cliente.

Configuración del desencadenador

  1. En Power Automate, seleccione Crear>flujo de nube automatizado.

  2. Busque y seleccione Cuando se agrega, modifica o elimina una fila (conector de Microsoft Dataverse).

  3. Cuando se le solicite, inicie sesión en el conector Microsoft Dataverse con las credenciales de Dynamics 365. Si ya tiene una conexión a su entorno, selecciónela en la lista desplegable. Los campos de configuración del desencadenador no se rellenan hasta que se establece una conexión activa.

  4. Configure el desencadenador:

    Campo Importancia
    Tipo de cambio Modificada
    Nombre de la tabla Activos del cliente
    Ámbito Organización
  5. Opcionalmente, agregue una condición Filtrar filas para limitar cuándo se ejecuta el flujo. Por ejemplo: msdyn_operationalstatus eq 690970001 (Necesita servicio).

Sugerencia

Para probar los pasos de creación del orden de trabajo sin cambiar un registro de Dataverse, cree una copia del flujo y reemplace el desencadenador de Dataverse por Desencadenar manualmente un flujo. Agregue parámetros de entrada (como entradas de texto para el id. de cuenta de servicio, el id. de tipo de pedido de trabajo y el id. de lista de precios) para poder pasar valores de prueba al ejecutar el flujo. Después de comprobar que la orden de trabajo se ha creado correctamente, vuelva al desencadenador de Dataverse en el flujo de producción.

Agregar la acción Crear orden de trabajo

  1. Seleccione + Nuevo paso y busque Agregar una nueva fila (conector de Microsoft Dataverse).

  2. Seleccione la misma conexión de Dataverse que usó para el desencadenador. El campo Nombre de tabla solo aparece después de seleccionar una conexión.

  3. Establezca Nombre de tabla en Pedidos de trabajo.

  4. Rellene los campos obligatorios:

    Campo Importancia
    Número de orden de trabajo Escriba la expresión guid() como marcador de posición. La interfaz de usuario del conector de Dataverse requiere el campo Número de orden de trabajo, pero el complemento de número automático de Field Service asigna automáticamente el número de orden de trabajo secuencial correcto cuando se guarda el registro. Para escribir una expresión, seleccione el campo , cambie a la pestaña Expresión del panel de contenido dinámico, escriba guid()y seleccione Aceptar.
    Cuenta de servicio Seleccione la cuenta mediante el campo de búsqueda o escriba la expresión concat('/accounts(', 'service-account-guid', ')') en la pestaña Expresión si necesita usar un GUID dinámico o codificado de forma codificada. Consulte a continuación para obtener información sobre cómo encontrar esto.
    Tipo de orden de trabajo Seleccione el tipo de orden de trabajo mediante el campo de búsqueda o escriba la expresión concat('/msdyn_workordertypes(', 'work-order-type-guid', ')') en la pestaña Expresión si necesita usar un GUID dinámico o codificado de forma codificada. Consulte a continuación para obtener información sobre cómo encontrar esto.
    Lista de precios Seleccione la lista de precios mediante el campo de búsqueda o escriba la expresión concat('/pricelevels(', 'your-price-list-guid', ')') en la pestaña Expresión si necesita usar un GUID dinámico o codificado de forma codificada. Si recupera la lista de precios dinámicamente mediante una acción Enumerar filas dentro de un bucle Por cada, use concat('/pricelevels(', items('YourLoopName')?['pricelevelid'], ')') en su lugar, reemplazando YourLoopName por el nombre del bucle. Consulte a continuación para obtener información sobre cómo encontrar esto.
    Estado del sistema 690970000 (Sin programar)
    Imponible false
    Instrucciones Utilice contenido dinámico del desencadenador, por ejemplo, el nombre del recurso

    Cuenta de servicio: escriba el nombre de cuenta directamente en el campo Cuenta de servicio para buscar y seleccionarlo. Si el desencadenador es un cambio de recurso de cliente y el recurso está vinculado a una cuenta, en su lugar puede seleccionar Cuenta (Recursos de cliente) en el panel de contenido dinámico. Si necesita usar un GUID directamente, vaya al área >servicio> en Field Service, abra la cuenta y copie el identificador de registro desde la dirección URL del explorador (el valor entre %7B y %7Do el GUID sin formato si la dirección URL no está codificada).

    Tipo de pedido de trabajo: escriba el nombre del tipo de pedido de trabajo directamente en el campo Tipo de pedido de trabajo para buscarlo y selecciónelo. Si necesita usar un GUID directamente, vaya al área >Tipos> de pedido de trabajo en Field Service, abra el tipo de pedido de trabajo y copie el identificador de registro desde la dirección URL del explorador.

    Lista de precios: escriba el nombre de la lista de precios directamente en el campo Lista de precios para buscar y seleccionarlo. Si necesita usar un GUID directamente, vaya a Configuración>de listas de precios> en Field Service, abra la lista de precios y copie el identificador de registro desde la dirección URL del explorador.

    Nota:

    El conector de Dataverse requiere que los campos de búsqueda de datos utilicen una ruta de referencia de entidad de OData (por ejemplo, /accounts(guid)) en lugar de un GUID directo. Al introducir un GUID simple, se produce una ODataUnrecognizedPathException en tiempo de ejecución. Las concat expresiones anteriores construyen el formato de ruta correcto.

  5. Guarde y pruebe el flujo.

Opción 2: Crear un pedido de trabajo a partir de una solicitud HTTP

Use este patrón para crear un pedido de trabajo desde un sistema externo, como un portal de clientes, un sistema de vales o una plataforma de IoT.

Configuración del desencadenador

  1. En Power Automate, seleccione Create>Instant cloud flow.

  2. Asigne un nombre al flujo y seleccione Cuando se recibe una solicitud HTTP como desencadenador.

  3. Selecciona Crear.

  4. En el campo Esquema JSON del cuerpo de la solicitud, pegue el esquema siguiente:

    {
      "type": "object",
      "properties": {
        "serviceAccountId": { "type": "string" },
        "workOrderTypeId": { "type": "string" },
        "priceListId": { "type": "string" },
        "instructions": { "type": "string" }
      },
      "required": ["serviceAccountId", "workOrderTypeId", "priceListId"]
    }
    
  5. Para Quién puede desencadenar el flujo, seleccione una de las siguientes opciones:

    Opción Cuándo se deben usar
    Solo los usuarios de mi entidad Recomendado para uso en producción. Los autores de llamadas deben autenticarse con Microsoft Entra ID y presentar un token de portador de OAuth válido. Úselo para sistemas internos o entidades de servicio de confianza.
    Cualquiera La propia dirección URL actúa como la credencial; no se requiere ningún encabezado de autenticación adicional. Use solo cuando el sistema de llamada no pueda obtener un token de Entra ID y puede asegurarse de que la dirección URL se almacena de forma segura.

    Obtenga más información sobre la protección de flujos desencadenados por HTTP en Adición de autenticación de OAuth para desencadenadores de solicitudes HTTP.

  6. El campo DIRECCIÓN URL HTTP es de solo lectura; no lo rellene. Power Automate lo rellena automáticamente cuando guardas el flujo por primera vez.

  7. Guarde el flujo. El campo DIRECCIÓN URL HTTP ahora se rellena con la dirección URL del punto de conexión. Copie esta dirección URL y proporciónela a quien configure el sistema externo (por ejemplo, un desarrollador o administrador del sistema). El sistema externo desencadena el flujo mediante el envío de una solicitud HTTP POST a esta dirección URL con un cuerpo JSON que coincida con el esquema definido. Por ejemplo:

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

    Cada vez que el sistema externo envía esta solicitud, Power Automate ejecuta el flujo y crea un orden de trabajo en Field Service.

Agregar la acción Crear orden de trabajo

  1. Seleccione + Nuevo paso y busque Agregar una nueva fila (conector de Microsoft Dataverse).

  2. Inicie sesión en el conector de Microsoft Dataverse o seleccione una conexión existente. El campo Nombre de tabla solo aparece después de seleccionar una conexión.

  3. Establezca Nombre de tabla en Pedidos de trabajo.

  4. Mapee los campos del cuerpo de la petición HTTP a los campos de la orden de trabajo.

    Campo de la orden de trabajo Importancia
    Número de orden de trabajo Escriba la expresión guid() como marcador de posición. La interfaz de usuario del conector de Dataverse requiere el campo Número de orden de trabajo, pero el complemento de número automático de Field Service asigna automáticamente el número de orden de trabajo secuencial correcto cuando se guarda el registro. Para escribir una expresión, seleccione el campo , cambie a la pestaña Expresión del panel de contenido dinámico, escriba guid()y seleccione Aceptar.
    Cuenta de servicio concat('/accounts(', triggerBody()?['serviceAccountId'], ')')
    Tipo de orden de trabajo concat('/msdyn_workordertypes(', triggerBody()?['workOrderTypeId'], ')')
    Lista de precios concat('/pricelevels(', triggerBody()?['priceListId'], ')')
    Estado del sistema 690970000 (Sin programar)
    Instrucciones @{triggerBody()?['instructions']}
  5. Opcionalmente, agregue una acción Respuesta para devolver el nuevo identificador de pedido de trabajo al sistema que realiza la llamada:

    1. Seleccione + Nuevo paso y busque Respuesta (en el conector de solicitud ).
    2. Establezca Código de estado en 200.
    3. En el campo Cuerpo , seleccione el icono de contenido dinámico y elija msdyn_workorderid en el paso Agregar una nueva fila . Este es el identificador único del orden de trabajo que se acaba de crear.

    Sin este paso, el sistema de llamada no recibe ninguna respuesta y la solicitud HTTP agota el tiempo de espera después de esperar. Si agrega este paso, el sistema de llamada recibe una 200 respuesta con el identificador de pedido de trabajo tan pronto como se complete el flujo.

Valores establecidos de opciones de estado del sistema

Use estos valores enteros al establecer el estado del sistema en un flujo o una llamada API.

Etiqueta Importancia
Sin programar 690970000
Programado 690970001
En curso 690970002
Completado 690970003
Registrada 690970004
Cancelado 690970005

Consideraciones

Propiedad de la cuenta de conexión de Flow

Las órdenes de trabajo creadas por un flujo pertenecen a la cuenta de conexión utilizada en el conector de Dataverse. Asegúrese de que esta cuenta tiene el rol de seguridad correcto y que los pedidos de trabajo creados por el flujo aparecen en las vistas y colas esperadas.

Registros secundarios

La acción Agregar una nueva fila crea solo el encabezado de orden de trabajo. Para agregar productos, servicios o tareas de servicio de órdenes de trabajo, agregue pasos de Agregar una fila nueva para cada tabla secundaria (msdyn_workorderproduct, msdyn_workorderservice, msdyn_workorderservicetask) y establezca el campo de búsqueda Orden de trabajo en el id. devuelto por el paso de creación.

Límites de velocidad de API

Los flujos de Power Automate están sujetos a los límites de la API de Dataverse. Para escenarios de gran volumen, considere la posibilidad de usar el punto de conexión por lotes de la API web de Dataverse o distribuir las ejecuciones de flujo mediante un desencadenador programado con procesamiento por lotes.

Evitar pedidos de trabajo duplicados

Si un flujo se ejecuta con frecuencia en el mismo desencadenador, agregue una condición para comprobar si ya existe un pedido de trabajo antes de crear uno nuevo. Utilice una acción Enumerar filas filtrada por el ID del registro de origen para comprobar los pedidos existentes de trabajo.

Control de errores

En el caso de los flujos de producción, encapsule el paso Agregar una nueva fila en una acción Ámbito y agrega una rama paralela configurada para ejecutarse si ha fallado. Use esta rama para registrar el error o enviar una notificación. En el caso de los flujos desencadenados por HTTP, agregue siempre una acción Respuesta para que el sistema de llamada reciba un código de estado de correcto o de error en lugar de agotar el tiempo de espera.

Pasos siguientes