Index: /trunk/src/VBox/ValidationKit/testmanager/core/testbox.py
===================================================================
--- /trunk/src/VBox/ValidationKit/testmanager/core/testbox.py	(revision 61591)
+++ /trunk/src/VBox/ValidationKit/testmanager/core/testbox.py	(revision 61592)
@@ -826,4 +826,6 @@
         """
         Data edit update, web UI is the primary user.
+
+        oData is either TestBoxDataEx or TestBoxData.
         Returns the new generation ID and effective date.
         """
@@ -862,32 +864,35 @@
             tsEffective  = oOldData.tsEffective;
 
-        # Calc in-group changes.
-        aoRemoved = list(oOldData.aoInSchedGroups);
-        aoNew     = [];
-        aoUpdated = [];
-        for oNewInGroup in oData.aoInSchedGroups:
-            oOldInGroup = None;
-            for iCur, oCur in enumerate(aoRemoved):
-                if oCur.idSchedGroup == oNewInGroup.idSchedGroup:
-                    oOldInGroup = aoRemoved.pop(iCur);
-                    break;
-            if oOldInGroup is None:
-                aoNew.append(oNewInGroup);
-            elif oNewInGroup.iSchedPriority != oOldInGroup.iSchedPriority:
-                aoUpdated.append(oNewInGroup);
-
-        # Remove in-groups.
-        for oInGroup in aoRemoved:
-            self._oDb.callProc('TestBoxLogic_removeGroupEntry', (uidAuthor, oData.idTestBox, oInGroup.idSchedGroup, ));
-
-        # Add new ones.
-        for oInGroup in aoNew:
-            self._oDb.callProc('TestBoxLogic_addGroupEntry',
-                               ( uidAuthor, oData.idTestBox, oInGroup.idSchedGroup, oInGroup.iSchedPriority, ) );
-
-        # Edit existing ones.
-        for oInGroup in aoUpdated:
-            self._oDb.callProc('TestBoxLogic_editGroupEntry',
-                               ( uidAuthor, oData.idTestBox, oInGroup.idSchedGroup, oInGroup.iSchedPriority, ) );
+        if isinstance(oData, TestBoxDataEx):
+            # Calc in-group changes.
+            aoRemoved = list(oOldData.aoInSchedGroups);
+            aoNew     = [];
+            aoUpdated = [];
+            for oNewInGroup in oData.aoInSchedGroups:
+                oOldInGroup = None;
+                for iCur, oCur in enumerate(aoRemoved):
+                    if oCur.idSchedGroup == oNewInGroup.idSchedGroup:
+                        oOldInGroup = aoRemoved.pop(iCur);
+                        break;
+                if oOldInGroup is None:
+                    aoNew.append(oNewInGroup);
+                elif oNewInGroup.iSchedPriority != oOldInGroup.iSchedPriority:
+                    aoUpdated.append(oNewInGroup);
+
+            # Remove in-groups.
+            for oInGroup in aoRemoved:
+                self._oDb.callProc('TestBoxLogic_removeGroupEntry', (uidAuthor, oData.idTestBox, oInGroup.idSchedGroup, ));
+
+            # Add new ones.
+            for oInGroup in aoNew:
+                self._oDb.callProc('TestBoxLogic_addGroupEntry',
+                                   ( uidAuthor, oData.idTestBox, oInGroup.idSchedGroup, oInGroup.iSchedPriority, ) );
+
+            # Edit existing ones.
+            for oInGroup in aoUpdated:
+                self._oDb.callProc('TestBoxLogic_editGroupEntry',
+                                   ( uidAuthor, oData.idTestBox, oInGroup.idSchedGroup, oInGroup.iSchedPriority, ) );
+        else:
+            assert isinstance(oData, TestBoxData);
 
         self._oDb.maybeCommit(fCommit);
Index: /trunk/src/VBox/ValidationKit/testmanager/webui/wuiadmin.py
===================================================================
--- /trunk/src/VBox/ValidationKit/testmanager/webui/wuiadmin.py	(revision 61591)
+++ /trunk/src/VBox/ValidationKit/testmanager/webui/wuiadmin.py	(revision 61592)
@@ -506,14 +506,8 @@
                         oTestBox.fEnabled = fEnable;
                         oLogic.editEntry(oTestBox, self._oCurUser.uid, fCommit = False);
-            elif sListAction == 'setgroup':
-                for oTestBox in aoTestBoxes:
-                    if oTestBox.idSchedGroup != idAction:
-                        oTestBox.idSchedGroup = idAction;
-                        oLogic.editEntry(oTestBox, self._oCurUser.uid, fCommit = False);
             else:
                 for oTestBox in aoTestBoxes:
                     if oTestBox.enmPendingCmd != sListAction:
-                        oTestBox.enmPendingCmd = sListAction;
-                        oLogic.editEntry(oTestBox, self._oCurUser.uid, fCommit = False);
+                        oLogic.setCommand(idTestBox, oTestBox.enmPendingCmd, sListAction, self._oCurUser.uid, fCommit = False);
             self._oDb.commit();
 
Index: /trunk/src/VBox/ValidationKit/testmanager/webui/wuiadmintestbox.py
===================================================================
--- /trunk/src/VBox/ValidationKit/testmanager/webui/wuiadmintestbox.py	(revision 61591)
+++ /trunk/src/VBox/ValidationKit/testmanager/webui/wuiadmintestbox.py	(revision 61592)
@@ -190,11 +190,4 @@
                                        'align="center"' ]);
         self._aoActions     = list(self.kasTestBoxActionDescs);
-        self._aoSchedGroups = SchedGroupLogic(self._oDisp.getDb()).fetchOrderedByName();
-        self._dSchedGroups  = dict();
-        for oSchedGroup in self._aoSchedGroups:
-            self._aoActions.append([ 'setgroup-%u' % (oSchedGroup.idSchedGroup,),
-                                     'Migrate to group %s (#%u)' % (oSchedGroup.sName, oSchedGroup.idSchedGroup,),
-                                     oSchedGroup.sDescription ]);
-            self._dSchedGroups[oSchedGroup.idSchedGroup] = oSchedGroup;
         self._sAction       = oDisp.ksActionTestBoxListPost;
         self._sCheckboxName = TestBoxData.ksParam_idTestBox;
