diff --git a/Tests/Data/Elliptic/cube_1x1x1_SteadyStateDiffusion/cube_1e0.prj b/Tests/Data/Elliptic/cube_1x1x1_SteadyStateDiffusion/cube_1e0.prj
index cebf20775181a10c671c40a1ac474b46b02f37c2..691aa51bdc488a5634d9b3f02ec6900a29e87352 100644
--- a/Tests/Data/Elliptic/cube_1x1x1_SteadyStateDiffusion/cube_1e0.prj
+++ b/Tests/Data/Elliptic/cube_1x1x1_SteadyStateDiffusion/cube_1e0.prj
@@ -1,6 +1,9 @@
 <?xml version="1.0" encoding="ISO-8859-1"?>
 <OpenGeoSysProject>
-    <mesh>cube_1x1x1_hex_1e0.vtu</mesh>
+    <meshes>
+        <mesh>cube_1x1x1_hex_1e0.vtu</mesh>
+        <mesh>cube_1x1x1_hex_1e0_left.vtu</mesh>
+    </meshes>
     <geometry>cube_1x1x1.gml</geometry>
     <processes>
         <include file="SteadyStateDiffusion.xml"/>
diff --git a/Tests/Data/Elliptic/cube_1x1x1_SteadyStateDiffusion/cube_1e0.xml b/Tests/Data/Elliptic/cube_1x1x1_SteadyStateDiffusion/cube_1e0.xml
index 276c530c358d3125a79f5296da6fe3619098fa02..b775f9fa39021f6875ba7395784dedf904aaefe9 100644
--- a/Tests/Data/Elliptic/cube_1x1x1_SteadyStateDiffusion/cube_1e0.xml
+++ b/Tests/Data/Elliptic/cube_1x1x1_SteadyStateDiffusion/cube_1e0.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="ISO-8859-1"?>
 <OpenGeoSysProjectDiff base_file="cube_1e0.prj">
-    <!-- <replace sel="/*/mesh/text()">cube_1x1x1_hex_1e0.vtu</replace> -->
     <replace sel="/*/time_loop/output/prefix/text()" after_includes="true">1e0_{:meshname}</replace>
 </OpenGeoSysProjectDiff>
diff --git a/Tests/Data/Elliptic/cube_1x1x1_SteadyStateDiffusion/cube_1e0_processed.prj b/Tests/Data/Elliptic/cube_1x1x1_SteadyStateDiffusion/cube_1e0_processed.prj
index 274cb69b9e0ffd5a54e28e7d3d3f20805ec572b3..6293987f690afea9f93552b0e4b400b15f786b4a 100644
--- a/Tests/Data/Elliptic/cube_1x1x1_SteadyStateDiffusion/cube_1e0_processed.prj
+++ b/Tests/Data/Elliptic/cube_1x1x1_SteadyStateDiffusion/cube_1e0_processed.prj
@@ -1,6 +1,9 @@
 <?xml version="1.0" encoding="utf-8"?>
 <OpenGeoSysProject>
-  <mesh>cube_1x1x1_hex_1e0.vtu</mesh>
+  <meshes>
+    <mesh>cube_1x1x1_hex_1e0.vtu</mesh>
+    <mesh>cube_1x1x1_hex_1e0_left.vtu</mesh>
+  </meshes>
   <geometry>cube_1x1x1.gml</geometry>
   <processes>
     <process>
diff --git a/Tests/Data/Elliptic/cube_1x1x1_SteadyStateDiffusion/cube_1e1.xml b/Tests/Data/Elliptic/cube_1x1x1_SteadyStateDiffusion/cube_1e1.xml
index b3890ccdb41c5681ad8a2dc87a2f9cc2533bf725..79219f0ba294277d23f1ae020e3c63c39b58bc22 100644
--- a/Tests/Data/Elliptic/cube_1x1x1_SteadyStateDiffusion/cube_1e1.xml
+++ b/Tests/Data/Elliptic/cube_1x1x1_SteadyStateDiffusion/cube_1e1.xml
@@ -1,6 +1,12 @@
 <?xml version="1.0" encoding="ISO-8859-1"?>
 <OpenGeoSysProjectDiff base_file="cube_1e0.prj">
