diff --git a/frontend/squirro/integration/frontend/api/items.py b/frontend/squirro/integration/frontend/api/items.py
index 9aff5c822f..b4e79775a5 100644
--- a/frontend/squirro/integration/frontend/api/items.py
+++ b/frontend/squirro/integration/frontend/api/items.py
@@ -1,3 +1,4 @@
+import datetime
 import io
 import logging
 import re
@@ -135,6 +136,9 @@ class ItemsView(MethodView):
 
     def _get_excel(self, query_args):
         """Return items in an Excel sheet."""
+        dashboard = query_args.pop("dashboard", "Squirro")
+        keywords_to_export = json.loads(query_args.pop("keywords", {}))
+        keywords_order = list(keywords_to_export.values())
 
         # requests items
         squirro_client = get_injected("squirro_client")
@@ -142,32 +146,41 @@ class ItemsView(MethodView):
 
         # create new in-memory Excel sheet
         book = xlwt.Workbook(encoding="utf-8")
-        sheet = book.add_sheet("Squirro Item Export")
+        sheet = book.add_sheet(dashboard)
 
         # standard list of ordered header fields which are present in all
         # items
         header = [
-            {"key": "created_at", "value": "Date", "format": "date"},
-            {"key": "created_at", "value": "Time", "format": "time"},
-            {"key": "title", "value": "Title"},
-            {"key": "link", "value": "Link"},
-            {"key": "abstract", "value": "Abstract"},
-            {"key": "body", "value": "Content"},
-            {"key": "language", "value": "Language"},
+            {
+                "index": 1 + len(keywords_order),
+                "key": "created_at",
+                "value": "Date",
+                "format": "date",
+            },
+            {
+                "index": 2 + len(keywords_order),
+                "key": "created_at",
+                "value": "Time",
+                "format": "time",
+            },
+            {"index": 0, "key": "title", "value": "Title"},
         ]
-        for index, h in enumerate(header):
-            self._write_value(sheet, 0, index, h["value"])
+        for h in header:
+            self._write_value(sheet, 0, h["index"], h["value"])
 
         # loop over all items and write the standard header fields, the
         # keyword fields need more care as we need to carefully check which
         # column holds which keyword
         keyword_column = {}
-        next_keyword_column = len(header)
+        for i, keyword in enumerate(keywords_order, start=1):
+            keyword_column[keyword] = i
+            self._write_value(sheet, 0, i, keyword)
+
         for row_index, item in enumerate(res.get("items", []), start=1):
             # write the header fields
-            for col_index, h in enumerate(header):
+            for h in header:
                 self._write_value(
-                    sheet, row_index, col_index, item.get(h["key"]), h.get("format")
+                    sheet, row_index, h["index"], item.get(h["key"]), h.get("format")
                 )
 
             # write the keyword fields
@@ -176,13 +189,16 @@ class ItemsView(MethodView):
                 # Handle the case where keywords is `None`
                 keywords = item["keywords"]
             for keyword, values in keywords.items():
+                if keyword not in keywords_to_export:
+                    continue
+                keyword = keywords_to_export[keyword]
+
                 # check if the keyword column is already known, if not we
                 # allocate a new column index
                 if keyword in keyword_column:
                     i = keyword_column[keyword]
                 else:
-                    i = next_keyword_column
-                    next_keyword_column += 1
+                    i = 1 + keywords_order.index(keyword)
                     keyword_column[keyword] = i
                     self._write_value(sheet, 0, i, keyword)
 
@@ -199,8 +215,9 @@ class ItemsView(MethodView):
             key="frontend.userapp.excel-export-filename",
             project_id=query_args["project_id"],
         )
-        headers = {"Content-Disposition": f"attachment;filename={filename}"}
-
+        headers = {
+            "Content-Disposition": f"attachment;filename={datetime.date.today()}-{dashboard}-Export.xls"
+        }
         return current_app.response_class(
             ret.getvalue(),
             mimetype="application/vnd.ms-excel",
diff --git a/frontend/squirro/integration/frontend/sso.py b/frontend/squirro/integration/frontend/sso.py
index 65dd5210e9..15e18c68aa 100644
--- a/frontend/squirro/integration/frontend/sso.py
+++ b/frontend/squirro/integration/frontend/sso.py
@@ -10,6 +10,8 @@ from squirro.common.format import json
 from .login.utils import create_squirro_user, login_user
 from .sso_exceptions import AuthenticationError
 
+from octopus.utils import load_config
+
 log = logging.getLogger(__name__)
 
 LOGIN_METHOD = "sso"
@@ -55,6 +57,7 @@ class SSOHandler:
             self._endpoint,
             self._domains,
         )
+        self.logout_url = f"{load_config()['squirro']['url']}/studio/logout/"
 
     @property
     def active(self):
@@ -99,9 +102,7 @@ class SSOHandler:
             session.clear()
 
         if response.get("redirect"):
-            url = response["redirect"]
-            log.debug("SSO service requests redirect to %r", url)
-            return url
+            return self.logout_url
 
     def callback(self):
         """Callback method which takes the response from the callback issued by
