diff --git a/applications/test/hexRef8/block/system/decomposeParDict b/applications/test/hexRef8/block/system/decomposeParDict
index 884a85624ec4a2ae1f07d16910bbe48de92cc87b..ac4be587d454ad0bc8a9bb6d4ceee05c990fd07b 100644
--- a/applications/test/hexRef8/block/system/decomposeParDict
+++ b/applications/test/hexRef8/block/system/decomposeParDict
@@ -17,22 +17,6 @@ FoamFile
 
 numberOfSubdomains  2;
 
-//- Keep owner and neighbour on same processor for faces in zones:
-// preserveFaceZones (heater solid1 solid3);
-
-//- Keep owner and neighbour on same processor for faces in patches:
-//  (makes sense only for cyclic patches)
-//preservePatches (cyclic_half0 cyclic_half1);
-
-//- Keep all of faceSet on a single processor. This puts all cells
-//  connected with a point, edge or face on the same processor.
-//  (just having face connected cells might not guarantee a balanced
-//  decomposition)
-// The processor can be -1 (the decompositionMethod chooses the processor
-// for a good load balance) or explicitly provided (upsets balance).
-//singleProcessorFaceSets ((f0 -1));
-
-
 //- Use the volScalarField named here as a weight for each cell in the
 //  decomposition.  For example, use a particle population field to decompose
 //  for a balanced number of particles in a lagrangian simulation.
@@ -126,6 +110,38 @@ structuredCoeffs
     method      scotch;
 }
 
+
+/*
+constraints
+{
+    //- Keep owner and neighbour on same processor for faces in zones:
+    faces
+    {
+        type    preserveFaceZones,
+        zones   (heater solid1 solid3);
+    }
+    //- Keep owner and neighbour on same processor for faces in patches:
+    //  (makes sense only for cyclic patches)
+    patches
+    {
+        type    preservePatches,
+        patches (cyclic_half0 cyclic_half1);
+    }
+    //- Keep all of faceSet on a single processor. This puts all cells
+    //  connected with a point, edge or face on the same processor.
+    //  (just having face connected cells might not guarantee a balanced
+    //  decomposition)
+    // The processor can be -1 (the decompositionMethod chooses the processor
+    // for a good load balance) or explicitly provided (upsets balance).
+    processors
+    {
+        type    singleProcessorFaceSets;
+        sets    ((f0 -1));
+    }
+}
+*/
+
+
 //// Is the case distributed? Note: command-line argument -roots takes
 //// precedence
 //distributed     yes;
diff --git a/applications/test/mapDistributePolyMesh/cavity/system/decomposeParDict b/applications/test/mapDistributePolyMesh/cavity/system/decomposeParDict
index 4a13ccbaef6e0a1a1c1310ca1414bc3eb1b68d2a..911121a53258f8b2a17b892ec2e2342bea3d7b8f 100644
--- a/applications/test/mapDistributePolyMesh/cavity/system/decomposeParDict
+++ b/applications/test/mapDistributePolyMesh/cavity/system/decomposeParDict
@@ -17,27 +17,6 @@ FoamFile
 
 numberOfSubdomains  2;
 
-//- Keep owner and neighbour on same processor for faces in zones:
-// preserveFaceZones (heater solid1 solid3);
-
-//- Keep owner and neighbour on same processor for faces in patches:
-//  (makes sense only for cyclic patches)
-//preservePatches (cyclic_half0 cyclic_half1);
-
-//- Keep all of faceSet on a single processor. This puts all cells
-//  connected with a point, edge or face on the same processor.
-//  (just having face connected cells might not guarantee a balanced
-//  decomposition)
-// The processor can be -1 (the decompositionMethod chooses the processor
-// for a good load balance) or explicitly provided (upsets balance).
-//singleProcessorFaceSets ((f0 -1));
-
-
-//- Keep owner and neighbour of baffles on same processor (i.e. keep it
-//  detectable as a baffle). Baffles are two boundary face sharing the
-//  same points.
-//preserveBaffles true;
-
 //- Use the volScalarField named here as a weight for each cell in the
 //  decomposition.  For example, use a particle population field to decompose
 //  for a balanced number of particles in a lagrangian simulation.
@@ -130,6 +109,37 @@ structuredCoeffs
     method      scotch;
 }
 
+
+/*
+constraints
+{
+    //- Keep owner and neighbour on same processor for faces in zones:
+    faces
+    {
+        type    preserveFaceZones,
+        zones   (heater solid1 solid3);
+    }
+    //- Keep owner and neighbour on same processor for faces in patches:
+    //  (makes sense only for cyclic patches)
+    patches
+    {
+        type    preservePatches,
+        patches (cyclic_half0 cyclic_half1);
+    }
+    //- Keep all of faceSet on a single processor. This puts all cells
+    //  connected with a point, edge or face on the same processor.
+    //  (just having face connected cells might not guarantee a balanced
+    //  decomposition)
+    // The processor can be -1 (the decompositionMethod chooses the processor
+    // for a good load balance) or explicitly provided (upsets balance).
+    processors
+    {
+        type    singleProcessorFaceSets;
+        sets    ((f0 -1));
+    }
+}
+*/
+
 //// Is the case distributed? Note: command-line argument -roots takes
 //// precedence
 //distributed     yes;
