diff --git a/app/controllers/admin/administration/application_controller.rb b/app/controllers/admin/administration/application_controller.rb
new file mode 100644
index 0000000000000000000000000000000000000000..34ecbb945e646863c90619eb4a97be896c0fae8b
--- /dev/null
+++ b/app/controllers/admin/administration/application_controller.rb
@@ -0,0 +1,6 @@
+class Admin::Administration::ApplicationController < Admin::ApplicationController
+  def breadcrumb
+    super
+    add_breadcrumb Administration.model_name.human
+  end
+end
diff --git a/app/controllers/admin/features/education/qualiopi/criterions_controller.rb b/app/controllers/admin/administration/qualiopi/criterions_controller.rb
similarity index 51%
rename from app/controllers/admin/features/education/qualiopi/criterions_controller.rb
rename to app/controllers/admin/administration/qualiopi/criterions_controller.rb
index 36d3ce93d96b8d57ca23aca231ff43d2e48e1cb8..35b2371253ffce56a46e4eeb701ef13f6197cc78 100644
--- a/app/controllers/admin/features/education/qualiopi/criterions_controller.rb
+++ b/app/controllers/admin/administration/qualiopi/criterions_controller.rb
@@ -1,5 +1,5 @@
-class Admin::Features::Education::Qualiopi::CriterionsController < Admin::Features::Education::ApplicationController
-  load_and_authorize_resource class: Features::Education::Qualiopi::Criterion
+class Admin::Administration::Qualiopi::CriterionsController < Admin::Administration::ApplicationController
+  load_and_authorize_resource class: Administration::Qualiopi::Criterion
 
   def index
     breadcrumb
@@ -13,7 +13,7 @@ class Admin::Features::Education::Qualiopi::CriterionsController < Admin::Featur
 
   def breadcrumb
     super
-    add_breadcrumb Features::Education::Qualiopi.model_name.human, admin_features_education_qualiopi_criterions_path
+    add_breadcrumb Administration::Qualiopi.model_name.human, admin_administration_qualiopi_criterions_path
     if @criterion
       add_breadcrumb @criterion, [:admin, @criterion]
     end
diff --git a/app/controllers/admin/features/education/qualiopi/indicators_controller.rb b/app/controllers/admin/administration/qualiopi/indicators_controller.rb
similarity index 59%
rename from app/controllers/admin/features/education/qualiopi/indicators_controller.rb
rename to app/controllers/admin/administration/qualiopi/indicators_controller.rb
index 3a023d5623a49e30bfcf91b816161134991ea139..4527aec57bd7cea38f575a5fdd93843e158f1749 100644
--- a/app/controllers/admin/features/education/qualiopi/indicators_controller.rb
+++ b/app/controllers/admin/administration/qualiopi/indicators_controller.rb
@@ -1,5 +1,5 @@
-class Admin::Features::Education::Qualiopi::IndicatorsController < Admin::Features::Education::ApplicationController
-  load_and_authorize_resource class: Features::Education::Qualiopi::Indicator
+class Admin::Administration::Qualiopi::IndicatorsController < Admin::Administration::ApplicationController
+  load_and_authorize_resource class: Administration::Qualiopi::Indicator
 
   def index
     breadcrumb
@@ -13,7 +13,7 @@ class Admin::Features::Education::Qualiopi::IndicatorsController < Admin::Featur
 
   def breadcrumb
     super
-    add_breadcrumb Features::Education::Qualiopi.model_name.human(count: 2), admin_features_education_qualiopi_criterions_path
+    add_breadcrumb Administration::Qualiopi.model_name.human(count: 2), admin_administration_qualiopi_criterions_path
     if @indicator
       add_breadcrumb @indicator.criterion, [:admin, @indicator.criterion]
       add_breadcrumb @indicator, [:admin, @indicator]
diff --git a/app/controllers/admin/communication/application_controller.rb b/app/controllers/admin/communication/application_controller.rb
new file mode 100644
index 0000000000000000000000000000000000000000..f9e5ff5722e8aa43bb5a8d27a0c3934db6c89ab5
--- /dev/null
+++ b/app/controllers/admin/communication/application_controller.rb
@@ -0,0 +1,6 @@
+class Admin::Communication::ApplicationController < Admin::ApplicationController
+  def breadcrumb
+    super
+    add_breadcrumb Communication.model_name.human
+  end
+end
diff --git a/app/controllers/admin/communication/websites_controller.rb b/app/controllers/admin/communication/websites_controller.rb
new file mode 100644
index 0000000000000000000000000000000000000000..f8e4754c3f57753ba7a9b342d25d6ae270b67474
--- /dev/null
+++ b/app/controllers/admin/communication/websites_controller.rb
@@ -0,0 +1,56 @@
+class Admin::Communication::WebsitesController < Admin::Communication::ApplicationController
+  load_and_authorize_resource class: Communication::Website
+
+  def index
+    @websites = current_university.communication_websites
+    breadcrumb
+  end
+
+  def show
+    breadcrumb
+  end
+
+  def new
+    breadcrumb
+  end
+
+  def edit
+    breadcrumb
+  end
+
+  def create
+    @website.university = current_university
+    if @website.save
+      redirect_to [:admin, @website], notice: "Site was successfully created."
+    else
+      breadcrumb
+      render :new, status: :unprocessable_entity
+    end
+  end
+
+  def update
+    if @website.update(website_params)
+      redirect_to [:admin, @website], notice: "Site was successfully updated."
+    else
+      breadcrumb
+      render :edit, status: :unprocessable_entity
+    end
+  end
+
+  def destroy
+    @website.destroy
+    redirect_to admin_communication_websites_url, notice: "Site was successfully destroyed."
+  end
+
+  protected
+
+  def breadcrumb
+    super
+    add_breadcrumb Communication::Website.model_name.human(count: 2), admin_communication_websites_path
+    breadcrumb_for @website
+  end
+
+  def website_params
+    params.require(:communication_website).permit(:name, :domain)
+  end
+end
diff --git a/app/controllers/admin/education/application_controller.rb b/app/controllers/admin/education/application_controller.rb
new file mode 100644
index 0000000000000000000000000000000000000000..86e30db9058c5a882406849766e093d09d7a0c6c
--- /dev/null
+++ b/app/controllers/admin/education/application_controller.rb
@@ -0,0 +1,6 @@
+class Admin::Education::ApplicationController < Admin::ApplicationController
+  def breadcrumb
+    super
+    add_breadcrumb Education.model_name.human
+  end
+end
diff --git a/app/controllers/admin/features/education/programs_controller.rb b/app/controllers/admin/education/programs_controller.rb
similarity index 65%
rename from app/controllers/admin/features/education/programs_controller.rb
rename to app/controllers/admin/education/programs_controller.rb
index d376d83b4c0d49650b2f87ebb3f7e8d082714593..8518639e4aac8e4b871cd96dbd51b6c80dffb7a1 100644
--- a/app/controllers/admin/features/education/programs_controller.rb
+++ b/app/controllers/admin/education/programs_controller.rb
@@ -1,8 +1,8 @@
-class Admin::Features::Education::ProgramsController < Admin::Features::Education::ApplicationController
-  load_and_authorize_resource class: Features::Education::Program
+class Admin::Education::ProgramsController < Admin::Education::ApplicationController
+  load_and_authorize_resource class: Education::Program
 
   def index
-    @programs = current_university.features_education_programs
+    @programs = current_university.education_programs
     breadcrumb
   end
 
@@ -38,19 +38,19 @@ class Admin::Features::Education::ProgramsController < Admin::Features::Educatio
 
   def destroy
     @program.destroy
-    redirect_to admin_features_education_programs_url, notice: "Program was successfully destroyed."
+    redirect_to admin_education_programs_url, notice: "Program was successfully destroyed."
   end
 
   protected
 
   def breadcrumb
     super
-    add_breadcrumb Features::Education::Program.model_name.human(count: 2), admin_features_education_programs_path
+    add_breadcrumb Education::Program.model_name.human(count: 2), admin_education_programs_path
     breadcrumb_for @program
   end
 
   def program_params
-    params.require(:features_education_program)
+    params.require(:education_program)
           .permit(:name, :level, :capacity, :ects, :continuing,
             :prerequisites, :objectives, :duration, :registration, :pedagogy,
             :evaluation, :accessibility, :pricing, :contacts)
diff --git a/app/controllers/admin/features/education/application_controller.rb b/app/controllers/admin/features/education/application_controller.rb
deleted file mode 100644
index 20fee4e63413090772444b1ecd80066cf6f8dffc..0000000000000000000000000000000000000000
--- a/app/controllers/admin/features/education/application_controller.rb
+++ /dev/null
@@ -1,6 +0,0 @@
-class Admin::Features::Education::ApplicationController < Admin::ApplicationController
-  def breadcrumb
-    super
-    add_breadcrumb 'Enseignement'
-  end
-end
diff --git a/app/controllers/admin/features/education/dashboard_controller.rb b/app/controllers/admin/features/education/dashboard_controller.rb
deleted file mode 100644
index 072f60f724e6538913ee7d57ec5b3bdda85e791f..0000000000000000000000000000000000000000
--- a/app/controllers/admin/features/education/dashboard_controller.rb
+++ /dev/null
@@ -1,5 +0,0 @@
-class Admin::Features::Education::DashboardController < Admin::Features::Education::ApplicationController
-  def index
-    breadcrumb
-  end
-end
diff --git a/app/controllers/admin/features/websites/application_controller.rb b/app/controllers/admin/features/websites/application_controller.rb
deleted file mode 100644
index ad323abb97b07600fc781b25bb9829f10307d9e7..0000000000000000000000000000000000000000
--- a/app/controllers/admin/features/websites/application_controller.rb
+++ /dev/null
@@ -1,6 +0,0 @@
-class Admin::Features::Websites::ApplicationController < Admin::ApplicationController
-  def breadcrumb
-    super
-    add_breadcrumb Features::Websites.model_name.human, :admin_features_websites_dashboard_path
-  end
-end
diff --git a/app/controllers/admin/features/websites/dashboard_controller.rb b/app/controllers/admin/features/websites/dashboard_controller.rb
deleted file mode 100644
index 88ada28a5ff94a0fc98e6075a52b26ab177d71f3..0000000000000000000000000000000000000000
--- a/app/controllers/admin/features/websites/dashboard_controller.rb
+++ /dev/null
@@ -1,5 +0,0 @@
-class Admin::Features::Websites::DashboardController < Admin::Features::Websites::ApplicationController
-  def index
-    breadcrumb
-  end
-end
diff --git a/app/controllers/admin/features/websites/sites_controller.rb b/app/controllers/admin/features/websites/sites_controller.rb
deleted file mode 100644
index 5aac8fd87eb651b5d7cf063ef4a671354023020e..0000000000000000000000000000000000000000
--- a/app/controllers/admin/features/websites/sites_controller.rb
+++ /dev/null
@@ -1,56 +0,0 @@
-class Admin::Features::Websites::SitesController < Admin::Features::Websites::ApplicationController
-  load_and_authorize_resource class: Features::Websites::Site
-
-  def index
-    @sites = current_university.features_websites_sites
-    breadcrumb
-  end
-
-  def show
-    breadcrumb
-  end
-
-  def new
-    breadcrumb
-  end
-
-  def edit
-    breadcrumb
-  end
-
-  def create
-    @site.university = current_university
-    if @site.save
-      redirect_to [:admin, @site], notice: "Site was successfully created."
-    else
-      breadcrumb
-      render :new, status: :unprocessable_entity
-    end
-  end
-
-  def update
-    if @site.update(site_params)
-      redirect_to [:admin, @site], notice: "Site was successfully updated."
-    else
-      breadcrumb
-      render :edit, status: :unprocessable_entity
-    end
-  end
-
-  def destroy
-    @site.destroy
-    redirect_to admin_features_websites_sites_url, notice: "Site was successfully destroyed."
-  end
-
-  protected
-
-  def breadcrumb
-    super
-    add_breadcrumb Features::Websites::Site.model_name.human(count: 2), admin_features_websites_sites_path
-    breadcrumb_for @site
-  end
-
-  def site_params
-    params.require(:features_websites_site).permit(:name, :domain)
-  end
-end
diff --git a/app/controllers/admin/research/application_controller.rb b/app/controllers/admin/research/application_controller.rb
index 3d6ceb0fb6556897b3c2814843c3690623e2eaf0..9ef7b886138ccb1a80d7503f6913068dc0dde0a9 100644
--- a/app/controllers/admin/research/application_controller.rb
+++ b/app/controllers/admin/research/application_controller.rb
@@ -4,6 +4,6 @@ class Admin::Research::ApplicationController < Admin::ApplicationController
 
   def breadcrumb
     super
-    add_breadcrumb 'Recherche'
+    add_breadcrumb Research.model_name.human
   end
 end
diff --git a/app/controllers/application_controller/with_context.rb b/app/controllers/application_controller/with_context.rb
index 34f202700c263ed7ecafb7db09cdb981dcacf4e8..73688317f1b920df823addacbacd1ff96f126a72 100644
--- a/app/controllers/application_controller/with_context.rb
+++ b/app/controllers/application_controller/with_context.rb
@@ -10,7 +10,7 @@ module ApplicationController::WithContext
     helper_method :current_university
 
     def current_website
-      @current_website ||= Features::Websites::Site.with_host(request.host)
+      @current_website ||= Communication::Website.with_host(request.host)
     end
     helper_method :current_website
 
@@ -20,7 +20,7 @@ module ApplicationController::WithContext
     helper_method :is_university?
 
     def is_website?
-      @is_website ||= !Features::Websites::Site.with_host(request.host).nil?
+      @is_website ||= !Communication::Website.with_host(request.host).nil?
     end
     helper_method :is_website?
 
diff --git a/app/controllers/communication/websites_controller.rb b/app/controllers/communication/websites_controller.rb
new file mode 100644
index 0000000000000000000000000000000000000000..b5507814a546bde0c7c15e4da43980ab919424f5
--- /dev/null
+++ b/app/controllers/communication/websites_controller.rb
@@ -0,0 +1,11 @@
+class Communication::WebsitesController < ApplicationController
+  def index
+    @sites = current_university.communication_websites
+    add_breadcrumb 'Sites', :communication_websites_path
+  end
+
+  def show
+    @site = current_university.communication_websites.find(params[id])
+    add_breadcrumb @site
+  end
+end
diff --git a/app/controllers/features/education/programs_controller.rb b/app/controllers/education/programs_controller.rb
similarity index 70%
rename from app/controllers/features/education/programs_controller.rb
rename to app/controllers/education/programs_controller.rb
index aaa2bb4faeef3b048a8012e5c7626e12568bdb24..03dfb5d6e4684dcfbd0fc4d5e2233bfd6c705d75 100644
--- a/app/controllers/features/education/programs_controller.rb
+++ b/app/controllers/education/programs_controller.rb
@@ -1,4 +1,4 @@
-class Features::Education::ProgramsController < ApplicationController
+class Education::ProgramsController < ApplicationController
   load_and_authorize_resource
 
   add_breadcrumb 'Programmes', :features_education_programs_path
