diff --git a/dumux/linear/istlsolverfactorybackend.hh b/dumux/linear/istlsolverfactorybackend.hh
index 19d65c5f9166ba2eff42eb6ecb593459cd3b6ade..dae993adb117a5ed75afdeaa536317d9dc94026a 100644
--- a/dumux/linear/istlsolverfactorybackend.hh
+++ b/dumux/linear/istlsolverfactorybackend.hh
@@ -167,29 +167,19 @@ private:
     void convertParameterTree_(const std::string& paramGroup="")
     {
         auto linearSolverGroups = getParamSubGroups("LinearSolver", paramGroup);
+        if (linearSolverGroups.empty()) // no linear solver parameters were specified
+            return;
+
         for (const auto& [dumuxKey, istlKey] : dumuxToIstlSolverParams)
         {
             for (const auto& group : linearSolverGroups)
             {
-                auto istlName = group + "." + istlKey;
-                auto dumuxName = group + "." + dumuxKey;
-                if (hasParam(dumuxName))
-                {
-                    if(hasParam(istlName))
-                    {
-                        std::cerr << "Found equivalent keys " << istlName
-                                  << " " << dumuxName << std::endl
-                                  << "Please use only one (e.g. " << dumuxName
-                                  << ")." << std::endl;
-                        DUNE_THROW(Dune::InvalidStateException, "Ambiguous parameters used for linear solver");
-                    }
-                    params_[istlKey] = getParam<std::string>(dumuxName);
-                    break;
-                }
-                else if (hasParam(istlName))
+                const auto fullDumuxKey = group + "." + dumuxKey;
+                const auto value = getParam<std::string>(fullDumuxKey, "");
+                if (!value.empty())
                 {
-                    params_[istlKey] = getParam<std::string>(istlName);
-                    break;
+                    params_[istlKey] = value;
+                    break; // skip groups with smaller depth in the tree
                 }
             }
         }