Index: src/org/openstreetmap/josm/plugins/utilsplugin2/actions/SplitObjectAction.java
===================================================================
--- src/org/openstreetmap/josm/plugins/utilsplugin2/actions/SplitObjectAction.java	(revision 35841)
+++ src/org/openstreetmap/josm/plugins/utilsplugin2/actions/SplitObjectAction.java	(working copy)
@@ -89,7 +89,6 @@
         List<Way> selectedWays = new ArrayList<>(ds.getSelectedWays());
         List<Relation> selectedRelations = new ArrayList<>(ds.getSelectedRelations());
 
-        Relation selectedMultipolygon = null;
         Way selectedWay = null;
         Way splitWay = null;
 
@@ -118,10 +117,7 @@
         }
 
         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"));
                 return;
@@ -260,11 +256,17 @@
             }
             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());
         }
+
     }
 
     /**
@@ -325,11 +327,11 @@
                     }
                 }
             }
+            if (commands.size() > 1)
+                UndoRedoHandler.getInstance().add(new SplitObjectCommand(commands), false);
+            else
+                UndoRedoHandler.getInstance().add(commands.iterator().next(), false);
 
-            for (Command mpSplitCommand : commands) {
-                UndoRedoHandler.getInstance().add(mpSplitCommand, false);
-            }
-
             mpRelation.getDataSet().setSelected(mpRelations);
             return splitResult;
 
@@ -500,11 +502,9 @@
                 List<Command> mpCreationCommands = new ArrayList<>();
                 mpCreationCommands.add(new ChangeMembersCommand(mpRelation, mpMembers));
                 mpCreationCommands.add(new AddCommand(mpRelation.getDataSet(), newMpRelation));
+                mpCreationCommands.forEach(Command::executeCommand);
+                commands.addAll(mpCreationCommands);
 
-                SequenceCommand sequenceCommand = new SequenceCommand(mpRelation.getDataSet(), "Split Multipolygon", mpCreationCommands, false);
-                sequenceCommand.executeCommand();
-                commands.add(sequenceCommand);
-
                 mpRelations.add(newMpRelation);
             }
         }
@@ -594,4 +594,11 @@
         new Notification(msg)
         .setIcon(JOptionPane.WARNING_MESSAGE).show();
     }
+
+    private static class SplitObjectCommand extends SequenceCommand {
+        SplitObjectCommand(Collection<Command> sequenz) {
+            super(tr("Split Object"), sequenz, true);
+            setSequenceComplete(true);
+        }
+    }
 }
