diff --git a/src/backoffice/locale/de/LC_MESSAGES/django.po b/src/backoffice/locale/de/LC_MESSAGES/django.po
index 3b9480ea0c28c750d8f9c249a184eae6e0ab6dcf..0fe2f38b5d6c7a05ecbc144d237abef8d55999ce 100644
--- a/src/backoffice/locale/de/LC_MESSAGES/django.po
+++ b/src/backoffice/locale/de/LC_MESSAGES/django.po
@@ -934,7 +934,7 @@ msgstr "offiziell"
 msgid "Event__last_update"
 msgstr "letzte Änderung"
 
-msgid "myassemblies"
+msgid "AssemblyList__title__my_assemblies"
 msgstr "Meine Assemblies"
 
 msgid "assembly_name"
@@ -943,10 +943,10 @@ msgstr "Name"
 msgid "assembly_state"
 msgstr "Status"
 
-msgid "assemblycreate"
+msgid "AssemblyList__button__create_assembly"
 msgstr "Neue Assembly anmelden"
 
-msgid "assemblycreate_deadlineexceeded"
+msgid "AssemblyList__button__create_deadline_exceeded"
 msgstr "Registrierung nicht mehr möglich"
 
 msgid "welcome_text"
diff --git a/src/backoffice/locale/en/LC_MESSAGES/django.po b/src/backoffice/locale/en/LC_MESSAGES/django.po
index dc9d28f62e0a727c1454c1ef4b935e49b1b08ef9..5d000258f59f6e6f039863189dc3f7c11e32ce91 100644
--- a/src/backoffice/locale/en/LC_MESSAGES/django.po
+++ b/src/backoffice/locale/en/LC_MESSAGES/django.po
@@ -934,7 +934,7 @@ msgstr "official"
 msgid "Event__last_update"
 msgstr "last update"
 
-msgid "myassemblies"
+msgid "AssemblyList__title__my_assemblies"
 msgstr "my assemblies"
 
 msgid "assembly_name"
@@ -943,10 +943,10 @@ msgstr "Name"
 msgid "assembly_state"
 msgstr "Status"
 
-msgid "assemblycreate"
+msgid "AssemblyList__button__create_assembly"
 msgstr "create new assembly"
 
-msgid "assemblycreate_deadlineexceeded"
+msgid "AssemblyList__button__create_deadline_exceeded"
 msgstr "registration deadline exceeded"
 
 msgid "welcome_text"
diff --git a/src/backoffice/templates/backoffice/index.html b/src/backoffice/templates/backoffice/index.html
index 693606dc0fba264f8774e59ba73410eaf3a5dd79..d4ba6322ae299f29d1684b185f60b461d8be2592 100644
--- a/src/backoffice/templates/backoffice/index.html
+++ b/src/backoffice/templates/backoffice/index.html
@@ -10,7 +10,7 @@
   {% if user.is_authenticated %}
     <div class="card">
 
-      <div class="card-header">{% trans "myassemblies" %}</div>
+      <div class="card-header">{% trans "AssemblyList__title__my_assemblies" %}</div>
       <div class="card-body">
         <table class="table table-sm">
           <thead>
@@ -20,7 +20,7 @@
             </tr>
           </thead>
           <tbody>
-            {% for assembly in myassemblies %}
+            {% for assembly in assembly_list %}
               <tr>
                 <td>
                   <a href="{% url 'backoffice:assembly' pk=assembly.id %}">{{ assembly.name }}</a>
@@ -45,16 +45,16 @@
         {% if conference.is_open %}
           <a class="btn btn-success"
              href="{% url 'backoffice:assembly-create' %}"
-             style="float: right">{% trans "assemblycreate" %}</a>
+             style="float: right">{% trans "AssemblyList__button__create_assembly" %}</a>
         {% elif has_assemblies %}
           <a class="btn btn-warning"
              href="{% url 'backoffice:assembly-create' %}"
              style="float: right"
-             title="{% trans "assemblycreate_deadlineexceeded" %}">{% trans "assemblycreate" %}</a>
+             title="{% trans "AssemblyList__button__create_deadline_exceeded" %}">{% trans "AssemblyList__button__create_assembly" %}</a>
         {% else %}
           <button class="btn btn-success disabled"