-    <replace sel="/*/mesh/text()">cube_1x1x1_hex_1e1.vtu</replace>
+    <replace sel="/*/meshes/mesh[1]/text()">cube_1x1x1_hex_1e1.vtu</replace>
+    <replace sel="/*/meshes/mesh[2]/text()">cube_1x1x1_hex_1e1_left.vtu</replace>
     <replace sel="/*/time_loop/output/meshes/mesh/text()" after_includes="true">cube_1x1x1_hex_1e1</replace>
     <replace sel="/*/time_loop/output/prefix/text()" after_includes="true">1e1_{:meshname}</replace>
+    <add sel="/*/process_variables/process_variable/boundary_conditions/boundary_condition[1]/type" after_includes="true" pos="before">
+        <mesh>cube_1x1x1_hex_1e1_left</mesh>
+    </add>
+    <remove sel="/*/process_variables/process_variable/boundary_conditions/boundary_condition[1]/geometrical_set" />
+    <remove sel="/*/process_variables/process_variable/boundary_conditions/boundary_condition[1]/geometry" />
 </OpenGeoSysProjectDiff>
diff --git a/Tests/Data/Elliptic/cube_1x1x1_SteadyStateDiffusion/cube_1e1_processed.prj b/Tests/Data/Elliptic/cube_1x1x1_SteadyStateDiffusion/cube_1e1_processed.prj
index 9f5afe09c926a66dd4d53cea1acfa0dbbe6502e7..558442bd49b6d843025f3c5502cf579f9241961a 100644
--- a/Tests/Data/Elliptic/cube_1x1x1_SteadyStateDiffusion/cube_1e1_processed.prj
+++ b/Tests/Data/Elliptic/cube_1x1x1_SteadyStateDiffusion/cube_1e1_processed.prj
@@ -1,6 +1,9 @@
 <?xml version="1.0" encoding="utf-8"?>
 <OpenGeoSysProject>
-  <mesh>cube_1x1x1_hex_1e1.vtu</mesh>
+  <meshes>
+    <mesh>cube_1x1x1_hex_1e1.vtu</mesh>
+    <mesh>cube_1x1x1_hex_1e1_left.vtu</mesh>
+  </meshes>
   <geometry>cube_1x1x1.gml</geometry>
   <processes>
     <process>
@@ -200,8 +203,7 @@
       <initial_condition>p0</initial_condition>
       <boundary_conditions>
         <boundary_condition>
-          <geometrical_set>cube_1x1x1_geometry</geometrical_set>
-          <geometry>left</geometry>
+          <mesh>cube_1x1x1_hex_1e1_left</mesh>
           <type>Dirichlet</type>
           <parameter>p_Dirichlet_left</parameter>
         </boundary_condition>
diff --git a/Tests/Data/Elliptic/cube_1x1x1_SteadyStateDiffusion/cube_1e2.xml b/Tests/Data/Elliptic/cube_1x1x1_SteadyStateDiffusion/cube_1e2.xml
index 6249850d7609613bf2b0928a82364256f4345af9..3c50d58f8ddc13d0be77220fae6227e151446440 100644
--- a/Tests/Data/Elliptic/cube_1x1x1_SteadyStateDiffusion/cube_1e2.xml
+++ b/Tests/Data/Elliptic/cube_1x1x1_SteadyStateDiffusion/cube_1e2.xml
@@ -1,6 +1,12 @@
 <?xml version="1.0" encoding="ISO-8859-1"?>
 <OpenGeoSysProjectDiff base_file="cube_1e0.prj">
-    <replace sel="/*/mesh/text()">cube_1x1x1_hex_1e2.vtu</replace>
+    <replace sel="/*/meshes/mesh[1]/text()">cube_1x1x1_hex_1e2.vtu</replace>
+    <replace sel="/*/meshes/mesh[2]/text()">cube_1x1x1_hex_1e2_left.vtu</replace>
     <replace sel="/*/time_loop/output/meshes/mesh/text()" after_includes="true">cube_1x1x1_hex_1e2</replace>
     <replace sel="/*/time_loop/output/prefix/text()" after_includes="true">1e2_{:meshname}</replace>
+    <add sel="/*/process_variables/process_variable/boundary_conditions/boundary_condition[1]/type" after_includes="true" pos="before">
+        <mesh>cube_1x1x1_hex_1e2_left</mesh>
+    </add>
+    <remove sel="/*/process_variables/process_variable/boundary_conditions/boundary_condition[1]/geometrical_set" />
+    <remove sel="/*/process_variables/process_variable/boundary_conditions/boundary_condition[1]/geometry" />
 </OpenGeoSysProjectDiff>
