Crear un proveedor de aceptación
Este tema describe los pasos necesarios para crear un proveedor de aceptación en Microsoft Dynamics 365 Intelligent Order Management.
Crear una nueva definición de proveedor
Para crear una nueva definición de proveedor, siga estos pasos.
- Vaya a Proveedores > Catálogo.
- Seleccione Nueva definición de proveedor.
- Para Nombre para mostrar, introduzca "IOMLabOrderIntakeProvider".
- Para Nombre lógico, introduzca "msdyn_IOMLabOrderIntakeProvider".
- Para Logotipo, seleccione "IOMLab.png".
- Para Tipo de servicio, introduzca "Aceptación de pedido".
- Para Descripción, introduzca "Proveedor de aceptación de pedido del laboratorio de IOM".
- Seleccione Guardar y cerrar.
Agregar definición de proveedor a la solución
Para agregar una definición de proveedor a una solución, siga estos pasos.
- Vaya al Portal de creador de Power Apps y navegue hasta la solución recién creada IOMLabProviders.
- Seleccione Añadir existente > Definición de proveedor de IOM.
- Seleccione IOMLabOrderIntakeProvider y luego seleccione Agregar para agregarlo a la solución.
Agregar transformación a la definición de proveedor
Para agregar una transformación a la definición de proveedor, siga estos pasos.
- Vaya a Proveedores > Catálogo.
- Seleccione el recién creado IOMLabOrderIntakeProvider.
- Seleccione Editar en la barra del menú.
- Seleccione la pestaña Transformaciones.
- Seleccione + Nueva transformación de definición de proveedor de IOM.
- Para Nombre para mostrar, introduzca "Pedido de pedido para Dataverse del laboratorio de IOM".
- Para Nombre lógico, introduzca "msdyn_IOMLabOrderIntake_Order".
- Para Definición de proveedor, introduzca o seleccione IOMLabOrderIntakeProvider.
- Para Nombre del objeto de origen, introduzca "IOMLabOrderIntakeProvider".
- Para Nombre del objeto de destino, introduzca "Pedido de Dataverse".
- Para Transformación, pegue el siguiente código de consulta M:
shared ImportMappingKey = [
account = {
[
ExternalRecordKey = [ProviderName = "IOMLabOrderIntakeProvider"],
SelectedFields = {"accountid"}
]
},
pricelevel = {
[
ExternalRecordKey = [ProviderName = "IOMLabOrderIntakeProvider"],
SelectedFields = {"pricelevelid"}
]
},
product = List.Distinct(List.Transform(Source[orderdetails], each
[
ExternalRecordKey = [sku = _[sku]],
SelectedFields = {"productid"}
])),
uom = List.Distinct(List.Transform(Source[orderdetails], each
[
ExternalRecordKey = [unit = _[unit]],
SelectedFields = {"uomid"}
]))
];
shared TransformSourceData =
let
orderProducts = Source[orderdetails],
account = IOM.MapRecord(IOM.MappingTables[account], [ProviderName = "IOMLabOrderIntakeProvider"]),
pricelevel = IOM.MapRecord(IOM.MappingTables[pricelevel], [ProviderName = "IOMLabOrderIntakeProvider"]),
orderheader = Record.FromTable
(
Table.SelectRows
(
Record.ToTable
(
[
ordernumber = Text.From(Source[ordernumber]),
name = ordernumber,
#"customerid_account@odata.bind" = "/accounts(" & Text.From(account[accountid]) & ")",
#"pricelevelid@odata.bind" = "/pricelevels(" & Text.From(pricelevel[pricelevelid]) & ")",
billto_city = Record.FieldOrDefault(Source, "billtocity"),
billto_stateorprovince = Record.FieldOrDefault(Source, "billtostateorprovince"),
billto_country = Record.FieldOrDefault(Source, "billtocountry"),
billto_postalcode = Record.FieldOrDefault(Source, "billtozip"),
shipto_city = Record.FieldOrDefault(Source, "shiptocity"),
shipto_stateorprovince = Record.FieldOrDefault(Source, "shiptostateorprovince"),
shipto_country = Record.FieldOrDefault(Source, "shiptocountry"),
shipto_postalcode = Record.FieldOrDefault(Source, "shiptozip")
]
), each [Value] <> null
)
),
orderlines = List.Transform(orderProducts, each
Record.FromTable
(
Table.SelectRows
(
Record.ToTable
(
[
ispriceoverridden = true,
#"productid@odata.bind" = "/products(" & IOM.MapRecord(IOM.MappingTables[product], [sku = Record.FieldOrDefault(_, "sku")])[productid] & ")",
#"uomid@odata.bind" = "/uoms(" & IOM.MapRecord(IOM.MappingTables[uom], [unit = Record.FieldOrDefault(_, "unit")])[uomid] & ")",
quantity = [quantity],
shipto_name = Record.FieldOrDefault(orderheader, "shipto_name"),
shipto_contactname = Record.FieldOrDefault(orderheader, "shipto_contactname"),
shipto_line1 = Record.FieldOrDefault(orderheader, "shipto_line1"),
shipto_line2 = Record.FieldOrDefault(orderheader, "shipto_line2"),
shipto_line3 = Record.FieldOrDefault(orderheader, "shipto_line3"),
shipto_city = Record.FieldOrDefault(orderheader, "shipto_city"),
shipto_stateorprovince = Record.FieldOrDefault(orderheader, "shipto_stateorprovince"),
shipto_country = Record.FieldOrDefault(orderheader, "shipto_country"),
shipto_postalcode = Record.FieldOrDefault(orderheader, "shipto_postalcode"),
shipto_telephone = Record.FieldOrDefault(orderheader, "shipto_telephone")
]
), each [Value] <> null
)
)
),
salesorder = Record.AddField(orderheader, "order_details", orderlines)
in Text.FromBinary(Json.FromValue(salesorder));
- Para Tipo de origen de transformación, introduzca "JsonPayload".
- Seleccione Guardar.
- Cree un archivo JSON, pegue el siguiente código y guárdelo.
{
"ordernumber": "IOMLabOrder001",
"shiptocity": "BELLEVUE",
"shiptostateorprovince": "WA",
"shiptocountry": "US",
"shiptozip": "98007",
"billtocity": "BELLEVUE",
"billtostateorprovince": "WA",
"billtocountry": "US",
"billtozip": "98007",
"orderdetails": [
{
"sku": "883988211855",
"unit": "each",
"quantity": 11
}
]
}
- Al lado del campo Datos de ejemplo, seleccione Elegir archivo y cargue el archivo JSON que creó.
- Seleccione Guardar y cerrar.
Agregar transformación de definición de proveedor a una solución
Para agregar una definición de transformación a una solución, siga estos pasos.
- Vaya al Portal de creador de Power Apps y navegue hasta la solución recién creada IOMLabProviders.
- Seleccione Añadir existente > Transformación de definición de proveedor de IOM.
- Seleccione Pedido de pedido para Dataverse del laboratorio de IOMy luego seleccione Agregar para agregarlo a la solución.
Crear un controlador de mensaje de proveedor
Para crear un controlador de mensaje de proveedor, siga estos pasos.
Vaya al Portal de creador de Power Apps, navegue hasta Soluciones y abra la Solución predeterminada.
Seleccione Nuevo.
Seleccione Flujo de nube y, a continuación, nómbrela "Controlador de solicitudes de mensajes de aceptación de pedido del laboratorio de la IOM".
Seleccione el tipo de desencadenador como Outlook.com: Cuando llega un nuevo correo electrónico (V2) y luego inicie sesión con las credenciales de su cuenta de outlook.com.
Para Carpeta, seleccione Bandeja de entrada.
Para Para, seleccione Direcciones de correo electrónico de los destinatarios separadas por punto y coma.
Para CC, seleccione Direcciones de correo electrónico de destinatarios en CC separadas por punto y coma.
Para Para o CC, seleccione Direcciones de correo electrónico de destinatarios en Para o CC separadas por punto y coma.
Para De, seleccione Direcciones de correo electrónico de remitente separadas por punto y coma.
Para Incluir archivos adjuntos, seleccione Sí.
Para Filtro de asunto, seleccione IOMLabOrderIntakeOrder.
Para Importancia, seleccione Cualquiera.
Para Solo con adjunto, seleccione Sí.
Seleccione Nuevo paso y agregue "Analizar JSON".
Para Contenido, pegue el siguiente código:
{ "ProviderId": "00000000-0000-0000-0000-000000000000" }
Pegue directamente el siguiente código de esquema de muestra:
{ "type": "object", "properties": { "ProviderId": { "type": "string" } } }
Seleccione Listo.
Seleccione los puntos suspensivos (...) y, después, seleccione Cambiar nombre.
Cambie el nombre de la acción "Propiedades del sistema IOM".
Seleccione Guardar.
Seleccione Nuevo paso, agregue una acción Analizar JSON y cambie el nombre a "Inicializar variables de proveedor".
Para Contenido, pegue el siguiente código:
{ "SourceObjectName": "IOMLabOrderIntakeProvider", "DestinationObjectName": "Dataverse Order" }
Seleccione Guardar.
Seleccione Nuevo paso, agregue una acción Inicializar variable y cámbiele el nombre a "Inicializar resultado de ejecución de procesamiento".
Para Nombre, introduzca "ExecutionResult".
Para Tipo, seleccione Booleano.
Para Valor, seleccione true.
Seleccione Guardar.
Seleccione Nuevo paso, agregue "ámbito" y cambie el nombre a "Probar".
En el ámbito Probar, seleccione Agregar una acción.
Agregue "realizar una acción independiente" del conector de Dataverse y cámbiele el nombre a "Reconocer el mensaje del proveedor en IOM".
Para Nombre de la acción, introduzca "msdyn_CreateProviderMessageRequestExecution".
Para PowerAutomateWorkflowId, introduzca
workflow()['tags']['xrmWorkflowId']
como expresión.Para PowerAutomateRunId, introduzca
workflow()['run']?['name']
como expresión.Para ProviderExternalRequestId, introduzca
guid()
como expresión.Seleccione Guardar.
Seleccione Agregar una acción y luego agregue un control Aplicar a todo.
Para Seleccionar un resultado de los pasos anteriores, seleccione Archivos adjuntos.
Seleccione Agregar una acción dentro del bucle Aplicar a todo, agregue Ejecutar un flujo secundario desde el conector Flujo y cámbiele el nombre a "Transformar mensaje con Power Query Online".
Seleccione el flujo secundario Transformador de proveedor de IOM.
Para Id. del proveedor, seleccione la variable ProviderId.
Para Nombre del objeto de origen, seleccione la variable SourceObjectName.
Para Nombre del objeto de destino, seleccione la variable DestinationObjectName.
Para Carga útil, introduzca
decodeBase64(items('Apply_to_each')?['ContentBytes'])
como expresión.Seleccione Guardar.
Después del paso de transformación, seleccione Agregar una acción, agregue Ejecutar un flujo secundario en el conector de flujo y cámbiele el nombre a "Crear pedido".
Para Flujo secundario, introduzca "Creación de pedidos de venta de IOM".
Para Carga útil, introduzca
string(json(outputs('Transform_Message_with_Power_Query_Online')?['Body']?['result'])?[0][0])
como expresión.Seleccione Guardar.
Contraiga el ámbito Probar seleccionando su barra de título.
Seleccione Nuevo paso, agregue un ámbito y cámbiele el nombre a "Capturar".
En el ámbito Capturar, seleccione los puntos suspensivos ("...") y, después, seleccione Configurar ejecutar después.
Seleccione las casillas ha habido un error y ha expirado y luego seleccione Listo.
En el ámbito Capturar, seleccione Agregar una acción, agregue una acción Establecer variable y cámbiele el nombre "Establecer el resultado de la ejecución como error".
Para Nombre, introduzca "Executionresult".
Para Valor, seleccione false.
Seleccione Guardar.
Contraiga el ámbito Capturar seleccionando su barra de título.
Seleccione Nuevo paso, agregue un ámbito y cámbiele el nombre a "Finalmente".
En el ámbito Finalmente, seleccione los puntos suspensivos ("...") y, después, seleccione Configurar ejecutar después.
Seleccione las casillas ha tenido éxito, ha habido un error, se ha omitido y ha expirado y, después, seleccione Listo.
En el ámbito Finalmente, seleccione Agregar una acción, agregue una acción Realizar una acción independiente y cámbiele el nombre a "Guardar resultado de ejecución de solicitud de mensaje del proveedor".
Para Nombre de la acción, introduzca "msdyn_UpdateProviderMessageRequestStatus".
Para ProviderMessageRequestExecutionId, introduzca
@outputs('Acknowledge_the_Provider_Message_in_IOM')?["body/ProviderMessageRequestExecutionId']
.Seleccione Guardar.
Agregar una definición lógica de definición de proveedor a la definición de proveedor
Para agregar una definición lógica de definición de proveedor a la definición de proveedor, siga los siguientes pasos.
- En su aplicación Intelligent Order Management, vaya a Proveedores > Catálogo.
- Seleccione el recién creado IOMLabOrderIntakeProvider.
- Seleccione Editar en la barra del menú.
- Seleccione la pestaña Definiciones lógicas.
- Seleccione + Nueva definición de la lógica de la definición de proveedor de IOM.
- Para Nombre para mostrar, introduzca "Controlador de solicitudes de mensajes de aceptación de pedidos del laboratorio de IOM".
- Para Nombre lógico, introduzca "msdyn_LabOrderIntakeMessageRequestHandler".
- Para Definición de proveedor, introduzca "IOMLabOrderIntakeProvider".
- Para Tipo de lógica, introduzca "Proporcionar controlador de mensajes".
- Para Nombre de flujo de trabajo, introduzca "Controlador de solicitudes de mensajes de aceptación de pedidos del laboratorio de IOM".
- Para Minutos del tiempo de espera, introduzca "2".
- Para Número máximo de reintentos, introduzca "3".
- Para Descripción, introduzca "Controlador de solicitudes de mensajes de aceptación de pedidos del laboratorio de IOM".
- Seleccione Guardar. Esto genera una representación JSON del flujo de la nube del controlador de mensajes y rellena el campo Datos de cliente.
- Seleccione Guardar y cerrar.
- Seleccione Conexiones. Debería ver las definiciones de referencias de conexión Microsoft Dataverse y Outlook.com enumeradas.
Nota
Si ve definiciones de referencia de conexiones que no sean Microsoft Dataverse y Outlook.com, esto significa que está utilizando más de referencia de conexión de Dataverse en el flujo del controlador de mensajes de aceptación de pedidos. Para solucionar esto, vaya a su flujo y asegúrese de que todas las acciones de Dataverse utilizan la misma referencia de conexión.
Agregar una definición lógica de definición de proveedor a la solución IOMLabProviders
Para agregar una definición lógica de definición de proveedor a la solución IOMLabProviders, siga estos pasos.
- Vaya al Portal de creador de Power Apps y navegue hasta la solución recién creada IOMLabProviders.
- Seleccione Agregar existente > Definición de la lógica de la definición de proveedor de IOM.
- Seleccione Controlador de solicitud de mensaje de aceptación de pedidos del laboratorio de IOM y luego seleccione Agregar para agregarlo a la solución.
Agregar referencia de conexión de definición de proveedor a la solución IOMLabProviders
Para agregar una referencia de conexión de definición de proveedor a la solución IOMLabProviders, siga estos pasos.
- Vaya al Portal de creador de Power Apps y navegue hasta la solución recién creada IOMLabProviders.
- Seleccione Agregar existente > Referencia de conexión de definición de proveedor de IOM.
- Seleccione las definiciones de referencia de conexión Microsoft Dataverse y Outlook.com y, a continuación, seleccione Agregar para agregarlos a la solución.
Siguiente paso de laboratorio de inicio rápido: Crear proveedor de proceso de entrega.