KON-13 KON-534 showAnonimized Flag in 5 Services und SonarWork
diff --git a/src/main/java/org/eclipse/openk/contactbasedata/controller/CompanyController.java b/src/main/java/org/eclipse/openk/contactbasedata/controller/CompanyController.java
index b16586a..b42e692 100644
--- a/src/main/java/org/eclipse/openk/contactbasedata/controller/CompanyController.java
+++ b/src/main/java/org/eclipse/openk/contactbasedata/controller/CompanyController.java
@@ -36,6 +36,7 @@
 
 import java.net.URI;
 import java.util.List;
+import java.util.Optional;
 import java.util.UUID;
 
 @Log4j2
@@ -62,8 +63,9 @@
     @ApiResponses(value = {
             @ApiResponse(code = 200, message = "Erfolgreich durchgeführt")})
     public Page<CompanyDto> readCompanys(
+            @RequestParam( "alsoShowAnonymous") Optional<Boolean> alsoShowAnonymous,
             @PageableDefault(sort = {"companyName"}, direction = Sort.Direction.ASC) Pageable pageable){
-            return companyService.findCompanies(pageable);
+            return companyService.findCompanies(alsoShowAnonymous.orElse(false), pageable);
     }
 
     @PostMapping
@@ -107,9 +109,12 @@
     @ApiResponses(value = {
             @ApiResponse(code = 200, message = "Erfolgreich durchgeführt"),
             @ApiResponse(code = 404, message = "Ansprechpartner wurden nicht gefunden")})
-    public List<ContactPersonDto> findContactPersons(@PathVariable("contactUuid") UUID contactUuid) {
+    public List<ContactPersonDto> findContactPersons(
+            @PathVariable("contactUuid") UUID contactUuid,
+            @RequestParam("alsoShowAnonymous") Optional<Boolean> alsoShowAnonymous ) {
 
-        return companyService.findContactPersonsToCompany(contactUuid);
+        return companyService.findContactPersonsToCompany(
+                contactUuid, alsoShowAnonymous.orElse(false));
     }
 
 }
diff --git a/src/main/java/org/eclipse/openk/contactbasedata/controller/ExternalPersonController.java b/src/main/java/org/eclipse/openk/contactbasedata/controller/ExternalPersonController.java
index 86a5f3f..6ea0938 100644
--- a/src/main/java/org/eclipse/openk/contactbasedata/controller/ExternalPersonController.java
+++ b/src/main/java/org/eclipse/openk/contactbasedata/controller/ExternalPersonController.java
@@ -34,6 +34,7 @@
 import org.springframework.web.servlet.support.ServletUriComponentsBuilder;
 
 import java.net.URI;
+import java.util.Optional;
 import java.util.UUID;
 
 @Log4j2
@@ -60,8 +61,9 @@
     @ApiResponses(value = {
             @ApiResponse(code = 200, message = "Erfolgreich durchgeführt")})
     public Page<ExternalPersonDto> readExternalPersons(
+            @RequestParam( "alsoShowAnonymous") Optional<Boolean> alsoShowAnonymous,
             @PageableDefault(sort = {"lastName"}, direction = Sort.Direction.ASC) Pageable pageable){
-            return externalPersonService.findExternalPersons(pageable);
+            return externalPersonService.findExternalPersons(alsoShowAnonymous.orElse(false), pageable);
     }
 
     @PostMapping
