diff --git a/src/backoffice/forms.py b/src/backoffice/forms.py
index e4482cf688867b6917aceded0a62c0e0b0ee4599..555f2481a9cb0285a921dc6d3e68e7dcaaf97fe6 100644
--- a/src/backoffice/forms.py
+++ b/src/backoffice/forms.py
@@ -114,6 +114,9 @@ class AssemblyEditForm(TranslatedFieldsForm):
             'assembly_location',
             'registration_details',
         ]
+        widgets = {
+            'assembly_location': forms.Textarea(attrs={'rows': 4}),
+        }
 
     def __init__(self, *args, staff_access: bool, staff_mode: bool, assembly_staff_access: bool, channel_staff_access: bool, **kwargs):
         super().__init__(*args, **kwargs)
@@ -149,7 +152,7 @@ class AssemblyEditForm(TranslatedFieldsForm):
             self.fields['is_remote'].disabled = True
 
     tags = forms.CharField(required=False)
-    parent_id = forms.UUIDField(required=False)
+    parent_id = forms.UUIDField(required=False, help_text="The parent assembly's ID")
 
     def clean_tags(self):
         # try to detect people delimiting tags with space instead of comma
diff --git a/src/backoffice/locale/de/LC_MESSAGES/django.po b/src/backoffice/locale/de/LC_MESSAGES/django.po
index 67f12b5e089629e86c64a8985c5285d280ba798d..4290e78bfcb7cac481bdb7368860a35f5067b7cc 100644
--- a/src/backoffice/locale/de/LC_MESSAGES/django.po
+++ b/src/backoffice/locale/de/LC_MESSAGES/django.po
@@ -294,18 +294,6 @@ msgstr "Ja"
 msgid "no"
 msgstr "Nein"
 
-# use translation from core
-msgid "Assembly__is_physical__help"
-msgstr ""
-
-# use translation from core
-msgid "Assembly__is_virtual__help"
-msgstr ""
-
-# use translation from core
-msgid "Assembly__is_remote__help"
-msgstr ""
-
 # use translation from core
 msgid "Assembly__state_assembly"
 msgstr ""
@@ -350,6 +338,9 @@ msgstr "Anmelde-Informationen"
 msgid "assembly_links"
 msgstr "Befreundete Assemblies"
 
+msgid "Edit"
+msgstr "Bearbeiten"
+
 msgid "no_entries"
 msgstr "keine Einträge"
 
@@ -410,6 +401,9 @@ msgstr "Bezug zu anderer Assembly herstellen"
 msgid "assemblyedit_links__intro"
 msgstr "Ihr fühlt euch einer anderen Assembly verbunden, möchtet eure Buddies in der Nähe haben? Lasst uns wissen wer sie sind!"
 
+msgid "remove"
+msgstr "entfernen"
+
 msgid "Event-new"
 msgstr "Neue Veranstaltung"
 
diff --git a/src/backoffice/locale/en/LC_MESSAGES/django.po b/src/backoffice/locale/en/LC_MESSAGES/django.po
index f55f82ac8283574887740a9c5c873128dd7a5aa9..5553fbae5d1970a18b668839ecde2a77f88d515e 100644
--- a/src/backoffice/locale/en/LC_MESSAGES/django.po
+++ b/src/backoffice/locale/en/LC_MESSAGES/django.po
@@ -294,18 +294,6 @@ msgstr "Yes"
 msgid "no"
 msgstr "No"
 
-# use translation from core
-msgid "Assembly__is_physical__help"
-msgstr ""
-
-# use translation from core
-msgid "Assembly__is_virtual__help"
-msgstr ""
-
-# use translation from core
-msgid "Assembly__is_remote__help"
-msgstr ""
-
 msgid "Assembly__state_assembly"
 msgstr "assembly"
 
@@ -348,6 +336,9 @@ msgstr "registration details"
 msgid "assembly_links"
 msgstr "related assemblies"
 
+msgid "Edit"
+msgstr ""
+
 msgid "no_entries"
 msgstr "no entries"
 
@@ -408,6 +399,9 @@ msgstr "Associate with another assembly"
 msgid "assemblyedit_links__intro"
 msgstr "You like to be close to your friends? Let us know who they are."
 
+msgid "remove"
+msgstr "remove"
+
 msgid "Event-new"
 msgstr "new event"
 
diff --git a/src/backoffice/templates/backoffice/assembly_badges.html b/src/backoffice/templates/backoffice/assembly_badges.html
index 055cb24c9745afa95580f63fc88e993ceded85d3..1c2ffcfc65347ebc6dbf329b5c5cb75055ee99c3 100644
--- a/src/backoffice/templates/backoffice/assembly_badges.html
+++ b/src/backoffice/templates/backoffice/assembly_badges.html
@@ -17,7 +17,7 @@
           {% trans "Badges" %}
           {% if can_manage %}
             <a href="{% url 'backoffice:assembly-create-badge' assembly=assembly.id %}"