diff --git a/app/controllers/features/websites/sites_controller.rb b/app/controllers/features/websites/sites_controller.rb
deleted file mode 100644
index 9b40c2839b8509316d17a8e70a5dfb6b9e9fd9d1..0000000000000000000000000000000000000000
--- a/app/controllers/features/websites/sites_controller.rb
+++ /dev/null
@@ -1,11 +0,0 @@
-class Features::Websites::SitesController < ApplicationController
-  def index
-    @sites = current_university.features_websites_sites
-    add_breadcrumb 'Sites', :features_websites_sites_path
-  end
-
-  def show
-    @site = current_university.features_websites_sites.find(params[id])
-    add_breadcrumb @site
-  end
-end
diff --git a/app/models/features/websites.rb b/app/models/administration.rb
similarity index 66%
rename from app/models/features/websites.rb
rename to app/models/administration.rb
index 9c3fd0289ae38ec618a92337565520c846158cf2..2be8b6a2e939d0974afa00ee26b20ede1b1ba961 100644
--- a/app/models/features/websites.rb
+++ b/app/models/administration.rb
@@ -1,8 +1,8 @@
-module Features::Websites
+module Administration
   extend ActiveModel::Naming
   extend ActiveModel::Translation
 
   def self.table_name_prefix
-    'features_websites_'
+    'administration_'
   end
 end
diff --git a/app/models/features/education/qualiopi.rb b/app/models/administration/qualiopi.rb
similarity index 58%
rename from app/models/features/education/qualiopi.rb
rename to app/models/administration/qualiopi.rb
index 9a4458c552e323ed0c025b45b21d8d27b18a2550..0a41ae697782c546fc41151fe3cfcb374cb4dd05 100644
--- a/app/models/features/education/qualiopi.rb
+++ b/app/models/administration/qualiopi.rb
@@ -1,8 +1,8 @@
-module Features::Education::Qualiopi
+module Administration::Qualiopi
   extend ActiveModel::Naming
   extend ActiveModel::Translation
 
   def self.table_name_prefix
-    'features_education_qualiopi_'
+    'administration_qualiopi_'
   end
 end
diff --git a/app/models/features/education/qualiopi/criterion.rb b/app/models/administration/qualiopi/criterion.rb
similarity index 86%
rename from app/models/features/education/qualiopi/criterion.rb
rename to app/models/administration/qualiopi/criterion.rb
index d4d2c8307103003f2259d1cae0e9e2030032c0ed..ea4d9c4e6560e8ee265d38a4e99015dd477a653b 100644
--- a/app/models/features/education/qualiopi/criterion.rb
+++ b/app/models/administration/qualiopi/criterion.rb
@@ -9,7 +9,7 @@
 #  created_at  :datetime         not null
 #  updated_at  :datetime         not null
 #
-class Features::Education::Qualiopi::Criterion < ApplicationRecord
+class Administration::Qualiopi::Criterion < ApplicationRecord
   has_many :indicators, dependent: :destroy
 
   validates :number, uniqueness: true
diff --git a/app/models/features/education/qualiopi/indicator.rb b/app/models/administration/qualiopi/indicator.rb
similarity index 91%
rename from app/models/features/education/qualiopi/indicator.rb
rename to app/models/administration/qualiopi/indicator.rb
index ec78f46eda38c0115f2a5727001ddb731c19f37d..9d4aa77769ac1bd145aa13077e2b19944ad79edb 100644
--- a/app/models/features/education/qualiopi/indicator.rb
+++ b/app/models/administration/qualiopi/indicator.rb
@@ -22,7 +22,7 @@
 #
 #  fk_rails_...  (criterion_id => features_education_qualiopi_criterions.id)
 #
-class Features::Education::Qualiopi::Indicator < ApplicationRecord
+class Administration::Qualiopi::Indicator < ApplicationRecord
   belongs_to :criterion
 
   validates :number, uniqueness: true
diff --git a/app/models/communication.rb b/app/models/communication.rb
new file mode 100644
index 0000000000000000000000000000000000000000..a0de835696ab4dfd5bcbff4089f50751dd4f8824
--- /dev/null
+++ b/app/models/communication.rb
@@ -0,0 +1,8 @@
+module Communication
+  extend ActiveModel::Naming
+  extend ActiveModel::Translation
+
+  def self.table_name_prefix
+    'communication_'
+  end
+end
diff --git a/app/models/features/websites/site.rb b/app/models/communication/website.rb
similarity index 96%
rename from app/models/features/websites/site.rb
rename to app/models/communication/website.rb
index ff511170d91a8973b194a0cea3c1923729fd11c0..6d463a3ab1ac95154e825b05e4f232dc50e68d63 100644
--- a/app/models/features/websites/site.rb
+++ b/app/models/communication/website.rb
@@ -17,7 +17,7 @@
 #
 #  fk_rails_...  (university_id => universities.id)
 #
-class Features::Websites::Site < ApplicationRecord
+class Communication::Website < ApplicationRecord
   belongs_to :university
 
   def self.with_host(host)
diff --git a/app/models/features/education.rb b/app/models/education.rb
similarity index 66%
rename from app/models/features/education.rb
rename to app/models/education.rb
index 9fa93d2be226d25ed51905131e295efb3e1ced24..e344ff6a4eb670acefb2ee9cf5b08b3edd9dc02d 100644
--- a/app/models/features/education.rb
+++ b/app/models/education.rb
@@ -1,8 +1,8 @@
-module Features::Education
+module Education
   extend ActiveModel::Naming
   extend ActiveModel::Translation
 
   def self.table_name_prefix
-    'features_education_'
+    'education_'
   end
 end
diff --git a/app/models/features/education/program.rb b/app/models/education/program.rb
similarity index 94%
rename from app/models/features/education/program.rb
rename to app/models/education/program.rb
index b337ee29d1845c0997ffb9fc6e6ddb1871c9e2ca..e4c8363fafa6eceac5afbb291c7d8418ca7088bf 100644
--- a/app/models/features/education/program.rb
+++ b/app/models/education/program.rb
@@ -29,7 +29,7 @@
 #
 #  fk_rails_...  (university_id => universities.id)
 #
