diff --git a/src/mesh/Connectivity.cpp b/src/mesh/Connectivity.cpp
index c55ccd89970668f495602769dd7b17c4241a9a34..bd1e0d85b6f94d1d2d00326857853f4da75eacfe 100644
--- a/src/mesh/Connectivity.cpp
+++ b/src/mesh/Connectivity.cpp
@@ -9,9 +9,7 @@
 
 template <size_t Dimension>
 Connectivity<Dimension>::Connectivity() : m_id{GlobalVariableManager::instance().getAndIncrementConnectivityId()}
-{
-  Assert(parallel::allReduceMin(m_id) == m_id, "Parallel connectivity with different ids");
-}
+{}
 
 template <size_t Dimension>
 void
diff --git a/src/mesh/ConnectivityDispatcher.cpp b/src/mesh/ConnectivityDispatcher.cpp
index 797ac6cff42c5a1077686f28515793f990b6218a..dde1f930d26d31faa21d06bf2b8d94568ccb93f1 100644
--- a/src/mesh/ConnectivityDispatcher.cpp
+++ b/src/mesh/ConnectivityDispatcher.cpp
@@ -685,6 +685,13 @@ template <int Dimension>
 ConnectivityDispatcher<Dimension>::ConnectivityDispatcher(const ConnectivityType& connectivity)
   : m_connectivity(connectivity)
 {
+  {
+    Array connectivity_id_list = parallel::allGather(connectivity.id());
+    if (min(connectivity_id_list) != max(connectivity_id_list)) {
+      throw UnexpectedError("connectivity ids diverged in parallel");
+    }
+  }
+
   this->_buildNewOwner<ItemType::cell>();
   if constexpr (Dimension > 1) {
     this->_buildNewOwner<ItemType::face>();
@@ -745,6 +752,13 @@ ConnectivityDispatcher<Dimension>::ConnectivityDispatcher(const ConnectivityType
   this->_buildItemReferenceList<ItemType::node>();
 
   m_dispatched_connectivity = ConnectivityType::build(m_new_descriptor);
+
+  {
+    Array connectivity_id_list = parallel::allGather(m_dispatched_connectivity->id());
+    if (min(connectivity_id_list) != max(connectivity_id_list)) {
+      throw UnexpectedError("connectivity ids diverged in parallel");
+    }
+  }
 }
 
 template ConnectivityDispatcher<1>::ConnectivityDispatcher(const ConnectivityType&);