diff --git a/src/main/java/org/eclipse/openk/contactbasedata/controller/InternalPersonController.java b/src/main/java/org/eclipse/openk/contactbasedata/controller/InternalPersonController.java
index adf51c8..bd7639d 100644
--- a/src/main/java/org/eclipse/openk/contactbasedata/controller/InternalPersonController.java
+++ b/src/main/java/org/eclipse/openk/contactbasedata/controller/InternalPersonController.java
@@ -63,8 +63,10 @@
     public Page<InternalPersonDto> readInternalPersons(
             @RequestParam( "uid") Optional<String> uid,
             @RequestParam( "userRef" ) Optional<String> userRef,
+            @RequestParam( "alsoShowAnonymous" ) Optional<Boolean> alsoShowAnonymous,
             @PageableDefault(sort = {"lastName"}, direction = Sort.Direction.ASC) Pageable pageable){
             return internalPersonService.findInternalPersons(
+                    alsoShowAnonymous.orElse( false ),
                     uid.orElse(null ),
                     userRef.orElse(null ),
                     pageable);
diff --git a/src/main/java/org/eclipse/openk/contactbasedata/repository/CompanyRepository.java b/src/main/java/org/eclipse/openk/contactbasedata/repository/CompanyRepository.java
index b27c86c..efb44aa 100644
--- a/src/main/java/org/eclipse/openk/contactbasedata/repository/CompanyRepository.java
+++ b/src/main/java/org/eclipse/openk/contactbasedata/repository/CompanyRepository.java
@@ -15,6 +15,8 @@
 package org.eclipse.openk.contactbasedata.repository;
 
 import org.eclipse.openk.contactbasedata.model.TblCompany;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.Pageable;
 import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.data.jpa.repository.Query;
 import org.springframework.data.repository.query.Param;
@@ -25,4 +27,6 @@
 public interface CompanyRepository extends JpaRepository<TblCompany, Long > {
     @Query("select co from TblCompany co where co.contact.uuid = :contactUuid")
     Optional<TblCompany> findByTblContactUuid(@Param("contactUuid") UUID contactUuid);
+
+    Page<TblCompany> findByContact_anonymizedFalseOrContact_anonymizedIsNull(Pageable pageable); // NOSONAR fd 07.02.2020: Method name cannot be changed
 }
diff --git a/src/main/java/org/eclipse/openk/contactbasedata/repository/ContactPersonRepository.java b/src/main/java/org/eclipse/openk/contactbasedata/repository/ContactPersonRepository.java
index cdb48e6..d7fd41c 100644
--- a/src/main/java/org/eclipse/openk/contactbasedata/repository/ContactPersonRepository.java
+++ b/src/main/java/org/eclipse/openk/contactbasedata/repository/ContactPersonRepository.java
@@ -18,6 +18,7 @@
 import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.data.jpa.repository.Query;
 
+import java.util.List;
 import java.util.Optional;
 import java.util.UUID;
 
@@ -26,4 +27,5 @@
     @Query("select cp from TblContactPerson cp where cp.contact.uuid = ?1")
     Optional< TblContactPerson > findByTblContactUuid(final UUID contactUuid);
 
+    List<TblContactPerson> findByContact_anonymizedFalseOrContact_anonymizedIsNull(); // NOSONAR fd 07.02.2020: Method name cannot be changed
 }
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 ba554e0..a144706 100644
--- a/src/main/java/org/eclipse/openk/contactbasedata/repository/DetailedContactRepository.java
+++ b/src/main/java/org/eclipse/openk/contactbasedata/repository/DetailedContactRepository.java
@@ -41,7 +41,7 @@
             + " and (COALESCE(:filterDelLockExceeded) = false or COALESCE(:filterDelLockExceeded) = true and dc.fkContactId in "
             + "        (select distinct amc.tblContact.id from TblAssignmentModulContact amc where "
             + "         amc.deletionLockUntil is not null and amc.deletionLockUntil < :dateTimeNow ))"
-            + " and (COALESCE(:showAnonymized) = false and COALESCE(dc.anonymized, false) = false or COALESCE(:showAnonymized) = true and dc.anonymized = true)"
+            + " and (COALESCE(:showAnonymized) = false and COALESCE(dc.anonymized, false) = false)"
     )
     Page<VwDetailedContact> findByFilter(@Param("contactType")String contactType, // NOSONAR _fd 07.02.2020 moving to a param object will not increase the readability here!
                                          @Param("personType") UUID personType,
diff --git a/src/main/java/org/eclipse/openk/contactbasedata/repository/ExternalPersonRepository.java b/src/main/java/org/eclipse/openk/contactbasedata/repository/ExternalPersonRepository.java
index b93f36f..68888ba 100644
--- a/src/main/java/org/eclipse/openk/contactbasedata/repository/ExternalPersonRepository.java
+++ b/src/main/java/org/eclipse/openk/contactbasedata/repository/ExternalPersonRepository.java
@@ -15,8 +15,11 @@
 package org.eclipse.openk.contactbasedata.repository;
 
 import org.eclipse.openk.contactbasedata.model.TblExternalPerson;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.Pageable;
 import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.data.jpa.repository.Query;
+
 import java.util.Optional;
 import java.util.UUID;
 
@@ -24,4 +27,6 @@
     @Query("select ep from TblExternalPerson ep where ep.contact.uuid = ?1")
     Optional< TblExternalPerson > findByTblContactUuid(final UUID contactUuid );
 
+    Page<TblExternalPerson> findByContact_anonymizedFalseOrContact_anonymizedIsNull(Pageable pageable); // NOSONAR fd 07.02.2020: Method name cannot be changed
+
 }