-class Features::Education::Program < ApplicationRecord
+class Education::Program < ApplicationRecord
   belongs_to :university
 
   enum level: {
diff --git a/app/models/feature.rb b/app/models/feature.rb
deleted file mode 100644
index 9ccc95d43ec52681e57f9a6a3165838704dba608..0000000000000000000000000000000000000000
--- a/app/models/feature.rb
+++ /dev/null
@@ -1,8 +0,0 @@
-class Feature
-  def self.all
-    [
-      :education,
-      :websites
-    ]
-  end
-end
diff --git a/app/models/university.rb b/app/models/university.rb
index 97da77b18388d504942c10c1867281afbf0c5aea..d954d77db89a5b0ae0919ad8b3aeea85e354dc9c 100644
--- a/app/models/university.rb
+++ b/app/models/university.rb
@@ -19,8 +19,9 @@ class University < ApplicationRecord
 
   include WithIdentifier
   include WithUsers
-  include WithFeatures
+  include WithEducation
   include WithResearch
+  include WithCommunication
 
   def to_s
     "#{name}"
diff --git a/app/models/university/with_communication.rb b/app/models/university/with_communication.rb
new file mode 100644
index 0000000000000000000000000000000000000000..3278224b6e6c9748fe652e396b8cd82a7e7089e3
--- /dev/null
+++ b/app/models/university/with_communication.rb
@@ -0,0 +1,7 @@
+module University::WithCommunication
+  extend ActiveSupport::Concern
+
+  included do
+    has_many :communication_websites, class_name: 'Communication::Website', dependent: :destroy
+  end
+end
diff --git a/app/models/university/with_education.rb b/app/models/university/with_education.rb
new file mode 100644
index 0000000000000000000000000000000000000000..35317c68f38b1f230b63a80de21ec1a6583c0775
--- /dev/null
+++ b/app/models/university/with_education.rb
@@ -0,0 +1,7 @@
+module University::WithEducation
+  extend ActiveSupport::Concern
+
+  included do
+    has_many :education_programs, class_name: 'Education::Program', dependent: :destroy
+  end
+end
diff --git a/app/models/university/with_features.rb b/app/models/university/with_features.rb
deleted file mode 100644
index ebbd99ef40d1ebcf7d414a74574163b063e4508c..0000000000000000000000000000000000000000
--- a/app/models/university/with_features.rb
+++ /dev/null
@@ -1,11 +0,0 @@
-module University::WithFeatures
-  extend ActiveSupport::Concern
-
-  included do
-    # Education
-    has_many :features_education_programs, class_name: 'Features::Education::Program', dependent: :destroy
-
-    # Websites
-    has_many :features_websites_sites, class_name: 'Features::Websites::Site', dependent: :destroy
-  end
-end
diff --git a/app/views/admin/features/education/qualiopi/criterions/index.html.erb b/app/views/admin/administration/qualiopi/criterions/index.html.erb
similarity index 86%
rename from app/views/admin/features/education/qualiopi/criterions/index.html.erb
rename to app/views/admin/administration/qualiopi/criterions/index.html.erb
index fba3e644954b556a2317ab731bfdb496d4fb50ff..d64cd6e230627099cca650cb6202b5857518beed 100644
--- a/app/views/admin/features/education/qualiopi/criterions/index.html.erb
+++ b/app/views/admin/administration/qualiopi/criterions/index.html.erb
@@ -1,4 +1,4 @@
-<% content_for :title, Features::Education::Qualiopi.model_name.human %>
+<% content_for :title, Administration::Qualiopi.model_name.human %>
 
 <% @criterions.each do |criterion| %>
   <div class="row">
diff --git a/app/views/admin/features/education/qualiopi/criterions/show.html.erb b/app/views/admin/administration/qualiopi/criterions/show.html.erb
similarity index 100%
rename from app/views/admin/features/education/qualiopi/criterions/show.html.erb
rename to app/views/admin/administration/qualiopi/criterions/show.html.erb
diff --git a/app/views/admin/features/education/qualiopi/evaluations/_criterion_1.html.erb b/app/views/admin/administration/qualiopi/evaluations/_criterion_1.html.erb
similarity index 78%
rename from app/views/admin/features/education/qualiopi/evaluations/_criterion_1.html.erb
rename to app/views/admin/administration/qualiopi/evaluations/_criterion_1.html.erb
index f211ae47a7622d65727a85bed96d769a89caf17e..3dd779b26feeedb115f78c723205c72a5890b753 100644
--- a/app/views/admin/features/education/qualiopi/evaluations/_criterion_1.html.erb
+++ b/app/views/admin/administration/qualiopi/evaluations/_criterion_1.html.erb
@@ -1,5 +1,5 @@
 <%
-@programs = current_university.features_education_programs
+@programs = current_university.education_programs
 @checks = [
   :prerequisites,
   :objectives,
@@ -14,9 +14,9 @@
 <table class="table mt-5">
   <thead>
     <tr>
-      <th><%= Features::Education::Program.model_name.human %></th>
+      <th><%= Education::Program.model_name.human %></th>
       <% @checks.each do |check| %>
-        <th><%= Features::Education::Program.human_attribute_name(check) %></th>
+        <th><%= Education::Program.human_attribute_name(check) %></th>
       <% end %>
     </tr>
   </thead>
diff --git a/app/views/admin/features/education/qualiopi/indicators/index.html.erb b/app/views/admin/administration/qualiopi/indicators/index.html.erb
similarity index 54%
rename from app/views/admin/features/education/qualiopi/indicators/index.html.erb
rename to app/views/admin/administration/qualiopi/indicators/index.html.erb
index 4f0315420892216426d8030eb5847c39384001b7..1d20856ba8115cb94c189111131f3a050cf70dda 100644
--- a/app/views/admin/features/education/qualiopi/indicators/index.html.erb
+++ b/app/views/admin/administration/qualiopi/indicators/index.html.erb
@@ -1,11 +1,11 @@
-<% content_for :title, Features::Education::Qualiopi::Indicator.model_name.human(count: 2) %>
+<% content_for :title, Administration::Qualiopi::Indicator.model_name.human(count: 2) %>
 
 <table class="table">
   <thead>
     <tr>
-      <th><%= Features::Education::Qualiopi::Indicator.human_attribute_name('criterion') %></th>
-      <th><%= Features::Education::Qualiopi::Indicator.human_attribute_name('number') %></th>
-      <th><%= Features::Education::Qualiopi::Indicator.human_attribute_name('name') %></th>
+      <th><%= Administration::Qualiopi::Indicator.human_attribute_name('criterion') %></th>
+      <th><%= Administration::Qualiopi::Indicator.human_attribute_name('number') %></th>
+      <th><%= Administration::Qualiopi::Indicator.human_attribute_name('name') %></th>
       <th></th>
     </tr>
   </thead>
diff --git a/app/views/admin/features/education/qualiopi/indicators/show.html.erb b/app/views/admin/administration/qualiopi/indicators/show.html.erb
similarity index 61%
rename from app/views/admin/features/education/qualiopi/indicators/show.html.erb
rename to app/views/admin/administration/qualiopi/indicators/show.html.erb
index d3f8bea9d71ba147bcc50253e7d718cd634a4436..4a149cb8ededa40a57dedc120040dcbb3bff707d 100644
--- a/app/views/admin/features/education/qualiopi/indicators/show.html.erb
+++ b/app/views/admin/administration/qualiopi/indicators/show.html.erb
@@ -7,7 +7,7 @@
   <div class="offset-md-1 col-md-6">
     <% [:level_expected, :proof, :requirement, :non_conformity, :glossary].each do |attribute| %>
       <%
-      name = Features::Education::Qualiopi::Indicator.human_attribute_name(attribute)
+      name = Administration::Qualiopi::Indicator.human_attribute_name(attribute)
       value = @indicator.send attribute
       next if value.blank?
       %>
@@ -17,7 +17,11 @@
   </div>
 </div>
 
+<%
+partial = "admin/administration/qualiopi/evaluations/criterion_#{@indicator.number}"
+# TODO render only if file exists, so we can have errors
+%>
 <% begin %>
-<%= render "admin/features/education/qualiopi/evaluations/criterion_#{@indicator.number}" %>
+<%= render "admin/administration/qualiopi/evaluations/criterion_#{@indicator.number}" %>
 <% rescue %>
 <% end %>
diff --git a/app/views/admin/features/websites/sites/_form.html.erb b/app/views/admin/communication/websites/_form.html.erb
similarity index 83%
rename from app/views/admin/features/websites/sites/_form.html.erb
rename to app/views/admin/communication/websites/_form.html.erb
index d1eab05e5f02a2d35994450a9493ee4664098da6..85bfdf3accdaaa428eda05637fc6cd980b38e4b1 100644
--- a/app/views/admin/features/websites/sites/_form.html.erb
+++ b/app/views/admin/communication/websites/_form.html.erb
@@ -1,4 +1,4 @@
-<%= simple_form_for [:admin, @site] do |f| %>
+<%= simple_form_for [:admin, website] do |f| %>
   <div class="row">
     <div class="col-md-6">
       <%= f.input :name %>
diff --git a/app/views/admin/features/websites/sites/_site.json.jbuilder b/app/views/admin/communication/websites/_site.json.jbuilder
similarity index 100%
rename from app/views/admin/features/websites/sites/_site.json.jbuilder
rename to app/views/admin/communication/websites/_site.json.jbuilder
diff --git a/app/views/admin/communication/websites/edit.html.erb b/app/views/admin/communication/websites/edit.html.erb
new file mode 100644
index 0000000000000000000000000000000000000000..feb8b0f5cdc2967d9c8535abf4e019fc8e8bda3d
--- /dev/null
+++ b/app/views/admin/communication/websites/edit.html.erb
@@ -0,0 +1,3 @@
+<% content_for :title, @website %>
+
+<%= render 'form', website: @website %>
diff --git a/app/views/admin/communication/websites/index.html.erb b/app/views/admin/communication/websites/index.html.erb
new file mode 100644
index 0000000000000000000000000000000000000000..5c8a9d022c369aa3638644030572efd93c11cd27
--- /dev/null
+++ b/app/views/admin/communication/websites/index.html.erb
@@ -0,0 +1,27 @@
+<% content_for :title, Communication::Website.model_name.human(count: 2) %>
+
+<table class="table">
+  <thead>
+    <tr>
+      <th><%= Communication::Website.human_attribute_name('name') %></th>
+      <th><%= Communication::Website.human_attribute_name('domain') %></th>
+      <th></th>
+    </tr>
+  </thead>
+  <tbody>
+    <% @websites.each do |website| %>
+      <tr>
+        <td><%= link_to website, [:admin, website] %></td>
+        <td><%= link_to website.domain_url, website.domain_url, target: :_blank %></td>
+        <td class="text-end">
+          <%= edit_link website %>
+          <%= destroy_link website %>
+        </td>
+      </tr>
+    <% end %>
+  </tbody>
+</table>
+
+<% content_for :buttons do %>
+  <%= create_link Communication::Website %>
+<% end %>
diff --git a/app/views/admin/features/websites/sites/index.json.jbuilder b/app/views/admin/communication/websites/index.json.jbuilder
similarity index 100%
rename from app/views/admin/features/websites/sites/index.json.jbuilder
rename to app/views/admin/communication/websites/index.json.jbuilder
diff --git a/app/views/admin/communication/websites/new.html.erb b/app/views/admin/communication/websites/new.html.erb
new file mode 100644
index 0000000000000000000000000000000000000000..7af10208f8a943157f54f81cda40efdb66111126
--- /dev/null
+++ b/app/views/admin/communication/websites/new.html.erb
@@ -0,0 +1,3 @@
+<% content_for :title, Communication::Website.model_name.human %>
+
+<%= render 'form', website: @website %>
diff --git a/app/views/admin/communication/websites/show.html.erb b/app/views/admin/communication/websites/show.html.erb
new file mode 100644
index 0000000000000000000000000000000000000000..6a007fa0bc3b70db6df4bfe7cda8c83c51f3df36
--- /dev/null
+++ b/app/views/admin/communication/websites/show.html.erb
@@ -0,0 +1,9 @@
+<% content_for :title, @website %>
+
+<p>
+  <%= link_to @website.domain_url, @website.domain_url, target: :_blank %>
+</p>
+
+<% content_for :buttons do %>
+  <%= edit_link @website %>
+<% end %>
diff --git a/app/views/admin/features/websites/sites/show.json.jbuilder b/app/views/admin/communication/websites/show.json.jbuilder
similarity index 100%
rename from app/views/admin/features/websites/sites/show.json.jbuilder
rename to app/views/admin/communication/websites/show.json.jbuilder
diff --git a/app/views/admin/features/education/programs/_form.html.erb b/app/views/admin/education/programs/_form.html.erb
similarity index 100%
rename from app/views/admin/features/education/programs/_form.html.erb
rename to app/views/admin/education/programs/_form.html.erb
diff --git a/app/views/admin/features/education/programs/_program.json.jbuilder b/app/views/admin/education/programs/_program.json.jbuilder
similarity index 100%
rename from app/views/admin/features/education/programs/_program.json.jbuilder
rename to app/views/admin/education/programs/_program.json.jbuilder
diff --git a/app/views/admin/features/education/programs/edit.html.erb b/app/views/admin/education/programs/edit.html.erb
similarity index 100%
rename from app/views/admin/features/education/programs/edit.html.erb
rename to app/views/admin/education/programs/edit.html.erb
diff --git a/app/views/admin/features/education/programs/index.html.erb b/app/views/admin/education/programs/index.html.erb
similarity index 59%
rename from app/views/admin/features/education/programs/index.html.erb
rename to app/views/admin/education/programs/index.html.erb
index 15834d84e5161583af3331e2c4aec3ddcd788bdf..f100e7bbc315c579a367c3054d754872ffbdde31 100644
--- a/app/views/admin/features/education/programs/index.html.erb
+++ b/app/views/admin/education/programs/index.html.erb
@@ -1,10 +1,10 @@
-<% content_for :title, Features::Education::Program.model_name.human(count: 2) %>
+<% content_for :title, Education::Program.model_name.human(count: 2) %>
 
 <table class="table">
   <thead>
     <tr>
-      <th><%= Features::Education::Program.human_attribute_name('name') %></th>
-      <th><%= Features::Education::Program.human_attribute_name('level') %></th>
+      <th><%= Education::Program.human_attribute_name('name') %></th>
+      <th><%= Education::Program.human_attribute_name('level') %></th>
       <th></th>
     </tr>
   </thead>
@@ -23,5 +23,5 @@
 </table>
 
 <% content_for :buttons do %>
-  <%= create_link Features::Education::Program %>
+  <%= create_link Education::Program %>
 <% end %>
diff --git a/app/views/admin/features/education/programs/index.json.jbuilder b/app/views/admin/education/programs/index.json.jbuilder
similarity index 100%
rename from app/views/admin/features/education/programs/index.json.jbuilder
rename to app/views/admin/education/programs/index.json.jbuilder
diff --git a/app/views/admin/features/education/programs/new.html.erb b/app/views/admin/education/programs/new.html.erb
similarity index 100%
rename from app/views/admin/features/education/programs/new.html.erb
rename to app/views/admin/education/programs/new.html.erb
diff --git a/app/views/admin/features/education/programs/show.html.erb b/app/views/admin/education/programs/show.html.erb
similarity index 100%
rename from app/views/admin/features/education/programs/show.html.erb
rename to app/views/admin/education/programs/show.html.erb
diff --git a/app/views/admin/features/education/programs/show.json.jbuilder b/app/views/admin/education/programs/show.json.jbuilder
similarity index 100%
rename from app/views/admin/features/education/programs/show.json.jbuilder
rename to app/views/admin/education/programs/show.json.jbuilder
diff --git a/app/views/admin/features/education/dashboard/index.html.erb b/app/views/admin/features/education/dashboard/index.html.erb
deleted file mode 100644
index a8ca3d67c62b36c581613e07098f03c91c037d70..0000000000000000000000000000000000000000
--- a/app/views/admin/features/education/dashboard/index.html.erb
+++ /dev/null
@@ -1 +0,0 @@
-<% content_for :title, Features::Education.model_name.human %>
diff --git a/app/views/admin/features/websites/dashboard/index.html.erb b/app/views/admin/features/websites/dashboard/index.html.erb
deleted file mode 100644
index 7754fb66b70173930968cd00c87cf0031550edb9..0000000000000000000000000000000000000000
--- a/app/views/admin/features/websites/dashboard/index.html.erb
+++ /dev/null
@@ -1 +0,0 @@
-<% content_for :title, Features::Websites.model_name.human %>
diff --git a/app/views/admin/features/websites/sites/edit.html.erb b/app/views/admin/features/websites/sites/edit.html.erb
deleted file mode 100644
index 6af5485596f5a454933667f1a41e5f5cd9ba1dae..0000000000000000000000000000000000000000
--- a/app/views/admin/features/websites/sites/edit.html.erb
+++ /dev/null
@@ -1,3 +0,0 @@
-<% content_for :title, @site %>
-
-<%= render 'form', site: @site %>
diff --git a/app/views/admin/features/websites/sites/index.html.erb b/app/views/admin/features/websites/sites/index.html.erb
deleted file mode 100644
index 71b601807368535dca71aaf23a32185b69002630..0000000000000000000000000000000000000000
--- a/app/views/admin/features/websites/sites/index.html.erb
+++ /dev/null
@@ -1,27 +0,0 @@
-<% content_for :title, Features::Websites::Site.model_name.human(count: 2) %>
-
-<table class="table">
-  <thead>
-    <tr>
-      <th><%= Features::Websites::Site.human_attribute_name('name') %></th>
-      <th><%= Features::Websites::Site.human_attribute_name('domain') %></th>
-      <th></th>
-    </tr>
-  </thead>
-  <tbody>
-    <% @sites.each do |site| %>
-      <tr>
-        <td><%= link_to site, [:admin, site] %></td>
-        <td><%= link_to site.domain_url, site.domain_url, target: :_blank %></td>
-        <td class="text-end">
-          <%= edit_link site %>
-          <%= destroy_link site %>
-        </td>
-      </tr>
-    <% end %>
-  </tbody>
-</table>
-
-<% content_for :buttons do %>
-  <%= create_link Features::Websites::Site %>
-<% end %>
diff --git a/app/views/admin/features/websites/sites/new.html.erb b/app/views/admin/features/websites/sites/new.html.erb
deleted file mode 100644
index 34e092077dad20d4d86226ba82da9bf83bf22738..0000000000000000000000000000000000000000
--- a/app/views/admin/features/websites/sites/new.html.erb
+++ /dev/null
@@ -1,3 +0,0 @@
-<% content_for :title, Features::Websites::Site.model_name.human %>
-
-<%= render 'form', site: @site %>
diff --git a/app/views/admin/features/websites/sites/show.html.erb b/app/views/admin/features/websites/sites/show.html.erb
deleted file mode 100644
index 67c3fd78648a0307ca6dee5bfb7d53c622a55566..0000000000000000000000000000000000000000
--- a/app/views/admin/features/websites/sites/show.html.erb
+++ /dev/null
@@ -1,9 +0,0 @@
-<% content_for :title, @site %>
-
-<p>
-  <%= link_to @site.domain_url, @site.domain_url, target: :_blank %>
-</p>
-
-<% content_for :buttons do %>
-  <%= edit_link @site %>
-<% end %>
diff --git a/config/admin_navigation.rb b/config/admin_navigation.rb
index 8750b49a92d7ec561c363fc387cb0154a6879050..cad80b59ea712f5e04e0f6ae07cede9d10988557 100644
--- a/config/admin_navigation.rb
+++ b/config/admin_navigation.rb
@@ -6,21 +6,21 @@ SimpleNavigation::Configuration.run do |navigation|
   navigation.items do |primary|
     primary.item :dashboard, t('dashboard'), admin_root_path, { icon: 'tachometer-alt', highlights_on: /admin$/ }
 
-    primary.item :teaching, 'Enseignement', nil, { kind: :header }
+    primary.item :teaching, Education.model_name.human, nil, { kind: :header }
     primary.item :teaching, 'Enseignants', nil, { icon: 'user-graduate' }
     primary.item :teaching, 'Ecoles', nil, { icon: 'university' }
-    primary.item :education, 'Formations', admin_features_education_programs_path, { icon: 'graduation-cap' }
+    primary.item :education, Education::Program.model_name.human(count: 2), admin_education_programs_path, { icon: 'graduation-cap' }
     primary.item :teaching, 'Ressources éducatives', nil, { icon: 'laptop' }
     primary.item :teaching, 'Feedbacks', nil, { icon: 'comments' }
 
-    primary.item :teaching, 'Recherche', nil, { kind: :header }
+    primary.item :teaching, Research.model_name.human, nil, { kind: :header }
     primary.item :teaching, 'Chercheurs', nil, { icon: 'microscope' }
     primary.item :teaching, 'Laboratoires', nil, { icon: 'flask' }
     primary.item :teaching, 'Veille', nil, { icon: 'eye' }
     primary.item :journals, Research::Journal.model_name.human(count: 2), admin_research_journals_path, { icon: 'newspaper' }
 
     primary.item :teaching, 'Communication', nil, { kind: :header }
-    primary.item :websites, 'Sites Web', admin_features_websites_sites_path, { icon: 'sitemap' }
+    primary.item :websites, 'Sites Web', admin_communication_websites_path, { icon: 'sitemap' }
     primary.item :teaching, 'Lettres d\'information', nil, { icon: 'envelope' }
     primary.item :teaching, 'Alumni', nil, { icon: 'users' }
 
@@ -29,6 +29,6 @@ SimpleNavigation::Configuration.run do |navigation|
     primary.item :settings, 'Campus', nil, { icon: 'map-marker-alt' }
     primary.item :settings, 'Admissions', nil, { icon: 'door-open' }
     primary.item :settings, 'Statistiques', nil, { icon: 'cog' }
-    primary.item :settings, 'Qualité', admin_features_education_qualiopi_criterions_path, { icon: 'tasks' }
+    primary.item :settings, 'Qualité', admin_administration_qualiopi_criterions_path, { icon: 'tasks' }
   end
 end
diff --git a/config/locales/administration/fr.yml b/config/locales/administration/fr.yml
new file mode 100644
index 0000000000000000000000000000000000000000..e9d4fa0f992598683c0c90b3147be503e6d99c4a
--- /dev/null
+++ b/config/locales/administration/fr.yml
@@ -0,0 +1,27 @@
+fr:
+  activemodel:
+    models:
+      administration/qualiopi: Qualiopi
+  activerecord:
+    models:
+      administration/qualiopi/criterion:
+        one: Critère
+        other: Critères
+      administration/qualiopi/indicator:
+        one: Indicateur
+        other: Indicateurs
+    attributes:
+      administration/qualiopi/criterion:
+        number: Numéro
+        name: Nom
+        description: Description
+      administration/qualiopi/indicator:
+        number: Numéro
+        name: Nom
+        criterion: Critère
+        description: Description
+        level_expected: Niveau attendu
+        proof: Éléments de preuve
+        requirement: Obligations spécifiques
+        non_conformity: Non-conformité
+        glossary: Glossaire
diff --git a/config/locales/communication/fr.yml b/config/locales/communication/fr.yml
new file mode 100644
index 0000000000000000000000000000000000000000..c9816c4c895b0c66320d86ea4d581599db30fa26
--- /dev/null
+++ b/config/locales/communication/fr.yml
@@ -0,0 +1,13 @@
+fr:
+  activemodel:
+    models:
+      communication: Communication
+  activerecord:
+    models:
+      communication/website:
+        one: Site Web
+        other: Sites Web
+    attributes:
+      communication/website:
+        name: Nom
+        domain: Domaine
diff --git a/config/locales/features/education/fr.yml b/config/locales/education/fr.yml
similarity index 72%
rename from config/locales/features/education/fr.yml
rename to config/locales/education/fr.yml
index cbdd5773654fbb41b2dd846ae02a0feb71cd9463..ce89d9fb20eb74968cdf491c66c6ba0534e0a27f 100644
--- a/config/locales/features/education/fr.yml
+++ b/config/locales/education/fr.yml
@@ -1,21 +1,14 @@
 fr:
   activemodel:
     models:
-      features/education: Éducation
-      features/education/qualiopi: Qualiopi
+      education: Enseignement
   activerecord:
     models:
-      features/education/program:
+      education/program:
         one: Formation
         other: Formations
-      features/education/qualiopi/criterion:
-        one: Critère
-        other: Critères
-      features/education/qualiopi/indicator:
-        one: Indicateur
-        other: Indicateurs
     attributes:
-      features/education/program:
+      education/program:
         name: Nom
         level: Niveau
         capacity: Capacité
@@ -30,29 +23,15 @@ fr:
         pedagogy: Méthodes mobilisées
         evaluation: Modalités d’évaluation
         accessibility: Accessibilité
-      features/education/qualiopi/criterion:
-        number: Numéro
-        name: Nom
-        description: Description
-      features/education/qualiopi/indicator:
-        number: Numéro
-        name: Nom
-        criterion: Critère
-        description: Description
-        level_expected: Niveau attendu
-        proof: Éléments de preuve
-        requirement: Obligations spécifiques
-        non_conformity: Non-conformité
-        glossary: Glossaire
   enums:
-    features/education/program:
+    education/program:
       level:
         bachelor: Licence / bachelor
         master: Master
         doctor: Doctorat
   simple_form:
     hints:
-      features/education/program:
+      education/program:
         capacity: Nombre de places disponibles par promotion
         ects: European Credits Transfer System
         prerequisites: Préalables nécessaires ou indispensables pour bénéficier d'une prestation déterminée. L'absence de prérequis doit être mentionnée.
diff --git a/config/locales/features/websites/fr.yml b/config/locales/features/websites/fr.yml
deleted file mode 100644
index fcc5f43fd2f704e49e64a4a09507a4846244c02c..0000000000000000000000000000000000000000
--- a/config/locales/features/websites/fr.yml
+++ /dev/null
@@ -1,13 +0,0 @@
-fr:
-  activemodel:
-    models:
-      features/websites: Sites Web
-  activerecord:
-    models:
-      features/websites/site:
-        one: Site
-        other: Sites
-    attributes:
-      features/websites/site:
-        name: Nom
-        domain: Domaine
diff --git a/config/locales/research/journal.yml b/config/locales/research/fr.yml
similarity index 86%
rename from config/locales/research/journal.yml
rename to config/locales/research/fr.yml
index ddb8da436aeb392080adab87de96b140701d82ba..7ebae8812d3a7b06e4b9cbe0326b078ec1053e74 100644
--- a/config/locales/research/journal.yml
+++ b/config/locales/research/fr.yml
@@ -1,4 +1,7 @@
 fr:
+  activemodel:
+    models:
+      research: Recherche
   activerecord:
     models:
       research/journal:
diff --git a/config/routes.rb b/config/routes.rb
index 3cd6babd3172f19c65e56d103bc7fdba2ec65a6e..64f30c95ca252c12485d6bfe9426351d2c9da82f 100644
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -7,18 +7,10 @@ Rails.application.routes.draw do
   draw 'admin'
   draw 'server'
 
-  namespace :features, path: '' do
-    Feature.all.each do |feature|
-      draw "features/#{feature}"
-    end
-  end
-
-  namespace :research do
-    resources :journals, only: [:index, :show] do
-      resources :volumes, only: [:index, :show], controller: 'journal/volumes'
-      resources :articles, only: [:index, :show], controller: 'journal/articles'
-    end
-  end
+  draw 'education'
+  draw 'research'
+  draw 'communication'
+  draw 'administration'
 
   root to: 'home#index'
 end
diff --git a/config/routes/admin.rb b/config/routes/admin.rb
index c8a258bab32cbfaaf20850e411dcc9102f2cf69c..ad026bc2aadb767cd3e611144fb8cadfe2b054c6 100644
--- a/config/routes/admin.rb
+++ b/config/routes/admin.rb
@@ -1,18 +1,8 @@
 namespace :admin do
   resources :users
-
-  namespace :features, path: '' do
-    Feature.all.each do |feature|
-      draw "admin/features/#{feature}"
-    end
-  end
-
-  namespace :research do
-    resources :journals do
-      resources :volumes, controller: 'journal/volumes'
-      resources :articles, controller: 'journal/articles'
-    end
-  end
-
+  draw 'admin/education'
+  draw 'admin/research'
+  draw 'admin/communication'
+  draw 'admin/administration'
   root to: 'dashboard#index'
 end
diff --git a/config/routes/admin/features/education.rb b/config/routes/admin/administration.rb
similarity index 56%
rename from config/routes/admin/features/education.rb
rename to config/routes/admin/administration.rb
index 5d3c859b4037fe6c2531538f0ee702641b82cb22..f5b69fe50d8ccc61e2d3a2873a87271df524af51 100644
--- a/config/routes/admin/features/education.rb
+++ b/config/routes/admin/administration.rb
@@ -1,8 +1,6 @@
-namespace :education do
-  resources :programs
+namespace :administration do
   namespace :qualiopi do
     resources :criterions, only: [:index, :show]
     resources :indicators, only: [:index, :show]
   end
-  get 'dashboard' => 'dashboard#index', as: :dashboard
 end
diff --git a/config/routes/admin/communication.rb b/config/routes/admin/communication.rb
new file mode 100644
index 0000000000000000000000000000000000000000..2d2dfc63f7e6b28931d063ea3582b3da96b34944
--- /dev/null
+++ b/config/routes/admin/communication.rb
@@ -0,0 +1,3 @@
+namespace :communication do
+  resources :websites
+end
diff --git a/config/routes/admin/education.rb b/config/routes/admin/education.rb
new file mode 100644
index 0000000000000000000000000000000000000000..c6f58926f146a580495fc6c75d818000dd9ba9dd
--- /dev/null
+++ b/config/routes/admin/education.rb
@@ -0,0 +1,3 @@
+namespace :education do
+  resources :programs
+end
diff --git a/config/routes/admin/features/websites.rb b/config/routes/admin/features/websites.rb
deleted file mode 100644
index 9d10b6a89be6232ec80e87dfaf3bacf15204a0bd..0000000000000000000000000000000000000000
--- a/config/routes/admin/features/websites.rb
+++ /dev/null
@@ -1,4 +0,0 @@
-namespace :websites do
-  resources :sites
-  get 'dashboard' => 'dashboard#index', as: :dashboard
-end
diff --git a/config/routes/admin/research.rb b/config/routes/admin/research.rb
new file mode 100644
index 0000000000000000000000000000000000000000..1bec5b3fc8e4879197562134836190dd338ec56e
--- /dev/null
+++ b/config/routes/admin/research.rb
@@ -0,0 +1,6 @@
+namespace :research do
+  resources :journals do
+    resources :volumes, controller: 'journal/volumes'
+    resources :articles, controller: 'journal/articles'
+  end
+end
diff --git a/config/routes/administration.rb b/config/routes/administration.rb
new file mode 100644
index 0000000000000000000000000000000000000000..a7f66bc51a434fa256670b74cda14178efe79692
--- /dev/null
+++ b/config/routes/administration.rb
@@ -0,0 +1,3 @@
+namespace :administration do
+
+end
diff --git a/config/routes/communication.rb b/config/routes/communication.rb
new file mode 100644
index 0000000000000000000000000000000000000000..8e4cafcbfeecfcef4f0887553ed19370fd5bf49a
--- /dev/null
+++ b/config/routes/communication.rb
@@ -0,0 +1,4 @@
+namespace :communication do
+  resources :websites
+  root to: 'websites#index'
+end
diff --git a/config/routes/features/education.rb b/config/routes/education.rb
similarity index 100%
rename from config/routes/features/education.rb
rename to config/routes/education.rb
diff --git a/config/routes/features/websites.rb b/config/routes/features/websites.rb
deleted file mode 100644
index 361c6c8e90fa15d92616925c21185d478013a399..0000000000000000000000000000000000000000
--- a/config/routes/features/websites.rb
+++ /dev/null
@@ -1,4 +0,0 @@
-namespace :websites do
-  resources :sites
-  root to: 'sites#index'
-end
diff --git a/config/routes/research.rb b/config/routes/research.rb
new file mode 100644
index 0000000000000000000000000000000000000000..e7eb2815ace9bbd15149e25cc1881007104c0df5
--- /dev/null
+++ b/config/routes/research.rb
@@ -0,0 +1,6 @@
+namespace :research do
+  resources :journals, only: [:index, :show] do
+    resources :volumes, only: [:index, :show], controller: 'journal/volumes'
+    resources :articles, only: [:index, :show], controller: 'journal/articles'
+  end
+end
diff --git a/db/migrate/20210817125119_refactor_features.rb b/db/migrate/20210817125119_refactor_features.rb
new file mode 100644
index 0000000000000000000000000000000000000000..90f3993b44fa8d4c535eee04f5c92d50849d173c
--- /dev/null
+++ b/db/migrate/20210817125119_refactor_features.rb
@@ -0,0 +1,8 @@
+class RefactorFeatures < ActiveRecord::Migration[6.1]
+  def change
+    rename_table :features_websites_sites, :communication_websites
+    rename_table :features_education_programs, :education_programs
+    rename_table :features_education_qualiopi_criterions, :administration_qualiopi_criterions
+    rename_table :features_education_qualiopi_indicators, :administration_qualiopi_indicators
+  end
+end
diff --git a/db/schema.rb b/db/schema.rb
index ae7f6577e00945fdd9099cd23a9b6b643dc3bfd9..26acb79acdf44e254115057ed2cc058625305402 100644
--- a/db/schema.rb
+++ b/db/schema.rb
@@ -10,34 +10,13 @@
 #
 # It's strongly recommended that you check this file into your version control system.
 
-ActiveRecord::Schema.define(version: 2021_08_13_101246) do
+ActiveRecord::Schema.define(version: 2021_08_17_125119) do
 
   # These are extensions that must be enabled in order to support this database
   enable_extension "pgcrypto"
   enable_extension "plpgsql"
 
-  create_table "features_education_programs", id: :uuid, default: -> { "gen_random_uuid()" }, force: :cascade do |t|
-    t.uuid "university_id", null: false
-    t.string "name"
-    t.integer "level"
-    t.integer "capacity"
-    t.integer "ects"
-    t.boolean "continuing"
-    t.text "prerequisites"
-    t.text "objectives"
-    t.text "duration"
-    t.text "registration"
-    t.text "pedagogy"
-    t.text "evaluation"
-    t.text "accessibility"
-    t.text "pricing"
-    t.text "contacts"
-    t.datetime "created_at", precision: 6, null: false
-    t.datetime "updated_at", precision: 6, null: false
-    t.index ["university_id"], name: "index_features_education_programs_on_university_id"
-  end
-
-  create_table "features_education_qualiopi_criterions", id: :uuid, default: -> { "gen_random_uuid()" }, force: :cascade do |t|
+  create_table "administration_qualiopi_criterions", id: :uuid, default: -> { "gen_random_uuid()" }, force: :cascade do |t|
     t.integer "number"
     t.text "name"
     t.text "description"
@@ -45,7 +24,7 @@ ActiveRecord::Schema.define(version: 2021_08_13_101246) do
     t.datetime "updated_at", precision: 6, null: false
   end
 
-  create_table "features_education_qualiopi_indicators", id: :uuid, default: -> { "gen_random_uuid()" }, force: :cascade do |t|
+  create_table "administration_qualiopi_indicators", id: :uuid, default: -> { "gen_random_uuid()" }, force: :cascade do |t|
     t.uuid "criterion_id", null: false
     t.integer "number"
     t.text "name"
@@ -56,16 +35,37 @@ ActiveRecord::Schema.define(version: 2021_08_13_101246) do
     t.datetime "created_at", precision: 6, null: false
     t.datetime "updated_at", precision: 6, null: false
     t.text "glossary"
-    t.index ["criterion_id"], name: "index_features_education_qualiopi_indicators_on_criterion_id"
+    t.index ["criterion_id"], name: "index_administration_qualiopi_indicators_on_criterion_id"
   end
 
-  create_table "features_websites_sites", id: :uuid, default: -> { "gen_random_uuid()" }, force: :cascade do |t|
+  create_table "communication_websites", id: :uuid, default: -> { "gen_random_uuid()" }, force: :cascade do |t|
     t.uuid "university_id", null: false
     t.string "name"
     t.string "domain"
     t.datetime "created_at", precision: 6, null: false
     t.datetime "updated_at", precision: 6, null: false
-    t.index ["university_id"], name: "index_features_websites_sites_on_university_id"
+    t.index ["university_id"], name: "index_communication_websites_on_university_id"
+  end
+
+  create_table "education_programs", id: :uuid, default: -> { "gen_random_uuid()" }, force: :cascade do |t|
+    t.uuid "university_id", null: false
+    t.string "name"
+    t.integer "level"
+    t.integer "capacity"
+    t.integer "ects"
+    t.boolean "continuing"
+    t.text "prerequisites"
+    t.text "objectives"
+    t.text "duration"
+    t.text "registration"
+    t.text "pedagogy"
+    t.text "evaluation"
+    t.text "accessibility"
+    t.text "pricing"
+    t.text "contacts"
+    t.datetime "created_at", precision: 6, null: false
+    t.datetime "updated_at", precision: 6, null: false
+    t.index ["university_id"], name: "index_education_programs_on_university_id"
   end
 
   create_table "research_journal_articles", id: :uuid, default: -> { "gen_random_uuid()" }, force: :cascade do |t|
@@ -146,9 +146,9 @@ ActiveRecord::Schema.define(version: 2021_08_13_101246) do
     t.index ["unlock_token"], name: "index_users_on_unlock_token", unique: true
   end
 
-  add_foreign_key "features_education_programs", "universities"
-  add_foreign_key "features_education_qualiopi_indicators", "features_education_qualiopi_criterions", column: "criterion_id"
-  add_foreign_key "features_websites_sites", "universities"
+  add_foreign_key "administration_qualiopi_indicators", "administration_qualiopi_criterions", column: "criterion_id"
+  add_foreign_key "communication_websites", "universities"
+  add_foreign_key "education_programs", "universities"
   add_foreign_key "research_journal_articles", "research_journal_volumes"
   add_foreign_key "research_journal_articles", "research_journals"
   add_foreign_key "research_journal_articles", "universities"
diff --git a/db/seeds.rb b/db/seeds.rb
index ffb6b74d371e4f647895f0f3a6baa75a04073fd4..5ba9d5bb959ca5e55a04765b86c69ffb78465ba3 100644
--- a/db/seeds.rb
+++ b/db/seeds.rb
@@ -1,7 +1,7 @@
 University.create name: 'Osuny', identifier: 'osuny'
 
-Features::Education::Qualiopi::Criterion.destroy_all
-Features::Education::Qualiopi::Criterion.create [
+Administration::Qualiopi::Criterion.destroy_all
+Administration::Qualiopi::Criterion.create [
   {
     id: '0285619c-cfc8-4858-bef6-74adc0aac055',
     number: 1,
@@ -39,8 +39,8 @@ Features::Education::Qualiopi::Criterion.create [
   }
 ]
 
-Features::Education::Qualiopi::Indicator.destroy_all
-Features::Education::Qualiopi::Indicator.create [
+Administration::Qualiopi::Indicator.destroy_all
+Administration::Qualiopi::Indicator.create [
   {
     id: 'f5632d1a-09f1-4cd1-98d1-c6de4b7728d6',
     criterion_id: '0285619c-cfc8-4858-bef6-74adc0aac055',
diff --git a/test/fixtures/research/journal/articles.yml b/test/fixtures/research/journal/articles.yml
index 3c4bb6bd2edff7015e39629011bdf46ff84ab17e..ded01b7ef51ade03431b35ac53b449e9f925fa42 100644
--- a/test/fixtures/research/journal/articles.yml
+++ b/test/fixtures/research/journal/articles.yml
@@ -24,7 +24,6 @@
 #  fk_rails_...  (research_journal_volume_id => research_journal_volumes.id)
 #  fk_rails_...  (university_id => universities.id)
 #
-# Read about fixtures at https://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html
 
 one:
   title: MyString