diff --git a/app/apis/v0/projects.py b/app/apis/v0/projects.py
index 0f9c06f895a79889cd3fc7296738af708bd16388..18c7e40c40e1a44dfbd34e4e1b58efad297c25bf 100644
--- a/app/apis/v0/projects.py
+++ b/app/apis/v0/projects.py
@@ -8,7 +8,7 @@ from sqlalchemy.exc import DBAPIError
 from sqlalchemy.future import select
 from sqlalchemy.orm import Session
 
-from ...db import DBProject, DBProjectServer
+from ...db.dbadmin import DBProject, DBProjectServer
 from ...helpers import fix_sqlalchemy2_stubs_non_nullable_column
 from ...schemas import Project
 from ..depends import get_session, get_session_as_you_go
diff --git a/app/apis/v0/users.py b/app/apis/v0/users.py
index 699e5d6641f3566ac74e3640afd46224a07595ae..47565fcd1e205aea5146c12c18a9bf74a703a29e 100644
--- a/app/apis/v0/users.py
+++ b/app/apis/v0/users.py
@@ -4,7 +4,7 @@ import logging
 from fastapi import APIRouter, Depends
 from sqlalchemy.orm import Session
 
-from ...db import DBUser
+from ...db.dbadmin import DBUser
 from ...schemas import User
 from ..depends import get_session
 
diff --git a/app/db/__init__.py b/app/db/__init__.py
index ea5ed65a3c330490c485a8cde0c6edbae6679105..7a905a05b46e038bcc68ded9131567d7a3e5c702 100644
--- a/app/db/__init__.py
+++ b/app/db/__init__.py
@@ -1,11 +1,9 @@
-"""The ESAP-DB module handling the admin database."""
-from .access import AdminSession, project_engines
-from .models import DBProject, DBProjectServer, DBUser
+"""Accessors to the admin or project databases."""
+
+from .dbadmin import AdminSession
+from .dbprojects.engines import project_engines
 
 __all__ = (
     'AdminSession',
-    'DBProject',
-    'DBProjectServer',
-    'DBUser',
     'project_engines',
 )
diff --git a/app/db/dbadmin/__init__.py b/app/db/dbadmin/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..03790d34cedebe807574ff697ede4e0665a99657
--- /dev/null
+++ b/app/db/dbadmin/__init__.py
@@ -0,0 +1,10 @@
+"""The ESAP-DB module handling the admin database."""
+from .models import DBProject, DBProjectServer, DBUser
+from .sessions import AdminSession
+
+__all__ = (
+    'AdminSession',
+    'DBProject',
+    'DBProjectServer',
+    'DBUser',
+)
diff --git a/app/db/models.py b/app/db/dbadmin/models.py
similarity index 100%
rename from app/db/models.py
rename to app/db/dbadmin/models.py
diff --git a/app/db/dbadmin/sessions.py b/app/db/dbadmin/sessions.py
new file mode 100644
index 0000000000000000000000000000000000000000..539239d95413ad34c29f38f54092396ed8ef59b2
--- /dev/null
+++ b/app/db/dbadmin/sessions.py
@@ -0,0 +1,13 @@
+"""This module provides factories to access the admin and project databases.
+
+An instance of this class can be used to connect the admin or a project database.
+"""
+from sqlalchemy import create_engine
+from sqlalchemy.orm import sessionmaker
+
+from ...config import settings
+
+assert settings.SQLALCHEMY_DBADMIN_URI is not None
+
+engine = create_engine(settings.SQLALCHEMY_DBADMIN_URI, pool_pre_ping=True, future=True)
+AdminSession = sessionmaker(autocommit=False, autoflush=False, bind=engine, future=True)
diff --git a/app/db/dbprojects/__init__.py b/app/db/dbprojects/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..9f541560e83a422ddd004ef20a38fa173c76debe
--- /dev/null
+++ b/app/db/dbprojects/__init__.py
@@ -0,0 +1 @@
+"""The ESAP-DB module handling the project databases."""
diff --git a/app/db/access.py b/app/db/dbprojects/engines.py
similarity index 76%
rename from app/db/access.py
rename to app/db/dbprojects/engines.py
index a0a6365d2f86e9b713405957f37637ac3b18464e..ab12e2a13b64019538a9a87bf424c3f4dbcb0476 100644
--- a/app/db/access.py
+++ b/app/db/dbprojects/engines.py
@@ -1,7 +1,4 @@
-"""This module provides factories to access the admin and project databases.
-
-An instance of this class can be used to connect the admin or a project database.
-"""
+"""Factory for the SQLAlchemy engines of the projects, with a caching mechanism."""
 import collections
 from typing import Iterator
 
