diff --git a/test/multidomain/facet/1p_1p/analytical/main.cc b/test/multidomain/facet/1p_1p/analytical/main.cc
index 85cd06a63bb1338e69fd1c7cfcb29b643163595c..77ec421942b1bb01967a89c5e2266008de772f1d 100644
--- a/test/multidomain/facet/1p_1p/analytical/main.cc
+++ b/test/multidomain/facet/1p_1p/analytical/main.cc
@@ -224,16 +224,20 @@ int main(int argc, char** argv) try
     updateBulkFVGridGeometry(*bulkFvGridGeometry, gridManager, lowDimGridView);
     lowDimFvGridGeometry->update();
 
+    // the coupling manager
+    using TestTraits = TestTraits<BulkProblemTypeTag, LowDimProblemTypeTag>;
+    using CouplingManager = typename TestTraits::CouplingManager;
+    auto couplingManager = std::make_shared<CouplingManager>();
+
     // the problems (boundary conditions)
     using BulkProblem = typename GET_PROP_TYPE(BulkProblemTypeTag, Problem);
     using LowDimProblem = typename GET_PROP_TYPE(LowDimProblemTypeTag, Problem);
     auto bulkSpatialParams = std::make_shared<typename BulkProblem::SpatialParams>(bulkFvGridGeometry, "Bulk");
-    auto bulkProblem = std::make_shared<BulkProblem>(bulkFvGridGeometry, bulkSpatialParams, "Bulk");
+    auto bulkProblem = std::make_shared<BulkProblem>(bulkFvGridGeometry, bulkSpatialParams, couplingManager, "Bulk");
     auto lowDimSpatialParams = std::make_shared<typename LowDimProblem::SpatialParams>(lowDimFvGridGeometry, "LowDim");
-    auto lowDimProblem = std::make_shared<LowDimProblem>(lowDimFvGridGeometry, lowDimSpatialParams, "LowDim");
+    auto lowDimProblem = std::make_shared<LowDimProblem>(lowDimFvGridGeometry, lowDimSpatialParams, couplingManager, "LowDim");
 
     // the solution vector
-    using TestTraits = TestTraits<BulkProblemTypeTag, LowDimProblemTypeTag>;
     using MDTraits = typename TestTraits::MDTraits;
     using SolutionVector = typename MDTraits::SolutionVector;
     SolutionVector x;
@@ -249,15 +253,9 @@ int main(int argc, char** argv) try
     auto couplingMapper = std::make_shared<typename TestTraits::CouplingMapper>();
     couplingMapper->update(*bulkFvGridGeometry, *lowDimFvGridGeometry, gridManager.getEmbeddings());
 
-    // the coupling manager
-    using CouplingManager = typename TestTraits::CouplingManager;
-    auto couplingManager = std::make_shared<CouplingManager>();
+    // initialize the coupling manager
     couplingManager->init(bulkProblem, lowDimProblem, couplingMapper, x);
 
-    // set coupling manager pointer in sub-problems
-    bulkProblem->setCouplingManager(couplingManager);
-    lowDimProblem->setCouplingManager(couplingManager);
-
     // the grid variables
     using BulkGridVariables = typename GET_PROP_TYPE(BulkProblemTypeTag, GridVariables);
     using LowDimGridVariables = typename GET_PROP_TYPE(LowDimProblemTypeTag, GridVariables);
diff --git a/test/multidomain/facet/1p_1p/analytical/problem_bulk.hh b/test/multidomain/facet/1p_1p/analytical/problem_bulk.hh
index be62c14f1d07c4c00474d670bfebf3f029b456f2..acf78c3f276736812cf7efc68879e397affcb154 100644
--- a/test/multidomain/facet/1p_1p/analytical/problem_bulk.hh
+++ b/test/multidomain/facet/1p_1p/analytical/problem_bulk.hh
@@ -95,8 +95,10 @@ class OnePBulkProblem : public PorousMediumFlowProblem<TypeTag>
 public:
     OnePBulkProblem(std::shared_ptr<const FVGridGeometry> fvGridGeometry,
                     std::shared_ptr<typename ParentType::SpatialParams> spatialParams,
+                    std::shared_ptr<CouplingManager> couplingManagerPtr,
                     const std::string& paramGroup = "Bulk")
     : ParentType(fvGridGeometry, spatialParams, paramGroup)