-                  title="{% trans "assemblycreate_deadlineexceeded" %}"
-                  style="float: right">{% trans "assemblycreate" %}</button>
+                  title="{% trans "AssemblyList__button__create_deadline_exceeded" %}"
+                  style="float: right">{% trans "AssemblyList__button__create_assembly" %}</button>
         {% endif %}
       </div>
     </div>
diff --git a/src/backoffice/views/assemblies/assemblies.py b/src/backoffice/views/assemblies/assemblies.py
index 38c39e601d3f96c5fbca74efa22278601d4f3ab5..1fdd977af4860530d4cc9b4140ee485af3b7c17b 100644
--- a/src/backoffice/views/assemblies/assemblies.py
+++ b/src/backoffice/views/assemblies/assemblies.py
@@ -12,7 +12,7 @@ from django.utils.html import format_html
 from django.utils.safestring import mark_safe
 from django.utils.translation import get_language, gettext
 from django.utils.translation import gettext_lazy as _
-from django.views.generic import TemplateView, View
+from django.views.generic import ListView, TemplateView, View
 from django.views.generic.edit import CreateView, UpdateView
 
 from core.models import ActivityLogChange, ActivityLogEntry
@@ -29,27 +29,23 @@ from backoffice.views.mixins import AssemblyMixin, ConferenceLoginRequiredMixin
 logger = logging.getLogger(__name__)
 
 
-class AssemblyListView(ConferenceLoginRequiredMixin, View):
+class AssemblyListView(ConferenceLoginRequiredMixin, ListView):
+    template_name = 'backoffice/index.html'
     require_conference = True
+    model = Assembly
+
+    def get_queryset(self):
+        return Assembly.objects.associated_with_user(conference=self.conference, user=self.request.user, staff_can_see=False)
+
+    def get_context_data(self, *args, **kwargs):
+        return {**super().get_context_data(*args, **kwargs), 'active_page': 'home'}
 
     def get(self, *args, **kwargs):
         if self.request.user.is_authenticated:
-            myassemblies = list(Assembly.objects.associated_with_user(conference=self.conference, user=self.request.user))
-
             # remove stored backlink for assembly pages from the session if it is set, so the backlink will go to the overview, which is the default
             self.request.session.pop('assembly_back', None)
-        else:
-            myassemblies = None
-
-        ctx = self.get_context_data()
-        ctx.update(
-            {
-                'active_page': 'home',
-                'myassemblies': myassemblies,
-            }
-        )
 
-        return render(self.request, 'backoffice/index.html', ctx)
+        return super().get(self.request, *args, **kwargs)
 
 
 class AssemblyCreateView(ConferenceLoginRequiredMixin, CreateView):
diff --git a/src/backoffice/views/assemblyteam.py b/src/backoffice/views/assemblyteam.py
index 9d387e63da18c79e709a413ef75aa36d6e726ade..50cab1e451c8cb35e33b0879415e8ed5c53f8033 100644
--- a/src/backoffice/views/assemblyteam.py
+++ b/src/backoffice/views/assemblyteam.py
@@ -123,7 +123,7 @@ class AssembliesListMixin(AssemblyTeamMixin):
         # get the mode
         mode = (self.request.POST if self.request.method == 'POST' else self.request.GET).get('mode', self.default_assemblies_mode)
 
-        qs = Assembly.objects.associated_with_user(conference=self.conference, user=self.request.user, staff_can_see=True)
+        qs = Assembly.objects.associated_with_user(conference=self.conference, user=self.request.user, staff_can_see=True).order_by('slug')
         if mode == 'not_selected':
             pass
         elif self.active_page == 'assemblies':
diff --git a/src/backoffice/views/mixins.py b/src/backoffice/views/mixins.py
index 0b5e6867b95cc05e5165ec11ad1b00bb2cd416bf..9d2504930ed29426c6b97842dd8c535dee45f8d8 100644
--- a/src/backoffice/views/mixins.py
+++ b/src/backoffice/views/mixins.py
@@ -262,7 +262,7 @@ class AssemblyMixin(ConferenceLoginRequiredMixin):
 
         sidebar = []
         context['sidebar'] = {
-            'back_link': {'link': reverse('backoffice:index'), 'caption': _('myassemblies')},
+            'back_link': {'link': reverse('backoffice:index'), 'caption': _('AssemblyList__title__my_assemblies')},
             'title': assembly.slug,
             'title_link': reverse('backoffice:assembly', kwargs={'pk': assembly.id}),
             'items': sidebar,