diff --git a/aleksis/apps/alsijil/frontend/index.js b/aleksis/apps/alsijil/frontend/index.js
index edcda144ea3165daa773dab1f7a32176e34ecc54..39499709fc53be675964649ebd4643007501aeb8 100644
--- a/aleksis/apps/alsijil/frontend/index.js
+++ b/aleksis/apps/alsijil/frontend/index.js
@@ -411,7 +411,7 @@ export default {
         iconActive: "mdi-book-education",
         titleKey: "alsijil.coursebook.menu_title",
         toolbarTitle: "alsijil.coursebook.menu_title",
-        permission: "core.view_calendar_feed_rule",
+        permission: "alsijil.view_documentations_menu_rule",
       },
       children: [
         {
@@ -421,7 +421,7 @@ export default {
           meta: {
             titleKey: "alsijil.coursebook.menu_title",
             toolbarTitle: "alsijil.coursebook.menu_title",
-            permission: "core.view_calendar_feed_rule",
+            permission: "alsijil.view_documentations_menu_rule",
             fullWidth: true,
           },
         },
diff --git a/aleksis/apps/alsijil/rules.py b/aleksis/apps/alsijil/rules.py
index f48bf498db59bb86fc8c890cd1c802b46e698da6..206cde1cf3b50e5771626a7df77e2273bac95f0e 100644
--- a/aleksis/apps/alsijil/rules.py
+++ b/aleksis/apps/alsijil/rules.py
@@ -13,6 +13,7 @@ from aleksis.core.util.predicates import (
 from .util.predicates import (
     can_edit_documentation,
     can_view_documentation,
+    can_view_any_documentation,
     has_lesson_group_object_perm,
     has_person_group_object_perm,
     has_personal_note_group_perm,
@@ -382,6 +383,12 @@ view_documentations_for_group_predicate = has_person & (
 )
 add_perm("alsijil.view_documentations_for_group_rule", view_documentations_for_group_predicate)
 
+view_documentations_menu_predicate = has_person & (
+    has_global_perm("alsijil.view_documentation")
+    | can_view_any_documentation
+)
+add_perm("alsijil.view_documentations_menu_rule", view_documentations_menu_predicate)
+
 view_documentations_for_teacher_predicate = has_person & (
     has_global_perm("alsijil.view_documentation") | is_current_person
 )
diff --git a/aleksis/apps/alsijil/util/predicates.py b/aleksis/apps/alsijil/util/predicates.py
index 892d733af2f36b8c2018f70ee592919052ab8d36..d0b50940db8a3349906360584b1673b8dfd7b78a 100644
--- a/aleksis/apps/alsijil/util/predicates.py
+++ b/aleksis/apps/alsijil/util/predicates.py
@@ -1,6 +1,7 @@
 from typing import Any, Union
 
 from django.contrib.auth.models import User
+from django.db.models import Prefetch, Q
 from django.utils.timezone import localdate, localtime
 
 from rules import predicate
@@ -417,6 +418,14 @@ def can_view_documentation(user: User, obj: Documentation):
     return False
 
 
+@predicate
+def can_view_any_documentation(user: User):
+    """Predicate which checks if the user is allowed to view any documentation."""
+    allowed_lesson_events = LessonEvent.objects.related_to_person(user.person)
+
+    return Documentation.objects.filter(Q(teachers=user.person) | Q(lesson_event__in=allowed_lesson_events) | Q(course__teachers=user.person)).exists()
+
+
 @predicate
 def can_edit_documentation(user: User, obj: Documentation):
     """Predicate which checks if the user is allowed to edit or delete a documentation."""