diff --git a/tools/fakeportal/etud_minimal_template.xml b/tools/fakeportal/etud_minimal_template.xml
index 2c969615bb3b7c536a9b00bf6dedd8e292b1b7ea..a8d0fc38e447d2097aacd4f7f0641c34168095ad 100644
--- a/tools/fakeportal/etud_minimal_template.xml
+++ b/tools/fakeportal/etud_minimal_template.xml
@@ -1,5 +1,6 @@
 <etudiant>
 	<nip>{nip}</nip>
+	<ine>{ine}</ine>
 	<etape>{etape}</etape>
 	<gender>{gender}</gender>
 	<nom>{nom}</nom>
diff --git a/tools/fakeportal/etud_template.xml b/tools/fakeportal/etud_template.xml
index c6243be77b63dc5f5e976e2169280eb6f82fbd77..fd15ad84da8a34c532113306f9009c403c6213f7 100644
--- a/tools/fakeportal/etud_template.xml
+++ b/tools/fakeportal/etud_template.xml
@@ -1,5 +1,6 @@
 <etudiant>
 	<nip>{nip}</nip>
+	<ine>{ine}</ine>
 	<etape>{etape}</etape>
 	<versionetape>{etape}/117</versionetape>
 	<versiondiplome>{diplome}/117</versiondiplome>
diff --git a/tools/fakeportal/fakeportal.py b/tools/fakeportal/fakeportal.py
index 7e9abe7e2c3959206e3a9a85c266b3ca19deb959..33b81f65af7ed3b8ea92042a4dec026bb03831fb 100755
--- a/tools/fakeportal/fakeportal.py
+++ b/tools/fakeportal/fakeportal.py
@@ -44,9 +44,11 @@ else:
     }
 
 # Etudiant avec tous les champs (USPN)
-ETUD_TEMPLATE_FULL = open(script_dir / "etud_template.xml").read()
+ETUD_TEMPLATE_FULL = open(script_dir / "etud_template.xml", encoding="UTF-8").read()
 # Etudiant avec seulement les champs requis
-ETUD_TEMPLATE_MINI = open(script_dir / "etud_minimal_template.xml").read()
+ETUD_TEMPLATE_MINI = open(
+    script_dir / "etud_minimal_template.xml", encoding="UTF-8"
+).read()
 
 ETUD_HEAD = """<?xml version="1.0" encoding="UTF-8"?>
 <etudiants>"""
@@ -68,6 +70,7 @@ def make_random_etud(nip, etape=None, annee=None, template=ETUD_TEMPLATE_FULL):
     diplome = "VDRT"
     data = template.format(
         nip=nip,
+        ine=str(random.randint(1000000000, 9999999999)) + "Z",
         gender=gender,
         nom=nom,
         prenom=prenom,