diff --git a/src/backoffice/templates/backoffice/assembly_editchildren.html b/src/backoffice/templates/backoffice/assembly_editchildren.html
index ac8f2c29d80521a5c9b7f22a397b6b205cf1794b..e325c1703ec39944f7ce7da8f61ad2ac9fe305e0 100644
--- a/src/backoffice/templates/backoffice/assembly_editchildren.html
+++ b/src/backoffice/templates/backoffice/assembly_editchildren.html
@@ -47,7 +47,7 @@
         <ul>
           {% for child in children %}
             <li>
-              <a href="{% url 'backoffice:assembly' pk=child.id %}">{{ child.name }}</a>
+              {% if child.state_assembly == "hidden" %}<i class="bi bi-eye-slash" title='hidden'></i> {% endif %}<a href="{% url 'backoffice:assembly' pk=child.id %}">{{ child.name }}</a>
               <form action="{% url 'backoffice:assembly-editchildren' pk=assembly.id %}" method="POST" style="display: inline;">{% csrf_token %}
                 <input type="hidden" name="delete" value="{{ child.pk }}">
                 <button type="submit" class="btn btn-sm btn-secondary">{% trans 'delete' %}</button>
@@ -64,4 +64,4 @@
   </div>
 </div>
 
-{% endblock %}
\ No newline at end of file
+{% endblock %}
diff --git a/src/backoffice/views/assemblyteam.py b/src/backoffice/views/assemblyteam.py
index 37ffb36218e6349e1128d3f399dc173753bf1b43..4b29353b1cc69dd24ce697552438484638f2754f 100644
--- a/src/backoffice/views/assemblyteam.py
+++ b/src/backoffice/views/assemblyteam.py
@@ -41,7 +41,8 @@ class AssemblyTeamMixin(ConferenceLoginRequiredMixin):
         'accepted': (Q(state_assembly__in=Assembly.PUBLIC_STATES), _('nav_assemblies_accepted')),
         'pending': (Q(state_assembly__in=[Assembly.State.REGISTERED]), _('nav_assemblies_pending')),
         'planned': (Q(state_assembly__in=[Assembly.State.PLANNED]), _('nav_assemblies_planned')),
-        'rejected': (Q(state_assembly__in=[Assembly.State.REJECTED, Assembly.State.HIDDEN]), _('nav_assemblies_rejected')),
+        'rejected': (Q(state_assembly__in=[Assembly.State.REJECTED]), _('nav_assemblies_rejected')),
+        'hidden': (Q(state_assembly__in=[Assembly.State.HIDDEN]), _('nav_assemblies_hidden')),
         'not_selected': (Q(state_assembly__in=[Assembly.State.NONE]), _('nav_assemblies_not_selected')),
     }
 
diff --git a/src/backoffice/views/channelteam.py b/src/backoffice/views/channelteam.py
index bee9d64cf481a98404e49e4a9c8f07574b9b49d5..e8c259fdd23cc9c41e1ace79b024c0fdf5a045bf 100644
--- a/src/backoffice/views/channelteam.py
+++ b/src/backoffice/views/channelteam.py
@@ -14,7 +14,8 @@ class ChannelsMixin:
         'accepted': (Q(state_channel__in=Assembly.PUBLIC_STATES), _('nav_channels_accepted')),
         'pending': (Q(state_channel__in=[Assembly.State.REGISTERED]), _('nav_channels_pending')),
         'planned': (Q(state_channel__in=[Assembly.State.PLANNED]), _('nav_channels_planned')),
-        'rejected': (Q(state_channel__in=[Assembly.State.REJECTED, Assembly.State.HIDDEN]), _('nav_channels_rejected')),
+        'rejected': (Q(state_channel__in=[Assembly.State.REJECTED]), _('nav_channels_rejected')),
+        'hidden': (Q(state_channel__in=[Assembly.State.HIDDEN]), _('nav_channels_hidden')),
     }
     permission_required = ['core.channel_team']
     active_page = 'channels'
diff --git a/src/backoffice/views/mixins.py b/src/backoffice/views/mixins.py
index 30d6190c712bcbc119e67c2b25d4825755d6aa04..20bd7303b50c41cbdbcb4b2fa3af4ae9807a7b59 100644
--- a/src/backoffice/views/mixins.py
+++ b/src/backoffice/views/mixins.py
@@ -181,11 +181,7 @@ class AssemblyMixin(ConferenceLoginRequiredMixin):
         if assembly.has_user(self.request.user):
             # don't set self._staff_mode = False here as this would prevent assembly team members to edit their own assemblies
 
-            if (
-                not self._staff_access
-                and assembly.state_assembly in [Assembly.State.NONE, Assembly.State.HIDDEN]
-                and assembly.state_channel in [Assembly.State.NONE, Assembly.State.HIDDEN]
-            ):
+            if not self._staff_access and assembly.state_assembly in [Assembly.State.NONE] and assembly.state_channel in [Assembly.State.NONE]:
                 raise Assembly.DoesNotExist
 
         # neither owner/manager nor assembly team? go away
diff --git a/src/core/models/assemblies.py b/src/core/models/assemblies.py
index 9a8e05ed415f3092d9b79e334ace0a497445d888..7e8139efa490eb36edf4637b6892b26b421b71d9 100644
--- a/src/core/models/assemblies.py
+++ b/src/core/models/assemblies.py
@@ -71,7 +71,7 @@ class AssemblyManager(models.Manager):
         qs = qs.filter(members__member=user)
 
         # but don't show "hidden" ones to the user
-        qs = qs.exclude(state_assembly__in=[Assembly.State.NONE, Assembly.State.HIDDEN], state_channel__in=[Assembly.State.NONE, Assembly.State.HIDDEN])
+        qs = qs.exclude(state_assembly__in=[Assembly.State.NONE], state_channel__in=[Assembly.State.NONE])
 
         # finally return the resulting QuerySet
         return qs
@@ -107,9 +107,6 @@ class AssemblyManager(models.Manager):
         # lookup via AssemblyMember
         qs = qs.filter(members__member=user, members__can_manage_assembly=True)
 
-        # but don't show "hidden" ones to the user
-        qs = qs.exclude(state_assembly__in=[Assembly.State.HIDDEN])
-
         # finally return the resulting QuerySet
         return qs
 
@@ -406,7 +403,7 @@ class Assembly(TaggedItemMixin, models.Model):
 
     @property
     def children(self):
-        return Assembly.objects.filter(parent=self).exclude(state_assembly=Assembly.State.HIDDEN).order_by('name')
+        return Assembly.objects.filter(parent=self).order_by('name')
 
     @property
     def public_children(self):