diff --git a/management/commands/import_account.py b/management/commands/import_account.py
index 0e3524703f7a0f0ad66bac1d6ab73b37f51312c9..4de1de886c0935ed550c245db44e153031066acc 100644
--- a/management/commands/import_account.py
+++ b/management/commands/import_account.py
@@ -6,6 +6,7 @@ import psycopg2.extras as pge
 import datetime
 import json
 
+from django.template.loader import render_to_string
 from django.utils.timezone import make_aware, now
 from django.contrib.auth.models import User
 from django.contrib.contenttypes.models import ContentType
@@ -33,6 +34,11 @@ MAP_IDBDE = {
 # some Aliases have been created in the fixtures
 ALIAS_SET = {a[0] for a in Alias.objects.all().values_list("normalized_name")}
 
+# Some people might loose some aliases due to normalization. We warn them on them.
+LOST_ALIASES = {}
+# In some rare cases, the username might be in conflict with some others. We change them and warn the users.
+CHANGED_USERNAMES = []
+
 note_user_type = ContentType.objects.get(app_label="note", model="noteuser")
 note_club_type = ContentType.objects.get(app_label="note", model="noteclub")
 
@@ -85,9 +91,10 @@ class Command(ImportCommand):
             pseudo = row["pseudo"]
             pseudo_norm = Alias.normalize(pseudo)
             self.update_line(idx, n, pseudo)
-            # clean pseudo (normalized pseudo must be unique)
-            if pseudo_norm in ALIAS_SET:
+            # clean pseudo (normalized pseudo must be unique and not empty)
+            if not pseudo_norm or pseudo_norm in ALIAS_SET:
                 pseudo = pseudo + str(row["idbde"])
+                CHANGED_USERNAMES.append((pk_note, row[pseudo], pseudo))
             else:
                 ALIAS_SET.add(pseudo_norm)
             # clean date
@@ -206,7 +213,9 @@ class Command(ImportCommand):
             alias_norm = Alias.normalize(alias_name)
             self.update_line(idx, n, alias_norm)
             # clean pseudo (normalized pseudo must be unique)
-            if alias_norm in ALIAS_SET:
+            if not alias_norm or alias_norm in ALIAS_SET:
+                LOST_ALIASES.setdefault(MAP_IDBDE[row["idbde"]], [])
+                LOST_ALIASES[MAP_IDBDE[row["idbde"]]].append(alias_name)
                 continue
             else:
                 ALIAS_SET.add(alias_norm)
@@ -237,3 +246,20 @@ class Command(ImportCommand):
             filename = kwargs["save"]
             with open(filename, 'w') as fp:
                 json.dump(MAP_IDBDE, fp, sort_keys=True, indent=2)
+
+            for pk_user, old_username, new_username in CHANGED_USERNAMES:
+                user = User.objects.get(pk_user)
+                mail_text = render_to_string("scripts/unsupported_username.txt", dict(
+                    user=user,
+                    old_username=old_username,
+                    new_username=new_username,
+                ))
+                user.email_user("Transition à la Note Kfet 2020 : pseudo non supporté", mail_text)
+
+            for pk_user, aliases_list in CHANGED_USERNAMES:
+                user = User.objects.get(pk_user)
+                mail_text = render_to_string("scripts/deleted_aliases.txt", dict(
+                    user=user,
+                    aliases_list=aliases_list,
+                ))
+                user.email_user("Transition à la Note Kfet 2020 : suppression d'alias", mail_text)
diff --git a/templates/scripts/deleted_aliases.txt b/templates/scripts/deleted_aliases.txt
new file mode 100644
index 0000000000000000000000000000000000000000..ddbbcf0b87fa76f5e310ba34360ec0a4c6a43db9
--- /dev/null
+++ b/templates/scripts/deleted_aliases.txt
@@ -0,0 +1,27 @@
+Bonjour {{ user.first_name }} {{ user.last_name }},
+
+Ce message vous est envoyé automatiquement par la Note Kfet du BDE de
+l'ENS Cachan, à laquelle vous êtes inscrit·e. Si vous n'êtes plus
+adhérent·e, vous n'êtes pas nécessairement concerné·e par la suite
+de ce message.
+
+La Note Kfet 2020 vient d'être déployée, succédant à la Note Kfet 2015.
+Les données ont été migrées.
+
+Toutefois, la nouvelle note utilise un algorithme de normalisation des alias
+permettant de rechercher plus facilement un nom de note, et empêchant la
+création d'un alias trop proche d'un autre.
+
+Nous vous informons que les alias suivants ont été supprimés de votre compte,
+jugés trop proches d'autres alias déjà existants :
+
+{{ aliases_list|join:", " }}
+
+Nous nous excusons pour le désagrément, et espérons que vous pourrez
+profiter de la nouvelle Note Kfet.
+
+Cordialement,
+
+--
+Le BDE
+
diff --git a/templates/scripts/unsupported_username.txt b/templates/scripts/unsupported_username.txt
new file mode 100644
index 0000000000000000000000000000000000000000..692aa6b0a86604e87a940af4307bc29881a0e09d
--- /dev/null
+++ b/templates/scripts/unsupported_username.txt
@@ -0,0 +1,27 @@
+Bonjour {{ user.first_name }} {{ user.last_name }},
+
+Ce message vous est envoyé automatiquement par la Note Kfet du BDE de
+l'ENS Cachan, à laquelle vous êtes inscrit·e. Si vous n'êtes plus
+adhérent·e, vous n'êtes pas nécessairement concerné·e par la suite
+de ce message.
+
+La Note Kfet 2020 vient d'être déployée, succédant à la Note Kfet 2015.
+Les données ont été migrées.
+
+Toutefois, la nouvelle note utilise un algorithme de normalisation des alias
+permettant de rechercher plus facilement un nom de note, et empêchant la
+création d'un alias trop proche d'un autre.
+
+Nous vous informons que votre pseudo {{ old_username }} fait pas partie des
+alias problématiques. Il a été remplacé par le pseudo {{ new_username }},
+que vous devrez utiliser pour pouvoir vous connecter. Il sera ensuite
+possible de modifier votre pseudo.
+
+Nous nous excusons pour le désagrément, et espérons que vous pourrez
+profiter de la nouvelle Note Kfet.
+
+Cordialement,
+
+--
+Le BDE
+