diff --git a/MANIFEST.in b/MANIFEST.in
index d5e3a5620cdb7519a75ec4684c8ce53e8751f3ce..76b04db4d822422966186691f11b115b7cdd9859 100644
--- a/MANIFEST.in
+++ b/MANIFEST.in
@@ -1,6 +1,6 @@
 include setup.py
-graft migrations/*
+graft uffd/migrations
 graft uffd/templates
 graft uffd/*/templates
 graft uffd/static/
-graft uffd/translations/
+graft uffd/translations
diff --git a/uffd/__init__.py b/uffd/__init__.py
index c099ed3eb6253b7acdb53f969e258aa5deb87977..c85436f539d4f881cf489ca4f89c77fc76a1a3e7 100644
--- a/uffd/__init__.py
+++ b/uffd/__init__.py
@@ -62,7 +62,7 @@ def create_app(test_config=None): # pylint: disable=too-many-locals
 	os.makedirs(app.instance_path, exist_ok=True)
 
 	db.init_app(app)
-	Migrate(app, db, render_as_batch=True)
+	Migrate(app, db, render_as_batch=True, directory='uffd/migrations')
 	# pylint: disable=C0415
 	from uffd import user, selfservice, role, mail, session, csrf, mfa, oauth2, services, signup, rolemod, invite, api
 	# pylint: enable=C0415
diff --git a/migrations/README b/uffd/migrations/README
similarity index 100%
rename from migrations/README
rename to uffd/migrations/README
diff --git a/migrations/alembic.ini b/uffd/migrations/alembic.ini
similarity index 100%
rename from migrations/alembic.ini
rename to uffd/migrations/alembic.ini
diff --git a/migrations/env.py b/uffd/migrations/env.py
similarity index 100%
rename from migrations/env.py
rename to uffd/migrations/env.py
diff --git a/migrations/script.py.mako b/uffd/migrations/script.py.mako
similarity index 100%
rename from migrations/script.py.mako
rename to uffd/migrations/script.py.mako
diff --git a/migrations/versions/2a6b1fb82ce6_added_missing_oauth2grant_code_index.py b/uffd/migrations/versions/2a6b1fb82ce6_added_missing_oauth2grant_code_index.py
similarity index 100%
rename from migrations/versions/2a6b1fb82ce6_added_missing_oauth2grant_code_index.py
rename to uffd/migrations/versions/2a6b1fb82ce6_added_missing_oauth2grant_code_index.py
diff --git a/migrations/versions/54b2413586fd_invite_pk_change.py b/uffd/migrations/versions/54b2413586fd_invite_pk_change.py
similarity index 100%
rename from migrations/versions/54b2413586fd_invite_pk_change.py
rename to uffd/migrations/versions/54b2413586fd_invite_pk_change.py
diff --git a/migrations/versions/5a07d4a63b64_role_inclusion.py b/uffd/migrations/versions/5a07d4a63b64_role_inclusion.py
similarity index 100%
rename from migrations/versions/5a07d4a63b64_role_inclusion.py
rename to uffd/migrations/versions/5a07d4a63b64_role_inclusion.py
diff --git a/migrations/versions/5cab70e95bf8_invite_creator_and_role_moderator_group.py b/uffd/migrations/versions/5cab70e95bf8_invite_creator_and_role_moderator_group.py
similarity index 100%
rename from migrations/versions/5cab70e95bf8_invite_creator_and_role_moderator_group.py
rename to uffd/migrations/versions/5cab70e95bf8_invite_creator_and_role_moderator_group.py
diff --git a/migrations/versions/a29870f95175_initial_migration.py b/uffd/migrations/versions/a29870f95175_initial_migration.py
similarity index 100%
rename from migrations/versions/a29870f95175_initial_migration.py
rename to uffd/migrations/versions/a29870f95175_initial_migration.py
diff --git a/migrations/versions/a594d3b3e05b_added_role_locked.py b/uffd/migrations/versions/a594d3b3e05b_added_role_locked.py
similarity index 100%
rename from migrations/versions/a594d3b3e05b_added_role_locked.py
rename to uffd/migrations/versions/a594d3b3e05b_added_role_locked.py
diff --git a/migrations/versions/a8c6b6e91c28_device_login.py b/uffd/migrations/versions/a8c6b6e91c28_device_login.py
similarity index 100%
rename from migrations/versions/a8c6b6e91c28_device_login.py
rename to uffd/migrations/versions/a8c6b6e91c28_device_login.py
diff --git a/migrations/versions/aff5f350dcdf_added_role_is_default.py b/uffd/migrations/versions/aff5f350dcdf_added_role_is_default.py
similarity index 100%
rename from migrations/versions/aff5f350dcdf_added_role_is_default.py
rename to uffd/migrations/versions/aff5f350dcdf_added_role_is_default.py
diff --git a/migrations/versions/bad6fc529510_added_rolegroup_requires_mfa_and_cleanup.py b/uffd/migrations/versions/bad6fc529510_added_rolegroup_requires_mfa_and_cleanup.py
similarity index 100%
rename from migrations/versions/bad6fc529510_added_rolegroup_requires_mfa_and_cleanup.py
rename to uffd/migrations/versions/bad6fc529510_added_rolegroup_requires_mfa_and_cleanup.py
diff --git a/migrations/versions/cbca20cf64d9_constraint_name_fixes.py b/uffd/migrations/versions/cbca20cf64d9_constraint_name_fixes.py
similarity index 100%
rename from migrations/versions/cbca20cf64d9_constraint_name_fixes.py
rename to uffd/migrations/versions/cbca20cf64d9_constraint_name_fixes.py