diff --git a/src/main/java/org/eclipse/openk/contactbasedata/controller/ContactController.java b/src/main/java/org/eclipse/openk/contactbasedata/controller/ContactController.java
index 0b0ce65..445ced3 100644
--- a/src/main/java/org/eclipse/openk/contactbasedata/controller/ContactController.java
+++ b/src/main/java/org/eclipse/openk/contactbasedata/controller/ContactController.java
@@ -20,7 +20,6 @@
 import lombok.extern.log4j.Log4j2;
 import org.eclipse.openk.contactbasedata.model.VwDetailedContact;
 import org.eclipse.openk.contactbasedata.service.ContactService;
-import org.eclipse.openk.contactbasedata.viewmodel.ContactDto;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.domain.Page;
 import org.springframework.data.domain.Pageable;
@@ -50,11 +49,16 @@
             @RequestParam( "contactType") Optional<String> contactType,
             @RequestParam( "personTypeId" ) Optional<UUID> personTypeUuid,
             @RequestParam( "searchText" ) Optional<String> searchText,
+            @RequestParam( "moduleName") Optional<String> moduleName,
+            @RequestParam( "withoutAssignedModule") Optional<Boolean> withoutAssignedModule,
             @PageableDefault( sort = {"name"}, size = 20, direction = ASC) Pageable pageable ) {
         return contactService.findDetailedContacts(
                 contactType.orElse(null),
                 personTypeUuid.orElse(null),
-                searchText.orElse( null), pageable);
+                searchText.orElse( null),
+                moduleName.orElse(null),
+                withoutAssignedModule.orElse(Boolean.FALSE),
+                pageable);
     }
 
 
diff --git a/src/main/java/org/eclipse/openk/contactbasedata/repository/DetailedContactRepository.java b/src/main/java/org/eclipse/openk/contactbasedata/repository/DetailedContactRepository.java
index 3f14e89..bff9760 100644
--- a/src/main/java/org/eclipse/openk/contactbasedata/repository/DetailedContactRepository.java
+++ b/src/main/java/org/eclipse/openk/contactbasedata/repository/DetailedContactRepository.java
@@ -14,7 +14,6 @@
  */
 package org.eclipse.openk.contactbasedata.repository;
 
-import org.eclipse.openk.contactbasedata.model.TblAddress;
 import org.eclipse.openk.contactbasedata.model.VwDetailedContact;
 import org.springframework.data.domain.Page;
 import org.springframework.data.domain.Pageable;
@@ -22,24 +21,31 @@
 import org.springframework.data.repository.PagingAndSortingRepository;
 import org.springframework.data.repository.query.Param;
 
