diff --git a/CHANGELOG b/CHANGELOG
index 9dc7545a4bcf24edeadc2c3f3ccd42cfbe38de1c..7edc594e0ddf0beaeb8be6ead21042a96b4acfe6 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -2,7 +2,11 @@ Differences Between DuMuX 2.8 and DuMuX 2.9
 ===================================================
 
 * IMPORTANT NOTES:
-  -
+  - The support for the external grid library ALBERTA was dropped. Instead
+    we now offically support dune-foamgrid
+    (https://gitlab.dune-project.org/extensions/dune-foamgrid). Dune-foamgrid
+    supports 1d and 2d simplex grids embedded in an arbitrary dimension world space.
+    It features element parametrizations, runtime growth, runtime-movable vertices.
 
 * IMPROVEMENTS and ENHANCEMENTS:
   - The multidomain models have been restructured. This aims at a reduction in
diff --git a/doc/handbook/1_introduction.tex b/doc/handbook/1_introduction.tex
index 349cb343f348a06b696a7fec5342d13f3c178713..5ef762f3fdfc0e5102dad6b710358b85bf64b492 100644
--- a/doc/handbook/1_introduction.tex
+++ b/doc/handbook/1_introduction.tex
@@ -18,8 +18,8 @@ for all possible cases, so \Dumux is build on top of \Dune, the
 \textbf{D}istributed and \textbf{U}nified \textbf{N}umerics
 \textbf{E}nvironment~\cite{DUNE-HP}. \Dune provides a generic interface
 to many existing grid management libraries such as UG~\cite{UG-HP},
-ALBERTA~\cite{ALBERTA-HP}, ALUGrid~\cite{ALUGRID-HP} and a few
-more. DUNE also extensively uses template programming in order to
+ALUGrid~\cite{ALUGRID-HP} and a few more.
+DUNE also extensively uses template programming in order to
 achieve minimal overhead when accessing the underlying grid
 libraries\footnote{In fact, the performance penalty resulting from the
 use of \Dune's grid interface is usually negligible~\cite{BURRI2006}.}.
diff --git a/doc/handbook/2_detailedinstall.tex b/doc/handbook/2_detailedinstall.tex
index 2e7b33050ab5d91083a0b316278847cf7a6d209f..cf08e9b3d70e3a97c1a2f8b74c2bbfa41414b3d3 100644
--- a/doc/handbook/2_detailedinstall.tex
+++ b/doc/handbook/2_detailedinstall.tex
@@ -236,15 +236,17 @@ In the following list, you can find some external modules and external libraries
 and some more libraries and tools which are prerequisites for their use.
 
 \begin{itemize}
-\item \textbf{ALBERTA}: External grid library. Adaptive multi-level grid manager using bisectioning
-  refinement and error control by residual techniques for scientific Applications. Requires a Fortran
-  compiler like \texttt{gfortran}. Download: \texttt{\url{http://www.alberta-fem.de}} or for version 3.0
-  \texttt{\url{http://www.mathematik.uni-stuttgart.de/fak8/ians/lehrstuhl/nmh/downloads/alberta/}}.
-
 \item \textbf{dune-ALUGrid}: Grid library, comes as a \Dune module.
   The parallel version needs also a graph partitioner, such as \texttt{ParMETIS}.
   Download: \texttt{\url{https://gitlab.dune-project.org/extensions/dune-alugrid}}
 
+\item \textbf{dune-foamgrid}: External grid module. One- and two-dimensional grids
+  in a physical space of arbitrary dimension; non-manifold grids, growth, element
+  paramterizations, and movable vertices. This makes FoamGrid the grid data structure
+  of choice for simulating structures such as foams, discrete fracture networks,
+  or network flow problems.
+  Download: \texttt{\url{https://gitlab.dune-project.org/extensions/dune-foamgrid}}
+
 \item \textbf{\Dune-multidomaingrid} and \textbf{\Dune-multidomain}: External modules which offer a meta grid that
   has different sub-domains. Each sub-domain can have a local operator that is coupled by a coupling condition. They are
   used for multi-physics approaches or domain decomposition methods. Download:
@@ -279,7 +281,7 @@ depending on which modules of \Dune and which external libraries you use.
   when they are going to be built for parallel computing. \texttt{OpenMPI} and \texttt{MPICH} in a recent
   version have been reported to work.
 
-\item \textbf{BLAS}: Alberta and SuperLU make use of BLAS. Thus install GotoBLAS2, ATLAS, non-optimized BLAS
+\item \textbf{BLAS}: SuperLU makes use of BLAS. Thus install GotoBLAS2, ATLAS, non-optimized BLAS
   or BLAS provided by a chip manufacturer. Take care that the installation scripts select the intended
   version of BLAS.
 
diff --git a/doc/handbook/dumux-handbook.bib b/doc/handbook/dumux-handbook.bib
index 64ee4158f64ff41e822e9dae4e70b7d088127f5c..c6761ee4f5c35ec716046f1a1703acfa6056510e 100644
--- a/doc/handbook/dumux-handbook.bib
+++ b/doc/handbook/dumux-handbook.bib
@@ -1371,11 +1371,6 @@
   url={https://dx.doi.org/10.1021/jp021943g}
 }
 
-@MISC{ALBERTA-HP,
-  title = {{The {ALBERTA} Website: \url{http://www.alberta-fem.de/}}},
-  key = {ALBERTA}
-}
-
 @MISC{ALUGRID-HP,
   title = {T{he {ALUG}rid Website: \url{http://www.mathematik.uni-freiburg.de/IAM/Research/alugrid/}}},
   key = {ALU}
diff --git a/dumux/io/adaptivegridrestart.hh b/dumux/io/adaptivegridrestart.hh
index 429e83fdab986db823519dc36ffe656c22de904d..80b846d1065b10d49c5e9d22b92acd44abb8ccc3 100644
--- a/dumux/io/adaptivegridrestart.hh
+++ b/dumux/io/adaptivegridrestart.hh
@@ -28,9 +28,6 @@
 #if HAVE_DUNE_ALUGRID
 #include <dune/alugrid/grid.hh>
 #endif
-#if HAVE_ALBERTA
-#include <dune/grid/albertagrid/agrid.hh>
-#endif
 
 #include <dune/grid/common/backuprestore.hh>
 #if ! DUNE_VERSION_NEWER(DUNE_COMMON, 3, 0)
@@ -60,14 +57,6 @@ struct GridRestartCheck<Dune::ALUGrid<dim, dimworld, elType, refinementType> >
     static const bool allowRestart = true;
 };
 #endif
-
-#if HAVE_ALBERTA
-template<int dim, int dimworld>
-struct GridRestartCheck<Dune::AlbertaGrid<dim, dimworld> >
-{
-    static const bool allowRestart = true;
-};
-#endif
 //! \endcond
 
 
diff --git a/dumux/io/gridcreator.hh b/dumux/io/gridcreator.hh
index 73ed7c510598b86ce5e1b93b1dcbe04d6e32e2d0..9f3ca69a92a61c5bead0899aa0f0dfe9d7e292a1 100644
--- a/dumux/io/gridcreator.hh
+++ b/dumux/io/gridcreator.hh
@@ -63,12 +63,6 @@
 #include <dune/foamgrid/dgffoam.cc>
 #endif
 
-// Alberta specific includes
-#if HAVE_ALBERTA
-#include <dune/grid/albertagrid.hh>
-#include <dune/grid/albertagrid/dgfparser.hh>
-#endif
-
 #include <dumux/common/propertysystem.hh>
 #include <dumux/common/parameters.hh>
 
@@ -1289,59 +1283,6 @@ public:
 
 #endif // HAVE_DUNE_FOAMGRID
 
-#if HAVE_ALBERTA
-
-/*!
- * \brief Provides a grid creator for FoamGrids
- *        from information in the input file
- *
- * All keys are expected to be in group GridParameterGroup.
-
- * The following keys are recognized:
- * - File : A DGF or gmsh file to load from, type detection by file extension
- * - Verbosity : whether the grid construction should output to standard out
- *
- */
-template<class TypeTag, int dim, int dimworld>
-class GridCreatorImpl<TypeTag, Dune::AlbertaGrid<dim, dimworld> >
-          : public GridCreatorBase<TypeTag, Dune::AlbertaGrid<dim, dimworld> >
-{
-public:
-    typedef typename Dune::AlbertaGrid<dim, dimworld> Grid;
-    typedef GridCreatorBase<TypeTag, Grid> ParentType;
-
-    /*!
-     * \brief Make the grid. This is implemented by specializations of this method.
-     */
-    static void makeGrid()
-    {
-        // First try to create it from a DGF or msh file in GridParameterGroup.File
-        try {
-            const std::string fileName = GET_RUNTIME_PARAM_FROM_GROUP_CSTRING(TypeTag, std::string, GET_PROP_VALUE(TypeTag, GridParameterGroup).c_str(), File);
-            ParentType::makeGridFromFile(fileName, "Alberta");
-            ParentType::maybeRefineGrid();
-            return;
-        }
-        catch (Dumux::ParameterException &e) {}
-        catch (...) { throw; }
-
-        // Then look for the necessary keys to construct a structured grid from the input file
-        try {
-            ParentType::template makeStructuredGrid<dim, dimworld>(ParentType::CellType::Simplex);
-            ParentType::maybeRefineGrid();
-        }
-        catch (Dumux::ParameterException &e) {
-                DUNE_THROW(Dumux::ParameterException, "Please supply the mandatory parameters "
-                                              << GET_PROP_VALUE(TypeTag, GridParameterGroup) << ".UpperRight and "
-                                              << GET_PROP_VALUE(TypeTag, GridParameterGroup) << ".LowerLeft or a grid file in "
-                                              << GET_PROP_VALUE(TypeTag, GridParameterGroup) << ".File.");
-        }
-        catch (...) { throw; }
-    }
-};
-
-#endif // HAVE_ALBERTA
-
 // TODO Petrel grids with dune-cornerpoint
 
 } // namespace Dumux
diff --git a/dune.module b/dune.module
index f5b67e6c62c8de74efa3738341bfd91a107c1048..f3183238c85ea6fc7096b799ca42813902f82294 100644
--- a/dune.module
+++ b/dune.module
@@ -2,5 +2,5 @@ Module: dumux
 Version: 2.9-git
 Maintainer: dumux@listserv.uni-stuttgart.de
 Depends: dune-grid (>= 2.4) dune-localfunctions (>= 2.4) dune-istl (>= 2.4)
-Suggests: dune-alugrid (>=2.4) dune-pdelab (>=2.0) dune-multidomain dune-cornerpoint
+Suggests: dune-alugrid (>=2.4) dune-pdelab (>=2.0) dune-multidomain dune-cornerpoint dune-foamgrid (>=2.4)
 Whitespace-Hook: Yes
diff --git a/test/porousmediumflow/1p/implicit/1ptestproblem.hh b/test/porousmediumflow/1p/implicit/1ptestproblem.hh
index 18ceeeb4549f94e337d153cfb322d42c5dc99316..0c6d2e076012a70ad1cdcc17012f1d72f3412173 100644
--- a/test/porousmediumflow/1p/implicit/1ptestproblem.hh
+++ b/test/porousmediumflow/1p/implicit/1ptestproblem.hh
@@ -82,17 +82,17 @@ NEW_TYPE_TAG(OnePTestCCProblemWithAMG, INHERITS_FROM(OnePTestCCProblem));
 SET_TYPE_PROP(OnePTestBoxProblemWithAMG, LinearSolver, Dumux::AMGBackend<TypeTag> );
 SET_TYPE_PROP(OnePTestCCProblemWithAMG, LinearSolver, Dumux::AMGBackend<TypeTag> );
 
-// if AlbertaGrid is available, test for dim < dimWorld
-#if HAVE_ALBERTA
+// if FoamGrid is available, test for dim < dimWorld
+#if HAVE_DUNE_FOAMGRID
 NEW_TYPE_TAG(OnePOneDThreeDTestProblem, INHERITS_FROM(OnePTestProblem));
 NEW_TYPE_TAG(OnePOneDThreeDTestBoxProblem, INHERITS_FROM(BoxModel, OnePOneDThreeDTestProblem));
 NEW_TYPE_TAG(OnePOneDThreeDTestCCProblem, INHERITS_FROM(CCModel, OnePOneDThreeDTestProblem));
-SET_TYPE_PROP(OnePOneDThreeDTestProblem, Grid, Dune::AlbertaGrid<1, 3>);
+SET_TYPE_PROP(OnePOneDThreeDTestProblem, Grid, Dune::FoamGrid<1, 3>);
 
 NEW_TYPE_TAG(OnePTwoDThreeDTestProblem, INHERITS_FROM(OnePTestProblem));
 NEW_TYPE_TAG(OnePTwoDThreeDTestBoxProblem, INHERITS_FROM(BoxModel, OnePTwoDThreeDTestProblem));
 NEW_TYPE_TAG(OnePTwoDThreeDTestCCProblem, INHERITS_FROM(CCModel, OnePTwoDThreeDTestProblem));
-SET_TYPE_PROP(OnePTwoDThreeDTestProblem, Grid, Dune::AlbertaGrid<2, 3>);
+SET_TYPE_PROP(OnePTwoDThreeDTestProblem, Grid, Dune::FoamGrid<2, 3>);
 #endif
 
 // Enable gravity
diff --git a/test/porousmediumflow/1p/implicit/CMakeLists.txt b/test/porousmediumflow/1p/implicit/CMakeLists.txt
index 2648932a4adaf909adef5a6d191c7caa2c349642..ae6d385d03d498361d0c2c9813a02ac9b5ad6ed1 100644
--- a/test/porousmediumflow/1p/implicit/CMakeLists.txt
+++ b/test/porousmediumflow/1p/implicit/CMakeLists.txt
@@ -63,14 +63,13 @@ add_dumux_test(test_cc1pniconvection test_cc1pniconvection test_cc1pniconvection
                          ${CMAKE_CURRENT_BINARY_DIR}/cc1pniconvection-00011.vtu
                  --command "${CMAKE_CURRENT_BINARY_DIR}/test_cc1pniconvection")
 
-# dim < dimWorld tests
+# dim < dimWorld tests with foamgrid
 add_dumux_test(test_box1p1d3d test_box1p1d3d test_box1p1d3d.cc
                python ${CMAKE_SOURCE_DIR}/bin/runtest.py
                  --script fuzzy
                  --files ${CMAKE_SOURCE_DIR}/test/references/1ptestbox1d3d-reference.vtp
                          ${CMAKE_CURRENT_BINARY_DIR}/1ptestbox1d3d-00002.vtp
                  --command "${CMAKE_CURRENT_BINARY_DIR}/test_box1p1d3d")
-add_dune_alberta_flags(test_box1p1d3d GRIDDIM 1 WORLDDIM 3)
 
 add_dumux_test(test_box1p2d3d test_box1p2d3d test_box1p2d3d.cc
                python ${CMAKE_SOURCE_DIR}/bin/runtest.py
@@ -78,7 +77,6 @@ add_dumux_test(test_box1p2d3d test_box1p2d3d test_box1p2d3d.cc
                  --files ${CMAKE_SOURCE_DIR}/test/references/1ptestbox2d3d-reference.vtu
                          ${CMAKE_CURRENT_BINARY_DIR}/1ptestbox2d3d-00002.vtu
                  --command "${CMAKE_CURRENT_BINARY_DIR}/test_box1p2d3d")
-add_dune_alberta_flags(test_box1p2d3d GRIDDIM 2 WORLDDIM 3)
 
 add_dumux_test(test_cc1p1d3d test_cc1p1d3d test_cc1p1d3d.cc
                python ${CMAKE_SOURCE_DIR}/bin/runtest.py
@@ -86,7 +84,6 @@ add_dumux_test(test_cc1p1d3d test_cc1p1d3d test_cc1p1d3d.cc
                  --files ${CMAKE_SOURCE_DIR}/test/references/1ptestcc1d3d-reference.vtp
                          ${CMAKE_CURRENT_BINARY_DIR}/1ptestcc1d3d-00002.vtp
                  --command "${CMAKE_CURRENT_BINARY_DIR}/test_cc1p1d3d")
-add_dune_alberta_flags(test_cc1p1d3d GRIDDIM 1 WORLDDIM 3)
 
 add_dumux_test(test_cc1p2d3d test_cc1p2d3d test_cc1p2d3d.cc
                python ${CMAKE_SOURCE_DIR}/bin/runtest.py
@@ -94,7 +91,6 @@ add_dumux_test(test_cc1p2d3d test_cc1p2d3d test_cc1p2d3d.cc
                  --files ${CMAKE_SOURCE_DIR}/test/references/1ptestcc2d3d-reference.vtu
                          ${CMAKE_CURRENT_BINARY_DIR}/1ptestcc2d3d-00002.vtu
                  --command "${CMAKE_CURRENT_BINARY_DIR}/test_cc1p2d3d")
-add_dune_alberta_flags(test_cc1p2d3d GRIDDIM 2 WORLDDIM 3)
 
 
 #install sources
diff --git a/test/porousmediumflow/1p/implicit/test_box1p1d3d.cc b/test/porousmediumflow/1p/implicit/test_box1p1d3d.cc
index ead71ba7cf9fe4ab3e864cc2600800e03dfe7e7f..0da90bc7d5c5d097681d1c9645bf631134f676b9 100644
--- a/test/porousmediumflow/1p/implicit/test_box1p1d3d.cc
+++ b/test/porousmediumflow/1p/implicit/test_box1p1d3d.cc
@@ -59,12 +59,12 @@ void usage(const char *progName, const std::string &errorMsg)
 
 int main(int argc, char** argv)
 {
-#if HAVE_ALBERTA
+#if HAVE_DUNE_FOAMGRID
     typedef TTAG(OnePOneDThreeDTestBoxProblem) ProblemTypeTag;
     return Dumux::start<ProblemTypeTag>(argc, argv, usage);
 #else
-#warning External grid Alberta needed to run this example.
-    std::cerr << "Test skipped, it needs Alberta!" << std::endl;
+#warning External grid module dune-foamgrid needed to run this example.
+    std::cerr << "Test skipped, it needs dune-foamgrid!" << std::endl;
     return 77;
 #endif
 }
diff --git a/test/porousmediumflow/1p/implicit/test_box1p2d3d.cc b/test/porousmediumflow/1p/implicit/test_box1p2d3d.cc
index 2b3c60193a5c51d27bcc546e93f5c549169a6003..ad262e065cc2fba88d792efb8a0b669db9fd9e8d 100644
--- a/test/porousmediumflow/1p/implicit/test_box1p2d3d.cc
+++ b/test/porousmediumflow/1p/implicit/test_box1p2d3d.cc
@@ -59,12 +59,12 @@ void usage(const char *progName, const std::string &errorMsg)
 
 int main(int argc, char** argv)
 {
-#if HAVE_ALBERTA
+#if HAVE_DUNE_FOAMGRID
     typedef TTAG(OnePTwoDThreeDTestBoxProblem) ProblemTypeTag;
     return Dumux::start<ProblemTypeTag>(argc, argv, usage);
 #else
-#warning External grid Alberta needed to run this example.
-    std::cerr << "Test skipped, it needs Alberta!" << std::endl;
+#warning External grid module dune-foamgrid needed to run this example.
+    std::cerr << "Test skipped, it needs dune-foamgrid!" << std::endl;
     return 77;
 #endif
 }
diff --git a/test/porousmediumflow/1p/implicit/test_cc1p1d3d.cc b/test/porousmediumflow/1p/implicit/test_cc1p1d3d.cc
index 322d0ed5e34ff78de7aaf3f920cc7f0cd249c479..0ed1566786b42788796caa6eb71debe13dc1c0c2 100644
--- a/test/porousmediumflow/1p/implicit/test_cc1p1d3d.cc
+++ b/test/porousmediumflow/1p/implicit/test_cc1p1d3d.cc
@@ -59,12 +59,12 @@ void usage(const char *progName, const std::string &errorMsg)
 
 int main(int argc, char** argv)
 {
-#if HAVE_ALBERTA
+#if HAVE_DUNE_FOAMGRID
     typedef TTAG(OnePOneDThreeDTestCCProblem) ProblemTypeTag;
     return Dumux::start<ProblemTypeTag>(argc, argv, usage);
 #else
-#warning External grid Alberta needed to run this example.
-    std::cerr << "Test skipped, it needs Alberta!" << std::endl;
+#warning External grid module dune-foamgrid needed to run this example.
+    std::cerr << "Test skipped, it needs dune-foamgrid!" << std::endl;
     return 77;
 #endif
 }
diff --git a/test/porousmediumflow/1p/implicit/test_cc1p2d3d.cc b/test/porousmediumflow/1p/implicit/test_cc1p2d3d.cc
index a33ad5ffbea99ffdf931b08caff6ecbf40d2844f..2a7d1e6e5a021e57c3f03c0b83a5d16f7e127304 100644
--- a/test/porousmediumflow/1p/implicit/test_cc1p2d3d.cc
+++ b/test/porousmediumflow/1p/implicit/test_cc1p2d3d.cc
@@ -59,12 +59,12 @@ void usage(const char *progName, const std::string &errorMsg)
 
 int main(int argc, char** argv)
 {
-#if HAVE_ALBERTA
+#if HAVE_DUNE_FOAMGRID
     typedef TTAG(OnePTwoDThreeDTestCCProblem) ProblemTypeTag;
     return Dumux::start<ProblemTypeTag>(argc, argv, usage);
 #else
-#warning External grid Alberta needed to run this example.
-    std::cerr << "Test skipped, it needs Alberta!" << std::endl;
+#warning External grid module dune-foamgrid needed to run this example.
+    std::cerr << "Test skipped, it needs dune-foamgrid!" << std::endl;
     return 77;
 #endif
 }