I need to design the architecture of a CRM "platform" that integrates 5-6 legacy CRMs. One important feature is to show customer records stored in other CRMs in one single dashboard. The actual records are stored end edited in their own CRM.
One question is: should I store a minimal set of information about those records or not at all? A solution could be:
call each CRM API, assemble everything in a BFF and serve the result to the the CRM UI of the platform.
Another solution could be to send create/update events from each CRM to a service bus, subscribe the platform to those events and store minimal information into the platform CRM, like externalID, customer name, CRM type.
What are the pros/cons of each solution? not only from a technical standpoint, but also from a development team standpoint?
I would expect more requirements on the platform CRM side, but we don't know yet, so it must be extensible. For example, in the integrated platform, there could be a merge function where a user marks records as equivalent. Or some kind of workflow that apply to all records.
I don't have a strong opinion now, except that events look more decoupled" but more complex to implement.
Any suggestion on how to write an analysis welcome