diff --git a/app/controllers/admin/application_controller.rb b/app/controllers/admin/application_controller.rb
index 44877c2ca6c1bad74748e8d284e6308881751e23..c61a843e58791e9a9ef8d7a41d369eb5a5ead517 100644
--- a/app/controllers/admin/application_controller.rb
+++ b/app/controllers/admin/application_controller.rb
@@ -1,6 +1,7 @@
 class Admin::ApplicationController < ApplicationController
   layout 'admin/layouts/application'
 
+  include WithFeatures
   include Admin::Filterable
 
   def set_theme
diff --git a/app/controllers/admin/application_controller/with_features.rb b/app/controllers/admin/application_controller/with_features.rb
new file mode 100644
index 0000000000000000000000000000000000000000..8ba479e4723be421901213aa23d6901b86fbf5bd
--- /dev/null
+++ b/app/controllers/admin/application_controller/with_features.rb
@@ -0,0 +1,34 @@
+module Admin::ApplicationController::WithFeatures
+  extend ActiveSupport::Concern
+
+  included do
+
+    def feature_administration?
+      current_university.feature_administration &&
+        can?(:read, Administration::Qualiopi::Criterion)
+    end
+    helper_method :feature_administration?
+
+    def feature_communication?
+      current_university.feature_communication &&
+        can?(:read, Communication::Website)
+    end
+    helper_method :feature_communication?
+
+    def feature_education?
+      current_university.feature_education &&
+        can?(:read, Education::Program)
+    end
+    helper_method :feature_education?
+
+    def feature_research?
+      current_university.feature_research && (
+        can?(:read, Research::Journal) ||
+        can?(:read, Research::Hal::Publication) ||
+        can?(:read, Research::Laboratory)
+      )
+    end
+    helper_method :feature_research?
+
+  end
+end
diff --git a/app/helpers/admin/application_helper.rb b/app/helpers/admin/application_helper.rb
index 062fcd4de92ca04d3b1e3f0c3639896f65d130d4..6ca939f24b1b54385cd985d8c5daa4b18b5828a1 100644
--- a/app/helpers/admin/application_helper.rb
+++ b/app/helpers/admin/application_helper.rb
@@ -52,8 +52,8 @@ module Admin::ApplicationHelper
 
   def osuny_panel(title = nil, subtitle: nil, action: nil, image: nil, &block)
     render  layout: "admin/layouts/themes/#{current_admin_theme}/panel",
-            locals: { 
-              title: title, 
+            locals: {
+              title: title,
               subtitle: subtitle,
               action: action,
               image: image
@@ -61,18 +61,18 @@ module Admin::ApplicationHelper
       capture(&block)
     end
   end
-  
+
   def osuny_label(title, classes: '')
     raw "<label class=\"form-label #{classes}\">#{title}</label>"
   end
 
   def if_appstack(string)
-    return '' if current_admin_theme != 'appstack' 
+    return '' if current_admin_theme != 'appstack'
     " #{string}"
   end
 
   def if_pure(string)
-    return '' if current_admin_theme != 'pure' 
+    return '' if current_admin_theme != 'pure'
     " #{string}"
   end
 
@@ -186,30 +186,6 @@ module Admin::ApplicationHelper
     }
   end
 
-  def feature_education?
-    can?(:read, Education::Program) && 
-    current_university.feature_education
-  end
-
-  def feature_research?
-    (
-      can?(:read, Research::Journal) || 
-      can?(:read, Research::Hal::Publication) || 
-      can?(:read, Research::Laboratory)
-    ) && 
-    current_university.feature_research
-  end
-
-  def feature_communication?
-    can?(:read, Communication::Website) && 
-    current_university.feature_communication
-  end
-
-  def feature_administration?
-    can?(:read, Administration::Qualiopi::Criterion) && 
-    current_university.feature_administration
-  end
-
   private
 
   def polymorphic_url_param(object_or_class, **options)
diff --git a/db/schema.rb b/db/schema.rb
index 6eb602e5d0bc9f3785cd034a9f2667480f279cbf..17b0322777d8f42728b47b4fd4c1211c8de1ab28 100644
--- a/db/schema.rb
+++ b/db/schema.rb
@@ -240,18 +240,6 @@ ActiveRecord::Schema[7.0].define(version: 2023_03_13_140557) do
     t.index ["communication_website_post_id", "communication_website_category_id"], name: "post_category"
   end
 
-  create_table "communication_website_connections", id: :uuid, default: -> { "gen_random_uuid()" }, force: :cascade do |t|
-    t.uuid "university_id", null: false
-    t.uuid "website_id", null: false
-    t.string "object_type", null: false
-    t.uuid "object_id", null: false
-    t.datetime "created_at", null: false
-    t.datetime "updated_at", null: false
-    t.index ["object_type", "object_id"], name: "index_communication_website_connections_on_object"
-    t.index ["university_id"], name: "index_communication_website_connections_on_university_id"
-    t.index ["website_id"], name: "index_communication_website_connections_on_website_id"
-  end
-
   create_table "communication_website_git_files", id: :uuid, default: -> { "public.gen_random_uuid()" }, force: :cascade do |t|
     t.string "previous_path"
     t.string "about_type", null: false
@@ -1062,8 +1050,6 @@ ActiveRecord::Schema[7.0].define(version: 2023_03_13_140557) do
   add_foreign_key "communication_website_categories", "education_programs", column: "program_id"
   add_foreign_key "communication_website_categories", "languages"
   add_foreign_key "communication_website_categories", "universities"
-  add_foreign_key "communication_website_connections", "communication_websites", column: "website_id"
-  add_foreign_key "communication_website_connections", "universities"
   add_foreign_key "communication_website_git_files", "communication_websites", column: "website_id"
   add_foreign_key "communication_website_imported_authors", "communication_website_imported_websites", column: "website_id"
   add_foreign_key "communication_website_imported_authors", "universities"