title: Communicating between two Bounded Contexts in DDD
body: <p>I have few different <strong>Bounded Contexts</strong> in the domain. The validation of a CRUD operation is built in each Bounded Context. </p>
  
  <p>For example, I can <em>create an entity called GAME only if the person creating it is a Group Leader</em>. </p>
  
  <p>I have two Bounded Contexts (BC) in this example. One is the <strong>Game BC</strong> and the other is the <strong>User BC</strong>. To solve the problem, in the <strong>Game BC</strong>, I have to make a domain service call like <strong>IsGroupLeader()</strong> to the <strong>User BC</strong> before proceeding on creating the Game. </p>
  
  <p>I don't think this type of communication is recommended by DDD. I can have a <em>User entity</em> also in the <strong>Game BC</strong>, but I don't want to because the same <em>User entity</em> is being used differently in a different context in a different BC.</p>
  
  <p>My questions are:</p>
  
  <ol>
  <li><p>Should I use Domain events where the <strong>Game BC</strong> has to send an event to the <strong>User BC</strong> asking the <em>status of the User</em>? With this approach, I don't make a synchronous call like <strong>IsGroupLeader</strong> but an event called <strong>is_group_leader</strong>. Then the Game BC has to wait for the User BC to process the event and return the status. The Game BC will create the Game entity only after the User BC process the event.</p></li>
  <li><p>Is CQRS a solution to my problem?</p></li>
  </ol>
  
  <p>Any idea appreciated.</p>