diff --git a/src/main/java/org/olat/admin/user/delete/service/UserDeletionManager.java b/src/main/java/org/olat/admin/user/delete/service/UserDeletionManager.java
index 1515fcc60e92c2020b3c6031eb724ed8a25ab825..a32947d88555cae9681b8f761dab64bb58831959 100644
--- a/src/main/java/org/olat/admin/user/delete/service/UserDeletionManager.java
+++ b/src/main/java/org/olat/admin/user/delete/service/UserDeletionManager.java
@@ -40,6 +40,7 @@ import org.olat.basesecurity.BaseSecurity;
 import org.olat.basesecurity.BaseSecurityManager;
 import org.olat.basesecurity.IdentityImpl;
 import org.olat.basesecurity.SecurityGroup;
+import org.olat.basesecurity.manager.GroupDAO;
 import org.olat.commons.calendar.CalendarManagerFactory;
 import org.olat.commons.lifecycle.LifeCycleManager;
 import org.olat.core.CoreSpringFactory;
@@ -97,6 +98,7 @@ public class UserDeletionManager extends BasicManager {
 	private DeletionModule deletionModule;
 	private BaseSecurity securityManager;
 	private MailManager mailManager;
+	private GroupDAO groupDao;
 
 	/**
 	 * [used by spring]
@@ -122,6 +124,14 @@ public class UserDeletionManager extends BasicManager {
 	public void setMailManager(MailManager mailManager) {
 		this.mailManager = mailManager;
 	}
+	
+	/**
+	 * [used by Spring]
+	 * @param groupDao
+	 */
+	public void setGroupDao(GroupDAO groupDao) {
+		this.groupDao = groupDao;
+	}
 
 
 	/**
@@ -304,7 +314,9 @@ public class UserDeletionManager extends BasicManager {
 			securityManager.removeIdentityFromSecurityGroup(identity, secGroup);
 			logInfo("Removing user=" + identity + " from security group="  + secGroup.toString());
 		}
-		
+		//remove identity from groups
+		groupDao.removeMemberships(identity);
+
 		// fxdiff: FXOLAT-44 delete emails still in change-workflow
 		RegistrationManager rm = RegistrationManager.getInstance();
 		String key = identity.getUser().getProperty("emchangeKey", null);
diff --git a/src/main/java/org/olat/basesecurity/manager/GroupDAO.java b/src/main/java/org/olat/basesecurity/manager/GroupDAO.java
index ee0ac3729c3cda31e30b4fb01499e5ece4983fdb..3f3e949c6f56fb24c554254f7f29e39df5f68bce 100644
--- a/src/main/java/org/olat/basesecurity/manager/GroupDAO.java
+++ b/src/main/java/org/olat/basesecurity/manager/GroupDAO.java
@@ -46,7 +46,7 @@ import org.springframework.stereotype.Service;
  * @author srosse, stephane.rosse@frentix.com, http://www.frentix.com
  *
  */
-@Service
+@Service("groupDao")
 public class GroupDAO {
 	
 	@Autowired
@@ -134,6 +134,14 @@ public class GroupDAO {
 		return memberships.size();
 	}
 	
+	public int removeMemberships(IdentityRef identity) {
+		String deleteQuery = "delete from bgroupmember as membership where membership.identity.key=:identityKey";
+		
+		return dbInstance.getCurrentEntityManager()
+				.createQuery(deleteQuery).setParameter("identityKey", identity.getKey())
+				.executeUpdate();
+	}
+	
 	public int countMembers(Group group) {
 		Number count = dbInstance.getCurrentEntityManager()
 			.createNamedQuery("countMembersByGroup", Number.class)
diff --git a/src/main/java/org/olat/basesecurity/model/GroupMembershipImpl.java b/src/main/java/org/olat/basesecurity/model/GroupMembershipImpl.java
index 3a01c5665f04dca4be2fb645fcb342dedc82fa07..f2ca3858aabd981b6746d6f0c7d1274c0754b67e 100644
--- a/src/main/java/org/olat/basesecurity/model/GroupMembershipImpl.java
+++ b/src/main/java/org/olat/basesecurity/model/GroupMembershipImpl.java
@@ -150,8 +150,8 @@ public class GroupMembershipImpl implements GroupMembership, ModifiedInfo, Persi
 		if (this == obj) {
 			return true;
 		}
-		if (obj instanceof GroupImpl) {
-			GroupImpl other = (GroupImpl) obj;
+		if (obj instanceof GroupMembershipImpl) {
+			GroupMembershipImpl other = (GroupMembershipImpl)obj;
 			return getKey().equals(other.getKey());
 		}
 		return false;
diff --git a/src/main/java/org/olat/group/ui/main/EditMembershipController.java b/src/main/java/org/olat/group/ui/main/EditMembershipController.java
index 02f110429d6dc650220fc00abce2e109b800e61b..1fba9b5f90d755f4df2285f3b35c0b5cc7099969 100644
--- a/src/main/java/org/olat/group/ui/main/EditMembershipController.java
+++ b/src/main/java/org/olat/group/ui/main/EditMembershipController.java
@@ -202,7 +202,7 @@ public class EditMembershipController extends FormBasicController {
 	
 	private MultipleSelectionElement createSelection(boolean selected, boolean enabled) {
 		String name = "cb" + UUID.randomUUID().toString().replace("-", "");
-		MultipleSelectionElement selection = new MultipleSelectionElementImpl(name, Layout.vertical);
+		MultipleSelectionElement selection = new MultipleSelectionElementImpl(name, Layout.horizontal);
 		selection.setKeysAndValues(keys, values);
 		flc.add(name, selection);
 		selection.select(keys[0], selected);
diff --git a/src/main/java/org/olat/user/_spring/userContext.xml b/src/main/java/org/olat/user/_spring/userContext.xml
index 080e11381879d128ee9326d2848495f3bba37220..7ea69b5502af492fb04768ab26f6286d44afdc5a 100644
--- a/src/main/java/org/olat/user/_spring/userContext.xml
+++ b/src/main/java/org/olat/user/_spring/userContext.xml
@@ -289,6 +289,7 @@
 		<constructor-arg index="0" ref="deletionModule" />
 		<property name="baseSecurityManager" ref="baseSecurityManager" />
 		<property name="mailManager" ref="mailManager"/>
+		<property name="groupDao" ref="groupDao"/>
 		<property name="keepUserLoginAfterDeletion" value="${keepUserLoginAfterDeletion}" />
 		<property name="keepUserEmailAfterDeletion" value="${keepUserEmailAfterDeletion}" />
 	</bean>
diff --git a/src/test/java/org/olat/basesecurity/manager/GroupDAOTest.java b/src/test/java/org/olat/basesecurity/manager/GroupDAOTest.java
index e53470acc27fcc32d857f685bd7569322752aee6..354b705ebdfd3d46af1015f2a4d43a7b314cd6d8 100644
--- a/src/test/java/org/olat/basesecurity/manager/GroupDAOTest.java
+++ b/src/test/java/org/olat/basesecurity/manager/GroupDAOTest.java
@@ -223,7 +223,7 @@ public class GroupDAOTest extends OlatTestCase {
 	}
 	
 	@Test
-	public void removeMemberships() {
+	public void removeMemberships_group() {
 		Identity id1 = JunitTestHelper.createAndPersistIdentityAsRndUser("bgrp-7-");
 		Identity id2 = JunitTestHelper.createAndPersistIdentityAsRndUser("bgrp-8-");
 		Group group = groupDao.createGroup();
@@ -246,6 +246,42 @@ public class GroupDAOTest extends OlatTestCase {
 		Assert.assertTrue(deletedMemberships.isEmpty());
 	}
 	
+	@Test
+	public void removeMemberships_identity() {
+		//
+		Identity id1 = JunitTestHelper.createAndPersistIdentityAsRndUser("bgrp-9-");
+		Identity id2 = JunitTestHelper.createAndPersistIdentityAsRndUser("bgrp-10-");
+		Group group1 = groupDao.createGroup();
+		GroupMembership membership1 = groupDao.addMembership(group1, id1, "pilot");
+		GroupMembership membership2 = groupDao.addMembership(group1, id2, "pilot");
+		Assert.assertNotNull(membership1);
+		Assert.assertNotNull(membership2);
+		dbInstance.commitAndCloseSession();
+		Group group2 = groupDao.createGroup();
+		GroupMembership membership3 = groupDao.addMembership(group2, id1, "passanger");
+		GroupMembership membership4 = groupDao.addMembership(group2, id2, "passanger");
+		Assert.assertNotNull(membership3);
+		Assert.assertNotNull(membership4);
+		dbInstance.commitAndCloseSession();
+
+		//check
+		List<GroupMembership> memberships = groupDao.getMemberships(group1, "pilot");
+		Assert.assertEquals(2, memberships.size());
+		
+		//remove
+		groupDao.removeMemberships(id1);
+		dbInstance.commitAndCloseSession();
+		
+		//check 
+		List<GroupMembership> deletedMemberships1 = groupDao.getMemberships(group1, "pilot");
+		Assert.assertEquals(1, deletedMemberships1.size());
+		Assert.assertEquals(membership2, deletedMemberships1.get(0));
+		
+		List<GroupMembership> deletedMemberships2 = groupDao.getMemberships(group2, "passanger");
+		Assert.assertEquals(1, deletedMemberships2.size());
+		Assert.assertEquals(membership4, deletedMemberships2.get(0));
+	}
+	
 	@Test
 	public void addGrant() {
 		Group group = groupDao.createGroup();