diff --git a/NEWS.rst b/NEWS.rst
index 0c5427adec0e505090a49c77ab7622a40611f6cf_TkVXUy5yc3Q=..fc105f03c4c0d67d77f68353b0b52a0a8f924625_TkVXUy5yc3Q= 100644
--- a/NEWS.rst
+++ b/NEWS.rst
@@ -15,6 +15,8 @@
 
 Default to pdb with pdb++ instead of ipdb. New option ``--ipdb`` to run ipdb instead if wanted.
 
+docker_dev_start: add argument to run SQL script after eventual restauration but before starting the server.
+
 4.0
 ---
 
diff --git a/odoo_scripts/docker_dev_start.py b/odoo_scripts/docker_dev_start.py
index 0c5427adec0e505090a49c77ab7622a40611f6cf_b2Rvb19zY3JpcHRzL2RvY2tlcl9kZXZfc3RhcnQucHk=..fc105f03c4c0d67d77f68353b0b52a0a8f924625_b2Rvb19zY3JpcHRzL2RvY2tlcl9kZXZfc3RhcnQucHk= 100755
--- a/odoo_scripts/docker_dev_start.py
+++ b/odoo_scripts/docker_dev_start.py
@@ -355,6 +355,12 @@
         help="Odoo sources to use, if any [default: %(default)s]",
         default=None,
     )
+    parser.add_argument(
+        "--pre-sql-script",
+        help="SQL script to run on database [default: %(default)s]",
+        default=None,
+        dest="PRE_SQL",
+    )
 
     # TODO detect that user is member of docker group
 
@@ -385,6 +391,7 @@
     load_language = ""
     installing_or_updating = False
     odoo_sources = nmspc.odoo_sources
+    pre_sql_script = nmspc.PRE_SQL
 
     if restore_filename:
         if not database:
@@ -769,6 +776,64 @@
         if not restore:
             return 15
 
+    # --- Pre SQL script ---
+    if pre_sql_script:
+        if start_postgresql:
+            pre_sql_script_basename = os.path.basename(pre_sql_script)
+            _logger.info(
+                "Copying SQL script %s in docker", pre_sql_script_basename
+            )
+            call(
+                [
+                    "docker",
+                    "cp",
+                    pre_sql_script,
+                    "{}:/tmp/{}".format(name, pre_sql_script_basename),
+                ]
+            )
+            _logger.info(
+                "Running SQL script %s in %s",
+                pre_sql_script_basename,
+                database,
+            )
+            script = call(
+                [
+                    "docker",
+                    "exec",
+                    name,
+                    "psql",
+                    "-U",
+                    user,
+                    "-d",
+                    database,
+                    "-f",
+                    "/tmp/{}".format(pre_sql_script_basename),
+                ]
+            )
+            if script > 0:
+                _logger.fatal("Error when running script (%s)", script)
+                return 16
+            _logger.info("Removing SQL script %s in docker")
+            call(
+                [
+                    "docker",
+                    "exec",
+                    name,
+                    "rm",
+                    "/tmp/{}".format(pre_sql_script_basename),
+                ]
+            )
+        else:
+            _logger.info(
+                "Running SQL script %s in %s", pre_sql_script, database
+            )
+            script = call(
+                ["psql", "-U", user, "-d", database, "-f", pre_sql_script]
+            )
+            if script > 0:
+                _logger.fatal("Error when running script (%s)", script)
+                return 16
+
     # volume magic
     target_module_directory = "/mnt/addons"
     for module in modules: