diff --git a/yaki_admin_backend/src/main/java/com/xpeho/yaki_admin_backend/data/services/UserServiceImpl.java b/yaki_admin_backend/src/main/java/com/xpeho/yaki_admin_backend/data/services/UserServiceImpl.java
index 10fd66a61..9477ad6c5 100644
--- a/yaki_admin_backend/src/main/java/com/xpeho/yaki_admin_backend/data/services/UserServiceImpl.java
+++ b/yaki_admin_backend/src/main/java/com/xpeho/yaki_admin_backend/data/services/UserServiceImpl.java
@@ -108,9 +108,15 @@ public List<UserEntityWithID> findUserByIdRange(int idStart, int idEnd) {
     }
 
     @Override
-    public Page<UserEntityWithID> findAllUsers(Pageable pageable, Integer customerId, Boolean excludeCaptains, Integer excludeTeamId) {
+    public Page<UserEntityWithID> findAllUsers(
+            Pageable pageable,
+            Integer customerId,
+            Boolean excludeCaptains,
+            Integer excludeTeamId,
+            String q,
+            String email) {
         // Call the getUserPage method to get a Page of UserModels, sorted by last name.
-        Page<UserModel> userPage = getUserPage(pageable, customerId, excludeCaptains, excludeTeamId);
+        Page<UserModel> userPage = getUserPage(pageable, customerId, excludeCaptains, excludeTeamId, q, email);
 
         return userPage.map(user -> new UserEntityWithID(
                 user.getUserId(),
@@ -125,7 +131,13 @@ public Page<UserEntityWithID> findAllUsers(Pageable pageable, Integer customerId
     }
 
     @Override
-    public Page<UserModel> getUserPage(Pageable pageable, Integer customerId, Boolean excludeCaptains, Integer excludeTeamId) {
+    public Page<UserModel> getUserPage(
+            Pageable pageable,
+            Integer customerId,
+            Boolean excludeCaptains,
+            Integer excludeTeamId,
+            String q,
+            String email) {
         // Create a new PageRequest object. This is a concrete implementation of the Pageable interface, which is used to add pagination information to database queries.
         // The parameters to the of() method are:
         // - pageable.getPageNumber(): This gets the number of the page that we want to retrieve. Page numbers are zero-based, so the first page is page 0.
@@ -139,14 +151,14 @@ public Page<UserModel> getUserPage(Pageable pageable, Integer customerId, Boolea
         // The findAll method takes the Pageable object as a parameter, which includes the page number, page size, and sorting details.
         if (customerId != null) {
             if (excludeCaptains != null && excludeCaptains) {
-                return userJpaRepository.findAllEnabledUsersByCustomerExcludingCaptains(sortedByName, customerId);
+                return userJpaRepository.findAllEnabledUsersByCustomerExcludingCaptains(sortedByName, customerId, q, email);
             } else if (excludeTeamId != null) {
-                return userJpaRepository.findAllEnabledUsersByCustomerExcludingTeam(sortedByName, customerId, excludeTeamId);
+                return userJpaRepository.findAllEnabledUsersByCustomerExcludingTeam(sortedByName, customerId, excludeTeamId, q, email);
             } else {
-                return userJpaRepository.findAllEnabledUsersByCustomer(sortedByName, customerId);
+                return userJpaRepository.findAllEnabledUsersByCustomer(sortedByName, customerId, q, email);
             }
         } else {
-            return userJpaRepository.findAllEnabledUsers(sortedByName);
+            return userJpaRepository.findAllEnabledUsers(sortedByName, q, email);
         }
     }
 
diff --git a/yaki_admin_backend/src/main/java/com/xpeho/yaki_admin_backend/data/sources/UserJpaRepository.java b/yaki_admin_backend/src/main/java/com/xpeho/yaki_admin_backend/data/sources/UserJpaRepository.java
index 324a67536..20e9ea27d 100644
--- a/yaki_admin_backend/src/main/java/com/xpeho/yaki_admin_backend/data/sources/UserJpaRepository.java
+++ b/yaki_admin_backend/src/main/java/com/xpeho/yaki_admin_backend/data/sources/UserJpaRepository.java
@@ -13,9 +13,17 @@ public interface UserJpaRepository extends JpaRepository<UserModel, Integer> {
     @Query("""
             SELECT u
             FROM UserModel u
-            WHERE u.enabled = true
-            """)
-    Page<UserModel> findAllEnabledUsers(Pageable pageable);
+            WHERE u.enabled = true and
+            (
+                (:q is null\s
+                or LOWER(u.firstName) like LOWER(CONCAT('%', :q, '%'))\s
+                or LOWER(u.lastName) like LOWER(CONCAT('%', :q, '%'))\s
+                or LOWER(u.email) like LOWER(CONCAT('%', :q, '%')))\s
+                and
+                (:email is null or LOWER(u.email) = LOWER(:email))
+            )
+           \s""")
+    Page<UserModel> findAllEnabledUsers(Pageable pageable, String q, String email);
 
     @Query("""
             SELECT u
@@ -23,8 +31,17 @@ public interface UserJpaRepository extends JpaRepository<UserModel, Integer> {
             JOIN TeammateModel tm ON u.userId = tm.userId
             JOIN TeamModel t ON tm.teamId = t.id
             WHERE u.enabled = true AND t.customerId = :customerId
+            and
+            (
+                (:q is null\s
+                or LOWER(u.firstName) like LOWER(CONCAT('%', :q, '%'))\s
+                or LOWER(u.lastName) like LOWER(CONCAT('%', :q, '%'))\s
+                or LOWER(u.email) like LOWER(CONCAT('%', :q, '%')))\s
+                and
+                (:email is null or LOWER(u.email) = LOWER(:email))
+            )
             """)
-    Page<UserModel> findAllEnabledUsersByCustomer(Pageable pageable, Integer customerId);
+    Page<UserModel> findAllEnabledUsersByCustomer(Pageable pageable, Integer customerId, String q, String email);
 
     @Query("""
             SELECT u
@@ -33,8 +50,17 @@ public interface UserJpaRepository extends JpaRepository<UserModel, Integer> {
             LEFT JOIN CaptainModel c ON u.userId = c.userId
             JOIN TeamModel t ON tm.teamId = t.id
             WHERE u.enabled = true AND t.customerId = :customerId AND c.userId IS NULL
+            and
+            (
+                (:q is null\s
+                or LOWER(u.firstName) like LOWER(CONCAT('%', :q, '%'))\s
+                or LOWER(u.lastName) like LOWER(CONCAT('%', :q, '%'))\s
+                or LOWER(u.email) like LOWER(CONCAT('%', :q, '%')))\s
+                and
+                (:email is null or LOWER(u.email) = LOWER(:email))
+            )
             """)
-    Page<UserModel> findAllEnabledUsersByCustomerExcludingCaptains(Pageable pageable, Integer customerId);
+    Page<UserModel> findAllEnabledUsersByCustomerExcludingCaptains(Pageable pageable, Integer customerId, String q, String email);
 
     @Query("""
             SELECT u
@@ -42,8 +68,17 @@ public interface UserJpaRepository extends JpaRepository<UserModel, Integer> {
             JOIN TeammateModel tm ON u.userId = tm.userId
             JOIN TeamModel t ON tm.teamId = t.id
             WHERE u.enabled = true AND t.customerId = :customerId AND t.id != :excludeTeamId
+            and
+            (
+                (:q is null\s
+                or LOWER(u.firstName) like LOWER(CONCAT('%', :q, '%'))\s
+                or LOWER(u.lastName) like LOWER(CONCAT('%', :q, '%'))\s
+                or LOWER(u.email) like LOWER(CONCAT('%', :q, '%')))\s
+                and
+                (:email is null or LOWER(u.email) = LOWER(:email))
+            )
             """)
-    Page<UserModel> findAllEnabledUsersByCustomerExcludingTeam(Pageable pageable, Integer customerId, Integer excludeTeamId);
+    Page<UserModel> findAllEnabledUsersByCustomerExcludingTeam(Pageable pageable, Integer customerId, Integer excludeTeamId, String q, String email);
 
     Optional<UserModel> findByLogin(String login);
 
diff --git a/yaki_admin_backend/src/main/java/com/xpeho/yaki_admin_backend/domain/services/UserService.java b/yaki_admin_backend/src/main/java/com/xpeho/yaki_admin_backend/domain/services/UserService.java
index 8d5efdf1d..e75aa51a1 100644
--- a/yaki_admin_backend/src/main/java/com/xpeho/yaki_admin_backend/domain/services/UserService.java
+++ b/yaki_admin_backend/src/main/java/com/xpeho/yaki_admin_backend/domain/services/UserService.java
@@ -19,9 +19,9 @@ public interface UserService {
     List<UserEntityWithID> findUserByIdRange(int idStart, int idEnd);
 
 
-    Page<UserEntityWithID> findAllUsers(Pageable pageable, Integer customerId, Boolean excludeCaptains, Integer excludeTeamId);
+    Page<UserEntityWithID> findAllUsers(Pageable pageable, Integer customerId, Boolean excludeCaptains, Integer excludeTeamId, String q, String email);
 
-    Page<UserModel> getUserPage(Pageable pageable, Integer customerId, Boolean excludeCaptains, Integer excludeTeamId);
+    Page<UserModel> getUserPage(Pageable pageable, Integer customerId, Boolean excludeCaptains, Integer excludeTeamId, String q, String email);
 
     UserEntity deleteById(int id);
 
diff --git a/yaki_admin_backend/src/main/java/com/xpeho/yaki_admin_backend/presentation/controllers/UserController.java b/yaki_admin_backend/src/main/java/com/xpeho/yaki_admin_backend/presentation/controllers/UserController.java
index c50c958f0..b8723010b 100644
--- a/yaki_admin_backend/src/main/java/com/xpeho/yaki_admin_backend/presentation/controllers/UserController.java
+++ b/yaki_admin_backend/src/main/java/com/xpeho/yaki_admin_backend/presentation/controllers/UserController.java
@@ -13,9 +13,7 @@
 import org.springframework.security.core.userdetails.UserDetails;
 import org.springframework.web.bind.annotation.*;
 
-import java.util.HashMap;
 import java.util.List;
-import java.util.Map;
 
 @CrossOrigin
 @RestController
@@ -49,7 +47,9 @@ public ResponseEntity<UserResponseEntity> findAllUsers(
             @RequestParam(defaultValue = "10") int size,
             @RequestParam(required = false) Integer customerId,
             @RequestParam(required = false) Boolean excludeCaptains,
-            @RequestParam(required = false) Integer excludeTeamId) {
+            @RequestParam(required = false) Integer excludeTeamId,
+            @RequestParam(required = false) String q,
+            @RequestParam(required = false) String email) {
 
         // Create a Pageable object with the provided page number and size. This is used
         // to add pagination information to the database query.
@@ -58,7 +58,7 @@ public ResponseEntity<UserResponseEntity> findAllUsers(
         // Call the userService to get a Page of UserEntityWithID. The Page includes the
         // data for the requested page, as well as pagination information.
         Page<UserEntityWithID> userPage = userService.findAllUsers(pageable, customerId, excludeCaptains,
-                excludeTeamId);
+                excludeTeamId, q, email);
 
         // Create a map to hold the response data.
         // The getContent() method is used to get the list of UserEntityWithID from the Page.
diff --git a/yaki_admin_backend/src/test/java/com/xpeho/yaki_admin_backend/data/services/UserServiceImplUnitTest.java b/yaki_admin_backend/src/test/java/com/xpeho/yaki_admin_backend/data/services/UserServiceImplUnitTest.java
index 6ff478380..03963ef9f 100644
--- a/yaki_admin_backend/src/test/java/com/xpeho/yaki_admin_backend/data/services/UserServiceImplUnitTest.java
+++ b/yaki_admin_backend/src/test/java/com/xpeho/yaki_admin_backend/data/services/UserServiceImplUnitTest.java
@@ -37,19 +37,19 @@ void getUserPage_should_call_findAllEnabledUsersByCustomerExcludingCaptains() {
         Boolean excludeCaptains = true;
         Integer excludeTeamId = null;
 
-        when(userJpaRepository.findAllEnabledUsersByCustomerExcludingCaptains(any(), any())).thenReturn(new PageImpl<>(List.of(user1)));
+        when(userJpaRepository.findAllEnabledUsersByCustomerExcludingCaptains(any(), any(), any(), any())).thenReturn(new PageImpl<>(List.of(user1)));
 
         var expectedResult = new PageImpl<>(List.of(user1));
 
 
         // WHEN
-        var result = userService.getUserPage(pageable, customerId, excludeCaptains, excludeTeamId);
+        var result = userService.getUserPage(pageable, customerId, excludeCaptains, excludeTeamId, null, null);
 
         // THEN
-        verify(userJpaRepository).findAllEnabledUsersByCustomerExcludingCaptains(any(), any());
-        verify(userJpaRepository, never()).findAllEnabledUsersByCustomer(any(), any());
-        verify(userJpaRepository, never()).findAllEnabledUsersByCustomerExcludingTeam(any(), any(), any());
-        verify(userJpaRepository, never()).findAllEnabledUsers(any());
+        verify(userJpaRepository).findAllEnabledUsersByCustomerExcludingCaptains(any(), any(), any(), any());
+        verify(userJpaRepository, never()).findAllEnabledUsersByCustomer(any(), any(), any(), any());
+        verify(userJpaRepository, never()).findAllEnabledUsersByCustomerExcludingTeam(any(), any(), any(), any(), any());
+        verify(userJpaRepository, never()).findAllEnabledUsers(any(), any(), any());
 
         assertEquals(expectedResult, result);
 
@@ -65,18 +65,18 @@ void getUserPage_should_call_findAllEnabledUsersByCustomerExcludingTeam() {
         Boolean excludeCaptains = null;
         Integer excludeTeamId = 1;
 
-        when(userJpaRepository.findAllEnabledUsersByCustomerExcludingTeam(any(), any(), any())).thenReturn(new PageImpl<>(List.of(user1)));
+        when(userJpaRepository.findAllEnabledUsersByCustomerExcludingTeam(any(), any(), any(), any(), any())).thenReturn(new PageImpl<>(List.of(user1)));
 
         var expectedResult = new PageImpl<>(List.of(user1));
 
         // WHEN
-        var result = userService.getUserPage(pageable, customerId, excludeCaptains, excludeTeamId);
+        var result = userService.getUserPage(pageable, customerId, excludeCaptains, excludeTeamId, null, null);
 
         // THEN
-        verify(userJpaRepository, never()).findAllEnabledUsersByCustomerExcludingCaptains(any(), any());
-        verify(userJpaRepository, never()).findAllEnabledUsersByCustomer(any(), any());
-        verify(userJpaRepository).findAllEnabledUsersByCustomerExcludingTeam(any(), any(), any());
-        verify(userJpaRepository, never()).findAllEnabledUsers(any());
+        verify(userJpaRepository, never()).findAllEnabledUsersByCustomerExcludingCaptains(any(), any(), any(), any());
+        verify(userJpaRepository, never()).findAllEnabledUsersByCustomer(any(), any(), any(), any());
+        verify(userJpaRepository).findAllEnabledUsersByCustomerExcludingTeam(any(), any(), any(), any(), any());
+        verify(userJpaRepository, never()).findAllEnabledUsers(any(), any(), any());
 
         assertEquals(expectedResult, result);
     }
@@ -91,18 +91,18 @@ void getUserPage_should_call_findAllEnabledUsersByCustomer() {
         Boolean excludeCaptains = null;
         Integer excludeTeamId = null;
 
-        when(userJpaRepository.findAllEnabledUsersByCustomer(any(), any())).thenReturn(new PageImpl<>(List.of(user1)));
+        when(userJpaRepository.findAllEnabledUsersByCustomer(any(), any(), any(), any())).thenReturn(new PageImpl<>(List.of(user1)));
 
         var expectedResult = new PageImpl<>(List.of(user1));
 
         // WHEN
-        var result = userService.getUserPage(pageable, customerId, excludeCaptains, excludeTeamId);
+        var result = userService.getUserPage(pageable, customerId, excludeCaptains, excludeTeamId, null, null);
 
         // THEN
-        verify(userJpaRepository, never()).findAllEnabledUsersByCustomerExcludingCaptains(any(), any());
-        verify(userJpaRepository).findAllEnabledUsersByCustomer(any(), any());
-        verify(userJpaRepository, never()).findAllEnabledUsersByCustomerExcludingTeam(any(), any(), any());
-        verify(userJpaRepository, never()).findAllEnabledUsers(any());
+        verify(userJpaRepository, never()).findAllEnabledUsersByCustomerExcludingCaptains(any(), any(), any(), any());
+        verify(userJpaRepository).findAllEnabledUsersByCustomer(any(), any(), any(), any());
+        verify(userJpaRepository, never()).findAllEnabledUsersByCustomerExcludingTeam(any(), any(), any(), any(), any());
+        verify(userJpaRepository, never()).findAllEnabledUsers(any(), any(), any());
 
         assertEquals(expectedResult, result);
     }
@@ -117,18 +117,18 @@ void getUserPage_should_call_findAllEnabledUsers() {
         Boolean excludeCaptains = null;
         Integer excludeTeamId = null;
 
-        when(userJpaRepository.findAllEnabledUsers(any())).thenReturn(new PageImpl<>(List.of(user1)));
+        when(userJpaRepository.findAllEnabledUsers(any(), any(), any())).thenReturn(new PageImpl<>(List.of(user1)));
 
         var expectedResult = new PageImpl<>(List.of(user1));
 
         // WHEN
-        var result = userService.getUserPage(pageable, customerId, excludeCaptains, excludeTeamId);
+        var result = userService.getUserPage(pageable, customerId, excludeCaptains, excludeTeamId, null, null);
 
         // THEN
-        verify(userJpaRepository, never()).findAllEnabledUsersByCustomerExcludingCaptains(any(), any());
-        verify(userJpaRepository, never()).findAllEnabledUsersByCustomer(any(), any());
-        verify(userJpaRepository, never()).findAllEnabledUsersByCustomerExcludingTeam(any(), any(), any());
-        verify(userJpaRepository).findAllEnabledUsers(any());
+        verify(userJpaRepository, never()).findAllEnabledUsersByCustomerExcludingCaptains(any(), any(), any(), any());
+        verify(userJpaRepository, never()).findAllEnabledUsersByCustomer(any(), any(), any(), any());
+        verify(userJpaRepository, never()).findAllEnabledUsersByCustomerExcludingTeam(any(), any(), any(), any(), any());
+        verify(userJpaRepository).findAllEnabledUsers(any(), any(), any());
 
         assertEquals(expectedResult, result);
     }