-               class="btn btn-sm btn-primary float-right">+</a>
+               class="btn btn-sm btn-primary float-end">+</a>
           {% endif %}
         </div>
         <div class="card-body">
diff --git a/src/backoffice/templates/backoffice/assembly_basicdata.html b/src/backoffice/templates/backoffice/assembly_basicdata.html
index f68d03bc125219fcc63115e4085ec439bd20eab3..4779b582fb8f1285464aff7c5eb3f2328486ba1e 100644
--- a/src/backoffice/templates/backoffice/assembly_basicdata.html
+++ b/src/backoffice/templates/backoffice/assembly_basicdata.html
@@ -1,117 +1,87 @@
-{% load c3assemblies %}
 {% load i18n %}
-{% load widget_tweaks %}
+{% load django_bootstrap5 %}
 
-<div class="form-group row">
-  <div class="col-sm-9">
-    <label class="form-label" for="id_name" title="{{ form.name.help_text }}">{{ form.name.label_tag }}</label>
-    {% render_field form.name class+="form-control" title=form.name.help_text %}
-  </div>
-  <div class="col-sm-3">
-    <label class="form-label" for="id_slug" title="{{ form.slug.help_text }}">{{ form.slug.label_tag }}</label>
-    {% render_field form.slug class+="form-control" title=form.slug.help_text %}
-  </div>
+<div class="row">
+  <div class="col-md-8">{% bootstrap_field form.name %}</div>
+  <div class="col-md-4">{% bootstrap_field form.slug %}</div>
 </div>
 
-<div class="form-group row">
-  {% with conference.get_single_supported_assembly_type as c_ssat %}
-    {% if c_ssat == None %}
-      <div class="col-sm-2">
-        {% if conference.support_assembly_physical %}
-          <label class="form-label" for="id_is_physical">{{ form.is_physical.label_tag }}</label>
-          {% render_field form.is_physical class+="form-control" title=form.is_physical.help_text %}
-        {% endif %}
-      </div>
-      <div class="col-sm-2">
-        {% if conference.support_assembly_virtual %}
-          <label class="form-label" for="id_is_virtual">{{ form.is_virtual.label_tag }}</label>
-          {% render_field form.is_virtual class+="form-control" title=form.is_virtual.help_text %}
-        {% endif %}
-      </div>
-      <div class="col-sm-2">
-        {% if conference.support_assembly_remote %}
-          <label class="form-label" for="id_is_remote">{{ form.is_remote.label_tag }}</label>
-          {% render_field form.is_remote class+="form-control" title=form.is_remote.help_text %}
+<div class="row">
+  <div class="col">
+    {% with conference.get_single_supported_assembly_type as conf_single_assembly_type %}
+      <div class="row">
+        {% if conf_single_assembly_type == None %}
+          {% if conference.support_assembly_physical %}
+            <div class="col">{% bootstrap_field form.is_physical %}</div>
+          {% endif %}
+          {% if conference.support_assembly_virtual %}
+            <div class="col">{% bootstrap_field form.is_virtual %}</div>
+          {% endif %}
+          {% if conference.support_assembly_remote %}
+            <div class="col">{% bootstrap_field form.is_remote %}</div>
+          {% endif %}
+        {% else %}
+          <div class="col">
+            {% if assembly.is_physical %}
+              <label class="form-label" for="is_physical">{{ form.is_physical.label }}</label>
+              <div class="form-text" id="is_physical">{{ form.is_physical.help_text }}</div>
+            {% endif %}
+            {% if assembly.is_virtual %}
+              <label class="form-label" for="is_virtual">{{ form.is_virtual.label }}</label>
+              <div class="form-text" id="is_virtual">{{ form.is_virtual.help_text }}</div>
+            {% endif %}
+            {% if assembly.is_remote %}
+              <label class="form-label" for="is_remote">{{ form.is_remote.label }}</label>
+              <div class="form-text" id="is_remote">{{ form.is_remote.help_text }}</div>
+            {% endif %}
+          </div>
         {% endif %}
-      </div>
-    {% else %}
-      <div class="col-sm-6 text-muted"
-           title=" {% if assembly.is_physical %}{% trans "Assembly__is_physical__help" %}{% endif %} {% if assembly.is_virtual %}{% trans "Assembly__is_virtual__help" %}{% endif %} {% if assembly.is_remote %}{% trans "Assembly__is_remote__help" %}{% endif %} ">
-      </div>
-    {% endif %}
-  {% endwith %}
-  <div class="col-sm-{% if conference.support_channels %}3{% else %}6{% endif %}">
+      {% endwith %}
+    </div>
+  </div>
+  <div class="col-md-3">
     <label class="form-label" for="id_state_assembly">{% trans "Assembly__state_assembly" %}</label>
     <div id="id_state_assembly">{{ form.instance.get_state_assembly_display }}</div>
   </div>
   {% if conference.support_channels %}
