diff --git a/CMakeLists.txt b/CMakeLists.txt
index 8589e083e2a185eed84ad30a95b10ff25a1ddec8..a211c7c6a0faa9e673cdb8404cde5f907bb0d7f6 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -158,9 +158,6 @@ endif()
 # Code coverage
 option(OGS_COVERAGE "Enables code coverage measurements with gcov/lcov." OFF)
 
-option(OGS_SYNC_SUBMODULES
-       "Sync git submodules on CMake run. Overwrites custom URLs!" ON)
-
 # Options controlling which FEM elements will be compiled
 set(OGS_MAX_ELEMENT_DIM
     3
diff --git a/scripts/cmake/SubmoduleSetup.cmake b/scripts/cmake/SubmoduleSetup.cmake
index 7fa03a91e1620cb660086a77a813457c10a427cb..7f8b97fce7ead6504f5eeba7a146691de409b523 100644
--- a/scripts/cmake/SubmoduleSetup.cmake
+++ b/scripts/cmake/SubmoduleSetup.cmake
@@ -37,20 +37,20 @@ if (OGS_USE_MFRONT)
     list(APPEND REQUIRED_SUBMODULES ThirdParty/MGIS)
 endif()
 
-# Sync submodules, which is required when a submodule changed its URL
-if(OGS_SYNC_SUBMODULES)
-    execute_process(
-        COMMAND ${GIT_EXECUTABLE} submodule sync
-        WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
-        OUTPUT_QUIET
-    )
-endif()
-foreach(SUBMODULE ${REQUIRED_SUBMODULES})
-    execute_process(
-        COMMAND ${GIT_EXECUTABLE} submodule status ${SUBMODULE}
-        WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
-        OUTPUT_VARIABLE SUBMODULE_STATE
-    )
+execute_process(
+    COMMAND ${GIT_EXECUTABLE} submodule status
+    WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
+    OUTPUT_VARIABLE SUBMODULES_STATE
+)
+string(REPLACE "\n" ";" SUBMODULES_LIST ${SUBMODULES_STATE})
+
+foreach(SUBMODULE_STATE ${SUBMODULES_LIST})
+
+    string(REGEX MATCH "ThirdParty/[A-Za-z0-9_-]*" SUBMODULE ${SUBMODULE_STATE})
+    if(NOT ${SUBMODULE} IN_LIST REQUIRED_SUBMODULES)
+        continue()
+    endif()
+
     string(REGEX MATCH "^\\-" UNINITIALIZED ${SUBMODULE_STATE})
     string(REGEX MATCH "^\\+" MISMATCH ${SUBMODULE_STATE})