diff --git a/Tests/Data/Elliptic/cube_1x1x1_SteadyStateDiffusion/cube_1e2_3d_submesh_output.xml b/Tests/Data/Elliptic/cube_1x1x1_SteadyStateDiffusion/cube_1e2_3d_submesh_output.xml
index fd7886954dbcb300cfe4fd6802f66dafb3b76a6d..c7047e1c8fa1efb8e39a2d2b4d2d8e1cf981020e 100644
--- a/Tests/Data/Elliptic/cube_1x1x1_SteadyStateDiffusion/cube_1e2_3d_submesh_output.xml
+++ b/Tests/Data/Elliptic/cube_1x1x1_SteadyStateDiffusion/cube_1e2_3d_submesh_output.xml
@@ -1,5 +1,6 @@
 <?xml version="1.0" encoding="ISO-8859-1"?>
 <OpenGeoSysProjectDiff base_file="cube_1e0.prj">
+    <remove sel="/*/meshes" />
     <add sel="/*/processes" after_includes="true" pos="before">
       <meshes>
         <mesh>cube_1x1x1_hex_1e2.vtu</mesh>
@@ -8,7 +9,6 @@
         <mesh>cube_1x1x1_hex_1e2_inner_bar_domain.vtu</mesh>
       </meshes>
     </add>
-    <remove sel="/*/mesh" />
     <remove sel="/*/geometry" />
     <replace sel="/*/time_loop/output/prefix/text()" after_includes="true">{:meshname}_3d_submesh_output_test</replace>
     <replace sel="/*/time_loop/output/meshes/mesh/text()" after_includes="true">cube_1x1x1_hex_1e2</replace>
diff --git a/Tests/Data/Elliptic/cube_1x1x1_SteadyStateDiffusion/cube_1e2_processed.prj b/Tests/Data/Elliptic/cube_1x1x1_SteadyStateDiffusion/cube_1e2_processed.prj
index 739163750622ccf4e5a5cf0bc44d4af2fd20275b..601a406632797869b625f1c0081137a863d1ad2a 100644
--- a/Tests/Data/Elliptic/cube_1x1x1_SteadyStateDiffusion/cube_1e2_processed.prj
+++ b/Tests/Data/Elliptic/cube_1x1x1_SteadyStateDiffusion/cube_1e2_processed.prj
@@ -1,6 +1,9 @@
 <?xml version="1.0" encoding="utf-8"?>
 <OpenGeoSysProject>
-  <mesh>cube_1x1x1_hex_1e2.vtu</mesh>
+  <meshes>
+    <mesh>cube_1x1x1_hex_1e2.vtu</mesh>
+    <mesh>cube_1x1x1_hex_1e2_left.vtu</mesh>
+  </meshes>
   <geometry>cube_1x1x1.gml</geometry>
   <processes>
     <process>
@@ -200,8 +203,7 @@
       <initial_condition>p0</initial_condition>
       <boundary_conditions>
         <boundary_condition>
-          <geometrical_set>cube_1x1x1_geometry</geometrical_set>
-          <geometry>left</geometry>
+          <mesh>cube_1x1x1_hex_1e2_left</mesh>
           <type>Dirichlet</type>
           <parameter>p_Dirichlet_left</parameter>
         </boundary_condition>
diff --git a/Tests/Data/Elliptic/cube_1x1x1_SteadyStateDiffusion/cube_1e3.xml b/Tests/Data/Elliptic/cube_1x1x1_SteadyStateDiffusion/cube_1e3.xml
index 37a86b9a48534ca430292f6c42df7fb697d19f3c..3986eab63a42a69f15a367133c70bdda45c6e4be 100644
--- a/Tests/Data/Elliptic/cube_1x1x1_SteadyStateDiffusion/cube_1e3.xml
+++ b/Tests/Data/Elliptic/cube_1x1x1_SteadyStateDiffusion/cube_1e3.xml
@@ -1,6 +1,12 @@
 <?xml version="1.0" encoding="ISO-8859-1"?>
 <OpenGeoSysProjectDiff base_file="cube_1e0.prj">
