Am I on the right track regarding architecture?

I’d try a GameInstanceSubsystem and implement a simple messaging bus where actors can register / unregister themselves. This way the sender only needs to dispatch an event package and the listeners can handle it without either side knowing about each other.