diff --git a/applications/test/mapDistributePolyMesh/cavity/system/decomposeParDict-2 b/applications/test/mapDistributePolyMesh/cavity/system/decomposeParDict-2
index 4a13ccbaef6e0a1a1c1310ca1414bc3eb1b68d2a..287b9841d98bb16bdd6f7ab1b08056bd51771388 100644
--- a/applications/test/mapDistributePolyMesh/cavity/system/decomposeParDict-2
+++ b/applications/test/mapDistributePolyMesh/cavity/system/decomposeParDict-2
@@ -17,27 +17,6 @@ FoamFile
 
 numberOfSubdomains  2;
 
-//- Keep owner and neighbour on same processor for faces in zones:
-// preserveFaceZones (heater solid1 solid3);
-
-//- Keep owner and neighbour on same processor for faces in patches:
-//  (makes sense only for cyclic patches)
-//preservePatches (cyclic_half0 cyclic_half1);
-
-//- Keep all of faceSet on a single processor. This puts all cells
-//  connected with a point, edge or face on the same processor.
-//  (just having face connected cells might not guarantee a balanced
-//  decomposition)
-// The processor can be -1 (the decompositionMethod chooses the processor
-// for a good load balance) or explicitly provided (upsets balance).
-//singleProcessorFaceSets ((f0 -1));
-
-
-//- Keep owner and neighbour of baffles on same processor (i.e. keep it
-//  detectable as a baffle). Baffles are two boundary face sharing the
-//  same points.
-//preserveBaffles true;
-
 //- Use the volScalarField named here as a weight for each cell in the
 //  decomposition.  For example, use a particle population field to decompose
 //  for a balanced number of particles in a lagrangian simulation.
@@ -130,6 +109,37 @@ structuredCoeffs
     method      scotch;
 }
 
+/*
+constraints
+{
+    //- Keep owner and neighbour on same processor for faces in zones:
+    faces
+    {
+        type    preserveFaceZones,
+        zones   (heater solid1 solid3);
+    }
+    //- Keep owner and neighbour on same processor for faces in patches:
+    //  (makes sense only for cyclic patches)
+    patches
+    {
+        type    preservePatches,
+        patches (cyclic_half0 cyclic_half1);
+    }
+    //- Keep all of faceSet on a single processor. This puts all cells
+    //  connected with a point, edge or face on the same processor.
+    //  (just having face connected cells might not guarantee a balanced
+    //  decomposition)
+    // The processor can be -1 (the decompositionMethod chooses the processor
+    // for a good load balance) or explicitly provided (upsets balance).
+    processors
+    {
+        type    singleProcessorFaceSets;
+        sets    ((f0 -1));
+    }
+}
+*/
+
+
 //// Is the case distributed? Note: command-line argument -roots takes
 //// precedence
 //distributed     yes;
diff --git a/applications/test/mapDistributePolyMesh/cavity/system/decomposeParDict-5 b/applications/test/mapDistributePolyMesh/cavity/system/decomposeParDict-5
index 426e8b0d06593bc6c6251f8d39998afd2355bc0a..f3274a9be28f225b18b1ea130d3a02d4fd5006ee 100644
--- a/applications/test/mapDistributePolyMesh/cavity/system/decomposeParDict-5
+++ b/applications/test/mapDistributePolyMesh/cavity/system/decomposeParDict-5
@@ -17,27 +17,6 @@ FoamFile
 
 numberOfSubdomains  5;
 
-//- Keep owner and neighbour on same processor for faces in zones:
-// preserveFaceZones (heater solid1 solid3);
-
-//- Keep owner and neighbour on same processor for faces in patches:
-//  (makes sense only for cyclic patches)
-//preservePatches (cyclic_half0 cyclic_half1);
-
-//- Keep all of faceSet on a single processor. This puts all cells
-//  connected with a point, edge or face on the same processor.
-//  (just having face connected cells might not guarantee a balanced
-//  decomposition)
-// The processor can be -1 (the decompositionMethod chooses the processor
-// for a good load balance) or explicitly provided (upsets balance).
-//singleProcessorFaceSets ((f0 -1));
-
-
-//- Keep owner and neighbour of baffles on same processor (i.e. keep it
-//  detectable as a baffle). Baffles are two boundary face sharing the
-//  same points.
-//preserveBaffles true;
-
 //- Use the volScalarField named here as a weight for each cell in the
 //  decomposition.  For example, use a particle population field to decompose
 //  for a balanced number of particles in a lagrangian simulation.
@@ -130,6 +109,37 @@ structuredCoeffs
     method      scotch;
 }
 
