diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 8478e364f660f5bc2291d77d6540627a6f8c471d..9ec1727db301affd8e984df78abbb78a2b16ffaa 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -146,6 +146,31 @@ unittest_py3.11:
   stage: test
   image: python:3.11
   script: *python_test_script
+
+unittest_py3.12:
+  tags: [cached-dind]
+  stage: test
+  image: python:3.12
+  script: *python_test_script
+
+unittest_py3.13:
+  allow_failure: true
+  tags: [cached-dind]
+  stage: test
+  image: python:3.13-rc
+  script:
+    # TODO: Replace by '*python_test_script' as soon as 3.13 has been officially released.
+    - apt update && apt install -y cargo
+    # install dependencies
+    - pip install pytest pytest-cov
+    # TODO: Use f-branch logic here
+    - pip install git+https://gitlab.indiscale.com/caosdb/src/caosdb-pylib.git@dev
+    - pip install git+https://gitlab.indiscale.com/caosdb/src/caosdb-advanced-user-tools.git@dev
+    - pip install .[h5-crawler]
+    # actual test
+    - caosdb-crawler --help
+    - pytest --cov=caosdb -vv ./unittests
+
   
 inttest:
   tags: [docker]
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 352311d0910bcf0c7f60183b6f58dd7ffdcb0ed4..49b2e2c7519894f8922ab7947ad5002979638ce7 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -9,12 +9,16 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
 
 ### Added ###
 
+* Support for Python 3.12 and experimental support for 3.13
+
 ### Changed ###
 
 ### Deprecated ###
 
 ### Removed ###
 
+* Support for Python 3.7
+
 ### Fixed ###
 
 ### Security ###
diff --git a/setup.cfg b/setup.cfg
index 88898530f7b7e049e84b230bdcbd45ff5170fabf..1b4a91859f39ff2695c36aace396b7db240a5f1f 100644
--- a/setup.cfg
+++ b/setup.cfg
@@ -17,11 +17,10 @@ classifiers =
 package_dir =
             = src
 packages = find:
-python_requires = >=3.7
+python_requires = >=3.8
 install_requires =
     caosadvancedtools >= 0.7.0
     importlib-resources
-    importlib_metadata;python_version<'3.8'
     linkahead > 0.13.2
     odfpy #make optional
     packaging
diff --git a/tox.ini b/tox.ini
index 03e02ebeff196430129e10c4c0d853ca77c47302..e587774323171dda590c4e9198e049c1ed0e0e14 100644
--- a/tox.ini
+++ b/tox.ini
@@ -1,5 +1,5 @@
 [tox]
-envlist = py37, py38, py39, py310, py311
+envlist = py38, py39, py310, py311, py312, py313
 skip_missing_interpreters = true
 
 [testenv]