diff --git a/modules/find/FindPARMETIS.cmake b/modules/find/FindPARMETIS.cmake
index fd2bd3f49c8b3d230868f0b228ca7b363c735872..ad7953a2fe0acaa3fdc206676feed00ae57c47de 100644
--- a/modules/find/FindPARMETIS.cmake
+++ b/modules/find/FindPARMETIS.cmake
@@ -3,7 +3,7 @@
 # @copyright (c) 2009-2014 The University of Tennessee and The University
 #                          of Tennessee Research Foundation.
 #                          All rights reserved.
-# @copyright (c) 2012-2014 Inria. All rights reserved.
+# @copyright (c) 2012-2017 Inria. All rights reserved.
 # @copyright (c) 2012-2014 Bordeaux INP, CNRS (LaBRI UMR 5800), Inria, Univ. Bordeaux. All rights reserved.
 #
 ###
@@ -14,6 +14,10 @@
 #               [REQUIRED]             # Fail with error if parmetis is not found
 #              )
 #
+#  PARMETIS depends on the following libraries:
+#   - METIS
+#   - MPI
+#
 # This module finds headers and parmetis library.
 # Results are reported in variables:
 #  PARMETIS_FOUND           - True if headers and requested libraries were found
@@ -23,9 +27,12 @@
 #
 # The user can give specific paths where to find the libraries adding cmake
 # options at configure (ex: cmake path/to/project -DPARMETIS_DIR=path/to/parmetis):
-#  PARMETIS_DIR             - Where to find the base directory of parmetis
-#  PARMETIS_INCDIR          - Where to find the header files
-#  PARMETIS_LIBDIR          - Where to find the library files
+#  PARMETIS_DIR              - Where to find the base directory of parmetis
+#  PARMETIS_INCDIR           - Where to find the header files
+#  PARMETIS_LIBDIR           - Where to find the library files
+#  PARMETIS_INCLUDE_DIRS_DEP - parmetis + dependencies include directories
+#  PARMETIS_LIBRARY_DIRS_DEP - parmetis + dependencies link directories
+#  PARMETIS_LIBRARIES_DEP    - parmetis libraries + dependencies
 # The module can also look for the following environment variables if paths
 # are not given as cmake variable: PARMETIS_DIR, PARMETIS_INCDIR, PARMETIS_LIBDIR
 
@@ -34,7 +41,7 @@
 # Copyright 2012-2013 Emmanuel Agullo
 # Copyright 2012-2013 Mathieu Faverge
 # Copyright 2012      Cedric Castagnede
-# Copyright 2013      Florent Pruvost
+# Copyright 2017      Florent Pruvost
 #
 # Distributed under the OSI-approved BSD License (the "License");
 # see accompanying file MORSE-Copyright.txt for details.
@@ -53,6 +60,23 @@ if (NOT PARMETIS_FOUND)
   endif()
 endif()
 
+# PARMETIS depends on METIS, try to find it
+if (NOT METIS_FOUND)
+  if(PARMETIS_FIND_REQUIRED)
+    find_package(METIS REQUIRED)
+  else()
+    find_package(METIS)
+  endif()
+endif()
+
+# PARMETIS depends on MPI, try to find it
+if (NOT MPI_FOUND)
+  if(PARMETIS_FIND_REQUIRED)
+    find_package(MPI REQUIRED)
+  else()
+    find_package(MPI)
+  endif()
+endif()
 
 # Looking for include
 # -------------------
@@ -205,6 +229,31 @@ if(PARMETIS_LIBRARIES)
     set(REQUIRED_LIBDIRS "${PARMETIS_LIBRARY_DIRS}")
   endif()
   set(REQUIRED_LIBS "${PARMETIS_LIBRARIES}")
+  # METIS
+  if (METIS_FOUND)
+    if (METIS_INCLUDE_DIRS)
+      list(APPEND REQUIRED_INCDIRS "${METIS_INCLUDE_DIRS}")
+    endif()
+    foreach(libdir ${METIS_LIBRARY_DIRS})
+      if (libdir)
+        list(APPEND REQUIRED_LIBDIRS "${libdir}")
+      endif()
+    endforeach()
+    list(APPEND REQUIRED_LIBS "${METIS_LIBRARIES}")
+  endif()
+  # MPI
+  if (MPI_FOUND)
+    if (MPI_C_INCLUDE_PATH)
+      list(APPEND REQUIRED_INCDIRS "${MPI_C_INCLUDE_PATH}")
+    endif()
+    if (MPI_C_LINK_FLAGS)
+      if (${MPI_C_LINK_FLAGS} MATCHES "  -")
+        string(REGEX REPLACE " -" "-" MPI_C_LINK_FLAGS ${MPI_C_LINK_FLAGS})
+      endif()
+      list(APPEND REQUIRED_LDFLAGS "${MPI_C_LINK_FLAGS}")
+    endif()
+    list(APPEND REQUIRED_LIBS "${MPI_C_LIBRARIES}")
+  endif()
   # m
   find_library(M_LIBRARY NAMES m)
   mark_as_advanced(M_LIBRARY)
@@ -227,7 +276,16 @@ if(PARMETIS_LIBRARIES)
   check_function_exists(ParMETIS_V3_NodeND PARMETIS_WORKS)
   mark_as_advanced(PARMETIS_WORKS)
 
-  if(NOT PARMETIS_WORKS)
+  if(PARMETIS_WORKS)
+    # save link with dependencies
+    set(PARMETIS_LIBRARIES_DEP "${REQUIRED_LIBS}")
+    set(PARMETIS_LIBRARY_DIRS_DEP "${REQUIRED_LIBDIRS}")
+    set(PARMETIS_INCLUDE_DIRS_DEP "${REQUIRED_INCDIRS}")
+    set(PARMETIS_LINKER_FLAGS "${REQUIRED_LDFLAGS}")
+    list(REMOVE_DUPLICATES PARMETIS_LIBRARY_DIRS_DEP)
+    list(REMOVE_DUPLICATES PARMETIS_INCLUDE_DIRS_DEP)
+    list(REMOVE_DUPLICATES PARMETIS_LINKER_FLAGS)
+  else()
     if(NOT PARMETIS_FIND_QUIETLY)
       message(STATUS "Looking for PARMETIS : test of ParMETIS_V3_NodeND with PARMETIS library fails")
       message(STATUS "CMAKE_REQUIRED_LIBRARIES: ${CMAKE_REQUIRED_LIBRARIES}")