-    <replace sel="/*/mesh/text()">cube_1x1x1_hex_1e3.vtu</replace>
+    <replace sel="/*/meshes/mesh[1]/text()">cube_1x1x1_hex_1e3.vtu</replace>
+    <replace sel="/*/meshes/mesh[2]/text()">cube_1x1x1_hex_1e3_left.vtu</replace>
     <replace sel="/*/time_loop/output/meshes/mesh/text()" after_includes="true">cube_1x1x1_hex_1e3</replace>
     <replace sel="/*/time_loop/output/prefix/text()" after_includes="true">1e3_{:meshname}</replace>
+    <add sel="/*/process_variables/process_variable/boundary_conditions/boundary_condition[1]/type" after_includes="true" pos="before">
+        <mesh>cube_1x1x1_hex_1e3_left</mesh>
+    </add>
+    <remove sel="/*/process_variables/process_variable/boundary_conditions/boundary_condition[1]/geometrical_set" />
+    <remove sel="/*/process_variables/process_variable/boundary_conditions/boundary_condition[1]/geometry" />
 </OpenGeoSysProjectDiff>
diff --git a/Tests/Data/Elliptic/cube_1x1x1_SteadyStateDiffusion/cube_1e3_processed.prj b/Tests/Data/Elliptic/cube_1x1x1_SteadyStateDiffusion/cube_1e3_processed.prj
index 753ff5552ee243bbba91fdb93680251e49030e27..c1ee97079639f42d0b13d1a828df725ffebb4384 100644
--- a/Tests/Data/Elliptic/cube_1x1x1_SteadyStateDiffusion/cube_1e3_processed.prj
+++ b/Tests/Data/Elliptic/cube_1x1x1_SteadyStateDiffusion/cube_1e3_processed.prj
@@ -1,6 +1,9 @@
 <?xml version="1.0" encoding="utf-8"?>
 <OpenGeoSysProject>
-  <mesh>cube_1x1x1_hex_1e3.vtu</mesh>
+  <meshes>
+    <mesh>cube_1x1x1_hex_1e3.vtu</mesh>
+    <mesh>cube_1x1x1_hex_1e3_left.vtu</mesh>
+  </meshes>
   <geometry>cube_1x1x1.gml</geometry>
   <processes>
     <process>
@@ -200,8 +203,7 @@
       <initial_condition>p0</initial_condition>
       <boundary_conditions>
         <boundary_condition>
-          <geometrical_set>cube_1x1x1_geometry</geometrical_set>
-          <geometry>left</geometry>
+          <mesh>cube_1x1x1_hex_1e3_left</mesh>
           <type>Dirichlet</type>
           <parameter>p_Dirichlet_left</parameter>
         </boundary_condition>
