diff --git a/src/backoffice/locale/de/LC_MESSAGES/django.po b/src/backoffice/locale/de/LC_MESSAGES/django.po
index b3cc091661bc1c6d3fe776d10e327e0fec9fdb66..89ce478d592bcb0675a2fe010a746fe16bb68a47 100644
--- a/src/backoffice/locale/de/LC_MESSAGES/django.po
+++ b/src/backoffice/locale/de/LC_MESSAGES/django.po
@@ -475,6 +475,10 @@ msgstr ""
 msgid "Assemblies"
 msgstr ""
 
+# use translation from core
+msgid "Assembly__location_state"
+msgstr ""
+
 msgid "assemblies_filtered_tag"
 msgstr "Es werden nur Assemblies mit dem folgenden Tag angezeigt:"
 
@@ -1922,6 +1926,9 @@ msgstr "abgelehnt"
 msgid "nav_assemblies_hidden"
 msgstr "versteckt"
 
+msgid "AssemblyTeam__placement"
+msgstr "Platzierung"
+
 msgid "lists"
 msgstr "Listen"
 
diff --git a/src/backoffice/locale/en/LC_MESSAGES/django.po b/src/backoffice/locale/en/LC_MESSAGES/django.po
index 3c2f31a824dc320d3d2e529b36b8629ab0ed1f59..82947e614461b264e496cb4e90c3f05195999048 100644
--- a/src/backoffice/locale/en/LC_MESSAGES/django.po
+++ b/src/backoffice/locale/en/LC_MESSAGES/django.po
@@ -475,6 +475,10 @@ msgstr ""
 msgid "Assemblies"
 msgstr ""
 
+# use translation from core
+msgid "Assembly__location_state"
+msgstr ""
+
 msgid "assemblies_filtered_tag"
 msgstr "Showing only assemblies tagged with:"
 
@@ -1928,6 +1932,9 @@ msgstr "rejected"
 msgid "nav_assemblies_hidden"
 msgstr "hidden"
 
+msgid "AssemblyTeam__placement"
+msgstr "placement"
+
 msgid "lists"
 msgstr "lists"
 
diff --git a/src/backoffice/templates/backoffice/assembly_list.html b/src/backoffice/templates/backoffice/assembly_list.html
index 09acf28e259cc139c9ca0f6c8b81a2a8ba5528c0..ff9fbf622ef70fbbf7efc1446d6e821b366f88bb 100644
--- a/src/backoffice/templates/backoffice/assembly_list.html
+++ b/src/backoffice/templates/backoffice/assembly_list.html
@@ -17,7 +17,12 @@
 
   <div class="card">
     <div class="card-header">
-      <span class="text-muted">{% trans "Assemblies" %}:</span> {{ mode_display }}
+      <span class="text-muted">{% trans "Assemblies" %}:</span>
+      {% if location_state %}
+        {% trans "Assembly__location_state" %} = <code>{{ location_state }}</code>
+      {% else %}
+        {{ mode_display }}
+      {% endif %}
     </div>
     <div class="card-body">
 
@@ -36,6 +41,7 @@
             <th>{% trans "Assembly__name" %}</th>
             <th title="{% trans "Assembly__is_official" %}">{% trans "Assembly__is_official__short" %}</th>
             <th>{% trans "Assembly__state" %}</th>
+            <th>{% trans "Assembly__location_state" %}</th>
             <th>{% trans "Assembly__last_update_staff" %}</th>
             <th>{% trans "Assembly__last_update_assembly" %}</th>
           </tr>
@@ -60,7 +66,7 @@
                   -
                 {% endif %}
               </td>
-
+              <td>{{ assembly.get_location_state_display }}</td>
               <td>
                 <span class="{% if assembly.last_activity_log_staff > assembly.last_activity_log_assembly %}text-success{% endif %}"
                       title="{% trans "Assembly__last_update_staff" %}">{{ assembly.last_activity_log_staff|naturaltime }}</span>
