Object manipulator MRTK3

Hi everyone, I have been creating an app for Hololens2 with the MRTKs 3 and i have found a problem which I am not able to solve. basically my problem is that when I move from one scene to another through the scripts below, I can not move the object that is passed through the scenes (the object has attached the object manipulator script), but if I go from the second scene to the one before and i re-do the procedure I can move the object that was taken there in the first place and I can not move the one brought in the last istance. does anyone know why? I leave below the scripts used with a description of their purpose:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;

public class ChangeScenee : MonoBehaviour
{
public GameObject objectToKeep;
public string modelIdentifier;

public void SwitchScene(string sceneName)
{
    objectToKeep.SetActive(true);  
    ObjectManager.instance.KeepObject(objectToKeep);
    SceneManager.LoadScene(sceneName);
    PlayerPrefs.SetString("ModelIdentifier", modelIdentifier); 
}

}
this is the script used to pass from one scene to another and it’s binded with the script below:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;

public class ObjectManager : MonoBehaviour
{
public static ObjectManager instance;

private List<GameObject> objectsToKeep = new List<GameObject>();

private void Awake()
{
    if (instance == null)
    {
        DontDestroyOnLoad(gameObject);
        instance = this;
    }
    else if (instance != this)
    {
        Destroy(gameObject);
    }

    SceneManager.sceneLoaded += OnSceneLoaded;
}

public void KeepObject(GameObject obj)
{
    if (!objectsToKeep.Contains(obj))
    {
        DontDestroyOnLoad(obj);
        objectsToKeep.Add(obj);
    }
}

private void OnSceneLoaded(Scene scene, LoadSceneMode mode)
{
    if (scene.name == "1_PVchoice") 
    {
        foreach (GameObject obj in objectsToKeep)
        {
            obj.SetActive(false); 
        }
    }
    else if (scene.name == "5_panelpositioning") 
    {
        foreach (GameObject obj in objectsToKeep)
        {
            obj.SetActive(true); 
        }
    }
}

private void OnDestroy()
{
    SceneManager.sceneLoaded -= OnSceneLoaded;
}

}

this script is binded with an empty gameobject that stores the object to be kept through the scenes.
if you need any additional info let me know.
thanks in advance.