diff --git a/.gitmodules b/.gitmodules
index f25f5e6b5ba69ce479e43c1f50e91366c6f41dc8..15e5d5f64eef43c016c95ddcfc3f36527d0c068f 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -1,6 +1,3 @@
-[submodule "ThirdParty/metis"]
-	path = ThirdParty/metis
-	url = https://github.com/scibuilder/metis.git
 [submodule "ThirdParty/SwmmInterface"]
 	path = ThirdParty/SwmmInterface
 	url = https://github.com/ufz/SwmmInterface.git
diff --git a/Applications/Utils/ModelPreparation/PartitionMesh/CMakeLists.txt b/Applications/Utils/ModelPreparation/PartitionMesh/CMakeLists.txt
index 26815713ce4c80c1e2bb460c95fe2f44ee46353f..71d080d9f284e707900b3eedc596617cc69f9dd1 100644
--- a/Applications/Utils/ModelPreparation/PartitionMesh/CMakeLists.txt
+++ b/Applications/Utils/ModelPreparation/PartitionMesh/CMakeLists.txt
@@ -1,3 +1,11 @@
+CPMAddPackage(
+    NAME metis
+    GITHUB_REPOSITORY scibuilder/metis
+    GIT_TAG 982842a5ace9b3da2b2800817eb9e5fd3b42966b
+    DOWNLOAD_ONLY YES
+)
+include(${PROJECT_SOURCE_DIR}/scripts/cmake/MetisSetup.cmake)
+
 add_executable(partmesh PartitionMesh.cpp Metis.cpp NodeWiseMeshPartitioner.cpp)
 set_target_properties(partmesh PROPERTIES FOLDER Utilities)
 target_link_libraries(partmesh GitInfoLib MeshLib tclap)
diff --git a/ThirdParty/CMakeLists.txt b/ThirdParty/CMakeLists.txt
index 6b2afcd55664b1ae584c6f96fd414235dcd2e1f4..99ce676bed02cf31729d84dc213a589e44990bfa 100644
--- a/ThirdParty/CMakeLists.txt
+++ b/ThirdParty/CMakeLists.txt
@@ -67,11 +67,6 @@ if(OGS_USE_PYTHON)
 
 endif()
 
-if(OGS_BUILD_UTILS)
-    include(${PROJECT_SOURCE_DIR}/scripts/cmake/MetisSetup.cmake)
-    list(APPEND DISABLE_WARNINGS_TARGETS ogs_metis mpmetis)
-endif()
-
 if(OGS_USE_XDMF)
     find_package(ZLIB REQUIRED) # ZLIB is a HDF5 dependency
     set(XDMF_LIBNAME OgsXdmf CACHE INTERNAL "")
diff --git a/ThirdParty/metis b/ThirdParty/metis
deleted file mode 160000
index 982842a5ace9b3da2b2800817eb9e5fd3b42966b..0000000000000000000000000000000000000000
--- a/ThirdParty/metis
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit 982842a5ace9b3da2b2800817eb9e5fd3b42966b
diff --git a/scripts/cmake/MetisSetup.cmake b/scripts/cmake/MetisSetup.cmake
index 613c7e8e5ceb86c671249f898ccfa1279a9705bd..1fcf26182fda1d6eb48836c81bcacd967ea091c0 100644
--- a/scripts/cmake/MetisSetup.cmake
+++ b/scripts/cmake/MetisSetup.cmake
@@ -1,7 +1,7 @@
 message( STATUS "The METIS package is copyrighted by the Regents of the University of Minnesota." )
 message( STATUS "Please read the license of the METIS package carefully before you use the METIS." )
 
-set(METIS_PATH ${PROJECT_SOURCE_DIR}/ThirdParty/metis)
+set(METIS_PATH ${metis_SOURCE_DIR})
 add_definitions(-DUSE_GKREGEX)
 set(GKLIB_PATH "${METIS_PATH}/GKlib" CACHE PATH "path to GKlib")
 
diff --git a/scripts/cmake/SubmoduleSetup.cmake b/scripts/cmake/SubmoduleSetup.cmake
index 64627def806967a1029a66e51a721eb8c22f9814..a567dd0705923ddfe009c65a2dc1fb8eb6330d8d 100644
--- a/scripts/cmake/SubmoduleSetup.cmake
+++ b/scripts/cmake/SubmoduleSetup.cmake
@@ -9,10 +9,6 @@ set(REQUIRED_SUBMODULES
 if(OGS_USE_XDMF)
     list(APPEND REQUIRED_SUBMODULES ThirdParty/xdmf)
 endif()
-if(OGS_BUILD_UTILS)
-    # Required by the partmesh tool, which is build with utils only.
-    list(APPEND REQUIRED_SUBMODULES ThirdParty/metis)
-endif()
 if(OGS_BUILD_SWMM)
     list(APPEND REQUIRED_SUBMODULES ThirdParty/SwmmInterface)
 endif()