Index: applications/editors/josm/plugins/utilsplugin2/src/org/openstreetmap/josm/plugins/utilsplugin2/actions/SplitObjectAction.java
===================================================================
--- applications/editors/josm/plugins/utilsplugin2/src/org/openstreetmap/josm/plugins/utilsplugin2/actions/SplitObjectAction.java	(revision 35841)
+++ applications/editors/josm/plugins/utilsplugin2/src/org/openstreetmap/josm/plugins/utilsplugin2/actions/SplitObjectAction.java	(revision 35842)
@@ -90,5 +90,4 @@
         List<Relation> selectedRelations = new ArrayList<>(ds.getSelectedRelations());
 
-        Relation selectedMultipolygon = null;
         Way selectedWay = null;
         Way splitWay = null;
@@ -119,8 +118,5 @@
 
         if ((selectedRelations.size() == 1) && selectedRelations.get(0).isMultipolygon()) {
-            selectedMultipolygon = selectedRelations.get(0);
-        }
-
-        if (selectedMultipolygon != null) {
+            Relation selectedMultipolygon = selectedRelations.get(0);
             if (splitWay == null) {
                 showWarningNotification(tr("Splitting multipolygons requires a split way to be selected"));
@@ -261,9 +257,15 @@
             SplitWayCommand result = SplitWayCommand.splitWay(
                     selectedWay, wayChunks, Collections.<OsmPrimitive>emptyList());
-            UndoRedoHandler.getInstance().add(result);
-            if (splitWay != null)
-                UndoRedoHandler.getInstance().add(new DeleteCommand(splitWay));
+            if (splitWay != null) {
+                result.executeCommand();
+                DeleteCommand delCmd = new DeleteCommand(splitWay);
+                delCmd.executeCommand();
+                UndoRedoHandler.getInstance().add(new SplitObjectCommand(Arrays.asList(result, delCmd)), false);
+            } else {
+                UndoRedoHandler.getInstance().add(result);
+            }
             getLayerManager().getEditDataSet().setSelected(result.getNewSelection());
         }
+
     }
 
@@ -326,8 +328,8 @@
                 }
             }
-
-            for (Command mpSplitCommand : commands) {
-                UndoRedoHandler.getInstance().add(mpSplitCommand, false);
-            }
+            if (commands.size() > 1)
+                UndoRedoHandler.getInstance().add(new SplitObjectCommand(commands), false);
+            else
+                UndoRedoHandler.getInstance().add(commands.iterator().next(), false);
 
             mpRelation.getDataSet().setSelected(mpRelations);
@@ -501,8 +503,6 @@
                 mpCreationCommands.add(new ChangeMembersCommand(mpRelation, mpMembers));
                 mpCreationCommands.add(new AddCommand(mpRelation.getDataSet(), newMpRelation));
-
-                SequenceCommand sequenceCommand = new SequenceCommand(mpRelation.getDataSet(), "Split Multipolygon", mpCreationCommands, false);
-                sequenceCommand.executeCommand();
-                commands.add(sequenceCommand);
+                mpCreationCommands.forEach(Command::executeCommand);
+                commands.addAll(mpCreationCommands);
 
                 mpRelations.add(newMpRelation);
@@ -595,3 +595,10 @@
         .setIcon(JOptionPane.WARNING_MESSAGE).show();
     }
+
+    private static class SplitObjectCommand extends SequenceCommand {
+        SplitObjectCommand(Collection<Command> sequenz) {
+            super(tr("Split Object"), sequenz, true);
+            setSequenceComplete(true);
+        }
+    }
 }
