diff --git a/CHANGELOG.md b/CHANGELOG.md
index 26940762c7d7beb41ff4f9c173cb0678fe7164b8..a4a36d4ed858c770d6ab6543e18d221c5e67f07a 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,9 @@
 # Master
 
+- The module `dune-elasticity` has been downgraded from a required
+  dependency to an optional dependency.  It is currently only needed
+  by the `film-on-substrate.cc` program.
+
 - `cosserat-rod.cc` (formerly `rod3d.cc`) now reads the reference configuration
   and the initial iterate from the Python file.
 
diff --git a/dune.module b/dune.module
index 923d968c99bf58f446eb16d95b35c0aa9331b8c6..4361fa879d8b5d50accae4254d241d0b28c8d91c 100644
--- a/dune.module
+++ b/dune.module
@@ -7,5 +7,5 @@ Module: dune-gfe
 Version: svn
 Maintainer: oliver.sander@tu-dresden.de
 #depending on
-Depends: dune-grid(>=2.9) dune-uggrid dune-istl dune-localfunctions dune-functions (>=2.9) dune-solvers dune-fufem dune-elasticity (>=2.9) dune-gmsh4 dune-vtk
-Suggests: dune-foamgrid dune-parmg dune-curvedgrid
+Depends: dune-grid(>=2.9) dune-uggrid dune-istl dune-localfunctions dune-functions (>=2.9) dune-solvers dune-fufem dune-gmsh4 dune-vtk
+Suggests: dune-foamgrid dune-parmg dune-curvedgrid dune-elasticity
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 2ea90e75e816e00f7d67b28b85ea96b1721c8387..658ef54c6c2c21aa88a712195bef103147ea1fa9 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -1,6 +1,5 @@
 set(programs compute-disc-error
              cosserat-rod
-             film-on-substrate-stress-plot
              gradient-flow
              harmonicmaps
              simofoxshell)
@@ -10,10 +9,13 @@ foreach(_program ${programs})
   add_executable(${_program} ${_program}.cc)
 endforeach()
 
-if (dune-parmg_FOUND AND dune-curvedgeometry_FOUND)
+if (dune-parmg_FOUND AND dune-curvedgeometry_FOUND AND dune-elasticity_FOUND)
   add_executable("film-on-substrate" film-on-substrate.cc)
   set_property(TARGET "film-on-substrate" APPEND PROPERTY COMPILE_DEFINITIONS "WORLD_DIM=3;  LFE_ORDER=2; GFE_ORDER=2")
 	set(programs film-on-substrate ${programs})
+
+  add_executable("film-on-substrate-stress-plot" film-on-substrate-stress-plot.cc)
+  set(programs film-on-substrate-stress-plot ${programs})
 endif()
 
 add_executable("cosserat-continuum-2d-in-2d" cosserat-continuum.cc)
diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt
index 3df7670d7e87a132c2f698b0c8447795a671e16a..b6a959918ca85744022a683c1ce716725ff68e0e 100644
--- a/test/CMakeLists.txt
+++ b/test/CMakeLists.txt
@@ -19,18 +19,19 @@ set(TESTS
   planarcosseratshelltest
   polardecompositiontest
   rotationtest
-  surfacecosseratstressassemblertest
   svdtest
   targetspacetest
 )
 
 dune_add_test(NAME "filmonsubstratetest"
               SOURCES filmonsubstratetest.cc
+              CMAKE_GUARD dune-elasticity_FOUND
               COMPILE_DEFINITIONS "MIXED_SPACE=0"
               TIMEOUT 2400)
 
 dune_add_test(NAME "filmonsubstratetest-mixed"
               SOURCES filmonsubstratetest.cc
+              CMAKE_GUARD dune-elasticity_FOUND
               COMPILE_DEFINITIONS "MIXED_SPACE=1"
               TIMEOUT 2400)
 
@@ -74,6 +75,10 @@ dune_add_test(SOURCES mixedriemannianpnsolvertest.cc
               TIMEOUT 600
               CMAKE_GUARD MPI_FOUND)
 
+# TODO: The dependency on dune-elasticity is very minor, and can be removed.
+dune_add_test(SOURCES surfacecosseratstressassemblertest.cc
+              CMAKE_GUARD dune-elasticity_FOUND)
+
 # Copy the example grid used for testing into the build dir
 file(COPY grids/irregular-square.msh DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/grids)