diff --git a/dumux/assembly/fvassembler.hh b/dumux/assembly/fvassembler.hh
index 7ce65e6695016f83bacab279656001c03ef1ac60..13b298370ab37bb9af5bf77822db69d621f01420 100644
--- a/dumux/assembly/fvassembler.hh
+++ b/dumux/assembly/fvassembler.hh
@@ -244,12 +244,10 @@ public:
         });
     }
 
-    //! compute the residual and return it's vector norm
-    Scalar residualNorm(const SolutionVector& curSol) const
+    //! compute a residual's vector norm (this is a temporary interface introduced during the deprecation period)
+    [[deprecated("Use the linear solver's norm. Will be deleted after 3.7")]]
+    Scalar normOfResidual(ResidualType& residual) const
     {
-        ResidualType residual(numDofs());
-        assembleResidual(residual, curSol);
-
         // issue a warning if the calculation is used in parallel with overlap
         static bool warningIssued = false;
 
@@ -284,6 +282,15 @@ public:
         return sqrt(result2);
     }
 
+    //! compute the residual and return it's vector norm
+    [[deprecated("Use assembleResidual and the linear solver's norm. Will be deleted after 3.7")]]
+    Scalar residualNorm(const SolutionVector& curSol) const
+    {
+        ResidualType residual(numDofs());
+        assembleResidual(residual, curSol);
+        return normOfResidual(residual);
+    }
+
     /*!
      * \brief Tells the assembler which jacobian and residual to use.
      *        This also resizes the containers to the required sizes and sets the
diff --git a/dumux/multidomain/fvassembler.hh b/dumux/multidomain/fvassembler.hh
index 3c141c77369143a0efa55d9fe0312bb32f4cf4b0..fa476f638f3f67d716c9d46e16f7fbe376087258 100644
--- a/dumux/multidomain/fvassembler.hh
+++ b/dumux/multidomain/fvassembler.hh
@@ -295,13 +295,10 @@ public:
         });
     }
 
-    //! compute the residual and return it's vector norm
-    Scalar residualNorm(const SolutionVector& curSol)
+    //! compute a residual's vector norm (this is a temporary interface introduced during the deprecation period)
+    [[deprecated("Use the linear solver's norm. Will be deleted after 3.7")]]
+    Scalar normOfResidual(ResidualType& residual) const
     {
-        ResidualType residual;
-        setResidualSize_(residual);
-        assembleResidual(residual, curSol);
-
         // calculate the squared norm of the residual
         Scalar resultSquared = 0.0;
 
@@ -349,6 +346,16 @@ public:
         return sqrt(resultSquared);
     }
 
+    //! compute the residual and return it's vector norm
+    [[deprecated("Use norm(curSol) provided by the linear solver class instead. Will be deleted after 3.7")]]
+    Scalar residualNorm(const SolutionVector& curSol)
+    {
+        ResidualType residual;
+        setResidualSize_(residual);
+        assembleResidual(residual, curSol);
+        return normOfResidual(residual);
+    }
+
     /*!
      * \brief Tells the assembler which jacobian and residual to use.
      *        This also resizes the containers to the required sizes and sets the
@@ -736,7 +743,7 @@ private:
     std::shared_ptr<ResidualType> residual_;
 
     //! Issue a warning if the calculation is used in parallel with overlap. This could be a static local variable if it wasn't for g++7 yielding a linker error.
-    bool warningIssued_;
+    mutable bool warningIssued_;
 
     //! if multithreaded assembly is enabled
     bool enableMultithreading_ = false;