+/*
+constraints
+{
+    //- Keep owner and neighbour on same processor for faces in zones:
+    faces
+    {
+        type    preserveFaceZones,
+        zones   (heater solid1 solid3);
+    }
+    //- Keep owner and neighbour on same processor for faces in patches:
+    //  (makes sense only for cyclic patches)
+    patches
+    {
+        type    preservePatches,
+        patches (cyclic_half0 cyclic_half1);
+    }
+    //- Keep all of faceSet on a single processor. This puts all cells
+    //  connected with a point, edge or face on the same processor.
+    //  (just having face connected cells might not guarantee a balanced
+    //  decomposition)
+    // The processor can be -1 (the decompositionMethod chooses the processor
+    // for a good load balance) or explicitly provided (upsets balance).
+    processors
+    {
+        type    singleProcessorFaceSets;
+        sets    ((f0 -1));
+    }
+}
+*/
+
+
 //// Is the case distributed? Note: command-line argument -roots takes
 //// precedence
 //distributed     yes;
diff --git a/applications/test/patchRegion/cavity_pinched/system/decomposeParDict b/applications/test/patchRegion/cavity_pinched/system/decomposeParDict
index 472b762e7692861a4f2f15567c1a84ed8ccc698e..05fb82d4af3d826e2e388038309c38e15c42d270 100644
--- a/applications/test/patchRegion/cavity_pinched/system/decomposeParDict
+++ b/applications/test/patchRegion/cavity_pinched/system/decomposeParDict
@@ -17,22 +17,6 @@ FoamFile
 
 numberOfSubdomains  2;
 
-//- Keep owner and neighbour on same processor for faces in zones:
-// preserveFaceZones (heater solid1 solid3);
-
-//- Keep owner and neighbour on same processor for faces in patches:
-//  (makes sense only for cyclic patches)
-//preservePatches (cyclic_half0 cyclic_half1);
-
-//- Keep all of faceSet on a single processor. This puts all cells
-//  connected with a point, edge or face on the same processor.
-//  (just having face connected cells might not guarantee a balanced
-//  decomposition)
-// The processor can be -1 (the decompositionMethod chooses the processor
-// for a good load balance) or explicitly provided (upsets balance).
-//singleProcessorFaceSets ((f0 -1));
-
-
 //- Use the volScalarField named here as a weight for each cell in the
 //  decomposition.  For example, use a particle population field to decompose
 //  for a balanced number of particles in a lagrangian simulation.
@@ -125,6 +109,36 @@ structuredCoeffs
     method      scotch;
 }
 
+/*
+constraints
+{
+    //- Keep owner and neighbour on same processor for faces in zones:
+    faces
+    {
+        type    preserveFaceZones,
+        zones   (heater solid1 solid3);
+    }
+    //- Keep owner and neighbour on same processor for faces in patches:
+    //  (makes sense only for cyclic patches)
+    patches
+    {
+        type    preservePatches,
+        patches (cyclic_half0 cyclic_half1);
+    }
+    //- Keep all of faceSet on a single processor. This puts all cells
+    //  connected with a point, edge or face on the same processor.
+    //  (just having face connected cells might not guarantee a balanced
+    //  decomposition)
+    // The processor can be -1 (the decompositionMethod chooses the processor
+    // for a good load balance) or explicitly provided (upsets balance).
+    processors
+    {
+        type    singleProcessorFaceSets;
+        sets    ((f0 -1));
+    }
+}
+*/
+
 //// Is the case distributed? Note: command-line argument -roots takes
 //// precedence
 //distributed     yes;
diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/externalCoupledHeater/system/decomposeParDict b/tutorials/heatTransfer/chtMultiRegionFoam/externalCoupledHeater/system/decomposeParDict
index a46e9617d47308becaa6ecc7c3f4497cec75ee5f..e8c69a5d1a528247c63ee02991e254c022f6c58a 100644
--- a/tutorials/heatTransfer/chtMultiRegionFoam/externalCoupledHeater/system/decomposeParDict
+++ b/tutorials/heatTransfer/chtMultiRegionFoam/externalCoupledHeater/system/decomposeParDict
@@ -16,9 +16,6 @@ FoamFile
 
 numberOfSubdomains  4;
 
-//- Keep owner and neighbour on same processor for faces in zones:
-// preserveFaceZones (heater solid1 solid3);
-
 method          scotch;
 // method          hierarchical;
 // method          simple;
@@ -27,9 +24,8 @@ method          scotch;
 coeffs
 {
     n           (2 2 1);
-    //delta       0.001; // default=0.001
-    //order       xyz;   // default=xzy
     dataFile    "decompositionData";
 }
 
+
 // ************************************************************************* //
diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/system/decomposeParDict b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/system/decomposeParDict
index 392b808bddcccff3564465f5087a784fedb5822a..6a683b0b2f016a35259da08ff805cf10f3917b6d 100644
--- a/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/system/decomposeParDict
+++ b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/system/decomposeParDict
@@ -16,11 +16,7 @@ FoamFile
 
 numberOfSubdomains  4;
 