-    <div class="col-sm-3">
+    <div class="col-md-3">
       <label class="form-label" for="id_state_channel">{% trans "Assembly__state_channel" %}</label>
       <div id="id_state_channel">{{ form.instance.get_state_channel_display }}</div>
     </div>
   {% endif %}
 </div>
 
-<div class="form-group row">
-  <div class="col-sm-12">
-    <label class="form-label"
-           for="id_banner_image"
-           title="{{ form.banner_image.help_text }}">{{ form.banner_image.label_tag }}</label>
-    {% render_field form.banner_image class+="form-control" title=form.banner_image.help_text %}
+<div class="row">
+  <div class="col">
+    <div class="col">{% bootstrap_field form.banner_image %}</div>
   </div>
 </div>
-
-<div class="form-group row">
-  <div class="col-sm-{% if conference.support_assembly_remote %}8{% else %}12{% endif %}">
-    <label class="form-label"
-           for="id_assembly_link"
-           title="{{ form.assembly_link.help_text }}">{{ form.assembly_link.label_tag }}</label>
-    {% render_field form.assembly_link class+="form-control" title=form.assembly_link.help_text type="url" %}
+<div class="row">
+  <div class="col">
+    <div class="col">{% bootstrap_field form.assembly_link %}</div>
   </div>
   {% if conference.support_assembly_remote %}
-    <div class="col-sm-4">
-      <label class="form-label"
-             for="id_assembly_location"
-             title="{{ form.assembly_location.help_text }}">{{ form.assembly_location.label_tag }}</label>
-      {% render_field form.assembly_location class+="form-control" title=form.assembly_location.help_text rows=3 %}
+    <div class="col-md-4">
+      <div class="col">{% bootstrap_field form.assembly_location %}</div>
     </div>
   {% endif %}
 </div>
 
-<div class="form-group row">
-  <div class="col-sm-6">
-    <label class="form-label" for="id_description_de">{{ form.description_de.label_tag }}</label>
-    {% render_field form.description_de class+="form-control" %}
-  </div>
-  <div class="col-sm-6">
-    <label class="form-label" for="id_description_en">{{ form.description_en.label_tag }}</label>
-    {% render_field form.description_en class+="form-control" %}
-  </div>
+<div class="row">
+  <div class="col-md">{% bootstrap_field form.description_de %}</div>
+  <div class="col-md">{% bootstrap_field form.description_en %}</div>
 </div>
 
 {% with handled_base_fields="name,slug,is_physical,is_virtual,is_remote,banner_image,assembly_link,assembly_location,description_de,description_en,registration_details"|split:"," %}
   {% for field in base_fields %}
     {% if field.name not in handled_base_fields %}
-      <div class="form-group row">
-        <label class="col-sm-2 col-form-label" for="frm{{ field.name }}">{{ field.label_tag }}</label>
-        <div class="col-sm-10{% if field.disabled %} text-muted{% endif %}">
-          {% if not field.disabled %}
-            {% render_field field class+="form-control" title=field.help_text %}
-          {% else %}
-            <input type="hidden" name="{{ field.name }}" value="{{ field.value }}">
-            {% render_field field class+="form-control" disabled="disabled" %}
-          {% endif %}
-          {% if field.help_text %}<small class="form-text text-muted">{{ field.help_text }}</small>{% endif %}
-          {% for error in field.errors %}<div class="invalid-feedback">{{ error }}</div>{% endfor %}
-        </div>
+      <div class="row">
+        <div class="col">{% bootstrap_field field %}</div>
       </div>
     {% endif %}
   {% endfor %}
 {% endwith %}
 
-<div class="form-group row text-muted">
-  <div class="col-sm-12">
-    <label class="form-label" for="id_registration_details">{{ form.registration_details.label_tag }}</label>
-    {% render_field form.registration_details class+="form-control" title=form.registration_details.help_text %}
-  </div>
+<div class="row text-muted">
+  <div class="col">{% bootstrap_field form.registration_details %}</div>
 </div>
diff --git a/src/backoffice/templates/backoffice/assembly_detail.html b/src/backoffice/templates/backoffice/assembly_detail.html
index 4a5503cc67e4156a54b25351719068f47b0294ea..af23a6f1c85adce251871ce058e2d44e45154d93 100644
--- a/src/backoffice/templates/backoffice/assembly_detail.html
+++ b/src/backoffice/templates/backoffice/assembly_detail.html
@@ -10,13 +10,13 @@
     <div class="col-md-10">
       <div class="card border-primary">
         <div class="card-header bg-primary text-white">
-          {% if assembly.is_official %}<span class="badge badge-light float-right">official</span>{% endif %}
+          {% if assembly.is_official %}<span class="badge badge-light float-end">official</span>{% endif %}
           {% if can_manage %}
