Hi.
In Scenario 1 i can see that you use both Global and local.
It will always send 1st to the global which is the reason it does the infinite loop as it constantly goes back to that state.
if you use a global event you should not use the same event name for local.
In Scenario 2
Give the children a different event name (for example "Child/Event A)
Exclude self will only exclude a fsm, to have this on the other types would make no sense
Also you should use broadcast event only if you need to send a event a lot of objects/fsms
For the children i would make for example an array and place the children into that array (manual or with actions)
Then loop thru the array end send the event to each one.
Another way is have the children check the parent.
For example with a 'fsm bool test' (which you can set to true/false within your parent code.
Or use a "Fsm State Test"
How to do this is depending of your setup ofc.