diff --git a/README.md b/README.md
index 12d2bbca8019f79b464cf280a7cfb7515fd28da1..b1117729b7ee10352ccc8de0154be20691129f38 100644
--- a/README.md
+++ b/README.md
@@ -148,9 +148,15 @@ Mémo pour développeurs: séquence re-création d'une base:
     flask import-scodoc7-users
     flask import-scodoc7-dept STID SCOSTID
 
+Si la base utilisée pour les dev n'est plus en phase avec les scripts de
+migration, utiliser les commandes `flask db history`et `flask db stamp`pour se
+positionner à la bonne étape.
+
 # Paquet debian 11
 
-Les scripts associés au paquet Debian (.deb) sont dans `tools/debian`.
+Les scripts associés au paquet Debian (.deb) sont dans `tools/debian`. Le plus
+important est `postinst`qui se charge de configurer le système (install ou
+upgrade de scodoc9).
 
 La préparation d'une release se fait à l'aide du script
 `tools/build_release.sh`. 
diff --git a/app/__init__.py b/app/__init__.py
index a913f57ec54c2c1d937e457fcb0d2f11778e8177..33fbd23a510275896afc426e5fe936823263bb53 100644
--- a/app/__init__.py
+++ b/app/__init__.py
@@ -32,7 +32,7 @@ db = SQLAlchemy()
 migrate = Migrate(compare_type=True)
 login = LoginManager()
 login.login_view = "auth.login"
-login.login_message = "Please log in to access this page."
+login.login_message = "Identifiez-vous pour accéder à cette page."
 mail = Mail()
 bootstrap = Bootstrap()
 moment = Moment()
@@ -353,4 +353,4 @@ from app.scodoc import sco_cache
 #     click.echo(
 #         "Warning: user database not initialized !\n (use: flask user-db-init)"
 #     )
-#     admin = None
\ No newline at end of file
+#     admin = None
diff --git a/app/auth/forms.py b/app/auth/forms.py
index e3747817768b8c0739fda1e7e87d029361b82845..143f655461d48591ee5b4f74e04be54be4a646c0 100644
--- a/app/auth/forms.py
+++ b/app/auth/forms.py
@@ -16,20 +16,20 @@ _l = _
 
 
 class LoginForm(FlaskForm):
-    user_name = StringField(_l("Username"), validators=[DataRequired()])
-    password = PasswordField(_l("Password"), validators=[DataRequired()])
-    remember_me = BooleanField(_l("Remember Me"))
-    submit = SubmitField(_l("Sign In"))
+    user_name = StringField(_l("Nom d'utilisateur"), validators=[DataRequired()])
+    password = PasswordField(_l("Mot de passe"), validators=[DataRequired()])
+    remember_me = BooleanField(_l("mémoriser la connexion"))
+    submit = SubmitField(_l("Suivant"))
 
 
 class UserCreationForm(FlaskForm):
-    user_name = StringField(_l("Username"), validators=[DataRequired()])
+    user_name = StringField(_l("Nom d'utilisateur"), validators=[DataRequired()])
     email = StringField(_l("Email"), validators=[DataRequired(), Email()])
-    password = PasswordField(_l("Password"), validators=[DataRequired()])
+    password = PasswordField(_l("Mot de passe"), validators=[DataRequired()])
     password2 = PasswordField(
-        _l("Repeat Password"), validators=[DataRequired(), EqualTo("password")]
+        _l("Répéter"), validators=[DataRequired(), EqualTo("password")]
     )
-    submit = SubmitField(_l("Register"))
+    submit = SubmitField(_l("Inscrire"))
 
     def validate_user_name(self, user_name):
         user = User.query.filter_by(user_name=user_name.data).first()
@@ -48,9 +48,9 @@ class ResetPasswordRequestForm(FlaskForm):
 
 
 class ResetPasswordForm(FlaskForm):
