diff --git a/app/controllers/admin/communication/website/authors_controller.rb b/app/controllers/admin/communication/website/authors_controller.rb
index 432d5e02dd126dadcb9d2f91fe9b0a6f858384f9..d53ac3ba901cdf99c09e93699e91ee4c0d26f442 100644
--- a/app/controllers/admin/communication/website/authors_controller.rb
+++ b/app/controllers/admin/communication/website/authors_controller.rb
@@ -1,68 +1,23 @@
 class Admin::Communication::Website::AuthorsController < Admin::Communication::Website::ApplicationController
-  load_and_authorize_resource class: Communication::Website::Author, through: :website
 
   def index
-    @authors = @website.authors.ordered.page(params[:page])
+    @authors = current_university.members.authors.accessible_by(current_ability).ordered.page(params[:page])
     breadcrumb
   end
 
   def show
-    @posts = @author.posts.ordered.page(params[:page])
+    @author = current_university.members.authors.accessible_by(current_ability).find(params[:id])
+    @posts = @author.communication_website_posts.ordered.page(params[:page])
     breadcrumb
   end
 
-  def publish
-    @author.force_publish!
-    redirect_to admin_communication_website_author_path(@author), notice: t('admin.will_be_published_html', model: @author.to_s)
-  end
-
-  def new
-    @author.website = @website
-    breadcrumb
-  end
-
-  def edit
-    breadcrumb
-    add_breadcrumb t('edit')
-  end
-
-  def create
-    @author.website = @website
-    if @author.save
-      redirect_to admin_communication_website_author_path(@author), notice: t('admin.successfully_created_html', model: @author.to_s)
-    else
-      breadcrumb
-      render :new, status: :unprocessable_entity
-    end
-  end
-
-  def update
-    if @author.update(author_params)
-      redirect_to admin_communication_website_author_path(@author), notice: t('admin.successfully_updated_html', model: @author.to_s)
-    else
-      breadcrumb
-      add_breadcrumb t('edit')
-      render :edit, status: :unprocessable_entity
-    end
-  end
-
-  def destroy
-    @author.destroy
-    redirect_to admin_communication_website_authors_url, notice: t('admin.successfully_destroyed_html', model: @author.to_s)
-  end
-
   protected
 
   def breadcrumb
     super
-    add_breadcrumb  Communication::Website::Author.model_name.human(count: 2),
-                    admin_communication_website_authors_path
+    add_breadcrumb Communication::Website::Author.model_name.human(count: 2),
+                   admin_communication_website_authors_path
     breadcrumb_for @author
   end
 
-  def author_params
-    params.require(:communication_website_author)
-          .permit(:website_id, :first_name, :last_name, :biography, :slug, :user_id)
-          .merge(university_id: current_university.id)
-  end
 end
diff --git a/app/controllers/admin/research/researchers_controller.rb b/app/controllers/admin/research/researchers_controller.rb
index 47253a65106ba598322038fd665ec067cf0d05a0..e8eeec4debc9536d0752286960e479262cf463e4 100644
--- a/app/controllers/admin/research/researchers_controller.rb
+++ b/app/controllers/admin/research/researchers_controller.rb
@@ -1,61 +1,23 @@
 class Admin::Research::ResearchersController < Admin::Research::ApplicationController
-  load_and_authorize_resource class: Research::Researcher,
-                              through: :current_university,
-                              through_association: :research_researchers
 
   def index
-    @researchers = @researchers.ordered.page(params[:page])
+    @researchers = current_university.members.researchers.accessible_by(current_ability).ordered.page(params[:page])
     breadcrumb
   end
 
   def show
+    @researcher = current_university.members.authors.accessible_by(current_ability).find(params[:id])
+    @articles = @researcher.research_journal_articles.ordered.page(params[:page])
     breadcrumb
   end
 
-  def new
-    breadcrumb
-  end
-
-  def edit
-    breadcrumb
-    add_breadcrumb t('edit')
-  end
-
-  def create
-    if @researcher.save
-      redirect_to [:admin, @researcher], notice: t('admin.successfully_created_html', model: @researcher.to_s)
-    else
-      breadcrumb
-      render :new, status: :unprocessable_entity
-    end
-  end
-
-  def update
-    if @researcher.update(researcher_params)
-      redirect_to [:admin, @researcher], notice: t('admin.successfully_updated_html', model: @researcher.to_s)
-    else
-      breadcrumb
-      add_breadcrumb t('edit')
-      render :edit, status: :unprocessable_entity
-    end
-  end
-
-  def destroy
-    @researcher.destroy
-    redirect_to admin_research_researchers_url, notice: t('admin.successfully_destroyed_html', model: @researcher.to_s)
-  end
-
   protected
 
   def breadcrumb
     super
