diff --git a/app/forms/main/config_logos.py b/app/forms/main/config_logos.py
index 424a2a8a5..b35ac34e1 100644
--- a/app/forms/main/config_logos.py
+++ b/app/forms/main/config_logos.py
@@ -108,6 +108,8 @@ def dept_key_to_id(dept_key):
 def logo_name_validator(message=None):
     def validate_logo_name(form, field):
         name = field.data if field.data else ""
+        if "." in name:
+            raise ValidationError(message)
         if not scu.is_valid_filename(name):
             raise ValidationError(message)
 
diff --git a/app/scodoc/sco_logos.py b/app/scodoc/sco_logos.py
index e6ba73f15..343c4c462 100644
--- a/app/scodoc/sco_logos.py
+++ b/app/scodoc/sco_logos.py
@@ -121,7 +121,8 @@ def _list_dept_logos(dept_id=None, prefix=scu.LOGO_FILE_PREFIX):
     :return: le résultat de la recherche ou None si aucune image trouvée
     """
     allowed_ext = "|".join(scu.LOGOS_IMAGES_ALLOWED_TYPES)
-    filename_parser = re.compile(f"{prefix}([^.]*).({allowed_ext})")
+    # parse filename 'logo_<logoname>.<ext> . be carefull: logoname may include '.'
+    filename_parser = re.compile(f"{prefix}(([^.]*.)+)({allowed_ext})")
     logos = {}
     path_dir = Path(scu.SCODOC_LOGOS_DIR)
     if dept_id:
@@ -135,7 +136,7 @@ def _list_dept_logos(dept_id=None, prefix=scu.LOGO_FILE_PREFIX):
             if os.access(path_dir.joinpath(entry).absolute(), os.R_OK):
                 result = filename_parser.match(entry.name)
                 if result:
-                    logoname = result.group(1)
+                    logoname = result.group(1)[:-1] # retreive logoname from filename (less final dot)
                     logos[logoname] = Logo(logoname=logoname, dept_id=dept_id).select()
     return logos if len(logos.keys()) > 0 else None