diff --git a/test/sumfact/poisson/diagonal.mini b/test/sumfact/poisson/diagonal.mini
index aab69f17f6c7e0b8141ab500f287cb25208fe716..3b688baa75576580fe484c0dda17ed480a44f00d 100644
--- a/test/sumfact/poisson/diagonal.mini
+++ b/test/sumfact/poisson/diagonal.mini
@@ -9,7 +9,6 @@ extension = vtu
 
 [formcompiler]
 sumfact = 1
-exact_solution_expression = g
 compare_l2errorsquared = 1e-5
 vectorize_quad = 1
 vectorize_grads = 0
diff --git a/test/sumfact/poisson/opcount_poisson_2d_order2.mini b/test/sumfact/poisson/opcount_poisson_2d_order2.mini
index d5fe76eca69bc4e3cd2e12800f816675d83ff50a..2350f1137da3df811df6bfa56bb6b373c0b422ab 100644
--- a/test/sumfact/poisson/opcount_poisson_2d_order2.mini
+++ b/test/sumfact/poisson/opcount_poisson_2d_order2.mini
@@ -13,7 +13,6 @@ extension = vtu
 
 [formcompiler]
 numerical_jacobian = 0
-exact_solution_expression = g
 compare_l2errorsquared = 1e-8
 sumfact = 1
 opcounter = 1
diff --git a/test/sumfact/poisson/opcount_sumfact_poisson_dg_2d_vec.mini b/test/sumfact/poisson/opcount_sumfact_poisson_dg_2d_vec.mini
index b7e8b6c71db3781ea6531b391d1b236503743202..17842bc91356f8cd0e342c3ba3c7c878f682ce50 100644
--- a/test/sumfact/poisson/opcount_sumfact_poisson_dg_2d_vec.mini
+++ b/test/sumfact/poisson/opcount_sumfact_poisson_dg_2d_vec.mini
@@ -11,7 +11,6 @@ extension = vtu
 
 [formcompiler]
 numerical_jacobian = 0
-exact_solution_expression = g
 compare_l2errorsquared = 1e-8
 sumfact = 1
 opcounter = 1
diff --git a/test/sumfact/poisson/poisson_2d.mini b/test/sumfact/poisson/poisson_2d.mini
index 572837d1101f3204c9b7002e13d07f2609899a36..ea68946824a53387f3f6ce6f19f0349ef309af05 100644
--- a/test/sumfact/poisson/poisson_2d.mini
+++ b/test/sumfact/poisson/poisson_2d.mini
@@ -15,7 +15,6 @@ extension = vtu
 
 [formcompiler]
 numerical_jacobian = 1, 0 | expand num
-exact_solution_expression = g
 compare_l2errorsquared = 4e-5, 4e-9 | expand deg
 sumfact = 1
 vectorize_grads = 1, 0 | expand grad
diff --git a/test/sumfact/poisson/poisson_2d.ufl b/test/sumfact/poisson/poisson_2d.ufl
index a2c74a593f694bfedfbe2cc947a581c28ce0c07e..0d494b70453fa4cc15bae46080540c39d550c520 100644
--- a/test/sumfact/poisson/poisson_2d.ufl
+++ b/test/sumfact/poisson/poisson_2d.ufl
@@ -5,8 +5,11 @@ c = (0.5-x[0])**2 + (0.5-x[1])**2
 g = exp(-1.*c)
 f = 2*(2.-2*c)*g
 
-V = FiniteElement("CG", cell, degree, dirichlet_expression=g)
+V = FiniteElement("CG", cell, degree)
 u = TrialFunction(V)
 v = TestFunction(V)
 
 forms = [(inner(grad(u), grad(v)) - f*v)*dx]