-    add_breadcrumb Research::Researcher.model_name.human(count: 2), admin_research_researchers_path
+    add_breadcrumb Research::Researcher.model_name.human(count: 2),
+                   admin_research_researchers_path
     breadcrumb_for @researcher
   end
 
-  def researcher_params
-    params.require(:research_researcher)
-          .permit(:first_name, :last_name, :slug, :biography, :user_id)
-          .merge(university_id: current_university.id)
-  end
 end
diff --git a/app/models/administration/member.rb b/app/models/administration/member.rb
index 4d428784d2d671e455bf93ef2df3a8523b7e7f58..c8b5a5364faaff43fb7a5ec4efe43674ea2bfda4 100644
--- a/app/models/administration/member.rb
+++ b/app/models/administration/member.rb
@@ -34,7 +34,21 @@ class Administration::Member < ApplicationRecord
   belongs_to :university
   belongs_to :user, optional: true
 
+  has_many :communication_website_posts,
+           class_name: 'Communication::Website::Post',
+           foreign_key: :author_id,
+           dependent: :nullify
+
+  has_and_belongs_to_many :research_journal_articles,
+                          class_name: 'Research::Journal::Article',
+                          join_table: :research_journal_articles_researchers,
+                          foreign_key: :researcher_id
+
   scope :ordered, -> { order(:last_name, :first_name) }
+  scope :administratives, -> { where(is_administrative: true) }
+  scope :authors, -> { where(is_author: true) }
+  scope :teachers, -> { where(is_teacher: true) }
+  scope :researchers, -> { where(is_researcher: true) }
 
   def to_s
     "#{last_name} #{first_name}"
diff --git a/app/models/communication/website/post.rb b/app/models/communication/website/post.rb
index 791b8b15a8e758a8b71f4e98536b11515edd3803..2f31471eb9614c3f633bb90c56df47ab359dc43a 100644
--- a/app/models/communication/website/post.rb
+++ b/app/models/communication/website/post.rb
@@ -24,7 +24,7 @@
 #
 # Foreign Keys
 #
-#  fk_rails_...  (author_id => communication_website_authors.id)
+#  fk_rails_...  (author_id => administration_members.id)
 #  fk_rails_...  (communication_website_id => communication_websites.id)
 #  fk_rails_...  (university_id => universities.id)
 #
@@ -43,7 +43,7 @@ class Communication::Website::Post < ApplicationRecord
   belongs_to :website,
              foreign_key: :communication_website_id
   belongs_to :author,
-             class_name: 'Communication::Website::Author',
+             class_name: 'Administration::Member',
              optional: true
   has_and_belongs_to_many :categories,
                           class_name: 'Communication::Website::Category',
diff --git a/app/models/research/journal/article.rb b/app/models/research/journal/article.rb
index 5d28a34f01fed642f9a5c048c477a48dc7566270..981887685d0268c34db8897284bc0413deff6795 100644
--- a/app/models/research/journal/article.rb
+++ b/app/models/research/journal/article.rb
@@ -41,7 +41,10 @@ class Research::Journal::Article < ApplicationRecord
   belongs_to :journal, foreign_key: :research_journal_id
   belongs_to :volume, foreign_key: :research_journal_volume_id, optional: true
   belongs_to :updated_by, class_name: 'User'
-  has_and_belongs_to_many :researchers, class_name: 'Research::Researcher'
+  has_and_belongs_to_many :researchers,
+                          class_name: 'Administration::Member',
+                          join_table: :research_journal_articles_researchers,
+                          association_foreign_key: :researcher_id
   has_many :websites, -> { distinct }, through: :journal
 
   validates :title, :published_at, presence: true
