diff --git a/Applications/ApplicationsLib/Simulation.cpp b/Applications/ApplicationsLib/Simulation.cpp
index ffdd5fb81127c8ac4e6676cd5c3c279621fd0461..f3c8f59d680ef53f152ce6c9ea4af05eba5c25ff 100644
--- a/Applications/ApplicationsLib/Simulation.cpp
+++ b/Applications/ApplicationsLib/Simulation.cpp
@@ -25,16 +25,9 @@
 #include "ProcessLib/TimeLoop.h"
 
 Simulation::Simulation(int argc, char* argv[])
-    : linear_solver_library_setup(argc, argv),
-#if defined(USE_PETSC)
-      controller(vtkSmartPointer<vtkMPIController>::New()),
-#endif
-      test_definition{std::nullopt}
+    : linear_solver_library_setup(argc, argv), test_definition{std::nullopt}
 {
 #if defined(USE_PETSC)
-    controller->Initialize(&argc, &argv, 1);
-    vtkMPIController::SetGlobalController(controller);
-
     {  // Can be called only after MPI_INIT.
         int mpi_rank;
         MPI_Comm_rank(PETSC_COMM_WORLD, &mpi_rank);
@@ -131,7 +124,4 @@ Simulation::~Simulation()
         InSituLib::Finalize();
     }
 #endif
-#if defined(USE_PETSC)
-    controller->Finalize(1);
-#endif
 }
diff --git a/Applications/ApplicationsLib/Simulation.h b/Applications/ApplicationsLib/Simulation.h
index 5ca7887ea771ea18a3814132cf48d5d6dabfd702..c3d60754d2c10bb6a01218dfd78559b5f444f3b7 100644
--- a/Applications/ApplicationsLib/Simulation.h
+++ b/Applications/ApplicationsLib/Simulation.h
@@ -10,11 +10,6 @@
  *
  */
 
-#ifdef USE_PETSC
-#include <vtkMPIController.h>
-#include <vtkSmartPointer.h>
-#endif
-
 #include "Applications/ApplicationsLib/LinearSolverLibrarySetup.h"
 #include "Applications/ApplicationsLib/TestDefinition.h"
 
@@ -40,9 +35,6 @@ public:
 
 private:
     ApplicationsLib::LinearSolverLibrarySetup linear_solver_library_setup;
-#if defined(USE_PETSC)
-    vtkSmartPointer<vtkMPIController> controller;
-#endif
     std::unique_ptr<ProjectData> project_data;
     std::optional<ApplicationsLib::TestDefinition> test_definition;
 };
diff --git a/Applications/Utils/ModelPreparation/PartitionMesh/BinaryToPVTU.cpp b/Applications/Utils/ModelPreparation/PartitionMesh/BinaryToPVTU.cpp
index b4d073a3fadb0bfbe10d28f02e58b1297309f590..3e6de074752ef8761488cd92a3fd53ded0e54611 100644
--- a/Applications/Utils/ModelPreparation/PartitionMesh/BinaryToPVTU.cpp
+++ b/Applications/Utils/ModelPreparation/PartitionMesh/BinaryToPVTU.cpp
@@ -13,8 +13,6 @@
 #include <mpi.h>
 #include <spdlog/spdlog.h>
 #include <tclap/CmdLine.h>
-#include <vtkMPIController.h>
-#include <vtkSmartPointer.h>
 
 #include "BaseLib/CPUTime.h"
 #include "BaseLib/FileTools.h"
@@ -86,12 +84,6 @@ int main(int argc, char* argv[])
     MPI_Comm_rank(MPI_COMM_WORLD, &mpi_rank);
     spdlog::set_pattern(fmt::format("[{}] %^%l:%$ %v", mpi_rank));
 
-    // init vtkMPI
-    vtkSmartPointer<vtkMPIController> controller =
-        vtkSmartPointer<vtkMPIController>::New();
-    controller->Initialize(&argc, &argv, 1);
-    vtkMPIController::SetGlobalController(controller);
-
     MeshLib::NodePartitionedMesh* mesh =
         dynamic_cast<MeshLib::NodePartitionedMesh*>(
             MeshLib::IO::readMeshFromFile(mesh_input.getValue()));
diff --git a/Applications/Utils/ModelPreparation/PartitionMesh/CMakeLists.txt b/Applications/Utils/ModelPreparation/PartitionMesh/CMakeLists.txt
index 00a0b5489c77e70cf2b2e58bf74c3ec17cc21476..06d2e80887c5b24e2e032a9ed74056c0ab1acbf3 100644
--- a/Applications/Utils/ModelPreparation/PartitionMesh/CMakeLists.txt
+++ b/Applications/Utils/ModelPreparation/PartitionMesh/CMakeLists.txt
@@ -4,7 +4,7 @@ if(OGS_USE_MPI)
     )
     target_link_libraries(
         binaryToPVTU GitInfoLib MeshLib tclap
-        $<$<TARGET_EXISTS:MPI::MPI_CXX>:MPI::MPI_CXX> VTK::ParallelMPI
+        $<$<TARGET_EXISTS:MPI::MPI_CXX>:MPI::MPI_CXX>
     )
     install(TARGETS binaryToPVTU RUNTIME DESTINATION bin)
 endif()
diff --git a/scripts/cmake/Dependencies.cmake b/scripts/cmake/Dependencies.cmake
index 5f468f80d56df04932578e4bd592bfcfc3979256..a2dfaf8009276ad1352c502d47839b79b4d346b3 100644
--- a/scripts/cmake/Dependencies.cmake
+++ b/scripts/cmake/Dependencies.cmake
@@ -419,7 +419,7 @@ if(CMAKE_BUILD_TYPE STREQUAL "Release" AND OGS_BUILD_TESTING)
         VERSION 3.0.0
         GIT_REPOSITORY https://gitlab.opengeosys.org/ogs/xdmflib.git
         GIT_TAG 92a851f1acb87ad5367eb62f9b97785bedb700bb
-        OPTIONS "XDMF_LIBNAME OgsXdmf"
+        OPTIONS "XDMF_LIBNAME OgsXdmf" "CMAKE_MACOSX_RPATH ON"
         EXCLUDE_FROM_ALL YES
     )
     if(xdmf_ADDED)
diff --git a/web/data/versions.json b/web/data/versions.json
index 71fcd654ef6edbc96e52783a5684c996471d6568..26bb1b5a6f865e6ddb58b9e81674d6741f53fbba 100644
--- a/web/data/versions.json
+++ b/web/data/versions.json
@@ -90,9 +90,7 @@
             "ogscm": "toolchain.CC == \"mpicc\""
           },
           "cmake": [
-            "VTK_MODULE_ENABLE_VTK_IOParallelXML=YES",
-            "VTK_MODULE_ENABLE_VTK_ParallelMPI=YES",
-            "VTK_USE_MPI=ON"
+            "VTK_MODULE_ENABLE_VTK_IOParallelXML=YES"
           ]
         },
         {