@@ -9,15 +6,8 @@ from fastapi import HTTPException, status
 from sqlalchemy import create_engine
 from sqlalchemy.engine import Engine
 from sqlalchemy.future import select
-from sqlalchemy.orm import sessionmaker
-
-from ..config import settings
-from .models import DBProject
-
-assert settings.SQLALCHEMY_DBADMIN_URI is not None
 
-engine = create_engine(settings.SQLALCHEMY_DBADMIN_URI, pool_pre_ping=True, future=True)
-AdminSession = sessionmaker(autocommit=False, autoflush=False, bind=engine, future=True)
+from ..dbadmin import AdminSession, DBProject
 
 
 class ProjectEngines(collections.abc.Mapping):
diff --git a/migrations/env.py b/migrations/env.py
index 4f00b456d63f549a50c65f7d7a608b89a8c1d9bb..416072ab26bda5060d2f2c8b77053117dd05c575 100644
--- a/migrations/env.py
+++ b/migrations/env.py
@@ -13,7 +13,7 @@ from sqlalchemy import engine_from_config, pool
 # from myapp import mymodel
 # target_metadata = mymodel.Base.metadata
 from app.config import settings
-from app.db import models
+from app.db.dbadmin import models
 
 BASE_DIR = Path(__file__).parents[1].absolute()
 load_dotenv(BASE_DIR / '.env')
diff --git a/scripts/initialize_dbadmin.py b/scripts/initialize_dbadmin.py
index ff3b72bf6d76256785aae1f0332ffe55c5155497..e9272b472609c5eddfc48a83d770872b03d73d52 100644
--- a/scripts/initialize_dbadmin.py
+++ b/scripts/initialize_dbadmin.py
@@ -4,7 +4,8 @@ import logging
 from sqlalchemy.exc import IntegrityError
 
 from app.config import settings
-from app.db import AdminSession, DBProjectServer
+from app.db import AdminSession
+from app.db.dbadmin import DBProjectServer
 
 logging.basicConfig(level=logging.INFO)
 logger = logging.getLogger(__name__)
diff --git a/scripts/wait_for_initialized_dbadmin.py b/scripts/wait_for_initialized_dbadmin.py
index 74171caca7d5d1a4f5ab6c0c751cba68a246a854..9d0a948505e19f2a6721694021e07b23dc94d336 100644
--- a/scripts/wait_for_initialized_dbadmin.py
+++ b/scripts/wait_for_initialized_dbadmin.py
@@ -4,7 +4,8 @@ import logging
 from sqlalchemy import select
 from tenacity import after_log, before_log, retry, stop_after_attempt, wait_fixed
 
-from app.db import AdminSession, DBProjectServer
+from app.db import AdminSession
+from app.db.dbadmin import DBProjectServer
 
 logging.basicConfig(level=logging.INFO)
 logger = logging.getLogger(__name__)
diff --git a/tests/conftest.py b/tests/conftest.py
index 543d4f8a0db191ef65f3347be2318dfaf3ebe994..3ff499e20e86086c71036f68ce2545cdc7ae278e 100644
--- a/tests/conftest.py
+++ b/tests/conftest.py
@@ -3,7 +3,7 @@ from typing import Generator
 import pytest
 from sqlalchemy.orm import Session
 
-from app.db.access import AdminSession
+from app.db import AdminSession
 
 
 @pytest.fixture(scope='session')