-    password = PasswordField(_l("Password"), validators=[DataRequired()])
+    password = PasswordField(_l("Mot de passe"), validators=[DataRequired()])
     password2 = PasswordField(
-        _l("Repeat Password"), validators=[DataRequired(), EqualTo("password")]
+        _l("Répéter"), validators=[DataRequired(), EqualTo("password")]
     )
     submit = SubmitField(_l("Request Password Reset"))
 
diff --git a/app/auth/routes.py b/app/auth/routes.py
index 7b1712f00bea1933b34bbdddb127380678fe0e1e..b4d107c2aeb2606635f625026232cf53f0d13ab4 100644
--- a/app/auth/routes.py
+++ b/app/auth/routes.py
@@ -38,7 +38,7 @@ def login():
         user = User.query.filter_by(user_name=form.user_name.data).first()
         if user is None or not user.check_password(form.password.data):
             current_app.logger.info("login: invalid (%s)", form.user_name.data)
-            flash(_("Invalid user name or password"))
+            flash(_("Nom ou mot de passe invalide"))
             return redirect(url_for("auth.login"))
         login_user(user, remember=form.remember_me.data)
         current_app.logger.info("login: success (%s)", form.user_name.data)
@@ -95,7 +95,7 @@ def reset_password_request():
             current_app.logger.info(
                 "reset_password_request: for unkown user '{}'".format(form.email.data)
             )
-        flash(_("Check your email for the instructions to reset your password"))
+        flash(_("Voir les instructions enoyez par mail"))
         return redirect(url_for("auth.login"))
     return render_template(
         "auth/reset_password_request.html", title=_("Reset Password"), form=form
diff --git a/app/scodoc/html_sidebar.py b/app/scodoc/html_sidebar.py
index 5ec2ae26b40a69d17e3bdbaa6a5baf28bb79ff0d..dc0b12959f2d96f7eecde045a6e813f999ed5858 100644
--- a/app/scodoc/html_sidebar.py
+++ b/app/scodoc/html_sidebar.py
@@ -152,10 +152,10 @@ def sidebar():
     # Logo
     H.append(
         f"""<div class="logo-insidebar">
-        <div class="sidebar-bottom"><a href="{ url_for( 'scolar.about', scodoc_dept=g.scodoc_dept ) }" class="sidebar">À propos</a><br/>
+        <div class="sidebar-bottom"><a href="{ url_for( 'scodoc.about', scodoc_dept=g.scodoc_dept ) }" class="sidebar">À propos</a><br/>
         <a href="{ scu.SCO_USER_MANUAL }" target="_blank" class="sidebar">Aide</a>
         </div></div>
-        <div class="logo-logo"><a href= { url_for( 'scolar.about', scodoc_dept=g.scodoc_dept ) }
+        <div class="logo-logo"><a href= { url_for( 'scodoc.about', scodoc_dept=g.scodoc_dept ) }
         ">{ scu.icontag("scologo_img", no_size=True) }</a>
         </div>
         </div> 
diff --git a/app/scodoc/sco_users.py b/app/scodoc/sco_users.py
index f7eee67311f4db099423fdf892843e42ad002047..53437cbe728b38ced938f846b5e92181637dca37 100644
--- a/app/scodoc/sco_users.py
+++ b/app/scodoc/sco_users.py
@@ -258,6 +258,7 @@ def user_info(user_name_or_id=None, user=None):
             info = u.to_dict()
         else:
             info = None
+            user_name = "inconnu"
     else:
         info = user.to_dict()
         user_name = user.user_name
diff --git a/app/static/css/scodoc.css b/app/static/css/scodoc.css
index 47019d941b07ccf5ccb87c791148d3e6cf166efa..ef9df0da52b22a11995485a7eba0aee40d44c8ee 100644
--- a/app/static/css/scodoc.css
+++ b/app/static/css/scodoc.css
@@ -2614,7 +2614,8 @@ div.maindiv {
    margin: 1em;
 }
 ul.main {
-   list-style-type: square;
+  list-style-type: square;
+  margin-top: 1em;
 }
 
 ul.main li {
diff --git a/app/templates/about.html b/app/templates/about.html
new file mode 100644
index 0000000000000000000000000000000000000000..2dc506915d7608fbc43f071712975d463df4fe40
--- /dev/null
+++ b/app/templates/about.html
@@ -0,0 +1,25 @@
+{% extends 'base.html' %}
+{% import 'bootstrap/wtf.html' as wtf %}
+
+{% block app_content %}
+
+<h2>Système de gestion scolarité</h2>
+
+<p>&copy; Emmanuel Viennet 2021</p>
+
+<p>Version {{ version }}</p>
+    
+<p>ScoDoc est un logiciel libre écrit en 
+<a href="http://www.python.org" target="_blank" rel="noopener noreferrer">Python</a>.
+Information et documentation sur <a href="https://scodoc.org" target="_blank">scodoc.org</a>.
+</p>
+
+<h2>Dernières évolutions</h2>
+
+{{ news|safe }}
+
+<div class="about-logo">
+    {{ logo|safe }}
+</div>
+
+{% endblock %}
\ No newline at end of file
diff --git a/app/templates/auth/login.html b/app/templates/auth/login.html
index 6b775b738303ea4d244b6272ec38342f86a60313..2685383dbaced353fff3b9ae8043f935005a5ba9 100644
--- a/app/templates/auth/login.html
+++ b/app/templates/auth/login.html
@@ -2,14 +2,19 @@
 {% import 'bootstrap/wtf.html' as wtf %}
 
 {% block app_content %}
-<h1>Sign In</h1>
+<h1>Connexion</h1>
 <div class="row">
     <div class="col-md-4">
         {{ wtf.quick_form(form) }}
     </div>
 </div>
 <br>
-Forgot Your Password?
-<a href="{{ url_for('auth.reset_password_request') }}">Click to Reset It</a>
+En cas d'oubli de votre mot de passe
+<a href="{{ url_for('auth.reset_password_request') }}">cliquez ici pour le réinitialiser</a>.
 </p>
+
+
+<p class="help">L'accès à ScoDoc est strictement réservé aux personnels de
+    l'établissement. Les étudiants n'y ont pas accès. Pour toute information,
+    contactez la personne responsable de votre établissement.</p>
 {% endblock %}
\ No newline at end of file
diff --git a/app/templates/scodoc.html b/app/templates/scodoc.html
index f48ad0f4603db88b6af68d49342ffc0b4789ec18..c0e1edddafe45c27a656406b3dd00cf0d80458ae 100644
--- a/app/templates/scodoc.html
+++ b/app/templates/scodoc.html
@@ -2,7 +2,7 @@
 {% import 'bootstrap/wtf.html' as wtf %}
 
 {% block app_content %}
-<h2>ScoDoc: gestion scolarité (version béta)</h2>
+<h2>ScoDoc 9 - suivi scolarité</h2>
 
 {% if not current_user.is_anonymous %}
 <p>Bonjour <font color="red"><b>{{current_user.get_nomcomplet()}}</b>
@@ -24,10 +24,6 @@
     {% endfor %}
 </ul>
 
-<p>
-    <font color="red">Ceci est une version de test,
-        ne pas utiliser en production !</font>
-</p>
 
 {% if current_user.is_authenticated %}
 <form action="{{url_for('scodoc.table_etud_in_accessible_depts')}}" method="POST">
@@ -43,4 +39,9 @@
     <p><a href="/ScoDoc/static/mobile">Charger la version mobile (expérimentale)</a></p>
 </div> -->
 
+<div style="margin-top: 1cm;">
+    Service réservé aux personnels et enseignants, basé sur <a href="{{url_for('scodoc.about')}}">le logiciel libre
+        ScoDoc.</a>
+</div>
+
 {% endblock %}
\ No newline at end of file
diff --git a/app/views/scodoc.py b/app/views/scodoc.py
index 88aa7a1e7825ad35dfe7eca873f55ffed3d0a11c..1a7e8537ff2ad98391be9212958d6a443227db7b 100644
--- a/app/views/scodoc.py
+++ b/app/views/scodoc.py
@@ -131,6 +131,18 @@ def get_etud_dept():
     return Departement.query.get(last_etud.dept_id).acronym
 
 
+@bp.route("/ScoDoc/about")
+@bp.route("/ScoDoc/Scolarite/<scodoc_dept>/about")
+def about(scodoc_dept=None):
+    "version info"
+    return render_template(
+        "about.html",
+        version=scu.get_scodoc_version(),
+        news=sco_version.SCONEWS,
+        logo=scu.icontag("borgne_img"),
+    )
+
+
 # ---- CONFIGURATION
 
 
diff --git a/app/views/scolar.py b/app/views/scolar.py
index f05b774820389fb70548214f2a613470ad1989b6..6b7d6a4f7ae2f9137afd12f6a5f0ac627504ca88 100644
--- a/app/views/scolar.py
+++ b/app/views/scolar.py
@@ -131,34 +131,6 @@ def sco_publish(route, function, permission, methods=["GET"]):
 # --------------------------------------------------------------------
 
 
-@bp.route("/about")
-@scodoc
-@permission_required(Permission.ScoView)
-@scodoc7func
-def about():
-    "version info"
-    H = [
-        """<h2>Système de gestion scolarité</h2>
-    <p>&copy; Emmanuel Viennet 1997-2021</p>
-    <p>Version %s</p>
-    """
-        % (scu.get_scodoc_version())
-    ]
-    H.append(
-        '<p>Logiciel libre écrit en <a href="http://www.python.org" target="_blank" rel="noopener noreferrer">Python</a>.</p>'
-    )
-    H.append("<h2>Dernières évolutions</h2>" + sco_version.SCONEWS)
-    H.append(
-        '<div class="about-logo">'
-        + scu.icontag("borgne_img")
-        + " <em>Au pays des aveugles...</em></div>"
-    )
-    d = ""
-    return (
-        html_sco_header.sco_header() + "\n".join(H) + d + html_sco_header.sco_footer()
-    )
-
-
 # --------------------------------------------------------------------
 #
 #    PREFERENCES
@@ -311,15 +283,6 @@ def showEtudLog(etudid, format="html", REQUEST=None):
 
 
 # ----------  PAGE ACCUEIL (listes) --------------
-# @bp.route("/")
-@bp.route("/kimo")
-@scodoc
-@permission_required(Permission.ScoView)
-@scodoc7func
-def kimo(REQUEST=None, showcodes=0, showsemtable=0):
-    import time
-
-    return f"{time.time()} := {g.scodoc_dept}"
 
 
 @bp.route("/")
diff --git a/sco_version.py b/sco_version.py
index 412da12c0fdb7060bc472fa6109d69f8f7a4a7f1..23f90d6013cac64f8fdf24bdcc61bb048c871893 100644
--- a/sco_version.py
+++ b/sco_version.py
@@ -1,14 +1,14 @@
 # -*- mode: python -*-
 # -*- coding: utf-8 -*-
 
-SCOVERSION = "9.0.13"
+SCOVERSION = "9.0.14"
 
 SCONAME = "ScoDoc"
 
 SCONEWS = """
 <h4>Année 2021</h4>
 <ul>
-<li>ScoDoc 9: nouvelle architecture logicielle</li>
+<li>ScoDoc 9: nouvelle architecture logicielle (Flask/Python3/Debian 11)</li>
 <li>Version mobile (en test)</li>
 <li>Évaluations de type "deuxième session"</li>
 <li>Gestion du genre neutre (pas d'affichage de la civilité)</li>
diff --git a/tools/import_scodoc7_dept.py b/tools/import_scodoc7_dept.py
index a2fe08ae1c22f113afc893682060d07a10fc57b0..2178e285285288d055ef7b3d527365a3a2aa88fb 100644
--- a/tools/import_scodoc7_dept.py
+++ b/tools/import_scodoc7_dept.py
@@ -380,6 +380,7 @@ def convert_object(
                     "absences",
                     "absences_notifications",
                     "itemsuivi",  # etudid n'était pas une clé
+                    "adresse",  # etudid n'était pas une clé
                 }:
                     # tables avec "fausses" clés
                     # (l'object référencé a pu disparaitre)