-import java.util.List;
 import java.util.UUID;
 
 public interface DetailedContactRepository extends PagingAndSortingRepository<VwDetailedContact, Long> {
     Page<VwDetailedContact> findAll(Pageable pageable);
 
 
-    @Query( "select dc from VwDetailedContact dc where"
-            + "(COALESCE(:contactType) is null or COALESCE(:contactType) is not null AND dc.contactType=:contactType)"
+    @Query( "select dc from VwDetailedContact dc "
+            + "left outer join TblAssignmentModulContact ass on"
+            + " ass.tblContact.id = dc.fkContactId"
+            + " where (COALESCE(:contactType) is null or COALESCE(:contactType) is not null AND dc.contactType=:contactType)"
             + " and (COALESCE(:personType) is null or COALESCE(:personType) is not null AND dc.personTypeUuid=:personType)"
-            + " and (COALESCE(:searchText) is null or COALESCE(:searchText) is not null AND dc.searchfield like %:searchText%)")
+            + " and (COALESCE(:searchText) is null or COALESCE(:searchText) is not null AND dc.searchfield like %:searchText%)"
+            + " and (COALESCE(:moduleName) is null or COALESCE(:moduleName) is not null AND ass.modulName = :moduleName)"
+            + " and (COALESCE(:withoutModule) = false or COALESCE(:withoutModule) = true AND ass is null)"
+    )
     Page<VwDetailedContact> findByFilter(@Param("contactType")String contactType,
                                          @Param("personType") UUID personType,
                                          @Param("searchText") String searchText,
+                                         @Param("moduleName") String moduleName,
+                                         @Param("withoutModule") boolean withoutModule,
                                          Pageable pageable);
 
 
-    @Query( "select dc from VwDetailedContact AS dc, TblContact AS c "
+    @Query( "select dc from VwDetailedContact AS dc"
+            + ", TblContact AS c "
             + "inner join c.assignments a where "
             + "dc.fkContactId = c.id and"
             + "(COALESCE(:modulName) is null or COALESCE(:modulName) is not null AND a.modulName =:modulName) and"
diff --git a/src/main/java/org/eclipse/openk/contactbasedata/service/ContactService.java b/src/main/java/org/eclipse/openk/contactbasedata/service/ContactService.java
index 3814d87..56f6be3 100644
--- a/src/main/java/org/eclipse/openk/contactbasedata/service/ContactService.java
+++ b/src/main/java/org/eclipse/openk/contactbasedata/service/ContactService.java
@@ -16,19 +16,15 @@
 
 import lombok.extern.log4j.Log4j2;
 import org.eclipse.openk.contactbasedata.mapper.ContactMapper;
-import org.eclipse.openk.contactbasedata.model.TblAssignmentModulContact;
 import org.eclipse.openk.contactbasedata.model.VwDetailedContact;
 import org.eclipse.openk.contactbasedata.repository.ContactRepository;
 import org.eclipse.openk.contactbasedata.repository.DetailedContactRepository;
-import org.eclipse.openk.contactbasedata.viewmodel.ContactDto;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.domain.Page;
 import org.springframework.data.domain.Pageable;
 import org.springframework.stereotype.Service;
 
-import java.util.List;
 import java.util.UUID;
-import java.util.stream.Collectors;
 
 @Log4j2
 @Service
@@ -42,15 +38,24 @@
 
     public Page<VwDetailedContact> findDetailedContacts(String contactType,
                                                         UUID personTypeUuid,
-                                                        String searchText, Pageable pageable) {
+                                                        String searchText,
+                                                        String moduleName,
+                                                        boolean withoutModule,
+                                                        Pageable pageable) {
 
-        if( contactType == null && personTypeUuid == null && searchText == null) {
+        if( contactType == null &&
+                personTypeUuid == null &&
+                searchText == null &&
+                moduleName == null &&
+                !withoutModule) {
             return detailedContactRepository.findAll(pageable);
         }
         else {
             return detailedContactRepository.findByFilter( contactType,
                     personTypeUuid,
                     searchText != null ? searchText.toUpperCase() : null,
+                    moduleName,
+                    withoutModule,
                     pageable);
         }
     }
diff --git a/src/test/java/org/eclipse/openk/contactbasedata/controller/ContactControllerTest.java b/src/test/java/org/eclipse/openk/contactbasedata/controller/ContactControllerTest.java
index 1b79c1d..c27791b 100644
--- a/src/test/java/org/eclipse/openk/contactbasedata/controller/ContactControllerTest.java
+++ b/src/test/java/org/eclipse/openk/contactbasedata/controller/ContactControllerTest.java
@@ -30,8 +30,7 @@
 import org.springframework.test.web.servlet.MockMvc;
 
 import static org.hamcrest.Matchers.is;
-import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.ArgumentMatchers.isNull;
+import static org.mockito.ArgumentMatchers.*;
 import static org.mockito.Mockito.when;
 import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
 import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*;
@@ -55,7 +54,7 @@
         Page<VwDetailedContact> retPage = MockDataHelper.mockVDetailedContactPage();
 
         when(contactService.findDetailedContacts(
-                isNull(), isNull(), isNull(), any(Pageable.class))).thenReturn(retPage);
+                isNull(), isNull(), isNull(), isNull(), anyBoolean(), any(Pageable.class))).thenReturn(retPage);
 
         mockMvc.perform(get("/contacts"))
                 .andExpect(status().is2xxSuccessful())
diff --git a/src/test/java/org/eclipse/openk/contactbasedata/service/ContactServiceTest.java b/src/test/java/org/eclipse/openk/contactbasedata/service/ContactServiceTest.java
index 91788ba..544867a 100644
--- a/src/test/java/org/eclipse/openk/contactbasedata/service/ContactServiceTest.java
+++ b/src/test/java/org/eclipse/openk/contactbasedata/service/ContactServiceTest.java
@@ -49,7 +49,7 @@
         Page<VwDetailedContact> mockPaged = MockDataHelper.mockVDetailedContactPage();
         when(detailedContactRepository.findAll(any(Pageable.class))).thenReturn(mockPaged);
         Page<VwDetailedContact> retPage = contactService.findDetailedContacts(
-                null, null, null, PageRequest.of(0, 20));
+                null, null, null, null, false, PageRequest.of(0, 20));
 
         assertEquals(mockPaged.getTotalElements(), retPage.getTotalElements());
     }
