Implementing microservices can cause several data management problems that many development teams don’t anticipate, including when one service needs access to a dataset owned by another. Some of these issues can be resolved through the outbox pattern; wherein a message is inserted into a specific outbox table within a database when an update occurs and sent to Kafka once the transaction is logged. The outbox pattern can be implemented through change data capture. In this article, Gunnar Morling – the lead of Debezium (an OSS CDC tool), describes how the outbox pattern can be applied to Sagas (which split long-running business transactions into a series of multiple local database transactions within multiple microservices). He also discusses possible failure scenarios and how distributed tracing can help analyze and resolve failures.