Respawning an actor disabling physic-induced movement

I’m trying to implement a simple in-game-restart logic that repositions all the actors that have been moved in the world.
The actors are in a different level than the environment that contains them.

So, before the game begins, I collect the transforms of the items to restore them later, when I “restart” the game.

But while on the start all the actors stays where I put them, on REstart the items that have been moved by the player and that need to reset their position, move due to gravity/collision faults after the re-positioning. The actor that haven’t been touched have their location reset too, but nothing bad happens to them.

I’m working with c++; I tried various combination of disabling the physic on the actor, putting the rigid body to sleep on its PrimitiveComponent, restoring the old transform to the actor, re-enabling the physic on the actor, putting (again) the rigid body to sleep.

What I suspect is that the level with the actors gets loaded before the environment, then all the actors are put to sleep (they do not start awake); then the environment is loaded and everything just stays as is; but when I restart I try to put the actors in the “old” place, but being now a collision with the environment they move a bit, thus waking up and then move because of gravity.

Because of this, I try to spawn a new actor on the old location, but nothing changes; the new actors just move due to collision/gravity (even using ESpawnActorCollisionHandlingMethod::AlwaysSpawn)

Is there a way to place an actor and tell them just to stay where I ask them to like it happens on start?


Update: if I just disable the physic simulation of the actor, then move it, and then manually activate it back later (ie. by hand flagging it in the editor), it stays where it should