I don’t think you even have to use :SetPrimaryPartCFrame as the joints make it stay consistent when modifying the CFrame. For some reason, this doesn’t work when setting the position and gives odd behaviour.
Position:
workspace['7z99'].HumanoidRootPart.Position = Vector3.new(0,20,0)
Result:
CFrame:
workspace['7z99'].HumanoidRootPart.CFrame = CFrame.new(0,20,0)
Result:
Another thing, joints are more reliable than :SetPrimaryPointCFrame as that function can cause floating point errors. That bug is as old as time itself and it’s honestly really annoying.