KON-327, KON-265 UnitTests
diff --git a/src/main/java/org/eclipse/openk/contactbasedata/controller/CommunicationController.java b/src/main/java/org/eclipse/openk/contactbasedata/controller/CommunicationController.java
new file mode 100644
index 0000000..97d2568
--- /dev/null
+++ b/src/main/java/org/eclipse/openk/contactbasedata/controller/CommunicationController.java
@@ -0,0 +1,121 @@
+/*
+ *******************************************************************************
+ * 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.controller;
+
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiResponse;
+import io.swagger.annotations.ApiResponses;
+import lombok.extern.log4j.Log4j2;
+import org.eclipse.openk.contactbasedata.exceptions.BadRequestException;
+import org.eclipse.openk.contactbasedata.service.AddressService;
+import org.eclipse.openk.contactbasedata.service.CommunicationService;
+import org.eclipse.openk.contactbasedata.viewmodel.AddressDto;
+import org.eclipse.openk.contactbasedata.viewmodel.CommunicationDto;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.ResponseEntity;
+import org.springframework.security.access.annotation.Secured;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.servlet.support.ServletUriComponentsBuilder;
+
+import java.net.URI;
+import java.util.List;
+import java.util.UUID;
+
+@Log4j2
+@RestController
+@RequestMapping("contacts/")
+public class CommunicationController {
+    @Autowired
+    private CommunicationService communicationService;
+
+    @GetMapping("/{contactUuid}/communications")
+    @Secured({"ROLE_KON-READER", "ROLE_KON-WRITER", "ROLE_KON-ADMIN"})
+    @ApiOperation(value = "Anzeigen aller Kommunikationswege zu einem Kontakt")
+    @ApiResponses(value = {
+            @ApiResponse(code = 400, message = "Ungültige Anfrage."),
+            @ApiResponse(code = 200, message = "Suche durchgeführt")})
+    @ResponseStatus(HttpStatus.OK)
+    public List<CommunicationDto> getContactCommunications(@PathVariable UUID contactUuid) {
+        return communicationService.getCommunicationsByContactUuid(contactUuid);
+    }
+
+    @GetMapping("/{contactUuid}/communications/{communicationUuid}")
+    @ApiOperation(value = "Einen bestimmten Kommunikationsweg eines bestimmten Kontakts anzeigen.")
+    @ApiResponses(value = {
+            @ApiResponse(code = 404, message = "Kontaktadresse nicht gefunden."),
+            @ApiResponse(code = 400, message = "Ungültige Anfrage."),
+            @ApiResponse(code = 200, message = "Kontaktadresse erfolgreich gelesen.")})
+    public CommunicationDto readCommunication(
+            @PathVariable UUID contactUuid,
+            @PathVariable UUID communicationUuid) {
+
+        return communicationService.getCommunication(contactUuid, communicationUuid);
+    }
+
+
+    @PostMapping("/{contactUuid}/communications")
+    @ApiOperation(value = "Anlegen eines neuen Kommunikationswegs")
+    @ApiResponses(value = {
+            @ApiResponse(code = 200, message = "Kommunikationsweg erfolgreich angelegt"),
+            @ApiResponse(code = 500, message = "Konnte nicht durchgeführt werden")
+    })
+    public ResponseEntity<CommunicationDto> insertCommunication(
+            @PathVariable UUID contactUuid,
+            @Validated @RequestBody CommunicationDto communicationDto) {
+        if (!contactUuid.equals(communicationDto.getContactUuid())) {
+            throw new BadRequestException("invalid.uuid.path.object");
+        }
+        CommunicationDto savedCommunicationDto = communicationService.insertCommunication(contactUuid, communicationDto);
+        URI location = ServletUriComponentsBuilder
+                .fromCurrentRequestUri()
+                .path("/{uuid}")
+                .buildAndExpand(savedCommunicationDto.getUuid())
+                .toUri();
+        return ResponseEntity.created(location).body(savedCommunicationDto);
+    }
+
+
+    @PutMapping("/{contactUuid}/communications/{communicationUuid}")
+    @ApiOperation(value = "Einen bestimmten Kommunikationsweg eines bestimmten Kontakts bearbeiten.")
+    @ApiResponses(value = {
+            @ApiResponse(code = 404, message = "Kommunikationsweg nicht gefunden."),
+            @ApiResponse(code = 400, message = "Ungültige Anfrage."),
+            @ApiResponse(code = 200, message = "Kommunikationsweg erfolgreich geändert.")})
+    public ResponseEntity updateCommunication(
+            @PathVariable UUID contactUuid,
+            @PathVariable UUID communicationUuid,
+            @Validated @RequestBody CommunicationDto communicationDto) {
+        if (!communicationUuid.equals(communicationDto.getUuid())) {
+            throw new BadRequestException("invalid.uuid.path.object");
+        }
+        communicationService.updateCommunication(contactUuid, communicationDto);
+        return ResponseEntity.ok().build();
+    }
+
+    @DeleteMapping("{contactUuid}/communications/{communicationUuid}")
+    @ResponseStatus(HttpStatus.OK)
+    @ApiOperation(value = "Einen bestimmten Kommunikationsweg eines bestimmten Kontakts löschen")
+    @ApiResponses(value = {
+            @ApiResponse(code = 204, message = "Erfolgreich gelöscht"),
+            @ApiResponse(code = 400, message = "Ungültige Anfrage"),
+            @ApiResponse(code = 404, message = "Nicht gefunden")})
+    public void deleteCommunication(@PathVariable("contactUuid") UUID contactUuid,
+                                    @PathVariable("communicationUuid") UUID communicationUuid) {
+        communicationService.deleteCommunication(contactUuid, communicationUuid);
+    }
+
+}
diff --git a/src/main/java/org/eclipse/openk/contactbasedata/mapper/AddressMapper.java b/src/main/java/org/eclipse/openk/contactbasedata/mapper/AddressMapper.java
index 171fe9b..63fd368 100644
--- a/src/main/java/org/eclipse/openk/contactbasedata/mapper/AddressMapper.java
+++ b/src/main/java/org/eclipse/openk/contactbasedata/mapper/AddressMapper.java
@@ -28,6 +28,8 @@
             @Mapping( source="tblContact.uuid", target="contactUuid"),
             @Mapping( source="wgs_84_zone", target="wgs84Zone"),
             @Mapping( source="refAddressType.uuid", target="addressTypeUuid"),
+            @Mapping( source="refAddressType.type", target="addressTypeType"),
+            @Mapping( source="refAddressType.description", target="addressTypeDescription"),
     })
     AddressDto toAddressDto(TblAddress tblAdress);
 
diff --git a/src/main/java/org/eclipse/openk/contactbasedata/mapper/CommunicationMapper.java b/src/main/java/org/eclipse/openk/contactbasedata/mapper/CommunicationMapper.java
index 59f459f..0d2e77e 100644
--- a/src/main/java/org/eclipse/openk/contactbasedata/mapper/CommunicationMapper.java
+++ b/src/main/java/org/eclipse/openk/contactbasedata/mapper/CommunicationMapper.java
@@ -17,10 +17,20 @@
 import org.eclipse.openk.contactbasedata.model.TblCommunication;
 import org.eclipse.openk.contactbasedata.viewmodel.CommunicationDto;
 import org.mapstruct.Mapper;
+import org.mapstruct.Mapping;
+import org.mapstruct.Mappings;
 import org.mapstruct.ReportingPolicy;
 
 @Mapper(componentModel = "spring", unmappedTargetPolicy = ReportingPolicy.IGNORE)
 public interface CommunicationMapper {
 
+    @Mappings({
+            @Mapping( source="tblContact.uuid", target="contactUuid"),
+            @Mapping( source="refCommunicationType.uuid", target="communicationTypeUuid"),
+            @Mapping( source="refCommunicationType.type", target="communicationTypeType"),
+            @Mapping( source="refCommunicationType.description", target="communicationTypeDescription"),
+    })
     CommunicationDto toCommunicationDto(TblCommunication tblCommunication);
+
+    TblCommunication toTblCommunication(CommunicationDto communicationDto);
 }
\ No newline at end of file
diff --git a/src/main/java/org/eclipse/openk/contactbasedata/repository/CommunicationRepository.java b/src/main/java/org/eclipse/openk/contactbasedata/repository/CommunicationRepository.java
new file mode 100644
index 0000000..a189d08
--- /dev/null
+++ b/src/main/java/org/eclipse/openk/contactbasedata/repository/CommunicationRepository.java
@@ -0,0 +1,44 @@
+/*
+ *******************************************************************************
+ * 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.repository;
+
+import org.eclipse.openk.contactbasedata.model.TblAddress;
+import org.eclipse.openk.contactbasedata.model.TblCommunication;
+import org.eclipse.openk.contactbasedata.model.TblContact;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.Query;
+import org.springframework.data.repository.query.Param;
+
+import java.util.List;
+import java.util.Optional;
+import java.util.UUID;
+
+public interface CommunicationRepository extends JpaRepository<TblCommunication, Long> {
+
+    Optional<TblCommunication> findByUuid(UUID uuid);
+
+    @Query("select a from TblCommunication a where a.tblContact.uuid = ?1")
+    List< TblCommunication > findByTblContactUuid(final UUID contactUuid);
+
+    Optional<TblCommunication> findByTblContactAndUuid(TblContact tblContact, UUID uuid);
+
+    @Query("select count(*) from TblCommunication a where a.tblContact.id=:contactId and a.refCommunicationType.id=:communicationTypeId")
+    Long countByContactIdAndCommunicationTypeId(@Param("contactId") Long contactId, @Param("communicationTypeId") Long communicationTypeId);
+
+    @Query("select count(*) from TblCommunication a where a.tblContact.id=:contactId and a.refCommunicationType.id=:communicationTypeId and uuid <>:communicationUuid")
+    Long countByContactIdAndCommunicationTypeIdAndIsNotSame(@Param("contactId") Long supplierId, @Param("communicationTypeId") Long communicationTypeId, @Param("communicationUuid") UUID communicationUuid);
+}
+
+
diff --git a/src/main/java/org/eclipse/openk/contactbasedata/service/AddressService.java b/src/main/java/org/eclipse/openk/contactbasedata/service/AddressService.java
index ad03785..54790a6 100644
--- a/src/main/java/org/eclipse/openk/contactbasedata/service/AddressService.java
+++ b/src/main/java/org/eclipse/openk/contactbasedata/service/AddressService.java
@@ -78,7 +78,7 @@
         addressToSave.setTblContact(tblContact);
 
         if (addressDto.getIsMainAddress()!=null && addressDto.getIsMainAddress() && !checkUniqueMainAddressForContactForInsert(tblContact.getId())) {
-            throw new OperationDeniedException(OperationType.UPDATE, "main.address.already.existing");
+            throw new OperationDeniedException(OperationType.INSERT, "main.address.already.existing");
         }
 
         setFromAddressDto(addressToSave, addressDto);
diff --git a/src/main/java/org/eclipse/openk/contactbasedata/service/CommunicationService.java b/src/main/java/org/eclipse/openk/contactbasedata/service/CommunicationService.java
new file mode 100644
index 0000000..1b771ee
--- /dev/null
+++ b/src/main/java/org/eclipse/openk/contactbasedata/service/CommunicationService.java
@@ -0,0 +1,158 @@
+/*
+ *******************************************************************************
+ * 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 lombok.extern.log4j.Log4j2;
+import org.eclipse.openk.contactbasedata.enums.OperationType;
+import org.eclipse.openk.contactbasedata.exceptions.BadRequestException;
+import org.eclipse.openk.contactbasedata.exceptions.NotFoundException;
+import org.eclipse.openk.contactbasedata.exceptions.OperationDeniedException;
+import org.eclipse.openk.contactbasedata.mapper.AddressMapper;
+import org.eclipse.openk.contactbasedata.mapper.CommunicationMapper;
+import org.eclipse.openk.contactbasedata.model.RefCommunicationType;
+import org.eclipse.openk.contactbasedata.model.TblAddress;
+import org.eclipse.openk.contactbasedata.model.TblCommunication;
+import org.eclipse.openk.contactbasedata.model.TblContact;
+import org.eclipse.openk.contactbasedata.repository.*;
+import org.eclipse.openk.contactbasedata.viewmodel.AddressDto;
+import org.eclipse.openk.contactbasedata.viewmodel.CommunicationDto;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.List;
+import java.util.UUID;
+import java.util.stream.Collectors;
+
+@Log4j2
+@Service
+public class CommunicationService {
+    @Autowired
+    private CommunicationRepository communicationRepository;
+
+    @Autowired
+    private CommunicationTypeRepository communicationTypeRepository;
+
+    @Autowired
+    private ContactRepository contactRepository;
+
+    @Autowired
+    CommunicationMapper communicationMapper;
+
+
+    public List<CommunicationDto> getCommunicationsByContactUuid(UUID contactUuid) {
+        List<TblCommunication> tblCommunicationList = communicationRepository
+                .findByTblContactUuid(contactUuid);
+
+        return tblCommunicationList.stream().map(communicationMapper::toCommunicationDto).collect(Collectors.toList());
+    }
+
+
+    public CommunicationDto getCommunication(UUID contactUuid, UUID communicationUuid){
+        TblCommunication tblCommunication = communicationRepository.findByUuid(communicationUuid)
+                .orElseThrow( () -> new NotFoundException("communication.uuid.not.existing"));
+        if(!tblCommunication.getTblContact().getUuid().equals(contactUuid)) {
+            throw new BadRequestException("invalid.uuid.path.object");
+        }
+        return communicationMapper.toCommunicationDto(tblCommunication);
+    }
+
+    @Transactional
+    public CommunicationDto insertCommunication(UUID contactUuid, CommunicationDto communicationDto) {
+
+        TblContact tblContact = contactRepository
+                                .findByUuid(contactUuid)
+                                .orElseThrow(() -> new NotFoundException("contact.uuid.not.existing"));
+
+        RefCommunicationType refCommunicationType = communicationTypeRepository
+                .findByUuid(communicationDto.getCommunicationTypeUuid())
+                .orElseThrow(() -> new NotFoundException("communication.type.uuid.not.existing"));
+
+
+        TblCommunication communicationToSave = communicationMapper.toTblCommunication(communicationDto);
+        communicationToSave.setUuid(UUID.randomUUID());
+        communicationToSave.setTblContact(tblContact);
+        communicationToSave.setRefCommunicationType(refCommunicationType);
+
+        if ( !checkUniqueCommunicationTypeForContactForInsert(tblContact.getId(), refCommunicationType.getId())) {
+            throw new OperationDeniedException(OperationType.INSERT, "communication.type.already.existing.for.contact");
+        }
+
+        setFromCommunicationDto(communicationToSave, communicationDto);
+
+        TblCommunication savedCommunication = communicationRepository.save(communicationToSave);
+        return communicationMapper.toCommunicationDto(savedCommunication);
+    }
+
+    @Transactional
+    public CommunicationDto updateCommunication(UUID contactUuid, CommunicationDto communicationDto) {
+
+        TblContact contact = contactRepository.findByUuid(contactUuid)
+                .orElseThrow(() -> new NotFoundException("contact.uuid.not.existing"));
+
+        TblCommunication communication = communicationRepository.findByUuid(communicationDto.getUuid())
+                .orElseThrow(() -> new NotFoundException("communication.uuid.not.existing"));
+
+        RefCommunicationType refCommunicationType = communicationTypeRepository
+                .findByUuid(communicationDto.getCommunicationTypeUuid())
+                .orElseThrow(() -> new NotFoundException("communication.type.uuid.not.existing"));
+
+        TblCommunication communicationToSave = communicationMapper.toTblCommunication(communicationDto);
+        communicationToSave.setTblContact(contact);
+        communicationToSave.setRefCommunicationType(refCommunicationType);
+        communicationToSave.setId(communication.getId());
+
+        if ( !checkUniqueCommunicationTypeForContactForUpdate(contact.getId(), refCommunicationType.getId(), communication.getUuid())) {
+            throw new OperationDeniedException(OperationType.UPDATE, "communication.type.already.existing.for.contact");
+        }
+
+        setFromCommunicationDto(communicationToSave, communicationDto);
+        TblCommunication savedCommunication = communicationRepository.save(communicationToSave);
+        return communicationMapper.toCommunicationDto(savedCommunication);
+    }
+
+
+    @Transactional
+    public void deleteCommunication(UUID contactUuid, UUID communicationUuid) {
+        TblContact tblContact = contactRepository.findByUuid(contactUuid)
+                .orElseThrow(() -> new NotFoundException("contact.uuid.not.existing"));
+        TblCommunication tblCommunication = communicationRepository.findByTblContactAndUuid(tblContact, communicationUuid)
+                .orElseThrow(() -> new NotFoundException("communication.uuid.not.existing"));
+
+        communicationRepository.delete(tblCommunication);
+    }
+
+    private boolean checkUniqueCommunicationTypeForContactForInsert(Long contactId, Long communicationTypeId){
+        return communicationRepository.countByContactIdAndCommunicationTypeId(contactId, communicationTypeId) == 0;
+    }
+
+    private boolean checkUniqueCommunicationTypeForContactForUpdate( Long contactId, Long communicationTypeId, UUID communicationUuid){
+       Long result = communicationRepository.countByContactIdAndCommunicationTypeIdAndIsNotSame(contactId, communicationTypeId, communicationUuid) ;
+       return result==0;
+    }
+
+    private void setFromCommunicationDto( TblCommunication destTblCommunication, CommunicationDto sourceDto ) {
+
+        if( sourceDto.getCommunicationTypeUuid() != null ) {
+            destTblCommunication.setRefCommunicationType( communicationTypeRepository
+                    .findByUuid(sourceDto.getCommunicationTypeUuid())
+                    .orElseThrow(() -> new NotFoundException("communication.type.uuid.not.existing")));
+        }
+        else {
+            destTblCommunication.setRefCommunicationType(null);
+        }
+    }
+
+}
diff --git a/src/main/java/org/eclipse/openk/contactbasedata/viewmodel/AddressDto.java b/src/main/java/org/eclipse/openk/contactbasedata/viewmodel/AddressDto.java
index feeead7..df3b6e0 100644
--- a/src/main/java/org/eclipse/openk/contactbasedata/viewmodel/AddressDto.java
+++ b/src/main/java/org/eclipse/openk/contactbasedata/viewmodel/AddressDto.java
@@ -44,6 +44,6 @@
     //fromAddressType
     @JsonProperty("addressTypeId")
     private UUID addressTypeUuid;
-    private String type;
-    private String description;
+    private String addressTypeType;
+    private String addressTypeDescription;
 }
diff --git a/src/main/java/org/eclipse/openk/contactbasedata/viewmodel/CommunicationDto.java b/src/main/java/org/eclipse/openk/contactbasedata/viewmodel/CommunicationDto.java
index 46dbc94..4d75be8 100644
--- a/src/main/java/org/eclipse/openk/contactbasedata/viewmodel/CommunicationDto.java
+++ b/src/main/java/org/eclipse/openk/contactbasedata/viewmodel/CommunicationDto.java
@@ -27,10 +27,13 @@
     private UUID  uuid;
     private String communicationData;
 
+    @JsonProperty("contactId")
+    private UUID contactUuid;
+
     //fromCommunicationType
     @JsonProperty("communicationTypeId")
     private UUID communicationTypeUuid;
-    private String type;
-    private String description;
+    private String communicationTypeType;
+    private String communicationTypeDescription;
 }
 
diff --git a/src/main/resources/messages.properties b/src/main/resources/messages.properties
index 2469ea6..120096c 100644
--- a/src/main/resources/messages.properties
+++ b/src/main/resources/messages.properties
@@ -10,5 +10,7 @@
 person.type.uuid.not.existing= Die \u00fcbergebene UUID eines Personentyps existiert nicht
 address.uuid.not.existing= Die \u00fcbergebene UUID einer Adresse existiert nicht
 address.type.uuid.not.existing= Die \u00fcbergebene UUID eines Adresstyps existiert nicht
+communication.uuid.not.existing= Die \u00fcbergebene UUID eines Kommunikationswegs existiert nicht
 
-main.address.already.existing F\u00fcdiesen Kontakt existiert bereits eine Hauptadresse
+main.address.already.existing= F\u00fcdiesen Kontakt existiert bereits eine Hauptadresse
+communication.type.already.existing.for.contact= F\u00fcdiesen Kontakt existiert bereits dieser Kommunikationstyp
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 62524b1..e7846ef 100644
--- a/src/test/java/org/eclipse/openk/contactbasedata/config/TestConfiguration.java
+++ b/src/test/java/org/eclipse/openk/contactbasedata/config/TestConfiguration.java
@@ -63,6 +63,9 @@
     CommunicationTypeMapper communicationTypeMapper() { return new CommunicationTypeMapperImpl(); }
 
     @Bean
+    CommunicationMapper communicationMapper() { return new CommunicationMapperImpl(); }
+
+    @Bean
     public VersionService myVersionService() {
         return new VersionService();
     }
@@ -95,5 +98,8 @@
     public CommunicationTypeService myCommunicationTypeService() { return new CommunicationTypeService(); }
 
     @Bean
+    public CommunicationService myCommunicationService() { return new CommunicationService(); }
+
+    @Bean
     public BaseContactService myBaseContactService() { return new BaseContactService(); }
 }
diff --git a/src/test/java/org/eclipse/openk/contactbasedata/controller/AddressControllerTest.java b/src/test/java/org/eclipse/openk/contactbasedata/controller/AddressControllerTest.java
index 5e72971..9fc13da 100644
--- a/src/test/java/org/eclipse/openk/contactbasedata/controller/AddressControllerTest.java
+++ b/src/test/java/org/eclipse/openk/contactbasedata/controller/AddressControllerTest.java
@@ -15,14 +15,10 @@
 package org.eclipse.openk.contactbasedata.controller;
 
 import com.fasterxml.jackson.databind.ObjectMapper;
-import jdk.nashorn.internal.ir.annotations.Ignore;
 import org.eclipse.openk.contactbasedata.ContactBaseDataApplication;
 import org.eclipse.openk.contactbasedata.service.AddressService;
-import org.eclipse.openk.contactbasedata.service.SalutationService;
 import org.eclipse.openk.contactbasedata.support.MockDataHelper;
 import org.eclipse.openk.contactbasedata.viewmodel.AddressDto;
-import org.eclipse.openk.contactbasedata.viewmodel.CommunicationTypeDto;
-import org.eclipse.openk.contactbasedata.viewmodel.SalutationDto;
 import org.hamcrest.Matchers;
 import org.junit.jupiter.api.Test;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -89,8 +85,8 @@
         addressDto.setUrlMap("www.xyz");
         addressDto.setWgs84Zone("84");
         addressDto.setContactUuid(UUID.fromString("1ad98f8a-3774-11ea-850d-2e728ce88125"));
-        addressDto.setType("Privat");
-        addressDto.setDescription("???");
+        addressDto.setAddressTypeType("Privat");
+        addressDto.setAddressTypeDescription("???");
         addressDto.setAddressTypeUuid(UUID.fromString("5956e65e-3774-11ea-978f-2e728ce88125"));
 
         when(addressService.insertAddress(any(UUID.class), any(AddressDto.class)))
@@ -112,8 +108,8 @@
                 .andExpect(jsonPath("$.urlMap", Matchers.is("www.xyz" )))
                 .andExpect(jsonPath("$.wgs84Zone", Matchers.is("84" )))
                 .andExpect(jsonPath("$.contactId", Matchers.is("1ad98f8a-3774-11ea-850d-2e728ce88125" )))
-                .andExpect(jsonPath("$.type", Matchers.is("Privat" )))
-                .andExpect(jsonPath("$.description", Matchers.is("???" )))
+                .andExpect(jsonPath("$.addressTypeType", Matchers.is("Privat" )))
+                .andExpect(jsonPath("$.addressTypeDescription", Matchers.is("???" )))
                 .andExpect(jsonPath("$.addressTypeId", Matchers.is("5956e65e-3774-11ea-978f-2e728ce88125" )));
 
     }
@@ -143,5 +139,12 @@
                 .andExpect(status().isBadRequest());
     }
 
+    @Test
+    public void shouldDeleteAddress() throws Exception {
+        mockMvc.perform(delete("/contacts/{contactUuid}/addresses/{addressUuid}", UUID.randomUUID(), UUID.randomUUID())
+                .contentType(MediaType.APPLICATION_JSON))
+                .andExpect(status().is2xxSuccessful());
+    }
+
 
 }
\ No newline at end of file
diff --git a/src/test/java/org/eclipse/openk/contactbasedata/controller/CommunicationControllerTest.java b/src/test/java/org/eclipse/openk/contactbasedata/controller/CommunicationControllerTest.java
new file mode 100644
index 0000000..4672dbd
--- /dev/null
+++ b/src/test/java/org/eclipse/openk/contactbasedata/controller/CommunicationControllerTest.java
@@ -0,0 +1,129 @@
+/*
+ *******************************************************************************
+ * 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.controller;
+
+import com.fasterxml.jackson.databind.ObjectMapper;
+import org.eclipse.openk.contactbasedata.ContactBaseDataApplication;
+import org.eclipse.openk.contactbasedata.service.CommunicationService;
+import org.eclipse.openk.contactbasedata.support.MockDataHelper;
+import org.eclipse.openk.contactbasedata.viewmodel.CommunicationDto;
+import org.hamcrest.Matchers;
+import org.junit.jupiter.api.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.boot.test.mock.mockito.MockBean;
+import org.springframework.http.MediaType;
+import org.springframework.test.context.ActiveProfiles;
+import org.springframework.test.web.servlet.MockMvc;
+import java.util.List;
+import java.util.UUID;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.Mockito.when;
+import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*;
+import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*;
+
+@SpringBootTest(classes = ContactBaseDataApplication.class)
+@AutoConfigureMockMvc
+@ActiveProfiles("test") // Todo: Find a better way to configure the tests
+public class CommunicationControllerTest {
+
+    @MockBean
+    private CommunicationService communicationService;
+
+    @Autowired
+    private MockMvc mockMvc;
+
+    @Test
+    public void shouldReturnCommunicationsForAContact() throws Exception {
+        List<CommunicationDto> listDtos = MockDataHelper.mockCommunicationDtoList();
+
+        when(communicationService.getCommunicationsByContactUuid(any(UUID.class))).thenReturn(listDtos);
+
+        mockMvc.perform(get("/contacts/{uuid}/communications", UUID.randomUUID()))
+                .andExpect(status().is2xxSuccessful())
+                .andExpect(content().contentType(MediaType.APPLICATION_JSON));
+    }
+
+    @Test
+    public void shouldReturnSingleCommunication() throws Exception {
+        CommunicationDto communicationDto = MockDataHelper.mockCommunicationDto();
+
+        when(communicationService.getCommunication(any(UUID.class), any(UUID.class))).thenReturn(communicationDto);
+
+        mockMvc.perform(get("/contacts/a689622e-3c2b-11ea-b77f-2e728ce88125/communications/a68964f4-3c2b-11ea-b77f-2e728ce88125"))
+                .andExpect(status().is2xxSuccessful())
+                .andExpect(content().contentType(MediaType.APPLICATION_JSON));
+    }
+
+
+    @Test
+    public void shouldInsertCommunication() throws Exception {
+        CommunicationDto communicationDto = MockDataHelper.mockCommunicationDto();
+        communicationDto.setUuid(UUID.fromString("498a1874-3c2c-11ea-b77f-2e728ce88125"));
+
+        communicationDto.setContactUuid(UUID.fromString("64e35f5e-3c2c-11ea-b77f-2e728ce88125"));
+        communicationDto.setCommunicationData("01778927384");
+        communicationDto.setCommunicationTypeType("MOB");
+        communicationDto.setCommunicationTypeDescription("Mobil");
+        communicationDto.setCommunicationTypeUuid(UUID.fromString("70160958-3c2c-11ea-b77f-2e728ce88125"));
+
+        when(communicationService.insertCommunication(any(UUID.class), any(CommunicationDto.class)))
+                .thenReturn(communicationDto);
+
+        mockMvc.perform(post("/contacts/{contactUuid}/communications", communicationDto.getContactUuid())
+                .contentType(MediaType.APPLICATION_JSON)
+                .content(new ObjectMapper().writeValueAsString(communicationDto)))
+                .andExpect(jsonPath("$.contactId", Matchers.is("64e35f5e-3c2c-11ea-b77f-2e728ce88125")))
+                .andExpect(jsonPath("$.communicationData", Matchers.is("01778927384" )))
+                .andExpect(jsonPath("$.communicationTypeType", Matchers.is("MOB" )))
+                .andExpect(jsonPath("$.communicationTypeDescription", Matchers.is("Mobil" )))
+                .andExpect(jsonPath("$.communicationTypeId", Matchers.is("70160958-3c2c-11ea-b77f-2e728ce88125" )));
+    }
+
+
+    @Test
+    public void shouldUpdateCommunication() throws Exception {
+
+        CommunicationDto communicationDto = MockDataHelper.mockCommunicationDto();
+        when( communicationService.updateCommunication(any(UUID.class), any(CommunicationDto.class))).thenReturn(communicationDto);
+
+        mockMvc.perform(put("/contacts/{contactUuid}/communications/{communicationUuid}", communicationDto.getContactUuid(), communicationDto.getUuid())
+                .contentType(MediaType.APPLICATION_JSON)
+                .content(new ObjectMapper().writeValueAsString(communicationDto)))
+                .andExpect(status().is2xxSuccessful());
+    }
+
+    @Test
+    public void shouldNotUpdateCommunication() throws Exception {
+
+        CommunicationDto communicationDto = MockDataHelper.mockCommunicationDto();
+        when( communicationService.updateCommunication(any(UUID.class), any(CommunicationDto.class))).thenReturn(communicationDto);
+
+        mockMvc.perform(put("/contacts/{contactUuid}/communications/{communicationUuid}", communicationDto.getContactUuid(), UUID.randomUUID().toString())
+                .contentType(MediaType.APPLICATION_JSON)
+                .content(new ObjectMapper().writeValueAsString(communicationDto)))
+                .andExpect(status().isBadRequest());
+    }
+
+    @Test
+    public void shouldDeleteCommunication() throws Exception {
+        mockMvc.perform(delete("/contacts/{contactUuid}/communications/{communicationUuid}", UUID.randomUUID(), UUID.randomUUID())
+                .contentType(MediaType.APPLICATION_JSON))
+                .andExpect(status().is2xxSuccessful());
+    }
+
+
+}
\ No newline at end of file
diff --git a/src/test/java/org/eclipse/openk/contactbasedata/service/CommunicationServiceTest.java b/src/test/java/org/eclipse/openk/contactbasedata/service/CommunicationServiceTest.java
new file mode 100644
index 0000000..ac52b17
--- /dev/null
+++ b/src/test/java/org/eclipse/openk/contactbasedata/service/CommunicationServiceTest.java
@@ -0,0 +1,251 @@
+/*
+ *******************************************************************************
+ * 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.exceptions.NotFoundException;
+import org.eclipse.openk.contactbasedata.exceptions.OperationDeniedException;
+import org.eclipse.openk.contactbasedata.model.*;
+import org.eclipse.openk.contactbasedata.repository.*;
+import org.eclipse.openk.contactbasedata.support.MockDataHelper;
+import org.eclipse.openk.contactbasedata.viewmodel.CommunicationDto;
+import org.junit.jupiter.api.Test;
+import org.mockito.Mockito;
+import org.mockito.stubbing.Answer;
+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.List;
+import java.util.Optional;
+import java.util.UUID;
+import static org.hibernate.validator.internal.util.Contracts.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertThrows;
+import static org.mockito.ArgumentMatchers.*;
+import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.when;
+
+@DataJpaTest
+@ContextConfiguration(classes = {TestConfiguration.class})
+
+public class CommunicationServiceTest {
+    @Qualifier("myCommunicationService")
+    @Autowired
+    private CommunicationService communicationService;
+
+    @MockBean
+    private CommunicationRepository communicationRepository;
+
+    @MockBean
+    private ContactRepository contactRepository;
+
+    @MockBean
+    private CommunicationTypeRepository communicationTypeRepository;
+
+    @Test
+    public void shouldReturnAddressesByContactUuid() {
+
+        List<TblCommunication> listTblCommunications = MockDataHelper.mockTblCommunicationsList();
+        when(communicationRepository.findByTblContactUuid( any(UUID.class)) ).thenReturn(listTblCommunications);
+
+        List<CommunicationDto> dtoList = communicationService.getCommunicationsByContactUuid(UUID.randomUUID());
+        assertEquals(dtoList.size(), 2 );
+    }
+
+    @Test
+    public void shouldReturnCommunicationsByContactUuidAndCommunicationUuid() {
+
+        TblCommunication tblCommunication = MockDataHelper.mockTblCommunication();
+        when(communicationRepository.findByUuid( any(UUID.class)) ).thenReturn(Optional.of(tblCommunication));
+
+       CommunicationDto dto = communicationService.getCommunication(tblCommunication.getTblContact().getUuid(), UUID.randomUUID());
+        assertEquals(tblCommunication.getUuid(), dto.getUuid() );
+    }
+
+    @Test
+    public void shouldUpdateCommunication() {
+        CommunicationDto communicationDto = MockDataHelper.mockCommunicationDto();
+        TblCommunication tblCommunication = MockDataHelper.mockTblCommunication();
+        TblContact tblContact = MockDataHelper.mockTblContact();
+        RefCommunicationType refCommunicationType = MockDataHelper.mockRefCommunicationType();
+        tblCommunication.setTblContact(tblContact);
+
+        when (contactRepository.findByUuid( any(UUID.class))).thenReturn(Optional.of(tblContact));
+        when(communicationRepository.findByUuid(any(UUID.class))).thenReturn(Optional.of(tblCommunication));
+        when(communicationRepository.save(any(TblCommunication.class))).thenReturn(tblCommunication);
+        when (communicationTypeRepository.findByUuid(any(UUID.class))).thenReturn(Optional.of(refCommunicationType));
+
+        CommunicationDto savedCommunication = communicationService.updateCommunication(communicationDto.getUuid(), communicationDto);
+
+        assertEquals(tblCommunication.getTblContact().getUuid(), savedCommunication.getContactUuid());
+        assertEquals(tblCommunication.getUuid(), savedCommunication.getUuid());
+        assertEquals(tblCommunication.getRefCommunicationType().getUuid(), savedCommunication.getCommunicationTypeUuid());
+        assertEquals(tblCommunication.getCommunicationData(), savedCommunication.getCommunicationData());
+
+    }
+
+    @Test
+    public void shouldNotUpdateCommunication_Exception1() {
+        CommunicationDto communicationDto = MockDataHelper.mockCommunicationDto();
+        TblCommunication tblCommunication = MockDataHelper.mockTblCommunication();
+        TblContact tblContact = MockDataHelper.mockTblContact();
+        RefCommunicationType refCommunicationType = MockDataHelper.mockRefCommunicationType();
+        tblCommunication.setTblContact(tblContact);
+
+        when (contactRepository.findByUuid( any(UUID.class))).thenReturn(Optional.empty());
+        when(communicationRepository.findByUuid(any(UUID.class))).thenReturn(Optional.of(tblCommunication));
+        when (communicationTypeRepository.findByUuid(any(UUID.class))).thenReturn(Optional.of(refCommunicationType));
+        when(communicationRepository.save(any(TblCommunication.class)))
+                .then((Answer<TblCommunication>) invocation -> {
+                    Object[] args = invocation.getArguments();
+                    return (TblCommunication) args[0];
+                });
+
+        assertThrows( NotFoundException.class, () -> communicationService.updateCommunication(communicationDto.getUuid(), communicationDto));
+    }
+
+    @Test
+    public void shouldNotUpdateCommunication_Exception2() {
+        CommunicationDto communicationDto = MockDataHelper.mockCommunicationDto();
+        TblCommunication tblCommunication = MockDataHelper.mockTblCommunication();
+        TblContact tblContact = MockDataHelper.mockTblContact();
+
+        tblCommunication.setTblContact(tblContact);
+
+
+        when (contactRepository.findByUuid( any(UUID.class))).thenReturn(Optional.of(tblContact));
+        when(communicationRepository.findByUuid(any(UUID.class))).thenReturn(Optional.of(tblCommunication));
+        when (communicationRepository.findByUuid(any(UUID.class))).thenReturn(Optional.empty());
+        when(communicationRepository.save(any(TblCommunication.class)))
+                .then((Answer<TblAddress>) invocation -> {
+                    Object[] args = invocation.getArguments();
+                    return (TblAddress) args[0];
+                });
+
+        assertThrows( NotFoundException.class, () -> communicationService.updateCommunication(communicationDto.getUuid(), communicationDto));
+    }
+
+    @Test
+    public void shouldNotUpdateCommunication_Exception3() {
+        CommunicationDto communicationDto = MockDataHelper.mockCommunicationDto();
+        TblCommunication tblCommunication = MockDataHelper.mockTblCommunication();
+        TblContact tblContact = MockDataHelper.mockTblContact();
+        RefCommunicationType refCommunicationType = MockDataHelper.mockRefCommunicationType();
+        tblCommunication.setTblContact(tblContact);
+
+        when (contactRepository.findByUuid( any(UUID.class))).thenReturn(Optional.of(tblContact));
+        when(communicationRepository.findByUuid(any(UUID.class))).thenReturn(Optional.of(tblCommunication));
+        when(communicationRepository.countByContactIdAndCommunicationTypeIdAndIsNotSame(any(Long.class), any(Long.class), any(UUID.class)) ).thenReturn(3L);
+        when (communicationTypeRepository.findByUuid(any(UUID.class))).thenReturn(Optional.of(refCommunicationType));
+
+        when(communicationRepository.save(any(TblCommunication.class)))
+                .then((Answer<TblCommunication>) invocation -> {
+                    Object[] args = invocation.getArguments();
+                    return (TblCommunication) args[0];
+                });
+
+        assertThrows( OperationDeniedException.class, () -> communicationService.updateCommunication(communicationDto.getUuid(), communicationDto));
+
+    }
+
+    @Test
+    public void shouldInsertCommunication() {
+        CommunicationDto communicationDto = MockDataHelper.mockCommunicationDto();
+        TblCommunication tblCommunication = MockDataHelper.mockTblCommunication();
+        TblContact tblContact = MockDataHelper.mockTblContact();
+        RefCommunicationType refCommunicationType = MockDataHelper.mockRefCommunicationType();
+        tblCommunication.setTblContact(tblContact);
+
+        when (contactRepository.findByUuid( any(UUID.class))).thenReturn(Optional.of(tblContact));
+        when(communicationRepository.save(any(TblCommunication.class))).thenReturn(tblCommunication);
+        when (communicationTypeRepository.findByUuid(any(UUID.class))).thenReturn(Optional.of(refCommunicationType));
+
+        CommunicationDto savedCommunication = communicationService.insertCommunication(communicationDto.getUuid(), communicationDto);
+
+        assertNotNull(savedCommunication.getContactUuid());
+        assertEquals(tblCommunication.getTblContact().getUuid(), savedCommunication.getContactUuid());
+        assertEquals(tblCommunication.getUuid(), savedCommunication.getUuid());
+        assertEquals(tblCommunication.getCommunicationData(), savedCommunication.getCommunicationData());
+        assertEquals(tblCommunication.getRefCommunicationType().getUuid(), savedCommunication.getCommunicationTypeUuid());
+    }
+
+    @Test
+    public void shouldNotInsertCommunication_Exception_1() {
+        CommunicationDto communicationDto = MockDataHelper.mockCommunicationDto();
+        TblCommunication tblCommunication = MockDataHelper.mockTblCommunication();
+        TblContact tblContact = MockDataHelper.mockTblContact();
+        RefCommunicationType refCommunicationType = MockDataHelper.mockRefCommunicationType();
+        tblCommunication.setTblContact(tblContact);
+
+        when (contactRepository.findByUuid( any(UUID.class))).thenReturn(Optional.empty());
+        when(communicationRepository.save(any(TblCommunication.class))).thenReturn(tblCommunication);
+        when (communicationTypeRepository.findByUuid(any(UUID.class))).thenReturn(Optional.of(refCommunicationType));
+
+        assertThrows( NotFoundException.class, () -> communicationService.insertCommunication(communicationDto.getUuid(), communicationDto));
+
+    }
+
+    @Test
+    public void shouldNotInsertCommunication_Exception_2() {
+        CommunicationDto communicationDto = MockDataHelper.mockCommunicationDto();
+        TblCommunication tblCommunication = MockDataHelper.mockTblCommunication();
+        TblContact tblContact = MockDataHelper.mockTblContact();
+        tblCommunication.setTblContact(tblContact);
+
+        when (contactRepository.findByUuid( any(UUID.class))).thenReturn(Optional.of(tblContact));
+        when(communicationRepository.save(any(TblCommunication.class))).thenReturn(tblCommunication);
+        when (communicationTypeRepository.findByUuid(any(UUID.class))).thenReturn(Optional.empty());
+
+        assertThrows( NotFoundException.class, () -> communicationService.insertCommunication(communicationDto.getUuid(), communicationDto));
+
+    }
+
+
+    @Test
+    public void shouldNotInsertCommunication_Exception3() {
+        CommunicationDto communicationDto = MockDataHelper.mockCommunicationDto();
+        TblCommunication tblCommunication = MockDataHelper.mockTblCommunication();
+        RefCommunicationType refCommunicationType = MockDataHelper.mockRefCommunicationType();
+        TblContact tblContact = MockDataHelper.mockTblContact();
+        tblCommunication.setTblContact(tblContact);
+
+        when (contactRepository.findByUuid( any(UUID.class))).thenReturn(Optional.of(tblContact));
+        when (communicationTypeRepository.findByUuid(any(UUID.class))).thenReturn(Optional.of(refCommunicationType));
+        when(communicationRepository.countByContactIdAndCommunicationTypeId(anyLong(), anyLong())).thenReturn(2L);
+        when(communicationRepository.save(any(TblCommunication.class))).thenReturn(tblCommunication);
+
+        assertThrows( OperationDeniedException.class, () -> communicationService.insertCommunication(communicationDto.getUuid(), communicationDto));
+
+    }
+
+
+    @Test
+    public void shouldDeleteCommunication() {
+        TblCommunication tblCommunication = MockDataHelper.mockTblCommunication();
+        TblContact tblContact = MockDataHelper.mockTblContact();
+        tblCommunication.setTblContact(tblContact);
+
+        when (contactRepository.findByUuid( any(UUID.class))).thenReturn(Optional.of(tblContact));
+        when(communicationRepository.findByTblContactAndUuid(any(TblContact.class), any(UUID.class))).thenReturn(Optional.of(tblCommunication));
+        Mockito.doNothing().when(communicationRepository).delete( isA( TblCommunication.class ));
+
+        communicationService.deleteCommunication(tblContact.getUuid(), tblCommunication.getUuid());
+
+        Mockito.verify(communicationRepository, times(1)).delete( tblCommunication );
+    }
+
+}
diff --git a/src/test/java/org/eclipse/openk/contactbasedata/support/MockDataHelper.java b/src/test/java/org/eclipse/openk/contactbasedata/support/MockDataHelper.java
index 5850ad6..06cbbf8 100644
--- a/src/test/java/org/eclipse/openk/contactbasedata/support/MockDataHelper.java
+++ b/src/test/java/org/eclipse/openk/contactbasedata/support/MockDataHelper.java
@@ -481,4 +481,75 @@
         return contactDto;
     }
 
+    public static CommunicationDto mockCommunicationDto(){
+        CommunicationDto dto = new CommunicationDto();
+        dto.setUuid(UUID.randomUUID());
+        dto.setContactUuid(UUID.randomUUID());
+        dto.setCommunicationData("030-12345678");
+        dto.setCommunicationTypeDescription("Faxgerät");
+        dto.setCommunicationTypeType("FAX");
+        dto.setCommunicationTypeUuid(UUID.randomUUID());
+
+        return dto;
+    }
+
+
+    public static List<CommunicationDto> mockCommunicationDtoList(){
+
+        List<CommunicationDto> list = new ArrayList<>();
+
+        CommunicationDto communicationDto1 = mockCommunicationDto();
+
+        CommunicationDto communicationDto2 = new CommunicationDto();
+        communicationDto2.setUuid(UUID.randomUUID());
+        communicationDto2.setContactUuid(UUID.randomUUID());
+        communicationDto2.setCommunicationData("030-456789012");
+        communicationDto2.setCommunicationTypeDescription("Telefon");
+        communicationDto2.setCommunicationTypeType("TEL");
+        communicationDto2.setCommunicationTypeUuid(UUID.randomUUID());
+
+        CommunicationDto communicationDto3 = new CommunicationDto();
+        communicationDto3.setUuid(UUID.randomUUID());
+        communicationDto3.setContactUuid(UUID.randomUUID());
+        communicationDto3.setCommunicationData("030-456789012");
+        communicationDto3.setCommunicationTypeDescription("Telefon");
+        communicationDto3.setCommunicationTypeType("TEL");
+        communicationDto3.setCommunicationTypeUuid(UUID.randomUUID());
+
+        list.add(communicationDto1);
+        list.add(communicationDto2);
+        list.add(communicationDto3);
+
+        return list;
+    }
+
+    public static TblCommunication mockTblCommunication(){
+        TblCommunication tblCommunication = new TblCommunication();
+
+        tblCommunication.setUuid(UUID.randomUUID());
+        tblCommunication.setTblContact(mockTblContact());
+        tblCommunication.setCommunicationData("030-55555555");
+        tblCommunication.setRefCommunicationType(mockRefCommunicationType());
+
+        return tblCommunication;
+    }
+
+    public static List<TblCommunication> mockTblCommunicationsList(){
+
+        List<TblCommunication> list = new ArrayList<>();
+
+        TblCommunication tblCommunicationDto1 = mockTblCommunication();
+
+        TblCommunication tblCommunicationDto2 = new TblCommunication();
+        tblCommunicationDto2.setCommunicationData("030-55555555");
+        tblCommunicationDto2.setRefCommunicationType(mockRefCommunicationType());
+        tblCommunicationDto2.setTblContact(mockTblContact());
+        tblCommunicationDto2.setUuid(UUID.randomUUID());
+
+        list.add(tblCommunicationDto1);
+        list.add(tblCommunicationDto2);
+
+        return list;
+    }
+
 }