-            <span class="float-right"><a href="{% url 'backoffice:assembly-edit' pk=assembly.pk %}"
+            <span class="float-end"><a href="{% url 'backoffice:assembly-edit' pk=assembly.pk %}"
    class="btn btn-sm btn-light">{% trans "edit" %}</a></span>
           {% endif %}
           {% if assembly.is_public %}
-            <a class="float-right btn btn-sm btn-info me-2"
+            <a class="float-end btn btn-sm btn-info me-2"
                href="{% hub_absolute 'plainui:assembly' assembly_slug=assembly.slug %}">{% trans "public" %}</a>
           {% endif %}
           {{ assembly.name }}
@@ -119,7 +119,13 @@
     {% if assembly.hierarchy == 'regular' %}
       <div class="col-md-12">
         <div class="card">
-          <div class="card-header">{% trans "assembly_links" %}</div>
+          <div class="card-header">
+            {% trans "assembly_links" %}
+            <a class="float-end btn btn-primary btn-sm"
+               href="{% url 'backoffice:assembly-editlinks' pk=assembly.pk %}"
+               target="_blank"
+               title="{% trans "Edit" %}">{% trans "Edit" %}</a>
+          </div>
           <div class="card-body">
             {% with la=assembly.linked_assemblies %}
               {% if la|length > 0 %}
diff --git a/src/backoffice/templates/backoffice/assembly_edit.html b/src/backoffice/templates/backoffice/assembly_edit.html
index 1b5cead2dc6c4d41bbf5b420f6f48ff6ada7354f..84743ef972261c01dc1d86154f622b15cb09acde 100644
--- a/src/backoffice/templates/backoffice/assembly_edit.html
+++ b/src/backoffice/templates/backoffice/assembly_edit.html
@@ -1,7 +1,5 @@
 {% extends "backoffice/base.html" %}
 {% load i18n %}
-{% load static %}
-{% load widget_tweaks %}
 
 {% block content %}
   {% include "backoffice/assembly_edit_header.html" %}
@@ -61,9 +59,8 @@
               <p>{% trans "assemblyedit_parent__intro" %}</p>
 
               <div class="input-group">
-                <label class="form-label" for="assembly_parent">{% trans "assembly_parent" %}</label>
-                &nbsp;
-                <select id="assembly_parent" name="parent_id">
+                <label class="input-group-text" for="assembly_parent">{% trans "assembly_parent" %}</label>
+                <select class="form-select" id="assembly_parent" name="parent_id">
                   <option value=""
                           {% if assembly.parent is None %}selected="selected"{% endif %}>
                     -- {% trans "none" %} --
@@ -89,18 +86,13 @@
       <div class="col-md-6">
         <div class="card">
           {% if not assembly.is_cluster %}
-            <div class="card-header">
-              {% trans "assemblyedit_links" %}
-              <a href="{% url 'backoffice:assembly-editlinks' pk=assembly.pk %}"
-                 target="_blank"
-                 title="{% trans "opensinnewpage" %}">({% trans "edit" %})</a>
-            </div>
+            <div class="card-header">{% trans "assemblyedit_links" %}</div>
             <div class="card-body">
               {% with la=assembly.linked_assemblies %}
                 {% if la|length > 0 %}
-                  <ul>
+                  <ul class="list-group">
                     {% for linked in la %}
-                      <li>
+                      <li class="list-group-item">
                         <a href="{% url 'backoffice:assembly' pk=linked.pk %}" target="_blank">{{ linked.name }}</a>
                       </li>
                     {% endfor %}
@@ -110,6 +102,13 @@
                 {% endif %}
               {% endwith %}
             </div>
