diff --git a/apps/logs/signals.py b/apps/logs/signals.py
index 45a0714a0f2dff09bbe780afc7c4485af1edc75c..55e0f041ba11b8c61d7b3f69a593a921d3db725e 100644
--- a/apps/logs/signals.py
+++ b/apps/logs/signals.py
@@ -5,7 +5,7 @@ import inspect
 
 from django.contrib.contenttypes.models import ContentType
 from django.core import serializers
-from django.db.models.signals import pre_save, pre_delete
+from django.db.models.signals import pre_save, post_save, post_delete
 from django.dispatch import receiver
 from .models import Changelog
 
@@ -58,22 +58,32 @@ EXCLUDED = [
         'reversion.version',
     ]
 
+
 @receiver(pre_save)
+def pre_save_object(sender, instance, **kwargs):
+    qs = sender.objects.filter(pk=instance.pk).all()
+    if qs.exists():
+        instance._previous = qs.get()
+    else:
+        instance._previous = None
+
+
+@receiver(post_save)
 def save_object(sender, instance, **kwargs):
     # noinspection PyProtectedMember
     if instance._meta.label_lower in EXCLUDED:
         return
 
-    previous = sender.objects.filter(pk=instance.pk).all()
+    previous = instance._previous
 
     user, ip = get_user_and_ip(sender)
 
-    if user is not None and instance._meta.label_lower == "auth.user" and previous.exists():
+    if user is not None and instance._meta.label_lower == "auth.user" and previous:
         # Don't save last login modifications
-        if instance.last_login != previous.get().last_login:
+        if instance.last_login != previous.last_login:
             return
 
-    previous_json = serializers.serialize('json', previous)[1:-1] if previous.exists() else None
+    previous_json = serializers.serialize('json', [previous, ])[1:-1] if previous else None
     instance_json = serializers.serialize('json', [instance, ])[1:-1]
 
     if previous_json == instance_json:
@@ -86,11 +96,11 @@ def save_object(sender, instance, **kwargs):
                              instance_pk=instance.pk,
                              previous=previous_json,
                              data=instance_json,
-                             action=("edit" if previous.exists() else "create")
+                             action=("edit" if previous else "create")
                              ).save()
 
 
-@receiver(pre_delete)
+@receiver(post_delete)
 def delete_object(sender, instance, **kwargs):
     # noinspection PyProtectedMember
     if instance._meta.label_lower in EXCLUDED:
diff --git a/apps/member/apps.py b/apps/member/apps.py
index 8a6ebe1f3dba5c98bcbaf3c047ae3d5c5140f9ab..83dfbc405c09191d1e5333f55f89c6c7aa36c694 100644
--- a/apps/member/apps.py
+++ b/apps/member/apps.py
@@ -6,7 +6,7 @@ from django.conf import settings
 from django.db.models.signals import post_save
 from django.utils.translation import gettext_lazy as _
 
-from .signals import save_user_note
+from .signals import save_user_profile
 
 
 class MemberConfig(AppConfig):
@@ -18,6 +18,6 @@ class MemberConfig(AppConfig):
         Define app internal signals to interact with other apps
         """
         post_save.connect(
-            save_user_note,
+            save_user_profile,
             sender=settings.AUTH_USER_MODEL,
         )
diff --git a/apps/member/signals.py b/apps/member/signals.py
index 5debce4ba178f33ab74d6533dcac9074bdfa473c..3361f9deb62768af75e54963948289408c7c4071 100644
--- a/apps/member/signals.py
+++ b/apps/member/signals.py
@@ -1,7 +1,7 @@
 # Copyright (C) 2018-2020 by BDE ENS Paris-Saclay
 # SPDX-License-Identifier: GPL-3.0-or-later
 
-def save_user_note(instance, created, raw, **_kwargs):
+def save_user_profile(instance, created, raw, **_kwargs):
     """
     Hook to create and save a profile when an user is updated if it is not registered with the signup form
     """
@@ -11,5 +11,5 @@ def save_user_note(instance, created, raw, **_kwargs):
 
     if created:
         from .models import Profile
-        Profile.objects.get_or_create(user=instance)
+        #Profile.objects.get_or_create(user=instance)
     instance.profile.save()