Index: trunk/grails-app/services/AssignedGroupService.groovy
===================================================================
--- trunk/grails-app/services/AssignedGroupService.groovy	(revision 512)
+++ trunk/grails-app/services/AssignedGroupService.groovy	(revision 514)
@@ -146,5 +146,5 @@
                 return fail(code:"personGroup.not.found")
 
-            result.personsInGroup = result.personGroup.persons.sort { p1, p2 -> p1.firstName.compareToIgnoreCase(p2.firstName) }
+            result.personsInGroup = result.personGroup.persons?.sort { p1, p2 -> p1.firstName.compareToIgnoreCase(p2.firstName) }
 
             result.assignedGroupInstance = new AssignedGroup()
Index: trunk/grails-app/services/AssignedPersonService.groovy
===================================================================
--- trunk/grails-app/services/AssignedPersonService.groovy	(revision 512)
+++ trunk/grails-app/services/AssignedPersonService.groovy	(revision 514)
@@ -146,5 +146,5 @@
                 return fail(code:"person.not.found")
 
-            result.groupsForPerson = result.person.personGroups.sort { p1, p2 -> p1.name.compareToIgnoreCase(p2.name) }
+            result.groupsForPerson = result.person.personGroups?.sort { p1, p2 -> p1.name.compareToIgnoreCase(p2.name) }
 
             result.assignedPersonInstance = new AssignedPerson()
Index: trunk/grails-app/services/TaskService.groovy
===================================================================
--- trunk/grails-app/services/TaskService.groovy	(revision 512)
+++ trunk/grails-app/services/TaskService.groovy	(revision 514)
@@ -254,4 +254,18 @@
             }
 
+            // Handle assignedPersons.
+            def taskAssignedPersons = AssignedPerson.findAllByTask(result.taskInstance)
+            taskAssignedPersons.each() {
+                result.taskInstance.removeFromAssignedPersons(it)
+                it.delete()
+            }
+
+            // Handle assignedGroups.
+            def taskAssignedGroups = AssignedGroup.findAllByTask(result.taskInstance)
+            taskAssignedGroups.each() {
+                result.taskInstance.removeFromAssignedGroups(it)
+                it.delete()
+            }
+
             if(result.error)
                 return result
