diff --git a/Documentation/ProjectFile/prj/process_variables/process_variable/source_terms/source_term/Nodal/t_parameter.md b/Documentation/ProjectFile/prj/process_variables/process_variable/source_terms/source_term/Nodal/t_parameter.md
new file mode 100644
index 0000000000000000000000000000000000000000..d5819404d6fa143be1bebd851a9996a825900b3b
--- /dev/null
+++ b/Documentation/ProjectFile/prj/process_variables/process_variable/source_terms/source_term/Nodal/t_parameter.md
@@ -0,0 +1,2 @@
+The name of the parameter that defines value that should be used for the source
+term.
diff --git a/Documentation/ProjectFile/prj/process_variables/process_variable/source_terms/source_term/Nodal/t_value.md b/Documentation/ProjectFile/prj/process_variables/process_variable/source_terms/source_term/Nodal/t_value.md
deleted file mode 100644
index c27bd71e47f57aed6873e4416247e165e63564d7..0000000000000000000000000000000000000000
--- a/Documentation/ProjectFile/prj/process_variables/process_variable/source_terms/source_term/Nodal/t_value.md
+++ /dev/null
@@ -1 +0,0 @@
-The value for the nodal source term.
diff --git a/ProcessLib/Process.cpp b/ProcessLib/Process.cpp
index 8e2e0875f2812320d55c33d8a83ae8130be8435c..4647714e169eeeb86e119c127b63cbc16e60408a 100644
--- a/ProcessLib/Process.cpp
+++ b/ProcessLib/Process.cpp
@@ -47,6 +47,16 @@ Process::Process(
               pcs_BCs.emplace_back(BoundaryConditionCollection(parameters));
           }
           return pcs_BCs;
+      }(_process_variables.size())),
+      _source_term_collections([&](const std::size_t number_of_processes)
+                               -> std::vector<SourceTermCollection> {
+          std::vector<SourceTermCollection> pcs_sts;
+          pcs_sts.reserve(number_of_processes);
+          for (std::size_t i = 0; i < number_of_processes; i++)
+          {
+              pcs_sts.emplace_back(SourceTermCollection(parameters));
+          }
+          return pcs_sts;
       }(_process_variables.size()))
 {
 }
@@ -60,15 +70,9 @@ void Process::initializeProcessBoundaryConditionsAndSourceTerms(
     per_process_BCs.addBCsForProcessVariables(per_process_variables, dof_table,
                                               _integration_order);
 
-    std::vector<std::unique_ptr<NodalSourceTerm>> per_process_source_terms;
-    for (auto& pv : per_process_variables)
-    {
-        auto sts = pv.get().createSourceTerms(dof_table, 0, _integration_order);
-
-        std::move(sts.begin(), sts.end(),
-                  std::back_inserter(per_process_source_terms));
-    }
-    _source_terms.push_back(std::move(per_process_source_terms));
+    auto& per_process_sts = _source_term_collections[process_id];
+    per_process_sts.addSourceTermsForProcessVariables(
+        per_process_variables, dof_table, _integration_order);
 }
 
 void Process::initializeBoundaryConditions()
@@ -188,11 +192,7 @@ void Process::assemble(const double t, GlobalVector const& x, GlobalMatrix& M,
         (_coupled_solutions) != nullptr ? _coupled_solutions->process_id : 0;
     _boundary_conditions[pcs_id].applyNaturalBC(t, x, K, b);
 
-    auto& source_terms_per_pcs = _source_terms[pcs_id];
-    for (auto& st : source_terms_per_pcs)
-    {
-        st->integrateNodalSourceTerm(t, b);
-    }
+    _source_term_collections[pcs_id].integrateNodalSourceTerms(t, b);
 }
 
 void Process::assembleWithJacobian(const double t, GlobalVector const& x,
diff --git a/ProcessLib/Process.h b/ProcessLib/Process.h
index 1ffb253dc710e58595214f79f77b4c1e9ca04904..467a04085e63c1e51cb069886de43ecda42d5525 100644
--- a/ProcessLib/Process.h
+++ b/ProcessLib/Process.h
@@ -16,6 +16,7 @@
 #include "NumLib/ODESolver/ODESystem.h"
 #include "NumLib/ODESolver/TimeDiscretization.h"
 #include "ProcessLib/BoundaryCondition/BoundaryConditionCollection.h"
+#include "ProcessLib/SourceTerms/SourceTermCollection.h"
 #include "ProcessLib/Output/CachedSecondaryVariable.h"
 #include "ProcessLib/Output/ExtrapolatorData.h"
 #include "ProcessLib/Output/SecondaryVariable.h"
@@ -278,9 +279,10 @@ private:
     /// scheme, the size of vector is the number of the coupled processes.
     std::vector<BoundaryConditionCollection> _boundary_conditions;
 
-    /// Vector for nodal source terms. The outer vector is for processes,
-    /// which has the same size as that for boundary conditions.
-    std::vector<std::vector<std::unique_ptr<NodalSourceTerm>>> _source_terms;
+    /// Vector for nodal source term collections. For the monolithic scheme
+    /// or a single process, the size of the vector is one. For the staggered
+    /// scheme, the size of vector is the number of the coupled processes.
+    std::vector<SourceTermCollection> _source_term_collections;
 
     ExtrapolatorData _extrapolator_data;
 };
diff --git a/ProcessLib/ProcessVariable.cpp b/ProcessLib/ProcessVariable.cpp
index e29350aad2fc781aadff545da72721b7f6c0678c..93474a224f8c1238941233ec4bb69fb3ee696933 100644
--- a/ProcessLib/ProcessVariable.cpp
+++ b/ProcessLib/ProcessVariable.cpp
@@ -178,14 +178,15 @@ std::vector<std::unique_ptr<NodalSourceTerm>>
 ProcessVariable::createSourceTerms(
     const NumLib::LocalToGlobalIndexMap& dof_table,
     const int variable_id,
-    unsigned const integration_order)
+    unsigned const integration_order,
+    std::vector<std::unique_ptr<ParameterBase>> const& parameters)
 {
     std::vector<std::unique_ptr<NodalSourceTerm>> source_terms;
 
     for (auto& config : _source_term_configs)
         source_terms.emplace_back(_source_term_builder->createSourceTerm(
             config, dof_table, _mesh, variable_id, integration_order,
-            _shapefunction_order));
+            _shapefunction_order, parameters));
 
     return source_terms;
 }
diff --git a/ProcessLib/ProcessVariable.h b/ProcessLib/ProcessVariable.h
index 63dfb1ca3cd196eee098a93b451fbbaa956aacd6..4a33f59bb18346915eea1cf62369e8ce6a4541eb 100644
--- a/ProcessLib/ProcessVariable.h
+++ b/ProcessLib/ProcessVariable.h
@@ -57,7 +57,8 @@ public:
 
     std::vector<std::unique_ptr<NodalSourceTerm>> createSourceTerms(
         const NumLib::LocalToGlobalIndexMap& dof_table, const int variable_id,
-        unsigned const integration_order);
+        unsigned const integration_order,
+        std::vector<std::unique_ptr<ParameterBase>> const& parameters);
 
     Parameter<double> const& getInitialCondition() const
     {
diff --git a/ProcessLib/SourceTerms/CreateNodalSourceTerm.cpp b/ProcessLib/SourceTerms/CreateNodalSourceTerm.cpp
index 9a561ed74b4e232c3ed306e3b5321582dd62df04..635d1d430d2c75fa8ba8bcef866d7f2fd4f8438b 100644
--- a/ProcessLib/SourceTerms/CreateNodalSourceTerm.cpp
+++ b/ProcessLib/SourceTerms/CreateNodalSourceTerm.cpp
@@ -18,18 +18,21 @@ namespace ProcessLib
 std::unique_ptr<NodalSourceTerm> createNodalSourceTerm(
     BaseLib::ConfigTree const& config,
     const NumLib::LocalToGlobalIndexMap& dof_table, std::size_t const mesh_id,
-    std::size_t const node_id, const int variable_id, const int component_id)
+    std::size_t const node_id, const int variable_id, const int component_id,
+    std::vector<std::unique_ptr<ProcessLib::ParameterBase>> const& parameters)
 {
     DBUG("Constructing NodalSourceTerm from config.");
     //! \ogs_file_param{prj__process_variables__process_variable__source_terms__source_term__type}
     config.checkConfigParameter("type", "Nodal");
 
-    //! \ogs_file_param{prj__process_variables__process_variable__source_terms__source_term__Nodal__value}
-    auto const nodal_value = config.getConfigParameter<double>("value");
-    DBUG("Using value %f as nodal source term", nodal_value);
+    //! \ogs_file_param{prj__process_variables__process_variable__source_terms__source_term__Nodal__parameter}
+    auto const param_name = config.getConfigParameter<std::string>("parameter");
+    DBUG("Using parameter %s as nodal source term.", param_name.c_str());
+
+    auto& param = findParameter<double>(param_name, parameters, 1);
 
     return std::make_unique<NodalSourceTerm>(
-        dof_table, mesh_id, node_id, variable_id, component_id, nodal_value);
+        dof_table, mesh_id, node_id, variable_id, component_id, param);
 }
 
 }  // namespace ProcessLib
diff --git a/ProcessLib/SourceTerms/CreateNodalSourceTerm.h b/ProcessLib/SourceTerms/CreateNodalSourceTerm.h
index d779a933c30bfa78e53c35cd648956d0db8717ac..7a8bfa7adc64aac4b579861fc4c95f2d11c8ae58 100644
--- a/ProcessLib/SourceTerms/CreateNodalSourceTerm.h
+++ b/ProcessLib/SourceTerms/CreateNodalSourceTerm.h
@@ -17,6 +17,7 @@ namespace ProcessLib
 std::unique_ptr<NodalSourceTerm> createNodalSourceTerm(
     BaseLib::ConfigTree const& config,
     const NumLib::LocalToGlobalIndexMap& dof_table, std::size_t mesh_id,
-    std::size_t const node_id, const int variable_id, const int component_id);
+    std::size_t const node_id, const int variable_id, const int component_id,
+    std::vector<std::unique_ptr<ProcessLib::ParameterBase>> const& parameters);
 
 }   // namespace ProcessLib
diff --git a/ProcessLib/SourceTerms/NodalSourceTerm.cpp b/ProcessLib/SourceTerms/NodalSourceTerm.cpp
index aa358ac21b5c0141bfb8c410051a6ba10cf6a22e..6811bf8c952e6d80f9fa82deaa5fffd0fb0d92a2 100644
--- a/ProcessLib/SourceTerms/NodalSourceTerm.cpp
+++ b/ProcessLib/SourceTerms/NodalSourceTerm.cpp
@@ -17,18 +17,18 @@ NodalSourceTerm::NodalSourceTerm(const NumLib::LocalToGlobalIndexMap& dof_table,
                                  std::size_t const mesh_id,
                                  std::size_t const node_id,
                                  const int variable_id, const int component_id,
-                                 double value)
+                                 Parameter<double> const& parameter)
     : _dof_table(dof_table),
       _mesh_id(mesh_id),
       _node_id(node_id),
       _variable_id(variable_id),
       _component_id(component_id),
-      _value(value)
+      _parameter(parameter)
 {
     DBUG("Create NodalSourceTerm.");
 }
 
-void NodalSourceTerm::integrateNodalSourceTerm(const double /*t*/,
+void NodalSourceTerm::integrateNodalSourceTerm(const double t,
                                                GlobalVector& b) const
 {
     DBUG("Assemble NodalSourceTerm.");
@@ -36,7 +36,11 @@ void NodalSourceTerm::integrateNodalSourceTerm(const double /*t*/,
     MeshLib::Location const l{_mesh_id, MeshLib::MeshItemType::Node, _node_id};
     auto const index =
         _dof_table.getGlobalIndex(l, _variable_id, _component_id);
-    b.add(index, _value);
+
+    SpatialPosition pos;
+    pos.setNodeID(_node_id);
+
+    b.add(index, _parameter(t, pos).front());
 }
 
 }  // namespace ProcessLib
diff --git a/ProcessLib/SourceTerms/NodalSourceTerm.h b/ProcessLib/SourceTerms/NodalSourceTerm.h
index 65b85a1c4610803c75bc85d931daf0c6ac65d67d..9ee08a61e01e6d8e62bc26d029f8457671694d65 100644
--- a/ProcessLib/SourceTerms/NodalSourceTerm.h
+++ b/ProcessLib/SourceTerms/NodalSourceTerm.h
@@ -10,6 +10,7 @@
 #pragma once
 
 #include "NumLib/DOF/LocalToGlobalIndexMap.h"
+#include "ProcessLib/Parameter/Parameter.h"
 
 namespace ProcessLib
 {
@@ -19,7 +20,7 @@ public:
     NodalSourceTerm(const NumLib::LocalToGlobalIndexMap& dof_table,
                     std::size_t const mesh_id, std::size_t const node_id,
                     const int variable_id, const int component_id,
-                    double value);
+                    Parameter<double> const& parameter);
 
     void integrateNodalSourceTerm(
         const double t,
@@ -31,7 +32,7 @@ private:
     std::size_t const _node_id;
     int const _variable_id;
     int const _component_id;
-    double const _value;
+    Parameter<double> const& _parameter;
 };
 
 }   // namespace ProcessLib
diff --git a/ProcessLib/SourceTerms/SourceTermBuilder.cpp b/ProcessLib/SourceTerms/SourceTermBuilder.cpp
index 762ccb1ba821cceef6ff6357ce9fd5f5caa6f637..156bb4c9ecad7c74771126ae23099856f2233047 100644
--- a/ProcessLib/SourceTerms/SourceTermBuilder.cpp
+++ b/ProcessLib/SourceTerms/SourceTermBuilder.cpp
@@ -22,7 +22,8 @@ std::unique_ptr<NodalSourceTerm> SourceTermBuilder::createSourceTerm(
     const SourceTermConfig& config,
     const NumLib::LocalToGlobalIndexMap& dof_table, const MeshLib::Mesh& mesh,
     const int variable_id, const unsigned integration_order,
-    const unsigned shapefunction_order)
+    const unsigned shapefunction_order,
+    std::vector<std::unique_ptr<ProcessLib::ParameterBase>> const& parameters)
 {
     //! \ogs_file_param{prj__process_variables__process_variable__source_terms__source_term__type}
     auto const type = config.config.peekConfigParameter<std::string>("type");
@@ -30,7 +31,8 @@ std::unique_ptr<NodalSourceTerm> SourceTermBuilder::createSourceTerm(
     if (type == "Nodal")
     {
         return createNodalSourceTerm(config, dof_table, mesh, variable_id,
-                                     integration_order, shapefunction_order);
+                                     integration_order, shapefunction_order,
+                                     parameters);
     }
 
     OGS_FATAL("Unknown source term type: `%s'.", type.c_str());
@@ -40,7 +42,8 @@ std::unique_ptr<NodalSourceTerm> SourceTermBuilder::createNodalSourceTerm(
     const SourceTermConfig& config,
     const NumLib::LocalToGlobalIndexMap& dof_table, const MeshLib::Mesh& mesh,
     const int variable_id, const unsigned /*integration_order*/,
-    const unsigned /*shapefunction_order*/)
+    const unsigned /*shapefunction_order*/,
+    std::vector<std::unique_ptr<ProcessLib::ParameterBase>> const& parameters)
 {
     std::unique_ptr<MeshGeoToolsLib::SearchLength> search_length_algorithm =
         MeshGeoToolsLib::createSearchLengthAlgorithm(config.config, mesh);
@@ -88,11 +91,11 @@ std::unique_ptr<NodalSourceTerm> SourceTermBuilder::createNodalSourceTerm(
     if (ids.size() != 1)
         OGS_FATAL(
             "Found %d nodes for nodal source term, but exactly one node is "
-            "required.");
+            "required.", ids.size());
 
     return ProcessLib::createNodalSourceTerm(
         config.config, dof_table, mesh.getID(), ids[0], variable_id,
-        *config.component_id);
+        *config.component_id, parameters);
 }
 
 }  // ProcessLib
diff --git a/ProcessLib/SourceTerms/SourceTermBuilder.h b/ProcessLib/SourceTerms/SourceTermBuilder.h
index f3240cc68fd1b90fd3d0490b6c5f3b77c1a284be..ba060dd534067ca3e5e583253a673ba9794ca79f 100644
--- a/ProcessLib/SourceTerms/SourceTermBuilder.h
+++ b/ProcessLib/SourceTerms/SourceTermBuilder.h
@@ -10,6 +10,7 @@
 #pragma once
 
 #include "NodalSourceTerm.h"
