diff --git a/ProcessLib/ComponentTransport/Tests.cmake b/ProcessLib/ComponentTransport/Tests.cmake
index b1e59587d21004d65973a056503be1075c72233e..89070f85d7119bed5fb146d0ec8646c7934390bd 100644
--- a/ProcessLib/ComponentTransport/Tests.cmake
+++ b/ProcessLib/ComponentTransport/Tests.cmake
@@ -295,6 +295,69 @@ AddTest(
     elder_pcs_0_ts_80_t_21038400.000000_reference.vtu elder_pcs_0_ts_80_t_21038400.000000.vtu conc conc 1e-1 1e-5
 )
 
+AddTest(
+    NAME LARGE_2D_ComponentTransport_ElderPython
+    PATH Parabolic/ComponentTransport/elder
+    EXECUTABLE ogs
+    EXECUTABLE_ARGS elder-python.prj
+    WRAPPER time
+    TESTER vtkdiff
+    REQUIREMENTS OGS_USE_PYTHON AND NOT OGS_USE_MPI
+    DIFF_DATA
+    elder_pcs_0_ts_0_t_0.000000_reference.vtu            elder_python_pcs_0_ts_0_t_0.000000.vtu            pressure  pressure  1e-1  1e-5
+    elder_pcs_0_ts_100_t_26298000.000000_reference.vtu   elder_python_pcs_0_ts_100_t_26298000.000000.vtu   pressure  pressure  1e-1  1e-5
+    elder_pcs_0_ts_120_t_31557600.000000_reference.vtu   elder_python_pcs_0_ts_120_t_31557600.000000.vtu   pressure  pressure  1e-1  1e-5
+    elder_pcs_0_ts_140_t_36817200.000000_reference.vtu   elder_python_pcs_0_ts_140_t_36817200.000000.vtu   pressure  pressure  1e-1  1e-5
+    elder_pcs_0_ts_160_t_42076800.000000_reference.vtu   elder_python_pcs_0_ts_160_t_42076800.000000.vtu   pressure  pressure  1e-1  1e-5
+    elder_pcs_0_ts_180_t_47336400.000000_reference.vtu   elder_python_pcs_0_ts_180_t_47336400.000000.vtu   pressure  pressure  1e-1  1e-5
+    elder_pcs_0_ts_200_t_52596000.000000_reference.vtu   elder_python_pcs_0_ts_200_t_52596000.000000.vtu   pressure  pressure  1e-1  1e-5
+    elder_pcs_0_ts_20_t_5259600.000000_reference.vtu     elder_python_pcs_0_ts_20_t_5259600.000000.vtu     pressure  pressure  1e-1  1e-5
+    elder_pcs_0_ts_220_t_57855600.000000_reference.vtu   elder_python_pcs_0_ts_220_t_57855600.000000.vtu   pressure  pressure  1e-1  1e-5
+    elder_pcs_0_ts_240_t_63115200.000000_reference.vtu   elder_python_pcs_0_ts_240_t_63115200.000000.vtu   pressure  pressure  1e-1  1e-5
+    elder_pcs_0_ts_260_t_68374800.000000_reference.vtu   elder_python_pcs_0_ts_260_t_68374800.000000.vtu   pressure  pressure  1e-1  1e-5
+    elder_pcs_0_ts_280_t_73634400.000000_reference.vtu   elder_python_pcs_0_ts_280_t_73634400.000000.vtu   pressure  pressure  1e-1  1e-5
+    elder_pcs_0_ts_300_t_78894000.000000_reference.vtu   elder_python_pcs_0_ts_300_t_78894000.000000.vtu   pressure  pressure  1e-1  1e-5
+    elder_pcs_0_ts_320_t_84153600.000000_reference.vtu   elder_python_pcs_0_ts_320_t_84153600.000000.vtu   pressure  pressure  1e-1  1e-5
+    elder_pcs_0_ts_340_t_89413200.000000_reference.vtu   elder_python_pcs_0_ts_340_t_89413200.000000.vtu   pressure  pressure  1e-1  1e-5
+    elder_pcs_0_ts_360_t_94672800.000000_reference.vtu   elder_python_pcs_0_ts_360_t_94672800.000000.vtu   pressure  pressure  1e-1  1e-5
+    elder_pcs_0_ts_380_t_99932400.000000_reference.vtu   elder_python_pcs_0_ts_380_t_99932400.000000.vtu   pressure  pressure  1e-1  1e-5
+    elder_pcs_0_ts_400_t_105192000.000000_reference.vtu  elder_python_pcs_0_ts_400_t_105192000.000000.vtu  pressure  pressure  1e-1  1e-5
+    elder_pcs_0_ts_40_t_10519200.000000_reference.vtu    elder_python_pcs_0_ts_40_t_10519200.000000.vtu    pressure  pressure  1e-1  1e-5
+    elder_pcs_0_ts_420_t_110451600.000000_reference.vtu  elder_python_pcs_0_ts_420_t_110451600.000000.vtu  pressure  pressure  1e-1  1e-5
+    elder_pcs_0_ts_440_t_115711200.000000_reference.vtu  elder_python_pcs_0_ts_440_t_115711200.000000.vtu  pressure  pressure  1e-1  1e-5
+    elder_pcs_0_ts_460_t_120970800.000000_reference.vtu  elder_python_pcs_0_ts_460_t_120970800.000000.vtu  pressure  pressure  1e-1  1e-5
+    elder_pcs_0_ts_480_t_126230400.000000_reference.vtu  elder_python_pcs_0_ts_480_t_126230400.000000.vtu  pressure  pressure  1e-1  1e-5
+    elder_pcs_0_ts_500_t_131490000.000000_reference.vtu  elder_python_pcs_0_ts_500_t_131490000.000000.vtu  pressure  pressure  1e-1  1e-5
+    elder_pcs_0_ts_60_t_15778800.000000_reference.vtu    elder_python_pcs_0_ts_60_t_15778800.000000.vtu    pressure  pressure  1e-1  1e-5
+    elder_pcs_0_ts_80_t_21038400.000000_reference.vtu    elder_python_pcs_0_ts_80_t_21038400.000000.vtu    pressure  pressure  1e-1  1e-5
+    elder_pcs_0_ts_0_t_0.000000_reference.vtu            elder_python_pcs_0_ts_0_t_0.000000.vtu            conc      conc      1e-1  1e-5
+    elder_pcs_0_ts_100_t_26298000.000000_reference.vtu   elder_python_pcs_0_ts_100_t_26298000.000000.vtu   conc      conc      1e-1  1e-5
+    elder_pcs_0_ts_120_t_31557600.000000_reference.vtu   elder_python_pcs_0_ts_120_t_31557600.000000.vtu   conc      conc      1e-1  1e-5
+    elder_pcs_0_ts_140_t_36817200.000000_reference.vtu   elder_python_pcs_0_ts_140_t_36817200.000000.vtu   conc      conc      1e-1  1e-5
+    elder_pcs_0_ts_160_t_42076800.000000_reference.vtu   elder_python_pcs_0_ts_160_t_42076800.000000.vtu   conc      conc      1e-1  1e-5
+    elder_pcs_0_ts_180_t_47336400.000000_reference.vtu   elder_python_pcs_0_ts_180_t_47336400.000000.vtu   conc      conc      1e-1  1e-5
+    elder_pcs_0_ts_200_t_52596000.000000_reference.vtu   elder_python_pcs_0_ts_200_t_52596000.000000.vtu   conc      conc      1e-1  1e-5
+    elder_pcs_0_ts_20_t_5259600.000000_reference.vtu     elder_python_pcs_0_ts_20_t_5259600.000000.vtu     conc      conc      1e-1  1e-5
+    elder_pcs_0_ts_220_t_57855600.000000_reference.vtu   elder_python_pcs_0_ts_220_t_57855600.000000.vtu   conc      conc      1e-1  1e-5
+    elder_pcs_0_ts_240_t_63115200.000000_reference.vtu   elder_python_pcs_0_ts_240_t_63115200.000000.vtu   conc      conc      1e-1  1e-5
+    elder_pcs_0_ts_260_t_68374800.000000_reference.vtu   elder_python_pcs_0_ts_260_t_68374800.000000.vtu   conc      conc      1e-1  1e-5
+    elder_pcs_0_ts_280_t_73634400.000000_reference.vtu   elder_python_pcs_0_ts_280_t_73634400.000000.vtu   conc      conc      1e-1  1e-5
+    elder_pcs_0_ts_300_t_78894000.000000_reference.vtu   elder_python_pcs_0_ts_300_t_78894000.000000.vtu   conc      conc      1e-1  1e-5
+    elder_pcs_0_ts_320_t_84153600.000000_reference.vtu   elder_python_pcs_0_ts_320_t_84153600.000000.vtu   conc      conc      1e-1  1e-5
+    elder_pcs_0_ts_340_t_89413200.000000_reference.vtu   elder_python_pcs_0_ts_340_t_89413200.000000.vtu   conc      conc      1e-1  1e-5
+    elder_pcs_0_ts_360_t_94672800.000000_reference.vtu   elder_python_pcs_0_ts_360_t_94672800.000000.vtu   conc      conc      1e-1  1e-5
+    elder_pcs_0_ts_380_t_99932400.000000_reference.vtu   elder_python_pcs_0_ts_380_t_99932400.000000.vtu   conc      conc      1e-1  1e-5
+    elder_pcs_0_ts_400_t_105192000.000000_reference.vtu  elder_python_pcs_0_ts_400_t_105192000.000000.vtu  conc      conc      1e-1  1e-5
+    elder_pcs_0_ts_40_t_10519200.000000_reference.vtu    elder_python_pcs_0_ts_40_t_10519200.000000.vtu    conc      conc      1e-1  1e-5
+    elder_pcs_0_ts_420_t_110451600.000000_reference.vtu  elder_python_pcs_0_ts_420_t_110451600.000000.vtu  conc      conc      1e-1  1e-5
+    elder_pcs_0_ts_440_t_115711200.000000_reference.vtu  elder_python_pcs_0_ts_440_t_115711200.000000.vtu  conc      conc      1e-1  1e-5
+    elder_pcs_0_ts_460_t_120970800.000000_reference.vtu  elder_python_pcs_0_ts_460_t_120970800.000000.vtu  conc      conc      1e-1  1e-5
+    elder_pcs_0_ts_480_t_126230400.000000_reference.vtu  elder_python_pcs_0_ts_480_t_126230400.000000.vtu  conc      conc      1e-1  1e-5
+    elder_pcs_0_ts_500_t_131490000.000000_reference.vtu  elder_python_pcs_0_ts_500_t_131490000.000000.vtu  conc      conc      1e-1  1e-5
+    elder_pcs_0_ts_60_t_15778800.000000_reference.vtu    elder_python_pcs_0_ts_60_t_15778800.000000.vtu    conc      conc      1e-1  1e-5
+    elder_pcs_0_ts_80_t_21038400.000000_reference.vtu    elder_python_pcs_0_ts_80_t_21038400.000000.vtu    conc      conc      1e-1  1e-5
+)
+
 AddTest(
     NAME 2D_ComponentTransport_HeterogeneousPermeability
     PATH Elliptic/square_100x100_ComponentTransport
diff --git a/Tests/Data/Parabolic/ComponentTransport/elder/elder-python-bcs.py b/Tests/Data/Parabolic/ComponentTransport/elder/elder-python-bcs.py
new file mode 100644
index 0000000000000000000000000000000000000000..3d815d21b7bc5486b97ffaf7c6e9bb7c147cf67d
--- /dev/null
+++ b/Tests/Data/Parabolic/ComponentTransport/elder/elder-python-bcs.py
@@ -0,0 +1,34 @@
+import OpenGeoSys
+
+
+class BCPressure(OpenGeoSys.BoundaryCondition):
+    def getDirichletBCValue(self, t, coords, node_id, primary_vars):
+        x, y, z = coords
+
+        if x == -150 and z == 75:
+            # prescribe pressure of 0
+            return (True, 0.0)
+
+        # no Dirichlet BC
+        return (False, 0.0)
+
+
+class BCConcentration(OpenGeoSys.BoundaryCondition):
+    def getDirichletBCValue(self, t, coords, node_id, primary_vars):
+        x, y, z = coords
+
+        if z == -75:
+            # prescribe concentration of 0
+            return (True, 0.0)
+
+        if z == 75 and x >= 0:
+            # prescribe concentration of 1
+            return (True, 1.0)
+
+        # no Dirichlet BC
+        return (False, 0.0)
+
+
+# instantiate the BC objects used by OpenGeoSys
+bc_p = BCPressure()
+bc_c = BCConcentration()
diff --git a/Tests/Data/Parabolic/ComponentTransport/elder/elder-python.gml b/Tests/Data/Parabolic/ComponentTransport/elder/elder-python.gml
new file mode 100644
index 0000000000000000000000000000000000000000..d22068fc2b35f4f29064dcf89bd42163dcc610b2
--- /dev/null
+++ b/Tests/Data/Parabolic/ComponentTransport/elder/elder-python.gml
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:b4fb7c7bc4ddbc37a38f1fdbaabc23eb415fe842ae2dbd4a5c9791fa7f93dc83
+size 1282
diff --git a/Tests/Data/Parabolic/ComponentTransport/elder/elder-python.prj b/Tests/Data/Parabolic/ComponentTransport/elder/elder-python.prj
new file mode 100644
index 0000000000000000000000000000000000000000..2132e3beecfa76ea1d095e962cca295ae1b376a2
--- /dev/null
+++ b/Tests/Data/Parabolic/ComponentTransport/elder/elder-python.prj
@@ -0,0 +1,201 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!-- vim: ft=xml sw=2
+-->
+<OpenGeoSysProject>
+  <mesh>elder.vtu</mesh>
+  <geometry>elder-python.gml</geometry>
+  <python_script>elder-python-bcs.py</python_script>
+  <processes>
+    <process>
+      <name>HC</name>
+      <type>ComponentTransport</type>
+      <integration_order>2</integration_order>
+      <process_variables>
+        <concentration>conc</concentration>
+        <pressure>pressure</pressure>
+      </process_variables>
+      <fluid>
+        <density>
+          <type>ConcentrationDependent</type>
+          <reference_density>1000</reference_density>
+          <reference_concentration>0</reference_concentration>
+          <fluid_density_difference_ratio>0.2</fluid_density_difference_ratio>
+        </density>
+        <viscosity>
+          <type>Constant</type>
+          <value>1.0e-3</value>
+        </viscosity>
+      </fluid>
+      <porous_medium>
+        <porous_medium id="0">
+          <permeability>
+            <permeability_tensor_entries>kappa1</permeability_tensor_entries>
+            <type>Constant</type>
+          </permeability>
+          <porosity>
+            <type>Constant</type>
+            <porosity_parameter>constant_porosity_parameter</porosity_parameter>
+          </porosity>
+          <storage>
+            <type>Constant</type>
+            <value>0.0</value>
+          </storage>
+        </porous_medium>
+      </porous_medium>
+      <decay_rate>decay_rate</decay_rate>
+      <fluid_reference_density>rho_fluid</fluid_reference_density>
+      <retardation_factor>retardation_factor</retardation_factor>
+      <solute_dispersivity_longitudinal>alpha_l</solute_dispersivity_longitudinal>
+      <solute_dispersivity_transverse>alpha_t</solute_dispersivity_transverse>
+      <molecular_diffusion_coefficient>Dm</molecular_diffusion_coefficient>
+      <specific_body_force>0 0 -9.81</specific_body_force>
+      <secondary_variables>
+        <secondary_variable type="static" internal_name="darcy_velocity" output_name="darcy_velocity"/>
+      </secondary_variables>
+    </process>
+  </processes>
+  <time_loop>
+    <processes>
+      <process ref="HC">
+        <nonlinear_solver>basic_picard</nonlinear_solver>
+        <convergence_criterion>
+          <type>PerComponentDeltaX</type>
+          <norm_type>NORM2</norm_type>
+          <reltols>1e-3 1e-3</reltols>
+        </convergence_criterion>
+        <time_discretization>
+          <type>BackwardEuler</type>
+        </time_discretization>
+        <time_stepping>
+          <type>FixedTimeStepping</type>
+          <t_initial> 0.0 </t_initial>
+          <t_end>1.3149e8</t_end>
+          <timesteps>
+            <pair>
+              <repeat>10</repeat>
+              <delta_t>262980</delta_t>
+            </pair>
+          </timesteps>
+        </time_stepping>
+        <output>
+          <variables>
+            <variable>conc</variable>
+            <variable>pressure</variable>
+            <variable>darcy_velocity</variable>
+          </variables>
+        </output>
+      </process>
+    </processes>
+    <output>
+      <type>VTK</type>
+      <prefix>elder_python</prefix>
+      <timesteps>
+        <pair>
+          <repeat>1</repeat>
+          <each_steps>20</each_steps>
+        </pair>
+      </timesteps>
+    </output>
+  </time_loop>
+  <parameters>
+    <parameter>
+      <name>rho_fluid</name>
+      <type>Constant</type>
+      <value>1000.0</value>
+    </parameter>
+    <parameter>
+      <name>alpha_l</name>
+      <type>Constant</type>
+      <value>0</value>
+    </parameter>
+    <parameter>
+      <name>alpha_t</name>
+      <type>Constant</type>
+      <value>0</value>
+    </parameter>
+    <parameter>
+      <name>Dm</name>
+      <type>Constant</type>
+      <value>3.57e-6</value>
+    </parameter>
+    <parameter>
+      <name>decay_rate</name>
+      <type>Constant</type>
+      <value>0.0</value>
+    </parameter>
+    <parameter>
+      <name>retardation_factor</name>
+      <type>Constant</type>
+      <value>1</value>
+    </parameter>
+    <parameter>
+      <name>p_ini</name>
+      <type>MeshNode</type>
+      <field_name>p_ini</field_name>
+    </parameter>
+    <parameter>
+      <name>c_ini</name>
+      <type>MeshNode</type>
+      <field_name>c_ini</field_name>
+    </parameter>
+    <parameter>
+      <name>constant_porosity_parameter</name>
+      <type>Constant</type>
+      <value>0.1</value>
+    </parameter>
+    <parameter>
+      <name>kappa1</name>
+      <type>Constant</type>
+      <values>4.84404e-13 0 0 0 4.84404e-13 0 0 0 4.84404e-13</values>
+    </parameter>
+  </parameters>
+  <process_variables>
+    <process_variable>
+      <name>conc</name>
+      <components>1</components>
+      <order>1</order>
+      <initial_condition>c_ini</initial_condition>
+      <boundary_conditions>
+        <boundary_condition>
+          <geometrical_set>elder</geometrical_set>
+          <geometry>whole_domain_boundary</geometry>
+          <type>Python</type>
+          <bc_object>bc_c</bc_object>
+        </boundary_condition>
+      </boundary_conditions>
+    </process_variable>
+    <process_variable>
+      <name>pressure</name>
+      <components>1</components>
+      <order>1</order>
+      <initial_condition>p_ini</initial_condition>
+      <boundary_conditions>
+        <boundary_condition>
+          <geometrical_set>elder</geometrical_set>
+          <geometry>whole_domain_boundary</geometry>
+          <type>Python</type>
+          <bc_object>bc_p</bc_object>
+        </boundary_condition>
+      </boundary_conditions>
+    </process_variable>
+  </process_variables>
+  <nonlinear_solvers>
+    <nonlinear_solver>
+      <name>basic_picard</name>
+      <type>Picard</type>
+      <max_iter>300</max_iter>
+      <linear_solver>general_linear_solver</linear_solver>
+    </nonlinear_solver>
+  </nonlinear_solvers>
+  <linear_solvers>
+    <linear_solver>
+      <name>general_linear_solver</name>
+      <eigen>
+        <precon_type>ILUT</precon_type>
+        <solver_type>BiCGSTAB</solver_type>
+        <max_iteration_step>5000</max_iteration_step>
+        <error_tolerance>1e-12</error_tolerance>
+      </eigen>
+    </linear_solver>
+  </linear_solvers>
+</OpenGeoSysProject>
diff --git a/web/content/docs/benchmarks/python-bc/elder-benchmark/elder.md b/web/content/docs/benchmarks/python-bc/elder-benchmark/elder.md
new file mode 100644
index 0000000000000000000000000000000000000000..04b5ba1dde5c0fe7fb7f3219e34caba7d9303309
--- /dev/null
+++ b/web/content/docs/benchmarks/python-bc/elder-benchmark/elder.md
@@ -0,0 +1,27 @@
++++
+project = "Parabolic/ComponentTransport/elder/elder-python.prj"
+author = "Christoph Lehmann"
+date = "2018-08-16T09:18:00+02:00"
+title = "Saturated Variable-Density Flow and Mass Transport (Elder) with Python BC"
+weight = 3
+
+[menu]
+  [menu.benchmarks]
+    parent = "python-bc"
+
++++
+
+{{< data-link >}}
+
+## Motivation of this test case
+
+The aim of this test is:
+
+* to show that it is possible to prescribe BCs only on parts of a given geometry
+* to assert that Python BCs work with processes involving more than one physical
+  field.
+
+## Details
+
+This test is a copy of [this test case]({{< ref "../../hydro-component/elder.md" >}}).
+Please check the original test case for any details.