-//- Keep owner and neighbour on same processor for faces in zones:
-// preserveFaceZones (heater solid1 solid3);
-
 method          scotch;
-
 // method          hierarchical;
 // method          simple;
 // method          manual;
@@ -44,4 +40,16 @@ coeffs
     n       (2 2 1);
 }
 
+/*
+constraints
+{
+    //- Keep owner and neighbour on same processor for faces in zones:
+    faces
+    {
+        type    preserveFaceZones,
+        zones   (heater solid1 solid3);
+    }
+}
+*/
+
 // ************************************************************************* //
diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeater/system/decomposeParDict b/tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeater/system/decomposeParDict
index 019ea832f9697237c6c657cb08331b82c48a846e..d41dd8c98cb71f8b8e3310d0d4137be394971705 100644
--- a/tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeater/system/decomposeParDict
+++ b/tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeater/system/decomposeParDict
@@ -16,9 +16,6 @@ FoamFile
 
 numberOfSubdomains  4;
 
-//- Keep owner and neighbour on same processor for faces in zones:
-// preserveFaceZones (heater solid1 solid3);
-
 method          scotch;
 
 regions
@@ -26,7 +23,7 @@ regions
     heater
     {
         numberOfSubdomains  1;
-        method          simple;
+        method      simple;
 
         coeffs
         {
@@ -40,4 +37,16 @@ coeffs
     n       (2 2 1);
 }
 
+/*
+constraints
+{
+    //- Keep owner and neighbour on same processor for faces in zones:
+    faces
+    {
+        type    preserveFaceZones,
+        zones   (heater solid1 solid3);
+    }
+}
+*/
+
 // ************************************************************************* //
diff --git a/tutorials/heatTransfer/chtMultiRegionSimpleFoam/externalCoupledHeater/system/decomposeParDict b/tutorials/heatTransfer/chtMultiRegionSimpleFoam/externalCoupledHeater/system/decomposeParDict
index c493fe9e6bbdce2436f9ecfe974a97ac21fb8d51..db7a44b8470f0b8090885dd69a48dd0fd8b6fc0f 100644
--- a/tutorials/heatTransfer/chtMultiRegionSimpleFoam/externalCoupledHeater/system/decomposeParDict
+++ b/tutorials/heatTransfer/chtMultiRegionSimpleFoam/externalCoupledHeater/system/decomposeParDict
@@ -16,10 +16,18 @@ FoamFile
 
 numberOfSubdomains  4;
 
-//- Keep owner and neighbour on same processor for faces in zones:
-// preserveFaceZones (heater solid1 solid3);
-
 method          scotch;
 
+/*
+constraints
+{
+    //- Keep owner and neighbour on same processor for faces in zones:
+    faces
+    {
+        type    preserveFaceZones,
+        zones   (heater solid1 solid3);
+    }
+}
+*/
 
 // ************************************************************************* //
diff --git a/tutorials/heatTransfer/chtMultiRegionSimpleFoam/multiRegionHeaterRadiation/system/decomposeParDict b/tutorials/heatTransfer/chtMultiRegionSimpleFoam/multiRegionHeaterRadiation/system/decomposeParDict
index 84839a8d06d87feff94e41892ed6537f7838a83e..ab5f3e8ddc4675b3f56f89bd5399842053dc73a9 100644
--- a/tutorials/heatTransfer/chtMultiRegionSimpleFoam/multiRegionHeaterRadiation/system/decomposeParDict
+++ b/tutorials/heatTransfer/chtMultiRegionSimpleFoam/multiRegionHeaterRadiation/system/decomposeParDict
@@ -16,9 +16,6 @@ FoamFile
 
 numberOfSubdomains  4;
 
-//- Keep owner and neighbour on same processor for faces in zones:
-// preserveFaceZones (heater solid1 solid3);
-
 method          scotch;
 // method          hierarchical;
 // method          simple;
@@ -37,4 +34,16 @@ scotchCoeffs
 }
 
 
+/*
+constraints
+{
+    //- Keep owner and neighbour on same processor for faces in zones:
+    faces
+    {
+        type    preserveFaceZones,
+        zones   (heater solid1 solid3);
+    }
+}
+*/
+
 // ************************************************************************* //
diff --git a/tutorials/lagrangian/reactingParcelFoam/filter/system/decomposeParDict b/tutorials/lagrangian/reactingParcelFoam/filter/system/decomposeParDict
index 6ca27c3a1009a0018f9ce8a182372064ec7d8783..705fe24c65e82952ca8342daf02ad227cf5ac1a1 100644
--- a/tutorials/lagrangian/reactingParcelFoam/filter/system/decomposeParDict
+++ b/tutorials/lagrangian/reactingParcelFoam/filter/system/decomposeParDict
@@ -18,15 +18,19 @@ numberOfSubdomains 4;
 
 method          scotch;
 
-preserveFaceZones
-(
-    cycLeft
-    cycRight
-);
-
 coeffs
 {
     n       (2 2 1);
 }
 