+#include "ProcessLib/Parameter/Parameter.h"
 
 namespace GeoLib
 {
@@ -47,14 +48,18 @@ public:
         const SourceTermConfig& config,
         const NumLib::LocalToGlobalIndexMap& dof_table,
         const MeshLib::Mesh& mesh, const int variable_id,
-        const unsigned integration_order, const unsigned shapefunction_order);
+        const unsigned integration_order, const unsigned shapefunction_order,
+        std::vector<std::unique_ptr<ProcessLib::ParameterBase>> const&
+            parameters);
 
 protected:
     virtual std::unique_ptr<NodalSourceTerm> createNodalSourceTerm(
         const SourceTermConfig& config,
         const NumLib::LocalToGlobalIndexMap& dof_table,
         const MeshLib::Mesh& mesh, const int variable_id,
-        const unsigned integration_order, const unsigned shapefunction_order);
+        const unsigned integration_order, const unsigned shapefunction_order,
+        std::vector<std::unique_ptr<ProcessLib::ParameterBase>> const&
+            parameters);
 };
 
 }  // ProcessLib
diff --git a/ProcessLib/SourceTerms/SourceTermCollection.cpp b/ProcessLib/SourceTerms/SourceTermCollection.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..f0dc7ba5f978af2efc56d50845392cbde6509e38
--- /dev/null
+++ b/ProcessLib/SourceTerms/SourceTermCollection.cpp
@@ -0,0 +1,39 @@
+/**
+ * \copyright
+ * Copyright (c) 2012-2018, OpenGeoSys Community (http://www.opengeosys.org)
+ *            Distributed under a Modified BSD License.
+ *              See accompanying file LICENSE.txt or
+ *              http://www.opengeosys.org/project/license
+ *
+ */
+
+#include "SourceTermCollection.h"
+
+namespace ProcessLib
+{
+void SourceTermCollection::addSourceTermsForProcessVariables(
+    std::vector<std::reference_wrapper<ProcessVariable>> const&
+        process_variables,
+    NumLib::LocalToGlobalIndexMap const& dof_table,
+    unsigned const integration_order)
+{
+    for (int variable_id = 0;
+         variable_id < static_cast<int>(process_variables.size());
+         ++variable_id)
+    {
+        ProcessVariable& pv = process_variables[variable_id];
+        auto sts = pv.createSourceTerms(dof_table, variable_id,
+                                        integration_order, _parameters);
+
+        std::move(sts.begin(), sts.end(), std::back_inserter(_source_terms));
+    }
+}
+
+void SourceTermCollection::integrateNodalSourceTerms(const double t,
+                                                     GlobalVector& b) const
+{
+    for (auto const& st : _source_terms)
+        st->integrateNodalSourceTerm(t, b);
+}
+
+}
diff --git a/ProcessLib/SourceTerms/SourceTermCollection.h b/ProcessLib/SourceTerms/SourceTermCollection.h
new file mode 100644
index 0000000000000000000000000000000000000000..bfa7f5a3478fa6e6d69867f143b05356ccae487c
--- /dev/null
+++ b/ProcessLib/SourceTerms/SourceTermCollection.h
@@ -0,0 +1,39 @@
+/**
+ * \copyright
+ * Copyright (c) 2012-2018, OpenGeoSys Community (http://www.opengeosys.org)
+ *            Distributed under a Modified BSD License.
+ *              See accompanying file LICENSE.txt or
+ *              http://www.opengeosys.org/project/license
+ *
+ */
+
+#pragma once
+
+#include "ProcessLib/ProcessVariable.h"
+#include "ProcessLib/SourceTerms/NodalSourceTerm.h"
+
+namespace ProcessLib
+{
+class SourceTermCollection final
+{
+public:
+    SourceTermCollection(
+        std::vector<std::unique_ptr<ParameterBase>> const& parameters)
+        : _parameters(parameters)
+    {
+    }
+
+    void integrateNodalSourceTerms(const double t, GlobalVector& b) const;
+
+    void addSourceTermsForProcessVariables(
+        std::vector<std::reference_wrapper<ProcessVariable>> const&
+            process_variables,
+        NumLib::LocalToGlobalIndexMap const& dof_table,
+        unsigned const integration_order);
+
+private:
+    std::vector<std::unique_ptr<NodalSourceTerm>> _source_terms;
+    std::vector<std::unique_ptr<ParameterBase>> const& _parameters;
+};
+
+}  // ProcessLib
diff --git a/Tests/Data/Elliptic/circle_radius_1/circle_1e1_axi.prj b/Tests/Data/Elliptic/circle_radius_1/circle_1e1_axi.prj
index d34028d67a67a0a45760dac0256bdb9180bcebf1..99d8d7b71c087bad3c8a18da36ab72082d10efa7 100644
--- a/Tests/Data/Elliptic/circle_radius_1/circle_1e1_axi.prj
+++ b/Tests/Data/Elliptic/circle_radius_1/circle_1e1_axi.prj
@@ -84,6 +84,11 @@
             <type>Constant</type>
             <value>0</value>
         </parameter>
