Project "a CQRS Journey"

For the things we have to learn before we can do them, we learn by doing them. ~Aristotle

Microsoft patterns & practices

The Road to V1

| Comments

Handling Complexity and Change

DDD and ES reduce complexity and cost of change. They would look like useless magic in stable and predictable projects.
- Rinat Abdullin, CQRS Advisors Mail List


One of the topics discussed on the CQRS Advisors Mail List was how to make the CQRS Journey Project more realistic. In the real world, projects face uncertainty, risk, and volatility in requirements. One of the benefits of applying ideas from DDD and using event sourcing is to make that uncertainty, risk, and volatility more manageable.

As part of our CQRS Journey, we are planning a pseudo-production release of V1 of the Contoso Conference Management System that includes the core conference management functionality. We will then explore, and document our experiences of enhancing and maintaining the V1 release as we continue to work on the Conference Management System.

Contents of the V1 Release

The following sections outline our planned functionality for the V1 release.

Conference Management

This will be a simple CRUD style bounded context that enables a Business Customer to create and manage conferences. A Business Customer will be able to:

  • Create and update the conference data such as name, description, and dates.
  • Publish and un-publish a conference.
  • Manage the Seat Types (e.g. full-conference, workshop, cocktail party) available at a conference.
  • View a list of Attendees.


This bounded context will implement the CQRS pattern and use event sourcing. The functionality in this bounded context includes:

  • Enabling a Registrant to create an Order for seats at a conference.
  • Handling partial fulfillment of Orders.
  • Enabling a Registrant to locate a previously created order using an Access Code.
  • Enabling a Registrant to assign Attendees to Seats.
  • A task-based UI.


The Conference Management and Registrations bounded contexts will be integrated so that any changes made by the Business Customer to the quota of Seats at a Conference are detected by the Registrations bounded context. Information about the Attendees is also shared between the two bounded contexts.


Part of the Registration Process includes the Registrant making a payment for the Order. The system will include a fake payment service that simulates handling payments by credit card and by invoice.


The Contoso Conference Management System will be deployed to Windows Azure and use the Windows Azure Service Bus to provide its messaging infrastructure for Commands and Events. It will also be possible to run the application locally without requiring a Windows Azure subscription.

More Information

You can follow our work in these two GitHub repositories:

You can track our progress against the V1 release milestone: