diff --git a/Documentation/ProjectFile/prj/process_variables/process_variable/deactivated_subdomains/deactivated_subdomain/t_boundary_parameter.md b/Documentation/ProjectFile/prj/process_variables/process_variable/deactivated_subdomains/deactivated_subdomain/t_boundary_parameter.md
new file mode 100644
index 0000000000000000000000000000000000000000..8cd8c4cec7cfa389e8d1b5ae47f7e72326165be5
--- /dev/null
+++ b/Documentation/ProjectFile/prj/process_variables/process_variable/deactivated_subdomains/deactivated_subdomain/t_boundary_parameter.md
@@ -0,0 +1 @@
+\copydoc ProcessLib::DeactivatedSubdomain::boundary_value_parameter
diff --git a/ProcessLib/CreateDeactivatedSubdomain.cpp b/ProcessLib/CreateDeactivatedSubdomain.cpp
index 362a6fa41fec34b5b6d944af7d3597b1525c412d..602fbbb863f7d3ec41236a0aea91a6960720ab86 100644
--- a/ProcessLib/CreateDeactivatedSubdomain.cpp
+++ b/ProcessLib/CreateDeactivatedSubdomain.cpp
@@ -17,6 +17,8 @@
 #include "MeshLib/Mesh.h"
 #include "MeshLib/MeshEditing/DuplicateMeshComponents.h"
 #include "MeshLib/Node.h"
+#include "ParameterLib/Parameter.h"
+#include "ParameterLib/Utils.h"
 
 namespace ProcessLib
 {
@@ -170,6 +172,7 @@ static std::pair<Eigen::Vector3d, Eigen::Vector3d> parseLineSegment(
 
 std::unique_ptr<DeactivatedSubdomain const> createDeactivatedSubdomain(
     BaseLib::ConfigTree const& config, MeshLib::Mesh const& mesh,
+    std::vector<std::unique_ptr<ParameterLib::ParameterBase>> const& parameters,
     std::map<std::string,
              std::unique_ptr<MathLib::PiecewiseLinearInterpolation>> const&
         curves)
@@ -212,6 +215,17 @@ std::unique_ptr<DeactivatedSubdomain const> createDeactivatedSubdomain(
         line_segment = parseLineSegment(*line_segment_config);
     }
 
+    ParameterLib::Parameter<double>* boundary_value_parameter = nullptr;
+    auto boundary_value_parameter_name =
+        //! \ogs_file_param{prj__process_variables__process_variable__deactivated_subdomains__deactivated_subdomain__boundary_parameter}
+        config.getConfigParameterOptional<std::string>("boundary_parameter");
+    if (boundary_value_parameter_name)
+    {
+        DBUG("Using parameter {:s}", *boundary_value_parameter_name);
+        boundary_value_parameter = &ParameterLib::findParameter<double>(
+            *boundary_value_parameter_name, parameters, 1, &mesh);
+    }
+
     auto deactivated_subdomain_material_ids =
         //! \ogs_file_param{prj__process_variables__process_variable__deactivated_subdomains__deactivated_subdomain__material_ids}
         config.getConfigParameter("material_ids", std::vector<int>{});
@@ -250,13 +264,15 @@ std::unique_ptr<DeactivatedSubdomain const> createDeactivatedSubdomain(
         std::move(time_interval),
         line_segment,
         std::move(deactivated_subdomain_material_ids),
-        std::move(deactivated_subdomain_meshes));
+        std::move(deactivated_subdomain_meshes),
+        boundary_value_parameter);
 }
 
 std::vector<std::unique_ptr<DeactivatedSubdomain const>>
 createDeactivatedSubdomains(
     BaseLib::ConfigTree const& config,
     MeshLib::Mesh const& mesh,
+    std::vector<std::unique_ptr<ParameterLib::ParameterBase>> const& parameters,
     std::map<std::string,
              std::unique_ptr<MathLib::PiecewiseLinearInterpolation>> const&
         curves)
@@ -277,7 +293,7 @@ createDeactivatedSubdomains(
             begin(deactivated_subdomain_configs),
             end(deactivated_subdomain_configs),
             back_inserter(deactivated_subdomains), [&](auto const& config) {
-                return createDeactivatedSubdomain(config, mesh, curves);
+                return createDeactivatedSubdomain(config, mesh, parameters, curves);
             });
     }
     return deactivated_subdomains;
diff --git a/ProcessLib/CreateDeactivatedSubdomain.h b/ProcessLib/CreateDeactivatedSubdomain.h
index 0769baadf7f2ed02bf3e339a985050df37462115..af34e746eeda3d7e3ff3e78a671a42abfc741e2b 100644
--- a/ProcessLib/CreateDeactivatedSubdomain.h
+++ b/ProcessLib/CreateDeactivatedSubdomain.h
@@ -30,6 +30,11 @@ class Mesh;
 class Node;
 }  // namespace MeshLib
 
