diff --git a/ProcessLib/RichardsComponentTransport/CreatePorousMediaProperties.cpp b/ProcessLib/RichardsComponentTransport/CreatePorousMediaProperties.cpp
index fb65c752e570e541fde15b981ea2d1fa3c74490e..8ea175fb6072dfd52eca86914ae20517164899ba 100644
--- a/ProcessLib/RichardsComponentTransport/CreatePorousMediaProperties.cpp
+++ b/ProcessLib/RichardsComponentTransport/CreatePorousMediaProperties.cpp
@@ -16,6 +16,7 @@
 #include "MaterialLib/PorousMedium/Permeability/createPermeabilityModel.h"
 #include "MaterialLib/PorousMedium/Porosity/createPorosityModel.h"
 #include "MaterialLib/PorousMedium/Storage/createStorageModel.h"
+#include "MaterialLib/PorousMedium/UnsaturatedProperty/RelativePermeability/CreateRelativePermeabilityModel.h"
 
 #include "MeshLib/Mesh.h"
 
@@ -33,6 +34,9 @@ PorousMediaProperties createPorousMediaProperties(
         porosity_models;
     std::vector<std::unique_ptr<MaterialLib::PorousMedium::Storage>>
         storage_models;
+    std::vector<
+        std::unique_ptr<MaterialLib::PorousMedium::RelativePermeability>>
+        relative_permeability_models;
 
     std::vector<int> mat_ids;
     for (auto const& porous_medium_config :
@@ -63,6 +67,13 @@ PorousMediaProperties createPorousMediaProperties(
             porous_medium_config.getConfigSubtree("storage");
         storage_models.emplace_back(
             MaterialLib::PorousMedium::createStorageModel(storage_config));
+
+        auto const& krel_config =
+            //! \ogs_file_param{prj__processes__process__RichardsComponentTransport__porous_medium__porous_medium__relative_permeability}
+            porous_medium_config.getConfigSubtree("relative_permeability");
+        auto krel = MaterialLib::PorousMedium::createRelativePermeabilityModel(
+            krel_config);
+        relative_permeability_models.emplace_back(std::move(krel));
     }
 
     BaseLib::reorderVector(intrinsic_permeability_models, mat_ids);
@@ -79,10 +90,10 @@ PorousMediaProperties createPorousMediaProperties(
                   material_ids.begin());
     }
 
-    return PorousMediaProperties{std::move(porosity_models),
-                                 std::move(intrinsic_permeability_models),
-                                 std::move(storage_models),
-                                 std::move(material_ids)};
+    return PorousMediaProperties{
+        std::move(porosity_models), std::move(intrinsic_permeability_models),
+        std::move(storage_models), std::move(relative_permeability_models),
+        std::move(material_ids)};
 }
 
 }  // namespace ComponentTransport
diff --git a/ProcessLib/RichardsComponentTransport/PorousMediaProperties.h b/ProcessLib/RichardsComponentTransport/PorousMediaProperties.h
index 12dd178163fb0fa5dc5a11e048548c9e59778308..fe50331e570511ed5c4641eb1648c8bfae12bc02 100644
--- a/ProcessLib/RichardsComponentTransport/PorousMediaProperties.h
+++ b/ProcessLib/RichardsComponentTransport/PorousMediaProperties.h
@@ -16,10 +16,9 @@
 #include <Eigen/Dense>
 #include "BaseLib/reorderVector.h"
 
-
 #include "MaterialLib/PorousMedium/Porosity/Porosity.h"
 #include "MaterialLib/PorousMedium/Storage/Storage.h"
-
+#include "MaterialLib/PorousMedium/UnsaturatedProperty/RelativePermeability/RelativePermeability.h"
 #include "ProcessLib/Parameter/SpatialPosition.h"
 
 namespace ProcessLib
@@ -36,11 +35,16 @@ public:
         std::vector<Eigen::MatrixXd>&& intrinsic_permeability_models,
         std::vector<std::unique_ptr<MaterialLib::PorousMedium::Storage>>&&
             specific_storage_models,
+        std::vector<
+            std::unique_ptr<MaterialLib::PorousMedium::RelativePermeability>>&&
+            relative_permeability_models,
         std::vector<int>&& material_ids)
         : _porosity_models(std::move(porosity_models)),
           _intrinsic_permeability_models(
               std::move(intrinsic_permeability_models)),
           _specific_storage_models(std::move(specific_storage_models)),
+          _relative_permeability_models(
+              std::move(relative_permeability_models)),
           _material_ids(std::move(material_ids))
     {
     }
@@ -49,6 +53,8 @@ public:
         : _porosity_models(std::move(other._porosity_models)),
           _intrinsic_permeability_models(other._intrinsic_permeability_models),
           _specific_storage_models(std::move(other._specific_storage_models)),
+          _relative_permeability_models(
+              std::move(other._relative_permeability_models)),
           _material_ids(other._material_ids)
     {
     }
@@ -62,6 +68,9 @@ public:
     MaterialLib::PorousMedium::Storage const& getSpecificStorage(
         double t, SpatialPosition const& pos) const;
 
+    MaterialLib::PorousMedium::RelativePermeability const&
+    getRelativePermeability(double t, SpatialPosition const& pos) const;
+
 private:
     int getMaterialID(SpatialPosition const& pos) const;
 private:
@@ -70,6 +79,9 @@ private:
     std::vector<Eigen::MatrixXd> _intrinsic_permeability_models;
     std::vector<std::unique_ptr<MaterialLib::PorousMedium::Storage>>
         _specific_storage_models;
+    std::vector<
+        std::unique_ptr<MaterialLib::PorousMedium::RelativePermeability>>
+        _relative_permeability_models;
     std::vector<int> _material_ids;
 };
 
diff --git a/ProcessLib/RichardsComponentTransport/RichardsComponentTransportFEM.h b/ProcessLib/RichardsComponentTransport/RichardsComponentTransportFEM.h
index c23ac9fb2c6f3d9d82c87f7349ea27a92f6eda47..eede4c8fd9f508fe09e6ce0c6e99a9fa6fc91226 100644
--- a/ProcessLib/RichardsComponentTransport/RichardsComponentTransportFEM.h
+++ b/ProcessLib/RichardsComponentTransport/RichardsComponentTransportFEM.h
@@ -222,6 +222,9 @@ public:
             auto const& K =
                 _process_data.porous_media_properties.getIntrinsicPermeability(
                     t, pos);
+            auto const& k_rel =
+                _process_data.porous_media_properties.getRelativePermeability(
+                    t, pos).getValue(Sw);
             // Use the viscosity model to compute the viscosity
             auto const mu = _process_data.fluid_properties->getValue(
                 MaterialLib::Fluid::FluidPropertyType::Viscosity, vars);