diff --git a/gerrit/fixtures/test_gerrit_commands.yaml b/gerrit/fixtures/test_gerrit_commands.yaml
index 755ba5b..11ae968 100644
--- a/gerrit/fixtures/test_gerrit_commands.yaml
+++ b/gerrit/fixtures/test_gerrit_commands.yaml
@@ -4,14 +4,14 @@
     created: '2023-03-03 08:46:17'
     gerrit_change: '67631'
     modified: '2023-03-03 09:09:25'
-    param_ppa: gerrit_alessio_56718_bis_10_5_1,
+    param_ppa: gerrit_alessio_56718_bis_10_5_1
     projectname: templates
 - model: repoapi.gerritrepoinfo
   pk: 47877
   fields:
     created: '1977-01-01 00:00:00'
     gerrit_change: '67510'
-    modified: '2023-03-02 16:24:25'
+    modified: '2022-03-02 16:24:25'
     param_ppa: gerrit_alessio_56718_bis_11_1
     projectname: sems-pbx
 - model: repoapi.gerritrepoinfo
@@ -19,6 +19,6 @@
   fields:
     created: '1977-01-01 00:00:00'
     gerrit_change: '13200'
-    modified: '2023-03-02 07:57:21'
+    modified: '2022-03-02 07:57:21'
     param_ppa: gerrit_pu_collectd-abolition
     projectname: unknown
diff --git a/gerrit/management/commands/gerrit.py b/gerrit/management/commands/gerrit.py
index 32b5e06..7fba949 100644
--- a/gerrit/management/commands/gerrit.py
+++ b/gerrit/management/commands/gerrit.py
@@ -13,7 +13,10 @@
 # You should have received a copy of the GNU General Public License along
 # with this program.  If not, see <http://www.gnu.org/licenses/>.
 from datetime import date
+from datetime import datetime
+from datetime import timedelta
 
+from django.conf import settings
 from django.core.management.base import BaseCommand
 from requests.exceptions import HTTPError
 
@@ -26,7 +29,20 @@ class Command(BaseCommand):
     help = "gerrit actions"
 
     def add_arguments(self, parser):
-        parser.add_argument("action", choices=["refresh"])
+        parser.add_argument("action", choices=["refresh", "cleanup"])
+        parser.add_argument("--dry-run", type=bool, default=False)
+        parser.add_argument(
+            "--weeks",
+            type=int,
+            default=6,
+            help="filter reviews older than this value in weeks",
+        )
+        parser.add_argument(
+            "--today",
+            type=date.fromisoformat,
+            default=datetime.today(),
+            help="set today value in isoformat 'YYYY-MM-DD'",
+        )
 
     def refresh(self, *args, **options):
         qs = GerritRepoInfo.objects.filter(created__date=date(1977, 1, 1))
@@ -37,11 +53,38 @@ class Command(BaseCommand):
                 gri.modified = get_datetime(info["updated"])
                 # don't update modified field on save
                 gri.update_modified = False
-                gri.save()
+                if options["dry_run"]:
+                    self.stdout.write(
+                        f"{gri} would be changed to "
+                        f" created:{gri.created}"
+                        f" modified:{gri.modified}"
+                    )
+                else:
+                    gri.save()
             except HTTPError:
                 self.stderr.write(f"{gri} not found, remove it from db")
                 gri.delete()
 
+    def cleanup(self, *args, **options):
+        max_date = options["today"] - timedelta(weeks=options["weeks"])
+        self.stderr.write(f"max_date:{max_date}")
+        if settings.DEBUG:
+            self.stderr.write("debug ON")
+        manager = GerritRepoInfo.objects
+        qs = manager.filter(modified__lt=max_date)
+        for gri in qs.iterator():
+            info = get_change_info(gri.gerrit_change)
+            if info["status"] == "MERGED":
+                if options["dry_run"]:
+                    self.stdout.write(
+                        f"{gri} merged, remove from db, [dry-run]"
+                    )
+                else:
+                    self.stdout.write(f"{gri} merged, remove from db")
+                    manager.review_removed(
+                        gri.param_ppa, gri.gerrit_change, gri.projectname
+                    )
+
     def handle(self, *args, **options):
         action = getattr(self, options["action"])
         action(*args, **options)
diff --git a/gerrit/test_commands.py b/gerrit/test_commands.py
index 3db88f6..45a196b 100644
--- a/gerrit/test_commands.py
+++ b/gerrit/test_commands.py
@@ -14,6 +14,7 @@
 # with this program.  If not, see <http://www.gnu.org/licenses/>.
 import datetime
 import json
+from unittest.mock import call
 from unittest.mock import patch
 
 from django.core.management import call_command
@@ -66,3 +67,22 @@ class refreshTest(TestCase):
 
         qs_filter = qs.filter(modified__time=datetime.time(9, 9, 25))
         self.assertEqual(qs_filter.count(), 3)
+
+    @patch("repoapi.models.gri.jenkins_remove_ppa")
+    @patch("gerrit.management.commands.gerrit.get_change_info")
+    def test_cleanup(self, gci, jrp):
+        value["status"] = "MERGED"
+        gci.return_value = value
+        qs = GerritRepoInfo.objects
+        self.assertEqual(qs.count(), 3)
+        call_command(
+            "gerrit",
+            "cleanup",
+            "--today=2023-03-03",
+        )
+        calls = [
+            call("gerrit_pu_collectd-abolition"),
+            call("gerrit_alessio_56718_bis_11_1"),
+        ]
+        self.assertListEqual(jrp.mock_calls, calls)
+        self.assertEqual(qs.count(), 1)