diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 97f7b347eff0cf3d9a57006b85786feb680c0a7c..c63289f2d2b26b784b2c9fcfa7801802572536ce 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -165,8 +165,6 @@ setup-openappstack:
   artifacts:
     paths:
       - ./clusters
-      - ansible/inventory.yml
-      - ansible/group_vars/all/settings.yml
     expire_in: 1 month
     when: always
   only:
@@ -220,6 +218,11 @@ grafana-helm-release:
     APP: "grafana"
   <<: *helm-release
 
+eventrouter-helm-release:
+  variables:
+    APP: "eventrouter"
+  <<: *helm-release
+
 nextcloud-helm-release:
   variables:
     APP: "nextcloud"
diff --git a/ansible/group_vars/all/settings.yml.example b/ansible/group_vars/all/settings.yml.example
index ca7dd118f3d6ef2279b89b740c61bfdf64b8f711..38bfac0a736c0cb71561150df1d4a89e4e935856 100644
--- a/ansible/group_vars/all/settings.yml.example
+++ b/ansible/group_vars/all/settings.yml.example
@@ -102,6 +102,7 @@ enabled_applications:
   # Applications.
   - 'grafana'
   - 'loki-stack'
+  - 'eventrouter'
   - 'nextcloud'
   - 'prometheus'
   - 'rocketchat'
diff --git a/ansible/roles/apps/tasks/eventrouter.yml b/ansible/roles/apps/tasks/eventrouter.yml
new file mode 100644
index 0000000000000000000000000000000000000000..89b351e50aa291fb2ebb041a04abce482ca26664
--- /dev/null
+++ b/ansible/roles/apps/tasks/eventrouter.yml
@@ -0,0 +1,16 @@
+- name: Create Kubernetes secret with eventrouter settings
+  tags:
+    - config
+    - flux
+    - eventrouter
+  vars:
+    flux_secret:
+      name: "eventrouter"
+      namespace: "oas"
+  include_tasks:
+    file: flux_secret.yml
+    apply:
+      tags:
+        - config
+        - flux
+        - eventrouter
diff --git a/ansible/roles/apps/tasks/main.yml b/ansible/roles/apps/tasks/main.yml
index 8c985d38b5e7a6ddf6f8e998ba35500fa3f807d6..18c388289e4d5381f57fe50abf25a47ba37cc3a4 100644
--- a/ansible/roles/apps/tasks/main.yml
+++ b/ansible/roles/apps/tasks/main.yml
@@ -18,6 +18,9 @@
 - name: Tasks pertaining to loki-stack
   import_tasks: loki-stack.yml
 
+- name: Tasks pertaining to eventrouter
+  import_tasks: eventrouter.yml
+
 - name: Tasks pertaining to grafana
   import_tasks: grafana.yml
 
diff --git a/ansible/roles/apps/templates/settings/eventrouter.yaml b/ansible/roles/apps/templates/settings/eventrouter.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..d6c40c2e0c115a2c4da4aea665228e1b8cd9e0e8
--- /dev/null
+++ b/ansible/roles/apps/templates/settings/eventrouter.yaml
@@ -0,0 +1,3 @@
+---
+# https://github.com/helm/charts/tree/master/stable/eventrouter
+sink: stdout
diff --git a/docs/maintenance.md b/docs/maintenance.md
index a640bfdcc407426e10e58b8b9530d81452f203b2..4b12a1136582aa4da211cf21acbe1a197e97215a 100644
--- a/docs/maintenance.md
+++ b/docs/maintenance.md
@@ -60,6 +60,9 @@ Debug oauth2 single sign-on with rocketchat:
 
     {container_name=~"(hydra|rocketchat)"}
 
+Query kubernetes events processed by the `eventrouter` app containing `warning`:
+
+    logcli query '{app="eventrouter"} |~ "warning"'
 
 #### Cert-manager
 
diff --git a/flux/oas/eventrouter.yaml b/flux/oas/eventrouter.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..59eb956223b52c6ede2ab6378ffc6c3534275ee7
--- /dev/null
+++ b/flux/oas/eventrouter.yaml
@@ -0,0 +1,18 @@
+---
+apiVersion: helm.fluxcd.io/v1
+kind: HelmRelease
+metadata:
+  name: eventrouter
+  namespace: oas
+  annotations:
+    flux.weave.works/automated: "false"
+spec:
+  releaseName: eventrouter
+  chart:
+    repository: https://charts.helm.sh/stable
+    name: eventrouter
+    version: 0.3.2
+  valuesFrom:
+  - secretKeyRef:
+      name: eventrouter-settings
+      key: values.yaml
diff --git a/test/behave/features/grafana.feature b/test/behave/features/grafana.feature
index 418e12e77bfa498183b4c6c3cdab71f864aa91ca..e62a28fc33bd383a22e4747ed15538a6797bdeb1 100644
--- a/test/behave/features/grafana.feature
+++ b/test/behave/features/grafana.feature
@@ -2,6 +2,7 @@
 Feature: Test grafana admin login
   As an OAS admin
   I want to be able to login to grafana as the user admin
+  And I want to be able to look at the logs
 
 Scenario: Open grafana
   When I open the grafana URL
@@ -17,3 +18,8 @@ Scenario: Login to grafana
   And I click on the button "//button[@aria-label='Login button']"
   Then I wait on element "sidemenu.sidemenu" for 60000ms to be visible
   And I expect that the path is "/"
+
+Scenario: As an admin I want to look at the eventrouter logs
+  When I open the grafana explore eventrouter URL
+  Then I wait on element ".logs-panel" for 25000ms to be visible
+  And I expect that element ".datapoints-warning" does not exist
diff --git a/test/behave/features/steps/steps.py b/test/behave/features/steps/steps.py
index 6455a9d416f79da49b03a725d9df3af1b42e67b5..f65e96ff80ac3874df92cd7bca59cbafafa1e1b6 100644
--- a/test/behave/features/steps/steps.py
+++ b/test/behave/features/steps/steps.py
@@ -12,3 +12,12 @@ def step_impl(context):
 def step_impl(context):
     """Open wordpress URL."""
     context.behave_driver.get(context.wordpress['url'])
+
+@when(u'I open the grafana explore eventrouter URL')
+@given(u'I open the grafana explore eventrouter URL')
+def step_impl(context):
+    """Open wordpress URL."""
+    eventrouter_url = str(context.grafana["url"]) + '/explore?orgId=1&left=["now-1h","now","Loki",{"expr":"{app=\\\"eventrouter\\\"}"}]'
+    print(eventrouter_url)
+    context.behave_driver.get(eventrouter_url)
+
diff --git a/test/pytest/test_app_deployments.py b/test/pytest/test_app_deployments.py
index edb3a3821e92d608a1991bad37bc7733d43e8814..da93fd2653749d8934e45ebd45ee0c0332c224cd 100644
--- a/test/pytest/test_app_deployments.py
+++ b/test/pytest/test_app_deployments.py
@@ -19,6 +19,7 @@ EXPECTED_RELEASES = {
         'prometheus',
         'grafana',
         'loki-stack',
+        'eventrouter',
         'single-sign-on'
     ],
     'oas-apps': ['nextcloud', 'rocketchat', 'wordpress'],
@@ -37,6 +38,9 @@ EXPECTED_APP_LABELS = {
     'grafana': {
         'namespace': 'oas',
         'label_selector': 'app=grafana'},
+    'eventrouter': {
+        'namespace': 'oas',
+        'label_selector': 'app=eventrouter'},
     'prometheus': {
         'namespace': 'oas',
         'label_selector': 'app=prometheus'},