diff --git a/areas/apps/models.py b/areas/apps/models.py
index 9cc24848b534564c783bb14bed63fc4ca89b0922..083bcbd41f7d9b893837822f1712fedb945b94be 100644
--- a/areas/apps/models.py
+++ b/areas/apps/models.py
@@ -25,7 +25,7 @@ class App(db.Model):
     id = db.Column(Integer, primary_key=True)
     name = db.Column(String(length=64))
     slug = db.Column(String(length=64), unique=True)
-    external = db.Column(Boolean, unique=False, nullable=False, default=True, server_default='0')
+    external = db.Column(Boolean, unique=False, nullable=False, server_default='0')
     # 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)
@@ -229,6 +229,12 @@ class AppStatus():  # pylint: disable=too-few-public-methods
     :type app: App
     """
     def __init__(self, app):
+        if app.external:
+            self.installed = True
+            self.ready = True
+            self.message = "App is external"
+            return
+
         kustomization = app.kustomization
         if kustomization is not None and "status" in kustomization:
             ks_ready, ks_message = AppStatus.check_condition(kustomization['status'])
diff --git a/cliapp/cliapp/cli.py b/cliapp/cliapp/cli.py
index 8b14840598b34b1511c196d1cb7b916da3a24f41..3355dc6ae643b858188244b020359ee769ed9ef6 100644
--- a/cliapp/cliapp/cli.py
+++ b/cliapp/cliapp/cli.py
@@ -105,12 +105,13 @@ def delete_app(slug):
         return
 
     app_status = app_obj.get_status()
-    if not app_status.installed:
-        app_obj.delete()
-        current_app.logger.info("Success.")
-    else:
+    if app_status.installed and not app_obj.external:
         current_app.logger.info("Can not delete installed application, run"
             " 'uninstall' first")
+        return
+
+    app_obj.delete()
+    current_app.logger.info("Success.")
 
 
 @app_cli.command(