diff --git a/.gitmodules b/.gitmodules
index a3e069e3f6400cf56773a54931654bfe414f7350..cea13b515f2459b41a4ebca2cbccf83f5d475a97 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -1,9 +1,6 @@
 [submodule "ThirdParty/tetgen"]
 	path = ThirdParty/tetgen
 	url = https://github.com/ufz/tetgen.git
-[submodule "vtkdiff"]
-	path = ThirdParty/vtkdiff
-	url = https://github.com/ufz/vtkdiff.git
 [submodule "ThirdParty/metis"]
 	path = ThirdParty/metis
 	url = https://github.com/scibuilder/metis.git
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 72503191ce9b235a226e3b5ece3f2f18c6de2338..98f3a8a494fec54635c3a79f85451d6d3d30d5fb 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -226,11 +226,6 @@ include_directories(
     ${CMAKE_CURRENT_SOURCE_DIR}/ThirdParty/json/include
 )
 
-# vtkdiff
-if(BUILD_TESTING)
-    add_subdirectory(ThirdParty/vtkdiff)
-    install(PROGRAMS $<TARGET_FILE:vtkdiff> DESTINATION bin COMPONENT ogs_extras)
-endif()
 # xdmfdiff
 if(OGS_USE_XDMF AND BUILD_TESTING)
     add_subdirectory(Tests/xdmfdiff)
diff --git a/ThirdParty/vtkdiff b/ThirdParty/vtkdiff
deleted file mode 160000
index 49403cee266bb8e80405a02d677dbb5f71afc61a..0000000000000000000000000000000000000000
--- a/ThirdParty/vtkdiff
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit 49403cee266bb8e80405a02d677dbb5f71afc61a
diff --git a/scripts/cmake/Find.cmake b/scripts/cmake/Find.cmake
index a1cd935fa3009b4076daa6dea956a663c43a0122..5769f70e62112c50db799ac307388ba2302a56be 100644
--- a/scripts/cmake/Find.cmake
+++ b/scripts/cmake/Find.cmake
@@ -9,6 +9,7 @@ if(BUILD_TESTING)
             "INSTALL_GTEST OFF"
             "gtest_force_shared_crt ON"
     )
+
     CPMAddPackage(
         NAME autocheck
         GITHUB_REPOSITORY ufz/autocheck
@@ -19,6 +20,17 @@ if(BUILD_TESTING)
         add_library(autocheck INTERFACE IMPORTED)
         target_include_directories(autocheck INTERFACE ${autocheck_SOURCE_DIR}/include)
     endif()
+
+    CPMAddPackage(
+        NAME vtkdiff
+        GITHUB_REPOSITORY ufz/vtkdiff
+        GIT_TAG 49403cee266bb8e80405a02d677dbb5f71afc61a
+        OPTIONS
+            "VTK_LIBRARIES vtkIOXML"
+    )
+    if(vtkdiff_ADDED)
+        install(PROGRAMS $<TARGET_FILE:vtkdiff> DESTINATION bin COMPONENT ogs_extras)
+    endif()
 endif()
 
 CPMAddPackage(
diff --git a/scripts/cmake/SubmoduleSetup.cmake b/scripts/cmake/SubmoduleSetup.cmake
index dbfa1f68185143ca47946cd261476c50d41f3795..585528f06cff638b7ae5db099cc494aaf69f749b 100644
--- a/scripts/cmake/SubmoduleSetup.cmake
+++ b/scripts/cmake/SubmoduleSetup.cmake
@@ -18,9 +18,6 @@ set(REQUIRED_SUBMODULES
 if(OGS_USE_XDMF)
     list(APPEND REQUIRED_SUBMODULES ThirdParty/xdmf)
 endif()
-if(BUILD_TESTING)
-    list(APPEND REQUIRED_SUBMODULES ThirdParty/vtkdiff)
-endif()
 if(OGS_BUILD_UTILS)
     # Required by the partmesh tool, which is build with utils only.
     list(APPEND REQUIRED_SUBMODULES ThirdParty/metis)