diff --git a/dumux/flux/porenetwork/grainfourierslaw.hh b/dumux/flux/porenetwork/grainfourierslaw.hh
index c3cb061e4d0180ec947990c80c883bab72948013..cb5947f4e23698d13b089cb8b4c7383fc5baece1 100644
--- a/dumux/flux/porenetwork/grainfourierslaw.hh
+++ b/dumux/flux/porenetwork/grainfourierslaw.hh
@@ -61,7 +61,7 @@ struct TruncatedPyramidGrainFouriersLaw
         // the pyramid base length of the inside pore
         const Scalar insideBaseSideLength = [&]()
         {
-            static const bool useAdaptedVolume = getParamFromGroup<bool>(problem.paramGroup(), "Problem.UseVolumeEqualPyramid", false);
+            static const bool useAdaptedVolume = getParamFromGroup<bool>(problem.paramGroup(), "FouriersLaw.UseVolumeEqualPyramid", false);
 
             if (useAdaptedVolume)
                 return getPyramidBaseLengthFromVolume(0.5*insideVolVars.poreVolume(), insideHeight);
@@ -72,7 +72,7 @@ struct TruncatedPyramidGrainFouriersLaw
         // the pyramid base length of the outside pore
         const Scalar outsideBaseSideLength = [&]()
         {
-            static const bool useAdaptedVolume = getParamFromGroup<bool>(problem.paramGroup(), "Problem.UseVolumeEqualPyramid", false);
+            static const bool useAdaptedVolume = getParamFromGroup<bool>(problem.paramGroup(), "FouriersLaw.UseVolumeEqualPyramid", false);
 
             if (useAdaptedVolume)
                 return getPyramidBaseLengthFromVolume(0.5*outsideVolVars.poreVolume(), outsideHeight);
diff --git a/dumux/multidomain/dualnetwork/couplingmanager.hh b/dumux/multidomain/dualnetwork/couplingmanager.hh
index 27bbf3eac24fab5c5eb1948d1daeb0d0a302f117..24c1bd276a5c83d08e18e175c49384b3c657e7c4 100644
--- a/dumux/multidomain/dualnetwork/couplingmanager.hh
+++ b/dumux/multidomain/dualnetwork/couplingmanager.hh
@@ -394,7 +394,7 @@ public:
             enum class FluidTemperatureMode {mean, self, upstream};
             static const auto fluidTemperatureMode = [&]
             {
-                static const auto mode = getParam<std::string>("Problem.FluidTemperatureMode", "mean");
+                static const auto mode = getParam<std::string>("DualNetwork.FluidTemperatureMode", "mean");
                 std::cout << "Using FluidTemperatureMode " << mode << std::endl;
                 if (mode == "mean")
                     return FluidTemperatureMode::mean;
@@ -422,9 +422,9 @@ public:
             using std::abs;
             const Scalar Re = DimLessNum::reynoldsNumber(abs(velocity), characteristicLength, meanKinematicViscosity);
 
-            static const Scalar fixedLambda = getParam<Scalar>("Problem.FixedConvectionLambda", -1.0);
-            static const Scalar lambaFactor = getParam<Scalar>("Problem.ConvectionLambaFactor", 0.9);
-            static const Scalar lambaExponent = getParam<Scalar>("Problem.ConvectionLambaExponent", 0.4);
+            static const Scalar fixedLambda = getParam<Scalar>("DualNetwork.FixedConvectionLambda", -1.0);
+            static const Scalar lambaFactor = getParam<Scalar>("DualNetwork.ConvectionLambaFactor", 0.9);
+            static const Scalar lambaExponent = getParam<Scalar>("DualNetwork.ConvectionLambaExponent", 0.4);
             using std::pow;
             const Scalar lambda = fixedLambda > 0.0 ? fixedLambda : 1.0 + lambaFactor*pow(Re, lambaExponent); //approximation: see eq.30 in Koch et al (2021) https://doi.org/10.1007/s11242-021-01602-5
             const Scalar selfA = connection.connectionArea / connection.convectionVoidElementIdx.size();
@@ -452,12 +452,12 @@ public:
                 DUNE_THROW(Dune::InvalidStateException, "No neighbor area found");
             };
 
-            static const bool useAvgA = getParam<bool>("Problem.UseAverageConvectionArea", false);
+            static const bool useAvgA = getParam<bool>("DualNetwork.UseAverageConvectionArea", false);
             const Scalar A = useAvgA ? 0.5*(selfA + neighborA()) : selfA;
 
             const Scalar deltaT = (elementCouplingContext_.boundDomainId() == voidDomainIdx) ? (tSolid - tFluid) : (tFluid - tSolid);
 
-            static const int verbose = getParam<int>("Problem.SourceVerboseForDof", -1);
+            static const int verbose = getParam<int>("DualNetwork.SourceVerboseForDof", -1);
             if (verbose >= 0 && (connection.voidVertexIdx == verbose || connection.solidVertexIdx == verbose))
             {
                 std::cout << "\n" << std::endl;
@@ -487,7 +487,7 @@ public:
     {
         bindCouplingContext(domainI, element);
 
-        static const int verbose = getParam<int>("Problem.SourceVerboseForDof", -1);
+        static const int verbose = getParam<int>("DualNetwork.SourceVerboseForDof", -1);
         if (scv.dofIndex() == verbose)
             std::cout << "Start Source at elemn " << fvGeometry.gridGeometry().elementMapper().index(element) << " *******************************" <<  std::endl;
 
@@ -557,12 +557,12 @@ public:
 
         const auto poreRadiusVoid = [&]
         {
-            static const bool useExactPoreRadiusVoid = getParam<bool>("Problem.UseExactPoreRadiusVoid", false);
+            static const bool useExactPoreRadiusVoid = getParam<bool>("DualNetwork.UseExactPoreRadiusVoid", false);
             if (useExactPoreRadiusVoid)
             {
                 using std::sqrt;
-                static const Scalar R = getParam<Scalar>("Problem.SphereRadius", 50e-6);
-                static const Scalar overlapFactor = getParam<Scalar>("Problem.OverlapFactor");
+                static const Scalar R = getParam<Scalar>("DualNetwork.SphereRadius", 50e-6);
+                static const Scalar overlapFactor = getParam<Scalar>("DualNetwork.OverlapFactor");
                 static const Scalar dx = overlapFactor*R;
                 static const Scalar r = sqrt(3.0) * dx - R;
                 return r;
@@ -573,10 +573,10 @@ public:
 
         const auto poreRadiusSolid = [&]
         {
-            static const bool useExactPoreRadiusSolid = getParam<bool>("Problem.UseExactPoreRadiusSolid", false);
+            static const bool useExactPoreRadiusSolid = getParam<bool>("DualNetwork.UseExactPoreRadiusSolid", false);
             if (useExactPoreRadiusSolid)
             {
-                static const Scalar R = getParam<Scalar>("Problem.SphereRadius", 50e-6);
+                static const Scalar R = getParam<Scalar>("DualNetwork.SphereRadius", 50e-6);
                 return R;
             }
             else
@@ -624,20 +624,20 @@ public:
         }();
 
         const Scalar kappa = fluidThermalConductivity / solidThermalConductivity;
-        static const Scalar Nu = getParam<Scalar>("Problem.Nu", 1.0);
-        static const Scalar Bi = getParam<Scalar>("Problem.Bi", 1.0);
+        static const Scalar Nu = getParam<Scalar>("DualNetwork.Nu", 1.0);
+        static const Scalar Bi = getParam<Scalar>("DualNetwork.Bi", 1.0);
 
-        static const bool useExactConnectionLength = getParam<bool>("Problem.UseExactConnectionLength", false);
+        static const bool useExactConnectionLength = getParam<bool>("DualNetwork.UseExactConnectionLength", false);
         const Scalar length = useExactConnectionLength ? poreRadiusSolid + poreRadiusVoid : connection.connectionLength;
 
-        static const bool useExactConnectionAreaSphere = getParam<bool>("Problem.UseExactConnectionAreaSphere", false);
-        static const Scalar connectionAreaShapeFactor = getParam<Scalar>("Problem.ConnectionAreaShapeFactor", 0.9);
+        static const bool useExactConnectionAreaSphere = getParam<bool>("DualNetwork.UseExactConnectionAreaSphere", false);
+        static const Scalar connectionAreaShapeFactor = getParam<Scalar>("DualNetwork.ConnectionAreaShapeFactor", 0.9);
         const Scalar area = [&]()
         {
             if (useExactConnectionAreaSphere)
             {
-                static const Scalar R = getParam<Scalar>("Problem.SphereRadius", 50e-6);
-                static const Scalar overlapFactor = getParam<Scalar>("Problem.OverlapFactor");
+                static const Scalar R = getParam<Scalar>("DualNetwork.SphereRadius", 50e-6);
+                static const Scalar overlapFactor = getParam<Scalar>("DualNetwork.OverlapFactor");
                 static const auto dx = overlapFactor*R;
                 static const auto h = R - dx;
                 static const auto interfacialArea = 4*M_PI*R*R - 6*(2*M_PI*R*h);
diff --git a/test/multidomain/dualnetwork/fourierslaw.hh b/test/multidomain/dualnetwork/fourierslaw.hh
index e3672706c612bcb08ee9a55019bf2e4741f6523b..a14b73be29dfc17b4f378a8a37624fb9956a51b3 100644
--- a/test/multidomain/dualnetwork/fourierslaw.hh
+++ b/test/multidomain/dualnetwork/fourierslaw.hh
@@ -70,7 +70,7 @@ struct FluidOrGrainPyramidFouriersLaw
 
         const auto throatArea = [&]()
         {
-            static const Scalar givenArea = getParamFromGroup<Scalar>(problem.paramGroup(), "Problem.ThroatArea", 0.0);
+            static const Scalar givenArea = getParamFromGroup<Scalar>(problem.paramGroup(), "FouriersLaw.ThroatArea", 0.0);
             if (givenArea > 0.0)
                 return givenArea;
 
@@ -83,7 +83,7 @@ struct FluidOrGrainPyramidFouriersLaw
 
         const Scalar pyramidFrustumTopArea = [&]()
         {
-            static const bool realArea = getParamFromGroup<bool>(problem.paramGroup(), "Problem.UseRealThroatAreaInPyramid", true);
+            static const bool realArea = getParamFromGroup<bool>(problem.paramGroup(), "FouriersLaw.UseRealThroatAreaInPyramid", true);
             if (realArea)
                 return throatArea;
             else
@@ -96,11 +96,11 @@ struct FluidOrGrainPyramidFouriersLaw
 
         const auto getPyramidFrustumBaseArea = [&](const auto& volVars, const Scalar distance)
         {
-            static const Scalar givenArea = getParamFromGroup<Scalar>(problem.paramGroup(), "Problem.PoreArea", 0.0);
+            static const Scalar givenArea = getParamFromGroup<Scalar>(problem.paramGroup(), "FouriersLaw.PoreArea", 0.0);
             if (givenArea > 0.0)
                 return givenArea;
 
-            static const bool realVolume = getParamFromGroup<bool>(problem.paramGroup(), "Problem.UseVolumeEqualPyramid", true);
+            static const bool realVolume = getParamFromGroup<bool>(problem.paramGroup(), "FouriersLaw.UseVolumeEqualPyramid", true);
             if (realVolume)
             {
                 // Using the formula for the volume of a pyramid frustum to calculate its base length and base area:
@@ -181,7 +181,7 @@ struct FixedFactorFouriersLaw
         const auto distanceInside = (insideScv.dofPosition() - throatCenter).two_norm();
         const auto distanceOutside = (outsideScv.dofPosition() - throatCenter).two_norm();
 
-        static const Scalar fixedFactor = getParamFromGroup<Scalar>(problem.paramGroup(), "Problem.FixedFourierFactor");
+        static const Scalar fixedFactor = getParamFromGroup<Scalar>(problem.paramGroup(), "FouriersLaw.FixedFourierFactor");
         const auto insideTransmissibility = insideThermalConducitivity*4*distanceInside*fixedFactor;
         const auto outsideTransmissibility = outsideThermalConducitivity*4*distanceOutside*fixedFactor;
 
@@ -240,7 +240,7 @@ struct FancyFactorFouriersLaw
 
         const auto distance = [&](const auto& scv)
         {
-            static const bool useThroatCenter =  getParamFromGroup<bool>(problem.paramGroup(), "Problem.UseThroatCenter", true);
+            static const bool useThroatCenter =  getParamFromGroup<bool>(problem.paramGroup(), "FouriersLaw.UseThroatCenter", true);
             if (useThroatCenter)
             {
                 const auto throatCenter = problem.spatialParams().throatCenter(eIdx);
@@ -248,8 +248,8 @@ struct FancyFactorFouriersLaw
             }
             else
             {
-                static const Scalar R = getParam<Scalar>("Problem.SphereRadius", 50e-6);
-                static const Scalar overlapFactor = getParam<Scalar>("Problem.OverlapFactor");
+                static const Scalar R = getParam<Scalar>("DualNetwork.SphereRadius", 50e-6);
+                static const Scalar overlapFactor = getParam<Scalar>("DualNetwork.OverlapFactor");
                 static const auto dx = overlapFactor*R;
                 return dx;
             }
@@ -278,10 +278,10 @@ struct FancyFactorFouriersLaw
             return At*(Cinf + ((C0 - Cinf)*(Cinf - 1.0))/((Cinf - 1.0) + kappaFactor*(1.0 - C0)));
         };
 
-        static const Scalar useExactThroatAreaSphere = getParam<bool>("Problem.UseExactThroatAreaSphere", false);
+        static const Scalar useExactThroatAreaSphere = getParam<bool>("DualNetwork.UseExactThroatAreaSphere", false);
         if (useExactThroatAreaSphere)
         {
-            static const Scalar R = getParamFromGroup<Scalar>(problem.paramGroup(), "Problem.SphereRadius", 50e-6);
+            static const Scalar R = getParamFromGroup<Scalar>(problem.paramGroup(), "DualNetwork.SphereRadius", 50e-6);
             const auto As = [](Scalar x, Scalar dx, Scalar R) { return M_PI*(R - x)*(R + x); };
             const auto Asq = [](Scalar x, Scalar dx, Scalar R) { return 4*dx*dx; };
             const auto Asemicirc = [](Scalar x, Scalar dx, Scalar R) {
@@ -310,10 +310,10 @@ struct FancyFactorFouriersLaw
                     return elemFluxVarsCache[scvf].grainContactArea();
             }();
 
-            static const Scalar C0 = isFluid ? getParamFromGroup<Scalar>(problem.paramGroup(), "Problem.C0Fluid")
-                                   : getParamFromGroup<Scalar>(problem.paramGroup(), "Problem.C0Solid");
-            static const Scalar CinfFactor = isFluid ? getParamFromGroup<Scalar>(problem.paramGroup(), "Problem.CInfFactorFluid")
-                                           : getParamFromGroup<Scalar>(problem.paramGroup(), "Problem.CInfFactorSolid");
+            static const Scalar C0 = isFluid ? getParamFromGroup<Scalar>(problem.paramGroup(), "FouriersLaw.C0Fluid")
+                                   : getParamFromGroup<Scalar>(problem.paramGroup(), "FouriersLaw.C0Solid");
+            static const Scalar CinfFactor = isFluid ? getParamFromGroup<Scalar>(problem.paramGroup(), "FouriersLaw.CInfFactorFluid")
+                                           : getParamFromGroup<Scalar>(problem.paramGroup(), "FouriersLaw.CInfFactorSolid");
             using std::max;
             const Scalar CinfInside = max(ApInside/At*CinfFactor, 1.0);
             const Scalar CinfOutside = max(ApOutside/At*CinfFactor, 1.0);
@@ -359,7 +359,7 @@ struct ScalingFouriersLaw
         using Scalar = typename ElementVolumeVariables::VolumeVariables::PrimaryVariables::value_type;
         const auto deltaT = insideVolVars.temperature() - outsideVolVars.temperature();
 
-        static const bool useScaling = getParamFromGroup<bool>(problem.paramGroup(), "Problem.UseFourierScaling", true);
+        static const bool useScaling = getParamFromGroup<bool>(problem.paramGroup(), "FouriersLaw.UseFourierScaling", true);
         if (!useScaling)
             return transmissibility(problem, element, fvGeometry, elemVolVars, scvf, elemFluxVarsCache) * deltaT;
 
@@ -426,7 +426,7 @@ struct FlexibleFouriersLaw
     {
         static const Mode mode = [&]()
         {
-            const auto m = getParamFromGroup<std::string>(problem.paramGroup(), "Problem.ThroatConductionType");
+            const auto m = getParamFromGroup<std::string>(problem.paramGroup(), "FouriersLaw.ThroatConductionType");
             if (m == "Pyramid")
                 return Mode::pyramid;
             else if (m == "FancyFactor")
diff --git a/test/multidomain/dualnetwork/params.input b/test/multidomain/dualnetwork/params.input
index 05d9edd9a75a1909552551bf6f34865f328697b9..77b25fed75998cde2425b2aebacefa82ce7c4523 100644
--- a/test/multidomain/dualnetwork/params.input
+++ b/test/multidomain/dualnetwork/params.input
@@ -12,20 +12,24 @@ EnableGravity = false
 InitialTemperature = 300
 EnableHeating = true
 PaddingThickness = 5.345e-06
+DualNetworkSourceMode = convection
 
 InletIndex = 5 # for z dir
 OutletIndex = 6
 HeaterIndex = 1
 
-Nu = 1
-Bi = 1
+[FouriersLaw]
+ThroatConductionType = FancyFactor
 C0Fluid = 0.1
 C0Solid = 0.45
 CInfFactorFluid = 1
 CInfFactorSolid = 0.50
+
+[DualNetwork]
+Nu = 1
+Bi = 1
 ConnectionAreaShapeFactor = 0.55
 
-SourceMode = convection
 FluidTemperatureMode = self
 UseAverageConvectionArea = true
 ConvectionLambaFactor = 0.3 # set to 0.9 for metal
@@ -38,7 +42,7 @@ OutletPressure = 0
 InletTemperature = 300
 OutletTemperature = 300
 BottomTemperature = 400
-ThroatConductionType = FancyFactor
+
 UseRobinInlet = true
 RobinShapeFactor = 1.0
 # EnableCoupling = false
@@ -47,7 +51,6 @@ RobinShapeFactor = 1.0
 Name = solid
 InletTemperature = 300
 BottomTemperature = 400
-ThroatConductionType = FancyFactor
 UseRobinInlet = true
 RobinShapeFactor = 1.0
 # EnableCoupling = false
diff --git a/test/multidomain/dualnetwork/problem_solid.hh b/test/multidomain/dualnetwork/problem_solid.hh
index 4dd666c7278658c78ed4def802ded081795d1f19..0aa84247a6e492257dd3800b10814765cabdf72f 100644
--- a/test/multidomain/dualnetwork/problem_solid.hh
+++ b/test/multidomain/dualnetwork/problem_solid.hh
@@ -59,7 +59,7 @@ public:
         inletIndex_ = getParamFromGroup<int>(this->paramGroup(), "Problem.InletIndex");
         heaterIndex_ = getParamFromGroup<int>(this->paramGroup(), "Problem.HeaterIndex");
 
-        const auto mode = getParamFromGroup<std::string>(this->paramGroup(), "Problem.SourceMode", "max");
+        const auto mode = getParamFromGroup<std::string>(this->paramGroup(), "Problem.DualNetworkSourceMode", "max");
         if (mode == "conduction")
             sourceMode_ = SourceMode::conduction;
         else if (mode == "convection")
diff --git a/test/multidomain/dualnetwork/problem_void.hh b/test/multidomain/dualnetwork/problem_void.hh
index 95a049f5dba418ef026a194dcf477f6fe5fd9bc8..f2761da3f864fc838cefaf5d159b09db195064f4 100644
--- a/test/multidomain/dualnetwork/problem_void.hh
+++ b/test/multidomain/dualnetwork/problem_void.hh
@@ -68,7 +68,7 @@ public:
         outletIndex_ = getParamFromGroup<int>(this->paramGroup(), "Problem.OutletIndex");
         heaterIndex_ = getParamFromGroup<int>(this->paramGroup(), "Problem.HeaterIndex");
 
-        const auto mode = getParamFromGroup<std::string>(this->paramGroup(), "Problem.SourceMode", "max");
+        const auto mode = getParamFromGroup<std::string>(this->paramGroup(), "Problem.DualNetworkSourceMode", "max");
         if (mode == "conduction")
             sourceMode_ = SourceMode::conduction;
         else if (mode == "convection")