diff --git a/src/logic/database/DatabaseCleaner.py b/src/logic/database/DatabaseCleaner.py
index 97f88923b1816e6a8fb7a5b58fb0b196976a5c13..0ee3e571ad026d73e07367f3459bde0101327f16 100644
--- a/src/logic/database/DatabaseCleaner.py
+++ b/src/logic/database/DatabaseCleaner.py
@@ -14,8 +14,9 @@ LOGGER = logging.getLogger(Constants.APP_NAME)
 class DatabaseCleaner:
     MIN_DATE = datetime(year=1970, month=1, day=1).date()
 
-    def __init__(self, retentionPolicies: List[RetentionPolicy]):
+    def __init__(self, retentionPolicies: List[RetentionPolicy], forceBackupAfterCleanup: bool):
         self._policies = retentionPolicies
+        self._forceBackupAfterCleanup = forceBackupAfterCleanup
 
     def clean(self, db: Session, currentDate: datetime.date):
         LOGGER.info('Performing database cleanup...')
@@ -33,7 +34,8 @@ class DatabaseCleaner:
 
         LOGGER.info('Database cleanup done')
 
-        # TODO: force backup?
+        if self._forceBackupAfterCleanup:
+            Crud.BACKUP_SERVICE.backup()
 
     @staticmethod
     def _cleanup_measurements_for_sensor(sensor: Schemas.Sensor, db: Session,
diff --git a/src/test/DatabaseCleanerTest.py b/src/test/DatabaseCleanerTest.py
index c1a2dfed272e41d0841292218b529e7697bf9b2b..b511d4b8922b2a75d0c20cd62ef7368f73ab6134 100644
--- a/src/test/DatabaseCleanerTest.py
+++ b/src/test/DatabaseCleanerTest.py
@@ -220,7 +220,7 @@ class TestDatabaseCleaner(unittest.TestCase):
 
             database = Mock()
             from logic.database.DatabaseCleaner import DatabaseCleaner
-            DatabaseCleaner([]).clean(database, CURRENT_DATE_TIME)
+            DatabaseCleaner([], False).clean(database, CURRENT_DATE_TIME)
 
             mockedCrud.get_measurements_for_sensor.assert_not_called()
 
@@ -238,7 +238,7 @@ class TestDatabaseCleaner(unittest.TestCase):
             from logic.database.DatabaseCleaner import RetentionPolicy
 
             policy = RetentionPolicy(numberOfMeasurementsPerDay=4, ageInDays=1)
-            DatabaseCleaner([policy]).clean(database, datetime(year=2021, month=8, day=19).date())
+            DatabaseCleaner([policy], False).clean(database, datetime(year=2021, month=8, day=19).date())
 
             mockedCrud.delete_multiple_measurements.assert_called_once_with(database, {3})
 
@@ -261,7 +261,7 @@ class TestDatabaseCleaner(unittest.TestCase):
             from logic.database.DatabaseCleaner import RetentionPolicy
 
             policy = RetentionPolicy(numberOfMeasurementsPerDay=4, ageInDays=1)
-            DatabaseCleaner([policy]).clean(database, datetime(year=2021, month=8, day=19).date())
+            DatabaseCleaner([policy], False).clean(database, datetime(year=2021, month=8, day=19).date())
 
             calls = mockedCrud.delete_multiple_measurements.call_args_list
             self.assertEqual(2, len(calls))
@@ -284,9 +284,28 @@ class TestDatabaseCleaner(unittest.TestCase):
 
             policy1 = RetentionPolicy(numberOfMeasurementsPerDay=4, ageInDays=1)
             policy2 = RetentionPolicy(numberOfMeasurementsPerDay=2, ageInDays=1)
-            DatabaseCleaner([policy1, policy2]).clean(database, datetime(year=2021, month=8, day=19).date())
+            DatabaseCleaner([policy1, policy2], False).clean(database, datetime(year=2021, month=8, day=19).date())
 
             calls = mockedCrud.delete_multiple_measurements.call_args_list
             self.assertEqual(2, len(calls))
             self.assertEqual((database, {3}), calls[0].args)
             self.assertEqual((database, {3, 4}), calls[1].args)
+
+    def test_forceBackupAfterCleanup(self):
+        mockedCrud = Mock()
+
+        with patch.dict('sys.modules', **{'logic.database.Crud': mockedCrud}):
+            mockedCrud.DATE_FORMAT = '%Y-%m-%d %H:%M:%S'
+            mockedCrud.get_measurements_for_sensor.return_value = []
+            mockedCrud.get_sensors.return_value = [Schemas.Sensor(id=1, name="myTempSensor",
+                                                                  type="temperature", device_id=1)]
+            mockedCrud.get_first_measurement_for_sensor.return_value = self.FIRST_MEASUREMENT
+
+            database = Mock()
+            from logic.database.DatabaseCleaner import DatabaseCleaner
+            from logic.database.DatabaseCleaner import RetentionPolicy
+
+            policy = RetentionPolicy(numberOfMeasurementsPerDay=4, ageInDays=1)
+            DatabaseCleaner([policy], True).clean(database, datetime(year=2021, month=8, day=19).date())
+
+            mockedCrud.BACKUP_SERVICE.backup.assert_called_once()