There are three types of events dispatched in Open Loyalty, commands, events and system events.
It’s a user intention, it’s something that we want to happen but may be rejected on any reason, ie. because data is not valid. To put it simply, it says “do something” to the software.
Events have happened. It represents something that has happened and it cannot be rejected. It’s a consequence of executing a command.
Additional type of events that are thrown during executing a command by command handler and may be used to trigger another commands. They’re also useful to separate concerns.