diff --git a/models/project.py b/models/project.py
index 368aa6b55ec480cba8ebd72d374c01d4cc4379b5..e9c6db03ee3d965172756c5bc782159bfac76342 100644
--- a/models/project.py
+++ b/models/project.py
@@ -1,17 +1,41 @@
 # Copyright 2022 Le Filament (<http://www.le-filament.com>)
 # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
 
-from odoo import models
+from odoo import api, fields, models
 
 
 class Project(models.Model):
     _inherit = "project.project"
+    _order = "display_name"
+
+    display_name = fields.Char(compute="_compute_display_name", store=True, index=True)
+    type_name = fields.Char(related="type_id.name")
+
+    @api.depends("name", "type_id.name")
+    def _compute_display_name(self):
+        for project in self:
+            project.display_name = (
+                "%s / %s" % (project.type_id.name, project.name)
+                if project.type_id
+                else project.name
+            )
 
     def name_get(self):
-        """ Return the type then project name
+        """
+        Return the type then project name
         """
         res = []
         for project in self:
-            name = "%s / %s" % (project.type_id.name, project.name) if project.type_id else project.name
-            res.append((project.id, name))
+            res.append((project.id, project.display_name))
         return res
+
+    def _name_search(
+        self, name="", args=None, operator="ilike", limit=100, name_get_uid=None
+    ):
+        """
+        Search for type as well
+        """
+        args = args or []
+        if name:
+            args += [("display_name", operator, name)]
+        return self._search(args, limit=limit, access_rights_uid=name_get_uid)