diff --git a/app/views/admin/administration/members/_main_infos.html.erb b/app/views/admin/administration/members/_main_infos.html.erb
new file mode 100644
index 0000000000000000000000000000000000000000..0bc1dc6e9565060298d48245028941de1e484ed3
--- /dev/null
+++ b/app/views/admin/administration/members/_main_infos.html.erb
@@ -0,0 +1,28 @@
+<div class="row">
+  <div class="col-md-8">
+    <div class="card flex-fill w-100">
+      <div class="card-header">
+        <h2 class="card-title mb-0 h5"><%= t('content') %></h2>
+      </div>
+      <div class="card-body">
+        <h3 class="h5"><%= Administration::Member.human_attribute_name('biography') %></h3>
+        <%= member.biography %>
+      </div>
+    </div>
+  </div>
+  <div class="col-md-4">
+    <div class="card flex-fill w-100">
+      <div class="card-header">
+        <h2 class="card-title mb-0 h5"><%= t('metadata') %></h2>
+      </div>
+      <div class="card-body">
+        <h3 class="h5"><%= Administration::Member.human_attribute_name('slug') %></h3>
+        <p><%= member.slug %></p>
+        <% if member.user.present? %>
+          <h3 class="h5"><%= Administration::Member.human_attribute_name('user') %></h3>
+          <p><%= link_to_if can?(:read, member.user), member.user, admin_user_path(member.user) %></p>
+        <% end %>
+      </div>
+    </div>
+  </div>
+</div>
diff --git a/app/views/admin/communication/website/authors/_form.html.erb b/app/views/admin/communication/website/authors/_form.html.erb
deleted file mode 100644
index 0058427acf8a742ebdc8b3757b3c1edb6cc11a0f..0000000000000000000000000000000000000000
--- a/app/views/admin/communication/website/authors/_form.html.erb
+++ /dev/null
@@ -1,37 +0,0 @@
-<%= simple_form_for [:admin, author] do |f| %>
-  <div class="row">
-    <div class="col-md-8">
-      <div class="card flex-fill w-100">
-        <div class="card-header">
-          <h5 class="card-title mb-0"><%= t('content') %></h5>
-        </div>
-        <div class="card-body">
-          <%= f.input :first_name %>
-          <%= f.input :last_name %>
-          <%= f.input :biography, as: :rich_text_area %>
-        </div>
-      </div>
-    </div>
-    <div class="col-md-4">
-      <div class="card flex-fill w-100">
-        <div class="card-header">
-          <h5 class="card-title mb-0"><%= t('metadata') %></h5>
-        </div>
-        <div class="card-body">
-          <%= f.input :slug,
-                      as: :string,
-                      input_html: author.persisted? ? {} : {
-                        class: 'js-slug-input',
-                        data: { source: '#communication_website_author_first_name, #communication_website_author_last_name' }
-                      } %>
-          <%= f.association :user, collection: current_university.users.ordered %>
-          <ul>
-          </ul>
-        </div>
-      </div>
-    </div>
-  </div>
-  <% content_for :action_bar_right do %>
-    <%= submit f %>
-  <% end %>
-<% end %>
diff --git a/app/views/admin/communication/website/authors/_list.html.erb b/app/views/admin/communication/website/authors/_list.html.erb
index 96380bb00fdd2becea41a80873084dc59d957a22..fede64fd38960172f9edc9d16ee31650c398136e 100644
--- a/app/views/admin/communication/website/authors/_list.html.erb
+++ b/app/views/admin/communication/website/authors/_list.html.erb
@@ -1,26 +1,15 @@
 <table class="<%= table_classes %>">
   <thead>
     <tr>
-      <th><%= Communication::Website::Author.human_attribute_name('name') %></th>
-      <th></th>
+      <th><%= Administration::Member.human_attribute_name('name') %></th>
+      <th><%= t('communication.number_of_posts') %></th>
     </tr>
   </thead>
   <tbody>
     <% authors.each do |author| %>
       <tr>
-        <td><%= link_to author, admin_communication_website_author_path(website_id: author.website.id, id: author.id) %></td>
-        <td class="text-end">
-          <div class="btn-group" role="group">
-            <%= link_to t('edit'),
-                      edit_admin_communication_website_author_path(website_id: author.website.id, id: author.id),
-                      class: button_classes %>
-            <%= link_to t('delete'),
-                      admin_communication_website_author_path(website_id: author.website.id, id: author.id),
-                      method: :delete,
-                      data: { confirm: t('please-confirm') },
-                      class: button_classes_danger %>
-          </div>
-        </td>
+        <td><%= link_to author, admin_communication_website_author_path(website_id: @website.id, id: author.id) %></td>
+        <td><%= author.communication_website_posts.count %></td>
       </tr>
     <% end %>
   </tbody>
diff --git a/app/views/admin/communication/website/authors/edit.html.erb b/app/views/admin/communication/website/authors/edit.html.erb
deleted file mode 100644
index c5bbc5356138d7562e2cb1bf84eb422682388cbb..0000000000000000000000000000000000000000
--- a/app/views/admin/communication/website/authors/edit.html.erb
+++ /dev/null
@@ -1,5 +0,0 @@
-<% content_for :title, @author %>
-
-<%= render 'admin/communication/websites/sidebar' do %>
-  <%= render 'form', author: @author %>
-<% end %>
diff --git a/app/views/admin/communication/website/authors/index.html.erb b/app/views/admin/communication/website/authors/index.html.erb
index e5d344d3dbb3cd8c81de2fd534fe28b8f294272a..71439e8eff3e3984dd32cddd703ec62760290aaa 100644
--- a/app/views/admin/communication/website/authors/index.html.erb
+++ b/app/views/admin/communication/website/authors/index.html.erb
@@ -3,12 +3,14 @@
 <%= render 'admin/communication/websites/sidebar' do %>
   <div class="card">
     <%= render 'admin/communication/website/authors/list', authors: @authors %>
