diff --git a/README.md b/README.md
index dcbb0902614b2c8e63cd8fa93f25562d0730beab..a8d7e912637125b61ae23688de1071205d421f3e 100644
--- a/README.md
+++ b/README.md
@@ -30,14 +30,14 @@ Crée un groupe au sens gitlab du terme, nommé `group_name`, avec la visibilit
 
 ### create_repo_for_students.py
 ```bash
-python3 create_repo_for_students.py <token> <import_url> <group_id> <project_name> <student1,student2,...,studentN> <expires_at>
+python3 create_repo_for_students.py <token> <import_url> <group_id> <project_name> <student-mail1,student-mail2,...,student-mailN> <expires_at>
 ```
-Crée un dépôt git (projet) au sein d'un groupe à partir de l'URL d'un projet existant pour une liste d'étudiants. Détail des arguments :
+Crée un dépôt git (projet) au sein d'un groupe à partir de l'URL d'un projet existant pour une liste d'emails d'étudiants. Détail des arguments :
 - `token` : le token gitlab.
 - `import_url` : l'URL (http) du projet (repository) existant. Ce projet doit être public.
 - `group_id` : l'identifiant du groupe dédié au cours/TP, créé précédemment (avec `create_group.py` par exemple).
 - `project_name` : le nom du nouveau repository à créer pour le ou les étudiants concernés.
-- `student1,student2,...,studentN` : une liste de login gitlab des étudiants. Les login sont séparés par une virgule. Peut contenir un seul login.
+- `student-mail1,student-mail2,...,student-mailN` : une liste d'emails des étudiants. Les emails sont séparés par une virgule. Peut contenir un seul email.
 - `expires_at`: optionnel, au format `AAAA-MM-DD`, supprime les étudiants ajoutés à la date donnée.
 
 ### clone_all_repos_in_group.py
@@ -58,6 +58,6 @@ Clone tous les forks d'un projet `project_id` donné dans un répertoire nommé
 ```
 Un script bash est également disponible, `create_group_and_repos.sh` qui permet de "batcher" les opérations de création de groupe et de repositories à partir d'un fichier texte `repos_students` formaté ainsi :
 ```
-repository1;user1,user2
-repository2;user3,user4
+repository1;email1,email2
+repository2;email3,email4
 ```
diff --git a/create_group_and_repos.sh b/create_group_and_repos.sh
index 9556f55c58a922638c8281ec592f6c793a5b5bb3..15bc4bba545c305440b397492b461b79370ab27c 100755
--- a/create_group_and_repos.sh
+++ b/create_group_and_repos.sh
@@ -17,6 +17,6 @@ printf "$group\n\n"
 for line in $(cat $repos_students); do
     project_name=$(echo $line | cut -d';' -f1)
     students=$(echo $line | cut -d';' -f2)
-    new_repo=$(scripts/create_repo_for_students.py $token $import_url $group_id $project_name $students)
+    new_repo=$(scripts/create_repo_for_students.py $token $import_url $group_id "$project_name" $students)
     printf "$new_repo\n\n"
 done
diff --git a/scripts/create_repo_for_students.py b/scripts/create_repo_for_students.py
index 3d3f008b9f6ac5b0c716db471293c84baede9a0b..8909d4944bac799e3b54288bb45babc2127a86b7 100755
--- a/scripts/create_repo_for_students.py
+++ b/scripts/create_repo_for_students.py
@@ -6,24 +6,25 @@ import requests
 import subprocess
 
 if len(sys.argv) < 6:
-    print('Usage: ' + sys.argv[0] + ' <token> <import_url> <group_id> <project_name> <student1,student2,...,studentN> <expires_at>')
+    print('Usage: ' + sys.argv[0] + ' <token> <import_url> <group_id> <project_name> <student-mail1,student-mail2,...,student-mailN> <expires_at>')
     exit(1)
 
 token = sys.argv[1]
 import_url = sys.argv[2]
 group_id = sys.argv[3]
-project_name = sys.argv[4]
+# split '@' in the case when project name = student's email
+project_name = sys.argv[4].split('@')[0]
 
 base_url = 'https://gitedu.hesge.ch/api/v4'
 headers = {'PRIVATE-TOKEN': token}
 
-# Get students ids from their usernames
-users_names = sys.argv[5].split(',')
+# Get students ids from their emails
+users_emails = sys.argv[5].split(',')
 user_ids = []
-for username in users_names:
-    user_requested = requests.get(base_url + '/users', params={'username': username}, headers=headers).json()
+for email in users_emails:
+    user_requested = requests.get(base_url + '/users', params={'search': email}, headers=headers).json()
     if len(user_requested) == 0:
-        print('No user %s found, operation aborted' % username)
+        print('No user %s found, operation aborted' % email)
         exit(1)
     user_id = user_requested[0]['id']
     user_ids.append(user_id)
@@ -53,9 +54,10 @@ for user_id in user_ids:
     if 'message' in new_user:
         print('Error in adding user: %s' % new_user)
     else:
-        print(
-            "Adding '" + new_user['name'] + "' (" + new_user['username'] + ") in '"
-            + project['name'] + "' with access level: " + str(new_user['access_level'])
-            + ", expires at: " + new_user['expires_at'])
+        out = ("Adding '" + new_user['name'] + "' (" + new_user['username'] + ") in '"
+            + project['name'] + "' with access level: " + str(new_user['access_level']))
+        if len(sys.argv) > 6:
+            out += ", expires at: " + new_user['expires_at']
+        print(out)
 
 # Do not forget : students have to add second remote in their local repositories for pulling last changes.