+        <parameter>
+            <name>pressure_source_term</name>
+            <type>Constant</type>
+            <value>1</value>
+        </parameter>
     </parameters>
     <process_variables>
         <process_variable>
@@ -104,7 +109,7 @@
                     <geometrical_set>geometry</geometrical_set>
                     <geometry>inner</geometry>
                     <type>Nodal</type>
-                    <value>1</value>
+                    <parameter>pressure_source_term</parameter>
                 </source_term>
             </source_terms>
         </process_variable>
diff --git a/Tests/Data/Elliptic/circle_radius_1/circle_1e2_axi.prj b/Tests/Data/Elliptic/circle_radius_1/circle_1e2_axi.prj
index 77b9d2c4e7f97f408695b52e66da16dcc663e5d4..1927850dbfb2950eee440412197c180a5d258968 100644
--- a/Tests/Data/Elliptic/circle_radius_1/circle_1e2_axi.prj
+++ b/Tests/Data/Elliptic/circle_radius_1/circle_1e2_axi.prj
@@ -84,6 +84,11 @@
             <type>Constant</type>
             <value>0</value>
         </parameter>
+        <parameter>
+            <name>pressure_source_term</name>
+            <type>Constant</type>
+            <value>1</value>
+        </parameter>
     </parameters>
     <process_variables>
         <process_variable>
@@ -104,7 +109,7 @@
                     <geometrical_set>geometry</geometrical_set>
                     <geometry>inner</geometry>
                     <type>Nodal</type>
-                    <value>1</value>
+                    <parameter>pressure_source_term</parameter>
                 </source_term>
             </source_terms>
         </process_variable>
diff --git a/Tests/Data/Elliptic/circle_radius_1/circle_1e3_axi.prj b/Tests/Data/Elliptic/circle_radius_1/circle_1e3_axi.prj
index 89c7ddc6b473046ea101b5e55758948b9194e16e..1db7377709f19de8c7a8d1db4760d3253256d062 100644
--- a/Tests/Data/Elliptic/circle_radius_1/circle_1e3_axi.prj
+++ b/Tests/Data/Elliptic/circle_radius_1/circle_1e3_axi.prj
@@ -84,6 +84,11 @@
             <type>Constant</type>
             <value>0</value>
         </parameter>
+        <parameter>
+            <name>pressure_source_term</name>
+            <type>Constant</type>
+            <value>1</value>
+        </parameter>
     </parameters>
     <process_variables>
         <process_variable>
@@ -104,7 +109,7 @@
                     <geometrical_set>geometry</geometrical_set>
                     <geometry>inner</geometry>
                     <type>Nodal</type>
-                    <value>1</value>
+                    <parameter>pressure_source_term</parameter>
                 </source_term>
             </source_terms>
         </process_variable>
diff --git a/Tests/Data/Elliptic/circle_radius_1/circle_1e4_axi.prj b/Tests/Data/Elliptic/circle_radius_1/circle_1e4_axi.prj
index 2ef9e67c9d9a6ba8876d82abd519f694ed68e942..ec83cb0489b1e0516b699e455fd8d6835f9e6813 100644
--- a/Tests/Data/Elliptic/circle_radius_1/circle_1e4_axi.prj
+++ b/Tests/Data/Elliptic/circle_radius_1/circle_1e4_axi.prj
@@ -84,6 +84,11 @@
             <type>Constant</type>
             <value>0</value>
         </parameter>
