diff --git a/applications/utilities/preProcessing/optimisation/writeMorpherCPs/writeMorpherCPs.C b/applications/utilities/preProcessing/optimisation/writeMorpherCPs/writeMorpherCPs.C
index 2b70f305685f60a509b88349497b35b4950ded1e..4729ac3bf34bac88c1d97c8367d5fb3f185dc765 100644
--- a/applications/utilities/preProcessing/optimisation/writeMorpherCPs/writeMorpherCPs.C
+++ b/applications/utilities/preProcessing/optimisation/writeMorpherCPs/writeMorpherCPs.C
@@ -45,33 +45,37 @@ int main(int argc, char *argv[])
     #include "createTime.H"
     #include "createMesh.H"
 
-    IOdictionary dict
+    const dictionary NURBSdict
     (
-        IOobject
+        IOdictionary
         (
-            "dynamicMeshDict",
-            mesh.time().constant(),
-            mesh,
-            IOobject::MUST_READ_IF_MODIFIED,
-            IOobject::NO_WRITE
-        )
+            IOobject
+            (
+                "dynamicMeshDict",
+                mesh.time().constant(),
+                mesh,
+                IOobject::MUST_READ_IF_MODIFIED,
+                IOobject::NO_WRITE,
+                false
+            )
+        ).subDict("volumetricBSplinesMotionSolverCoeffs")
     );
+    // Read box names and allocate size
+    wordList controlBoxes(NURBSdict.toc());
 
-    const dictionary& coeffDict =
-        dict.subDict("volumetricBSplinesMotionSolverCoeffs");
-
-    wordList controlBoxes(coeffDict.get<wordList>("controlBoxes"));
-
-    forAll(controlBoxes, iNURB)
+    for (const word& boxName : controlBoxes)
     {
-        // Creating an object writes the control points in the 
-        // constructor
-        NURBS3DVolume::New
-        (
-            coeffDict.subDict(controlBoxes[iNURB]),
-            mesh,
-            false // do not compute parametric coordinates
-        );
+        if (NURBSdict.isDict(boxName))
+        {
+            // Creating an object writes the control points in the
+            // constructor
+            NURBS3DVolume::New
+            (
+                NURBSdict.subDict(boxName),
+                mesh,
+                false // do not compute parametric coordinates
+            );
+        }
     }
 
     Info<< "End\n" << endl;
diff --git a/tutorials/incompressible/adjointOptimisationFoam/shapeOptimisation/sbend/turbulent/primalAdjointFullSetup/Allrun b/tutorials/incompressible/adjointOptimisationFoam/shapeOptimisation/sbend/turbulent/primalAdjointFullSetup/Allrun
index 69abef2dca90fc3a6a3609090bf40641043b3d53..7c9b06005f0815e4c4bc9f4bae1045921a226851 100755
--- a/tutorials/incompressible/adjointOptimisationFoam/shapeOptimisation/sbend/turbulent/primalAdjointFullSetup/Allrun
+++ b/tutorials/incompressible/adjointOptimisationFoam/shapeOptimisation/sbend/turbulent/primalAdjointFullSetup/Allrun
@@ -7,6 +7,7 @@ resourcesDir=$FOAM_TUTORIALS/incompressible/adjointOptimisationFoam/resources
 
 \cp $resourcesDir/param/sbend/* 0
 \cp -r $resourcesDir/meshes/sbend/polyMesh constant
+runApplication writeMorpherCPs
 runApplication decomposePar
 runParallel $(getApplication)