diff --git a/src/main/java/org/eclipse/openk/contactbasedata/repository/InternalPersonRepository.java b/src/main/java/org/eclipse/openk/contactbasedata/repository/InternalPersonRepository.java
index 29c780d..22348d0 100644
--- a/src/main/java/org/eclipse/openk/contactbasedata/repository/InternalPersonRepository.java
+++ b/src/main/java/org/eclipse/openk/contactbasedata/repository/InternalPersonRepository.java
@@ -35,4 +35,6 @@
                                          @Param( "userRef") String userRef,
                                          Pageable pageable);
 
+    Page<TblInternalPerson> findByContact_anonymizedFalseOrContact_anonymizedIsNull(Pageable pageable); // NOSONAR fd 07.02.2020: Method name cannot be changed
+
 }
diff --git a/src/main/java/org/eclipse/openk/contactbasedata/service/CompanyService.java b/src/main/java/org/eclipse/openk/contactbasedata/service/CompanyService.java
index 3f8ab69..1f76b0e 100644
--- a/src/main/java/org/eclipse/openk/contactbasedata/service/CompanyService.java
+++ b/src/main/java/org/eclipse/openk/contactbasedata/service/CompanyService.java
@@ -74,8 +74,12 @@
         );
     }
 
-    public Page<CompanyDto> findCompanies(Pageable pageable) {
-        return companyRepository.findAll(pageable).map(companyMapper::toCompanyDto);
+    public Page<CompanyDto> findCompanies(Boolean showAlsoAnonymous, Pageable pageable) {
+        return (Boolean.TRUE.equals(showAlsoAnonymous)
+                ? companyRepository.findAll(pageable)
+                : companyRepository.findByContact_anonymizedFalseOrContact_anonymizedIsNull(pageable))
+                .map(companyMapper::toCompanyDto);
+
     }
 
 
@@ -113,10 +117,16 @@
         return companyMapper.toCompanyDto(companyUpdated);
     }
 
-    public List<ContactPersonDto> findContactPersonsToCompany( UUID companyContactUuid ) {
+    public List<ContactPersonDto> findContactPersonsToCompany(UUID companyContactUuid, boolean alsoShowAnonymous) {
         TblCompany company = companyRepository.findByTblContactUuid( companyContactUuid )
                 .orElseThrow( NotFoundException::new);
         List<TblContactPerson> tblContactPeople = company.getContactPersons();
+
+        if( !alsoShowAnonymous ) {
+            tblContactPeople = tblContactPeople.stream().filter( cp -> cp.getContact().getAnonymized() == null
+                                                               || !cp.getContact().getAnonymized() )
+                            .collect(Collectors.toList());
+        }
         Map<UUID, TblContactPerson> tblContactPersonMap = tblContactPeople.stream()
                 .collect( Collectors.toMap(cp -> cp.getContact().getUuid(), x -> x));
 
diff --git a/src/main/java/org/eclipse/openk/contactbasedata/service/ContactAnonymizerService.java b/src/main/java/org/eclipse/openk/contactbasedata/service/ContactAnonymizerService.java
index b71207e..45feaa4 100644
--- a/src/main/java/org/eclipse/openk/contactbasedata/service/ContactAnonymizerService.java
+++ b/src/main/java/org/eclipse/openk/contactbasedata/service/ContactAnonymizerService.java
@@ -84,7 +84,7 @@
         companyService.updateCompany(dto);
 
         // kill 'em all
-        companyService.findContactPersonsToCompany(contactUuid).stream()
+        companyService.findContactPersonsToCompany(contactUuid, false).stream()
                 .forEach(contactPersonDto -> anonymizeContactPerson(contactPersonDto.getContactUuid()));
 
         processDependencies(contactUuid);
diff --git a/src/main/java/org/eclipse/openk/contactbasedata/service/ExternalPersonService.java b/src/main/java/org/eclipse/openk/contactbasedata/service/ExternalPersonService.java
index d822078..653cb80 100644
--- a/src/main/java/org/eclipse/openk/contactbasedata/service/ExternalPersonService.java
+++ b/src/main/java/org/eclipse/openk/contactbasedata/service/ExternalPersonService.java
@@ -64,8 +64,11 @@
         );
     }
 