+        <parameter>
+            <name>pressure_source_term</name>
+            <type>Constant</type>
+            <value>1</value>
+        </parameter>
     </parameters>
     <process_variables>
         <process_variable>
@@ -104,7 +109,7 @@
                     <geometrical_set>geometry</geometrical_set>
                     <geometry>inner</geometry>
                     <type>Nodal</type>
-                    <value>1</value>
+                    <parameter>pressure_source_term</parameter>
                 </source_term>
             </source_terms>
         </process_variable>
diff --git a/Tests/Data/Elliptic/circle_radius_1/circle_1e5_axi.prj b/Tests/Data/Elliptic/circle_radius_1/circle_1e5_axi.prj
index 436391d00c192f63916919435c04998faca7326f..9df67ae0db1e69f21fd9d2066bc6da54626283de 100644
--- a/Tests/Data/Elliptic/circle_radius_1/circle_1e5_axi.prj
+++ b/Tests/Data/Elliptic/circle_radius_1/circle_1e5_axi.prj
@@ -84,6 +84,11 @@
             <type>Constant</type>
             <value>0</value>
         </parameter>
+        <parameter>
+            <name>pressure_source_term</name>
+            <type>Constant</type>
+            <value>1</value>
+        </parameter>
     </parameters>
     <process_variables>
         <process_variable>
@@ -104,7 +109,7 @@
                     <geometrical_set>geometry</geometrical_set>
                     <geometry>inner</geometry>
                     <type>Nodal</type>
-                    <value>1</value>
+                    <parameter>pressure_source_term</parameter>
                 </source_term>
             </source_terms>
         </process_variable>
diff --git a/Tests/Data/Elliptic/circle_radius_1/circle_1e6_axi.prj b/Tests/Data/Elliptic/circle_radius_1/circle_1e6_axi.prj
index 86470dd0ef918fdfcf28e6ccf9ee4c75eda7afb9..411c1c9052404785f6b6ee752723b7450ee3cb36 100644
--- a/Tests/Data/Elliptic/circle_radius_1/circle_1e6_axi.prj
+++ b/Tests/Data/Elliptic/circle_radius_1/circle_1e6_axi.prj
@@ -81,6 +81,11 @@
             <type>Constant</type>
             <value>0</value>
         </parameter>
+        <parameter>
+            <name>pressure_source_term</name>
+            <type>Constant</type>
+            <value>1</value>
+        </parameter>
     </parameters>
     <process_variables>
         <process_variable>
@@ -101,7 +106,7 @@
                     <geometrical_set>geometry</geometrical_set>
                     <geometry>inner</geometry>
                     <type>Nodal</type>
-                    <value>1</value>
+                    <parameter>pressure_source_term</parameter>
                 </source_term>
             </source_terms>
         </process_variable>
diff --git a/Tests/Data/Elliptic/square_1x1_GroundWaterFlow/square_1e6_with_nodal_sources.prj b/Tests/Data/Elliptic/square_1x1_GroundWaterFlow/square_1e6_with_nodal_sources.prj
index fc58c74366310608744fbb6f68bdf6c4977a6052..3ab93dd092fa89781c88cfe961f76e0690578205 100644
--- a/Tests/Data/Elliptic/square_1x1_GroundWaterFlow/square_1e6_with_nodal_sources.prj
+++ b/Tests/Data/Elliptic/square_1x1_GroundWaterFlow/square_1e6_with_nodal_sources.prj
@@ -65,6 +65,11 @@
             <type>Constant</type>
             <value>0</value>
         </parameter>
+        <parameter>
+            <name>pressure_source_term</name>
+            <type>Constant</type>
+            <value>1</value>
+        </parameter>
     </parameters>
     <process_variables>
         <process_variable>
@@ -91,7 +96,7 @@
                     <geometrical_set>square_1x1_geometry</geometrical_set>
                     <geometry>middle_point</geometry>
                     <type>Nodal</type>
-                    <value>1</value>
+                    <parameter>pressure_source_term</parameter>
                 </source_term>
             </source_terms>
         </process_variable>