Skip to main content

Workflow Outbox Storage

Summary

Shared-kernel outbox records are mapped in WorkflowDbContext. Supported aggregate events become outbox rows before the command save commits.

Outbox persistence

Mapping

Event type, payload, occurrence, status, retry/error, correlation, optional envelope tenant and source fields are stored. Payload uses a structured JSON column. Event identifier is unique; status/time is indexed.

Isolation

No outbox global tenant filter exists. Workflow integration events carry the numeric tenant in their payload while the shared envelope tenant field is not the canonical numeric tenant.

Multi-save behavior

The original command/outbox insert shares one save. Relay status changes use separate saves after publication attempts.

Requires Confirmation

Cleanup, tenant-safe diagnostics, retry limits, poison-message handling and retention require confirmation.

Source References

  • microservices/src/workflow-service/Infrastructure/WorkflowDbContext.cs
  • microservices/src/workflow-service/Infrastructure/Persistence.cs
  • microservices/src/workflow-service/Messaging/OutboxRelayHostedService.cs
  • microservices/src/workflow-service/Messaging/WorkflowIntegrationEvents.cs

See Also

Keywords

Workflow database, EF Core, Workflow schema.

Revision Information

  • Status: Draft
  • Last reviewed: 2026-07-20
  • Next review: 2026-10-20