diff --git a/src/backoffice/views/assemblyteam.py b/src/backoffice/views/assemblyteam.py
index 42b35b619d1917f846ade973a2ed31a343a8a043..e57fc7563cd05a3c025ed524316bf5c47efcbd60 100644
--- a/src/backoffice/views/assemblyteam.py
+++ b/src/backoffice/views/assemblyteam.py
@@ -37,7 +37,6 @@ class AssemblyTeamMixin(ConferenceLoginRequiredMixin):
     base_view_name = 'backoffice:assemblies'
     list_view_name = 'backoffice:assemblieslist'
     sidebar_caption = _('nav_assemblies')
-    status_field = 'state'
 
     MODES = {
         'all': (('XMode', Q(state__exact=Assembly.State.HIDDEN)), _('nav_assemblies_all')),
@@ -54,6 +53,7 @@ class AssemblyTeamMixin(ConferenceLoginRequiredMixin):
         self.request.session['assembly_back'] = {'link': self.request.get_full_path(), 'title': str(self.sidebar_caption)}
 
         assemblies = []
+        placements = []
         lists = []
         context['sidebar'] = {
             'title': self.sidebar_caption,
@@ -63,6 +63,11 @@ class AssemblyTeamMixin(ConferenceLoginRequiredMixin):
                     'children': assemblies,
                     'expanded': True,
                 },
+                {
+                    'caption': _('AssemblyTeam__placement'),
+                    'children': placements,
+                    'expanded': True,
+                },
                 {
                     'caption': _('lists'),
                     'children': lists,
@@ -81,6 +86,15 @@ class AssemblyTeamMixin(ConferenceLoginRequiredMixin):
                 }
             )
 
+        for k, v in Assembly.LocationState.choices:
+            placements.append(
+                {
+                    'caption': v,
+                    'count': self.conference.assemblies.filter(location_state=str(k)).count(),
+                    'link': reverse(self.base_view_name) + '?location_state=' + k,
+                }
+            )
+
         lists.append(
             {
                 'caption': 'slug, name, friends & WA',
@@ -126,15 +140,20 @@ class AssembliesListMixin(AssemblyTeamMixin, FilteredListView):
     def get_queryset(self, **kwargs):
         # get the mode
         mode = (self.request.POST if self.request.method == 'POST' else self.request.GET).get('mode', self.default_assemblies_mode)
+        location_state = (self.request.POST if self.request.method == 'POST' else self.request.GET).get('location_state', None)
         query_filters = {}
 
-        if mode in self.MODES:
+        if location_state:
+            # TODO: allow filters to be combined
+            query_filters['location_state'] = location_state
+        elif mode in self.MODES:
             query_filters[self.MODES[mode][0][0]] = self.MODES[mode][0][1]
         else:
             messages.warning(self.request, f'unknown mode "{mode}", using "all"')
             mode = 'all'
             query_filters[self.MODES[mode][0][0]] = self.MODES[mode][0][1]
         self.assemblies_mode = mode
+        self.location_state = location_state
 
         qs = super().get_queryset(
             Assembly.objects.associated_with_user(conference=self.conference, user=self.request.user, staff_can_see=True), query_filters=query_filters
@@ -228,6 +247,7 @@ class AssembliesView(AssembliesListMixin, AlphabeticalPaginatorView):
 
         context['mode'] = self.assemblies_mode
         context['mode_display'] = self.MODES[self.assemblies_mode][1]
+        context['location_state'] = self.location_state
 
         # activate current sidebar item
         for sidebar_item in context['sidebar']['items'][0]['children']:
@@ -328,7 +348,7 @@ class AssembliesListsView(AssembliesListMixin):
 
     def prepare_registration(self):
         # assemblies with the (additional) registration data as columns
-        qs_fields = ['slug', 'name', self.status_field, 'hierarchy', 'parent__slug', 'assembly_links_agg', 'description', 'registration_details']
+        qs_fields = ['slug', 'name', 'state', 'location_state', 'hierarchy', 'parent__slug', 'assembly_links_agg', 'description', 'registration_details']
         qs = (
             self.get_queryset()
             .prefetch_related('assembly_links')
@@ -379,7 +399,7 @@ class AssembliesListsView(AssembliesListMixin):
         ctx['data'] = data
 
         # activate current sidebar item
-        for sidebar_item in ctx['sidebar']['items'][1]['children']:
+        for sidebar_item in ctx['sidebar']['items'][2]['children']:
             if sidebar_item['variant'] == variant:
                 sidebar_item['active'] = True
                 break