Parent event called once instead from each instance

Why shouldn’t you avoid casting? Simply do sth accordingly when the cast fails.

The only difference between blueprints and c++ in this regard is that BPs don’t crash your game.

Adding a simple PrinString node with log entries is often enough to remind you that there is something wrong.