diff --git a/applications/utilities/postProcessing/dataConversion/foamToEnsight/convertLagrangian.H b/applications/utilities/postProcessing/dataConversion/foamToEnsight/convertLagrangian.H
index 143f9f226f799edbc925144a52067d148ce3a00a..101debd6a08aae50983fd3e02020c2e2ac9c6be3 100644
--- a/applications/utilities/postProcessing/dataConversion/foamToEnsight/convertLagrangian.H
+++ b/applications/utilities/postProcessing/dataConversion/foamToEnsight/convertLagrangian.H
@@ -67,10 +67,10 @@ if (doLagrangian)
             }
         }
 
-        forAllConstIters(theseCloudFields, fieldIter)
+        // Field order may differ on individual processors, so sort by name
+        for (const word& fieldName : theseCloudFields.sortedToc())
         {
-            const word& fieldName = fieldIter.key();
-            const word& fieldType = fieldIter.val();
+            const word& fieldType = theseCloudFields[fieldName];
 
             IOobject fieldObject
             (
@@ -88,9 +88,13 @@ if (doLagrangian)
                 // but that combination does not work.
                 // So check the header and sync globally
 
+                const bool parRun = Pstream::parRun();
+                Pstream::parRun() = false;
+
                 fieldExists =
                     fieldObject.typeHeaderOk<IOField<scalar>>(false);
 
+                Pstream::parRun() = parRun;
                 reduce(fieldExists, orOp<bool>());
             }