diff --git a/backend/lib/robots/dreame/DreameD10SPlusValetudoRobot.js b/backend/lib/robots/dreame/DreameD10SPlusValetudoRobot.js
index c5f172caca..c6b8a9c9ea 100644
--- a/backend/lib/robots/dreame/DreameD10SPlusValetudoRobot.js
+++ b/backend/lib/robots/dreame/DreameD10SPlusValetudoRobot.js
@@ -26,6 +26,27 @@ class DreameD10SPlusValetudoRobot extends DreameGen2LidarValetudoRobot {
             robot: this
         });
 
+        this.registerCapability(new capabilities.DreameMapSegmentationCapability({
+            robot: this,
+            miot_actions: {
+                start: {
+                    siid: DreameGen2ValetudoRobot.MIOT_SERVICES.VACUUM_2.SIID,
+                    aiid: DreameGen2ValetudoRobot.MIOT_SERVICES.VACUUM_2.ACTIONS.START.AIID
+                }
+            },
+            miot_properties: {
+                mode: {
+                    piid: DreameGen2ValetudoRobot.MIOT_SERVICES.VACUUM_2.PROPERTIES.MODE.PIID
+                },
+                additionalCleanupParameters: {
+                    piid: DreameGen2ValetudoRobot.MIOT_SERVICES.VACUUM_2.PROPERTIES.ADDITIONAL_CLEANUP_PROPERTIES.PIID
+                }
+            },
+            segmentCleaningModeId: 18,
+            iterationsSupported: 4,
+            customOrderSupported: true
+        }));
+
         this.registerCapability(new capabilities.DreameWaterUsageControlCapability({
             robot: this,
             presets: Object.keys(this.waterGrades).map(k => {
diff --git a/backend/lib/robots/dreame/DreameD10SProValetudoRobot.js b/backend/lib/robots/dreame/DreameD10SProValetudoRobot.js
index c82d85f3e5..6866e9d973 100644
--- a/backend/lib/robots/dreame/DreameD10SProValetudoRobot.js
+++ b/backend/lib/robots/dreame/DreameD10SProValetudoRobot.js
@@ -26,6 +26,27 @@ class DreameD10SProValetudoRobot extends DreameGen2LidarValetudoRobot {
             robot: this
         });
 
+        this.registerCapability(new capabilities.DreameMapSegmentationCapability({
+            robot: this,
+            miot_actions: {
+                start: {
+                    siid: DreameGen2ValetudoRobot.MIOT_SERVICES.VACUUM_2.SIID,
+                    aiid: DreameGen2ValetudoRobot.MIOT_SERVICES.VACUUM_2.ACTIONS.START.AIID
+                }
+            },
+            miot_properties: {
+                mode: {
+                    piid: DreameGen2ValetudoRobot.MIOT_SERVICES.VACUUM_2.PROPERTIES.MODE.PIID
+                },
+                additionalCleanupParameters: {
+                    piid: DreameGen2ValetudoRobot.MIOT_SERVICES.VACUUM_2.PROPERTIES.ADDITIONAL_CLEANUP_PROPERTIES.PIID
+                }
+            },
+            segmentCleaningModeId: 18,
+            iterationsSupported: 4,
+            customOrderSupported: true
+        }));
+
         this.registerCapability(new capabilities.DreameWaterUsageControlCapability({
             robot: this,
             presets: Object.keys(this.waterGrades).map(k => {
diff --git a/backend/lib/robots/dreame/DreameD9ProValetudoRobot.js b/backend/lib/robots/dreame/DreameD9ProValetudoRobot.js
index 39c84e031a..359082d187 100644
--- a/backend/lib/robots/dreame/DreameD9ProValetudoRobot.js
+++ b/backend/lib/robots/dreame/DreameD9ProValetudoRobot.js
@@ -17,6 +17,27 @@ class DreameD9ProValetudoRobot extends DreameGen2LidarValetudoRobot {
     constructor(options) {
         super(options);
 
+        this.registerCapability(new capabilities.DreameMapSegmentationCapability({
+            robot: this,
+            miot_actions: {
+                start: {
+                    siid: DreameGen2ValetudoRobot.MIOT_SERVICES.VACUUM_2.SIID,
+                    aiid: DreameGen2ValetudoRobot.MIOT_SERVICES.VACUUM_2.ACTIONS.START.AIID
+                }
+            },
+            miot_properties: {
+                mode: {
+                    piid: DreameGen2ValetudoRobot.MIOT_SERVICES.VACUUM_2.PROPERTIES.MODE.PIID
+                },
+                additionalCleanupParameters: {
+                    piid: DreameGen2ValetudoRobot.MIOT_SERVICES.VACUUM_2.PROPERTIES.ADDITIONAL_CLEANUP_PROPERTIES.PIID
+                }
+            },
+            segmentCleaningModeId: 18,
+            iterationsSupported: 4,
+            customOrderSupported: true
+        }));
+
         this.registerCapability(new capabilities.DreameCarpetModeControlCapability({robot: this}));
 
         this.registerCapability(new capabilities.DreameWaterUsageControlCapability({
diff --git a/backend/lib/robots/dreame/DreameD9ValetudoRobot.js b/backend/lib/robots/dreame/DreameD9ValetudoRobot.js
index 310f4ba9a6..79d0ff899a 100644
--- a/backend/lib/robots/dreame/DreameD9ValetudoRobot.js
+++ b/backend/lib/robots/dreame/DreameD9ValetudoRobot.js
@@ -22,6 +22,27 @@ class DreameD9ValetudoRobot extends DreameGen2LidarValetudoRobot {
             robot: this
         });
 
+        this.registerCapability(new capabilities.DreameMapSegmentationCapability({
+            robot: this,
+            miot_actions: {
+                start: {
+                    siid: DreameGen2ValetudoRobot.MIOT_SERVICES.VACUUM_2.SIID,
+                    aiid: DreameGen2ValetudoRobot.MIOT_SERVICES.VACUUM_2.ACTIONS.START.AIID
+                }
+            },
+            miot_properties: {
+                mode: {
+                    piid: DreameGen2ValetudoRobot.MIOT_SERVICES.VACUUM_2.PROPERTIES.MODE.PIID
+                },
+                additionalCleanupParameters: {
+                    piid: DreameGen2ValetudoRobot.MIOT_SERVICES.VACUUM_2.PROPERTIES.ADDITIONAL_CLEANUP_PROPERTIES.PIID
+                }
+            },
+            segmentCleaningModeId: 18,
+            iterationsSupported: 4,
+            customOrderSupported: true
+        }));
+
         this.registerCapability(new capabilities.DreameCarpetModeControlCapability({robot: this}));
 
         this.registerCapability(new capabilities.DreameWaterUsageControlCapability({
diff --git a/backend/lib/robots/dreame/DreameGen2VSlamValetudoRobot.js b/backend/lib/robots/dreame/DreameGen2VSlamValetudoRobot.js
index 724f5b163e..a317727912 100644
--- a/backend/lib/robots/dreame/DreameGen2VSlamValetudoRobot.js
+++ b/backend/lib/robots/dreame/DreameGen2VSlamValetudoRobot.js
@@ -9,6 +9,27 @@ class DreameGen2VSlamValetudoRobot extends DreameGen2ValetudoRobot {
     constructor(options) {
         super(options);
 
+        this.registerCapability(new capabilities.DreameMapSegmentationCapability({
+            robot: this,
+            miot_actions: {
+                start: {
+                    siid: DreameGen2ValetudoRobot.MIOT_SERVICES.VACUUM_2.SIID,
+                    aiid: DreameGen2ValetudoRobot.MIOT_SERVICES.VACUUM_2.ACTIONS.START.AIID
+                }
+            },
+            miot_properties: {
+                mode: {
+                    piid: DreameGen2ValetudoRobot.MIOT_SERVICES.VACUUM_2.PROPERTIES.MODE.PIID
+                },
+                additionalCleanupParameters: {
+                    piid: DreameGen2ValetudoRobot.MIOT_SERVICES.VACUUM_2.PROPERTIES.ADDITIONAL_CLEANUP_PROPERTIES.PIID
+                }
+            },
+            segmentCleaningModeId: 18,
+            iterationsSupported: 4,
+            customOrderSupported: true
+        }));
+
         //Looks like this is always enabled for LIDAR robots but a toggle for vSlam ones?
         this.registerCapability(new capabilities.DreamePersistentMapControlCapability({
             robot: this,
diff --git a/backend/lib/robots/dreame/DreameGen2ValetudoRobot.js b/backend/lib/robots/dreame/DreameGen2ValetudoRobot.js
index d770b63aa7..97ecad6bb1 100644
--- a/backend/lib/robots/dreame/DreameGen2ValetudoRobot.js
+++ b/backend/lib/robots/dreame/DreameGen2ValetudoRobot.js
@@ -98,27 +98,6 @@ class DreameGen2ValetudoRobot extends DreameValetudoRobot {
             aiid: MIOT_SERVICES.AUDIO.ACTIONS.LOCATE.AIID
         }));
 
-        this.registerCapability(new capabilities.DreameMapSegmentationCapability({
-            robot: this,
-            miot_actions: {
-                start: {
-                    siid: MIOT_SERVICES.VACUUM_2.SIID,
-                    aiid: MIOT_SERVICES.VACUUM_2.ACTIONS.START.AIID
-                }
-            },
-            miot_properties: {
-                mode: {
-                    piid: MIOT_SERVICES.VACUUM_2.PROPERTIES.MODE.PIID
-                },
-                additionalCleanupParameters: {
-                    piid: MIOT_SERVICES.VACUUM_2.PROPERTIES.ADDITIONAL_CLEANUP_PROPERTIES.PIID
-                }
-            },
-            segmentCleaningModeId: 18,
-            iterationsSupported: 4,
-            customOrderSupported: true
-        }));
-
         this.registerCapability(new capabilities.DreameMapSegmentEditCapability({
             robot: this,
             miot_actions: {
diff --git a/backend/lib/robots/dreame/DreameGen4ValetudoRobot.js b/backend/lib/robots/dreame/DreameGen4ValetudoRobot.js
index 4160764855..5642e1934a 100644
--- a/backend/lib/robots/dreame/DreameGen4ValetudoRobot.js
+++ b/backend/lib/robots/dreame/DreameGen4ValetudoRobot.js
@@ -1,3 +1,4 @@
+const capabilities = require("./capabilities");
 const DreameGen2LidarValetudoRobot = require("./DreameGen2LidarValetudoRobot");
 const DreameGen2ValetudoRobot = require("./DreameGen2ValetudoRobot");
 const DreameMiotHelper = require("./DreameMiotHelper");
@@ -9,6 +10,28 @@ class DreameGen4ValetudoRobot extends DreameGen2LidarValetudoRobot {
     constructor(options) {
         super(options);
 
+        this.registerCapability(new capabilities.DreameMapSegmentationCapability({
+            robot: this,
+            miot_actions: {
+                start: {
+                    siid: DreameGen2ValetudoRobot.MIOT_SERVICES.VACUUM_2.SIID,
+                    aiid: DreameGen2ValetudoRobot.MIOT_SERVICES.VACUUM_2.ACTIONS.START.AIID
+                }
+            },
+            miot_properties: {
+                mode: {
+                    piid: DreameGen2ValetudoRobot.MIOT_SERVICES.VACUUM_2.PROPERTIES.MODE.PIID
+                },
+                additionalCleanupParameters: {
+                    piid: DreameGen2ValetudoRobot.MIOT_SERVICES.VACUUM_2.PROPERTIES.ADDITIONAL_CLEANUP_PROPERTIES.PIID
+                }
+            },
+            segmentCleaningModeId: 18,
+            iterationsSupported: 4,
+            customOrderSupported: true,
+            newCustomOrderStyle: true
+        }));
+
         this.helper = new DreameMiotHelper({robot: this});
     }
 
diff --git a/backend/lib/robots/dreame/DreameL10ProValetudoRobot.js b/backend/lib/robots/dreame/DreameL10ProValetudoRobot.js
index f4ef8b97f4..f7bcd791a8 100644
--- a/backend/lib/robots/dreame/DreameL10ProValetudoRobot.js
+++ b/backend/lib/robots/dreame/DreameL10ProValetudoRobot.js
@@ -22,6 +22,27 @@ class DreameL10ProValetudoRobot extends DreameGen2LidarValetudoRobot {
             robot: this
         });
 
+        this.registerCapability(new capabilities.DreameMapSegmentationCapability({
+            robot: this,
+            miot_actions: {
+                start: {
+                    siid: DreameGen2ValetudoRobot.MIOT_SERVICES.VACUUM_2.SIID,
+                    aiid: DreameGen2ValetudoRobot.MIOT_SERVICES.VACUUM_2.ACTIONS.START.AIID
+                }
+            },
+            miot_properties: {
+                mode: {
+                    piid: DreameGen2ValetudoRobot.MIOT_SERVICES.VACUUM_2.PROPERTIES.MODE.PIID
+                },
+                additionalCleanupParameters: {
+                    piid: DreameGen2ValetudoRobot.MIOT_SERVICES.VACUUM_2.PROPERTIES.ADDITIONAL_CLEANUP_PROPERTIES.PIID
+                }
+            },
+            segmentCleaningModeId: 18,
+            iterationsSupported: 4,
+            customOrderSupported: true
+        }));
+
         this.registerCapability(new capabilities.DreameWaterUsageControlCapability({
             robot: this,
             presets: Object.keys(this.waterGrades).map(k => {
diff --git a/backend/lib/robots/dreame/DreameL10SProValetudoRobot.js b/backend/lib/robots/dreame/DreameL10SProValetudoRobot.js
index bfab70a9a8..9ee5303cc9 100644
--- a/backend/lib/robots/dreame/DreameL10SProValetudoRobot.js
+++ b/backend/lib/robots/dreame/DreameL10SProValetudoRobot.js
@@ -39,6 +39,27 @@ class DreameL10SProValetudoRobot extends DreameGen2LidarValetudoRobot {
             robot: this
         });
 
+        this.registerCapability(new capabilities.DreameMapSegmentationCapability({
+            robot: this,
+            miot_actions: {
+                start: {
+                    siid: DreameGen2ValetudoRobot.MIOT_SERVICES.VACUUM_2.SIID,
+                    aiid: DreameGen2ValetudoRobot.MIOT_SERVICES.VACUUM_2.ACTIONS.START.AIID
+                }
+            },
+            miot_properties: {
+                mode: {
+                    piid: DreameGen2ValetudoRobot.MIOT_SERVICES.VACUUM_2.PROPERTIES.MODE.PIID
+                },
+                additionalCleanupParameters: {
+                    piid: DreameGen2ValetudoRobot.MIOT_SERVICES.VACUUM_2.PROPERTIES.ADDITIONAL_CLEANUP_PROPERTIES.PIID
+                }
+            },
+            segmentCleaningModeId: 18,
+            iterationsSupported: 4,
+            customOrderSupported: true
+        }));
+
         this.registerCapability(new capabilities.DreameWaterUsageControlCapability({
             robot: this,
             presets: Object.keys(this.waterGrades).map(k => {
diff --git a/backend/lib/robots/dreame/DreameL10SUltraValetudoRobot.js b/backend/lib/robots/dreame/DreameL10SUltraValetudoRobot.js
index 6642395a0a..9caebfa8b6 100644
--- a/backend/lib/robots/dreame/DreameL10SUltraValetudoRobot.js
+++ b/backend/lib/robots/dreame/DreameL10SUltraValetudoRobot.js
@@ -39,6 +39,27 @@ class DreameL10SUltraValetudoRobot extends DreameGen2LidarValetudoRobot {
             robot: this
         });
 
+        this.registerCapability(new capabilities.DreameMapSegmentationCapability({
+            robot: this,
+            miot_actions: {
+                start: {
+                    siid: DreameGen2ValetudoRobot.MIOT_SERVICES.VACUUM_2.SIID,
+                    aiid: DreameGen2ValetudoRobot.MIOT_SERVICES.VACUUM_2.ACTIONS.START.AIID
+                }
+            },
+            miot_properties: {
+                mode: {
+                    piid: DreameGen2ValetudoRobot.MIOT_SERVICES.VACUUM_2.PROPERTIES.MODE.PIID
+                },
+                additionalCleanupParameters: {
+                    piid: DreameGen2ValetudoRobot.MIOT_SERVICES.VACUUM_2.PROPERTIES.ADDITIONAL_CLEANUP_PROPERTIES.PIID
+                }
+            },
+            segmentCleaningModeId: 18,
+            iterationsSupported: 4,
+            customOrderSupported: true
+        }));
+
         this.registerCapability(new capabilities.DreameWaterUsageControlCapability({
             robot: this,
             presets: Object.keys(this.waterGrades).map(k => {
diff --git a/backend/lib/robots/dreame/DreameL10UltraValetudoRobot.js b/backend/lib/robots/dreame/DreameL10UltraValetudoRobot.js
index f0bbdb021f..5ebd511440 100644
--- a/backend/lib/robots/dreame/DreameL10UltraValetudoRobot.js
+++ b/backend/lib/robots/dreame/DreameL10UltraValetudoRobot.js
@@ -38,6 +38,27 @@ class DreameL10UltraValetudoRobot extends DreameGen2LidarValetudoRobot {
             robot: this
         });
 
+        this.registerCapability(new capabilities.DreameMapSegmentationCapability({
+            robot: this,
+            miot_actions: {
+                start: {
+                    siid: DreameGen2ValetudoRobot.MIOT_SERVICES.VACUUM_2.SIID,
+                    aiid: DreameGen2ValetudoRobot.MIOT_SERVICES.VACUUM_2.ACTIONS.START.AIID
+                }
+            },
+            miot_properties: {
+                mode: {
+                    piid: DreameGen2ValetudoRobot.MIOT_SERVICES.VACUUM_2.PROPERTIES.MODE.PIID
+                },
+                additionalCleanupParameters: {
+                    piid: DreameGen2ValetudoRobot.MIOT_SERVICES.VACUUM_2.PROPERTIES.ADDITIONAL_CLEANUP_PROPERTIES.PIID
+                }
+            },
+            segmentCleaningModeId: 18,
+            iterationsSupported: 4,
+            customOrderSupported: true
+        }));
+
         this.registerCapability(new capabilities.DreameWaterUsageControlCapability({
             robot: this,
             presets: Object.keys(this.waterGrades).map(k => {
diff --git a/backend/lib/robots/dreame/DreameMopValetudoRobot.js b/backend/lib/robots/dreame/DreameMopValetudoRobot.js
index 2977814bd8..b89c143ae7 100644
--- a/backend/lib/robots/dreame/DreameMopValetudoRobot.js
+++ b/backend/lib/robots/dreame/DreameMopValetudoRobot.js
@@ -17,6 +17,27 @@ class DreameMopValetudoRobot extends DreameGen2ValetudoRobot {
     constructor(options) {
         super(options);
 
+        this.registerCapability(new capabilities.DreameMapSegmentationCapability({
+            robot: this,
+            miot_actions: {
+                start: {
+                    siid: DreameGen2ValetudoRobot.MIOT_SERVICES.VACUUM_2.SIID,
+                    aiid: DreameGen2ValetudoRobot.MIOT_SERVICES.VACUUM_2.ACTIONS.START.AIID
+                }
+            },
+            miot_properties: {
+                mode: {
+                    piid: DreameGen2ValetudoRobot.MIOT_SERVICES.VACUUM_2.PROPERTIES.MODE.PIID
+                },
+                additionalCleanupParameters: {
+                    piid: DreameGen2ValetudoRobot.MIOT_SERVICES.VACUUM_2.PROPERTIES.ADDITIONAL_CLEANUP_PROPERTIES.PIID
+                }
+            },
+            segmentCleaningModeId: 18,
+            iterationsSupported: 4,
+            customOrderSupported: true
+        }));
+
         this.registerCapability(new capabilities.DreameZoneCleaningCapability({
             robot: this,
             miot_actions: {
diff --git a/backend/lib/robots/dreame/DreameP2150ValetudoRobot.js b/backend/lib/robots/dreame/DreameP2150ValetudoRobot.js
index da2ed921dd..21141276b7 100644
--- a/backend/lib/robots/dreame/DreameP2150ValetudoRobot.js
+++ b/backend/lib/robots/dreame/DreameP2150ValetudoRobot.js
@@ -23,6 +23,27 @@ class DreameP2150ValetudoRobot extends DreameGen2LidarValetudoRobot {
             robot: this
         });
 
+        this.registerCapability(new capabilities.DreameMapSegmentationCapability({
+            robot: this,
+            miot_actions: {
+                start: {
+                    siid: DreameGen2ValetudoRobot.MIOT_SERVICES.VACUUM_2.SIID,
+                    aiid: DreameGen2ValetudoRobot.MIOT_SERVICES.VACUUM_2.ACTIONS.START.AIID
+                }
+            },
+            miot_properties: {
+                mode: {
+                    piid: DreameGen2ValetudoRobot.MIOT_SERVICES.VACUUM_2.PROPERTIES.MODE.PIID
+                },
+                additionalCleanupParameters: {
+                    piid: DreameGen2ValetudoRobot.MIOT_SERVICES.VACUUM_2.PROPERTIES.ADDITIONAL_CLEANUP_PROPERTIES.PIID
+                }
+            },
+            segmentCleaningModeId: 18,
+            iterationsSupported: 4,
+            customOrderSupported: true
+        }));
+
         this.registerCapability(new capabilities.DreameWaterUsageControlCapability({
             robot: this,
             presets: Object.keys(this.waterGrades).map(k => {
diff --git a/backend/lib/robots/dreame/DreameS10PlusValetudoRobot.js b/backend/lib/robots/dreame/DreameS10PlusValetudoRobot.js
index f451b268bc..967e210c98 100644
--- a/backend/lib/robots/dreame/DreameS10PlusValetudoRobot.js
+++ b/backend/lib/robots/dreame/DreameS10PlusValetudoRobot.js
@@ -32,6 +32,27 @@ class DreameS10PlusValetudoRobot extends DreameGen2LidarValetudoRobot {
             robot: this
         });
 
+        this.registerCapability(new capabilities.DreameMapSegmentationCapability({
+            robot: this,
+            miot_actions: {
+                start: {
+                    siid: DreameGen2ValetudoRobot.MIOT_SERVICES.VACUUM_2.SIID,
+                    aiid: DreameGen2ValetudoRobot.MIOT_SERVICES.VACUUM_2.ACTIONS.START.AIID
+                }
+            },
+            miot_properties: {
+                mode: {
+                    piid: DreameGen2ValetudoRobot.MIOT_SERVICES.VACUUM_2.PROPERTIES.MODE.PIID
+                },
+                additionalCleanupParameters: {
+                    piid: DreameGen2ValetudoRobot.MIOT_SERVICES.VACUUM_2.PROPERTIES.ADDITIONAL_CLEANUP_PROPERTIES.PIID
+                }
+            },
+            segmentCleaningModeId: 18,
+            iterationsSupported: 4,
+            customOrderSupported: true
+        }));
+
         this.registerCapability(new capabilities.DreameWaterUsageControlCapability({
             robot: this,
             presets: Object.keys(this.waterGrades).map(k => {
diff --git a/backend/lib/robots/dreame/DreameX10PlusValetudoRobot.js b/backend/lib/robots/dreame/DreameX10PlusValetudoRobot.js
index ab46eff805..25cf999913 100644
--- a/backend/lib/robots/dreame/DreameX10PlusValetudoRobot.js
+++ b/backend/lib/robots/dreame/DreameX10PlusValetudoRobot.js
@@ -39,6 +39,27 @@ class DreameX10PlusValetudoRobot extends DreameGen2LidarValetudoRobot {
             robot: this
         });
 
+        this.registerCapability(new capabilities.DreameMapSegmentationCapability({
+            robot: this,
+            miot_actions: {
+                start: {
+                    siid: DreameGen2ValetudoRobot.MIOT_SERVICES.VACUUM_2.SIID,
+                    aiid: DreameGen2ValetudoRobot.MIOT_SERVICES.VACUUM_2.ACTIONS.START.AIID
+                }
+            },
+            miot_properties: {
+                mode: {
+                    piid: DreameGen2ValetudoRobot.MIOT_SERVICES.VACUUM_2.PROPERTIES.MODE.PIID
+                },
+                additionalCleanupParameters: {
+                    piid: DreameGen2ValetudoRobot.MIOT_SERVICES.VACUUM_2.PROPERTIES.ADDITIONAL_CLEANUP_PROPERTIES.PIID
+                }
+            },
+            segmentCleaningModeId: 18,
+            iterationsSupported: 4,
+            customOrderSupported: true
+        }));
+
         this.registerCapability(new capabilities.DreameWaterUsageControlCapability({
             robot: this,
             presets: Object.keys(this.waterGrades).map(k => {
diff --git a/backend/lib/robots/dreame/DreameZ10ProValetudoRobot.js b/backend/lib/robots/dreame/DreameZ10ProValetudoRobot.js
index 418201dddd..9563322a96 100644
--- a/backend/lib/robots/dreame/DreameZ10ProValetudoRobot.js
+++ b/backend/lib/robots/dreame/DreameZ10ProValetudoRobot.js
@@ -23,6 +23,27 @@ class DreameZ10ProValetudoRobot extends DreameGen2LidarValetudoRobot {
             robot: this
         });
 
+        this.registerCapability(new capabilities.DreameMapSegmentationCapability({
+            robot: this,
+            miot_actions: {
+                start: {
+                    siid: DreameGen2ValetudoRobot.MIOT_SERVICES.VACUUM_2.SIID,
+                    aiid: DreameGen2ValetudoRobot.MIOT_SERVICES.VACUUM_2.ACTIONS.START.AIID
+                }
+            },
+            miot_properties: {
+                mode: {
+                    piid: DreameGen2ValetudoRobot.MIOT_SERVICES.VACUUM_2.PROPERTIES.MODE.PIID
+                },
+                additionalCleanupParameters: {
+                    piid: DreameGen2ValetudoRobot.MIOT_SERVICES.VACUUM_2.PROPERTIES.ADDITIONAL_CLEANUP_PROPERTIES.PIID
+                }
+            },
+            segmentCleaningModeId: 18,
+            iterationsSupported: 4,
+            customOrderSupported: true
+        }));
+
         this.registerCapability(new capabilities.DreameWaterUsageControlCapability({
             robot: this,
             presets: Object.keys(this.waterGrades).map(k => {
diff --git a/backend/lib/robots/dreame/capabilities/DreameMapSegmentationCapability.js b/backend/lib/robots/dreame/capabilities/DreameMapSegmentationCapability.js
index 67123fbb00..4475dd632f 100644
--- a/backend/lib/robots/dreame/capabilities/DreameMapSegmentationCapability.js
+++ b/backend/lib/robots/dreame/capabilities/DreameMapSegmentationCapability.js
@@ -26,6 +26,8 @@ class DreameMapSegmentationCapability extends MapSegmentationCapability {
      * @param {number} options.segmentCleaningModeId
      * @param {number} options.iterationsSupported
      * @param {boolean} options.customOrderSupported
+     * 
+     * @param {boolean} [options.newCustomOrderStyle]
      */
     constructor(options) {
         super(options);
@@ -35,7 +37,9 @@ class DreameMapSegmentationCapability extends MapSegmentationCapability {
 
         this.segmentCleaningModeId = options.segmentCleaningModeId;
         this.iterationsSupported = options.iterationsSupported;
-        this.customOrderSupported = options.customOrderSupported;
+        this.customOrderSupported = options.newCustomOrderStyle;
+
+        this.newCustomOrderStyle = !!options.newCustomOrderStyle;
 
         this.helper = new DreameMiotHelper({robot: this.robot});
     }
@@ -65,9 +69,14 @@ class DreameMapSegmentationCapability extends MapSegmentationCapability {
             return [
                 parseInt(segment.id),
                 typeof options?.iterations === "number" ? options.iterations : 1,
+
                 fanSpeed,
                 waterGrade,
-                i + 1 //determines the order in which the segments should be cleaned
+
+                // On older dreames, this counter determined the order in which the segments should be cleaned
+                // On newer dreames (cut-off unknown, but X40 for sure), it's a static 1.
+                // The counter still gets evaluated, though not by newer operating modes. Those just break if it's non-one
+                this.newCustomOrderStyle ? 1 : i + 1
             ];
         });