Hi,
typically, I use a dedicated FSM to host data, and I call it "Meta Data", all fsm are aware of this meta data fsm, and read write to it, these other fsm only store data to work with it and once they processed it, they must write back the data, for other fsm to carry on or use it later. This is done via SetFsmXXX and GetFsmXXX actions.
And then for complex sequence of event, you simply have your fsm sending events either globably or locally, depending on the context ( is it a player instance or something general to the game).
Bye,
Jean