diff --git a/com.unity.netcode.gameobjects/Runtime/Messaging/Messages/ConnectionApprovedMessage.cs b/com.unity.netcode.gameobjects/Runtime/Messaging/Messages/ConnectionApprovedMessage.cs
index ab46a4465f..807429fdb8 100644
--- a/com.unity.netcode.gameobjects/Runtime/Messaging/Messages/ConnectionApprovedMessage.cs
+++ b/com.unity.netcode.gameobjects/Runtime/Messaging/Messages/ConnectionApprovedMessage.cs
@@ -273,10 +273,12 @@ public void Handle(ref NetworkContext context)
             // Stop the client-side approval timeout coroutine since we are approved.
             networkManager.ConnectionManager.StopClientApprovalCoroutine();
 
-            networkManager.ConnectionManager.ConnectedClientIds.Clear();
             foreach (var clientId in ConnectedClientIds)
             {
-                if (!networkManager.ConnectionManager.ConnectedClientIds.Contains(clientId))
+                // DANGO-TODO: Revisit the entire connection sequence and determine why we would need to check both cases as we shouldn't have to =or= we could
+                // try removing this after the Rust server connection sequence stuff is resolved. (Might be only needed if scene management is disabled)
+                // If there is any disconnect between the connection sequence of Ids vs ConnectedClients, then add the client.
+                if (!networkManager.ConnectionManager.ConnectedClientIds.Contains(clientId) || !networkManager.ConnectionManager.ConnectedClients.ContainsKey(clientId))
                 {
                     networkManager.ConnectionManager.AddClient(clientId);
                 }
diff --git a/com.unity.netcode.gameobjects/Runtime/SceneManagement/NetworkSceneManager.cs b/com.unity.netcode.gameobjects/Runtime/SceneManagement/NetworkSceneManager.cs
index 9a85c510b7..b904056c8a 100644
--- a/com.unity.netcode.gameobjects/Runtime/SceneManagement/NetworkSceneManager.cs
+++ b/com.unity.netcode.gameobjects/Runtime/SceneManagement/NetworkSceneManager.cs
@@ -2595,30 +2595,26 @@ private void HandleSessionOwnerEvent(uint sceneEventId, ulong clientId)
                 case SceneEventType.SynchronizeComplete:
                     {
                         // At this point the client is considered fully "connected"
-                        if ((NetworkManager.DistributedAuthorityMode && NetworkManager.LocalClient.IsSessionOwner) || !NetworkManager.DistributedAuthorityMode)
+                        // Make sure we have a NetworkClient for this synchronized client
+                        if (!NetworkManager.ConnectedClients.ContainsKey(clientId))
                         {
-                            // Notify the local server that a client has finished synchronizing
-                            OnSceneEvent?.Invoke(new SceneEvent()
-                            {
-                                SceneEventType = sceneEventData.SceneEventType,
-                                SceneName = string.Empty,
-                                ClientId = clientId
-                            });
-                            if (NetworkManager.ConnectedClients.ContainsKey(clientId))
-                            {
-                                NetworkManager.ConnectedClients[clientId].IsConnected = true;
-                            }
+                            NetworkManager.ConnectionManager.AddClient(clientId);
                         }
-                        else
+                        // Mark this client as being connected
+                        NetworkManager.ConnectedClients[clientId].IsConnected = true;
+
+                        // Notify the local server that a client has finished synchronizing
+                        OnSceneEvent?.Invoke(new SceneEvent()
                         {
-                            // Notify the local server that a client has finished synchronizing
-                            OnSceneEvent?.Invoke(new SceneEvent()
-                            {
-                                SceneEventType = sceneEventData.SceneEventType,
-                                SceneName = string.Empty,
-                                ClientId = clientId
-                            });
+                            SceneEventType = sceneEventData.SceneEventType,
+                            SceneName = string.Empty,
+                            ClientId = clientId
+                        });
 
+                        // For non-authority clients in a distributed authority session, we show hidden objects,
+                        // we distribute NetworkObjects, and then we end the scene event.
+                        if (NetworkManager.DistributedAuthorityMode && !NetworkManager.LocalClient.IsSessionOwner)
+                        {
                             // Show any NetworkObjects that are:
                             // - Hidden from the session owner
                             // - Owned by this client
diff --git a/com.unity.netcode.gameobjects/Runtime/Spawning/NetworkSpawnManager.cs b/com.unity.netcode.gameobjects/Runtime/Spawning/NetworkSpawnManager.cs
index 50c1e008d0..ba9db8329d 100644
--- a/com.unity.netcode.gameobjects/Runtime/Spawning/NetworkSpawnManager.cs
+++ b/com.unity.netcode.gameobjects/Runtime/Spawning/NetworkSpawnManager.cs
@@ -831,7 +831,7 @@ internal NetworkObject GetNetworkObjectToSpawn(uint globalObjectIdHash, ulong ow
                 {
                     if (NetworkLog.CurrentLogLevel <= LogLevel.Error)
                     {
-                        NetworkLog.LogError($"Failed to create object locally. [{nameof(globalObjectIdHash)}={globalObjectIdHash}]. {nameof(NetworkPrefab)} could not be found. Is the prefab registered with {nameof(NetworkManager)}?");
+                        NetworkLog.LogError($"Failed to create object locally. [{nameof(globalObjectIdHash)}={globalObjectIdHash}]. {nameof(NetworkPrefab)} could not be found. Is the prefab registered with {NetworkManager.name}?");
                     }
                 }
                 else
diff --git a/com.unity.netcode.gameobjects/TestHelpers/Runtime/NetcodeIntegrationTest.cs b/com.unity.netcode.gameobjects/TestHelpers/Runtime/NetcodeIntegrationTest.cs
index e6261ae88b..ea365b3fc0 100644
--- a/com.unity.netcode.gameobjects/TestHelpers/Runtime/NetcodeIntegrationTest.cs
+++ b/com.unity.netcode.gameobjects/TestHelpers/Runtime/NetcodeIntegrationTest.cs
@@ -96,10 +96,27 @@ public static void DeregisterNetworkObject(ulong localClientId, ulong networkObj
             }
         }
 
+        private int GetTotalClients()
+        {
+            if (m_DistributedAuthority)
+            {
+                // If not connecting to a CMB service then we are using a DAHost and we add 1 to this count.
+                return !UseCMBService() && m_UseHost ? m_NumberOfClients + 1 : m_NumberOfClients;
+            }
+            else
+            {
+                // If using a host then we add one to this count.
+                return m_UseHost ? m_NumberOfClients + 1 : m_NumberOfClients;
+            }
+        }
+
         /// 
-        /// Total number of clients that should be connected at any point during a test
+        /// Total number of clients that should be connected at any point during a test.
         /// 
-        protected int TotalClients => m_UseHost ? m_NumberOfClients + 1 : m_NumberOfClients;
+        /// 
+        /// When using the CMB Service, we ignore if  is true.
+        /// 
+        protected int TotalClients => GetTotalClients();
 
         protected const uint k_DefaultTickRate = 30;
 
@@ -107,15 +124,21 @@ public static void DeregisterNetworkObject(ulong localClientId, ulong networkObj
         /// Specifies the number of client instances to be created for the integration test.
         /// 
         /// 
-        /// When running with a hosted CMB Service, NumberOfClients + 1 clients are created.
-        /// This holds assumptions throughout the test suite that when running with a host, there is an extra client.
-        /// For example, see the calculation for .
+        /// Client-Server network topology:
+        /// When running as a host the total number of clients will be NumberOfClients + 1.
+        /// See the calculation for .
+        /// Distributed Authority network topology:
+        /// When connecting to a CMB server, if the  == 0 then a session owner client will
+        /// be automatically added in order to start the session and the private internal m_NumberOfClients value, which 
+        /// is initialized as , will be incremented by 1 making  yield the
+        /// same results as if we were running a Host where it will effectively be 
+        /// + 1.
         /// 
         protected abstract int NumberOfClients { get; }
         private int m_NumberOfClients;
 
         /// 
-        /// Set this to false to create the clients first.
+        /// Set this to false to create the clients first.
         /// Note: If you are using scene placed NetworkObjects or doing any form of scene testing and
         /// get prefab hash id "soft synchronization" errors, then set this to false and run your test
         /// again.  This is a work-around until we can resolve some issues with NetworkManagerOwner and
@@ -141,6 +164,7 @@ public enum HostOrServer
 
         /// The Server  instance instantiated and tracked within the current test
         protected NetworkManager m_ServerNetworkManager;
+
         /// All the client  instances instantiated and tracked within the current test
         protected NetworkManager[] m_ClientNetworkManagers;
         /// All the  instances instantiated and tracked within the current test
@@ -156,11 +180,16 @@ protected NetworkManager GetAuthorityNetworkManager()
         {
             if (m_UseCmbService)
             {
+                // If we haven't even started any NetworkManager, then return the first instance
+                // since it will be the session owner.
+                if (!NetcodeIntegrationTestHelpers.IsStarted)
+                {
+                    return m_NetworkManagers[0];
+                }
+
                 foreach (var client in m_NetworkManagers)
                 {
-                    // If client isn't approved we are still in setup and want to return the first client
-                    // otherwise look for the session owner
-                    if (!client.LocalClient.IsApproved || client.LocalClient.IsSessionOwner)
+                    if (client.LocalClient.IsSessionOwner)
                     {
                         return client;
                     }
@@ -190,14 +219,44 @@ protected NetworkManager GetNonAuthorityNetworkManager()
         protected Dictionary> m_PlayerNetworkObjects = new Dictionary>();
 
         protected bool m_UseHost = true;
-        protected bool m_DistributedAuthority;
+        protected bool m_DistributedAuthority => m_NetworkTopologyType == NetworkTopologyTypes.DistributedAuthority;
         protected NetworkTopologyTypes m_NetworkTopologyType = NetworkTopologyTypes.ClientServer;
 
         /// 
         /// Indicates whether the currently running tests are targeting the hosted CMB Service
         /// 
         /// Can only be true if  returns true.
-        protected bool m_UseCmbService;
+        protected bool m_UseCmbService { get; private set; }
+
+        private string m_UseCmbServiceEnvString = null;
+        private bool m_UseCmbServiceEnv;
+
+        /// 
+        /// Will check the environment variable once and then always return the results
+        /// of the first check.
+        /// 
+        /// 
+        /// This resets its properties during , so it will
+        /// check the environment variable once per test set.
+        /// 
+        /// true/false
+        private bool GetServiceEnvironmentVariable()
+        {
+            if (!m_UseCmbServiceEnv && m_UseCmbServiceEnvString == null)
+            {
+                m_UseCmbServiceEnvString = NetcodeIntegrationTestHelpers.GetCMBServiceEnvironentVariable();
+                if (bool.TryParse(m_UseCmbServiceEnvString.ToLower(), out bool isTrue))
+                {
+                    m_UseCmbServiceEnv = isTrue;
+                }
+                else
+                {
+                    Debug.LogWarning($"The USE_CMB_SERVICE ({m_UseCmbServiceEnvString}) value is an invalid bool string. {m_UseCmbService} is being set to false.");
+                    m_UseCmbServiceEnv = false;
+                }
+            }
+            return m_UseCmbServiceEnv;
+        }
 
         /// 
         /// Indicates whether a hosted CMB service is available.
@@ -206,12 +265,7 @@ protected NetworkManager GetNonAuthorityNetworkManager()
         /// true if a DAHost test should run against a hosted CMB service instance; otherwise false
         protected virtual bool UseCMBService()
         {
-#if USE_CMB_SERVICE
-            return true;
-#else
-            var useCmbService = Environment.GetEnvironmentVariable("USE_CMB_SERVICE") ?? "unset";
-            return useCmbService.ToLower() == "true";
-#endif
+            return m_UseCmbService;
         }
 
         protected virtual NetworkTopologyTypes OnGetNetworkTopologyType()
@@ -357,6 +411,24 @@ protected virtual void OnOneTimeSetup()
 
         [OneTimeSetUp]
         public void OneTimeSetup()
+        {
+            // Only For CMB Server Tests:
+            // If the environment variable is set (i.e. doing a CMB server run) but UseCMBservice returns false, then ignore the test.
+            // Note: This will prevent us from re-running all of the non-DA integration tests that have already run multiple times on
+            // multiple platforms
+            if (GetServiceEnvironmentVariable() && !UseCMBService())
+            {
+                Assert.Ignore("[CMB-Server Test Run] Skipping non-distributed authority test.");
+                return;
+            }
+            else
+            {
+                // Otherwise, continue with the test
+                InternalOnOneTimeSetup();
+            }
+        }
+
+        private void InternalOnOneTimeSetup()
         {
             Application.runInBackground = true;
             m_NumberOfClients = NumberOfClients;
@@ -413,6 +485,9 @@ protected virtual void OnInlineSetup()
         [UnitySetUp]
         public IEnumerator SetUp()
         {
+            // In addition to setting the number of clients in the OneTimeSetup, we need to re-apply the number of clients for each unique test
+            // in the event that a previous test stopped a client.
+            m_NumberOfClients = NumberOfClients;
             VerboseDebugLog.Clear();
             VerboseDebug($"Entering {nameof(SetUp)}");
             NetcodeLogAssert = new NetcodeLogAssert();
@@ -461,7 +536,6 @@ public IEnumerator SetUp()
 
                 }
             }
-
             VerboseDebug($"Exiting {nameof(SetUp)}");
         }
 
@@ -498,6 +572,28 @@ private void CreatePlayerPrefab()
             VerboseDebug($"Exiting {nameof(CreatePlayerPrefab)}");
         }
 
+        private void AddRemoveNetworkManager(NetworkManager networkManager, bool addNetworkManager)
+        {
+            var clientNetworkManagersList = new List(m_ClientNetworkManagers);
+            if (addNetworkManager)
+            {
+                clientNetworkManagersList.Add(networkManager);
+            }
+            else
+            {
+                clientNetworkManagersList.Remove(networkManager);
+            }
+
+            m_ClientNetworkManagers = clientNetworkManagersList.ToArray();
+            m_NumberOfClients = clientNetworkManagersList.Count;
+
+            if (!m_UseCmbService)
+            {
+                clientNetworkManagersList.Insert(0, m_ServerNetworkManager);
+            }
+            m_NetworkManagers = clientNetworkManagersList.ToArray();
+        }
+
         /// 
         /// This is invoked before the server and client(s) are started.
         /// Override this method if you want to make any adjustments to their
@@ -516,26 +612,58 @@ protected void CreateServerAndClients()
             CreateServerAndClients(NumberOfClients);
         }
 
-        private void AddRemoveNetworkManager(NetworkManager networkManager, bool addNetworkManager)
+        /// 
+        /// Creates the server and clients
+        /// 
+        /// The number of client instances to create
+        protected void CreateServerAndClients(int numberOfClients)
         {
-            var clientNetworkManagersList = new List(m_ClientNetworkManagers);
-            if (addNetworkManager)
+            VerboseDebug($"Entering {nameof(CreateServerAndClients)}");
+
+            CreatePlayerPrefab();
+
+            if (m_EnableTimeTravel)
             {
-                clientNetworkManagersList.Add(networkManager);
+                m_TargetFrameRate = -1;
             }
-            else
+
+            // If we are connecting to a CMB server we add +1 for the session owner
+            if (m_UseCmbService)
             {
-                clientNetworkManagersList.Remove(networkManager);
+                numberOfClients++;
             }
 
-            m_ClientNetworkManagers = clientNetworkManagersList.ToArray();
-            m_NumberOfClients = clientNetworkManagersList.Count;
+            // Create multiple NetworkManager instances
+            if (!NetcodeIntegrationTestHelpers.Create(numberOfClients, out NetworkManager server, out NetworkManager[] clients, m_TargetFrameRate, m_CreateServerFirst, m_EnableTimeTravel, m_UseCmbService))
+            {
+                Debug.LogError("Failed to create instances");
+                Assert.Fail("Failed to create instances");
+            }
+            m_NumberOfClients = numberOfClients;
+            m_ClientNetworkManagers = clients;
+            m_ServerNetworkManager = server;
 
+            var managers = clients.ToList();
             if (!m_UseCmbService)
             {
-                clientNetworkManagersList.Insert(0, m_ServerNetworkManager);
+                managers.Insert(0, m_ServerNetworkManager);
             }
-            m_NetworkManagers = clientNetworkManagersList.ToArray();
+            m_NetworkManagers = managers.ToArray();
+
+            s_DefaultWaitForTick = new WaitForSecondsRealtime(1.0f / GetAuthorityNetworkManager().NetworkConfig.TickRate);
+
+            // Set the player prefab for the server and clients
+            foreach (var manager in m_NetworkManagers)
+            {
+                manager.NetworkConfig.PlayerPrefab = m_PlayerPrefab;
+                SetDistributedAuthorityProperties(manager);
+            }
+
+            // Provides opportunity to allow child derived classes to
+            // modify the NetworkManager's configuration before starting.
+            OnServerAndClientsCreated();
+
+            VerboseDebug($"Exiting {nameof(CreateServerAndClients)}");
         }
 
         /// 
@@ -546,7 +674,7 @@ private void AddRemoveNetworkManager(NetworkManager networkManager, bool addNetw
         protected virtual void OnNewClientCreated(NetworkManager networkManager)
         {
             // Ensure any late joining client has all NetworkPrefabs required to connect.
-            foreach (var networkPrefab in m_ServerNetworkManager.NetworkConfig.Prefabs.Prefabs)
+            foreach (var networkPrefab in GetAuthorityNetworkManager().NetworkConfig.Prefabs.Prefabs)
             {
                 if (!networkManager.NetworkConfig.Prefabs.Contains(networkPrefab.Prefab))
                 {
@@ -761,7 +889,7 @@ protected void StopOneClientWithTimeTravel(NetworkManager networkManager, bool d
 
         protected void SetTimeTravelSimulatedLatency(float latencySeconds)
         {
-            ((MockTransport)m_ServerNetworkManager.NetworkConfig.NetworkTransport).SimulatedLatencySeconds = latencySeconds;
+            ((MockTransport)GetAuthorityNetworkManager().NetworkConfig.NetworkTransport).SimulatedLatencySeconds = latencySeconds;
             foreach (var client in m_ClientNetworkManagers)
             {
                 ((MockTransport)client.NetworkConfig.NetworkTransport).SimulatedLatencySeconds = latencySeconds;
@@ -770,7 +898,7 @@ protected void SetTimeTravelSimulatedLatency(float latencySeconds)
 
         protected void SetTimeTravelSimulatedDropRate(float dropRatePercent)
         {
-            ((MockTransport)m_ServerNetworkManager.NetworkConfig.NetworkTransport).PacketDropRate = dropRatePercent;
+            ((MockTransport)GetAuthorityNetworkManager().NetworkConfig.NetworkTransport).PacketDropRate = dropRatePercent;
             foreach (var client in m_ClientNetworkManagers)
             {
                 ((MockTransport)client.NetworkConfig.NetworkTransport).PacketDropRate = dropRatePercent;
@@ -779,67 +907,13 @@ protected void SetTimeTravelSimulatedDropRate(float dropRatePercent)
 
         protected void SetTimeTravelSimulatedLatencyJitter(float jitterSeconds)
         {
-            ((MockTransport)m_ServerNetworkManager.NetworkConfig.NetworkTransport).LatencyJitter = jitterSeconds;
+            ((MockTransport)GetAuthorityNetworkManager().NetworkConfig.NetworkTransport).LatencyJitter = jitterSeconds;
             foreach (var client in m_ClientNetworkManagers)
             {
                 ((MockTransport)client.NetworkConfig.NetworkTransport).LatencyJitter = jitterSeconds;
             }
         }
 
-        /// 
-        /// Creates the server and clients
-        /// 
-        /// The number of client instances to create
-        protected void CreateServerAndClients(int numberOfClients)
-        {
-            VerboseDebug($"Entering {nameof(CreateServerAndClients)}");
-
-            CreatePlayerPrefab();
-
-            if (m_EnableTimeTravel)
-            {
-                m_TargetFrameRate = -1;
-            }
-
-            // Add an extra session owner client when using the cmb service
-            if (m_UseCmbService)
-            {
-                numberOfClients += 1;
-            }
-
-            // Create multiple NetworkManager instances
-            if (!NetcodeIntegrationTestHelpers.Create(numberOfClients, out NetworkManager server, out NetworkManager[] clients, m_TargetFrameRate, m_CreateServerFirst, m_EnableTimeTravel, m_UseCmbService))
-            {
-                Debug.LogError("Failed to create instances");
-                Assert.Fail("Failed to create instances");
-            }
-
-            m_ClientNetworkManagers = clients;
-            m_ServerNetworkManager = server;
-
-            var managers = clients.ToList();
-            if (!m_UseCmbService)
-            {
-                managers.Insert(0, m_ServerNetworkManager);
-            }
-            m_NetworkManagers = managers.ToArray();
-
-            s_DefaultWaitForTick = new WaitForSecondsRealtime(1.0f / m_ServerNetworkManager.NetworkConfig.TickRate);
-
-            // Set the player prefab for the server and clients
-            foreach (var manager in m_NetworkManagers)
-            {
-                manager.NetworkConfig.PlayerPrefab = m_PlayerPrefab;
-                SetDistributedAuthorityProperties(manager);
-            }
-
-            // Provides opportunity to allow child derived classes to
-            // modify the NetworkManager's configuration before starting.
-            OnServerAndClientsCreated();
-
-            VerboseDebug($"Exiting {nameof(CreateServerAndClients)}");
-        }
-
         /// 
         /// Override this method and return false in order to be able
         /// to manually control when the server and clients are started.
@@ -894,13 +968,8 @@ private void ClientNetworkManagerPostStart(NetworkManager networkManager)
                 m_PlayerNetworkObjects.Add(networkManager.LocalClientId, new Dictionary());
             }
 
-#if UNITY_2023_1_OR_NEWER
             // Get all player instances for the current client NetworkManager instance
             var clientPlayerClones = Object.FindObjectsByType(FindObjectsSortMode.None).Where((c) => c.IsPlayerObject && c.OwnerClientId == networkManager.LocalClientId).ToList();
-#else
-            // Get all player instances for the current client NetworkManager instance
-            var clientPlayerClones = Object.FindObjectsOfType().Where((c) => c.IsPlayerObject && c.OwnerClientId == networkManager.LocalClientId).ToList();
-#endif
             // Add this player instance to each client player entry
             foreach (var playerNetworkObject in clientPlayerClones)
             {
@@ -915,13 +984,8 @@ private void ClientNetworkManagerPostStart(NetworkManager networkManager)
                     m_PlayerNetworkObjects[playerNetworkObject.NetworkManager.LocalClientId].Add(networkManager.LocalClientId, playerNetworkObject);
                 }
             }
-#if UNITY_2023_1_OR_NEWER
             // For late joining clients, add the remaining (if any) cloned versions of each client's player
             clientPlayerClones = Object.FindObjectsByType(FindObjectsSortMode.None).Where((c) => c.IsPlayerObject && c.NetworkManager == networkManager).ToList();
-#else
-            // For late joining clients, add the remaining (if any) cloned versions of each client's player
-            clientPlayerClones = Object.FindObjectsOfType().Where((c) => c.IsPlayerObject && c.NetworkManager == networkManager).ToList();
-#endif
             foreach (var playerNetworkObject in clientPlayerClones)
             {
                 if (!m_PlayerNetworkObjects[networkManager.LocalClientId].ContainsKey(playerNetworkObject.OwnerClientId))
@@ -942,11 +1006,7 @@ protected void ClientNetworkManagerPostStartInit()
 
             if (m_UseHost)
             {
-#if UNITY_2023_1_OR_NEWER
-                var clientSideServerPlayerClones = Object.FindObjectsByType(FindObjectsSortMode.None).Where((c) => c.IsPlayerObject && c.OwnerClientId == m_ServerNetworkManager.LocalClientId);
-#else
-                var clientSideServerPlayerClones = Object.FindObjectsOfType().Where((c) => c.IsPlayerObject && c.OwnerClientId == m_ServerNetworkManager.LocalClientId);
-#endif
+                var clientSideServerPlayerClones = Object.FindObjectsByType(FindObjectsSortMode.None).Where((c) => c.IsPlayerObject && c.OwnerClientId == NetworkManager.ServerClientId);
                 foreach (var playerNetworkObject in clientSideServerPlayerClones)
                 {
                     // When the server is not the host this needs to be done
@@ -955,9 +1015,9 @@ protected void ClientNetworkManagerPostStartInit()
                         m_PlayerNetworkObjects.Add(playerNetworkObject.NetworkManager.LocalClientId, new Dictionary());
                     }
 
-                    if (!m_PlayerNetworkObjects[playerNetworkObject.NetworkManager.LocalClientId].ContainsKey(m_ServerNetworkManager.LocalClientId))
+                    if (!m_PlayerNetworkObjects[playerNetworkObject.NetworkManager.LocalClientId].ContainsKey(NetworkManager.ServerClientId))
                     {
-                        m_PlayerNetworkObjects[playerNetworkObject.NetworkManager.LocalClientId].Add(m_ServerNetworkManager.LocalClientId, playerNetworkObject);
+                        m_PlayerNetworkObjects[playerNetworkObject.NetworkManager.LocalClientId].Add(NetworkManager.ServerClientId, playerNetworkObject);
                     }
                 }
             }
@@ -970,6 +1030,22 @@ protected virtual bool ShouldCheckForSpawnedPlayers()
             return true;
         }
 
+        /// 
+        /// Starts the session owner and awaits for it to connect before starting the remaining clients.
+        /// 
+        /// 
+        /// DANGO-TODO: Renove this when the Rust server connection sequence is fixed and we don't have to pre-start
+        /// the session owner.
+        /// 
+        private IEnumerator StartSessionOwner()
+        {
+            VerboseDebug("Starting session owner...");
+            NetcodeIntegrationTestHelpers.StartOneClient(m_ClientNetworkManagers[0]);
+            yield return WaitForConditionOrTimeOut(() => m_ClientNetworkManagers[0].IsConnectedClient);
+            AssertOnTimeout($"Timed out waiting for the session owner to connect to CMB Server!");
+            Assert.True(m_ClientNetworkManagers[0].LocalClient.IsSessionOwner, $"Client-{m_ClientNetworkManagers[0].LocalClientId} started session but was not set to be the session owner!");
+            VerboseDebug("Session owner connected and approved.");
+        }
 
         /// 
         /// This starts the server and clients as long as 
@@ -981,19 +1057,25 @@ protected IEnumerator StartServerAndClients()
             {
                 VerboseDebug($"Entering {nameof(StartServerAndClients)}");
 
+                // DANGO-TODO: Renove this when the Rust server connection sequence is fixed and we don't have to pre-start
+                // the session owner.
+                if (m_UseCmbService)
+                {
+                    VerboseDebug("Using a distributed authority CMB Server for connection.");
+                    yield return StartSessionOwner();
+                }
+
                 // Start the instances and pass in our SceneManagerInitialization action that is invoked immediately after host-server
                 // is started and after each client is started.
-
-                // When using the CMBService, we don't have a server, so get the appropriate authority network manager
-                var authorityManager = GetAuthorityNetworkManager();
-
-                VerboseDebug($"Starting with useCmbService: {m_UseCmbService}");
                 if (!NetcodeIntegrationTestHelpers.Start(m_UseHost, !m_UseCmbService, m_ServerNetworkManager, m_ClientNetworkManagers))
                 {
                     Debug.LogError("Failed to start instances");
                     Assert.Fail("Failed to start instances");
                 }
 
+                // Get the authority NetworkMananger (Server, Host, or Session Owner)
+                var authorityManager = GetAuthorityNetworkManager();
+
                 // When scene management is enabled, we need to re-apply the scenes populated list since we have overriden the ISceneManagerHandler
                 // imeplementation at this point. This assures any pre-loaded scenes will be automatically assigned to the server and force clients
                 // to load their own scenes.
@@ -1021,15 +1103,10 @@ protected IEnumerator StartServerAndClients()
 
                     AssertOnTimeout($"{nameof(StartServerAndClients)} timed out waiting for all clients to be connected!\n {m_InternalErrorLog}");
 
-                    if (m_UseHost || m_ServerNetworkManager.IsHost)
+                    if (m_UseHost || authorityManager.IsHost)
                     {
-#if UNITY_2023_1_OR_NEWER
                         // Add the server player instance to all m_ClientSidePlayerNetworkObjects entries
                         var serverPlayerClones = Object.FindObjectsByType(FindObjectsSortMode.None).Where((c) => c.IsPlayerObject && c.OwnerClientId == authorityManager.LocalClientId);
-#else
-                        // Add the server player instance to all m_ClientSidePlayerNetworkObjects entries
-                        var serverPlayerClones = Object.FindObjectsOfType().Where((c) => c.IsPlayerObject && c.OwnerClientId == authorityManager.LocalClientId);
-#endif
                         foreach (var playerNetworkObject in serverPlayerClones)
                         {
                             if (!m_PlayerNetworkObjects.ContainsKey(playerNetworkObject.NetworkManager.LocalClientId))
@@ -1039,10 +1116,12 @@ protected IEnumerator StartServerAndClients()
 
                             if (!m_UseCmbService)
                             {
-                                m_PlayerNetworkObjects[playerNetworkObject.NetworkManager.LocalClientId].Add(m_ServerNetworkManager.LocalClientId, playerNetworkObject);
+                                m_PlayerNetworkObjects[playerNetworkObject.NetworkManager.LocalClientId].Add(authorityManager.LocalClientId, playerNetworkObject);
                             }
                         }
                     }
+
+                    // With distributed authority, we check that all players have spawned on all NetworkManager instances
                     if (m_DistributedAuthority)
                     {
                         foreach (var networkManager in m_NetworkManagers)
@@ -1052,8 +1131,10 @@ protected IEnumerator StartServerAndClients()
                         }
                     }
 
-                    if (ShouldCheckForSpawnedPlayers())
+                    // Client-Server or DAHost
+                    if (ShouldCheckForSpawnedPlayers() && !m_UseCmbService)
                     {
+                        // Check for players being spawned on server instance
                         ClientNetworkManagerPostStartInit();
                     }
 
@@ -1111,7 +1192,7 @@ protected void StartServerAndClientsWithTimeTravel()
 
                     AssertOnTimeout($"{nameof(StartServerAndClients)} timed out waiting for all clients to be connected!");
 
-                    if (m_UseHost || m_ServerNetworkManager.IsHost)
+                    if (m_UseHost || authorityManager.IsHost)
                     {
 #if UNITY_2023_1_OR_NEWER
                         // Add the server player instance to all m_ClientSidePlayerNetworkObjects entries
@@ -1129,7 +1210,7 @@ protected void StartServerAndClientsWithTimeTravel()
 
                             if (!m_UseCmbService)
                             {
-                                m_PlayerNetworkObjects[playerNetworkObject.NetworkManager.LocalClientId].Add(m_ServerNetworkManager.LocalClientId, playerNetworkObject);
+                                m_PlayerNetworkObjects[playerNetworkObject.NetworkManager.LocalClientId].Add(authorityManager.LocalClientId, playerNetworkObject);
                             }
                         }
                     }
@@ -1357,9 +1438,11 @@ private void DestroyNetworkManagers()
             var networkManagers = Object.FindObjectsByType(FindObjectsSortMode.None);
             foreach (var networkManager in networkManagers)
             {
-
                 Object.DestroyImmediate(networkManager.gameObject);
             }
+            m_NetworkManagers = null;
+            m_ClientNetworkManagers = null;
+            m_ServerNetworkManager = null;
         }
 
         /// 
@@ -1396,6 +1479,8 @@ public void OneTimeTearDown()
 #endif
 
             IsRunning = false;
+            m_UseCmbServiceEnvString = null;
+            m_UseCmbServiceEnv = false;
         }
 
         /// 
@@ -1449,10 +1534,9 @@ protected void DestroySceneNetworkObjects()
         /// 
         protected void EnableMessageLogging()
         {
-            m_ServerNetworkManager.ConnectionManager.MessageManager.Hook(new DebugNetworkHooks());
-            foreach (var client in m_ClientNetworkManagers)
+            foreach (var networkManager in m_NetworkManagers)
             {
-                client.ConnectionManager.MessageManager.Hook(new DebugNetworkHooks());
+                networkManager.ConnectionManager.MessageManager.Hook(new DebugNetworkHooks());
             }
         }
 
@@ -1610,13 +1694,12 @@ private bool CheckClientsConnected(NetworkManager[] clientsToCheck)
             }
 
             var manager = GetAuthorityNetworkManager();
-            var expectedCount = manager.IsHost ? clientsToCheck.Length + 1 : clientsToCheck.Length;
             var currentCount = manager.ConnectedClients.Count;
 
-            if (currentCount != expectedCount)
+            if (currentCount != TotalClients)
             {
                 allClientsConnected = false;
-                m_InternalErrorLog.AppendLine($"[Server-Side] Expected {expectedCount} clients to connect but only {currentCount} connected!");
+                m_InternalErrorLog.AppendLine($"[Server-Side] Expected {TotalClients} clients to connect but only {currentCount} connected!");
             }
 
             return allClientsConnected;
@@ -1632,10 +1715,11 @@ private bool CheckClientsConnected(NetworkManager[] clientsToCheck)
         protected bool WaitForClientsConnectedOrTimeOutWithTimeTravel(NetworkManager[] clientsToCheck)
         {
             var remoteClientCount = clientsToCheck.Length;
-            var serverClientCount = m_ServerNetworkManager.IsHost ? remoteClientCount + 1 : remoteClientCount;
+            var authorityNetworkManager = GetAuthorityNetworkManager();
+            var authorityClientCount = authorityNetworkManager.IsHost ? remoteClientCount + 1 : remoteClientCount;
 
             return WaitForConditionOrTimeOutWithTimeTravel(() => clientsToCheck.Where((c) => c.IsConnectedClient).Count() == remoteClientCount &&
-                                                                 m_ServerNetworkManager.ConnectedClients.Count == serverClientCount);
+                                                                 authorityNetworkManager.ConnectedClients.Count == authorityClientCount);
         }
 
         /// 
@@ -1746,9 +1830,10 @@ protected GameObject CreateNetworkObjectPrefab(string baseName)
         {
             var prefabCreateAssertError = $"You can only invoke this method during {nameof(OnServerAndClientsCreated)} " +
                                           $"but before {nameof(OnStartedServerAndClients)}!";
-            Assert.IsNotNull(m_ServerNetworkManager, prefabCreateAssertError);
-            Assert.IsFalse(m_ServerNetworkManager.IsListening, prefabCreateAssertError);
-            var prefabObject = NetcodeIntegrationTestHelpers.CreateNetworkObjectPrefab(baseName, m_ServerNetworkManager, m_ClientNetworkManagers);
+            var authorityNetworkManager = GetAuthorityNetworkManager();
+            Assert.IsNotNull(authorityNetworkManager, prefabCreateAssertError);
+            Assert.IsFalse(authorityNetworkManager.IsListening, prefabCreateAssertError);
+            var prefabObject = NetcodeIntegrationTestHelpers.CreateNetworkObjectPrefab(baseName, authorityNetworkManager, m_ClientNetworkManagers);
             // DANGO-TODO: Ownership flags could require us to change this
             // For testing purposes, we default to true for the distribute ownership property when in a distirbuted authority network topology.
             prefabObject.GetComponent().Ownership |= NetworkObject.OwnershipStatus.Distributable;
@@ -1908,22 +1993,28 @@ public NetcodeIntegrationTest(HostOrServer hostOrServer)
 
         private void InitializeTestConfiguration(NetworkTopologyTypes networkTopologyType, HostOrServer? hostOrServer)
         {
-            if (!hostOrServer.HasValue)
-            {
-                // Always default to hosting, set the type of host based on the topology type
-                hostOrServer = networkTopologyType == NetworkTopologyTypes.DistributedAuthority ? HostOrServer.DAHost : HostOrServer.Host;
-            }
-
             NetworkMessageManager.EnableMessageOrderConsoleLog = false;
 
+            // Set m_NetworkTopologyType first because m_DistributedAuthority is calculated from it.
             m_NetworkTopologyType = networkTopologyType;
-            m_DistributedAuthority = m_NetworkTopologyType == NetworkTopologyTypes.DistributedAuthority;
-            m_UseHost = hostOrServer == HostOrServer.Host || hostOrServer == HostOrServer.DAHost;
 
-            if (UseCMBService())
+            if (!hostOrServer.HasValue)
             {
-                m_UseCmbService = m_DistributedAuthority && hostOrServer == HostOrServer.DAHost;
+                // Always default to hosting, set the type of host based on the topology type.
+                // Note: For m_DistributedAuthority to be true, the m_NetworkTopologyType must be set to NetworkTopologyTypes.DistributedAuthority
+                hostOrServer = m_DistributedAuthority ? HostOrServer.DAHost : HostOrServer.Host;
+            }
+            m_UseHost = hostOrServer == HostOrServer.Host || hostOrServer == HostOrServer.DAHost;
 
+            // If we are using a distributed authority network topology and the environment variable
+            // to use the CMBService is set, then perform the m_UseCmbService check.
+            if (m_DistributedAuthority && GetServiceEnvironmentVariable())
+            {
+                m_UseCmbService = hostOrServer == HostOrServer.DAHost;
+                // In the event UseCMBService is overridden, we apply the value returned.
+                // If it is, then whatever UseCMBService returns is the setting for m_UseCmbService.
+                // If it is not, then it will return whatever m_UseCmbService's setting is from the above check.
+                m_UseCmbService = UseCMBService();
             }
         }
 
diff --git a/com.unity.netcode.gameobjects/TestHelpers/Runtime/NetcodeIntegrationTestHelpers.cs b/com.unity.netcode.gameobjects/TestHelpers/Runtime/NetcodeIntegrationTestHelpers.cs
index 579e62b1c4..331a345d22 100644
--- a/com.unity.netcode.gameobjects/TestHelpers/Runtime/NetcodeIntegrationTestHelpers.cs
+++ b/com.unity.netcode.gameobjects/TestHelpers/Runtime/NetcodeIntegrationTestHelpers.cs
@@ -21,6 +21,7 @@ public static class NetcodeIntegrationTestHelpers
         private static List s_NetworkManagerInstances = new List();
         private static Dictionary s_Hooks = new Dictionary();
         private static bool s_IsStarted;
+        internal static bool IsStarted => s_IsStarted;
         private static int s_ClientCount;
         private static int s_OriginalTargetFrameRate = -1;
 
@@ -171,6 +172,31 @@ public static void RegisterHandlers(NetworkManager networkManager, bool serverSi
             }
         }
 
+        /// 
+        /// Gets the CMB_SERVICE environemnt variable or returns "false" if it does not exist
+        /// 
+        /// string
+        internal static string GetCMBServiceEnvironentVariable()
+        {
+#if USE_CMB_SERVICE
+            return "true";
+#else
+            return Environment.GetEnvironmentVariable("USE_CMB_SERVICE") ?? "false";
+#endif
+        }
+
+        /// 
+        /// Use for non  derived integration tests to automatically ignore the
+        /// test if running against a CMB server.
+        /// 
+        internal static void IgnoreIfServiceEnviromentVariableSet()
+        {
+            if (bool.TryParse(GetCMBServiceEnvironentVariable(), out bool isTrue) ? isTrue : false)
+            {
+                Assert.Ignore("[CMB-Server Test Run] Skipping non-distributed authority test.");
+            }
+        }
+
         private static readonly string k_TransportHost = GetAddressToBind();
         private static readonly ushort k_TransportPort = GetPortToBind();
 
@@ -265,16 +291,18 @@ public static bool Create(int clientCount, out NetworkManager server, out Networ
         {
             s_NetworkManagerInstances = new List();
             server = null;
-            if (serverFirst)
+            // Only if we are not connecting to a CMB server
+            if (serverFirst && !useCmbService)
             {
-                server = CreateServer(useMockTransport || useCmbService);
+                server = CreateServer(useMockTransport);
             }
 
             CreateNewClients(clientCount, out clients, useMockTransport, useCmbService);
 
-            if (!serverFirst)
+            // Only if we are not connecting to a CMB server
+            if (!serverFirst && !useCmbService)
             {
-                server = CreateServer(useMockTransport || useCmbService);
+                server = CreateServer(useMockTransport);
             }
 
             s_OriginalTargetFrameRate = Application.targetFrameRate;
@@ -312,10 +340,13 @@ internal static NetworkManager CreateNewClient(int identifier, bool mockTranspor
         public static bool CreateNewClients(int clientCount, out NetworkManager[] clients, bool useMockTransport = false, bool useCmbService = false)
         {
             clients = new NetworkManager[clientCount];
+            // Pre-identify NetworkManager identifiers based on network topology type (Rust server starts at client identifier 1 and considers itself 0)
+            var startCount = useCmbService ? 1 : 0;
             for (int i = 0; i < clientCount; i++)
             {
                 // Create networkManager component
-                clients[i] = CreateNewClient(i, useMockTransport, useCmbService);
+                clients[i] = CreateNewClient(startCount, useMockTransport, useCmbService);
+                startCount++;
             }
 
             NetworkManagerInstances.AddRange(clients);
@@ -531,6 +562,20 @@ public static bool Start(bool host, NetworkManager server, NetworkManager[] clie
 
             foreach (var client in clients)
             {
+                // DANGO-TODO: Renove this entire check when the Rust server connection sequence is fixed and we don't have to pre-start
+                // the session owner.
+                if (client.IsConnectedClient)
+                {
+                    // Skip starting the session owner
+                    if (client.DistributedAuthorityMode && client.CMBServiceConnection && client.LocalClient.IsSessionOwner)
+                    {
+                        continue;
+                    }
+                    else
+                    {
+                        throw new Exception("Client NetworkManager is already connected when starting clients!");
+                    }
+                }
                 client.StartClient();
                 hooks = new MultiInstanceHooks();
                 client.ConnectionManager.MessageManager.Hook(hooks);
@@ -627,26 +672,37 @@ internal static GameObject CreateNetworkObject(string baseName, NetworkManager o
             return gameObject;
         }
 
-        public static GameObject CreateNetworkObjectPrefab(string baseName, NetworkManager server, params NetworkManager[] clients)
+        /// 
+        /// This will create and register a  instance for all  instances.
+        /// *** Invoke this method before starting any of the  instances ***.
+        /// 
+        /// 
+        /// When using a  network topology, the authority 
+        /// can be within the clients array of  instances.
+        /// 
+        /// The base name of the network prefab. Keep it short as additional information will be added to this name.
+        /// The authority  (i.e. server, host, or session owner)
+        /// The clients that should also have this  instance added to their network prefab list.
+        /// The prefab's root 
+        public static GameObject CreateNetworkObjectPrefab(string baseName, NetworkManager authorityNetworkManager, params NetworkManager[] clients)
         {
-            void AddNetworkPrefab(NetworkConfig config, NetworkPrefab prefab)
-            {
-                config.Prefabs.Add(prefab);
-            }
-
             var prefabCreateAssertError = $"You can only invoke this method before starting the network manager(s)!";
-            Assert.IsNotNull(server, prefabCreateAssertError);
-            Assert.IsFalse(server.IsListening, prefabCreateAssertError);
+            Assert.IsNotNull(authorityNetworkManager, prefabCreateAssertError);
+            Assert.IsFalse(authorityNetworkManager.IsListening, prefabCreateAssertError);
 
-            var gameObject = CreateNetworkObject(baseName, server);
+            var gameObject = CreateNetworkObject(baseName, authorityNetworkManager);
             var networkPrefab = new NetworkPrefab() { Prefab = gameObject };
 
             // We could refactor this test framework to share a NetworkPrefabList instance, but at this point it's
             // probably more trouble than it's worth to verify these lists stay in sync across all tests...
-            AddNetworkPrefab(server.NetworkConfig, networkPrefab);
+            authorityNetworkManager.NetworkConfig.Prefabs.Add(networkPrefab);
             foreach (var clientNetworkManager in clients)
             {
-                AddNetworkPrefab(clientNetworkManager.NetworkConfig, networkPrefab);
+                if (clientNetworkManager == authorityNetworkManager)
+                {
+                    continue;
+                }
+                clientNetworkManager.NetworkConfig.Prefabs.Add(new NetworkPrefab() { Prefab = gameObject });
             }
             return gameObject;
         }
diff --git a/com.unity.netcode.gameobjects/Tests/Runtime/ClientOnlyConnectionTests.cs b/com.unity.netcode.gameobjects/Tests/Runtime/ClientOnlyConnectionTests.cs
index dbd97fae53..c8677bed40 100644
--- a/com.unity.netcode.gameobjects/Tests/Runtime/ClientOnlyConnectionTests.cs
+++ b/com.unity.netcode.gameobjects/Tests/Runtime/ClientOnlyConnectionTests.cs
@@ -15,6 +15,13 @@ internal class ClientOnlyConnectionTests
         private bool m_WasDisconnected;
         private TimeoutHelper m_TimeoutHelper;
 
+        [OneTimeSetUp]
+        public void OneTimeSetup()
+        {
+            // TODO: [CmbServiceTests] if this test is deemed needed to test against the CMB server then update this test.
+            NetcodeIntegrationTestHelpers.IgnoreIfServiceEnviromentVariableSet();
+        }
+
         [SetUp]
         public void Setup()
         {
diff --git a/com.unity.netcode.gameobjects/Tests/Runtime/DistributedAuthority/DistributeObjectsTests.cs b/com.unity.netcode.gameobjects/Tests/Runtime/DistributedAuthority/DistributeObjectsTests.cs
index 087156dfed..345f4ba86f 100644
--- a/com.unity.netcode.gameobjects/Tests/Runtime/DistributedAuthority/DistributeObjectsTests.cs
+++ b/com.unity.netcode.gameobjects/Tests/Runtime/DistributedAuthority/DistributeObjectsTests.cs
@@ -161,6 +161,11 @@ private bool ValidateOwnershipTablesMatch()
                 {
                     foreach (var client in clients)
                     {
+                        if (!DistributeObjectsTestHelper.DistributedObjects.ContainsKey(client))
+                        {
+                            m_ErrorLog.AppendLine($"[Client-{client}] Does not have an entry in the root of the {nameof(DistributeObjectsTestHelper.DistributedObjects)} table!");
+                            return false;
+                        }
                         var clientOwnerTable = DistributeObjectsTestHelper.DistributedObjects[client];
                         if (!clientOwnerTable.ContainsKey(hostClientEntry.Key))
                         {
diff --git a/com.unity.netcode.gameobjects/Tests/Runtime/DistributedAuthority/DistributedAuthorityCodecTests.cs b/com.unity.netcode.gameobjects/Tests/Runtime/DistributedAuthority/DistributedAuthorityCodecTests.cs
index af69df9aa8..3714f4a6d0 100644
--- a/com.unity.netcode.gameobjects/Tests/Runtime/DistributedAuthority/DistributedAuthorityCodecTests.cs
+++ b/com.unity.netcode.gameobjects/Tests/Runtime/DistributedAuthority/DistributedAuthorityCodecTests.cs
@@ -30,7 +30,7 @@ namespace Unity.Netcode.RuntimeTests
     /// 
     internal class DistributedAuthorityCodecTests : NetcodeIntegrationTest
     {
-        protected override int NumberOfClients => 1;
+        protected override int NumberOfClients => 0;
 
         // Use the CMB Service for all tests
         protected override bool UseCMBService() => true;
@@ -39,7 +39,7 @@ internal class DistributedAuthorityCodecTests : NetcodeIntegrationTest
         protected override NetworkTopologyTypes OnGetNetworkTopologyType() => NetworkTopologyTypes.DistributedAuthority;
 
         private CodecTestHooks m_ClientCodecHook;
-        private NetworkManager Client => m_ClientNetworkManagers[0];
+        private NetworkManager m_Client;
 
         private string m_TransportHost = Environment.GetEnvironmentVariable("NGO_HOST") ?? "127.0.0.1";
         private static readonly ushort k_TransportPort = GetPortToBind();
@@ -100,48 +100,48 @@ protected override void OnCreatePlayerPrefab()
         /// 
         protected override void OnServerAndClientsCreated()
         {
-            var utpTransport = Client.gameObject.AddComponent();
-            Client.NetworkConfig.NetworkTransport = utpTransport;
-            Client.NetworkConfig.EnableSceneManagement = false;
-            Client.NetworkConfig.AutoSpawnPlayerPrefabClientSide = true;
+            m_Client = GetAuthorityNetworkManager();
+
+            var utpTransport = m_Client.gameObject.AddComponent();
+            m_Client.NetworkConfig.NetworkTransport = utpTransport;
+            m_Client.NetworkConfig.EnableSceneManagement = false;
+            m_Client.NetworkConfig.AutoSpawnPlayerPrefabClientSide = true;
             utpTransport.ConnectionData.Address = Dns.GetHostAddresses(m_TransportHost).First().ToString();
             utpTransport.ConnectionData.Port = k_TransportPort;
-            Client.LogLevel = LogLevel.Developer;
+            m_Client.LogLevel = LogLevel.Developer;
 
             // Validate we are in distributed authority mode with client side spawning and using CMB Service
-            Assert.True(Client.NetworkConfig.NetworkTopology == NetworkTopologyTypes.DistributedAuthority, "Distributed authority topology is not set!");
-            Assert.True(Client.AutoSpawnPlayerPrefabClientSide, "Client side spawning is not set!");
-            Assert.True(Client.CMBServiceConnection, "CMBServiceConnection is not set!");
+            Assert.True(m_Client.NetworkConfig.NetworkTopology == NetworkTopologyTypes.DistributedAuthority, "Distributed authority topology is not set!");
+            Assert.True(m_Client.AutoSpawnPlayerPrefabClientSide, "Client side spawning is not set!");
+            Assert.True(m_Client.CMBServiceConnection, "CMBServiceConnection is not set!");
 
             // Create a prefab for creating and destroying tests (auto-registers with NetworkManagers)
             m_SpawnObject = CreateNetworkObjectPrefab("TestObject");
             m_SpawnObject.AddComponent();
-
-            // Ignore the client connection timeout after starting the client
-            m_BypassConnectionTimeout = true;
         }
 
         protected override IEnumerator OnStartedServerAndClients()
         {
             // Validate the NetworkManager are in distributed authority mode
-            Assert.True(Client.DistributedAuthorityMode, "Distributed authority is not set!");
+            Assert.True(m_Client.DistributedAuthorityMode, "Distributed authority is not set!");
 
-            // Register hooks after starting clients and server (in this case just the one client)
-            // We do this at this point in time because the MessageManager exists (happens within the same call stack when starting NetworkManagers)
-            m_ClientCodecHook = new CodecTestHooks();
-            Client.MessageManager.Hook(m_ClientCodecHook);
             yield return base.OnStartedServerAndClients();
 
             // wait for client to connect since m_BypassConnectionTimeout
-            yield return WaitForConditionOrTimeOut(() => Client.LocalClient.PlayerObject != null);
+            yield return WaitForConditionOrTimeOut(() => m_Client.LocalClient.PlayerObject != null);
             AssertOnTimeout($"Timed out waiting for the client's player to be spanwed!");
+
+            // Register hooks after starting clients and server (in this case just the one client)
+            // We do this at this after all the setup has finished in order to ensure our hooks are only catching messages from the tests
+            m_ClientCodecHook = new CodecTestHooks();
+            m_Client.MessageManager.Hook(m_ClientCodecHook);
         }
 
         [UnityTest]
         public IEnumerator AuthorityRpc()
         {
-            var player = Client.LocalClient.PlayerObject;
-            player.OwnerClientId = Client.LocalClientId + 1;
+            var player = m_Client.LocalClient.PlayerObject;
+            player.OwnerClientId = m_Client.LocalClientId + 1;
 
             var networkComponent = player.GetComponent();
             networkComponent.UpdateNetworkProperties();
@@ -189,14 +189,14 @@ public IEnumerator ClientDisconnected()
         [UnityTest]
         public IEnumerator CreateObject()
         {
-            SpawnObject(m_SpawnObject, Client);
+            SpawnObject(m_SpawnObject, m_Client);
             yield return m_ClientCodecHook.WaitForMessageReceived();
         }
 
         [UnityTest]
         public IEnumerator DestroyObject()
         {
-            var spawnedObject = SpawnObject(m_SpawnObject, Client);
+            var spawnedObject = SpawnObject(m_SpawnObject, m_Client);
             yield return m_ClientCodecHook.WaitForMessageReceived();
             spawnedObject.GetComponent().Despawn();
             yield return m_ClientCodecHook.WaitForMessageReceived();
@@ -231,10 +231,10 @@ public IEnumerator NamedMessage()
         [UnityTest]
         public IEnumerator NetworkVariableDelta()
         {
-            var component = Client.LocalClient.PlayerObject.GetComponent();
+            var component = m_Client.LocalClient.PlayerObject.GetComponent();
             var message = new NetworkVariableDeltaMessage
             {
-                NetworkObjectId = Client.LocalClient.PlayerObject.NetworkObjectId,
+                NetworkObjectId = m_Client.LocalClient.PlayerObject.NetworkObjectId,
                 NetworkBehaviourIndex = component.NetworkBehaviourId,
                 DeliveryMappedNetworkVariableIndex = new HashSet { 0, 1 },
                 TargetClientId = 5,
@@ -247,9 +247,7 @@ public IEnumerator NetworkVariableDelta()
         [UnityTest]
         public IEnumerator NetworkVariableDelta_WithValueUpdate()
         {
-            var networkObj = CreateNetworkObjectPrefab("TestObject");
-            networkObj.AddComponent();
-            var instance = SpawnObject(networkObj, Client);
+            var instance = SpawnObject(m_SpawnObject, m_Client);
             yield return m_ClientCodecHook.WaitForMessageReceived();
             var component = instance.GetComponent();
 
@@ -262,9 +260,7 @@ public IEnumerator NetworkVariableDelta_WithValueUpdate()
         [UnityTest]
         public IEnumerator NetworkListDelta_WithValueUpdate()
         {
-            var networkObj = CreateNetworkObjectPrefab("TestObject");
-            networkObj.AddComponent();
-            var instance = SpawnObject(networkObj, Client);
+            var instance = SpawnObject(m_SpawnObject, m_Client);
             yield return m_ClientCodecHook.WaitForMessageReceived();
             var component = instance.GetComponent();
 
@@ -341,8 +337,8 @@ public IEnumerator UnnamedMessage()
         [UnityTest]
         public IEnumerator SceneEventMessageLoad()
         {
-            Client.SceneManager.SkipSceneHandling = true;
-            var eventData = new SceneEventData(Client)
+            m_Client.SceneManager.SkipSceneHandling = true;
+            var eventData = new SceneEventData(m_Client)
             {
                 SceneEventType = SceneEventType.Load,
                 LoadSceneMode = LoadSceneMode.Single,
@@ -361,14 +357,14 @@ public IEnumerator SceneEventMessageLoad()
         [UnityTest]
         public IEnumerator SceneEventMessageLoadWithObjects()
         {
-            Client.SceneManager.SkipSceneHandling = true;
+            m_Client.SceneManager.SkipSceneHandling = true;
             var prefabNetworkObject = m_SpawnObject.GetComponent();
 
-            Client.SceneManager.ScenePlacedObjects.Add(0, new Dictionary()
+            m_Client.SceneManager.ScenePlacedObjects.Add(0, new Dictionary()
             {
                 { 1, prefabNetworkObject }
             });
-            var eventData = new SceneEventData(Client)
+            var eventData = new SceneEventData(m_Client)
             {
                 SceneEventType = SceneEventType.Load,
                 LoadSceneMode = LoadSceneMode.Single,
@@ -387,8 +383,8 @@ public IEnumerator SceneEventMessageLoadWithObjects()
         [UnityTest]
         public IEnumerator SceneEventMessageUnload()
         {
-            Client.SceneManager.SkipSceneHandling = true;
-            var eventData = new SceneEventData(Client)
+            m_Client.SceneManager.SkipSceneHandling = true;
+            var eventData = new SceneEventData(m_Client)
             {
                 SceneEventType = SceneEventType.Unload,
                 LoadSceneMode = LoadSceneMode.Single,
@@ -407,8 +403,8 @@ public IEnumerator SceneEventMessageUnload()
         [UnityTest]
         public IEnumerator SceneEventMessageLoadComplete()
         {
-            Client.SceneManager.SkipSceneHandling = true;
-            var eventData = new SceneEventData(Client)
+            m_Client.SceneManager.SkipSceneHandling = true;
+            var eventData = new SceneEventData(m_Client)
             {
                 SceneEventType = SceneEventType.LoadComplete,
                 LoadSceneMode = LoadSceneMode.Single,
@@ -427,8 +423,8 @@ public IEnumerator SceneEventMessageLoadComplete()
         [UnityTest]
         public IEnumerator SceneEventMessageUnloadComplete()
         {
-            Client.SceneManager.SkipSceneHandling = true;
-            var eventData = new SceneEventData(Client)
+            m_Client.SceneManager.SkipSceneHandling = true;
+            var eventData = new SceneEventData(m_Client)
             {
                 SceneEventType = SceneEventType.UnloadComplete,
                 LoadSceneMode = LoadSceneMode.Single,
@@ -447,8 +443,8 @@ public IEnumerator SceneEventMessageUnloadComplete()
         [UnityTest]
         public IEnumerator SceneEventMessageLoadCompleted()
         {
-            Client.SceneManager.SkipSceneHandling = true;
-            var eventData = new SceneEventData(Client)
+            m_Client.SceneManager.SkipSceneHandling = true;
+            var eventData = new SceneEventData(m_Client)
             {
                 SceneEventType = SceneEventType.LoadEventCompleted,
                 LoadSceneMode = LoadSceneMode.Single,
@@ -469,8 +465,8 @@ public IEnumerator SceneEventMessageLoadCompleted()
         [UnityTest]
         public IEnumerator SceneEventMessageUnloadLoadCompleted()
         {
-            Client.SceneManager.SkipSceneHandling = true;
-            var eventData = new SceneEventData(Client)
+            m_Client.SceneManager.SkipSceneHandling = true;
+            var eventData = new SceneEventData(m_Client)
             {
                 SceneEventType = SceneEventType.UnloadEventCompleted,
                 LoadSceneMode = LoadSceneMode.Single,
@@ -491,8 +487,8 @@ public IEnumerator SceneEventMessageUnloadLoadCompleted()
         [UnityTest]
         public IEnumerator SceneEventMessageSynchronize()
         {
-            Client.SceneManager.SkipSceneHandling = true;
-            var eventData = new SceneEventData(Client)
+            m_Client.SceneManager.SkipSceneHandling = true;
+            var eventData = new SceneEventData(m_Client)
             {
                 SceneEventType = SceneEventType.Synchronize,
                 LoadSceneMode = LoadSceneMode.Single,
@@ -516,8 +512,8 @@ public IEnumerator SceneEventMessageSynchronize()
         [UnityTest]
         public IEnumerator SceneEventMessageReSynchronize()
         {
-            Client.SceneManager.SkipSceneHandling = true;
-            var eventData = new SceneEventData(Client)
+            m_Client.SceneManager.SkipSceneHandling = true;
+            var eventData = new SceneEventData(m_Client)
             {
                 SceneEventType = SceneEventType.ReSynchronize,
                 LoadSceneMode = LoadSceneMode.Single,
@@ -536,8 +532,8 @@ public IEnumerator SceneEventMessageReSynchronize()
         [UnityTest]
         public IEnumerator SceneEventMessageSynchronizeComplete()
         {
-            Client.SceneManager.SkipSceneHandling = true;
-            var eventData = new SceneEventData(Client)
+            m_Client.SceneManager.SkipSceneHandling = true;
+            var eventData = new SceneEventData(m_Client)
             {
                 SceneEventType = SceneEventType.ReSynchronize,
                 LoadSceneMode = LoadSceneMode.Single,
@@ -556,8 +552,8 @@ public IEnumerator SceneEventMessageSynchronizeComplete()
         [UnityTest]
         public IEnumerator SceneEventMessageActiveSceneChanged()
         {
-            Client.SceneManager.SkipSceneHandling = true;
-            var eventData = new SceneEventData(Client)
+            m_Client.SceneManager.SkipSceneHandling = true;
+            var eventData = new SceneEventData(m_Client)
             {
                 SceneEventType = SceneEventType.ActiveSceneChanged,
                 ActiveSceneHash = XXHash.Hash32("ActiveScene")
@@ -573,15 +569,15 @@ public IEnumerator SceneEventMessageActiveSceneChanged()
         [UnityTest, Ignore("Serializing twice causes data to disappear in the SceneManager for this event")]
         public IEnumerator SceneEventMessageObjectSceneChanged()
         {
-            Client.SceneManager.SkipSceneHandling = true;
+            m_Client.SceneManager.SkipSceneHandling = true;
             var prefabNetworkObject = m_SpawnObject.GetComponent();
-            Client.SceneManager.ObjectsMigratedIntoNewScene = new Dictionary>>
+            m_Client.SceneManager.ObjectsMigratedIntoNewScene = new Dictionary>>
             {
                 { 0, new Dictionary>()}
             };
 
-            Client.SceneManager.ObjectsMigratedIntoNewScene[0].Add(Client.LocalClientId, new List() { prefabNetworkObject });
-            var eventData = new SceneEventData(Client)
+            m_Client.SceneManager.ObjectsMigratedIntoNewScene[0].Add(m_Client.LocalClientId, new List() { prefabNetworkObject });
+            var eventData = new SceneEventData(m_Client)
             {
                 SceneEventType = SceneEventType.ObjectSceneChanged,
             };
@@ -596,12 +592,12 @@ public IEnumerator SceneEventMessageObjectSceneChanged()
 
         private IEnumerator SendMessage(ref T message) where T : INetworkMessage
         {
-            Client.MessageManager.SetVersion(k_ClientId, XXHash.Hash32(typeof(T).FullName), message.Version);
+            m_Client.MessageManager.SetVersion(k_ClientId, XXHash.Hash32(typeof(T).FullName), message.Version);
 
             var clientIds = new NativeArray(1, Allocator.Temp);
             clientIds[0] = k_ClientId;
-            Client.MessageManager.SendMessage(ref message, NetworkDelivery.ReliableSequenced, clientIds);
-            Client.MessageManager.ProcessSendQueues();
+            m_Client.MessageManager.SendMessage(ref message, NetworkDelivery.ReliableSequenced, clientIds);
+            m_Client.MessageManager.ProcessSendQueues();
             return m_ClientCodecHook.WaitForMessageReceived(message);
         }
 
diff --git a/com.unity.netcode.gameobjects/Tests/Runtime/DistributedAuthority/RpcProxyMessageTesting.cs b/com.unity.netcode.gameobjects/Tests/Runtime/DistributedAuthority/RpcProxyMessageTesting.cs
index 9a7a9f8557..279a01b94d 100644
--- a/com.unity.netcode.gameobjects/Tests/Runtime/DistributedAuthority/RpcProxyMessageTesting.cs
+++ b/com.unity.netcode.gameobjects/Tests/Runtime/DistributedAuthority/RpcProxyMessageTesting.cs
@@ -3,6 +3,7 @@
 using System.Text;
 using NUnit.Framework;
 using Unity.Netcode.TestHelpers.Runtime;
+using UnityEngine.TestTools;
 
 namespace Unity.Netcode.RuntimeTests
 {
@@ -44,26 +45,51 @@ private bool ValidateRpcProxyRpcs()
             m_ValidationLogger.Clear();
             foreach (var proxy in m_ProxyTestInstances)
             {
-                if (proxy.ReceivedRpc.Count < NumberOfClients)
+
+                // Since we are sending to everyone but the authority, the local instance of each client's player should have zero
+                // entries.
+                if (proxy.ReceivedRpc.Count != 0)
                 {
-                    m_ValidationLogger.AppendLine($"Not all clients received RPC from Client-{proxy.OwnerClientId}!");
+                    m_ValidationLogger.AppendLine($"Client-{proxy.OwnerClientId} sent itself an Rpc!");
                 }
-                foreach (var clientId in proxy.ReceivedRpc)
+                foreach (var networkManager in m_NetworkManagers)
                 {
-                    if (clientId == proxy.OwnerClientId)
+                    // Skip the local player instance
+                    if (networkManager.LocalClientId == proxy.OwnerClientId)
+                    {
+                        continue;
+                    }
+
+                    // Get the cloned player instance of the player based on the player's NetworkObjectId
+                    if (!networkManager.SpawnManager.SpawnedObjects.ContainsKey(proxy.NetworkObjectId))
                     {
-                        m_ValidationLogger.AppendLine($"Client-{proxy.OwnerClientId} sent itself an Rpc!");
+                        m_ValidationLogger.AppendLine($"Client-{networkManager.LocalClientId} does not have a cloned instance for Player-{proxy.OwnerClientId}!");
+                    }
+                    var clonedPlayer = networkManager.SpawnManager.SpawnedObjects[proxy.NetworkObjectId].GetComponent();
+                    // For each cloned player, each client should receive 1 RPC call per cloned player instance.
+                    // Example (With 3 clients including session owner):
+                    // Client-1 (SO): Sends to NotAuthority
+                    // Client-2: Should receive 1 RPC on its clone of Player-1
+                    // Client-3: Should receive 1 RPC on its clone of Player-1
+                    // Client-2: Sends to NotAuthority
+                    // Client-1: Should receive 1 RPC on its clone of Player-2
+                    // Client-3: Should receive 1 RPC on its clone of Player-2
+                    // Client-3: Sends to NotAuthority
+                    // Client-1: Should receive 1 RPC on its clone of Player-3
+                    // Client-2: Should receive 1 RPC on its clone of Player-3
+                    if (clonedPlayer.ReceivedRpc.Count != 1)
+                    {
+                        m_ValidationLogger.AppendLine($"[{clonedPlayer.name}] Received ({clonedPlayer.ReceivedRpc.Count}) RPCs when we were expected only 1!");
                     }
                 }
             }
             return m_ValidationLogger.Length == 0;
         }
 
-
+        [UnityTest]
         public IEnumerator ProxyDoesNotInvokeOnSender()
         {
-            m_ProxyTestInstances.Add(m_ServerNetworkManager.LocalClient.PlayerObject.GetComponent());
-            foreach (var client in m_ClientNetworkManagers)
+            foreach (var client in m_NetworkManagers)
             {
                 m_ProxyTestInstances.Add(client.LocalClient.PlayerObject.GetComponent());
             }
diff --git a/com.unity.netcode.gameobjects/Tests/Runtime/NestedNetworkManagerTests.cs b/com.unity.netcode.gameobjects/Tests/Runtime/NestedNetworkManagerTests.cs
index c31f8a83f5..95b23182c9 100644
--- a/com.unity.netcode.gameobjects/Tests/Runtime/NestedNetworkManagerTests.cs
+++ b/com.unity.netcode.gameobjects/Tests/Runtime/NestedNetworkManagerTests.cs
@@ -1,4 +1,5 @@
 using NUnit.Framework;
+using Unity.Netcode.TestHelpers.Runtime;
 using Unity.Netcode.Transports.UTP;
 using UnityEngine;
 using UnityEngine.TestTools;
@@ -8,6 +9,13 @@ namespace Unity.Netcode.RuntimeTests
 {
     internal class NestedNetworkManagerTests
     {
+        [OneTimeSetUp]
+        public void OneTimeSetup()
+        {
+            // TODO: [CmbServiceTests] if this test is deemed needed to test against the CMB server then update this test.
+            NetcodeIntegrationTestHelpers.IgnoreIfServiceEnviromentVariableSet();
+        }
+
         [Test]
         public void CheckNestedNetworkManager()
         {
diff --git a/com.unity.netcode.gameobjects/Tests/Runtime/NetworkBehaviourUpdaterTests.cs b/com.unity.netcode.gameobjects/Tests/Runtime/NetworkBehaviourUpdaterTests.cs
index a7b0fc9244..10eb4ee742 100644
--- a/com.unity.netcode.gameobjects/Tests/Runtime/NetworkBehaviourUpdaterTests.cs
+++ b/com.unity.netcode.gameobjects/Tests/Runtime/NetworkBehaviourUpdaterTests.cs
@@ -1,11 +1,11 @@
 using System.Collections;
 using System.Collections.Generic;
 using System.Linq;
+using System.Text;
 using NUnit.Framework;
 using Unity.Netcode.TestHelpers.Runtime;
 using UnityEngine;
 using UnityEngine.TestTools;
-using Object = UnityEngine.Object;
 
 namespace Unity.Netcode.RuntimeTests
 {
@@ -85,15 +85,6 @@ public void SetOwnerWrite()
             m_SeconValue = new NetworkVariable(default, NetworkVariableReadPermission.Everyone, NetworkVariableWritePermission.Owner);
         }
 
-        public override void OnNetworkSpawn()
-        {
-            // Non-Authority will register each NetworkObject when it is spawned
-            if ((NetworkManager.DistributedAuthorityMode && !IsOwner) || (!NetworkManager.DistributedAuthorityMode && !IsServer))
-            {
-                NetworkBehaviourUpdaterTests.ClientSideNotifyObjectSpawned(gameObject);
-            }
-        }
-
         /// 
         /// Server side only, sets the NetworkVariables being used to the ValueToSetNetVarTo
         /// that is pre-configured when the Network Prefab is created.
@@ -160,12 +151,14 @@ internal struct NetVarCombinationTypes
     internal class NetworkBehaviourUpdaterTests : NetcodeIntegrationTest
     {
         // Go ahead and create maximum number of clients (not all tests will use them)
-        protected override int NumberOfClients => m_NumberOfClients;
+        protected override int NumberOfClients => m_ClientCount;
         public const int NetVarValueToSet = 1;
-        private static List s_ClientSpawnedNetworkObjects = new List();
+        private List m_SpawnedObjects = new List();
         private GameObject m_PrefabToSpawn;
         private NetVarCombinationTypes m_NetVarCombinationTypes;
-        private int m_NumberOfClients = 0;
+        private int m_ClientCount = 0;
+
+        private StringBuilder m_ErrorLog = new StringBuilder();
 
         public NetworkBehaviourUpdaterTests(HostOrServer hostOrServer, int numberOfClients, NetVarContainer.NetVarsToCheck first, NetVarContainer.NetVarsToCheck second) : base(hostOrServer)
         {
@@ -174,27 +167,16 @@ public NetworkBehaviourUpdaterTests(HostOrServer hostOrServer, int numberOfClien
                 FirstType = first,
                 SecondType = second
             };
-            m_NumberOfClients = numberOfClients;
+            // Adjust the client count if connecting to the service.
+            m_ClientCount = numberOfClients;
         }
 
         protected override IEnumerator OnSetup()
         {
-            s_ClientSpawnedNetworkObjects.Clear();
+            m_SpawnedObjects.Clear();
             return base.OnSetup();
         }
 
-        /// 
-        /// Clients will call this when NetworkObjects are spawned on their end
-        /// 
-        /// the GameObject of the NetworkObject spawned
-        public static void ClientSideNotifyObjectSpawned(GameObject objectSpaned)
-        {
-            if (!s_ClientSpawnedNetworkObjects.Contains(objectSpaned))
-            {
-                s_ClientSpawnedNetworkObjects.Add(objectSpaned);
-            }
-        }
-
         protected override void OnServerAndClientsCreated()
         {
             m_PrefabToSpawn = CreateNetworkObjectPrefab("NetVarCont");
@@ -221,6 +203,31 @@ protected override void OnServerAndClientsCreated()
             base.OnServerAndClientsCreated();
         }
 
+        /// 
+        /// Determines if all clients have spawned clone instances.
+        /// 
+        /// 
+        ///  will contain log entries of the
+        ///  instances and NetworkObjects
+        /// that did not get spawned.
+        /// 
+        /// true(success) or false (failure)
+        private bool AllClientsSpawnedObjects()
+        {
+            m_ErrorLog.Clear();
+            foreach (var networkManager in m_NetworkManagers)
+            {
+                foreach (var networkObjectId in m_SpawnedObjects)
+                {
+                    if (!networkManager.SpawnManager.SpawnedObjects.ContainsKey(networkObjectId))
+                    {
+                        m_ErrorLog.AppendLine($"[{networkManager.name}] Has not spawned {nameof(NetworkObject)}-{networkObjectId}.");
+                    }
+                }
+            }
+            return m_ErrorLog.Length == 0;
+        }
+
         /// 
         /// The updated BehaviourUpdaterAllTests was re-designed to replicate the same functionality being tested in the
         /// original version of this test with additional time out handling and a re-organization in the order of operations.
@@ -243,22 +250,19 @@ public IEnumerator BehaviourUpdaterAllTests([Values(1, 2)] int numToSpawn)
             // the appropriate number of NetworkObjects with the NetVarContainer behaviour
             var numberOfObjectsToSpawn = numToSpawn * NumberOfClients;
 
-            var authority = m_NetworkTopologyType == NetworkTopologyTypes.DistributedAuthority ? m_ClientNetworkManagers[0] : m_ServerNetworkManager;
+            var authority = GetAuthorityNetworkManager();
 
             // spawn the objects
             for (int i = 0; i < numToSpawn; i++)
             {
-                var spawnedObject = Object.Instantiate(m_PrefabToSpawn);
+                var spawnedObject = SpawnObject(m_PrefabToSpawn, authority);
                 spawnedPrefabs.Add(spawnedObject);
-                var networkSpawnedObject = spawnedObject.GetComponent();
-                networkSpawnedObject.NetworkManagerOwner = authority;
-                networkSpawnedObject.Spawn();
+                m_SpawnedObjects.Add(spawnedObject.GetComponent().NetworkObjectId);
             }
 
             // Waits for all clients to spawn the NetworkObjects
-            yield return WaitForConditionOrTimeOut(() => numberOfObjectsToSpawn == s_ClientSpawnedNetworkObjects.Count);
-            Assert.IsFalse(s_GlobalTimeoutHelper.TimedOut, $"Timed out waiting for clients to report spawning objects! " +
-                $"Total reported client-side spawned objects {s_ClientSpawnedNetworkObjects.Count}");
+            yield return WaitForConditionOrTimeOut(AllClientsSpawnedObjects);
+            AssertOnTimeout($"Timed out waiting for clients to report spawning objects!\n {m_ErrorLog}");
 
 
             // Once all clients have spawned the NetworkObjects, set the network variables for
@@ -287,12 +291,19 @@ public IEnumerator BehaviourUpdaterAllTests([Values(1, 2)] int numToSpawn)
 
             // Get a list of all NetVarContainer components on the client-side spawned NetworkObjects
             var clientSideNetVarContainers = new List();
-            foreach (var clientSpawnedObjects in s_ClientSpawnedNetworkObjects)
+            foreach (var networkManager in m_NetworkManagers)
             {
-                var netVarContainers = clientSpawnedObjects.GetComponents();
-                foreach (var netvarContiner in netVarContainers)
+                if (networkManager == authority)
                 {
-                    clientSideNetVarContainers.Add(netvarContiner);
+                    continue;
+                }
+                foreach (var networkObjectId in m_SpawnedObjects)
+                {
+                    var netVarContainers = networkManager.SpawnManager.SpawnedObjects[networkObjectId].GetComponents();
+                    foreach (var netvarContiner in netVarContainers)
+                    {
+                        clientSideNetVarContainers.Add(netvarContiner);
+                    }
                 }
             }
 
diff --git a/com.unity.netcode.gameobjects/Tests/Runtime/NetworkManagerCustomMessageManagerTests.cs b/com.unity.netcode.gameobjects/Tests/Runtime/NetworkManagerCustomMessageManagerTests.cs
index a43bd24746..da5e0b17ce 100644
--- a/com.unity.netcode.gameobjects/Tests/Runtime/NetworkManagerCustomMessageManagerTests.cs
+++ b/com.unity.netcode.gameobjects/Tests/Runtime/NetworkManagerCustomMessageManagerTests.cs
@@ -1,10 +1,18 @@
 using NUnit.Framework;
+using Unity.Netcode.TestHelpers.Runtime;
 using UnityEngine;
 
 namespace Unity.Netcode.RuntimeTests
 {
     internal class NetworkManagerCustomMessageManagerTests
     {
+        [OneTimeSetUp]
+        public void OneTimeSetup()
+        {
+            // This test does not need to run against the Rust server.
+            NetcodeIntegrationTestHelpers.IgnoreIfServiceEnviromentVariableSet();
+        }
+
         [Test]
         public void CustomMessageManagerAssigned()
         {
diff --git a/com.unity.netcode.gameobjects/Tests/Runtime/NetworkManagerEventsTests.cs b/com.unity.netcode.gameobjects/Tests/Runtime/NetworkManagerEventsTests.cs
index c2d482da67..93d13c9e18 100644
--- a/com.unity.netcode.gameobjects/Tests/Runtime/NetworkManagerEventsTests.cs
+++ b/com.unity.netcode.gameobjects/Tests/Runtime/NetworkManagerEventsTests.cs
@@ -17,6 +17,13 @@ internal class NetworkManagerEventsTests
         private bool m_Instantiated;
         private bool m_Destroyed;
 
+        [OneTimeSetUp]
+        public void OneTimeSetup()
+        {
+            // TODO: [CmbServiceTests] if this test is deemed needed to test against the CMB server then update this test.
+            NetcodeIntegrationTestHelpers.IgnoreIfServiceEnviromentVariableSet();
+        }
+
         /// 
         /// Validates the  and  event notifications
         /// 
diff --git a/com.unity.netcode.gameobjects/Tests/Runtime/NetworkManagerSceneManagerTests.cs b/com.unity.netcode.gameobjects/Tests/Runtime/NetworkManagerSceneManagerTests.cs
index d7544b71f3..39b1bc9e14 100644
--- a/com.unity.netcode.gameobjects/Tests/Runtime/NetworkManagerSceneManagerTests.cs
+++ b/com.unity.netcode.gameobjects/Tests/Runtime/NetworkManagerSceneManagerTests.cs
@@ -1,10 +1,18 @@
 using NUnit.Framework;
+using Unity.Netcode.TestHelpers.Runtime;
 using UnityEngine;
 
 namespace Unity.Netcode.RuntimeTests
 {
     internal class NetworkManagerSceneManagerTests
     {
+        [OneTimeSetUp]
+        public void OneTimeSetup()
+        {
+            // This test does not need to run against the Rust server.
+            NetcodeIntegrationTestHelpers.IgnoreIfServiceEnviromentVariableSet();
+        }
+
         [Test]
         public void SceneManagerAssigned()
         {
diff --git a/com.unity.netcode.gameobjects/Tests/Runtime/NetworkManagerTransportTests.cs b/com.unity.netcode.gameobjects/Tests/Runtime/NetworkManagerTransportTests.cs
index 484f6301fd..1c4d346a61 100644
--- a/com.unity.netcode.gameobjects/Tests/Runtime/NetworkManagerTransportTests.cs
+++ b/com.unity.netcode.gameobjects/Tests/Runtime/NetworkManagerTransportTests.cs
@@ -11,6 +11,13 @@ namespace Unity.Netcode.RuntimeTests
 {
     internal class NetworkManagerTransportTests
     {
+        [OneTimeSetUp]
+        public void OneTimeSetup()
+        {
+            // This test does not need to run against the Rust server.
+            NetcodeIntegrationTestHelpers.IgnoreIfServiceEnviromentVariableSet();
+        }
+
         [Test]
         public void ClientDoesNotStartWhenTransportFails()
         {
diff --git a/com.unity.netcode.gameobjects/Tests/Runtime/NetworkObject/NetworkObjectOwnershipTests.cs b/com.unity.netcode.gameobjects/Tests/Runtime/NetworkObject/NetworkObjectOwnershipTests.cs
index e7fc968de1..0f5fa1a972 100644
--- a/com.unity.netcode.gameobjects/Tests/Runtime/NetworkObject/NetworkObjectOwnershipTests.cs
+++ b/com.unity.netcode.gameobjects/Tests/Runtime/NetworkObject/NetworkObjectOwnershipTests.cs
@@ -1,6 +1,7 @@
 using System.Collections;
 using System.Collections.Generic;
 using System.Linq;
+using System.Text;
 using NUnit.Framework;
 using Unity.Netcode.Components;
 using Unity.Netcode.TestHelpers.Runtime;
@@ -92,8 +93,8 @@ protected override void OnServerAndClientsCreated()
             base.OnServerAndClientsCreated();
         }
 
-        [Test]
-        public void TestPlayerIsOwned()
+        [UnityTest]
+        public IEnumerator TestPlayerIsOwned()
         {
             var clientOwnedObjects = m_ClientNetworkManagers[0].SpawnManager.GetClientOwnedObjects(m_ClientNetworkManagers[0].LocalClientId);
 
@@ -102,6 +103,7 @@ public void TestPlayerIsOwned()
 
             clientPlayerObject = m_ClientNetworkManagers[0].LocalClient.OwnedObjects.Where((c) => c.IsLocalPlayer).FirstOrDefault();
             Assert.NotNull(clientPlayerObject, $"Client Id {m_ClientNetworkManagers[0].LocalClientId} does not have its local player marked as an owned object using local client!");
+            yield return null;
         }
 
         private bool AllObjectsSpawnedOnClients()
@@ -442,15 +444,18 @@ private bool AllClientsHaveCorrectObjectCount()
             return true;
         }
 
+        private StringBuilder m_ErrorLog = new StringBuilder();
+
         private bool ServerHasCorrectClientOwnedObjectCount()
         {
+            m_ErrorLog.Clear();
             var authority = GetAuthorityNetworkManager();
-            // Only check when we are the host
-            if (authority.IsHost)
+            // Only check when we are the host or session owner
+            if (authority.IsHost || (!authority.IsServer && authority.LocalClient.IsSessionOwner))
             {
                 if (authority.LocalClient.OwnedObjects.Length < k_NumberOfSpawnedObjects)
                 {
-                    return false;
+                    m_ErrorLog.AppendLine($"[{authority.name}] Has only {authority.LocalClient.OwnedObjects.Length} spawned objects and expected is {k_NumberOfSpawnedObjects}");
                 }
             }
 
@@ -458,10 +463,10 @@ private bool ServerHasCorrectClientOwnedObjectCount()
             {
                 if (connectedClient.Value.OwnedObjects.Length < k_NumberOfSpawnedObjects)
                 {
-                    return false;
+                    m_ErrorLog.AppendLine($"[Client-{connectedClient.Key}] Has only {connectedClient.Value.OwnedObjects.Length} spawned objects and expected is {k_NumberOfSpawnedObjects}");
                 }
             }
-            return true;
+            return m_ErrorLog.Length == 0;
         }
 
         [UnityTest]
@@ -469,7 +474,7 @@ public IEnumerator TestOwnedObjectCounts()
         {
             foreach (var manager in m_NetworkManagers)
             {
-                for (int i = 0; i < 5; i++)
+                for (int i = 0; i < k_NumberOfSpawnedObjects; i++)
                 {
                     SpawnObject(m_OwnershipPrefab, manager);
                 }
@@ -479,7 +484,7 @@ public IEnumerator TestOwnedObjectCounts()
             AssertOnTimeout($"Not all clients spawned {k_NumberOfSpawnedObjects} {nameof(NetworkObject)}s!");
 
             yield return WaitForConditionOrTimeOut(ServerHasCorrectClientOwnedObjectCount);
-            AssertOnTimeout($"Server does not have the correct count for all clients spawned {k_NumberOfSpawnedObjects} {nameof(NetworkObject)}s!");
+            AssertOnTimeout($"Server does not have the correct count for all clients spawned {k_NumberOfSpawnedObjects} {nameof(NetworkObject)}s!\n {m_ErrorLog}");
         }
 
         /// 
@@ -495,7 +500,7 @@ public IEnumerator TestAuthorityChangingOwnership()
 
             if (m_DistributedAuthority)
             {
-                var authorityId = Random.Range(1, NumberOfClients) - 1;
+                var authorityId = Random.Range(1, TotalClients) - 1;
                 authorityManager = m_ClientNetworkManagers[authorityId];
                 m_OwnershipObject = SpawnObject(m_OwnershipPrefab, authorityManager);
                 m_OwnershipNetworkObject = m_OwnershipObject.GetComponent();
diff --git a/com.unity.netcode.gameobjects/Tests/Runtime/NetworkObject/NetworkObjectSpawnManyObjectsTests.cs b/com.unity.netcode.gameobjects/Tests/Runtime/NetworkObject/NetworkObjectSpawnManyObjectsTests.cs
index 5db4c0a3b8..879319b10f 100644
--- a/com.unity.netcode.gameobjects/Tests/Runtime/NetworkObject/NetworkObjectSpawnManyObjectsTests.cs
+++ b/com.unity.netcode.gameobjects/Tests/Runtime/NetworkObject/NetworkObjectSpawnManyObjectsTests.cs
@@ -67,6 +67,10 @@ public IEnumerator WhenManyObjectsAreSpawnedAtOnce_AllAreReceived()
             yield return WaitForConditionOrTimeOut(() => SpawnObjecTrackingComponent.SpawnedObjects == k_SpawnedObjects, timeoutHelper);
 
             AssertOnTimeout($"Timed out waiting for the client to spawn {k_SpawnedObjects} objects! Time to spawn: {timeSpawned} | Time to timeout: {timeStarted - Time.realtimeSinceStartup}", timeoutHelper);
+
+            // Provide one full tick for all messages to finish being processed.
+            // DANGO-TODO: Determine if this is only when testing against Rust server (i.e. messages still pending and clients shutting down before they are dequeued)
+            yield return s_DefaultWaitForTick;
         }
     }
 }
diff --git a/com.unity.netcode.gameobjects/Tests/Runtime/NetworkTransform/NetworkTransformStateTests.cs b/com.unity.netcode.gameobjects/Tests/Runtime/NetworkTransform/NetworkTransformStateTests.cs
index 0b47dff72a..6ab913866b 100644
--- a/com.unity.netcode.gameobjects/Tests/Runtime/NetworkTransform/NetworkTransformStateTests.cs
+++ b/com.unity.netcode.gameobjects/Tests/Runtime/NetworkTransform/NetworkTransformStateTests.cs
@@ -1,6 +1,7 @@
 #if !MULTIPLAYER_TOOLS
 using NUnit.Framework;
 using Unity.Netcode.Components;
+using Unity.Netcode.TestHelpers.Runtime;
 using UnityEngine;
 
 
@@ -77,6 +78,13 @@ public enum Precision
         private Precision m_Precision;
         private Rotation m_Rotation;
 
+        [OneTimeSetUp]
+        public void OneTimeSetup()
+        {
+            // This test does not need to run against the Rust server.
+            NetcodeIntegrationTestHelpers.IgnoreIfServiceEnviromentVariableSet();
+        }
+
         public NetworkTransformStateTests(TransformSpace transformSpace, Precision precision, Rotation rotation)
         {
             m_TransformSpace = transformSpace;
diff --git a/com.unity.netcode.gameobjects/Tests/Runtime/NetworkUpdateLoopTests.cs b/com.unity.netcode.gameobjects/Tests/Runtime/NetworkUpdateLoopTests.cs
index 06d10d414f..e8d773f68c 100644
--- a/com.unity.netcode.gameobjects/Tests/Runtime/NetworkUpdateLoopTests.cs
+++ b/com.unity.netcode.gameobjects/Tests/Runtime/NetworkUpdateLoopTests.cs
@@ -2,6 +2,7 @@
 using System.Collections;
 using System.Linq;
 using NUnit.Framework;
+using Unity.Netcode.TestHelpers.Runtime;
 using UnityEngine;
 using UnityEngine.LowLevel;
 using UnityEngine.PlayerLoop;
@@ -11,6 +12,14 @@ namespace Unity.Netcode.RuntimeTests
 {
     internal class NetworkUpdateLoopTests
     {
+
+        [OneTimeSetUp]
+        public void OneTimeSetup()
+        {
+            // This test does not need to run against the Rust server.
+            NetcodeIntegrationTestHelpers.IgnoreIfServiceEnviromentVariableSet();
+        }
+
         [Test]
         public void RegisterCustomLoopInTheMiddle()
         {
diff --git a/com.unity.netcode.gameobjects/Tests/Runtime/NetworkVariable/NetworkVarBufferCopyTest.cs b/com.unity.netcode.gameobjects/Tests/Runtime/NetworkVariable/NetworkVarBufferCopyTest.cs
index 1de2aa1c36..ab894f0ce6 100644
--- a/com.unity.netcode.gameobjects/Tests/Runtime/NetworkVariable/NetworkVarBufferCopyTest.cs
+++ b/com.unity.netcode.gameobjects/Tests/Runtime/NetworkVariable/NetworkVarBufferCopyTest.cs
@@ -103,7 +103,9 @@ public override void OnNetworkSpawn()
         }
         protected override int NumberOfClients => 1;
 
-        public NetworkVarBufferCopyTest(HostOrServer hostOrServer) : base(hostOrServer) { }
+        public NetworkVarBufferCopyTest(HostOrServer hostOrServer) : base(hostOrServer)
+        {
+        }
 
         private static List s_ClientDummyNetBehavioursSpawned = new List();
         public static void ClientDummyNetBehaviourSpawned(DummyNetBehaviour dummyNetBehaviour)
@@ -126,7 +128,7 @@ protected override void OnCreatePlayerPrefab()
         [UnityTest]
         public IEnumerator TestEntireBufferIsCopiedOnNetworkVariableDelta()
         {
-            // This is the *SERVER VERSION* of the *CLIENT PLAYER*
+            // This is the *SERVER/SESSION OWNER VERSION* of the *CLIENT PLAYER*
             var authority = GetAuthorityNetworkManager();
             var nonAuthority = GetNonAuthorityNetworkManager();
 
diff --git a/com.unity.netcode.gameobjects/Tests/Runtime/NetworkVisibilityTests.cs b/com.unity.netcode.gameobjects/Tests/Runtime/NetworkVisibilityTests.cs
index 0cbef0f4dc..faee1f721f 100644
--- a/com.unity.netcode.gameobjects/Tests/Runtime/NetworkVisibilityTests.cs
+++ b/com.unity.netcode.gameobjects/Tests/Runtime/NetworkVisibilityTests.cs
@@ -49,35 +49,21 @@ protected override IEnumerator OnServerAndClientsConnected()
         [UnityTest]
         public IEnumerator HiddenObjectsTest()
         {
-            var expectedCount = NumberOfClients + (m_UseHost ? 1 : 0);
-#if UNITY_2023_1_OR_NEWER
-            yield return WaitForConditionOrTimeOut(() => Object.FindObjectsByType(FindObjectsSortMode.None).Where((c) => c.IsSpawned).Count() == expectedCount);
-#else
-            yield return WaitForConditionOrTimeOut(() => Object.FindObjectsOfType().Where((c) => c.IsSpawned).Count() == expectedCount);
-#endif
-
-            Assert.IsFalse(s_GlobalTimeoutHelper.TimedOut, "Timed out waiting for the visible object count to equal 2!");
+            yield return WaitForConditionOrTimeOut(() => Object.FindObjectsByType(FindObjectsSortMode.None).Where((c) => c.IsSpawned).Count() == TotalClients);
+            AssertOnTimeout($"Timed out waiting for the visible object count to equal {TotalClients}!Actual count {Object.FindObjectsByType(FindObjectsSortMode.None).Count(c => c.IsSpawned)}");
         }
 
         [UnityTest]
         public IEnumerator HideShowAndDeleteTest()
         {
-            var expectedCount = NumberOfClients + (m_UseHost ? 1 : 0);
-#if UNITY_2023_1_OR_NEWER
-            yield return WaitForConditionOrTimeOut(() => Object.FindObjectsByType(FindObjectsSortMode.None).Count(c => c.IsSpawned) == expectedCount);
-#else
-            yield return WaitForConditionOrTimeOut(() => Object.FindObjectsOfType().Where((c) => c.IsSpawned).Count() == expectedCount);
-#endif
-            AssertOnTimeout($"Timed out waiting for the visible object count to equal 2! Actual count {Object.FindObjectsByType(FindObjectsSortMode.None).Count(c => c.IsSpawned)}");
+            yield return WaitForConditionOrTimeOut(() => Object.FindObjectsByType(FindObjectsSortMode.None).Count(c => c.IsSpawned) == TotalClients);
+
+            AssertOnTimeout($"Timed out waiting for the visible object count to equal {TotalClients}! Actual count {Object.FindObjectsByType(FindObjectsSortMode.None).Count(c => c.IsSpawned)}");
 
             var sessionOwnerNetworkObject = m_SpawnedObject.GetComponent();
             var nonAuthority = GetNonAuthorityNetworkManager();
             sessionOwnerNetworkObject.NetworkHide(nonAuthority.LocalClientId);
-#if UNITY_2023_1_OR_NEWER
-            yield return WaitForConditionOrTimeOut(() => Object.FindObjectsByType(FindObjectsSortMode.None).Where((c) => c.IsSpawned).Count() == expectedCount - 1);
-#else
-            yield return WaitForConditionOrTimeOut(() => Object.FindObjectsOfType().Where((c) => c.IsSpawned).Count() == expectedCount - 1);
-#endif
+            yield return WaitForConditionOrTimeOut(() => Object.FindObjectsByType(FindObjectsSortMode.None).Where((c) => c.IsSpawned).Count() == TotalClients - 1);
             AssertOnTimeout($"Timed out waiting for {m_SpawnedObject.name} to be hidden from client!");
             var networkObjectId = sessionOwnerNetworkObject.NetworkObjectId;
             sessionOwnerNetworkObject.NetworkShow(nonAuthority.LocalClientId);
diff --git a/com.unity.netcode.gameobjects/Tests/Runtime/Physics/NetworkRigidbodyTest.cs b/com.unity.netcode.gameobjects/Tests/Runtime/Physics/NetworkRigidbodyTest.cs
index af92c49e9b..fc813316da 100644
--- a/com.unity.netcode.gameobjects/Tests/Runtime/Physics/NetworkRigidbodyTest.cs
+++ b/com.unity.netcode.gameobjects/Tests/Runtime/Physics/NetworkRigidbodyTest.cs
@@ -341,7 +341,6 @@ internal class RigidbodyContactEventManagerTests : IntegrationTestWithApproximat
     {
         protected override int NumberOfClients => 1;
 
-
         private GameObject m_RigidbodyContactEventManager;
 
         public enum ContactEventTypes
diff --git a/com.unity.netcode.gameobjects/Tests/Runtime/Prefabs/NetworkPrefabHandlerTests.cs b/com.unity.netcode.gameobjects/Tests/Runtime/Prefabs/NetworkPrefabHandlerTests.cs
index c66c843abf..7460ea65fc 100644
--- a/com.unity.netcode.gameobjects/Tests/Runtime/Prefabs/NetworkPrefabHandlerTests.cs
+++ b/com.unity.netcode.gameobjects/Tests/Runtime/Prefabs/NetworkPrefabHandlerTests.cs
@@ -16,6 +16,12 @@ namespace Unity.Netcode.RuntimeTests
     /// 
     internal class NetworkPrefabHandlerTests
     {
+        [OneTimeSetUp]
+        public void OneTimeSetup()
+        {
+            // TODO: [CmbServiceTests] if this test is deemed needed to test against the CMB server then update this test.
+            NetcodeIntegrationTestHelpers.IgnoreIfServiceEnviromentVariableSet();
+        }
 
         private const string k_TestPrefabObjectName = "NetworkPrefabTestObject";
         private uint m_ObjectId = 1;
@@ -28,6 +34,8 @@ private GameObject MakeValidNetworkPrefab()
             return validPrefab.gameObject;
         }
 
+
+
         /// 
         /// Tests the NetwokConfig NetworkPrefabsList initialization during NetworkManager's Init method to make sure that
         /// it will still initialize but remove the invalid prefabs
diff --git a/com.unity.netcode.gameobjects/Tests/Runtime/Prefabs/NetworkPrefabOverrideTests.cs b/com.unity.netcode.gameobjects/Tests/Runtime/Prefabs/NetworkPrefabOverrideTests.cs
index db50428f7f..9880762bd1 100644
--- a/com.unity.netcode.gameobjects/Tests/Runtime/Prefabs/NetworkPrefabOverrideTests.cs
+++ b/com.unity.netcode.gameobjects/Tests/Runtime/Prefabs/NetworkPrefabOverrideTests.cs
@@ -133,10 +133,11 @@ protected override void OnCreatePlayerPrefab()
         /// 
         protected override void OnServerAndClientsCreated()
         {
+            var authorityNetworkManager = GetAuthorityNetworkManager();
             // Create a NetworkPrefab with an override
-            var basePrefab = NetcodeIntegrationTestHelpers.CreateNetworkObject($"{k_PrefabRootName}-base", m_ServerNetworkManager, true);
+            var basePrefab = NetcodeIntegrationTestHelpers.CreateNetworkObject($"{k_PrefabRootName}-base", authorityNetworkManager, true);
             basePrefab.AddComponent();
-            var targetPrefab = NetcodeIntegrationTestHelpers.CreateNetworkObject($"{k_PrefabRootName}-over", m_ServerNetworkManager, true);
+            var targetPrefab = NetcodeIntegrationTestHelpers.CreateNetworkObject($"{k_PrefabRootName}-over", authorityNetworkManager, true);
             targetPrefab.AddComponent();
             m_PrefabOverride = new NetworkPrefab()
             {
@@ -147,17 +148,21 @@ protected override void OnServerAndClientsCreated()
             };
 
             // Add the prefab override handler for instance specific player prefabs to the server side
-            var playerPrefabOverrideHandler = m_ServerNetworkManager.gameObject.AddComponent();
+            var playerPrefabOverrideHandler = authorityNetworkManager.gameObject.AddComponent();
             playerPrefabOverrideHandler.ServerSideInstance = m_PlayerPrefab;
             playerPrefabOverrideHandler.ClientSideInstance = m_ClientSidePlayerPrefab.Prefab;
 
             // Add the NetworkPrefab with override
-            m_ServerNetworkManager.NetworkConfig.Prefabs.Add(m_PrefabOverride);
+            authorityNetworkManager.NetworkConfig.Prefabs.Add(m_PrefabOverride);
             // Add the client player prefab that will be used on clients (and the host)
-            m_ServerNetworkManager.NetworkConfig.Prefabs.Add(m_ClientSidePlayerPrefab);
+            authorityNetworkManager.NetworkConfig.Prefabs.Add(m_ClientSidePlayerPrefab);
 
             foreach (var networkManager in m_ClientNetworkManagers)
             {
+                if (authorityNetworkManager == networkManager)
+                {
+                    continue;
+                }
                 // Add the prefab override handler for instance specific player prefabs to the client side
                 playerPrefabOverrideHandler = networkManager.gameObject.AddComponent();
                 playerPrefabOverrideHandler.ServerSideInstance = m_PlayerPrefab;
@@ -208,7 +213,7 @@ protected override IEnumerator OnTearDown()
 
         private GameObject GetPlayerNetworkPrefabObject(NetworkManager networkManager)
         {
-            return networkManager.IsClient ? m_ClientSidePlayerPrefab.Prefab : m_PlayerPrefab;
+            return networkManager != GetAuthorityNetworkManager() ? m_ClientSidePlayerPrefab.Prefab : m_PlayerPrefab;
         }
 
         [UnityTest]
@@ -217,11 +222,13 @@ public IEnumerator PrefabOverrideTests()
             var prefabNetworkObject = (NetworkObject)null;
             var spawnedGlobalObjectId = (uint)0;
 
+            var authorityNetworkManager = GetAuthorityNetworkManager();
+
             if (!m_UseHost)
             {
                 // If running as just a server, validate that all player prefab clone instances are the server side version
-                prefabNetworkObject = GetPlayerNetworkPrefabObject(m_ServerNetworkManager).GetComponent();
-                foreach (var playerEntry in m_PlayerNetworkObjects[m_ServerNetworkManager.LocalClientId])
+                prefabNetworkObject = GetPlayerNetworkPrefabObject(authorityNetworkManager).GetComponent();
+                foreach (var playerEntry in m_PlayerNetworkObjects[authorityNetworkManager.LocalClientId])
                 {
                     spawnedGlobalObjectId = playerEntry.Value.GlobalObjectIdHash;
                     Assert.IsTrue(prefabNetworkObject.GlobalObjectIdHash == spawnedGlobalObjectId, $"Server-Side {playerEntry.Value.name} was spawned as prefab ({spawnedGlobalObjectId}) but we expected ({prefabNetworkObject.GlobalObjectIdHash})!");
@@ -254,7 +261,7 @@ public IEnumerator PrefabOverrideTests()
 
             // Validates prefab overrides via NetworkPrefab configuration.
             var spawnedInstance = (NetworkObject)null;
-            var networkManagerOwner = m_ServerNetworkManager;
+            var networkManagerOwner = authorityNetworkManager;
 
             if (m_DistributedAuthority)
             {
@@ -291,15 +298,17 @@ bool ObjectSpawnedOnAllNetworkMangers()
             yield return WaitForConditionOrTimeOut(ObjectSpawnedOnAllNetworkMangers);
             AssertOnTimeout($"The spawned prefab override validation failed!\n {builder}");
 
+            var nonAuthorityInstance = GetNonAuthorityNetworkManager();
+
             // Verify that the despawn and destroy order of operations is correct for client owned NetworkObjects and the nunmber of times each is invoked is correct
-            spawnedInstance = NetworkObject.InstantiateAndSpawn(m_PrefabOverride.SourcePrefabToOverride, networkManagerOwner, m_ClientNetworkManagers[0].LocalClientId);
+            spawnedInstance = NetworkObject.InstantiateAndSpawn(m_PrefabOverride.SourcePrefabToOverride, networkManagerOwner, nonAuthorityInstance.LocalClientId);
 
 
             yield return WaitForConditionOrTimeOut(ObjectSpawnedOnAllNetworkMangers);
             AssertOnTimeout($"The spawned prefab override validation failed!\n {builder}");
 
-            var clientId = m_ClientNetworkManagers[0].LocalClientId;
-            m_ClientNetworkManagers[0].Shutdown();
+            var clientId = nonAuthorityInstance.LocalClientId;
+            nonAuthorityInstance.Shutdown();
 
             // Wait until all of the client's owned objects are destroyed
             // If no asserts occur, then the despawn & destroy order of operations and invocation count is correct
diff --git a/com.unity.netcode.gameobjects/Tests/Runtime/Profiling/NetworkVariableNameTests.cs b/com.unity.netcode.gameobjects/Tests/Runtime/Profiling/NetworkVariableNameTests.cs
index 1ec833369c..c0b870193a 100644
--- a/com.unity.netcode.gameobjects/Tests/Runtime/Profiling/NetworkVariableNameTests.cs
+++ b/com.unity.netcode.gameobjects/Tests/Runtime/Profiling/NetworkVariableNameTests.cs
@@ -8,6 +8,13 @@ internal sealed class NetworkVariableNameTests
     {
         private NetworkVariableNameComponent m_NetworkVariableNameComponent;
 
+        [OneTimeSetUp]
+        public void OneTimeSetup()
+        {
+            // TODO: [CmbServiceTests] if this test is deemed needed to test against the CMB server then update this test.
+            NetcodeIntegrationTestHelpers.IgnoreIfServiceEnviromentVariableSet();
+        }
+
         [SetUp]
         public void SetUp()
         {
diff --git a/com.unity.netcode.gameobjects/Tests/Runtime/RpcQueueTests.cs b/com.unity.netcode.gameobjects/Tests/Runtime/RpcQueueTests.cs
index 5d7775fa95..1489fb61b9 100644
--- a/com.unity.netcode.gameobjects/Tests/Runtime/RpcQueueTests.cs
+++ b/com.unity.netcode.gameobjects/Tests/Runtime/RpcQueueTests.cs
@@ -15,6 +15,13 @@ namespace Unity.Netcode.RuntimeTests
     /// 
     internal class RpcQueueTests
     {
+        [OneTimeSetUp]
+        public void OneTimeSetup()
+        {
+            // TODO: [CmbServiceTests] if this test is deemed needed to test against the CMB server then update this test.
+            NetcodeIntegrationTestHelpers.IgnoreIfServiceEnviromentVariableSet();
+        }
+
         [SetUp]
         public void Setup()
         {
diff --git a/com.unity.netcode.gameobjects/Tests/Runtime/Serialization/NetworkBehaviourReferenceTests.cs b/com.unity.netcode.gameobjects/Tests/Runtime/Serialization/NetworkBehaviourReferenceTests.cs
index 6b7d497738..51d2ae8e71 100644
--- a/com.unity.netcode.gameobjects/Tests/Runtime/Serialization/NetworkBehaviourReferenceTests.cs
+++ b/com.unity.netcode.gameobjects/Tests/Runtime/Serialization/NetworkBehaviourReferenceTests.cs
@@ -15,6 +15,13 @@ namespace Unity.Netcode.RuntimeTests
     /// 
     internal class NetworkBehaviourReferenceTests : IDisposable
     {
+        [OneTimeSetUp]
+        public void OneTimeSetup()
+        {
+            // TODO: [CmbServiceTests] if this test is deemed needed to test against the CMB server then update this test.
+            NetcodeIntegrationTestHelpers.IgnoreIfServiceEnviromentVariableSet();
+        }
+
         private class TestNetworkBehaviour : NetworkBehaviour
         {
             public static bool ReceivedRPC;
diff --git a/com.unity.netcode.gameobjects/Tests/Runtime/Serialization/NetworkObjectReferenceTests.cs b/com.unity.netcode.gameobjects/Tests/Runtime/Serialization/NetworkObjectReferenceTests.cs
index ab347f435f..1fbce803fc 100644
--- a/com.unity.netcode.gameobjects/Tests/Runtime/Serialization/NetworkObjectReferenceTests.cs
+++ b/com.unity.netcode.gameobjects/Tests/Runtime/Serialization/NetworkObjectReferenceTests.cs
@@ -17,6 +17,13 @@ namespace Unity.Netcode.RuntimeTests
     /// 
     internal class NetworkObjectReferenceTests : IDisposable
     {
+        [OneTimeSetUp]
+        public void OneTimeSetup()
+        {
+            // TODO: [CmbServiceTests] if this test is deemed needed to test against the CMB server then update this test.
+            NetcodeIntegrationTestHelpers.IgnoreIfServiceEnviromentVariableSet();
+        }
+
         private class TestNetworkBehaviour : NetworkBehaviour
         {
             public static bool ReceivedRPC;
diff --git a/com.unity.netcode.gameobjects/Tests/Runtime/StartStopTests.cs b/com.unity.netcode.gameobjects/Tests/Runtime/StartStopTests.cs
index bb928e1746..eaa4ebe91e 100644
--- a/com.unity.netcode.gameobjects/Tests/Runtime/StartStopTests.cs
+++ b/com.unity.netcode.gameobjects/Tests/Runtime/StartStopTests.cs
@@ -1,4 +1,5 @@
 using NUnit.Framework;
+using Unity.Netcode.TestHelpers.Runtime;
 using UnityEngine;
 
 namespace Unity.Netcode.RuntimeTests
@@ -7,6 +8,13 @@ internal class StartStopTests
     {
         private NetworkManager m_NetworkManager;
 
+        [OneTimeSetUp]
+        public void OneTimeSetup()
+        {
+            // This test does not need to run against the Rust server.
+            NetcodeIntegrationTestHelpers.IgnoreIfServiceEnviromentVariableSet();
+        }
+
         [SetUp]
         public void Setup()
         {
diff --git a/com.unity.netcode.gameobjects/Tests/Runtime/Timing/NetworkTimeSystemTests.cs b/com.unity.netcode.gameobjects/Tests/Runtime/Timing/NetworkTimeSystemTests.cs
index 7172feb302..64cfcf030e 100644
--- a/com.unity.netcode.gameobjects/Tests/Runtime/Timing/NetworkTimeSystemTests.cs
+++ b/com.unity.netcode.gameobjects/Tests/Runtime/Timing/NetworkTimeSystemTests.cs
@@ -17,6 +17,13 @@ internal class NetworkTimeSystemTests
 
         private float m_OriginalTimeScale = 1.0f;
 
+        [OneTimeSetUp]
+        public void OneTimeSetup()
+        {
+            // TODO: [CmbServiceTests] if this test is deemed needed to test against the CMB server then update this test.
+            NetcodeIntegrationTestHelpers.IgnoreIfServiceEnviromentVariableSet();
+        }
+
         [SetUp]
         public void Setup()
         {
diff --git a/com.unity.netcode.gameobjects/Tests/Runtime/Timing/TimeInitializationTest.cs b/com.unity.netcode.gameobjects/Tests/Runtime/Timing/TimeInitializationTest.cs
index dc06c2877d..28053fe167 100644
--- a/com.unity.netcode.gameobjects/Tests/Runtime/Timing/TimeInitializationTest.cs
+++ b/com.unity.netcode.gameobjects/Tests/Runtime/Timing/TimeInitializationTest.cs
@@ -15,6 +15,13 @@ internal class TimeInitializationTest
         private int m_ConnectedTick;
         private NetworkManager m_Client;
 
+        [OneTimeSetUp]
+        public void OneTimeSetup()
+        {
+            // TODO: [CmbServiceTests] if this test is deemed needed to test against the CMB server then update this test.
+            NetcodeIntegrationTestHelpers.IgnoreIfServiceEnviromentVariableSet();
+        }
+
         [UnityTest]
         public IEnumerator TestClientTimeInitializationOnConnect([Values(0, 1f)] float serverStartDelay, [Values(0, 1f)] float clientStartDelay, [Values(true, false)] bool isHost)
         {
diff --git a/com.unity.netcode.gameobjects/Tests/Runtime/Transports/UnityTransportConnectionTests.cs b/com.unity.netcode.gameobjects/Tests/Runtime/Transports/UnityTransportConnectionTests.cs
index 3e2c746082..c0a13e2f0d 100644
--- a/com.unity.netcode.gameobjects/Tests/Runtime/Transports/UnityTransportConnectionTests.cs
+++ b/com.unity.netcode.gameobjects/Tests/Runtime/Transports/UnityTransportConnectionTests.cs
@@ -3,6 +3,7 @@
 using System.Collections.Generic;
 using System.Linq;
 using NUnit.Framework;
+using Unity.Netcode.TestHelpers.Runtime;
 using Unity.Netcode.Transports.UTP;
 using UnityEngine;
 using UnityEngine.TestTools;
@@ -19,6 +20,13 @@ internal class UnityTransportConnectionTests
         private List m_ServerEvents;
         private List[] m_ClientsEvents = new List[k_NumClients];
 
+        [OneTimeSetUp]
+        public void OneTimeSetup()
+        {
+            // TODO: [CmbServiceTests] if this test is deemed needed to test against the CMB server then update this test.
+            NetcodeIntegrationTestHelpers.IgnoreIfServiceEnviromentVariableSet();
+        }
+
         [UnityTearDown]
         public IEnumerator Cleanup()
         {
diff --git a/com.unity.netcode.gameobjects/Tests/Runtime/Transports/UnityTransportTests.cs b/com.unity.netcode.gameobjects/Tests/Runtime/Transports/UnityTransportTests.cs
index 03bd6c2c4c..4963e5ea05 100644
--- a/com.unity.netcode.gameobjects/Tests/Runtime/Transports/UnityTransportTests.cs
+++ b/com.unity.netcode.gameobjects/Tests/Runtime/Transports/UnityTransportTests.cs
@@ -4,6 +4,7 @@
 using System.Linq;
 using System.Text;
 using NUnit.Framework;
+using Unity.Netcode.TestHelpers.Runtime;
 using Unity.Netcode.Transports.UTP;
 using Unity.Networking.Transport;
 using UnityEngine;
@@ -34,6 +35,13 @@ internal class UnityTransportTests
         private UnityTransport m_Server, m_Client1, m_Client2;
         private List m_ServerEvents, m_Client1Events, m_Client2Events;
 
+        [OneTimeSetUp]
+        public void OneTimeSetup()
+        {
+            // TODO: [CmbServiceTests] if this test is deemed needed to test against the CMB server then update this test.
+            NetcodeIntegrationTestHelpers.IgnoreIfServiceEnviromentVariableSet();
+        }
+
         [UnityTearDown]
         public IEnumerator Cleanup()
         {
diff --git a/com.unity.netcode.gameobjects/Tests/Runtime/UniversalRpcTests.cs b/com.unity.netcode.gameobjects/Tests/Runtime/UniversalRpcTests.cs
index 72b71ccbf5..91a61fd4a8 100644
--- a/com.unity.netcode.gameobjects/Tests/Runtime/UniversalRpcTests.cs
+++ b/com.unity.netcode.gameobjects/Tests/Runtime/UniversalRpcTests.cs
@@ -1542,16 +1542,6 @@ [Values] AllocationType allocationType
 
     }
 
-    [TestFixture(HostOrServer.Host)]
-    [TestFixture(HostOrServer.Server)]
-    internal class UniversalRpcTestDefaultSendToSpecifiedInParamsSendingToServerAndOwner : UniversalRpcTestsBase
-    {
-        public UniversalRpcTestDefaultSendToSpecifiedInParamsSendingToServerAndOwner(HostOrServer hostOrServer) : base(hostOrServer)
-        {
-
-        }
-    }
-
     [TestFixture(HostOrServer.DAHost)]
     [TestFixture(HostOrServer.Host)]
     [TestFixture(HostOrServer.Server)]
diff --git a/pvpExceptions.json b/pvpExceptions.json
index 7f54933590..4e721b02e8 100644
--- a/pvpExceptions.json
+++ b/pvpExceptions.json
@@ -173,7 +173,6 @@
           "Unity.Netcode.TestHelpers.Runtime.NetcodeIntegrationTestHelpers: uint GetNextGlobalIdHashValue(): undocumented",
           "Unity.Netcode.TestHelpers.Runtime.NetcodeIntegrationTestHelpers: IsNetcodeIntegrationTestRunning: undocumented",
           "Unity.Netcode.TestHelpers.Runtime.NetcodeIntegrationTestHelpers: void RegisterNetcodeIntegrationTest(bool): undocumented",
-          "Unity.Netcode.TestHelpers.Runtime.NetcodeIntegrationTestHelpers: GameObject CreateNetworkObjectPrefab(string, NetworkManager, params NetworkManager[]): undocumented",
           "Unity.Netcode.TestHelpers.Runtime.NetcodeIntegrationTestHelpers: void MarkAsSceneObjectRoot(GameObject, NetworkManager, NetworkManager[]): undocumented",
           "Unity.Netcode.TestHelpers.Runtime.NetcodeIntegrationTestHelpers: IEnumerator WaitForClientConnected(NetworkManager, ResultWrapper, float): missing ",
           "Unity.Netcode.TestHelpers.Runtime.NetcodeIntegrationTestHelpers: IEnumerator WaitForClientsConnected(NetworkManager[], ResultWrapper, float): missing ",
diff --git a/testproject/Assets/Tests/Runtime/AddressablesTests.cs b/testproject/Assets/Tests/Runtime/AddressablesTests.cs
index 8af531b0b2..0cab9cff2b 100644
--- a/testproject/Assets/Tests/Runtime/AddressablesTests.cs
+++ b/testproject/Assets/Tests/Runtime/AddressablesTests.cs
@@ -39,6 +39,12 @@ protected override void OnInlineTearDown()
             ShutdownAndCleanUp();
         }
 
+        // TODO: [CmbServiceTests] Adapt to run with the service
+        protected override bool UseCMBService()
+        {
+            return false;
+        }
+
         private IEnumerator LoadAsset(AssetReferenceGameObject asset, NetcodeIntegrationTestHelpers.ResultWrapper prefab)
         {
             var handle = asset.LoadAssetAsync();
diff --git a/testproject/Assets/Tests/Runtime/DontDestroyOnLoadTests.cs b/testproject/Assets/Tests/Runtime/DontDestroyOnLoadTests.cs
index dcea70efdd..105265b08f 100644
--- a/testproject/Assets/Tests/Runtime/DontDestroyOnLoadTests.cs
+++ b/testproject/Assets/Tests/Runtime/DontDestroyOnLoadTests.cs
@@ -9,12 +9,16 @@
 
 namespace TestProject.RuntimeTests
 {
+    [TestFixture(HostOrServer.Host)]
+    [TestFixture(HostOrServer.DAHost)]
     public class DontDestroyOnLoadTests : NetcodeIntegrationTest
     {
         private const int k_ClientsToConnect = 4;
         protected override int NumberOfClients => 0;
         private GameObject m_DontDestroyOnLoadObject;
 
+        public DontDestroyOnLoadTests(HostOrServer hostOrServer) : base(hostOrServer) { }
+
         protected override void OnServerAndClientsCreated()
         {
             m_DontDestroyOnLoadObject = CreateNetworkObjectPrefab("DDOLObject");
@@ -52,7 +56,7 @@ private bool AllClientsSpawnedObjectIntoDDOL()
         [UnityTest]
         public IEnumerator ValidateNetworkObjectSynchronization()
         {
-            var objectInstance = SpawnObject(m_DontDestroyOnLoadObject, m_ServerNetworkManager);
+            var objectInstance = SpawnObject(m_DontDestroyOnLoadObject, GetAuthorityNetworkManager());
             m_SpawnedNetworkObjectId = objectInstance.GetComponent().NetworkObjectId;
             // Wait a tick for the object to be automatically migrated into the DDOL
             yield return s_DefaultWaitForTick;
diff --git a/testproject/Assets/Tests/Runtime/MessageOrdering.cs b/testproject/Assets/Tests/Runtime/MessageOrdering.cs
index d4fe59193c..8295b20940 100644
--- a/testproject/Assets/Tests/Runtime/MessageOrdering.cs
+++ b/testproject/Assets/Tests/Runtime/MessageOrdering.cs
@@ -16,6 +16,12 @@ public class MessageOrderingTests
         private NetworkManager m_ServerNetworkManager;
         private NetworkManager[] m_ClientNetworkManagers;
 
+        [OneTimeSetUp]
+        public void OneTimeSetup()
+        {
+            // TODO: [CmbServiceTests] if this test is deemed needed to test against the CMB server then update this test.
+            NetcodeIntegrationTestHelpers.IgnoreIfServiceEnviromentVariableSet();
+        }
 
         [UnitySetUp]
         public IEnumerator SetUp()
diff --git a/testproject/Assets/Tests/Runtime/MultiClientConnectionApproval.cs b/testproject/Assets/Tests/Runtime/MultiClientConnectionApproval.cs
index fa3858c61d..cb85f0baa9 100644
--- a/testproject/Assets/Tests/Runtime/MultiClientConnectionApproval.cs
+++ b/testproject/Assets/Tests/Runtime/MultiClientConnectionApproval.cs
@@ -22,6 +22,13 @@ public class MultiClientConnectionApproval
         private bool m_DelayedApproval;
         private List m_ResponseToSet = new List();
 
+        [OneTimeSetUp]
+        public void OneTimeSetup()
+        {
+            // TODO: [CmbServiceTests] if this test is deemed needed to test against the CMB server then update this test.
+            NetcodeIntegrationTestHelpers.IgnoreIfServiceEnviromentVariableSet();
+        }
+
         /// 
         /// Tests connection approval and connection approval failure
         /// 
diff --git a/testproject/Assets/Tests/Runtime/NetworkSceneManager/ClientSynchronizationModeTests.cs b/testproject/Assets/Tests/Runtime/NetworkSceneManager/ClientSynchronizationModeTests.cs
index 5f776b2883..f69bec2d12 100644
--- a/testproject/Assets/Tests/Runtime/NetworkSceneManager/ClientSynchronizationModeTests.cs
+++ b/testproject/Assets/Tests/Runtime/NetworkSceneManager/ClientSynchronizationModeTests.cs
@@ -56,6 +56,12 @@ public ClientSynchronizationModeTests(ServerPreloadStates serverPreloadStates)
             m_ServerPreloadState = serverPreloadStates;
         }
 
+        // TODO: [CmbServiceTests] Adapt to run with the service
+        protected override bool UseCMBService()
+        {
+            return false;
+        }
+
         protected override IEnumerator OnSetup()
         {
             m_TempClientPreLoadedScenes.Clear();
diff --git a/testproject/Assets/Tests/Runtime/NetworkSceneManager/InScenePlacedNetworkObjectTests.cs b/testproject/Assets/Tests/Runtime/NetworkSceneManager/InScenePlacedNetworkObjectTests.cs
index bff15bcdc0..2904a510a4 100644
--- a/testproject/Assets/Tests/Runtime/NetworkSceneManager/InScenePlacedNetworkObjectTests.cs
+++ b/testproject/Assets/Tests/Runtime/NetworkSceneManager/InScenePlacedNetworkObjectTests.cs
@@ -581,6 +581,13 @@ internal class InScenePlacedNetworkObjectClientTests : NetcodeIntegrationTest
 
         private Scene m_Scene;
 
+
+        // TODO: [CmbServiceTests] Adapt to run with the service
+        protected override bool UseCMBService()
+        {
+            return false;
+        }
+
         protected override IEnumerator OnSetup()
         {
             SceneManager.sceneLoaded += SceneManager_sceneLoaded;
diff --git a/testproject/Assets/Tests/Runtime/NetworkSceneManager/NetworkObjectTestComponent.cs b/testproject/Assets/Tests/Runtime/NetworkSceneManager/NetworkObjectTestComponent.cs
index f2ea87833d..6a8594b2d7 100644
--- a/testproject/Assets/Tests/Runtime/NetworkSceneManager/NetworkObjectTestComponent.cs
+++ b/testproject/Assets/Tests/Runtime/NetworkSceneManager/NetworkObjectTestComponent.cs
@@ -56,7 +56,7 @@ public override void OnNetworkSpawn()
                 }
             }
 
-            if (IsServer)
+            if (IsServer || IsSessionOwner)
             {
                 ServerNetworkObjectInstance = NetworkObject;
                 if (DisableOnSpawn && !ObjectWasDisabledUponSpawn)
diff --git a/testproject/Assets/Tests/Runtime/NetworkSceneManager/NetworkSceneManagerDDOLTests.cs b/testproject/Assets/Tests/Runtime/NetworkSceneManager/NetworkSceneManagerDDOLTests.cs
index 4862c676aa..f38a311ea8 100644
--- a/testproject/Assets/Tests/Runtime/NetworkSceneManager/NetworkSceneManagerDDOLTests.cs
+++ b/testproject/Assets/Tests/Runtime/NetworkSceneManager/NetworkSceneManagerDDOLTests.cs
@@ -19,6 +19,13 @@ public class NetworkSceneManagerDDOLTests
 
         protected float m_ConditionMetFrequency = 0.1f;
 
+        [OneTimeSetUp]
+        public void OneTimeSetup()
+        {
+            // This does not need to be tested against a CMB Server
+            NetcodeIntegrationTestHelpers.IgnoreIfServiceEnviromentVariableSet();
+        }
+
         [UnitySetUp]
         protected IEnumerator SetUp()
         {
diff --git a/testproject/Assets/Tests/Runtime/NetworkSceneManager/SceneEventDataTests.cs b/testproject/Assets/Tests/Runtime/NetworkSceneManager/SceneEventDataTests.cs
index 457cdde9b7..3731d7a5ab 100644
--- a/testproject/Assets/Tests/Runtime/NetworkSceneManager/SceneEventDataTests.cs
+++ b/testproject/Assets/Tests/Runtime/NetworkSceneManager/SceneEventDataTests.cs
@@ -1,7 +1,9 @@
 using System;
 using System.Collections;
 using System.Collections.Generic;
+using NUnit.Framework;
 using Unity.Netcode;
+using Unity.Netcode.TestHelpers.Runtime;
 using Unity.Netcode.Transports.UTP;
 using UnityEngine;
 using UnityEngine.SceneManagement;
@@ -15,6 +17,13 @@ namespace TestProject.RuntimeTests
     /// 
     public class SceneEventDataTests
     {
+        [OneTimeSetUp]
+        public void OneTimeSetup()
+        {
+            // This test does not need to run against a CMB server
+            NetcodeIntegrationTestHelpers.IgnoreIfServiceEnviromentVariableSet();
+        }
+
         /// 
         /// This verifies that change from Allocator.TmpJob to Allocator.Persistent
         /// will not cause memory leak warning notifications if the scene event takes
diff --git a/testproject/Assets/Tests/Runtime/NetworkSceneManager/SpawnNetworkObjectsDuringSceneEventsTest.cs b/testproject/Assets/Tests/Runtime/NetworkSceneManager/SpawnNetworkObjectsDuringSceneEventsTest.cs
index 4450cf2b78..e91570fd9c 100644
--- a/testproject/Assets/Tests/Runtime/NetworkSceneManager/SpawnNetworkObjectsDuringSceneEventsTest.cs
+++ b/testproject/Assets/Tests/Runtime/NetworkSceneManager/SpawnNetworkObjectsDuringSceneEventsTest.cs
@@ -32,6 +32,12 @@ public override void OnNetworkSpawn()
             }
         }
 
+        // TODO: [CmbServiceTests] Adapt to run with the service
+        protected override bool UseCMBService()
+        {
+            return false;
+        }
+
         protected override void OnServerAndClientsCreated()
         {
             SpawnObjectTrackingComponent.SpawnedObjects = 0;
diff --git a/testproject/Assets/Tests/Runtime/NetworkTransform/NestedNetworkTransformTests.cs b/testproject/Assets/Tests/Runtime/NetworkTransform/NestedNetworkTransformTests.cs
index b99e044727..46ff5b7d58 100644
--- a/testproject/Assets/Tests/Runtime/NetworkTransform/NestedNetworkTransformTests.cs
+++ b/testproject/Assets/Tests/Runtime/NetworkTransform/NestedNetworkTransformTests.cs
@@ -129,6 +129,12 @@ public NestedNetworkTransformTests()
 
         }
 
+        // TODO: [CmbServiceTests] Adapt to run with the service
+        protected override bool UseCMBService()
+        {
+            return false;
+        }
+
         protected override void OnOneTimeSetup()
         {
             m_OriginalVarianceThreshold = base.GetDeltaVarianceThreshold();
diff --git a/testproject/Assets/Tests/Runtime/NetworkVariableInitializationOnNetworkSpawnTest.cs b/testproject/Assets/Tests/Runtime/NetworkVariableInitializationOnNetworkSpawnTest.cs
index 802519f4fe..e71979dfd7 100644
--- a/testproject/Assets/Tests/Runtime/NetworkVariableInitializationOnNetworkSpawnTest.cs
+++ b/testproject/Assets/Tests/Runtime/NetworkVariableInitializationOnNetworkSpawnTest.cs
@@ -12,6 +12,13 @@ public class NetworkVariableInitializationOnNetworkSpawnTest
     {
         private GameObject m_Prefab;
 
+        [OneTimeSetUp]
+        public void OneTimeSetup()
+        {
+            // TODO: [CmbServiceTests] if this test is deemed needed to test against the CMB server then update this test.
+            NetcodeIntegrationTestHelpers.IgnoreIfServiceEnviromentVariableSet();
+        }
+
         [UnitySetUp]
         public IEnumerator SetUp()
         {
diff --git a/testproject/Assets/Tests/Runtime/NoMemoryLeakOnNetworkManagerShutdownTest.cs b/testproject/Assets/Tests/Runtime/NoMemoryLeakOnNetworkManagerShutdownTest.cs
index c1024325f6..9204454cd5 100644
--- a/testproject/Assets/Tests/Runtime/NoMemoryLeakOnNetworkManagerShutdownTest.cs
+++ b/testproject/Assets/Tests/Runtime/NoMemoryLeakOnNetworkManagerShutdownTest.cs
@@ -12,6 +12,13 @@ public class NoMemoryLeakOnNetworkManagerShutdownTest
     {
         private GameObject m_Prefab;
 
+        [OneTimeSetUp]
+        public void OneTimeSetup()
+        {
+            // TODO: [CmbServiceTests] if this test is deemed needed to test against the CMB server then update this test.
+            NetcodeIntegrationTestHelpers.IgnoreIfServiceEnviromentVariableSet();
+        }
+
         [SetUp]
         public void Setup()
         {
diff --git a/testproject/Assets/Tests/Runtime/ObjectParenting/NetworkObjectParentingTests.cs b/testproject/Assets/Tests/Runtime/ObjectParenting/NetworkObjectParentingTests.cs
index c148a05d2c..a8eda1a829 100644
--- a/testproject/Assets/Tests/Runtime/ObjectParenting/NetworkObjectParentingTests.cs
+++ b/testproject/Assets/Tests/Runtime/ObjectParenting/NetworkObjectParentingTests.cs
@@ -38,6 +38,13 @@ public NetworkObjectParentingTests(NetworkTopologyTypes networkTopologyType)
             m_NetworkTopologyType = networkTopologyType;
         }
 
+        [OneTimeSetUp]
+        public void OneTimeSetup()
+        {
+            // TODO: [CmbServiceTests] if this test is deemed needed to test against the CMB server then update this test.
+            NetcodeIntegrationTestHelpers.IgnoreIfServiceEnviromentVariableSet();
+        }
+
         private void OnSceneLoaded(Scene scene, LoadSceneMode mode)
         {
             if (scene.name == nameof(NetworkObjectParentingTests))
diff --git a/testproject/Assets/Tests/Runtime/OnNetworkSpawnExceptionTests.cs b/testproject/Assets/Tests/Runtime/OnNetworkSpawnExceptionTests.cs
index db2886ac0d..ea81ac8409 100644
--- a/testproject/Assets/Tests/Runtime/OnNetworkSpawnExceptionTests.cs
+++ b/testproject/Assets/Tests/Runtime/OnNetworkSpawnExceptionTests.cs
@@ -94,6 +94,13 @@ public class OnNetworkSpawnExceptionTests : NetcodeIntegrationTest
         private GameObject m_DespawnWithAndWithoutExceptionPrefab;
 
         private const int k_NumObjects = 10;
+
+        // TODO: [CmbServiceTests] Adapt to run with the service
+        protected override bool UseCMBService()
+        {
+            return false;
+        }
+
         [UnityTest]
         public IEnumerator WhenOnNetworkSpawnThrowsException_FutureOnNetworkSpawnsAreNotPrevented()
         {
diff --git a/testproject/Assets/Tests/Runtime/PrefabExtendedTests.cs b/testproject/Assets/Tests/Runtime/PrefabExtendedTests.cs
index 7bfe12083f..665590d342 100644
--- a/testproject/Assets/Tests/Runtime/PrefabExtendedTests.cs
+++ b/testproject/Assets/Tests/Runtime/PrefabExtendedTests.cs
@@ -36,6 +36,12 @@ public enum SceneManagementTypes
 
         private StringBuilder m_ErrorLog = new StringBuilder();
 
+        // TODO: [CmbServiceTests] Adapt to run with the service
+        protected override bool UseCMBService()
+        {
+            return false;
+        }
+
         public PrefabExtendedTests(SceneManagementTypes sceneManagementType)
         {
             m_SceneManagementEnabled = sceneManagementType == SceneManagementTypes.SceneManagementEnabled;
diff --git a/testproject/Assets/Tests/Runtime/RpcObserverTests.cs b/testproject/Assets/Tests/Runtime/RpcObserverTests.cs
index d5a7e17542..0db86ccb1a 100644
--- a/testproject/Assets/Tests/Runtime/RpcObserverTests.cs
+++ b/testproject/Assets/Tests/Runtime/RpcObserverTests.cs
@@ -14,9 +14,8 @@ namespace TestProject.RuntimeTests
     /// Integration test to validate ClientRpcs will only
     /// send to observers of the NetworkObject
     /// 
-#if NGO_DAMODE
+
     [TestFixture(HostOrServer.DAHost)]
-#endif
     [TestFixture(HostOrServer.Host)]
     [TestFixture(HostOrServer.Server)]
     public class RpcObserverTests : NetcodeIntegrationTest
@@ -31,6 +30,12 @@ public class RpcObserverTests : NetcodeIntegrationTest
         private NativeArray m_NonObserverArrayError;
         private bool m_ArrayAllocated;
 
+        // TODO: [CmbServiceTests] Adapt to run with the service
+        protected override bool UseCMBService()
+        {
+            return false;
+        }
+
         public RpcObserverTests(HostOrServer hostOrServer) : base(hostOrServer) { }
 
         protected override void OnServerAndClientsCreated()
diff --git a/testproject/Assets/Tests/Runtime/RpcTestsAutomated.cs b/testproject/Assets/Tests/Runtime/RpcTestsAutomated.cs
index f99da71d52..228bfbfdd5 100644
--- a/testproject/Assets/Tests/Runtime/RpcTestsAutomated.cs
+++ b/testproject/Assets/Tests/Runtime/RpcTestsAutomated.cs
@@ -17,6 +17,12 @@ public class RpcTestsAutomated : NetcodeIntegrationTest
 
         protected override int NumberOfClients => 4;
 
+        // TODO: [CmbServiceTests] Adapt to run with the service
+        protected override bool UseCMBService()
+        {
+            return false;
+        }
+
         protected override NetworkManagerInstatiationMode OnSetIntegrationTestMode()
         {
             return NetworkManagerInstatiationMode.DoNotCreate;
diff --git a/testproject/Assets/Tests/Runtime/RpcUserSerializableTypesTest.cs b/testproject/Assets/Tests/Runtime/RpcUserSerializableTypesTest.cs
index 83e327e5a7..e9cc45211f 100644
--- a/testproject/Assets/Tests/Runtime/RpcUserSerializableTypesTest.cs
+++ b/testproject/Assets/Tests/Runtime/RpcUserSerializableTypesTest.cs
@@ -48,10 +48,9 @@ public void NetworkSerialize(BufferSerializer
         }
     }
 
-#if NGO_DAMODE
+
     [TestFixture(NetworkTopologyTypes.DistributedAuthority)]
     [TestFixture(NetworkTopologyTypes.ClientServer)]
-#endif 
     public class RpcUserSerializableTypesTest : NetcodeIntegrationTest
     {
         private UserSerializableClass m_UserSerializableClass;
@@ -83,9 +82,13 @@ public class RpcUserSerializableTypesTest : NetcodeIntegrationTest
 
         protected override int NumberOfClients => 1;
 
-#if NGO_DAMODE
+        // TODO: [CmbServiceTests] Adapt to run with the service
+        protected override bool UseCMBService()
+        {
+            return false;
+        }
+
         public RpcUserSerializableTypesTest(NetworkTopologyTypes networkTopologyType) : base(networkTopologyType) { }
-#endif
 
         protected override NetworkManagerInstatiationMode OnSetIntegrationTestMode()
         {
@@ -114,7 +117,7 @@ public IEnumerator NetworkSerializableTest()
             // [Client-Side] We only need to get the client side Player's NetworkObject so we can grab that instance of the TestSerializationComponent
             // Use the client's instance of the 
             var targetContext = m_ClientNetworkManagers[0];
-#if NGO_DAMODE
+
             // When in distributed authority mode:
             // Owner Instances
             // - Can send ClientRpcs
@@ -127,7 +130,7 @@ public IEnumerator NetworkSerializableTest()
                 // Use the server instance of the client's player
                 targetContext = m_ServerNetworkManager;
             }
-#endif
+
             var clientContextPlayerResult = new NetcodeIntegrationTestHelpers.ResultWrapper();
             yield return NetcodeIntegrationTestHelpers.GetNetworkObjectByRepresentation((x => x.IsPlayerObject && x.OwnerClientId == m_ClientNetworkManagers[0].LocalClientId), targetContext, clientContextPlayerResult);
 
@@ -339,7 +342,6 @@ public IEnumerator ExtensionMethodRpcTest()
                                  serverIntListCalled && serverStrListCalled;
             };
 
-#if NGO_DAMODE
             // When in distributed authority mode:
             // Owner Instances
             // - Can send ClientRpcs
@@ -356,7 +358,6 @@ public IEnumerator ExtensionMethodRpcTest()
                 serverSideNetworkBehaviourClass.SendStringListOwnerRpc(strList);
             }
             else
-#endif
             {
                 clientSideNetworkBehaviourClass.SendMyObjectServerRpc(obj);
                 clientSideNetworkBehaviourClass.SendMySharedObjectReferencedByIdServerRpc(obj2);
@@ -533,7 +534,6 @@ public IEnumerator ExtensionMethodArrayRpcTest()
                                  serverIntListCalled && serverStrListCalled;
             };
 
-#if NGO_DAMODE
             // When in distributed authority mode:
             // Owner Instances
             // - Can send ClientRpcs
@@ -550,7 +550,6 @@ public IEnumerator ExtensionMethodArrayRpcTest()
                 serverSideNetworkBehaviourClass.SendStringListOwnerRpc(strList);
             }
             else
-#endif
             {
                 clientSideNetworkBehaviourClass.SendMyObjectServerRpc(objs);
                 clientSideNetworkBehaviourClass.SendMySharedObjectReferencedByIdServerRpc(objs2);
@@ -703,7 +702,6 @@ public IEnumerator NetworkSerializableArrayTestHandler(int arraySize, bool sendN
             yield return NetcodeIntegrationTestHelpers.GetNetworkObjectByRepresentation((x => x.IsPlayerObject && x.OwnerClientId == m_ClientNetworkManagers[0].LocalClientId), m_ClientNetworkManagers[0], clientClientPlayerResult);
             var clientSideNetworkBehaviourClass = clientClientPlayerResult.Result.gameObject.GetComponent();
 
-#if NGO_DAMODE
             // When in distributed authority mode:
             // Owner Instances
             // - Can send ClientRpcs
@@ -719,7 +717,6 @@ public IEnumerator NetworkSerializableArrayTestHandler(int arraySize, bool sendN
                 serverSideNetworkBehaviourClass.OnSerializableStructsUpdatedClientRpc = OnClientReceivedUserSerializableStructsUpdated;
             }
             else
-#endif
             {
                 serverSideNetworkBehaviourClass.OnSerializableClassesUpdatedServerRpc = OnServerReceivedUserSerializableClassesUpdated;
                 serverSideNetworkBehaviourClass.OnSerializableStructsUpdatedServerRpc = OnServerReceivedUserSerializableStructsUpdated;
@@ -749,7 +746,6 @@ public IEnumerator NetworkSerializableArrayTestHandler(int arraySize, bool sendN
                     };
                     m_UserSerializableStructArray.Add(userSerializableStruct);
                 }
-#if NGO_DAMODE
                 // When in distributed authority mode:
                 // Owner Instances
                 // - Can send ClientRpcs
@@ -763,7 +759,6 @@ public IEnumerator NetworkSerializableArrayTestHandler(int arraySize, bool sendN
                     serverSideNetworkBehaviourClass.ClientStartStructTest(m_UserSerializableStructArray.ToArray());
                 }
                 else
-#endif
                 {
                     clientSideNetworkBehaviourClass.ClientStartTest(m_UserSerializableClassArray.ToArray());
                     clientSideNetworkBehaviourClass.ClientStartStructTest(m_UserSerializableStructArray.ToArray());
@@ -771,7 +766,6 @@ public IEnumerator NetworkSerializableArrayTestHandler(int arraySize, bool sendN
             }
             else
             {
-#if NGO_DAMODE
                 // When in distributed authority mode:
                 // Owner Instances
                 // - Can send ClientRpcs
@@ -785,7 +779,6 @@ public IEnumerator NetworkSerializableArrayTestHandler(int arraySize, bool sendN
                     serverSideNetworkBehaviourClass.ClientStartStructTest(null);
                 }
                 else
-#endif
                 {
                     clientSideNetworkBehaviourClass.ClientStartTest(null);
                     clientSideNetworkBehaviourClass.ClientStartStructTest(null);
@@ -958,13 +951,11 @@ public class TestSerializationComponent : NetworkBehaviour
         /// 
         public void ClientStartTest(UserSerializableClass userSerializableClass)
         {
-#if NGO_DAMODE
             if (NetworkManager.DistributedAuthorityMode)
             {
                 SendOwnerSerializedDataClassRpc(userSerializableClass);
             }
             else
-#endif
             {
                 SendServerSerializedDataClassServerRpc(userSerializableClass);
             }
@@ -1024,13 +1015,11 @@ private void SendClientSerializedDataClassClientRpc(UserSerializableClass userSe
         #region ClientStartTest(TemplatedType t1val, TemplatedType.NestedTemplatedType t2val, TemplatedType.Enum enumVal)
         public void ClientStartTest(TemplatedType t1val, TemplatedType.NestedTemplatedType t2val, TemplatedType.Enum enumVal)
         {
-#if NGO_DAMODE
             if (NetworkManager.DistributedAuthorityMode)
             {
                 SendTemplateStructOwnerRpc(t1val, t2val, enumVal);
             }
             else
-#endif
             {
                 SendTemplateStructServerRpc(t1val, t2val, enumVal);
             }
@@ -1076,13 +1065,11 @@ private void SendTemplateStructClientRpc(TemplatedType t1val, TemplatedType
         #region ClientStartTest(NetworkSerializableTemplatedType t1val, NetworkSerializableTemplatedType.NestedTemplatedType t2val)
         public void ClientStartTest(NetworkSerializableTemplatedType t1val, NetworkSerializableTemplatedType.NestedTemplatedType t2val)
         {
-#if NGO_DAMODE
             if (NetworkManager.DistributedAuthorityMode)
             {
                 SendNetworkSerializableTemplateStructOwnerRpc(t1val, t2val);
             }
             else
-#endif
             {
                 SendNetworkSerializableTemplateStructServerRpc(t1val, t2val);
             }
@@ -1128,13 +1115,11 @@ private void SendNetworkSerializableTemplateStructClientRpc(NetworkSerializableT
         #region ClientStartTest(TemplatedType[] t1val, TemplatedType.NestedTemplatedType[] t2val, TemplatedType.Enum[] enumVal)
         public void ClientStartTest(TemplatedType[] t1val, TemplatedType.NestedTemplatedType[] t2val, TemplatedType.Enum[] enumVal)
         {
-#if NGO_DAMODE
             if (NetworkManager.DistributedAuthorityMode)
             {
                 SendTemplateStructOwnerRpc(t1val, t2val, enumVal);
             }
             else
-#endif
             {
                 SendTemplateStructServerRpc(t1val, t2val, enumVal);
             }
@@ -1181,13 +1166,11 @@ private void SendTemplateStructClientRpc(TemplatedType[] t1val, TemplatedTy
         #region ClientStartTest(NetworkSerializableTemplatedType[] t1val, NetworkSerializableTemplatedType.NestedTemplatedType[] t2val)
         public void ClientStartTest(NetworkSerializableTemplatedType[] t1val, NetworkSerializableTemplatedType.NestedTemplatedType[] t2val)
         {
-#if NGO_DAMODE
             if (NetworkManager.DistributedAuthorityMode)
             {
                 SendNetworkSerializableTemplateStructOwnerRpc(t1val, t2val);
             }
             else
-#endif
             {
                 SendNetworkSerializableTemplateStructServerRpc(t1val, t2val);
             }
@@ -1237,13 +1220,11 @@ private void SendNetworkSerializableTemplateStructClientRpc(NetworkSerializableT
         /// 
         public void ClientStartTest(UserSerializableStruct userSerializableStruct)
         {
-#if NGO_DAMODE
             if (NetworkManager.DistributedAuthorityMode)
             {
                 SendServerSerializedDataStructOwnerRpc(userSerializableStruct);
             }
             else
-#endif
             {
                 SendServerSerializedDataStructServerRpc(userSerializableStruct);
             }
@@ -1288,10 +1269,6 @@ private void SendClientSerializedDataStructClientRpc(UserSerializableStruct user
         #endregion
 
 
-
-
-
-
         #region SendMyObject
         [Rpc(SendTo.NotOwner)]
         public void SendMyObjectNotOwnerRpc(MyObject obj)
@@ -1469,13 +1446,11 @@ public class TestCustomTypesArrayComponent : NetworkBehaviour
         /// 
         public void ClientStartTest(UserSerializableClass[] userSerializableClasses)
         {
-#if NGO_DAMODE
             if (NetworkManager.DistributedAuthorityMode)
             {
                 SendServerSerializedDataClassArryOwnerRpc(userSerializableClasses);
             }
             else
-#endif
             {
                 SendServerSerializedDataClassArryServerRpc(userSerializableClasses);
             }
@@ -1536,13 +1511,11 @@ private void SendClientSerializedDataClassArrayClientRpc(UserSerializableClass[]
         /// 
         public void ClientStartStructTest(UserSerializableStruct[] userSerializableStructs)
         {
-#if NGO_DAMODE
             if (NetworkManager.DistributedAuthorityMode)
             {
                 SendServerSerializedDataStructArrayOwnerRpc(userSerializableStructs);
             }
             else
-#endif
             {
                 SendServerSerializedDataStructArrayServerRpc(userSerializableStructs);
             }
diff --git a/testproject/Assets/Tests/Runtime/SceneObjectsNotDestroyedOnShutdownTest.cs b/testproject/Assets/Tests/Runtime/SceneObjectsNotDestroyedOnShutdownTest.cs
index c0d5e87b04..ae2442ece8 100644
--- a/testproject/Assets/Tests/Runtime/SceneObjectsNotDestroyedOnShutdownTest.cs
+++ b/testproject/Assets/Tests/Runtime/SceneObjectsNotDestroyedOnShutdownTest.cs
@@ -19,6 +19,12 @@ public class SceneObjectsNotDestroyedOnShutdownTest : NetcodeIntegrationTest
         private Scene m_TestScene;
         private WaitForSeconds m_DefaultWaitForTick = new WaitForSeconds(1.0f / 30);
 
+        // TODO: [CmbServiceTests] Adapt to run with the service
+        protected override bool UseCMBService()
+        {
+            return false;
+        }
+
         [UnityTest]
         public IEnumerator SceneObjectsNotDestroyedOnShutdown()
         {
@@ -27,30 +33,19 @@ public IEnumerator SceneObjectsNotDestroyedOnShutdown()
 
             yield return WaitForConditionOrTimeOut(() => m_TestScene.IsValid() && m_TestScene.isLoaded);
             AssertOnTimeout($"Timed out waiting for scene {k_TestScene} to load!");
-#if UNITY_2023_1_OR_NEWER
             var loadedInSceneObject = Object.FindObjectsByType(FindObjectsSortMode.InstanceID).Where((c) => c.name.Contains(k_SceneObjectName)).FirstOrDefault();
-#else
-            var loadedInSceneObject = Object.FindObjectsOfType().Where((c) => c.name.Contains(k_SceneObjectName)).FirstOrDefault();
-#endif
             Assert.IsNotNull(loadedInSceneObject, $"Failed to find {k_SceneObjectName} before starting client!");
 
             AssertOnTimeout($"Timed out waiting to find {k_SceneObjectName} after scene load and before starting client!\"");
 
             yield return CreateAndStartNewClient();
 
-#if UNITY_2023_1_OR_NEWER
             var loadedInSceneObjects = Object.FindObjectsByType(FindObjectsSortMode.InstanceID).Where((c) => c.name.Contains(k_SceneObjectName));
-#else
-            var loadedInSceneObjects = Object.FindObjectsOfType().Where((c) => c.name.Contains(k_SceneObjectName));
-#endif
             Assert.IsTrue(loadedInSceneObjects.Count() > 1, $"Only found one instance of {k_SceneObjectName} after client connected!");
             m_ClientNetworkManagers[0].Shutdown();
             yield return m_DefaultWaitForTick;
-#if UNITY_2023_1_OR_NEWER
             loadedInSceneObjects = Object.FindObjectsByType(FindObjectsSortMode.InstanceID).Where((c) => c.name.Contains(k_SceneObjectName));
-#else
-            loadedInSceneObjects = Object.FindObjectsOfType().Where((c) => c.name.Contains(k_SceneObjectName));
-#endif
+
             Assert.IsTrue(loadedInSceneObjects.Count() > 1, $"Only found one instance of {k_SceneObjectName} after client shutdown!");
         }
 
@@ -63,11 +58,7 @@ public IEnumerator ChildSceneObjectsDoNotDestroyOnShutdown()
             yield return WaitForConditionOrTimeOut(() => m_TestScene.IsValid() && m_TestScene.isLoaded);
             AssertOnTimeout($"Timed out waiting for scene {k_TestScene} to load!");
 
-#if UNITY_2023_1_OR_NEWER
             var loadedInSceneObject = Object.FindObjectsByType(FindObjectsSortMode.InstanceID).Where((c) => c.name.Contains(k_SceneObjectName)).FirstOrDefault();
-#else
-            var loadedInSceneObject = Object.FindObjectsOfType().Where((c) => c.name.Contains(k_SceneObjectName)).FirstOrDefault();
-#endif
             Assert.IsNotNull(loadedInSceneObject, $"Failed to find {k_SceneObjectName} before starting client!");
             yield return CreateAndStartNewClient();
 
@@ -77,11 +68,7 @@ public IEnumerator ChildSceneObjectsDoNotDestroyOnShutdown()
             yield return WaitForConditionOrTimeOut(() => PlayerHasChildren(clientId));
             AssertOnTimeout($"Client-{clientId} player never parented {k_SceneObjectName}!");
 
-#if UNITY_2023_1_OR_NEWER
             var loadedInSceneObjects = Object.FindObjectsByType(FindObjectsSortMode.InstanceID).Where((c) => c.name.Contains(k_SceneObjectName));
-#else
-            var loadedInSceneObjects = Object.FindObjectsOfType().Where((c) => c.name.Contains(k_SceneObjectName));
-#endif
             Assert.IsTrue(loadedInSceneObjects.Count() > 1, $"Only found one instance of {k_SceneObjectName} after client connected!");
             m_ClientNetworkManagers[0].Shutdown();
             yield return m_DefaultWaitForTick;
@@ -89,11 +76,8 @@ public IEnumerator ChildSceneObjectsDoNotDestroyOnShutdown()
             // Sanity check to make sure the client's player no longer has any children
             yield return WaitForConditionOrTimeOut(() => PlayerNoLongerExistsWithChildren(clientId));
             AssertOnTimeout($"Client-{clientId} player still exits with children after client shutdown!");
-#if UNITY_2023_1_OR_NEWER
+
             loadedInSceneObjects = Object.FindObjectsByType(FindObjectsSortMode.InstanceID).Where((c) => c.name.Contains(k_SceneObjectName));
-#else
-            loadedInSceneObjects = Object.FindObjectsOfType().Where((c) => c.name.Contains(k_SceneObjectName));
-#endif
             // Make sure any in-scene placed NetworkObject instantiated has no parent
             foreach (var insceneObject in loadedInSceneObjects)
             {