This document discusses building multi-tenant systems using Cosmos DB and NServiceBus. It explores options for tenant segregation in Cosmos DB, including using separate accounts, containers, or partition keys per tenant. Partitioning in Cosmos DB is also covered, emphasizing the importance of choosing a high-cardinality partition key. The change feed is demonstrated as a way to perform live migrations. Integrating NServiceBus with Cosmos DB for messaging and transactions is then explained, specifically around the use of the outbox pattern for exactly-once processing.