diff --git a/backend/areas/apps/models.py b/backend/areas/apps/models.py
index 069c73751643f42af0619e65c7d6425d4802138d..73fd15504b59b73df5681773d33e0bd2e63b7822 100644
--- a/backend/areas/apps/models.py
+++ b/backend/areas/apps/models.py
@@ -29,6 +29,7 @@ class App(db.Model):
     # The URL is only stored in the DB for external applications; otherwise the
     # URL is stored in a configmap (see get_url)
     url = db.Column(String(length=128), unique=False)
+    oauthclients = relationship("OAuthClientApp", back_populates="app")
 
     def __init__(self, slug, name, external=False, url=None):
         self.slug = slug
@@ -113,6 +114,10 @@ class App(db.Model):
         # Delete all roles first
         for role in self.roles:
             db.session.delete(role)
+
+        # Delete all related oauthclients
+        for auth in self.oauthclients:
+            db.session.delete(auth)
         db.session.commit()
 
         db.session.delete(self)
@@ -316,7 +321,7 @@ class OAuthClientApp(db.Model):  # pylint: disable=too-few-public-methods
     oauthclient_id = db.Column(String(length=64), primary_key=True)
     app_id = db.Column(Integer, ForeignKey("app.id"))
 
-    app = relationship("App")
+    app = relationship("App", back_populates="oauthclients")
 
     def __repr__(self):
         return (f"oauthclient_id: {self.oauthclient_id}, app_id: {self.app_id},"