diff --git a/lib/hawat/blueprints/groups/__init__.py b/lib/hawat/blueprints/groups/__init__.py
index 9c20e5b188c6430c160c8f3d21a5065f29261311..43887cf24ac73eb0607258e68409df003491f5a8 100644
--- a/lib/hawat/blueprints/groups/__init__.py
+++ b/lib/hawat/blueprints/groups/__init__.py
@@ -571,10 +571,6 @@ class AddMemberView(HTMLMixin, SQLAlchemyMixin,
     @classmethod
     def change_item(cls, **kwargs):
         kwargs['item'].members.append(kwargs['other'])
-        try:
-            kwargs['item'].members_wanted.remove(kwargs['other'])
-        except ValueError:
-            pass
         if kwargs['other'].is_state_disabled():
             kwargs['other'].set_state_enabled()
             flask.current_app.send_infomail(
diff --git a/lib/hawat/blueprints/users/__init__.py b/lib/hawat/blueprints/users/__init__.py
index e3e8fd96a2f573598c9625c2e28ff204006ce6f1..ab2d63b9174e44a8af555d8939b11b0645991f02 100644
--- a/lib/hawat/blueprints/users/__init__.py
+++ b/lib/hawat/blueprints/users/__init__.py
@@ -617,10 +617,6 @@ class AddMembershipView(HTMLMixin, SQLAlchemyMixin,
     @classmethod
     def change_item(cls, **kwargs):
         kwargs['item'].memberships.append(kwargs['other'])
-        try:
-            kwargs['item'].memberships_wanted.remove(kwargs['other'])
-        except ValueError:
-            pass
         if kwargs['item'].is_state_disabled():
             kwargs['item'].set_state_enabled()
             flask.current_app.send_infomail(
diff --git a/lib/mentat/datatype/sqldb.py b/lib/mentat/datatype/sqldb.py
index 182724bd041e424eaa4297f70b1b6c777dbc3b05..6eebde5d42e4025083d21aa346fcc7408fb325f0 100644
--- a/lib/mentat/datatype/sqldb.py
+++ b/lib/mentat/datatype/sqldb.py
@@ -429,6 +429,19 @@ class GroupModel(MODEL):
             'parent':         str(self.parent),
         }
 
+
+@sqlalchemy.event.listens_for(GroupModel.members, 'append')
+def enforce_wanted_memberships_consistency(group, user, initiator):
+    """
+    This event method is triggered if user is added to members of group, and it enforces
+    consistency by removing him from members_wanted (if present).
+    """
+    try:
+        group.members_wanted.remove(user)
+    except ValueError:
+        pass
+
+
 def groupmodel_from_typeddict(structure, defaults = None):
     """
     Convenience method for creating :py:class:`mentat.datatype.sqldb.GroupModel`