+exact_solution = g
+is_dirichlet = 1
+dirichlet_expression = g
diff --git a/test/sumfact/poisson/poisson_3d.mini b/test/sumfact/poisson/poisson_3d.mini
index b1cc845d5e6cb11687f38ec823faa3427237b808..a8b2a96bf871d623b672c6bb5ccb3ec87b980f52 100644
--- a/test/sumfact/poisson/poisson_3d.mini
+++ b/test/sumfact/poisson/poisson_3d.mini
@@ -16,7 +16,6 @@ extension = vtu
 
 [formcompiler]
 numerical_jacobian = 1, 0 | expand num
-exact_solution_expression = g
 compare_l2errorsquared = 1e-4, 1e-8 | expand deg
 sumfact = 1
 vectorize_quad = 1, 0 | expand quad
diff --git a/test/sumfact/poisson/poisson_3d.ufl b/test/sumfact/poisson/poisson_3d.ufl
index 7cee4c5b15c4c555edeec547de99c2dd95016956..529db2a042c01c43ffb7c71c390c323dd3c3d4ac 100644
--- a/test/sumfact/poisson/poisson_3d.ufl
+++ b/test/sumfact/poisson/poisson_3d.ufl
@@ -5,8 +5,11 @@ c = (0.5 - x[0])**2 + (0.5 - x[1])**2 + (0.5 - x[2])**2
 g = exp(-1.*c)
 f = 2*(3.-2*c)*g
 
-V = FiniteElement("CG", cell, degree, dirichlet_expression=g)
+V = FiniteElement("CG", cell, degree)
 u = TrialFunction(V)
 v = TestFunction(V)
 
 forms = [(inner(grad(u), grad(v)) - f*v)*dx]
+exact_solution = g
+is_dirichlet = 1
+dirichlet_expression = g
diff --git a/test/sumfact/poisson/poisson_dg_2d.mini b/test/sumfact/poisson/poisson_dg_2d.mini
index 8785a3b157f0b756d31101ea837ac201d84ceda1..facaf3278d32ab03e6de7c99cd79450780ff69bb 100644
--- a/test/sumfact/poisson/poisson_dg_2d.mini
+++ b/test/sumfact/poisson/poisson_dg_2d.mini
@@ -16,7 +16,6 @@ extension = vtu
 [formcompiler]
 numerical_jacobian = 1, 0 | expand num
 sumfact = 1
-exact_solution_expression = g
 compare_l2errorsquared = 5e-5, 5e-7 | expand deg
 vectorize_quad = 1, 0 | expand quad
 vectorize_grads = 1, 0 | expand grad
diff --git a/test/sumfact/poisson/poisson_dg_2d.ufl b/test/sumfact/poisson/poisson_dg_2d.ufl
index fe5c1821d89814fa1cfa90ca9099a8c4023caff6..fefc67d64c9a0b1a6dac9c34423933d149e8c88e 100644
--- a/test/sumfact/poisson/poisson_dg_2d.ufl
+++ b/test/sumfact/poisson/poisson_dg_2d.ufl
@@ -30,3 +30,4 @@ r = inner(grad(u), grad(v))*dx \
   - gamma*g*v*ds
 
 forms = [r]
+exact_solution = g
diff --git a/test/sumfact/poisson/poisson_dg_3d.mini b/test/sumfact/poisson/poisson_dg_3d.mini
index 6d7d2e7561d2b26553d180c81a75bfb01a5972b5..ee766a8d9d56cfd0a5ec9d4e622ee3cdc540fd97 100644
--- a/test/sumfact/poisson/poisson_dg_3d.mini
+++ b/test/sumfact/poisson/poisson_dg_3d.mini
@@ -16,7 +16,6 @@ extension = vtu
 [formcompiler]
 numerical_jacobian = 1, 0 | expand num
 sumfact = 1
-exact_solution_expression = g
 compare_l2errorsquared = 1e-4, 5e-6 | expand deg
 vectorize_quad = 1, 0 | expand quad
 vectorize_grads = 1, 0 | expand grad