+constraints
+{
+    //- Keep owner and neighbour on same processor for faces in zones:
+    faces
+    {
+        type    preserveFaceZones,
+        zones   (cycLeft cycRight);
+    }
+}
+
 // ************************************************************************* //
diff --git a/tutorials/mesh/parallel/cavity/system/decomposeParDict b/tutorials/mesh/parallel/cavity/system/decomposeParDict
index e4d2ef5435b7960c4a59641d76974a1674dd0654..978d27ee1daa736885470f955538307240862852 100644
--- a/tutorials/mesh/parallel/cavity/system/decomposeParDict
+++ b/tutorials/mesh/parallel/cavity/system/decomposeParDict
@@ -17,27 +17,6 @@ FoamFile
 
 numberOfSubdomains  2;
 
-//- Keep owner and neighbour on same processor for faces in zones:
-// preserveFaceZones (heater solid1 solid3);
-
-//- Keep owner and neighbour on same processor for faces in patches:
-//  (makes sense only for cyclic patches)
-//preservePatches (cyclic_half0 cyclic_half1);
-
-//- Keep all of faceSet on a single processor. This puts all cells
-//  connected with a point, edge or face on the same processor.
-//  (just having face connected cells might not guarantee a balanced
-//  decomposition)
-// The processor can be -1 (the decompositionMethod chooses the processor
-// for a good load balance) or explicitly provided (upsets balance).
-//singleProcessorFaceSets ((f0 -1));
-
-
-//- Keep owner and neighbour of baffles on same processor (i.e. keep it
-//  detectable as a baffle). Baffles are two boundary face sharing the
-//  same points.
-//preserveBaffles true;
-
 //- Use the volScalarField named here as a weight for each cell in the
 //  decomposition.  For example, use a particle population field to decompose
 //  for a balanced number of particles in a lagrangian simulation.
@@ -79,15 +58,12 @@ multiLevelCoeffs
 
 simpleCoeffs
 {
-    n           (2 1 1);
-    delta       0.001;
+    n       (2 1 1);
 }
 
 hierarchicalCoeffs
 {
-    n           (1 2 1);
-    delta       0.001;
-    order       xyz;
+    n       (1 2 1);
 }
 
 metisCoeffs
@@ -131,6 +107,49 @@ structuredCoeffs
     method      scotch;
 }
 
+constraints
+{
+    //- Keep owner and neighbour on same processor for faces in zones:
+    zones
+    {
+        type    preserveFaceZones;
+        zones   (heater solid1 solid3);
+        enabled false;
+    }
+
+    //- Keep owner and neighbour on same processor for faces in patches:
+    //  (makes sense only for cyclic patches)
+    patches
+    {
+        type    preservePatches;
+        patches (cyclic_half0 cyclic_half1);
+        enabled false;
+    }
+
+    //- Keep all of faceSet on a single processor. This puts all cells
+    //  connected with a point, edge or face on the same processor.
+    //  (just having face connected cells might not guarantee a balanced
+    //  decomposition)
+    //  The processor can be -1 (the decompositionMethod chooses the processor
+    //  for a good load balance) or explicitly provided (upsets balance).
+    processors
+    {
+        type    singleProcessorFaceSets;
+        sets    ((f0 -1));
+        enabled false;
+    }
+
+    //- Keep owner and neighbour of baffles on same processor
+    //  (i.e. keep it detectable as a baffle).
+    //  Baffles are two boundary face sharing the same points.
+    baffles
+    {
+        type    preserveBaffles;
+        enabled false;
+    }
+}
+
+
 //// Is the case distributed? Note: command-line argument -roots takes
 //// precedence
 //distributed     yes;
diff --git a/tutorials/mesh/parallel/cavity/system/decomposeParDict-5 b/tutorials/mesh/parallel/cavity/system/decomposeParDict-5
index 1e6184c072f2732a81c0a3e8e3b97720e8780fda..008d946f44310166be977c3090543b8d0e7cf0f9 100644
--- a/tutorials/mesh/parallel/cavity/system/decomposeParDict-5
+++ b/tutorials/mesh/parallel/cavity/system/decomposeParDict-5
@@ -17,27 +17,6 @@ FoamFile
 
 numberOfSubdomains  5;
 
-//- Keep owner and neighbour on same processor for faces in zones:
-// preserveFaceZones (heater solid1 solid3);
-
-//- Keep owner and neighbour on same processor for faces in patches:
-//  (makes sense only for cyclic patches)
-//preservePatches (cyclic_half0 cyclic_half1);
-
-//- Keep all of faceSet on a single processor. This puts all cells
-//  connected with a point, edge or face on the same processor.
-//  (just having face connected cells might not guarantee a balanced
-//  decomposition)
-// The processor can be -1 (the decompositionMethod chooses the processor
-// for a good load balance) or explicitly provided (upsets balance).
-//singleProcessorFaceSets ((f0 -1));
-
-
-//- Keep owner and neighbour of baffles on same processor (i.e. keep it
-//  detectable as a baffle). Baffles are two boundary face sharing the
-//  same points.
-//preserveBaffles true;
-
 //- Use the volScalarField named here as a weight for each cell in the
 //  decomposition.  For example, use a particle population field to decompose
 //  for a balanced number of particles in a lagrangian simulation.