diff --git a/Tests/Data/Elliptic/cube_1x1x1_SteadyStateDiffusion/cube_1x1x1_hex_1e0_left.vtu b/Tests/Data/Elliptic/cube_1x1x1_SteadyStateDiffusion/cube_1x1x1_hex_1e0_left.vtu
new file mode 100644
index 0000000000000000000000000000000000000000..6315c0c1408f983ac5bfe6309caf9458e556d6fb
--- /dev/null
+++ b/Tests/Data/Elliptic/cube_1x1x1_SteadyStateDiffusion/cube_1x1x1_hex_1e0_left.vtu
@@ -0,0 +1,24 @@
+<?xml version="1.0"?>
+<VTKFile type="UnstructuredGrid" version="1.0" byte_order="LittleEndian" header_type="UInt64">
+  <UnstructuredGrid>
+    <Piece NumberOfPoints="4"                    NumberOfCells="1"                   >
+      <PointData>
+        <DataArray type="UInt64" Name="bulk_node_ids" format="appended" RangeMin="0"                    RangeMax="6"                    offset="0"                   />
+      </PointData>
+      <CellData>
+        <DataArray type="UInt64" Name="bulk_element_ids" format="appended" RangeMin="0"                    RangeMax="0"                    offset="56"                  />
+      </CellData>
+      <Points>
+        <DataArray type="Float64" Name="Points" NumberOfComponents="3" format="appended" RangeMin="0"                    RangeMax="1.4142135624"         offset="80"                  />
+      </Points>
+      <Cells>
+        <DataArray type="Int64" Name="connectivity" format="appended" RangeMin=""                     RangeMax=""                     offset="220"                 />
+        <DataArray type="Int64" Name="offsets" format="appended" RangeMin=""                     RangeMax=""                     offset="276"                 />
+        <DataArray type="UInt8" Name="types" format="appended" RangeMin=""                     RangeMax=""                     offset="300"                 />
+      </Cells>
+    </Piece>
+  </UnstructuredGrid>
+  <AppendedData encoding="base64">
+   _IAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAABAAAAAAAAAAGAAAAAAAAAA==CAAAAAAAAAAAAAAAAAAAAA==YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPA/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8D8AAAAAAAAAAAAAAAAAAPA/AAAAAAAA8D8=IAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAADAAAAAAAAAA==CAAAAAAAAAAEAAAAAAAAAA==AQAAAAAAAAAJ
+  </AppendedData>
+</VTKFile>
diff --git a/Tests/Data/Elliptic/cube_1x1x1_SteadyStateDiffusion/cube_1x1x1_hex_1e1_left.vtu b/Tests/Data/Elliptic/cube_1x1x1_SteadyStateDiffusion/cube_1x1x1_hex_1e1_left.vtu
new file mode 100644
index 0000000000000000000000000000000000000000..cb542dc2a2e290d084c036380fa3d129ca0aba90
--- /dev/null
+++ b/Tests/Data/Elliptic/cube_1x1x1_SteadyStateDiffusion/cube_1x1x1_hex_1e1_left.vtu
@@ -0,0 +1,24 @@
+<?xml version="1.0"?>
+<VTKFile type="UnstructuredGrid" version="1.0" byte_order="LittleEndian" header_type="UInt64">
+  <UnstructuredGrid>
+    <Piece NumberOfPoints="9"                    NumberOfCells="4"                   >
+      <PointData>
+        <DataArray type="UInt64" Name="bulk_node_ids" format="appended" RangeMin="0"                    RangeMax="24"                   offset="0"                   />
+      </PointData>
+      <CellData>
+        <DataArray type="UInt64" Name="bulk_element_ids" format="appended" RangeMin="0"                    RangeMax="6"                    offset="108"                 />
+      </CellData>
+      <Points>
+        <DataArray type="Float64" Name="Points" NumberOfComponents="3" format="appended" RangeMin="0"                    RangeMax="1.4142135624"         offset="164"                 />
+      </Points>
+      <Cells>
+        <DataArray type="Int64" Name="connectivity" format="appended" RangeMin=""                     RangeMax=""                     offset="464"                 />
+        <DataArray type="Int64" Name="offsets" format="appended" RangeMin=""                     RangeMax=""                     offset="648"                 />
+        <DataArray type="UInt8" Name="types" format="appended" RangeMin=""                     RangeMax=""                     offset="704"                 />
+      </Cells>
+    </Piece>
+  </UnstructuredGrid>
+  <AppendedData encoding="base64">
+   _SAAAAAAAAAAAAAAAAAAAAAMAAAAAAAAABgAAAAAAAAAJAAAAAAAAAAwAAAAAAAAADwAAAAAAAAASAAAAAAAAABUAAAAAAAAAGAAAAAAAAAA=IAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAABAAAAAAAAAAGAAAAAAAAAA==2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOA/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAPA/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4D8AAAAAAAAAAAAAAAAAAOA/AAAAAAAA4D8AAAAAAAAAAAAAAAAAAPA/AAAAAAAA4D8AAAAAAAAAAAAAAAAAAAAAAAAAAAAA8D8AAAAAAAAAAAAAAAAAAOA/AAAAAAAA8D8AAAAAAAAAAAAAAAAAAPA/AAAAAAAA8D8=gAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAEAAAAAAAAAAIAAAAAAAAAAQAAAAAAAAAEAAAAAAAAAAUAAAAAAAAABAAAAAAAAAADAAAAAAAAAAYAAAAAAAAABwAAAAAAAAAFAAAAAAAAAAQAAAAAAAAABwAAAAAAAAAIAAAAAAAAAA==IAAAAAAAAAAEAAAAAAAAAAgAAAAAAAAADAAAAAAAAAAQAAAAAAAAAA==BAAAAAAAAAAJCQkJ
+  </AppendedData>
+</VTKFile>