diff --git a/python/dune/perftool/pdelab/localoperator.py b/python/dune/perftool/pdelab/localoperator.py
index 370ef617c360a2b5eac0f008915571a6354c0d4f..9055551002293e1611f03edced37ccecc43c5d00 100644
--- a/python/dune/perftool/pdelab/localoperator.py
+++ b/python/dune/perftool/pdelab/localoperator.py
@@ -213,7 +213,8 @@ class AssemblyMethod(ClassMember):
         from cgen import LiteralLines, Block
         content = signature
         content.append('{')
-        content.extend('  ' + l for l in generate_code(kernel)[0].split('\n'))
+        if kernel is not None:
+            content.extend('  ' + l for l in generate_code(kernel)[0].split('\n'))
         content.append('}')
         ClassMember.__init__(self, content)
 
@@ -314,6 +315,14 @@ def generate_localoperator_kernels(formdata, namedata):
                         kernel = generate_kernel(integral)
                     operator_kernels[(integral.integral_type(), 'jacobian')] = kernel
 
+                # Generate dummy functions for those kernels, that vanished in the differentiation process
+                # We *could* solve this problem by using lambda_* terms but we do not really want that, so
+                # we use empty jacobian assembly methods instead
+                alpha_measures = set(i.integral_type() for i in form.integrals())
+                jacobian_measures = set(i.integral_type() for i in jacform.integrals())
+                for it in alpha_measures - jacobian_measures:
+                    operator_kernels[(it, 'jacobian')] = None
+
         # TODO: JacobianApply for matrix-free computations.
 
     # Return the set of generated kernels
diff --git a/test/poisson/CMakeLists.txt b/test/poisson/CMakeLists.txt
index c4e3a69df2b61b5f5b6bee118960e2c5725d5e46..d18236b90f5e2a6e36959f4e152f9de6bdad0225 100644
--- a/test/poisson/CMakeLists.txt
+++ b/test/poisson/CMakeLists.txt
@@ -5,7 +5,7 @@ add_generated_executable(UFLFILE poisson.ufl
                          )
 
 dune_add_system_test(TARGET poisson_numdiff
-                     INIFILE poisson.mini
+                     INIFILE poisson_numdiff.mini
                      SCRIPT dune_vtkcompare.py
                      )
 
@@ -19,7 +19,7 @@ add_generated_executable(UFLFILE poisson.ufl
                          )
 
 dune_add_system_test(TARGET poisson_symdiff
-                     INIFILE poisson.mini
+                     INIFILE poisson_symdiff.mini
                      SCRIPT dune_vtkcompare.py
                      )
 
@@ -30,6 +30,15 @@ add_generated_executable(UFLFILE poisson_neumann.ufl
                          )
 
 dune_add_system_test(TARGET poisson_neumann_numdiff
-                     INIFILE poisson.mini
+                     INIFILE poisson_neumann_numdiff.mini
                      SCRIPT dune_vtkcompare.py
                      )
+
+# 4. Poisson Test Case: source f, mixed neumann/dirichlet boundary + symbolic differentiation
+add_generated_executable(UFLFILE poisson_neumann.ufl
+                         TARGET poisson_neumann_symdiff
+                         )
+
+dune_add_system_test(TARGET poisson_neumann_symdiff
+                     INIFILE poisson_neumann_symdiff.mini
+                     )
diff --git a/test/poisson/poisson_neumann_numdiff.mini b/test/poisson/poisson_neumann_numdiff.mini
new file mode 100644
index 0000000000000000000000000000000000000000..5c779a14edfb5059c96fe23a8095159840d57191
--- /dev/null
+++ b/test/poisson/poisson_neumann_numdiff.mini
@@ -0,0 +1,11 @@
+__name = poisson_neumann_numdiff
+
+lowerleft = 0.0 0.0
+upperright = 1.0 1.0
+elements = 32 32
+elementType = simplical
+
+[wrapper.vtkcompare]
+name = {__name}
+reference = poisson_ref
+extension = vtu
diff --git a/test/poisson/poisson_neumann_symdiff.mini b/test/poisson/poisson_neumann_symdiff.mini
new file mode 100644
index 0000000000000000000000000000000000000000..8e2c2fb03673468f9f5fcdf67ab509ef339bfdfe
--- /dev/null
+++ b/test/poisson/poisson_neumann_symdiff.mini
@@ -0,0 +1,11 @@
+__name = poisson_neumann_symdiff
+
+lowerleft = 0.0 0.0
+upperright = 1.0 1.0
+elements = 32 32
+elementType = simplical
+
+[wrapper.vtkcompare]
+name = {__name}
+reference = poisson_ref
+extension = vtu
diff --git a/test/poisson/poisson.mini b/test/poisson/poisson_numdiff.mini
similarity index 77%
rename from test/poisson/poisson.mini
rename to test/poisson/poisson_numdiff.mini
index 0abecdd87d20b7d2be4b44f625c1ab735544a267..6d4507180f6f46f026231e4fc4bb3f7f8eb0ca6f 100644
--- a/test/poisson/poisson.mini
+++ b/test/poisson/poisson_numdiff.mini
@@ -1,4 +1,4 @@
-__name = laplace
+__name = poisson_numdiff
 
 lowerleft = 0.0 0.0
 upperright = 1.0 1.0
@@ -6,6 +6,6 @@ elements = 32 32
 elementType = simplical
 
 [wrapper.vtkcompare]
-name = poisson
+name = {__name}
 reference = poisson_ref
 extension = vtu
diff --git a/test/poisson/poisson_symdiff.mini b/test/poisson/poisson_symdiff.mini
new file mode 100644
index 0000000000000000000000000000000000000000..e3fa2f3fb8508f2204f4547e1c9ba33c8c2d2fe0
--- /dev/null
+++ b/test/poisson/poisson_symdiff.mini
@@ -0,0 +1,11 @@
+__name = poisson_symdiff
+
+lowerleft = 0.0 0.0
+upperright = 1.0 1.0
+elements = 32 32
+elementType = simplical
+
+[wrapper.vtkcompare]
+name = {__name}
+reference = poisson_ref
+extension = vtu