design – Validity of using Event Sourcing only on Invoicing system


To set some context, we have a telco system that contains multiple parts. Lets say we have Subscription, SMS Messaging, Voice Messaging, Charging, User, and Invoicing.

Each of this have their own data store and logic. Some of these services listens to each other’s events and triggers some action. So we practice some event driven stuff here, but not really event sourcing.

The Invoicing system had a requirement of tracking all charges in the system and building an invoice off them. Since Invoices are time sensitive, we have to precisely know what charges we should include in a month’s invoice.

enter image description here

We realized we need to do some event sourcing for it. Storing all Charge related events in an event store, so the Invoice service can build off those Events. In our system, the subscription service, SMS, Voice services cause charges. This means they would all push charge events in the Event store.

Does this design makes sense? Any inputs/suggestions is appreciated.