diff --git a/app/controllers/admin/university/organizations_controller.rb b/app/controllers/admin/university/organizations_controller.rb
index 4a168b2bec9da1be9d9972cafdd31958c34ce92b..328dd0b54760db15c2bf10fde44ee78e6b6e6411 100644
--- a/app/controllers/admin/university/organizations_controller.rb
+++ b/app/controllers/admin/university/organizations_controller.rb
@@ -3,8 +3,11 @@ class Admin::University::OrganizationsController < Admin::University::Applicatio
                               through: :current_university,
                               through_association: :organizations
 
+  has_scope :for_search_term
+  has_scope :for_kind
+
   def index
-    @organizations = @organizations.ordered.page(params[:page])
+    @organizations = apply_scopes(@organizations).ordered.page(params[:page])
     breadcrumb
   end
 
diff --git a/app/models/university/organization.rb b/app/models/university/organization.rb
index 84a53aad21506c275584084e02c0f77aad848d52..9e8a37796ceef160aa30e9facdeeee163b6bdd10 100644
--- a/app/models/university/organization.rb
+++ b/app/models/university/organization.rb
@@ -45,6 +45,24 @@ class University::Organization < ApplicationRecord
   has_one_attached_deletable :logo
 
   scope :ordered, -> { order(:name) }
