diff --git a/ProcessLib/HT/HTFEM.h b/ProcessLib/HT/HTFEM.h
index cc74d66603d7530c12fb96643fb48cc5bebe65a9..ac841d3c3029c2d13f085efd90fe04262be4cc43 100644
--- a/ProcessLib/HT/HTFEM.h
+++ b/ProcessLib/HT/HTFEM.h
@@ -29,6 +29,41 @@ namespace ProcessLib
 {
 namespace HT
 {
+
+template <int GlobalDim>
+Eigen::Matrix<double, GlobalDim, GlobalDim> intrinsicPermeability(
+    MaterialPropertyLib::PropertyDataType const& values)
+{
+    if (boost::get<double>(&values))
+    {
+        return Eigen::Matrix<double, GlobalDim, GlobalDim>::Identity() *
+               boost::get<double>(values);
+    }
+    if (boost::get<MaterialPropertyLib::Vector>(&values))
+    {
+        return Eigen::Map<Eigen::Matrix<double, GlobalDim, 1> const>(
+                   boost::get<MaterialPropertyLib::Vector>(values).data(),
+                   GlobalDim, 1)
+            .asDiagonal();
+    }
+    if (boost::get<MaterialPropertyLib::Tensor2d>(&values))
+    {
+        return Eigen::Map<Eigen::Matrix<double, GlobalDim, GlobalDim> const>(
+            boost::get<MaterialPropertyLib::Tensor2d>(values).data(), GlobalDim,
+            GlobalDim);
+    }
+    if (boost::get<MaterialPropertyLib::Tensor>(&values))
+    {
+        return Eigen::Map<Eigen::Matrix<double, GlobalDim, GlobalDim> const>(
+            boost::get<MaterialPropertyLib::Tensor>(values).data(), GlobalDim,
+            GlobalDim);
+    }
+    OGS_FATAL(
+        "Intrinsic permeability parameter values size is neither one nor %d "
+        "nor %d squared.",
+        GlobalDim, GlobalDim);
+}
+
 template <typename ShapeFunction, typename IntegrationMethod,
           unsigned GlobalDim>
 class HTFEM : public HTLocalAssemblerInterface
@@ -93,7 +128,7 @@ public:
     /// Computes the flux in the point \c pnt_local_coords that is given in
     /// local coordinates using the values from \c local_x.
     Eigen::Vector3d getFlux(MathLib::Point3d const& pnt_local_coords,
-                            double const t,
+                            double const /*t*/,
                             std::vector<double> const& local_x) const override
     {
         // eval dNdx and invJ at given point
@@ -128,16 +163,16 @@ public:
         vars[static_cast<int>(MaterialPropertyLib::Variable::phase_pressure)] =
             p_int_pt;
 
-        auto const K =
-            this->_material_properties.porous_media_properties
-                .getIntrinsicPermeability(t, pos)
-                .getValue(t, pos, 0.0,
-                          boost::get<double>(vars[static_cast<int>(
-                              MaterialPropertyLib::Variable::temperature)]));
-
         auto const& medium =
             *_material_properties.media_map->getMedium(_element.getID());
         auto const& liquid_phase = medium.phase("AqueousLiquid");
+        auto const& solid_phase = medium.phase("Solid");
+
+        auto const K = intrinsicPermeability<GlobalDim>(
+            solid_phase
+                .property(MaterialPropertyLib::PropertyType::permeability)
+                .value(vars));
+
         auto const mu =
             liquid_phase.property(MaterialPropertyLib::PropertyType::viscosity)
                 .template value<double>(vars);
@@ -240,7 +275,7 @@ protected:
     }
 
     std::vector<double> const& getIntPtDarcyVelocityLocal(
-        const double t, std::vector<double> const& local_p,
+        const double /*t*/, std::vector<double> const& local_p,
         std::vector<double> const& local_T, std::vector<double>& cache) const
     {
         auto const n_integration_points =
@@ -262,6 +297,7 @@ protected:
         auto const& medium =
             *_material_properties.media_map->getMedium(_element.getID());
         auto const& liquid_phase = medium.phase("AqueousLiquid");
+        auto const& solid_phase = medium.phase("Solid");
 
         for (unsigned ip = 0; ip < n_integration_points; ++ip)
         {
@@ -281,9 +317,10 @@ protected:
             vars[static_cast<int>(
                 MaterialPropertyLib::Variable::phase_pressure)] = p_int_pt;
 
-            auto const K = _material_properties.porous_media_properties
-                               .getIntrinsicPermeability(t, pos)
-                               .getValue(t, pos, 0.0, T_int_pt);
+            auto const K = intrinsicPermeability<GlobalDim>(
+                solid_phase
+                    .property(MaterialPropertyLib::PropertyType::permeability)
+                    .value(vars));
 
             auto const mu =
                 liquid_phase
diff --git a/ProcessLib/HT/MonolithicHTFEM.h b/ProcessLib/HT/MonolithicHTFEM.h
index 2c247adbd9fae49be27b5ac3fa91818a12ec6702..03ec0af2727fad7fd8eca2271329341a96ee6df3 100644
--- a/ProcessLib/HT/MonolithicHTFEM.h
+++ b/ProcessLib/HT/MonolithicHTFEM.h
@@ -101,6 +101,7 @@ public:
         auto const& medium =
             *process_data.media_map->getMedium(this->_element.getID());
         auto const& liquid_phase = medium.phase("AqueousLiquid");
+        auto const& solid_phase = medium.phase("Solid");
 
         auto const& b = process_data.specific_body_force;
 
@@ -137,9 +138,13 @@ public:
             auto const porosity =
                 process_data.porous_media_properties.getPorosity(t, pos)
                     .getValue(t, pos, 0.0, T_int_pt);
+
             auto const intrinsic_permeability =
-                process_data.porous_media_properties.getIntrinsicPermeability(
-                    t, pos).getValue(t, pos, 0.0, T_int_pt);
+                intrinsicPermeability<GlobalDim>(
+                    solid_phase
+                        .property(
+                            MaterialPropertyLib::PropertyType::permeability)
+                        .value(vars));
 
             vars[static_cast<int>(MaterialPropertyLib::Variable::temperature)] =
                 T_int_pt;
diff --git a/ProcessLib/HT/StaggeredHTFEM-impl.h b/ProcessLib/HT/StaggeredHTFEM-impl.h
index a625e0cb67d0d4ad029db2cbcda413b3adea4dc1..993e878f30956e61e2b6b46516b67561fd8c7184 100644
--- a/ProcessLib/HT/StaggeredHTFEM-impl.h
+++ b/ProcessLib/HT/StaggeredHTFEM-impl.h
@@ -128,10 +128,10 @@ void StaggeredHTFEM<ShapeFunction, IntegrationMethod, GlobalDim>::
                 .getSpecificStorage(t, pos)
                 .getValue(0.0);
 
-        auto const intrinsic_permeability =
-            material_properties.porous_media_properties
-                .getIntrinsicPermeability(t, pos)
-                .getValue(t, pos, 0.0, T1_int_pt);
+        auto const intrinsic_permeability = intrinsicPermeability<GlobalDim>(
+            solid_phase
+                .property(MaterialPropertyLib::PropertyType::permeability)
+                .value(vars));
         GlobalDimMatrixType K_over_mu = intrinsic_permeability / viscosity;
 
         // matrix assembly
@@ -208,6 +208,7 @@ void StaggeredHTFEM<ShapeFunction, IntegrationMethod, GlobalDim>::
     auto const& medium =
         *material_properties.media_map->getMedium(this->_element.getID());
     auto const& liquid_phase = medium.phase("AqueousLiquid");
+    auto const& solid_phase = medium.phase("Solid");
 
 
     auto const& b = material_properties.specific_body_force;
@@ -263,10 +264,10 @@ void StaggeredHTFEM<ShapeFunction, IntegrationMethod, GlobalDim>::
             liquid_phase.property(MaterialPropertyLib::PropertyType::viscosity)
                 .template value<double>(vars);
 
-        auto const intrinsic_permeability =
-            material_properties.porous_media_properties
-                .getIntrinsicPermeability(t, pos)
-                .getValue(t, pos, 0.0, T1_at_xi);
+        auto const intrinsic_permeability = intrinsicPermeability<GlobalDim>(
+            solid_phase
+                .property(MaterialPropertyLib::PropertyType::permeability)
+                .value(vars));
 
         GlobalDimMatrixType K_over_mu = intrinsic_permeability / viscosity;
         GlobalDimVectorType const velocity =