Sounds like a similar problem I had last week. I ended up solving it by setting the Owner.
The Server replicated event only executes on the server if the client that calls the function is the Owner. In my case, the weapon owner was NULL (I spawned the weapon in my pawn’s Begin Play event) and thus the event never executed on the server.
To solve this I had to wrap the SetOwner() function in a blueprint callable function as the SetOwner() function is not exposed to blueprints… But even before that, I would expect SpawnActor to set the value of Owner to the same value as Instigator tbh. Or at least supply an optional Owner parameter.