-    <div class="card-body">
-      <%= paginate @authors, theme: 'bootstrap-5' %>
-    </div>
+    <% if @authors.total_pages > 1 %>
+      <div class="card-footer">
+        <%= paginate @authors, theme: 'bootstrap-5' %>
+      </div>
+    <% end %>
   </div>
 <% end %>
 
 <% content_for :action_bar_right do %>
-  <%= create_link Communication::Website::Author %>
+  <%= link_to t('communication.manage_authors'), admin_administration_members_path, class: button_classes if can?(:read, Administration::Member) %>
 <% end %>
diff --git a/app/views/admin/communication/website/authors/new.html.erb b/app/views/admin/communication/website/authors/new.html.erb
deleted file mode 100644
index 1d9894c1e9486eee19eeb7584a479b59a7614b6a..0000000000000000000000000000000000000000
--- a/app/views/admin/communication/website/authors/new.html.erb
+++ /dev/null
@@ -1,5 +0,0 @@
-<% content_for :title, Communication::Website::Author.model_name.human %>
-
-<%= render 'admin/communication/websites/sidebar' do %>
-  <%= render 'form', author: @author %>
-<% end %>
diff --git a/app/views/admin/communication/website/authors/show.html.erb b/app/views/admin/communication/website/authors/show.html.erb
index 78bdd5f6a1046bca6c3ab054475feaa861ab1ecc..212a629cc8d964943748f9692fa9101ea578e7fc 100644
--- a/app/views/admin/communication/website/authors/show.html.erb
+++ b/app/views/admin/communication/website/authors/show.html.erb
@@ -1,56 +1,24 @@
 <% content_for :title, @author %>
 
 <%= render 'admin/communication/websites/sidebar' do %>
-  <div class="row">
-    <div class="col-md-8">
-      <div class="card flex-fill w-100">
-        <div class="card-header">
-          <h2 class="card-title mb-0 h5"><%= t('content') %></h2>
-        </div>
-        <div class="card-body">
-          <h3 class="h5"><%= Communication::Website::Author.human_attribute_name('biography') %></h3>
-          <%= @author.biography %>
-        </div>
-      </div>
-    </div>
-    <div class="col-md-4">
-      <div class="card flex-fill w-100">
-        <div class="card-header">
-          <h2 class="card-title mb-0 h5"><%= t('metadata') %></h2>
-        </div>
-        <div class="card-body">
-          <h3 class="h5"><%= Communication::Website::Author.human_attribute_name('slug') %></h3>
-          <p><%= @author.slug %></p>
-          <% if @author.user.present? %>
-            <h3 class="h5"><%= Communication::Website::Author.human_attribute_name('user') %></h3>
-            <p><%= link_to_if can?(:read, @author.user), @author.user, admin_user_path(@author.user) %></p>
-          <% end %>
-        </div>
-      </div>
-    </div>
-  </div>
+  <%= render 'admin/administration/members/main_infos', member: @author %>
+
   <% if @posts.total_count > 0 %>
     <div class="card">
       <div class="card-header">
         <h5><%= "#{Communication::Website::Post.model_name.human(count: 2)} (#{@posts.total_count})" %></h5>
       </div>
       <%= render 'admin/communication/website/posts/list', posts: @posts, hide_author: true %>
-      <div class="card-footer">
-        <%= paginate @posts, theme: 'bootstrap-5' %>
-      </div>
+      <% if @posts.total_pages > 1 %>
+        <div class="card-footer">
+          <%= paginate @posts, theme: 'bootstrap-5' %>
+        </div>
+      <% end %>
     </div>
 
   <% end %>
 <% end %>
 
-
-<% content_for :action_bar_left do %>
-  <%= link_to t('communication.website.force_publication'),
-              publish_admin_communication_website_author_path(@author),
-              method: :post,
-              class: button_classes %>
-<% end %>
-
 <% content_for :action_bar_right do %>
   <%= edit_link @author %>
 <% end %>
diff --git a/app/views/admin/communication/website/menus/index.html.erb b/app/views/admin/communication/website/menus/index.html.erb
index 03a573ee74a12188af759608e0a1c46422526f36..188904d98ba4573252f927550b04d0a9921acdb0 100644
--- a/app/views/admin/communication/website/menus/index.html.erb
+++ b/app/views/admin/communication/website/menus/index.html.erb
@@ -3,9 +3,11 @@
 <%= render 'admin/communication/websites/sidebar' do %>
   <div class="card">
     <%= render 'admin/communication/website/menus/list', menus: @menus %>