+    , couplingManagerPtr_(couplingManagerPtr)
     , lowDimPermeability_(getParam<Scalar>("LowDim.SpatialParams.Permeability"))
     , aperture_(getParam<Scalar>("Problem.FractureAperture"))
     {
@@ -189,10 +191,6 @@ public:
     Scalar temperature() const
     { return 283.15; /*10°*/ }
 
-    //! sets the pointer to the coupling manager.
-    void setCouplingManager(std::shared_ptr<CouplingManager> cm)
-    { couplingManagerPtr_ = cm; }
-
     //! returns reference to the coupling manager.
     const CouplingManager& couplingManager() const
     { return *couplingManagerPtr_; }
diff --git a/test/multidomain/facet/1p_1p/analytical/problem_lowdim.hh b/test/multidomain/facet/1p_1p/analytical/problem_lowdim.hh
index 27474f6d33555b7e238998ca7dbe53d6a64a8c99..a2994affb00f4331141fae21126fcb970b5acecf 100644
--- a/test/multidomain/facet/1p_1p/analytical/problem_lowdim.hh
+++ b/test/multidomain/facet/1p_1p/analytical/problem_lowdim.hh
@@ -95,8 +95,10 @@ class OnePLowDimProblem : public PorousMediumFlowProblem<TypeTag>
 public:
     OnePLowDimProblem(std::shared_ptr<const FVGridGeometry> fvGridGeometry,
                       std::shared_ptr<typename ParentType::SpatialParams> spatialParams,
+                      std::shared_ptr<CouplingManager> couplingManagerPtr,
                       const std::string& paramGroup = "LowDim")
     : ParentType(fvGridGeometry, spatialParams, paramGroup)
+    , couplingManagerPtr_(couplingManagerPtr)
     , aperture_(getParam<Scalar>("Problem.FractureAperture"))
     {
         problemName_  =  getParam<std::string>("Vtk.OutputName") + "_" + getParamFromGroup<std::string>(this->paramGroup(), "Problem.Name");
@@ -158,10 +160,6 @@ public:
     Scalar temperature() const
     { return 283.15; /*10°*/ }
 
-    //! sets the pointer to the coupling manager.
-    void setCouplingManager(std::shared_ptr<CouplingManager> cm)
-    { couplingManagerPtr_ = cm; }
-
     //! returns reference to the coupling manager.
     const CouplingManager& couplingManager() const
     { return *couplingManagerPtr_; }
diff --git a/test/multidomain/facet/1p_1p/threedomain/main.cc b/test/multidomain/facet/1p_1p/threedomain/main.cc
index ddc08ac3167f245a0a9e07f043584c4390114ab1..c15870ea83ad824bd73946a14b5c70d52ca0cc9a 100644
--- a/test/multidomain/facet/1p_1p/threedomain/main.cc
+++ b/test/multidomain/facet/1p_1p/threedomain/main.cc
@@ -122,16 +122,20 @@ int main(int argc, char** argv) try
     facetFvGridGeometry->update();
     edgeFvGridGeometry->update();
 
+    // the coupling manager
+    using CouplingManager = typename TestTraits::CouplingManager;
+    auto couplingManager = std::make_shared<CouplingManager>();
+
     // the problems (boundary conditions)
     using BulkProblem = typename GET_PROP_TYPE(BulkProblemTypeTag, Problem);
     using FacetProblem = typename GET_PROP_TYPE(FacetProblemTypeTag, Problem);
     using EdgeProblem = typename GET_PROP_TYPE(EdgeProblemTypeTag, Problem);
     auto bulkSpatialParams = std::make_shared<typename BulkProblem::SpatialParams>(bulkFvGridGeometry, "Bulk");
-    auto bulkProblem = std::make_shared<BulkProblem>(bulkFvGridGeometry, bulkSpatialParams, "Bulk");
+    auto bulkProblem = std::make_shared<BulkProblem>(bulkFvGridGeometry, bulkSpatialParams, couplingManager, "Bulk");
     auto facetSpatialParams = std::make_shared<typename FacetProblem::SpatialParams>(facetFvGridGeometry, "Facet");
-    auto facetProblem = std::make_shared<FacetProblem>(facetFvGridGeometry, facetSpatialParams, "Facet");
+    auto facetProblem = std::make_shared<FacetProblem>(facetFvGridGeometry, facetSpatialParams, couplingManager, "Facet");
     auto edgeSpatialParams = std::make_shared<typename EdgeProblem::SpatialParams>(edgeFvGridGeometry, "Edge");
-    auto edgeProblem = std::make_shared<EdgeProblem>(edgeFvGridGeometry, edgeSpatialParams, "Edge");
+    auto edgeProblem = std::make_shared<EdgeProblem>(edgeFvGridGeometry, edgeSpatialParams, couplingManager, "Edge");
 
     // the solution vector
     using Traits = typename TestTraits::MDTraits;
@@ -153,16 +157,9 @@ int main(int argc, char** argv) try
     auto couplingMapper = std::make_shared<CouplingMapper>();
     couplingMapper->update(*bulkFvGridGeometry, *facetFvGridGeometry, *edgeFvGridGeometry, gridManager.getEmbeddings());
 
-    // the coupling manager
-    using CouplingManager = typename TestTraits::CouplingManager;
-    auto couplingManager = std::make_shared<CouplingManager>();
+    // initialize the coupling manager
     couplingManager->init(bulkProblem, facetProblem, edgeProblem, couplingMapper, x);
 
-    // set coupling manager pointer in sub-problems
-    bulkProblem->setCouplingManager(couplingManager);
-    facetProblem->setCouplingManager(couplingManager);
-    edgeProblem->setCouplingManager(couplingManager);
-
     // the grid variables
     using BulkGridVariables = typename GET_PROP_TYPE(BulkProblemTypeTag, GridVariables);
     using FacetGridVariables = typename GET_PROP_TYPE(FacetProblemTypeTag, GridVariables);
diff --git a/test/multidomain/facet/1p_1p/threedomain/problem_bulk.hh b/test/multidomain/facet/1p_1p/threedomain/problem_bulk.hh
index 49699ac073dfc2927d1230e5b9c61f0511c053a2..9b201894353dc7a59f15bdf075275b006e6056eb 100644
--- a/test/multidomain/facet/1p_1p/threedomain/problem_bulk.hh
+++ b/test/multidomain/facet/1p_1p/threedomain/problem_bulk.hh
@@ -96,8 +96,10 @@ public:
     //! The constructor
     OnePBulkProblem(std::shared_ptr<const FVGridGeometry> fvGridGeometry,
                     std::shared_ptr<typename ParentType::SpatialParams> spatialParams,
+                    std::shared_ptr<CouplingManager> couplingManagerPtr,
                     const std::string& paramGroup = "Bulk")
     : ParentType(fvGridGeometry, spatialParams, paramGroup)
+    , couplingManagerPtr_(couplingManagerPtr)
     {
         problemName_  =  getParam<std::string>("Vtk.OutputName") + "_" + getParamFromGroup<std::string>(this->paramGroup(), "Problem.Name");
     }
@@ -157,10 +159,6 @@ public:
     const CouplingManager& couplingManager() const
     { return *couplingManagerPtr_; }
 
-    //! sets the pointer to the coupling manager.
-    void setCouplingManager(std::shared_ptr<CouplingManager> cm)
-    { couplingManagerPtr_ = cm; }
-
 private:
     std::string problemName_;
     std::shared_ptr<CouplingManager> couplingManagerPtr_;
diff --git a/test/multidomain/facet/1p_1p/threedomain/problem_edge.hh b/test/multidomain/facet/1p_1p/threedomain/problem_edge.hh
index 1274935d2f9acdc6b6843c6d7af9986fdb8ea235..d48f46f4ec98a16060d9268be2984ed32578096a 100644
--- a/test/multidomain/facet/1p_1p/threedomain/problem_edge.hh
+++ b/test/multidomain/facet/1p_1p/threedomain/problem_edge.hh
@@ -100,8 +100,10 @@ public:
     //! The constructor
     OnePEdgeProblem(std::shared_ptr<const FVGridGeometry> fvGridGeometry,
                     std::shared_ptr<typename ParentType::SpatialParams> spatialParams,
+                    std::shared_ptr<CouplingManager> couplingManagerPtr,
                     const std::string& paramGroup = "Edge")
     : ParentType(fvGridGeometry, spatialParams, paramGroup)
+    , couplingManagerPtr_(couplingManagerPtr)
     {
         const auto a = getParam<Scalar>("Extrusion.Aperture");
         exFactor_ = a*a;
@@ -155,14 +157,10 @@ public:
     const CouplingManager& couplingManager() const
     { return *couplingManagerPtr_; }
 
-    //! sets the pointer to the coupling manager.
-    void setCouplingManager(std::shared_ptr<CouplingManager> cm)
-    { couplingManagerPtr_ = cm; }
-
 private:
-    Scalar exFactor_;
-    std::string problemName_;
     std::shared_ptr<CouplingManager> couplingManagerPtr_;
+    std::string problemName_;
+    Scalar exFactor_;
 };
 
 } // end namespace Dumux
diff --git a/test/multidomain/facet/1p_1p/threedomain/problem_facet.hh b/test/multidomain/facet/1p_1p/threedomain/problem_facet.hh
index 6da834a064c4df28e9eaa0404de63a1858f240bb..f56e7f63abd7ff2a10f9fbb3ead7779af6006836 100644
--- a/test/multidomain/facet/1p_1p/threedomain/problem_facet.hh
+++ b/test/multidomain/facet/1p_1p/threedomain/problem_facet.hh
@@ -100,8 +100,10 @@ public:
     //! The constructor
     OnePFacetProblem(std::shared_ptr<const FVGridGeometry> fvGridGeometry,
                      std::shared_ptr<typename ParentType::SpatialParams> spatialParams,
+                     std::shared_ptr<CouplingManager> couplingManagerPtr,
                      const std::string& paramGroup = "Facet")
     : ParentType(fvGridGeometry, spatialParams, paramGroup)
+    , couplingManagerPtr_(couplingManagerPtr)
     , aperture_(getParam<Scalar>("Extrusion.Aperture"))
     {
         problemName_  =  getParam<std::string>("Vtk.OutputName") + "_" + getParamFromGroup<std::string>(this->paramGroup(), "Problem.Name");
@@ -169,14 +171,10 @@ public:
     const CouplingManager& couplingManager() const
     { return *couplingManagerPtr_; }
 
-    //! sets the pointer to the coupling manager.
-    void setCouplingManager(std::shared_ptr<CouplingManager> cm)
-    { couplingManagerPtr_ = cm; }
-
 private:
-    Scalar aperture_;
-    std::string problemName_;
     std::shared_ptr<CouplingManager> couplingManagerPtr_;
+    std::string problemName_;
+    Scalar aperture_;
 };
 
 } // end namespace Dumux