+  scope :for_kind, -> (kind) { where(kind: kind) }
+  scope :for_search_term, -> (term) {
+    where("
+      unaccent(university_organizations.address) ILIKE unaccent(:term) OR
+      unaccent(university_organizations.city) ILIKE unaccent(:term) OR
+      unaccent(university_organizations.country) ILIKE unaccent(:term) OR
+      unaccent(university_organizations.description) ILIKE unaccent(:term) OR
+      unaccent(university_organizations.email) ILIKE unaccent(:term) OR
+      unaccent(university_organizations.long_name) ILIKE unaccent(:term) OR
+      unaccent(university_organizations.name) ILIKE unaccent(:term) OR
+      unaccent(university_organizations.nic) ILIKE unaccent(:term) OR
+      unaccent(university_organizations.phone) ILIKE unaccent(:term) OR
+      unaccent(university_organizations.siren) ILIKE unaccent(:term) OR
+      unaccent(university_organizations.text) ILIKE unaccent(:term) OR
+      unaccent(university_organizations.zipcode) ILIKE unaccent(:term) OR
+      unaccent(university_organizations.url) ILIKE unaccent(:term)
+    ", term: "%#{sanitize_sql_like(term)}%")
+  }
 
   validates_presence_of :name
 
diff --git a/app/models/university/person.rb b/app/models/university/person.rb
index df746435d0c942f8e57ccaa90a477fb3029f96c6..b2d74f3b246caa05e0f5f8074cb1b78012f4eed1 100644
--- a/app/models/university/person.rb
+++ b/app/models/university/person.rb
@@ -117,7 +117,6 @@ class University::Person < ApplicationRecord
   scope :researchers,     -> { where(is_researcher: true) }
   scope :alumni,          -> { where(is_alumnus: true) }
   scope :for_role, -> (role) { where("is_#{role}": true) }
-
   scope :for_search_term, -> (term) {
     where("
       unaccent(concat(university_people.first_name, ' ', university_people.last_name)) ILIKE unaccent(:term) OR
diff --git a/app/services/filters/admin/university/organizations.rb b/app/services/filters/admin/university/organizations.rb
new file mode 100644
index 0000000000000000000000000000000000000000..85b22cef389ebb90507853371f0deb8f3076ba98
--- /dev/null
+++ b/app/services/filters/admin/university/organizations.rb
@@ -0,0 +1,9 @@
+module Filters
+  class Admin::University::Organizations < Filters::Base
+    def initialize(user)
+      super
+      add_search
+      add :for_kind, ::University::Organization::kinds.keys.map { |r| { to_s: I18n.t("enums.university.organization.kind.#{r}"), id: r } }, I18n.t('filters.attributes.kind')
+    end
+  end
+end
diff --git a/app/views/admin/university/organizations/index.html.erb b/app/views/admin/university/organizations/index.html.erb
index b538dd5cd15b0eb73a89a6afdaddfea780d957e2..6fc56c6f77804a3c133f498e254c1d3ffcb7c89e 100644
--- a/app/views/admin/university/organizations/index.html.erb
+++ b/app/views/admin/university/organizations/index.html.erb
@@ -1,5 +1,7 @@
 <% content_for :title, "#{University::Organization.model_name.human(count: 2)} (#{@organizations.total_count})" %>
 
+<%= render 'filters', current_path: admin_university_organizations_path, filters: @filters if @filters.any?  %>
+
 <%= render 'admin/university/organizations/list', organizations: @organizations %>
 <%= paginate @organizations, theme: 'bootstrap-5' %>
 
diff --git a/config/locales/en.yml b/config/locales/en.yml
index 49586fa67c5b553e343b068df01bb7d30bb144ed..14bb8300d6598cf0628f124ff26d027b135e6a7e 100644
--- a/config/locales/en.yml
+++ b/config/locales/en.yml
@@ -96,6 +96,7 @@ en:
   filters:
     attributes:
       date: Filter by Date
+      kind: Filter by Kind
       role: Filter by Role
     buttons:
       expand: Filter table
diff --git a/config/locales/fr.yml b/config/locales/fr.yml
index 2963ff7588bcd53d3ef6666f8267e72bb08564de..657b393cba75a98e3a563139d13a30892911a29b 100644
--- a/config/locales/fr.yml
+++ b/config/locales/fr.yml
@@ -96,6 +96,7 @@ fr:
   filters:
     attributes:
       date: Filtrer par Date
+      kind: Filtrer par Type
       role: Filtrer par Rôle
     buttons:
       expand: Filtrer le tableau
diff --git a/db/schema.rb b/db/schema.rb
index 1b22f72bbaac4ee2327c940af97a497eb44db2cf..c2f1cfe2049432ecccfc93aa647a4922f421f974 100644
--- a/db/schema.rb
+++ b/db/schema.rb
@@ -319,10 +319,10 @@ ActiveRecord::Schema.define(version: 2022_04_27_094234) do
     t.uuid "related_category_id"
     t.string "featured_image_alt"
     t.text "text"
-    t.text "description_short"
     t.string "breadcrumb_title"
     t.text "header_text"
     t.integer "kind"
+    t.text "description_short"
     t.string "bodyclass"
     t.uuid "language_id"
     t.index ["communication_website_id"], name: "index_communication_website_pages_on_communication_website_id"
@@ -502,23 +502,6 @@ ActiveRecord::Schema.define(version: 2022_04_27_094234) do
     t.index ["university_id"], name: "index_education_schools_on_university_id"
   end
 
-  create_table "external_organizations", id: :uuid, default: -> { "gen_random_uuid()" }, force: :cascade do |t|
-    t.string "title"
-    t.text "description"
-    t.string "address"
-    t.string "zipcode"
-    t.string "city"
-    t.string "country"
-    t.string "website"
-    t.string "phone"
-    t.string "mail"
-    t.boolean "active"
-    t.string "sirene"
-    t.integer "kind"
-    t.datetime "created_at", precision: 6, null: false
-    t.datetime "updated_at", precision: 6, null: false
-  end
-
   create_table "languages", id: :uuid, default: -> { "gen_random_uuid()" }, force: :cascade do |t|
     t.string "name"
     t.string "iso_code"
@@ -702,8 +685,8 @@ ActiveRecord::Schema.define(version: 2022_04_27_094234) do
     t.string "linkedin"
     t.boolean "is_alumnus", default: false
     t.text "description_short"
-    t.string "name"
     t.boolean "is_author"
+    t.string "name"
     t.index ["university_id"], name: "index_university_people_on_university_id"
     t.index ["user_id"], name: "index_university_people_on_user_id"
   end