-    <div class="card-footer">
-      <%= paginate @menus, theme: 'bootstrap-5' %>
-    </div>
+    <% if @menus.total_pages > 1 %>
+      <div class="card-footer">
+        <%= paginate @menus, theme: 'bootstrap-5' %>
+      </div>
+    <% end %>
   </div>
 <% end %>
 
diff --git a/app/views/admin/communication/website/posts/_form.html.erb b/app/views/admin/communication/website/posts/_form.html.erb
index fb2f47dfe99a1ce57d8c6041585e462a7040be5f..7e9244dcf4f4391ab2fba84872aacb699181a809 100644
--- a/app/views/admin/communication/website/posts/_form.html.erb
+++ b/app/views/admin/communication/website/posts/_form.html.erb
@@ -26,7 +26,7 @@
                       } %>
           <%= f.input :published %>
           <%= f.input :published_at, html5: true %>
-          <%= f.association :author, collection: @website.authors.ordered if @website.authors.any? %>
+          <%= f.association :author, collection: current_university.members.authors.ordered %>
           <%= f.association :categories,
                             as: :check_boxes,
                             collection: @website.list_of_categories.map { |category| [
diff --git a/app/views/admin/communication/website/posts/index.html.erb b/app/views/admin/communication/website/posts/index.html.erb
index ed951db104024f1f1d70b4d3cb86d1b9c429e3de..5cf39eb6317119e61e66242fbcb096d69909d0e0 100644
--- a/app/views/admin/communication/website/posts/index.html.erb
+++ b/app/views/admin/communication/website/posts/index.html.erb
@@ -3,9 +3,11 @@
 <%= render 'admin/communication/websites/sidebar' do %>
   <div class="card">
     <%= render 'admin/communication/website/posts/list', posts: @posts, hide_author: true, hide_category: true %>
-    <div class="card-footer">
-      <%= paginate @posts, theme: 'bootstrap-5' %>
-    </div>
+    <% if @posts.total_pages > 1 %>
+      <div class="card-footer">
+        <%= paginate @posts, theme: 'bootstrap-5' %>
+      </div>
+    <% end %>
   </div>
 <% end %>
 
diff --git a/app/views/admin/research/journal/articles/_form.html.erb b/app/views/admin/research/journal/articles/_form.html.erb
index a37138e11d88486046989f1d9ca85f82cfa622af..1ca5b93cba7b00cfb96cfab443fba83a72197696 100644
--- a/app/views/admin/research/journal/articles/_form.html.erb
+++ b/app/views/admin/research/journal/articles/_form.html.erb
@@ -29,7 +29,7 @@
           <%= f.association :volume, collection: @journal.volumes, label: Research::Journal::Volume.model_name.human %>
           <%= f.input :published_at, html5: true %>
           <%= f.input :keywords, as: :text, input_html: { rows: 2 } %>
-          <%= f.association :researchers, collection: current_university.research_researchers.ordered, as: :check_boxes %>
+          <%= f.association :researchers, collection: current_university.members.researchers.ordered, as: :check_boxes %>
         </div>
       </div>
     </div>
diff --git a/app/views/admin/research/journal/articles/_list.html.erb b/app/views/admin/research/journal/articles/_list.html.erb
index 3d8425c402f71789117f21e81b67e27bda38eb99..d5e338ea9354588dc8c48003fc30b49f1547a70d 100644
--- a/app/views/admin/research/journal/articles/_list.html.erb
+++ b/app/views/admin/research/journal/articles/_list.html.erb
@@ -9,15 +9,15 @@
   <tbody>
     <% articles.each do |article| %>
       <tr>
-        <td><%= link_to article, admin_research_journal_article_path(journal_id: @journal, id: article) %></td>
+        <td><%= link_to article, admin_research_journal_article_path(journal_id: article.journal, id: article) %></td>
         <td><%= article.published_at %></td>
         <td class="text-end">
           <div class="btn-group" role="group">
             <%= link_to t('edit'),
-                        edit_admin_research_journal_article_path(journal_id: @journal, id: article),
+                        edit_admin_research_journal_article_path(journal_id: article.journal, id: article),
                         class: button_classes %>
             <%= link_to t('delete'),
-                        admin_research_journal_article_path(journal_id: @journal, id: article),
+                        admin_research_journal_article_path(journal_id: article.journal, id: article),
                         method: :delete,
                         data: { confirm: t('please-confirm') },
                         class: button_classes_danger %>
diff --git a/app/views/admin/research/journal/articles/show.html.erb b/app/views/admin/research/journal/articles/show.html.erb
index 948d91e065718bb69a2423f4188ec5a6aea0b9ff..3d1b9e68b4d0ad31a4aea4fa627382e1f2096d3f 100644
--- a/app/views/admin/research/journal/articles/show.html.erb
+++ b/app/views/admin/research/journal/articles/show.html.erb
@@ -40,7 +40,7 @@
           <h3 class="h5"><%= Research::Journal::Article.human_attribute_name('researchers') %></h3>
           <ul class="list-unstyled mb-0">
             <% @article.researchers.each do |researcher| %>
-              <li><%= link_to researcher, [:admin, researcher] %></li>
+              <li><%= link_to researcher, admin_research_researcher_path(researcher) %></li>
             <% end %>
           </ul>
         <% end %>
diff --git a/app/views/admin/research/researchers/_form.html.erb b/app/views/admin/research/researchers/_form.html.erb
deleted file mode 100644
index aecb1a41694cc74c808767e5d38b0e293f35983f..0000000000000000000000000000000000000000
--- a/app/views/admin/research/researchers/_form.html.erb
+++ /dev/null
@@ -1,29 +0,0 @@
-<%= simple_form_for [:admin, researcher] do |f| %>
-<div class="row">
-  <div class="col-md-4">
-    <div class="card flex-fill w-100">
-      <div class="card-body">
-        <%= f.input :first_name %>
-        <%= f.input :last_name %>
-        <%= f.input :slug,
-                    as: :string,
-                    input_html: researcher.persisted? ? {} : {
-                      class: 'js-slug-input',
-                      data: { source: '#research_researcher_first_name, #research_researcher_last_name' }
-                    } %>
-        <%= f.association :user, collection: current_university.users.ordered %>
-      </div>
-    </div>
-  </div>
-  <div class="col-md-8">
-    <div class="card flex-fill w-100">
-      <div class="card-body">
-        <%= f.input :biography, as: :rich_text_area %>
-      </div>
-    </div>
-  </div>
-</div>
-  <% content_for :action_bar_right do %>
-    <%= submit f %>
-  <% end %>
-<% end %>
diff --git a/app/views/admin/research/researchers/edit.html.erb b/app/views/admin/research/researchers/edit.html.erb
deleted file mode 100644
index fbfc680d709b3d64b2f126009632555575c82fed..0000000000000000000000000000000000000000
--- a/app/views/admin/research/researchers/edit.html.erb
+++ /dev/null
@@ -1,3 +0,0 @@
-<% content_for :title, @researcher%>
-
-<%= render 'form', researcher: @researcher %>
diff --git a/app/views/admin/research/researchers/index.html.erb b/app/views/admin/research/researchers/index.html.erb
index 3f4104f02185366ce01c22da9ff542901d99b5fb..a5a7053184e40d408d3817e0a8cb97f87e5fd3e0 100644
--- a/app/views/admin/research/researchers/index.html.erb
+++ b/app/views/admin/research/researchers/index.html.erb
@@ -3,32 +3,25 @@
 <table class="table">
   <thead>
     <tr>
-      <th><%= Research::Researcher.human_attribute_name('last_name') %></th>
-      <th><%= Research::Researcher.human_attribute_name('first_name') %></th>
-      <th><%= Research::Researcher.human_attribute_name('user') %></th>
-      <th></th>
+      <th><%= Administration::Member.human_attribute_name('name') %></th>
+      <th><%= t('research.number_of_articles') %></th>
     </tr>
   </thead>
 
   <tbody>
     <% @researchers.each do |researcher| %>
       <tr>
-        <td><%= link_to researcher.last_name, [:admin, researcher] %></td>
-        <td><%= link_to researcher.first_name, [:admin, researcher] %></td>
-        <td><%= link_to researcher.user, [:admin, researcher.user] if researcher.user %></td>
-        <td class="text-end">
-          <div class="btn-group" role="group">
-            <%= edit_link researcher %>
-            <%= destroy_link researcher %>
-          </div>
-        </td>
+        <td><%= link_to researcher, admin_research_researcher_path(researcher) %></td>
+        <td><%= researcher.research_journal_articles.count %></td>
       </tr>
     <% end %>
   </tbody>
 </table>
-<%= paginate @researchers, theme: 'bootstrap-5' %>
+<% if @researchers.total_pages > 1 %>
+    <%= paginate @researchers, theme: 'bootstrap-5' %>
+<% end %>
 
 
 <% content_for :action_bar_right do %>
-  <%= create_link Research::Researcher %>
+  <%= link_to t('research.manage_researchers'), admin_administration_members_path, class: button_classes if can?(:read, Administration::Member) %>
 <% end %>
diff --git a/app/views/admin/research/researchers/new.html.erb b/app/views/admin/research/researchers/new.html.erb
deleted file mode 100644
index 862c45f3c3e9aa7602c9d0626f0e8c8633262170..0000000000000000000000000000000000000000
--- a/app/views/admin/research/researchers/new.html.erb
+++ /dev/null
@@ -1,3 +0,0 @@
-<% content_for :title, Research::Researcher.model_name.human %>
-
-<%= render 'form', researcher: @researcher %>
diff --git a/app/views/admin/research/researchers/show.html.erb b/app/views/admin/research/researchers/show.html.erb
index e50282dea86fddaf6f1575823337bf35ee603f8e..1a6d84fac8e1c4ffc2e84b9cf1ebd903732d6872 100644
--- a/app/views/admin/research/researchers/show.html.erb
+++ b/app/views/admin/research/researchers/show.html.erb
@@ -1,40 +1,20 @@
 <% content_for :title, @researcher %>
 
-<div class="row">
-  <div class="col-md-8">
-    <div class="card flex-fill w-100">
-      <div class="card-header">
-        <h2 class="card-title mb-0 h5"><%= t('content') %></h2>
-      </div>
-      <div class="card-body">
-        <h3 class="h5"><%= Research::Researcher.human_attribute_name('biography') %></h3>
-        <%= @researcher.biography %>
-        <% if @researcher.articles.any? %>
-          <h3 class="h5 mt-4"><%= Research::Researcher.human_attribute_name('articles') %></h3>
-          <ul>
-            <% @researcher.articles.each do |article| %>
-              <li><%= link_to article, admin_research_journal_article_path(journal_id: article.journal.id, id: article) %></li>
-            <% end %>
-          </ul>
-        <% end %>
-      </div>
+<%= render 'admin/administration/members/main_infos', member: @researcher %>
+
+<% if @articles.total_count > 0 %>
+  <div class="card">
+    <div class="card-header">
+      <h5><%= "#{Research::Journal::Article.model_name.human(count: 2)} (#{@articles.total_count})" %></h5>
     </div>
-  </div>
-  <div class="col-md-4">
-    <div class="card flex-fill w-100">
-      <div class="card-header">
-        <h2 class="card-title mb-0 h5"><%= t('metadata') %></h2>
+    <%= render 'admin/research/journal/articles/list', articles: @articles %>
+    <% if @articles.total_pages > 1 %>
+      <div class="card-footer">
+        <%= paginate @articles, theme: 'bootstrap-5' %>
       </div>
-      <div class="card-body">
-        <% if @researcher.user %>
-          <h3 class="h5"><%= Research::Researcher.human_attribute_name('user') %></h3>
-          <p><%= link_to @researcher.user, [:admin, @researcher.user] %></p>
-        <% end %>
-      </div>
-    </div>
+    <% end %>
   </div>
-</div>
-
+<% end %>
 
 <% content_for :action_bar_right do %>
   <%= edit_link @researcher %>
diff --git a/config/locales/communication/en.yml b/config/locales/communication/en.yml
index 232963c1be73a04010f48f82915b543a6668fd36..028fe052c7853bc5885ea9e9387a0ce0ebe9ec48 100644
--- a/config/locales/communication/en.yml
+++ b/config/locales/communication/en.yml
@@ -1,5 +1,7 @@
 en:
   communication:
+    manage_authors: Manage authors
+    number_of_posts: Nunber of posts
     website:
       force_publication: 'Force publication'
       imported:
diff --git a/config/locales/communication/fr.yml b/config/locales/communication/fr.yml
index 8c70d43619f22b5e1e4da14e11df07e0c1500c23..36196b318506387a5369b9d3edc2a1b879150742 100644
--- a/config/locales/communication/fr.yml
+++ b/config/locales/communication/fr.yml
@@ -1,5 +1,7 @@
 fr:
   communication:
+    manage_authors: Gérer les auteurs
+    number_of_posts: Nombre d'actualités
     website:
       force_publication: 'Forcer la publication'
       imported:
diff --git a/config/locales/research/en.yml b/config/locales/research/en.yml
index 0f66cd6e10ff42e230358ae16ada1a719d1cd556..c6770e1d7d831198571ee7bce9f0608a5e1538ce 100644
--- a/config/locales/research/en.yml
+++ b/config/locales/research/en.yml
@@ -1,4 +1,7 @@
 en:
+  research:
+    manage_researchers: Managege researchers
+    number_of_articles: Number of articles
   activemodel:
     models:
       research: Research
diff --git a/config/locales/research/fr.yml b/config/locales/research/fr.yml
index 454e569f8a7926af010a4d590c84cb48fd8cfece..6a2a44920fb42d5b6ebc7af3a4b7a4751b3b8a01 100644
--- a/config/locales/research/fr.yml
+++ b/config/locales/research/fr.yml
@@ -1,4 +1,7 @@
 fr:
+  research:
+    manage_researchers: Gérer les Chercheu·rs·ses
+    number_of_articles: Nombre d'articles
   activemodel:
     models:
       research: Recherche
diff --git a/config/routes/admin/communication.rb b/config/routes/admin/communication.rb
index 0b94e89b9197da0d94009abb9ed40dda2e4aa77c..ec6dc3e695537e74990146796a5f2891dc0bf66e 100644
--- a/config/routes/admin/communication.rb
+++ b/config/routes/admin/communication.rb
@@ -25,11 +25,7 @@ namespace :communication do
         post :publish
       end
     end
-    resources :authors, controller: 'website/authors' do
-      member do
-        post :publish
-      end
-    end
+    resources :authors, controller: 'website/authors', only: [:index, :show]
     resources :posts, controller: 'website/posts' do
       member do
         post :publish
diff --git a/config/routes/admin/research.rb b/config/routes/admin/research.rb
index 45d9c173d4c6521ea482b0bf63dce8fe21915e47..678f7e597e92990a02acc56ed29c64a429cd31c0 100644
--- a/config/routes/admin/research.rb
+++ b/config/routes/admin/research.rb
@@ -1,5 +1,5 @@
 namespace :research do
-  resources :researchers
+  resources :researchers, only: [:index, :show]
   resources :journals do
     resources :volumes, controller: 'journal/volumes'
     resources :articles, controller: 'journal/articles'
diff --git a/db/migrate/20211214150454_change_index_on_communication_website_post_author.rb b/db/migrate/20211214150454_change_index_on_communication_website_post_author.rb
new file mode 100644
index 0000000000000000000000000000000000000000..708b31c7c8802d399b10b7a75698ab1568cf8512
--- /dev/null
+++ b/db/migrate/20211214150454_change_index_on_communication_website_post_author.rb
@@ -0,0 +1,6 @@
+class ChangeIndexOnCommunicationWebsitePostAuthor < ActiveRecord::Migration[6.1]
+  def change
+    remove_foreign_key :communication_website_posts, column: :author_id
+    add_foreign_key :communication_website_posts, :administration_members, column: :author_id
+  end
+end
diff --git a/db/migrate/20211214163501_change_index_on_research_journal_article_researcher.rb b/db/migrate/20211214163501_change_index_on_research_journal_article_researcher.rb
new file mode 100644
index 0000000000000000000000000000000000000000..a086077cf008ca94aef2bc956673f64e1d0df350
--- /dev/null
+++ b/db/migrate/20211214163501_change_index_on_research_journal_article_researcher.rb
@@ -0,0 +1,6 @@
+class ChangeIndexOnResearchJournalArticleResearcher < ActiveRecord::Migration[6.1]
+  def change
+    remove_foreign_key :research_journal_articles_researchers, column: :researcher_id
+    add_foreign_key :research_journal_articles_researchers, :administration_members, column: :researcher_id
+  end
+end
diff --git a/db/schema.rb b/db/schema.rb
index 73cdaade806fd993625235120030d34e259d60bc..bf36c61b9d795ff33f733600279146c65d8711f3 100644
--- a/db/schema.rb
+++ b/db/schema.rb
@@ -10,7 +10,7 @@
 #
 # It's strongly recommended that you check this file into your version control system.
 
-ActiveRecord::Schema.define(version: 2021_12_14_101323) do
+ActiveRecord::Schema.define(version: 2021_12_14_163501) do
 
   # These are extensions that must be enabled in order to support this database
   enable_extension "pgcrypto"
@@ -604,7 +604,7 @@ ActiveRecord::Schema.define(version: 2021_12_14_101323) do
   add_foreign_key "communication_website_pages", "communication_website_pages", column: "parent_id"
   add_foreign_key "communication_website_pages", "communication_websites"
   add_foreign_key "communication_website_pages", "universities"
-  add_foreign_key "communication_website_posts", "communication_website_authors", column: "author_id"
+  add_foreign_key "communication_website_posts", "administration_members", column: "author_id"
   add_foreign_key "communication_website_posts", "communication_websites"
   add_foreign_key "communication_website_posts", "universities"
   add_foreign_key "communication_websites", "universities"
@@ -617,8 +617,8 @@ ActiveRecord::Schema.define(version: 2021_12_14_101323) do
   add_foreign_key "research_journal_articles", "research_journals"
   add_foreign_key "research_journal_articles", "universities"
   add_foreign_key "research_journal_articles", "users", column: "updated_by_id"
+  add_foreign_key "research_journal_articles_researchers", "administration_members", column: "researcher_id"
   add_foreign_key "research_journal_articles_researchers", "research_journal_articles", column: "article_id"
-  add_foreign_key "research_journal_articles_researchers", "research_researchers", column: "researcher_id"
   add_foreign_key "research_journal_volumes", "research_journals"
   add_foreign_key "research_journal_volumes", "universities"
   add_foreign_key "research_journals", "universities"