-    public Page<ExternalPersonDto> findExternalPersons(Pageable pageable) {
-        return externalPersonRepository.findAll(pageable).map(externalPersonMapper::toExternalPersonDto);
+    public Page<ExternalPersonDto> findExternalPersons(boolean showAlsoAnonymous, Pageable pageable) {
+        return (showAlsoAnonymous
+                ? externalPersonRepository.findAll(pageable)
+                : externalPersonRepository.findByContact_anonymizedFalseOrContact_anonymizedIsNull(pageable))
+                .map(externalPersonMapper::toExternalPersonDto);
     }
 
 
diff --git a/src/main/java/org/eclipse/openk/contactbasedata/service/InternalPersonService.java b/src/main/java/org/eclipse/openk/contactbasedata/service/InternalPersonService.java
index ef5f4aa..6cf8c54 100644
--- a/src/main/java/org/eclipse/openk/contactbasedata/service/InternalPersonService.java
+++ b/src/main/java/org/eclipse/openk/contactbasedata/service/InternalPersonService.java
@@ -64,10 +64,12 @@
         );
     }
 
-    public Page<InternalPersonDto> findInternalPersons(String uid, String userRef, Pageable pageable) {
+    public Page<InternalPersonDto> findInternalPersons( boolean showAlsoAnonymous, String uid, String userRef, Pageable pageable) {
         Page<TblInternalPerson> returnPageDb;
         if( uid == null && userRef == null) {
-            returnPageDb = internalPersonRepository.findAll( pageable );
+            returnPageDb = showAlsoAnonymous ?
+                      internalPersonRepository.findAll( pageable )
+                    : internalPersonRepository.findByContact_anonymizedFalseOrContact_anonymizedIsNull(pageable);
         }
         else {
             returnPageDb =  internalPersonRepository.findByFilter( uid, userRef, pageable );
diff --git a/src/test/java/org/eclipse/openk/contactbasedata/config/TestConfiguration.java b/src/test/java/org/eclipse/openk/contactbasedata/config/TestConfiguration.java
index ed0fcf1..8d0468d 100644
--- a/src/test/java/org/eclipse/openk/contactbasedata/config/TestConfiguration.java
+++ b/src/test/java/org/eclipse/openk/contactbasedata/config/TestConfiguration.java
@@ -114,4 +114,7 @@
 
     @Bean
     public AssignmentModulContactService myAssignmentModulContactService() { return new AssignmentModulContactService(); }
+
+    @Bean
+    public ContactAnonymizerService myContactAnonymizerService() { return new ContactAnonymizerService(); }
 }
diff --git a/src/test/java/org/eclipse/openk/contactbasedata/controller/CompanyControllerTest.java b/src/test/java/org/eclipse/openk/contactbasedata/controller/CompanyControllerTest.java
index 1448b60..1d47783 100644
--- a/src/test/java/org/eclipse/openk/contactbasedata/controller/CompanyControllerTest.java
+++ b/src/test/java/org/eclipse/openk/contactbasedata/controller/CompanyControllerTest.java
@@ -37,6 +37,7 @@
 import static org.hamcrest.Matchers.is;
 import static org.hamcrest.Matchers.not;
 import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.anyBoolean;
 import static org.mockito.Mockito.when;
 import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*;
 import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*;
@@ -71,7 +72,7 @@
     public void shouldReturnAllCompany() throws Exception {
         Page<CompanyDto> epPage = MockDataHelper.mockCompanyDtoPage();
 
-        when(companyService.findCompanies(any(Pageable.class))).thenReturn(epPage);
+        when(companyService.findCompanies(anyBoolean(), any(Pageable.class))).thenReturn(epPage);
 
         mockMvc.perform(get("/companies"))
                 .andExpect(status().is2xxSuccessful())
@@ -123,7 +124,7 @@
     public void shouldReturnContactPerson() throws Exception {
         List<ContactPersonDto> contactPersonDtos = MockDataHelper.mockContactPersonDtos();
 
-        when( companyService.findContactPersonsToCompany(any(UUID.class))).thenReturn(contactPersonDtos);
+        when( companyService.findContactPersonsToCompany(any(UUID.class), anyBoolean())).thenReturn(contactPersonDtos);
 
         mockMvc.perform(get("/companies/"+UUID.randomUUID().toString()+"/contact-persons" ))
                 .andExpect(status().is2xxSuccessful())
diff --git a/src/test/java/org/eclipse/openk/contactbasedata/controller/ExternalPersonControllerTest.java b/src/test/java/org/eclipse/openk/contactbasedata/controller/ExternalPersonControllerTest.java
index 9ceef5d..e844db2 100644
--- a/src/test/java/org/eclipse/openk/contactbasedata/controller/ExternalPersonControllerTest.java
+++ b/src/test/java/org/eclipse/openk/contactbasedata/controller/ExternalPersonControllerTest.java
@@ -35,6 +35,7 @@
 import static org.hamcrest.Matchers.is;
 import static org.hamcrest.Matchers.not;
 import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.anyBoolean;
 import static org.mockito.Mockito.when;
 import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*;
 import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*;
@@ -69,7 +70,7 @@
     public void shouldReturnAllExtPerson() throws Exception {
         Page<ExternalPersonDto> epPage = MockDataHelper.mockExternalPersonDtoPage();
 
-        when(externalPersonService.findExternalPersons(any(Pageable.class))).thenReturn(epPage);
+        when(externalPersonService.findExternalPersons(anyBoolean(), any(Pageable.class))).thenReturn(epPage);
 
         mockMvc.perform(get("/external-persons"))
                 .andExpect(status().is2xxSuccessful())
diff --git a/src/test/java/org/eclipse/openk/contactbasedata/controller/InternalPersonControllerTest.java b/src/test/java/org/eclipse/openk/contactbasedata/controller/InternalPersonControllerTest.java
index f899812..38e135b 100644
--- a/src/test/java/org/eclipse/openk/contactbasedata/controller/InternalPersonControllerTest.java
+++ b/src/test/java/org/eclipse/openk/contactbasedata/controller/InternalPersonControllerTest.java
@@ -34,8 +34,7 @@
 
 import static org.hamcrest.Matchers.is;
 import static org.hamcrest.Matchers.not;
-import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.ArgumentMatchers.anyString;
+import static org.mockito.ArgumentMatchers.*;
 import static org.mockito.Mockito.when;
 import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*;
 import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*;
@@ -70,7 +69,7 @@
     public void shouldReturnAllIntPersons() throws Exception {
         Page<InternalPersonDto> ipPage = MockDataHelper.mockInternalPersonDtoPage();
 
-        when(internalPersonService.findInternalPersons(anyString(), anyString(), any(Pageable.class))).thenReturn(ipPage);
+        when(internalPersonService.findInternalPersons(anyBoolean(), anyString(), anyString(), any(Pageable.class))).thenReturn(ipPage);
 
         mockMvc.perform(get("/internal-persons?uid=ABC&userRef=123"))
                 .andExpect(status().is2xxSuccessful())
diff --git a/src/test/java/org/eclipse/openk/contactbasedata/service/CompanyServiceTest.java b/src/test/java/org/eclipse/openk/contactbasedata/service/CompanyServiceTest.java
index 9a89a99..d834488 100644
--- a/src/test/java/org/eclipse/openk/contactbasedata/service/CompanyServiceTest.java
+++ b/src/test/java/org/eclipse/openk/contactbasedata/service/CompanyServiceTest.java
@@ -149,7 +149,7 @@
         TblCompany company = MockDataHelper.mockCompany();
         company.setContactPersons( MockDataHelper.mockTblContactPersons());
         when(companyRepository.findByTblContactUuid(any(UUID.class))).thenReturn(Optional.of(company));
-        List<ContactPersonDto> cpDtos = companyService.findContactPersonsToCompany(UUID.randomUUID());
+        List<ContactPersonDto> cpDtos = companyService.findContactPersonsToCompany(UUID.randomUUID(), false);
         assertEquals(company.getContactPersons().size(), cpDtos.size());
         assertEquals(company.getContactPersons().get(1).getContact().getUuid(), cpDtos.get(1).getContactUuid());
     }
@@ -158,6 +158,6 @@
     @Test
     public void findContactPersonsToCompanyWithException() {
         when(companyRepository.findByTblContactUuid(any(UUID.class))).thenReturn(Optional.empty());
-        assertThrows( NotFoundException.class, ()-> companyService.findContactPersonsToCompany(UUID.randomUUID()));
+        assertThrows( NotFoundException.class, ()-> companyService.findContactPersonsToCompany(UUID.randomUUID(), false));
     }
 }
\ No newline at end of file
diff --git a/src/test/java/org/eclipse/openk/contactbasedata/service/ContactAnonymizerServiceTest.java b/src/test/java/org/eclipse/openk/contactbasedata/service/ContactAnonymizerServiceTest.java
new file mode 100644
index 0000000..60906b5
--- /dev/null
+++ b/src/test/java/org/eclipse/openk/contactbasedata/service/ContactAnonymizerServiceTest.java
@@ -0,0 +1,182 @@
+/*
+ *******************************************************************************
+ * Copyright (c) 2019 Contributors to the Eclipse Foundation
+ *
+ * See the NOTICE file(s) distributed with this work for additional
+ * information regarding copyright ownership.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v. 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************
+ */
+package org.eclipse.openk.contactbasedata.service;
+
+import org.eclipse.openk.contactbasedata.config.TestConfiguration;
+import org.eclipse.openk.contactbasedata.constants.Constants;
+import org.eclipse.openk.contactbasedata.model.TblContact;
+import org.eclipse.openk.contactbasedata.support.MockDataHelper;
+import org.eclipse.openk.contactbasedata.viewmodel.*;
+import org.junit.jupiter.api.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
+import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest;
+import org.springframework.boot.test.mock.mockito.MockBean;
+import org.springframework.test.context.ContextConfiguration;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.UUID;
+
+import static org.junit.jupiter.api.Assertions.*;
+import static org.mockito.Mockito.when;
+
+@DataJpaTest
+@ContextConfiguration(classes = {TestConfiguration.class})
+public class ContactAnonymizerServiceTest {
+    @Qualifier("myContactAnonymizerService")
+    @Autowired
+    private ContactAnonymizerService contactAnonymizerService;
+
+    @MockBean
+    private ContactService contactService;
+
+    @MockBean
+    private InternalPersonService internalPersonService;
+
+    @MockBean
+    private ExternalPersonService externalPersonService;
+
+    @MockBean
+    private CompanyService companyService;
+
+    @MockBean
+    private ContactPersonService contactPersonService;
+
+    @MockBean
+    private AddressService addressService;
+
+    @MockBean
+    private CommunicationService communicationService;
+
+    @Test
+    public void shouldAnonymizeInternalPerson() {
+        UUID theContactUuid = UUID.randomUUID();
+        TblContact tblIntPers = MockDataHelper.mockTblContact();
+        tblIntPers.setUuid(theContactUuid);
+        tblIntPers.setContactType(Constants.CONTACT_TYPE_INTERNAL_PERSON);
+        when( contactService.findTblContact(theContactUuid)).thenReturn(tblIntPers);
+
+        InternalPersonDto ipDto = MockDataHelper.mockInternalPersonDto();
+        ipDto.setContactUuid(theContactUuid);
+        when( internalPersonService.findInternalPerson(theContactUuid))
+                .thenReturn(ipDto);
+
+        List<AddressDto> addressDtos = MockDataHelper.mockAddressDtoList();
+        when( addressService.getAddressesByContactUuid(theContactUuid)).thenReturn(addressDtos);
+
+        List<CommunicationDto> communicationDtos = MockDataHelper.mockCommunicationDtoList();
+        when( communicationService.getCommunicationsByContactUuid(theContactUuid)).thenReturn(communicationDtos);
+
+        assertNull( ipDto.getContactAnonymized());
+        assertNotEquals( Constants.ANONYMOUS_TAG, addressDtos.get(0).getCommunity());
+        assertNotEquals( Constants.ANONYMOUS_TAG, communicationDtos.get(0).getCommunicationData());
+
+        contactAnonymizerService.anonymize(theContactUuid);
+
+        assertTrue( ipDto.getContactAnonymized());
+        assertEquals( Constants.ANONYMOUS_TAG , ipDto.getLastName());
+        assertNull( ipDto.getFirstName());
+        assertNull( ipDto.getSalutationUuid());
+        assertEquals( Constants.ANONYMOUS_TAG, addressDtos.get(0).getCommunity());
+        assertEquals( Constants.ANONYMOUS_TAG, communicationDtos.get(0).getCommunicationData());
+    }
+
+    @Test
+    public void shouldAnonymizeExternalPerson() {
+        UUID theContactUuid = UUID.randomUUID();
+        TblContact tblExtPers = MockDataHelper.mockTblContact();
+        tblExtPers.setUuid(theContactUuid);
+        tblExtPers.setContactType(Constants.CONTACT_TYPE_EXTERNAL_PERSON);
+        when( contactService.findTblContact(theContactUuid)).thenReturn(tblExtPers);
+
+        ExternalPersonDto epDto = MockDataHelper.mockExternalPersonDto();
+        epDto.setContactUuid(theContactUuid);
+        when( externalPersonService.findExternalPerson(theContactUuid))
+                .thenReturn(epDto);
+
+        List<AddressDto> addressDtos = MockDataHelper.mockAddressDtoList();
+        when( addressService.getAddressesByContactUuid(theContactUuid)).thenReturn(addressDtos);
+
+        List<CommunicationDto> communicationDtos = MockDataHelper.mockCommunicationDtoList();
+        when( communicationService.getCommunicationsByContactUuid(theContactUuid)).thenReturn(communicationDtos);
+
+        contactAnonymizerService.anonymize(theContactUuid);
+
+        assertTrue( epDto.getContactAnonymized());
+        assertEquals( Constants.ANONYMOUS_TAG, epDto.getLastName() );
+        assertNull( epDto.getFirstName());
+        assertNull( epDto.getSalutationUuid());
+        assertEquals( Constants.ANONYMOUS_TAG, addressDtos.get(0).getCommunity());
+        assertEquals( Constants.ANONYMOUS_TAG, communicationDtos.get(0).getCommunicationData());
+
+    }
+
+
+    @Test
+    public void shouldAnonymizeCompany() {
+        UUID theContactUuid = UUID.randomUUID();
+        TblContact tblCompany = MockDataHelper.mockTblContact();
+        tblCompany.setUuid(theContactUuid);
+        tblCompany.setContactType(Constants.CONTACT_TYPE_COMPANY);
+        when( contactService.findTblContact(theContactUuid)).thenReturn(tblCompany);
+
+        CompanyDto companyDto = MockDataHelper.mockCompanyDto();
+        companyDto.setContactUuid(theContactUuid);
+        when( companyService.findCompany(theContactUuid))
+                .thenReturn(companyDto);
+
+        List<ContactPersonDto> contactPersonDtos = MockDataHelper.mockContactPersonDtos();
+        when( companyService.findContactPersonsToCompany(theContactUuid, false))
+                .thenReturn(contactPersonDtos);
+
+        UUID cp0UUID = contactPersonDtos.get(0).getContactUuid();
+        UUID cp1UUID = contactPersonDtos.get(1).getContactUuid();
+        when(contactPersonService.findContactPerson(cp0UUID)).thenReturn(contactPersonDtos.get(0));
+        when(contactPersonService.findContactPerson(cp1UUID)).thenReturn(contactPersonDtos.get(1));
+
+        // Addresses and communications for the company
+        List<AddressDto> addressDtos = MockDataHelper.mockAddressDtoList();
+        when( addressService.getAddressesByContactUuid(theContactUuid)).thenReturn(addressDtos);
+        List<CommunicationDto> communicationDtos = MockDataHelper.mockCommunicationDtoList();
+        when( communicationService.getCommunicationsByContactUuid(theContactUuid)).thenReturn(communicationDtos);
+
+        // Addresses and communications for the first contact person
+        List<AddressDto> addressDtosForCp = MockDataHelper.mockAddressDtoList();
+        when( addressService.getAddressesByContactUuid(cp0UUID)).thenReturn(addressDtosForCp);
+        when( addressService.getAddressesByContactUuid(cp1UUID)).thenReturn(new ArrayList<>());
+        List<CommunicationDto> communicationDtosForCp = MockDataHelper.mockCommunicationDtoList();
+        when( communicationService.getCommunicationsByContactUuid(cp0UUID)).thenReturn(new ArrayList<>());
+        when( communicationService.getCommunicationsByContactUuid(cp1UUID)).thenReturn(communicationDtosForCp);
+
+        contactAnonymizerService.anonymize(theContactUuid);
+
+        assertTrue( companyDto.getContactAnonymized());
+        assertEquals( Constants.ANONYMOUS_TAG, companyDto.getCompanyName() );
+        assertNull( companyDto.getCompanyType());
+        assertEquals( Constants.ANONYMOUS_TAG, addressDtos.get(0).getCommunity() );
+        assertEquals( Constants.ANONYMOUS_TAG, communicationDtos.get(0).getCommunicationData() );
+
+        assertTrue( contactPersonDtos.get(0).getContactAnonymized());
+        assertTrue( contactPersonDtos.get(1).getContactAnonymized());
+        assertEquals( Constants.ANONYMOUS_TAG, contactPersonDtos.get(0).getLastName() );
+        assertEquals( Constants.ANONYMOUS_TAG, contactPersonDtos.get(1).getLastName() );
+        assertNull( contactPersonDtos.get(0).getFirstName());
+        assertNull( contactPersonDtos.get(1).getFirstName());
+        assertEquals( Constants.ANONYMOUS_TAG, addressDtosForCp.get(0).getCommunity() );
+        assertEquals( Constants.ANONYMOUS_TAG, communicationDtosForCp.get(0).getCommunicationData() );
+
+    }
+}
diff --git a/src/test/java/org/eclipse/openk/contactbasedata/service/InternalPersonServiceTest.java b/src/test/java/org/eclipse/openk/contactbasedata/service/InternalPersonServiceTest.java
index 0c94c90..b4b8d5f 100644
--- a/src/test/java/org/eclipse/openk/contactbasedata/service/InternalPersonServiceTest.java
+++ b/src/test/java/org/eclipse/openk/contactbasedata/service/InternalPersonServiceTest.java
@@ -79,8 +79,8 @@
         when(internalPersonRepository.findAll(any(Pageable.class))).thenReturn(ipPage);
         when(internalPersonRepository.findByFilter(anyString(), anyString(), any(Pageable.class))).thenReturn(ipPage);
 
-        Page<InternalPersonDto> dtoPage = internalPersonService.findInternalPersons(null, null, Pageable.unpaged());
-        Page<InternalPersonDto> dtoPage2= internalPersonService.findInternalPersons("abc", "123", Pageable.unpaged());
+        Page<InternalPersonDto> dtoPage = internalPersonService.findInternalPersons( false, null, null, Pageable.unpaged());
+        Page<InternalPersonDto> dtoPage2= internalPersonService.findInternalPersons( false, "abc", "123", Pageable.unpaged());
 
         verify( internalPersonRepository, times(1)).findAll(any(Pageable.class));
         verify( internalPersonRepository, times( 1 )).findByFilter(anyString(), anyString(), any(Pageable.class));