+            <div class="card-footer">
+
+              <a class="float-end btn btn-primary"
+                 href="{% url 'backoffice:assembly-editlinks' pk=assembly.pk %}"
+                 target="_blank"
+                 title="{% trans "Edit" %}">{% trans "Edit" %} ({% trans "opensinnewpage" %})</a>
+            </div>
           {% else %}
             {# assembly.is_cluster #}
             <div class="card-header">
@@ -141,19 +140,25 @@
           <div class="card-header">Tags</div>
           <div class="card-body">
             <input id="tags"
+                   class="form-control"
                    type="text"
                    name="tags"
-                   value="{% for tag in assembly.sorted_tags %}{{ tag }}{% if not forloop.last %}, {% endif %}{% endfor %}">
-            <small class="form-text text-muted">{% trans "Assembly__tags__splitwithcomma" %}</small>
+                   value="{% for tag in assembly.sorted_tags %} {{ tag }} {% if not forloop.last %},{% endif %} {% endfor %}">
+            <div for="tags" class="form-text">{% trans "Assembly__tags__splitwithcomma" %}</div>
           </div>
         </div>
       </div>
     </div>
 
-    <div class="row pb-5">
-      <div class="col-md-12 text-right mb-5">
-        <button type="submit" class="btn btn-primary">{% trans "assemblyedit_submitbtn" %}</button>
+    <div class="row pb-5 mt-3">
+      <div class="col-md-12">
+        <div class="card">
+          <div class="card-footer text-end">
+            <button type="submit" class="btn btn-primary">{% trans "assemblyedit_submitbtn" %}</button>
+          </div>
+        </div>
       </div>
+
     </div>
   </form>
 {% endblock content %}
diff --git a/src/backoffice/templates/backoffice/assembly_editlinks.html b/src/backoffice/templates/backoffice/assembly_editlinks.html
index b08a37a0c1cdabbe2ac6bd7fa7ac02d3898adcc8..a9baba8428cde8781f30f665d17cd217ba41f5bf 100644
--- a/src/backoffice/templates/backoffice/assembly_editlinks.html
+++ b/src/backoffice/templates/backoffice/assembly_editlinks.html
@@ -24,14 +24,14 @@
             <form action="{% url 'backoffice:assembly-editlinks' pk=assembly.id %}"
                   method="post">
               {% csrf_token %}
-              <select class="form-control" name="add" required>
-                <option value="">({% trans "please_select" %})</option>
-                {% for a in candidates %}
-                  <option value="{{ a.pk }}"
-                          {% if a in links or a.pk == assembly.pk %}disabled{% endif %}>{{ a.name }}</option>
-                {% endfor %}
-              </select>
-              <button type="submit" class="btn btn-sm btn-secondary">{% trans "add" %}</button>
+              <div class="input-group">
+
+                <select class="form-select" name="add" required>
+                  <option value="">({% trans "please_select" %})</option>
+                  {% for a in candidates %}<option value="{{ a.pk }}">{{ a.name }}</option>{% endfor %}
+                </select>
+                <button type="submit" class="btn btn-sm btn-primary">{% trans "add" %}</button>
+              </div>
             </form>
           </div>
         </div>
@@ -44,15 +44,19 @@
           <div class="card-header">{% trans "assemblyedit_links" %}</div>
           <div class="card-body">
             {% if links|length > 0 %}
-              <ul>
+              <ul class="list-group">
                 {% for link in links %}
-                  <li>
-                    {{ link.name }} (Slug: {{ link.slug }})
+                  <li class="list-group-item">
                     <form action="{% url 'backoffice:assembly-editlinks' pk=assembly.id %}"
                           method="post">
+                      {{ link.name }} (Slug: {{ link.slug }})
                       {% csrf_token %}
                       <input type="hidden" name="delete" value="{{ link.pk }}">
-                      <button type="submit" class="btn btn-sm btn-secondary">{% trans "delete" %}</button>
+                      <span class="float-end">
+
+                        <button type="submit" class="btn btn-outline-danger btn-sm">{% trans "remove" %}</button>
+                      </span>
+
                     </form>
                   </li>
                 {% endfor %}
diff --git a/src/backoffice/templates/backoffice/assembly_events.html b/src/backoffice/templates/backoffice/assembly_events.html
index ec65a69bfd4c9dd41a5dd8d4499dcc22f24118bf..3229cb926bff88470fcbdd91d14cf664501a2857 100644
--- a/src/backoffice/templates/backoffice/assembly_events.html
+++ b/src/backoffice/templates/backoffice/assembly_events.html
@@ -56,7 +56,7 @@
           {% trans "Events" %}
           {% if can_manage %}
             <a href="{% url 'backoffice:assembly-create-event' assembly=assembly.id %}"
-               class="btn btn-sm btn-primary float-right">+</a>
+               class="btn btn-sm btn-primary float-end">+</a>
           {% endif %}
         </div>
         <div class="card-body">
diff --git a/src/backoffice/templates/backoffice/assembly_list_export.html b/src/backoffice/templates/backoffice/assembly_list_export.html
index 62e8176083417b5076af34546906029a6d467518..c8a03c94e06ea44e16478d851b34ad7392f0b375 100644
--- a/src/backoffice/templates/backoffice/assembly_list_export.html
+++ b/src/backoffice/templates/backoffice/assembly_list_export.html
@@ -8,7 +8,7 @@
     <div class="col-md-12">
       <div class="card border-default">
         <div class="card-header bg-default">
-          <span class="float-right">
+          <span class="float-end">
             <form class="form-inline"
                   method="get"
                   action="{% url 'backoffice:assemblieslist' variant=variant %}">
diff --git a/src/backoffice/templates/backoffice/assembly_members_edit.html b/src/backoffice/templates/backoffice/assembly_members_edit.html
index 23fc934277bae33df3af576341da71c29bd09631..8efb61e9d75f0b619227ccc71da5837a17631434 100644
--- a/src/backoffice/templates/backoffice/assembly_members_edit.html
+++ b/src/backoffice/templates/backoffice/assembly_members_edit.html
@@ -41,7 +41,7 @@
           </div>
         {% endfor %}
       </div>
-      <div class="card-footer text-right">
+      <div class="card-footer text-end">
         <button type="submit" class="btn btn-primary">{% trans "assemblyedit_submitbtn" %}</button>
       </div>
     </div>
diff --git a/src/backoffice/templates/backoffice/assembly_room.html b/src/backoffice/templates/backoffice/assembly_room.html
index ac51ff19d1501b8fdcbaf79dcd385b35569f787c..833226b5911e8d68bbab03dde83024b23f48d38e 100644
--- a/src/backoffice/templates/backoffice/assembly_room.html
+++ b/src/backoffice/templates/backoffice/assembly_room.html
@@ -23,11 +23,11 @@
         <div class="card border-default">
           <div class="card-header bg-default">
             {% if assembly.is_public %}
-              <a class="float-right btn btn-sm btn-info"
+              <a class="float-end btn btn-sm btn-info"
                  href="{% hub_absolute 'plainui:room' slug=room.slug %}">{% trans "public" %}</a>
             {% endif %}
             {% if room.id %}
-              <span class="text-muted float-right me-2" style="font-size: 75%;">ID: <strong>{{ room.id }}</strong></span>
+              <span class="text-muted float-end me-2" style="font-size: 75%;">ID: <strong>{{ room.id }}</strong></span>
             {% endif %}
             {% if room.name %}
               {% if room.room_type != 'project' %}
diff --git a/src/backoffice/templates/backoffice/assembly_room_wa.html b/src/backoffice/templates/backoffice/assembly_room_wa.html
index b1626d44d98d23adb7b4ca08b862681fd521a9ee..b258c7a759d4e94e8aba73b2c9cbae7420abf41e 100644
--- a/src/backoffice/templates/backoffice/assembly_room_wa.html
+++ b/src/backoffice/templates/backoffice/assembly_room_wa.html
@@ -26,7 +26,7 @@
       <div class="card border-default">
         <div class="card-header bg-default">
           {% if room.id %}
-            <span class="text-muted float-right" style="font-size: 75%;">ID: <strong>{{ room.id }}</strong></span>
+            <span class="text-muted float-end" style="font-size: 75%;">ID: <strong>{{ room.id }}</strong></span>
           {% endif %}
           {% if room.name %}
             {{ room.get_room_type_display }} {% trans "Room" %} "{{ room.name }}"
diff --git a/src/backoffice/templates/backoffice/assembly_room_wa_linterblock.html b/src/backoffice/templates/backoffice/assembly_room_wa_linterblock.html
index 7a233f0e54a15fa478314a947987636a24667a0b..3bae576a72a4731999699b70a438e9b72ea9cb52 100644
--- a/src/backoffice/templates/backoffice/assembly_room_wa_linterblock.html
+++ b/src/backoffice/templates/backoffice/assembly_room_wa_linterblock.html
@@ -74,7 +74,7 @@
     <h4 class="border-bottom">
       <code class="text-muted">{{ map }}</code>
     </h4>
-    <div class="pl-3">
+    <div class="ps-3">
       {% for category, issues in infos.items %}
         {% if issues|length > 0 %}
           <h5>{{ category }}</h5>
diff --git a/src/backoffice/templates/backoffice/base.html b/src/backoffice/templates/backoffice/base.html
index d87a697a7885c88421fa7fe289a2e3fdcb446ae6..c214f04791530d31c11c4e23e63c001021fe2f91 100644
--- a/src/backoffice/templates/backoffice/base.html
+++ b/src/backoffice/templates/backoffice/base.html
@@ -25,7 +25,7 @@
   </head>
 
   <body>
-    <nav class="navbar navbar-expand-lg navbar-dark bg-dark">
+    <nav class="navbar navbar-expand-lg navbar-dark bg-dark px-2">
       <a class="navbar-brand" href="{% url 'backoffice:index' %}">{{ conference.slug }} {% trans "title_suffix" %}</a>
       <button class="navbar-toggler"
               type="button"
@@ -140,7 +140,7 @@
                data-bs-toggle="dropdown"
                aria-haspopup="true"
                aria-expanded="false">{{ LANGUAGE_CODE }}</a>
-            <div class="dropdown-menu dropdown-menu-right"
+            <div class="dropdown-menu dropdown-menu-end"
                  aria-labelledby="navbarLangDropdown">
               <form method="post" action="{% url 'set_language' %}">
                 {% csrf_token %}
@@ -166,7 +166,7 @@
                  data-bs-toggle="dropdown"
                  aria-haspopup="true"
                  aria-expanded="false">{{ user.get_full_name|default:user.username }}</a>
-              <div class="dropdown-menu dropdown-menu-right"
+              <div class="dropdown-menu dropdown-menu-end"
                    aria-labelledby="navbarUserDropdown">
                 <a class="dropdown-item" href="{% url 'backoffice:profile' %}">{% trans "nav_profile" %}</a>
                 <a class="dropdown-item" href="{% url 'backoffice:password_change' %}">{% trans "nav_change_password" %}</a>
diff --git a/src/backoffice/templates/backoffice/schedule_source-detail.html b/src/backoffice/templates/backoffice/schedule_source-detail.html
index 8407cc6cd4fa8168bde1feb0f36f0d20e0e5f1d2..474b7c5d2d95350895583f87b5992ab3be16f9e3 100644
--- a/src/backoffice/templates/backoffice/schedule_source-detail.html
+++ b/src/backoffice/templates/backoffice/schedule_source-detail.html
@@ -11,7 +11,7 @@
   <div class="card mb-3">
     <div class="card-header">
       ID <code>{{ object.id }}</code>
-      <span class="float-right">
+      <span class="float-end">
         <a href="{% url 'backoffice:schedulesource-edit' pk=object.id %}"
            class="btn btn-sm btn-outline-primary text-primary">edit</a>
         <a href="{% url 'backoffice:schedulesource-remove' pk=object.id %}"
@@ -50,7 +50,7 @@
       <form action="{% url 'backoffice:schedulesource-import' pk=object.id %}"
             method="post">
         {% csrf_token %}
-        <button type="submit" class="btn btn-sm btn-primary float-right">run an import NOW</button>
+        <button type="submit" class="btn btn-sm btn-primary float-end">run an import NOW</button>
       </form>
       Imports
     </div>
diff --git a/src/backoffice/templates/backoffice/wa-map-detail.html b/src/backoffice/templates/backoffice/wa-map-detail.html
index f5da6bc2cdd3f9f20c5051dac53084a4c25fe19b..add7aac05150983fa5db5d698c6eac71899f0caa 100644
--- a/src/backoffice/templates/backoffice/wa-map-detail.html
+++ b/src/backoffice/templates/backoffice/wa-map-detail.html
@@ -216,7 +216,7 @@ $(function() {
       <div class="col col-md-12">
         <div class="card mt-3">
           <div class="card-header bg-{{ wa_linter.status }}">
-            <span class="float-right small bg-white p-1">
+            <span class="float-end small bg-white p-1">
               preview from <a href="{% url 'backoffice:assembly-room' assembly=room.assembly.id pk=room.id %}"
     title="maybe 403 for u?">assembly backoffice room page</a>
             </span>
diff --git a/src/backoffice/templates/backoffice/wa-session-detail.html b/src/backoffice/templates/backoffice/wa-session-detail.html
index 494270a9816e0a9a7bd852b1618efda4561e8cb5..707fdb23fa5afddca53677091deed55683882e75 100644
--- a/src/backoffice/templates/backoffice/wa-session-detail.html
+++ b/src/backoffice/templates/backoffice/wa-session-detail.html
@@ -9,13 +9,13 @@
             action="{% url 'backoffice:workadventure-session-delete' pk=object.id %}">
         {% csrf_token %}
         <input type="hidden" name="terminate" value="1">
-        <button class="btn btn-danger btn-sm ms-3 float-right" type="submit">terminate session</button>
+        <button class="btn btn-danger btn-sm ms-3 float-end" type="submit">terminate session</button>
       </form>
       <form method="post"
             action="{% url 'backoffice:workadventure-session-delete' pk=object.id %}">
         {% csrf_token %}
         <input type="hidden" name="terminate" value="0">
-        <button class="btn btn-outline-danger btn-sm ms-3 float-right" type="submit">delete session</button>
+        <button class="btn btn-outline-danger btn-sm ms-3 float-end" type="submit">delete session</button>
       </form>
       WorkAdventure session {{ object.id }}
     </div>
@@ -80,7 +80,7 @@
           <form method="post"
                 action="{% url 'backoffice:workadventure-session-pushdata' pk=object.id %}">
             {% csrf_token %}
-            <button class="btn btn-sm btn-primary float-right"
+            <button class="btn btn-sm btn-primary float-end"
                     type="submit"
                     title="push data to backend">push</button>
           </form>
diff --git a/src/backoffice/templates/backoffice/wa-texture-form.html b/src/backoffice/templates/backoffice/wa-texture-form.html
index d016ebb3e62c6eace2d3224aa29362265aee0910..deed0e5d373aee8e7632d9d61d521cd974767b61 100644
--- a/src/backoffice/templates/backoffice/wa-texture-form.html
+++ b/src/backoffice/templates/backoffice/wa-texture-form.html
@@ -10,7 +10,7 @@
         <form action="{% url 'backoffice:workadventure-texture-remove' pk=object.id %}"
               method="post">
           {% csrf_token %}
-          <button type="submit" class="btn btn-danger btn-sm float-right">delete</button>
+          <button type="submit" class="btn btn-danger btn-sm float-end">delete</button>
         </form>
       {% endif %}
       WorkAdventure Texture {{ object.id|default:"(NEW)" }}
diff --git a/src/backoffice/templates/backoffice/wa-texture-list.html b/src/backoffice/templates/backoffice/wa-texture-list.html
index 07aa4b349de4c11cdfd07d288843889f28c8e34a..fa59e034710fac0483e846d069ef2d91fc7fb79f 100644
--- a/src/backoffice/templates/backoffice/wa-texture-list.html
+++ b/src/backoffice/templates/backoffice/wa-texture-list.html
@@ -5,7 +5,7 @@
   <div class="card mt-3">
     <div class="card-header">
       <a href="{% url 'backoffice:workadventure-texture-add' %}"
-         class="btn btn-sm btn-secondary float-right">add</a>
+         class="btn btn-sm btn-secondary float-end">add</a>
       WorkAdventure Textures
       <span class="badge badge-primary">{{ object_list|length }}</span>
     </div>
diff --git a/src/backoffice/templates/backoffice/wiki_page_detail.html b/src/backoffice/templates/backoffice/wiki_page_detail.html
index f54315ced1a345b5ad07aeff7922cdc1d056dd08..037674a3a0154e9a977dc1acb1148e7c6e27259a 100644
--- a/src/backoffice/templates/backoffice/wiki_page_detail.html
+++ b/src/backoffice/templates/backoffice/wiki_page_detail.html
@@ -31,7 +31,7 @@
         {% endif %}
         {% bootstrap_form form %}
       </div>
-      <div class="card-footer text-right">
+      <div class="card-footer text-end">
         <button type="submit" class="btn btn-danger" form="delete_page">{% trans "StaticPage--delete-page" %}</button>
         <button type="submit" class="btn btn-primary">{% trans "assemblyedit_submitbtn" %}</button>
       </div>
diff --git a/src/backoffice/views/assemblies.py b/src/backoffice/views/assemblies.py
index 3208942e5a4c5400ec9ddf2ddcff58750cf44964..02d8186a3f7ab7fb112a6529cc4f93f8156ea61e 100644
--- a/src/backoffice/views/assemblies.py
+++ b/src/backoffice/views/assemblies.py
@@ -15,7 +15,7 @@ from django.utils.safestring import mark_safe
 from django.utils.text import format_lazy
 from django.utils.translation import get_language, gettext, gettext_noop
 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, FormView, UpdateView
 
 from core.integrations import BigBlueButton, Hangar, IntegrationError, WorkAdventure
@@ -540,6 +540,10 @@ class AssemblyEditLinksView(AssemblyMixin, View):
             Assembly.objects.associated_with_user(conference=self.conference, user=self.request.user)
             .filter(hierarchy=Assembly.Hierarchy.REGULAR)
             .exclude(state_assembly__in=[Assembly.State.NONE, Assembly.State.PLANNED, Assembly.State.HIDDEN, Assembly.State.REJECTED])
+            # Remove self from list (cannot link to self)
+            .exclude(pk=self.assembly.pk)
+            # Remove already linked assemblies
+            .exclude(related_assemblies__a=self.assembly)
         )
         candidates = list(candidates_qs.order_by('name'))
         context = self.get_context_data()
@@ -640,8 +644,9 @@ class AssemblyRoomView(AssemblyMixin, UpdateView):
         return reverse('backoffice:assembly-room', kwargs={'assembly': self.assembly.id, 'pk': self.object.id})
 
 
-class MembersView(AssemblyMixin, TemplateView):
+class MembersView(AssemblyMixin, ListView):
     template_name = 'backoffice/assembly_members.html'
+    model = AssemblyMember
 
     assembly_url_param = 'pk'
     assembly_management = True
@@ -651,11 +656,11 @@ class MembersView(AssemblyMixin, TemplateView):
             'member__communication_channels'
         )
 
-    def get_context_data(self, *args, **kwargs):
-        ctx = super().get_context_data(*args, **kwargs)
-        ctx['form'] = AssemblyAddMemberForm()
-        ctx['object_list'] = self.get_queryset()
-        return ctx
+    def get_context_data(self, **kwargs):
+        return {
+            **super().get_context_data(**kwargs),
+            'form': AssemblyAddMemberForm(),
+        }
 
     def post(self, *args, **kwargs):
         for data_pair in self.request.POST:
diff --git a/src/core/models/assemblies.py b/src/core/models/assemblies.py
index 5acc01978b75af7ddb30e0f9e21273af787f352e..bcc988744176e98a5195cebf60a81ace8cc8808c 100644
--- a/src/core/models/assemblies.py
+++ b/src/core/models/assemblies.py
@@ -354,6 +354,7 @@ class Assembly(TaggedItemMixin, models.Model):
     @property
     def linked_assemblies(self):
         qs = self.assembly_links.filter(is_public=True, type__in=AssemblyLink.PUBLIC_TYPES)
+        qs = qs.order_by('b__name')
         return [x.b for x in qs.select_related('b')]
 
     @property