diff --git a/test/sumfact/poisson/poisson_dg_3d.ufl b/test/sumfact/poisson/poisson_dg_3d.ufl
index 3efc5e3bcacf4427d253ba882bce84c90243d2aa..80d78c363b27b6e30476a1189aed521b33b65fa8 100644
--- a/test/sumfact/poisson/poisson_dg_3d.ufl
+++ b/test/sumfact/poisson/poisson_dg_3d.ufl
@@ -30,3 +30,4 @@ r = inner(grad(u), grad(v))*dx \
   - gamma*g*v*ds
 
 forms = [r]
+exact_solution = g
diff --git a/test/sumfact/poisson/poisson_dg_tensor.mini b/test/sumfact/poisson/poisson_dg_tensor.mini
index 3f561fa46fcb494d812646d96daf6f11c4b72605..fcf3d2a6aea2116bb37303ea691c9a55d8a92ed6 100644
--- a/test/sumfact/poisson/poisson_dg_tensor.mini
+++ b/test/sumfact/poisson/poisson_dg_tensor.mini
@@ -13,7 +13,6 @@ extension = vtu
 
 [formcompiler]
 sumfact = 1
-exact_solution_expression = g
 compare_l2errorsquared = 3e-4
 vectorize_quad = 1, 0 | expand quad
 vectorize_grads = 1, 0 | expand grad
diff --git a/test/sumfact/poisson/poisson_dg_tensor.ufl b/test/sumfact/poisson/poisson_dg_tensor.ufl
index 28bd83d122748ed9519ba412fa0ce0eb2f2d328a..0d4b7a79ee8e2b7183b8664bb639990960205e0a 100644
--- a/test/sumfact/poisson/poisson_dg_tensor.ufl
+++ b/test/sumfact/poisson/poisson_dg_tensor.ufl
@@ -33,3 +33,4 @@ r = (inner(A*grad(u), grad(v)) + c*u*v)*dx \
   - gamma*g*v*ds
 
 forms = [r]
+exact_solution = g
diff --git a/test/sumfact/poisson/poisson_fastdg_2d.mini b/test/sumfact/poisson/poisson_fastdg_2d.mini
index 2aebce291d498eaa49829285d9af0a528bd2cc86..2fcc2c4e51e029abcc6470202887d03b0b812d7f 100644
--- a/test/sumfact/poisson/poisson_fastdg_2d.mini
+++ b/test/sumfact/poisson/poisson_fastdg_2d.mini
@@ -14,7 +14,6 @@ extension = vtu
 [formcompiler]
 numerical_jacobian = 0
 sumfact = 1
-exact_solution_expression = g
 compare_l2errorsquared = 1e-4
 vectorize_quad = 1, 0 | expand quadvec
 vectorize_grads = 1, 0 | expand gradvec
diff --git a/test/sumfact/poisson/poisson_fastdg_3d.mini b/test/sumfact/poisson/poisson_fastdg_3d.mini
index aa4ff193652269570d0f686898371274bdbdadbe..78e7f891d6ac74776a6828aa77c59d2beff0d6e0 100644
--- a/test/sumfact/poisson/poisson_fastdg_3d.mini
+++ b/test/sumfact/poisson/poisson_fastdg_3d.mini
@@ -14,7 +14,6 @@ extension = vtu
 [formcompiler]
 numerical_jacobian = 0
 sumfact = 1
-exact_solution_expression = g
 compare_l2errorsquared = 1e-4
 vectorize_quad = 1, 0 | expand quadvec
 vectorize_grads = 1, 0 | expand gradvec
diff --git a/test/sumfact/poisson/sliced.mini b/test/sumfact/poisson/sliced.mini
index aac378ef3865dd3f4b40af7af0c2b8775e21d516..9240f97baabcec24bf6739ba730ffc8c76dd4453 100644
--- a/test/sumfact/poisson/sliced.mini
+++ b/test/sumfact/poisson/sliced.mini
@@ -9,7 +9,6 @@ extension = vtu
 
 [formcompiler]
 sumfact = 1
