diff --git a/settings-example.json b/settings-example.json
index 9b584d27acd90de3d0fa6c31171f27e8e6c0b472..5f0d733237dbfacbb1eb44195b6695520bd9cd43 100644
--- a/settings-example.json
+++ b/settings-example.json
@@ -20,7 +20,17 @@
             "owncloudUser": "myUser",
             "owncloudPassword": "",
             "owncloudDestinationPath": "MyFolder"
-        }
+        },
+        "retentionPolicies": [
+            {
+                "resolutionInMinutes": 60,
+                "ageInDays": 30
+            },
+            {
+                "resolutionInMinutes": 3600,
+                "ageInDays": 60
+            }
+        ]
     },
     "api": {
         "url": "http://localhost:10003",
diff --git a/src/logic/database/DatabaseCleaner.py b/src/logic/database/DatabaseCleaner.py
new file mode 100644
index 0000000000000000000000000000000000000000..1ea90764d2d1b3379b4a2de40aae2654c7c05142
--- /dev/null
+++ b/src/logic/database/DatabaseCleaner.py
@@ -0,0 +1,28 @@
+import logging
+from dataclasses import dataclass
+from typing import List
+
+from sqlalchemy.orm import Session
+
+from logic import Constants
+
+LOGGER = logging.getLogger(Constants.APP_NAME)
+
+
+@dataclass
+class RetentionPolicy:
+    resolutionInMinutes: int
+    ageInDays: int
+
+
+class DatabaseCleaner:
+    def __init__(self, retentionPolicies: List[RetentionPolicy]):
+        self._policies = retentionPolicies
+
+    def clean(self, db: Session):
+        LOGGER.info('Performing database cleanup...')
+
+        for policy in self._policies:
+            LOGGER.debug(f'Enforcing retention policy: {policy}')
+
+        LOGGER.info('Database cleanup done')
diff --git a/src/logic/routers/GeneralRouter.py b/src/logic/routers/GeneralRouter.py
index 43b7478c0f462476b54464509ebb5e774accbbb1..3987764ba46ed545831154949187be1b69388f99 100644
--- a/src/logic/routers/GeneralRouter.py
+++ b/src/logic/routers/GeneralRouter.py
@@ -1,9 +1,10 @@
 from fastapi import APIRouter, Depends
 from sqlalchemy.orm import Session
 
-from Settings import VERSION
+from Settings import VERSION, SETTINGS
 from logic.Dependencies import get_database
 from logic.database import Schemas, DatabaseInfoProvider
+from logic.database.DatabaseCleaner import DatabaseCleaner, RetentionPolicy
 
 router = APIRouter(
     prefix='/general',
@@ -31,7 +32,12 @@ async def databaseInfo(db: Session = Depends(get_database)):
 async def databaseCleanup(db: Session = Depends(get_database)):
     infoBefore = DatabaseInfoProvider.get_database_info(db)
 
-    # TODO
+    retentionPolicies = SETTINGS['database']['retentionPolicies']
+    policies = []
+    for item in retentionPolicies:
+        policies.append(RetentionPolicy(resolutionInMinutes=item['resolutionInMinutes'], ageInDays=item['ageInDays']))
+
+    DatabaseCleaner(policies).clean(db)
 
     infoAfter = DatabaseInfoProvider.get_database_info(db)