@@ -79,15 +58,12 @@ multiLevelCoeffs
 
 simpleCoeffs
 {
-    n           (2 1 1);
-    delta       0.001;
+    n       (2 1 1);
 }
 
 hierarchicalCoeffs
 {
-    n           (1 2 1);
-    delta       0.001;
-    order       xyz;
+    n       (1 2 1);
 }
 
 metisCoeffs
@@ -123,14 +99,57 @@ manualCoeffs
 
 structuredCoeffs
 {
+    // Method to use on the 2D subset
+    method      scotch;
+
     // Patches to do 2D decomposition on. Structured mesh only; cells have
     // to be in 'columns' on top of patches.
     patches     (movingWall);
+}
 
-    // Method to use on the 2D subset
-    method      scotch;
+constraints
+{
+    //- Keep owner and neighbour on same processor for faces in zones:
+    zones
+    {
+        type    preserveFaceZones;
+        zones   (heater solid1 solid3);
+        enabled false;
+    }
+
+    //- Keep owner and neighbour on same processor for faces in patches:
+    //  (makes sense only for cyclic patches)
+    patches
+    {
+        type    preservePatches;
+        patches (cyclic_half0 cyclic_half1);
+        enabled false;
+    }
+
+    //- Keep all of faceSet on a single processor. This puts all cells
+    //  connected with a point, edge or face on the same processor.
+    //  (just having face connected cells might not guarantee a balanced
+    //  decomposition)
+    //  The processor can be -1 (the decompositionMethod chooses the processor
+    //  for a good load balance) or explicitly provided (upsets balance).
+    processors
+    {
+        type    singleProcessorFaceSets;
+        sets    ((f0 -1));
+        enabled false;
+    }
+
+    //- Keep owner and neighbour of baffles on same processor
+    //  (i.e. keep it detectable as a baffle).
+    //  Baffles are two boundary face sharing the same points.
+    baffles
+    {
+        type    preserveBaffles;
+        enabled false;
+    }
 }
 
+
 //// Is the case distributed? Note: command-line argument -roots takes
 //// precedence
 //distributed     yes;
diff --git a/tutorials/mesh/parallel/filter/system/decomposeParDict b/tutorials/mesh/parallel/filter/system/decomposeParDict
index e38cbfb560c9fc2c74446bdffa5c14ef9fe885c7..16086ce80adbe6c8aede22c809e5ca97e46ff6ac 100644
--- a/tutorials/mesh/parallel/filter/system/decomposeParDict
+++ b/tutorials/mesh/parallel/filter/system/decomposeParDict
@@ -18,11 +18,15 @@ numberOfSubdomains 3;
 
 method          scotch;
 
-preserveFaceZones
-(
-    cycLeft
-    cycRight
-);
+constraints
+{
+    //- Keep owner and neighbour on same processor for faces in zones:
+    faces
+    {
+        type    preserveFaceZones,
+        zones   (cycLeft cycRight);
+    }
+}
 
 
 // ************************************************************************* //
diff --git a/tutorials/mesh/snappyHexMesh/addLayersToFaceZone/system/decomposeParDict b/tutorials/mesh/snappyHexMesh/addLayersToFaceZone/system/decomposeParDict
index 4a13ccbaef6e0a1a1c1310ca1414bc3eb1b68d2a..64a98e1f0e79b97679eebe0b748466af18731dae 100644
--- a/tutorials/mesh/snappyHexMesh/addLayersToFaceZone/system/decomposeParDict
+++ b/tutorials/mesh/snappyHexMesh/addLayersToFaceZone/system/decomposeParDict
@@ -17,27 +17,6 @@ FoamFile
 
 numberOfSubdomains  2;
 
-//- Keep owner and neighbour on same processor for faces in zones:
-// preserveFaceZones (heater solid1 solid3);
-
-//- Keep owner and neighbour on same processor for faces in patches:
-//  (makes sense only for cyclic patches)
-//preservePatches (cyclic_half0 cyclic_half1);
-
-//- Keep all of faceSet on a single processor. This puts all cells
-//  connected with a point, edge or face on the same processor.
-//  (just having face connected cells might not guarantee a balanced
-//  decomposition)
-// The processor can be -1 (the decompositionMethod chooses the processor
-// for a good load balance) or explicitly provided (upsets balance).
-//singleProcessorFaceSets ((f0 -1));
-
-
-//- Keep owner and neighbour of baffles on same processor (i.e. keep it
-//  detectable as a baffle). Baffles are two boundary face sharing the
-//  same points.
-//preserveBaffles true;
-
 //- Use the volScalarField named here as a weight for each cell in the
 //  decomposition.  For example, use a particle population field to decompose
 //  for a balanced number of particles in a lagrangian simulation.
