The events are the type of things that we record as having occurred for any given aggregate identifier

For each aggregate identifier we either need to identify a business specific unique identifier that already exists or supply a unique number (or GUID) to uniquely identify that aggregate.

  • Team
    • Registered - A team is registered to the league. Parameters would include team name and other details like what kit, contact details, home ground etc.
    • ColoursChanged - The team kit (home or away) has been changed. It is important to know this as when two teams meet if they are wearing similar colours then one team must change to away kit.
    • GameScheduled - A game featuring this team has been scheduled.
  • Division
    • TeamAdded - A team was promoted up into or demoted down into the division
    • TeamRemoved - A team was demoted down into or promoted up into the division
  • Player
    • Registered - Player is added to the system and assigned to the team that signed them up
    • Transferred - Player moves from one team to another
    • SentOff - Player was sent off during a match
    • StartedGame - Player was on the pitch at the start of play
    • SubstitutedOn - Player was substituted on for another player.


As you can see it is possible to build up a very large system quite quickly simply by adding new events that can occur to any given aggregate identifier. As each event is pretty much independent this can be done without adding massive complexity as would be the case with a more traditional RDBMS backed system.

Last edited May 25, 2015 at 10:34 AM by Merrion, version 2