DDD, identifying the core domain

  • Core domain - the most important subdomain, which is essential for the business. Without it the business would fail. If you ever need to pick the first solution to implement - start with the core domain.

  • Supporting subdomain - subdomain, which is less valuable for business than Core domain. Without it business may be can even survive for some time. But it still is quite important (supports core domain), it also is specific for the domain and has to be developed. In this case, for some reason, we can't buy an existing software or component to solve the problem.

  • Generic subdomain - subdomain which is less valuable for business than Core domain. It also is generic enough to allow buying it off the shelf (unlike supporting domain).


Do you exactly mean multiple core domain candidates or may be it is multiple bounded contexts in core domain?

"Can Core Domain span multiple Bounded Contexts?" - another SO question

Eric asks several questions to help us identity which parts are core to the domain:

  1. What makes the system worth writing?
  2. Why not buy it off the shelf?
  3. Why not outsource it?

The core domain is so critical and fundamental to the business that it gives you a competitive advantage and is a foundational concept behind the business.

Source