Dataverse y Transactional Outbox: integraciones confiables sin perder eventos

Dataverse Transactional Outbox: integraciones confiables

En integraciones empresariales no basta con actualizar un registro: también hay que garantizar que el sistema de destino reciba el evento. Microsoft documenta un patrón de referencia para resolver este problema en Dataverse: Transactional Outbox.

El problema de la doble escritura

Cuando una aplicación actualiza Dataverse y, por separado, envía un mensaje a un sistema externo, puede fallar después de guardar el registro pero antes de enviar el evento. El resultado es una diferencia entre sistemas. Una transacción distribuida no siempre está disponible ni es conveniente.

Arquitectura propuesta

  1. Una operación crea o modifica un registro en Dataverse.
  2. Un plug-in síncrono crea, en la misma transacción, un registro de evento en una tabla outbox.
  3. Si falla la operación, se revierte tanto el dato como el evento.
  4. Un proceso asíncrono entrega el evento a una cola o tópico de Azure Service Bus.
  5. Un consumidor procesa el mensaje y actualiza el sistema de destino.

Qué garantías ofrece

El patrón mejora la confiabilidad y permite entrega al menos una vez y consistencia eventual. No equivale a entrega exactamente una vez: pueden producirse duplicados, por lo que el consumidor debe ser idempotente. Para preservar el orden de mensajes relacionados, Microsoft recomienda evaluar sesiones de Service Bus con un identificador consistente.

Aplicación en proyectos LATAM

Es útil para sincronizar estados, documentos e información maestra entre Dataverse y sistemas externos. Si el destino es Dynamics 365 Finance, hay que diseñar por separado el contrato de integración y sus permisos; el patrón no convierte automáticamente una operación de D365FO en parte de la transacción de Dataverse.

Controles recomendados

  • Registrar identificadores de correlación e idempotencia.
  • Supervisar colas de mensajes fallidos y reintentos.
  • Usar identidades administradas cuando corresponda.
  • Medir latencia entre registro, publicación y consumo.
  • Probar interrupciones antes de habilitar el flujo productivo.

Fuente oficial: Microsoft Learn — Implement the Transactional Outbox pattern with Dataverse. Este artículo explica una arquitectura de referencia, no anuncia una nueva funcionalidad GA.

Deja un comentario

Scroll al inicio