+namespace ParameterLib
+{
+struct ParameterBase;
+}
+
 namespace ProcessLib
 {
 struct DeactivatedSubdomain;
@@ -40,6 +45,7 @@ std::vector<std::unique_ptr<DeactivatedSubdomain const>>
 createDeactivatedSubdomains(
     BaseLib::ConfigTree const& config,
     MeshLib::Mesh const& mesh,
+    std::vector<std::unique_ptr<ParameterLib::ParameterBase>> const& parameters,
     std::map<std::string,
              std::unique_ptr<MathLib::PiecewiseLinearInterpolation>> const&
         curves);
diff --git a/ProcessLib/DeactivatedSubdomain.cpp b/ProcessLib/DeactivatedSubdomain.cpp
index 85a8438a3f1a080231e94215e432fe8438d99f8a..8ddd1edfbd5213fe41d76574281f19264444245c 100644
--- a/ProcessLib/DeactivatedSubdomain.cpp
+++ b/ProcessLib/DeactivatedSubdomain.cpp
@@ -16,6 +16,7 @@
 #include "MeshLib/Elements/Element.h"
 #include "MeshLib/Mesh.h"
 #include "MeshLib/Node.h"
+#include "ParameterLib/Parameter.h"
 
 namespace ProcessLib
 {
@@ -38,11 +39,13 @@ DeactivatedSubdomain::DeactivatedSubdomain(
         line_segment,
     std::vector<int>&& materialIDs_,
     std::vector<std::unique_ptr<DeactivatedSubdomainMesh>>&&
-        deactivated_subdomain_meshes_)
+        deactivated_subdomain_meshes_,
+    ParameterLib::Parameter<double> const* const boundary_value_parameter)
     : time_interval(std::move(time_interval_)),
       line_segment(line_segment),
       materialIDs(std::move(materialIDs_)),
-      deactivated_subdomain_meshes(std::move(deactivated_subdomain_meshes_))
+      deactivated_subdomain_meshes(std::move(deactivated_subdomain_meshes_)),
+      boundary_value_parameter(boundary_value_parameter)
 {
 }
 
diff --git a/ProcessLib/DeactivatedSubdomain.h b/ProcessLib/DeactivatedSubdomain.h
index e7075ef8970495efddcbb51178ad942fe83472c2..df1327167ba1d13c1af810b7dfb0db3a201bf628 100644
--- a/ProcessLib/DeactivatedSubdomain.h
+++ b/ProcessLib/DeactivatedSubdomain.h
@@ -26,6 +26,12 @@ class Mesh;
 class Node;
 }  // namespace MeshLib
 
+namespace ParameterLib
+{
+template <typename T>
+struct Parameter;
+}
+
 namespace ProcessLib
 {
 struct DeactivatedSubdomainMesh
@@ -67,7 +73,8 @@ struct DeactivatedSubdomain
             line_segment,
         std::vector<int>&& materialIDs_,
         std::vector<std::unique_ptr<DeactivatedSubdomainMesh>>&&
-            deactivated_subdomain_meshes_);
+            deactivated_subdomain_meshes_,
+        ParameterLib::Parameter<double> const* boundary_value_parameter);
 
     bool includesTimeOf(double const t) const;
 
@@ -89,6 +96,10 @@ struct DeactivatedSubdomain
     std::vector<std::unique_ptr<DeactivatedSubdomainMesh>> const
         deactivated_subdomain_meshes;
 
+    /// A pararameter for the optional Dirichlet boundary condition applied on
+    /// the surface of the deactivated subdomain/excavation.
+    ParameterLib::Parameter<double> const* const boundary_value_parameter;
+
     static const std::string zero_parameter_name;
 };
 }  // namespace ProcessLib
diff --git a/ProcessLib/ProcessVariable.cpp b/ProcessLib/ProcessVariable.cpp
index 34719e831336c4ec39de40a3fd10f2774d06ae8d..7d48d033c841e71947222897bcc7ded31a77e69b 100644
--- a/ProcessLib/ProcessVariable.cpp
+++ b/ProcessLib/ProcessVariable.cpp
@@ -105,7 +105,7 @@ ProcessVariable::ProcessVariable(
       //! \ogs_file_param{prj__process_variables__process_variable__order}
       _shapefunction_order(config.getConfigParameter<unsigned>("order")),
       _deactivated_subdomains(
-          createDeactivatedSubdomains(config, mesh, curves)),
+          createDeactivatedSubdomains(config, mesh, parameters, curves)),
       _initial_condition(ParameterLib::findParameter<double>(
           //! \ogs_file_param{prj__process_variables__process_variable__initial_condition}
           config.getConfigParameter<std::string>("initial_condition"),