@@ -79,14 +58,11 @@ multiLevelCoeffs
 simpleCoeffs
 {
     n           (2 1 1);
-    delta       0.001;
 }
 
 hierarchicalCoeffs
 {
     n           (1 2 1);
-    delta       0.001;
-    order       xyz;
 }
 
 metisCoeffs
@@ -122,14 +98,58 @@ manualCoeffs
 
 structuredCoeffs
 {
+    // Method to use on the 2D subset
+    method      scotch;
+
     // Patches to do 2D decomposition on. Structured mesh only; cells have
     // to be in 'columns' on top of patches.
     patches     (movingWall);
+}
 
-    // Method to use on the 2D subset
-    method      scotch;
+
+constraints
+{
+    //- Keep owner and neighbour on same processor for faces in zones:
+    zones
+    {
+        type    preserveFaceZones;
+        zones   (heater solid1 solid3);
+        enabled false;
+    }
+
+    //- Keep owner and neighbour on same processor for faces in patches:
+    //  (makes sense only for cyclic patches)
+    patches
+    {
+        type    preservePatches;
+        patches (cyclic_half0 cyclic_half1);
+        enabled false;
+    }
+
+    //- Keep all of faceSet on a single processor. This puts all cells
+    //  connected with a point, edge or face on the same processor.
+    //  (just having face connected cells might not guarantee a balanced
+    //  decomposition)
+    //  The processor can be -1 (the decompositionMethod chooses the processor
+    //  for a good load balance) or explicitly provided (upsets balance).
+    singleProcessorFaceSets
+    {
+        type    singleProcessorFaceSets;
+        sets    ((f0 -1));
+        enabled false;
+    }
+
+    //- Keep owner and neighbour of baffles on same processor
+    //  (i.e. keep it detectable as a baffle).
+    //  Baffles are two boundary face sharing the same points.
+    baffles
+    {
+        type    preserveBaffles;
+        enabled false;
+    }
 }
 
+
 //// Is the case distributed? Note: command-line argument -roots takes
 //// precedence
 //distributed     yes;
diff --git a/tutorials/preProcessing/createZeroDirectory/snappyMultiRegionHeater/system/bottomAir/decomposeParDict b/tutorials/preProcessing/createZeroDirectory/snappyMultiRegionHeater/system/bottomAir/decomposeParDict
index 67106528e393b3137ef922aaab5e4e26bf6e3275..8719f23c1f0b7d39ab953ba784c3778f6378ae41 100644
--- a/tutorials/preProcessing/createZeroDirectory/snappyMultiRegionHeater/system/bottomAir/decomposeParDict
+++ b/tutorials/preProcessing/createZeroDirectory/snappyMultiRegionHeater/system/bottomAir/decomposeParDict
@@ -16,9 +16,6 @@ FoamFile
 
 numberOfSubdomains  4;
 
-//- Keep owner and neighbour on same processor for faces in zones:
-// preserveFaceZones (heater solid1 solid3);
-
 method          scotch;
 // method          hierarchical;
 // method          simple;
@@ -45,4 +42,16 @@ scotchCoeffs
     //strategy "b";
 }
 
+/*
+constraints
+{
+    //- Keep owner and neighbour on same processor for faces in zones:
+    faces
+    {
+        type    preserveFaceZones,
+        zones   (heater solid1 solid3);
+    }
+}
+*/
+
 // ************************************************************************* //
diff --git a/tutorials/preProcessing/createZeroDirectory/snappyMultiRegionHeater/system/decomposeParDict b/tutorials/preProcessing/createZeroDirectory/snappyMultiRegionHeater/system/decomposeParDict
index 75c6ca9fc8305c1935f9a9535e9e82230bd32490..8866e098719dd52a404d4ef5e3fd5ac83f6c69fe 100644
--- a/tutorials/preProcessing/createZeroDirectory/snappyMultiRegionHeater/system/decomposeParDict
+++ b/tutorials/preProcessing/createZeroDirectory/snappyMultiRegionHeater/system/decomposeParDict
@@ -16,9 +16,6 @@ FoamFile
 
 numberOfSubdomains  4;
 
-//- Keep owner and neighbour on same processor for faces in zones:
-// preserveFaceZones (heater solid1 solid3);
-
 // method          scotch;
 method          hierarchical;
 // method          simple;
@@ -45,4 +42,16 @@ scotchCoeffs
     //strategy "b";
 }
 
+/*
+constraints
+{
+    //- Keep owner and neighbour on same processor for faces in zones:
+    faces
+    {
+        type    preserveFaceZones;
+        zones   (heater solid1 solid3);
+    }
+}
+*/
+
 // ************************************************************************* //
diff --git a/tutorials/preProcessing/createZeroDirectory/snappyMultiRegionHeater/system/heater/decomposeParDict b/tutorials/preProcessing/createZeroDirectory/snappyMultiRegionHeater/system/heater/decomposeParDict
index 67106528e393b3137ef922aaab5e4e26bf6e3275..8719f23c1f0b7d39ab953ba784c3778f6378ae41 100644
--- a/tutorials/preProcessing/createZeroDirectory/snappyMultiRegionHeater/system/heater/decomposeParDict
+++ b/tutorials/preProcessing/createZeroDirectory/snappyMultiRegionHeater/system/heater/decomposeParDict
@@ -16,9 +16,6 @@ FoamFile
 
 numberOfSubdomains  4;
 
-//- Keep owner and neighbour on same processor for faces in zones:
-// preserveFaceZones (heater solid1 solid3);
-
 method          scotch;
 // method          hierarchical;
 // method          simple;
@@ -45,4 +42,16 @@ scotchCoeffs
     //strategy "b";
 }
 
+/*
+constraints
+{
+    //- Keep owner and neighbour on same processor for faces in zones:
+    faces
+    {
+        type    preserveFaceZones,
+        zones   (heater solid1 solid3);
+    }
+}
+*/
+
 // ************************************************************************* //
diff --git a/tutorials/preProcessing/createZeroDirectory/snappyMultiRegionHeater/system/leftSolid/decomposeParDict b/tutorials/preProcessing/createZeroDirectory/snappyMultiRegionHeater/system/leftSolid/decomposeParDict
index 67106528e393b3137ef922aaab5e4e26bf6e3275..8719f23c1f0b7d39ab953ba784c3778f6378ae41 100644
--- a/tutorials/preProcessing/createZeroDirectory/snappyMultiRegionHeater/system/leftSolid/decomposeParDict
+++ b/tutorials/preProcessing/createZeroDirectory/snappyMultiRegionHeater/system/leftSolid/decomposeParDict
@@ -16,9 +16,6 @@ FoamFile
 
 numberOfSubdomains  4;
 
-//- Keep owner and neighbour on same processor for faces in zones:
-// preserveFaceZones (heater solid1 solid3);
-
 method          scotch;
 // method          hierarchical;
 // method          simple;
@@ -45,4 +42,16 @@ scotchCoeffs
     //strategy "b";
 }
 
+/*
+constraints
+{
+    //- Keep owner and neighbour on same processor for faces in zones:
+    faces
+    {
+        type    preserveFaceZones,
+        zones   (heater solid1 solid3);
+    }
+}
+*/
+
 // ************************************************************************* //
diff --git a/tutorials/preProcessing/createZeroDirectory/snappyMultiRegionHeater/system/rightSolid/decomposeParDict b/tutorials/preProcessing/createZeroDirectory/snappyMultiRegionHeater/system/rightSolid/decomposeParDict
index 67106528e393b3137ef922aaab5e4e26bf6e3275..8719f23c1f0b7d39ab953ba784c3778f6378ae41 100644
--- a/tutorials/preProcessing/createZeroDirectory/snappyMultiRegionHeater/system/rightSolid/decomposeParDict
+++ b/tutorials/preProcessing/createZeroDirectory/snappyMultiRegionHeater/system/rightSolid/decomposeParDict
@@ -16,9 +16,6 @@ FoamFile
 
 numberOfSubdomains  4;
 
-//- Keep owner and neighbour on same processor for faces in zones:
-// preserveFaceZones (heater solid1 solid3);
-
 method          scotch;
 // method          hierarchical;
 // method          simple;
@@ -45,4 +42,16 @@ scotchCoeffs
     //strategy "b";
 }
 
+/*
+constraints
+{
+    //- Keep owner and neighbour on same processor for faces in zones:
+    faces
+    {
+        type    preserveFaceZones,
+        zones   (heater solid1 solid3);
+    }
+}
+*/
+
 // ************************************************************************* //
diff --git a/tutorials/preProcessing/createZeroDirectory/snappyMultiRegionHeater/system/topAir/decomposeParDict b/tutorials/preProcessing/createZeroDirectory/snappyMultiRegionHeater/system/topAir/decomposeParDict
index 67106528e393b3137ef922aaab5e4e26bf6e3275..8719f23c1f0b7d39ab953ba784c3778f6378ae41 100644
--- a/tutorials/preProcessing/createZeroDirectory/snappyMultiRegionHeater/system/topAir/decomposeParDict
+++ b/tutorials/preProcessing/createZeroDirectory/snappyMultiRegionHeater/system/topAir/decomposeParDict
@@ -16,9 +16,6 @@ FoamFile
 
 numberOfSubdomains  4;
 
-//- Keep owner and neighbour on same processor for faces in zones:
-// preserveFaceZones (heater solid1 solid3);
-
 method          scotch;
 // method          hierarchical;
 // method          simple;
@@ -45,4 +42,16 @@ scotchCoeffs
     //strategy "b";
 }
 
+/*
+constraints
+{
+    //- Keep owner and neighbour on same processor for faces in zones:
+    faces
+    {
+        type    preserveFaceZones,
+        zones   (heater solid1 solid3);
+    }
+}
+*/
+
 // ************************************************************************* //