-exact_solution_expression = g
 compare_l2errorsquared = 1e-5
 vectorize_quad = 1
 vectorize_grads = 0
diff --git a/test/sumfact/stokes/stokes.mini b/test/sumfact/stokes/stokes.mini
index 5c1ccf5ea9e7a1b3570631af82095c66fb03b9fd..b89c262bbcb765f35433536ab6a231bb2786f30a 100644
--- a/test/sumfact/stokes/stokes.mini
+++ b/test/sumfact/stokes/stokes.mini
@@ -12,7 +12,6 @@ extension = vtu
 
 [formcompiler]
 numerical_jacobian = 1, 0 | expand num
-exact_solution_expression = g
 compare_l2errorsquared = 1e-12
 sumfact = 1
 
diff --git a/test/sumfact/stokes/stokes.ufl b/test/sumfact/stokes/stokes.ufl
index 0d7c58aa180a9d4586184d1eda6c53353bbbb67a..fafe0714ccee659ee18ef550cc2a17fba01077e6 100644
--- a/test/sumfact/stokes/stokes.ufl
+++ b/test/sumfact/stokes/stokes.ufl
@@ -3,10 +3,9 @@ cell = quadrilateral
 x = SpatialCoordinate(cell)
 v_bctype = conditional(x[0] < 1. - 1e-8, 1, 0)
 g_v = as_vector((4.*x[1]*(1.-x[1]), 0.0))
-g_p = 8.*(1.-x[0])
-g = (g_v, g_p)
 
-P2 = VectorElement("Lagrange", cell, 2, dirichlet_constraints=v_bctype, dirichlet_expression=g_v)
+
+P2 = VectorElement("Lagrange", cell, 2)
 P1 = FiniteElement("Lagrange", cell, 1)
 TH = P2 * P1
 
@@ -16,3 +15,6 @@ u, p = TrialFunctions(TH)
 r = (inner(grad(v), grad(u)) - div(v)*p - q*div(u))*dx
 
 forms = [r]
+exact_solution = g_v, 8.*(1.-x[0])
+dirichlet_expression = g_v, None
+is_dirichlet = v_bctype, v_bctype, None
\ No newline at end of file
diff --git a/test/sumfact/stokes/stokes_dg.mini b/test/sumfact/stokes/stokes_dg.mini
index 6ec366e56a5839512adebec9e8acb63a6ba90042..e57a64e864a9a62f0a65371d778658aaa63ca07e 100644
--- a/test/sumfact/stokes/stokes_dg.mini
+++ b/test/sumfact/stokes/stokes_dg.mini
@@ -12,7 +12,6 @@ extension = vtu
 
 [formcompiler]
 numerical_jacobian = 0, 1 | expand num
-exact_solution_expression = g
 compare_l2errorsquared = 1e-8
 sumfact = 1
 
diff --git a/test/sumfact/stokes/stokes_dg.ufl b/test/sumfact/stokes/stokes_dg.ufl
index 0995ec6ece110d49fc6ca99d0c05ab79e8143229..d961446a03aa4423c260e28923b8a453e6c7537f 100644
--- a/test/sumfact/stokes/stokes_dg.ufl
+++ b/test/sumfact/stokes/stokes_dg.ufl
@@ -2,8 +2,6 @@ cell = quadrilateral
 
 x = SpatialCoordinate(cell)
 g_v = as_vector((4*x[1]*(1.-x[1]), 0.0))
-g_p = 8*(1.-x[0])
-g = (g_v, g_p)
 bctype = conditional(x[0] < 1. - 1e-8, 1, 0)
 
 P2 = VectorElement("DG", cell, 2)
@@ -35,3 +33,4 @@ r = inner(grad(u), grad(v))*dx \
   - q*inner(g_v, n)*ds
 
 forms = [r]
+exact_solution = g_v, 8*(1.-x[0])
\ No newline at end of file