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 9707675..ec589b1 100644
--- a/src/main/java/org/eclipse/openk/contactbasedata/controller/ExternalPersonController.java
+++ b/src/main/java/org/eclipse/openk/contactbasedata/controller/ExternalPersonController.java
@@ -63,7 +63,7 @@
         URI location = ServletUriComponentsBuilder
                 .fromCurrentRequestUri()
                 .path("/{uuid}")
-                .buildAndExpand(savedExternalPersonDto.getContactId())
+                .buildAndExpand(savedExternalPersonDto.getContactUuid())
                 .toUri();
         return ResponseEntity.created(location).body(savedExternalPersonDto);
     }
@@ -77,7 +77,7 @@
             @ApiResponse(code = 404, message = "Nicht gefunden")})
     public ResponseEntity updateExternalPerson(@PathVariable UUID contactUuid, @Validated @RequestBody ExternalPersonDto externalPersonDto) {
 
-        if (!externalPersonDto.getContactId().equals(contactUuid)) {
+        if (!externalPersonDto.getContactUuid().equals(contactUuid)) {
             throw new BadRequestException("invalid.uuid.path.object");
         }
 
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 c31906a..9cd55bd 100644
--- a/src/main/java/org/eclipse/openk/contactbasedata/controller/InternalPersonController.java
+++ b/src/main/java/org/eclipse/openk/contactbasedata/controller/InternalPersonController.java
@@ -63,7 +63,7 @@
         URI location = ServletUriComponentsBuilder
                 .fromCurrentRequestUri()
                 .path("/{uuid}")
-                .buildAndExpand(savedInternalPersonDto.getContactId())
+                .buildAndExpand(savedInternalPersonDto.getContactUuid())
                 .toUri();
         return ResponseEntity.created(location).body(savedInternalPersonDto);
     }
@@ -77,7 +77,7 @@
             @ApiResponse(code = 404, message = "Nicht gefunden")})
     public ResponseEntity updateInternalPerson(@PathVariable UUID contactUuid, @Validated @RequestBody InternalPersonDto internalPersonDto) {
 
-        if (!internalPersonDto.getContactId().equals(contactUuid)) {
+        if (!internalPersonDto.getContactUuid().equals(contactUuid)) {
             throw new BadRequestException("invalid.uuid.path.object");
         }
 
diff --git a/src/main/java/org/eclipse/openk/contactbasedata/mapper/CompanyMapper.java b/src/main/java/org/eclipse/openk/contactbasedata/mapper/CompanyMapper.java
index 82696dd..458eecc 100644
--- a/src/main/java/org/eclipse/openk/contactbasedata/mapper/CompanyMapper.java
+++ b/src/main/java/org/eclipse/openk/contactbasedata/mapper/CompanyMapper.java
@@ -24,7 +24,7 @@
 @Mapper(componentModel = "spring", unmappedTargetPolicy = ReportingPolicy.IGNORE)
 public interface CompanyMapper {
     @Mappings({
-            @Mapping( source="contact.uuid", target="id")
+            @Mapping( source="contact.uuid", target="contactUuid")
     })
     CompanyDto toCompanyDto(TblCompany tblCompany);
 }
diff --git a/src/main/java/org/eclipse/openk/contactbasedata/mapper/ContactMapper.java b/src/main/java/org/eclipse/openk/contactbasedata/mapper/ContactMapper.java
index c8e97a1..30c59a2 100644
--- a/src/main/java/org/eclipse/openk/contactbasedata/mapper/ContactMapper.java
+++ b/src/main/java/org/eclipse/openk/contactbasedata/mapper/ContactMapper.java
@@ -24,8 +24,5 @@
 @Mapper(componentModel = "spring", unmappedTargetPolicy = ReportingPolicy.IGNORE)
 public interface ContactMapper {
 
-    @Mappings({
-            @Mapping( source="uuid", target="id")
-    })
     ContactDto toContactDto(TblContact tblContact);
 }
diff --git a/src/main/java/org/eclipse/openk/contactbasedata/mapper/ContactPersonMapper.java b/src/main/java/org/eclipse/openk/contactbasedata/mapper/ContactPersonMapper.java
index c4d0472..132fe05 100644
--- a/src/main/java/org/eclipse/openk/contactbasedata/mapper/ContactPersonMapper.java
+++ b/src/main/java/org/eclipse/openk/contactbasedata/mapper/ContactPersonMapper.java
@@ -24,7 +24,7 @@
 @Mapper(componentModel = "spring", unmappedTargetPolicy = ReportingPolicy.IGNORE)
 public interface ContactPersonMapper {
     @Mappings({
-            @Mapping( source="contact.uuid", target="id")
+            @Mapping( source="contact.uuid", target="contactUuid")
     })
     ContactPersonDto toContactPersonDto(TblContactPerson tblContactPerson);
 }
diff --git a/src/main/java/org/eclipse/openk/contactbasedata/mapper/ExternalPersonMapper.java b/src/main/java/org/eclipse/openk/contactbasedata/mapper/ExternalPersonMapper.java
index 4227183..23e288c 100644
--- a/src/main/java/org/eclipse/openk/contactbasedata/mapper/ExternalPersonMapper.java
+++ b/src/main/java/org/eclipse/openk/contactbasedata/mapper/ExternalPersonMapper.java
@@ -25,25 +25,25 @@
 public interface ExternalPersonMapper {
 
     @Mappings({
-            @Mapping( source="contact.uuid", target="contactId"),
+            @Mapping( source="contact.uuid", target="contactUuid"),
             //@Mapping( source="contact.uuid", target="contactId"),
             @Mapping( source="contact.contactType", target="contactType"),
             @Mapping( source="contact.note", target="contactNote"),
-            @Mapping( source="refPersonType.uuid", target="personTypeId"),
+            @Mapping( source="refPersonType.uuid", target="personTypeUuid"),
             @Mapping( source="refPersonType.type", target="personType"),
-            @Mapping( source="salutation.uuid", target="salutationId"),
+            @Mapping( source="salutation.uuid", target="salutationUuid"),
             @Mapping( source="salutation.type", target="salutationType")
     })
     ExternalPersonDto toExternalPersonDto(TblExternalPerson tblExternalPerson);
 
     @Mappings({
             //@Mapping( source="id", target="uuid"),
-            @Mapping( source="contactId", target="contact.uuid"),
+            @Mapping( source="contactUuid", target="contact.uuid"),
             @Mapping( source="contactType", target="contact.contactType"),
             @Mapping( source="contactNote", target="contact.note"),
-            @Mapping( source="personTypeId", target="refPersonType.uuid"),
+            @Mapping( source="personTypeUuid", target="refPersonType.uuid"),
             @Mapping( source="personType", target="refPersonType.type"),
-            @Mapping( source="salutationId", target="salutation.uuid"),
+            @Mapping( source="salutationUuid", target="salutation.uuid"),
             @Mapping( source="salutationType", target="salutation.type")
     })
     TblExternalPerson toTblExternalPerson(ExternalPersonDto externalPersonDto);
diff --git a/src/main/java/org/eclipse/openk/contactbasedata/mapper/InternalPersonMapper.java b/src/main/java/org/eclipse/openk/contactbasedata/mapper/InternalPersonMapper.java
index e1f28c6..80069a0 100644
--- a/src/main/java/org/eclipse/openk/contactbasedata/mapper/InternalPersonMapper.java
+++ b/src/main/java/org/eclipse/openk/contactbasedata/mapper/InternalPersonMapper.java
@@ -26,23 +26,23 @@
 
 
     @Mappings({
-            @Mapping( source="contact.uuid", target="contactId"),
+            @Mapping( source="contact.uuid", target="contactUuid"),
             @Mapping( source="contact.contactType", target="contactType"),
             @Mapping( source="contact.note", target="contactNote"),
-            @Mapping( source="refPersonType.uuid", target="personTypeId"),
+            @Mapping( source="refPersonType.uuid", target="personTypeUuid"),
             @Mapping( source="refPersonType.type", target="personType"),
-            @Mapping( source="salutation.uuid", target="salutationId"),
+            @Mapping( source="salutation.uuid", target="salutationUuid"),
             @Mapping( source="salutation.type", target="salutationType")
     })
     InternalPersonDto toInternalPersonDto(TblInternalPerson tblInternalPerson);
 
     @Mappings({
-            @Mapping( source="contactId", target="contact.uuid"),
+            @Mapping( source="contactUuid", target="contact.uuid"),
             @Mapping( source="contactType", target="contact.contactType"),
             @Mapping( source="contactNote", target="contact.note"),
-            @Mapping( source="personTypeId", target="refPersonType.uuid"),
+            @Mapping( source="personTypeUuid", target="refPersonType.uuid"),
             @Mapping( source="personType", target="refPersonType.type"),
-            @Mapping( source="salutationId", target="salutation.uuid"),
+            @Mapping( source="salutationUuid", target="salutation.uuid"),
             @Mapping( source="salutationType", target="salutation.type")
     })
     TblInternalPerson toTblInternalPerson(InternalPersonDto internalPersonDto);
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 b4e2ae8..fcfcf91 100644
--- a/src/main/java/org/eclipse/openk/contactbasedata/service/ExternalPersonService.java
+++ b/src/main/java/org/eclipse/openk/contactbasedata/service/ExternalPersonService.java
@@ -76,7 +76,7 @@
         TblExternalPerson externalPersonUpdated;
 
         TblExternalPerson existingExternalPerson = externalPersonRepository
-                .findByTblContactUuid(externalPersonDto.getContactId())
+                .findByTblContactUuid(externalPersonDto.getContactUuid())
                 .orElseThrow(() -> new NotFoundException("contact.uuid.not.existing"));
 
         existingExternalPerson.setLastName(externalPersonDto.getLastName());
@@ -91,18 +91,18 @@
 
     private void setFromExternalPersonDto( TblExternalPerson destTblExternalPerson, ExternalPersonDto sourceDto ) {
 
-        if( sourceDto.getSalutationId() != null ) {
+        if( sourceDto.getSalutationUuid() != null ) {
             destTblExternalPerson.setSalutation( salutationRepository
-                    .findByUuid(sourceDto.getSalutationId())
+                    .findByUuid(sourceDto.getSalutationUuid())
                     .orElseThrow(() -> new NotFoundException("salutation.uuid.not.existing")));
         }
         else {
             destTblExternalPerson.setSalutation(null);
         }
 
-        if( sourceDto.getPersonTypeId() != null ) {
+        if( sourceDto.getPersonTypeUuid() != null ) {
             destTblExternalPerson.setRefPersonType( personTypeRepository
-                    .findByUuid(sourceDto.getPersonTypeId())
+                    .findByUuid(sourceDto.getPersonTypeUuid())
                     .orElseThrow(() -> new NotFoundException("person.type.uuid.not.existing")));
         }
         else {
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 a8afa8f..b4ffa99 100644
--- a/src/main/java/org/eclipse/openk/contactbasedata/service/InternalPersonService.java
+++ b/src/main/java/org/eclipse/openk/contactbasedata/service/InternalPersonService.java
@@ -74,7 +74,7 @@
 
         //Interne Person holen
         TblInternalPerson existingInternalPerson = internalPersonRepository
-                .findByTblContactUuid(internalPersonDto.getContactId())
+                .findByTblContactUuid(internalPersonDto.getContactUuid())
                 .orElseThrow(() -> new NotFoundException("contact.uuid.not.existing"));
 
         existingInternalPerson.setLastName(internalPersonDto.getLastName());
@@ -89,10 +89,10 @@
 
     private void setFromInternalPersonDto( TblInternalPerson destTblInternalPerson, InternalPersonDto sourceDto ) {
         RefSalutation salutationUpdated = salutationRepository
-                .findByUuid(sourceDto.getSalutationId())
+                .findByUuid(sourceDto.getSalutationUuid())
                 .orElseThrow(() -> new NotFoundException("salutation.uuid.not.existing"));
         RefPersonType personTypeUpdated = personTypeRepository
-                .findByUuid(sourceDto.getPersonTypeId())
+                .findByUuid(sourceDto.getPersonTypeUuid())
                 .orElseThrow(() -> new NotFoundException("person.type.uuid.not.existing"));
 
         destTblInternalPerson.setSalutation(salutationUpdated);
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 855e92e..1d41ff6 100644
--- a/src/main/java/org/eclipse/openk/contactbasedata/viewmodel/AddressDto.java
+++ b/src/main/java/org/eclipse/openk/contactbasedata/viewmodel/AddressDto.java
@@ -24,7 +24,8 @@
     private String note;
 
     //fromAddressType
-    private UUID adressId;
+    @JsonProperty("adressId")
+    private UUID adressUuid;
     private String type;
     private String description;
 }
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 81e34ef..1af23cb 100644
--- a/src/main/java/org/eclipse/openk/contactbasedata/viewmodel/CommunicationDto.java
+++ b/src/main/java/org/eclipse/openk/contactbasedata/viewmodel/CommunicationDto.java
@@ -14,7 +14,8 @@
     private String communicationData;
 
     //fromCommunicationType
-    private UUID communicationsTypeId;
+    @JsonProperty("communicationTypeId")
+    private UUID communicationTypeUuid;
     private String type;
     private String description;
 }
diff --git a/src/main/java/org/eclipse/openk/contactbasedata/viewmodel/CompanyDto.java b/src/main/java/org/eclipse/openk/contactbasedata/viewmodel/CompanyDto.java
index 48ccac1..25372da 100644
--- a/src/main/java/org/eclipse/openk/contactbasedata/viewmodel/CompanyDto.java
+++ b/src/main/java/org/eclipse/openk/contactbasedata/viewmodel/CompanyDto.java
@@ -1,5 +1,6 @@
 package org.eclipse.openk.contactbasedata.viewmodel;
 
+import com.fasterxml.jackson.annotation.JsonProperty;
 import lombok.Data;
 
 import java.io.Serializable;
@@ -8,14 +9,15 @@
 @Data
 public class CompanyDto implements Serializable {
 
-
-    private UUID id;
+    @JsonProperty("id")
+    private UUID uuid;
     private String companyName;
     private String companyType;
     private String hrNumber;
 
     //from Contact
-    private UUID contactId;
+    @JsonProperty("contactId")
+    private UUID contactUuid;
     private String contactType;
     private String note;
 }
diff --git a/src/main/java/org/eclipse/openk/contactbasedata/viewmodel/ContactDto.java b/src/main/java/org/eclipse/openk/contactbasedata/viewmodel/ContactDto.java
index efd16af..5750700 100644
--- a/src/main/java/org/eclipse/openk/contactbasedata/viewmodel/ContactDto.java
+++ b/src/main/java/org/eclipse/openk/contactbasedata/viewmodel/ContactDto.java
@@ -10,7 +10,7 @@
 public class ContactDto implements Serializable {
 
     @JsonProperty("id")
-    private UUID id;
+    private UUID uuid;
     private String contactType;
     private String note;
 }
diff --git a/src/main/java/org/eclipse/openk/contactbasedata/viewmodel/ContactPersonDto.java b/src/main/java/org/eclipse/openk/contactbasedata/viewmodel/ContactPersonDto.java
index c8a7db0..f26d77b 100644
--- a/src/main/java/org/eclipse/openk/contactbasedata/viewmodel/ContactPersonDto.java
+++ b/src/main/java/org/eclipse/openk/contactbasedata/viewmodel/ContactPersonDto.java
@@ -1,5 +1,6 @@
 package org.eclipse.openk.contactbasedata.viewmodel;
 
+import com.fasterxml.jackson.annotation.JsonProperty;
 import lombok.Data;
 
 import java.io.Serializable;
@@ -8,12 +9,15 @@
 @Data
 public class ContactPersonDto implements Serializable {
 
-    private UUID id;
+    @JsonProperty("id")
+    private UUID uuid;
     private String firstName;
     private String lastName;
     private String title;
 
     //from Contact
+    @JsonProperty("contactId")
+    private UUID contactUuid;
     private String contactType;
     private String note;
 
diff --git a/src/main/java/org/eclipse/openk/contactbasedata/viewmodel/ExternalPersonDto.java b/src/main/java/org/eclipse/openk/contactbasedata/viewmodel/ExternalPersonDto.java
index cf8cd41..196e411 100644
--- a/src/main/java/org/eclipse/openk/contactbasedata/viewmodel/ExternalPersonDto.java
+++ b/src/main/java/org/eclipse/openk/contactbasedata/viewmodel/ExternalPersonDto.java
@@ -16,15 +16,18 @@
     private String title;
 
     //from Contact
-    private UUID contactId;
+    @JsonProperty("contactId")
+    private UUID contactUuid;
     private String contactType;
     private String contactNote;
 
     // from RefPersonType
-    private UUID personTypeId;
+    @JsonProperty("personTypeId")
+    private UUID personTypeUuid;
     private String personType;
 
     //from RefSalutation
-    private UUID salutationId;
+    @JsonProperty("salutationId")
+    private UUID salutationUuid;
     private String salutationType;
 }
\ No newline at end of file
diff --git a/src/main/java/org/eclipse/openk/contactbasedata/viewmodel/InternalPersonDto.java b/src/main/java/org/eclipse/openk/contactbasedata/viewmodel/InternalPersonDto.java
index 83a001e..716a075 100644
--- a/src/main/java/org/eclipse/openk/contactbasedata/viewmodel/InternalPersonDto.java
+++ b/src/main/java/org/eclipse/openk/contactbasedata/viewmodel/InternalPersonDto.java
@@ -19,15 +19,18 @@
     private String userRef;
 
     //from Contact
-    private UUID contactId;
+    @JsonProperty("contactId")
+    private UUID contactUuid;
     private String contactType;
     private String contactNote;
 
     // from RefPersonType
-    private UUID personTypeId;
+    @JsonProperty("personTypeId")
+    private UUID personTypeUuid;
     private String personType;
 
     //from RefSalutation
-    private UUID salutationId;
+    @JsonProperty("salutationId")
+    private UUID salutationUuid;
     private String salutationType;
 }
\ No newline at end of file
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 b06c73f..9ceef5d 100644
--- a/src/test/java/org/eclipse/openk/contactbasedata/controller/ExternalPersonControllerTest.java
+++ b/src/test/java/org/eclipse/openk/contactbasedata/controller/ExternalPersonControllerTest.java
@@ -83,7 +83,7 @@
 
         when( externalPersonService.updateExternalPerson(any(ExternalPersonDto.class))).thenReturn(ep);
 
-        mockMvc.perform(put("/external-persons/{uuid}", ep.getContactId().toString())
+        mockMvc.perform(put("/external-persons/{uuid}", ep.getContactUuid().toString())
                 .contentType(MediaType.APPLICATION_JSON)
                 .content(new ObjectMapper().writeValueAsString(ep)))
                 .andExpect(status().is2xxSuccessful());
@@ -112,7 +112,7 @@
                 .contentType(MediaType.APPLICATION_JSON)
                 .content(new ObjectMapper().writeValueAsString(ep)))
                 .andExpect(jsonPath("$.lastName", is(ep.getLastName())))
-                .andExpect(jsonPath("$.contactId", not(ep.getContactId())))
+                .andExpect(jsonPath("$.contactId", not(ep.getContactUuid())))
                 .andExpect(jsonPath("$.contactNote", is(ep.getContactNote())))
                 .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 df036b8..3d18ac5 100644
--- a/src/test/java/org/eclipse/openk/contactbasedata/controller/InternalPersonControllerTest.java
+++ b/src/test/java/org/eclipse/openk/contactbasedata/controller/InternalPersonControllerTest.java
@@ -86,7 +86,7 @@
 
         when( internalPersonService.updateInternalPerson(any(InternalPersonDto.class))).thenReturn(ip);
 
-        mockMvc.perform(put("/internal-persons/{uuid}", ip.getContactId().toString())
+        mockMvc.perform(put("/internal-persons/{uuid}", ip.getContactUuid().toString())
                 .contentType(MediaType.APPLICATION_JSON)
                 .content(new ObjectMapper().writeValueAsString(ip)))
                 .andExpect(status().is2xxSuccessful());
@@ -115,7 +115,7 @@
                 .contentType(MediaType.APPLICATION_JSON)
                 .content(new ObjectMapper().writeValueAsString(ip)))
                 .andExpect(jsonPath("$.lastName", is(ip.getLastName())))
-                .andExpect(jsonPath("$.contactId", not(ip.getContactId())))
+                .andExpect(jsonPath("$.contactId", not(ip.getContactUuid())))
                 .andExpect(jsonPath("$.contactNote", is(ip.getContactNote())))
                 .andExpect(status().is2xxSuccessful());
     }
diff --git a/src/test/java/org/eclipse/openk/contactbasedata/service/ExternalPersonServiceTest.java b/src/test/java/org/eclipse/openk/contactbasedata/service/ExternalPersonServiceTest.java
index 4574d26..3dd2d0e 100644
--- a/src/test/java/org/eclipse/openk/contactbasedata/service/ExternalPersonServiceTest.java
+++ b/src/test/java/org/eclipse/openk/contactbasedata/service/ExternalPersonServiceTest.java
@@ -67,7 +67,7 @@
         when(externalPersonRepository.findByTblContactUuid(any(UUID.class))).thenReturn(Optional.of(ep));
         ExternalPersonDto dto = externalPersonService.findExternalPerson(UUID.randomUUID());
 
-        assertEquals(ep.getContact().getUuid(), dto.getContactId());
+        assertEquals(ep.getContact().getUuid(), dto.getContactUuid());
     }
 
     @Test
@@ -94,14 +94,14 @@
                 });
 
         ExternalPersonDto savedDto = externalPersonService.updateExternalPerson(epDto);
-        assertEquals(epTbl.getContact().getUuid(), savedDto.getContactId());
+        assertEquals(epTbl.getContact().getUuid(), savedDto.getContactUuid());
         assertEquals(epTbl.getContact().getNote(), savedDto.getContactNote());
         assertEquals(epTbl.getContact().getContactType(), savedDto.getContactType());
         assertEquals(epTbl.getFirstName(), savedDto.getFirstName());
         assertEquals(epTbl.getLastName(), savedDto.getLastName());
         assertEquals(epTbl.getTitle(), savedDto.getTitle());
-        assertEquals(epTbl.getRefPersonType().getUuid(), savedDto.getPersonTypeId());
-        assertEquals(epTbl.getSalutation().getUuid(), savedDto.getSalutationId());
+        assertEquals(epTbl.getRefPersonType().getUuid(), savedDto.getPersonTypeUuid());
+        assertEquals(epTbl.getSalutation().getUuid(), savedDto.getSalutationUuid());
     }
 
     @Test
@@ -163,7 +163,7 @@
     @Test
     public void shouldInsertExternalPerson() {
         ExternalPersonDto epDto = MockDataHelper.mockExternalPersonDto();
-        epDto.setContactId(null);
+        epDto.setContactUuid(null);
         RefSalutation refSalutation = MockDataHelper.mockRefSalutation();
         when(salutationRepository.findByUuid(any(UUID.class)))
                 .thenReturn(Optional.of(refSalutation));
@@ -182,13 +182,13 @@
                 });
 
         ExternalPersonDto savedDto = externalPersonService.insertExternalPerson(epDto);
-        assertNotNull(savedDto.getContactId());
+        assertNotNull(savedDto.getContactUuid());
         assertEquals(epDto.getContactNote(), savedDto.getContactNote());
         assertEquals(epDto.getContactType(), savedDto.getContactType());
         assertEquals(epDto.getFirstName(), savedDto.getFirstName());
         assertEquals(epDto.getLastName(), savedDto.getLastName());
         assertEquals(epDto.getTitle(), savedDto.getTitle());
-        assertEquals(refPersonType.getUuid(), savedDto.getPersonTypeId());
-        assertEquals(refSalutation.getUuid(), savedDto.getSalutationId());
+        assertEquals(refPersonType.getUuid(), savedDto.getPersonTypeUuid());
+        assertEquals(refSalutation.getUuid(), savedDto.getSalutationUuid());
     }
 }
\ No newline at end of file
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 6a18eef..57052c0 100644
--- a/src/test/java/org/eclipse/openk/contactbasedata/service/InternalPersonServiceTest.java
+++ b/src/test/java/org/eclipse/openk/contactbasedata/service/InternalPersonServiceTest.java
@@ -62,7 +62,7 @@
         when(internalPersonRepository.findByTblContactUuid(any(UUID.class))).thenReturn(Optional.of(ip));
         InternalPersonDto dto = internalPersonService.findInternalPerson(UUID.randomUUID());
 
-        assertEquals(ip.getContact().getUuid(), dto.getContactId());
+        assertEquals(ip.getContact().getUuid(), dto.getContactUuid());
     }
 
     @Test
@@ -89,7 +89,7 @@
                 });
 
         InternalPersonDto savedDto = internalPersonService.updateInternalPerson(ipDto);
-        assertEquals(ipTbl.getContact().getUuid(), savedDto.getContactId());
+        assertEquals(ipTbl.getContact().getUuid(), savedDto.getContactUuid());
         assertEquals(ipTbl.getContact().getNote(), savedDto.getContactNote());
         assertEquals(ipTbl.getContact().getContactType(), savedDto.getContactType());
         assertEquals(ipTbl.getFirstName(), savedDto.getFirstName());
@@ -98,8 +98,8 @@
         assertEquals(ipTbl.getUserRef(), savedDto.getUserRef());
         assertEquals(ipTbl.getDepartment(), savedDto.getDepartment());
         assertEquals(ipTbl.getSid(), savedDto.getSid());
-        assertEquals(ipTbl.getRefPersonType().getUuid(), savedDto.getPersonTypeId());
-        assertEquals(ipTbl.getSalutation().getUuid(), savedDto.getSalutationId());
+        assertEquals(ipTbl.getRefPersonType().getUuid(), savedDto.getPersonTypeUuid());
+        assertEquals(ipTbl.getSalutation().getUuid(), savedDto.getSalutationUuid());
     }
 
     @Test
@@ -161,7 +161,7 @@
     @Test
     public void shouldInsertInternalPerson() {
         InternalPersonDto ipDto = MockDataHelper.mockInternalPersonDto();
-        ipDto.setContactId(null);
+        ipDto.setContactUuid(null);
         RefSalutation refSalutation = MockDataHelper.mockRefSalutation();
         when(salutationRepository.findByUuid(any(UUID.class)))
                 .thenReturn(Optional.of(refSalutation));
@@ -180,13 +180,13 @@
                 });
 
         InternalPersonDto savedDto = internalPersonService.insertInternalPerson(ipDto);
-        assertNotNull(savedDto.getContactId());
+        assertNotNull(savedDto.getContactUuid());
         assertEquals(ipDto.getContactNote(), savedDto.getContactNote());
         assertEquals(ipDto.getContactType(), savedDto.getContactType());
         assertEquals(ipDto.getFirstName(), savedDto.getFirstName());
         assertEquals(ipDto.getLastName(), savedDto.getLastName());
         assertEquals(ipDto.getTitle(), savedDto.getTitle());
-        assertEquals(refPersonType.getUuid(), savedDto.getPersonTypeId());
-        assertEquals(refSalutation.getUuid(), savedDto.getSalutationId());
+        assertEquals(refPersonType.getUuid(), savedDto.getPersonTypeUuid());
+        assertEquals(refSalutation.getUuid(), savedDto.getSalutationUuid());
     }
 }
\ No newline at end of file
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 d637058..8827800 100644
--- a/src/test/java/org/eclipse/openk/contactbasedata/support/MockDataHelper.java
+++ b/src/test/java/org/eclipse/openk/contactbasedata/support/MockDataHelper.java
@@ -75,13 +75,13 @@
 
     public static ExternalPersonDto mockExternalPersonDto() {
         ExternalPersonDto epd = new ExternalPersonDto();
-        epd.setContactId(UUID.randomUUID());
+        epd.setContactUuid(UUID.randomUUID());
         epd.setFirstName("Zotto");
         epd.setLastName("Briketti");
         epd.setContactType(Constants.CONTACT_TYPE_EXTERNAL_PERSON);
         epd.setTitle("Dr. von und zu");
-        epd.setPersonTypeId(UUID.randomUUID());
-        epd.setSalutationId(UUID.randomUUID());
+        epd.setPersonTypeUuid(UUID.randomUUID());
+        epd.setSalutationUuid(UUID.randomUUID());
         epd.setContactNote("Notiz am Rande");
         return epd;
     }
@@ -90,7 +90,7 @@
         ExternalPersonDto ep1 = mockExternalPersonDto();
         ExternalPersonDto ep2 = mockExternalPersonDto();
         ep2.setFirstName("Strofanov");
-        ep2.setContactId(UUID.randomUUID());
+        ep2.setContactUuid(UUID.randomUUID());
         List<ExternalPersonDto> list = Arrays.asList(ep1, ep2);
         return new PageImpl<>(list, Pageable.unpaged(), list.size());
     }
@@ -320,7 +320,7 @@
 
     public static InternalPersonDto mockInternalPersonDto() {
         InternalPersonDto ipd = new InternalPersonDto();
-        ipd.setContactId(UUID.randomUUID());
+        ipd.setContactUuid(UUID.randomUUID());
         ipd.setFirstName("Hella");
         ipd.setLastName("Wahnsinn");
         ipd.setContactType(Constants.CONTACT_TYPE_INTERNAL_PERSON);
@@ -328,8 +328,8 @@
         ipd.setDepartment("Beschwerdemanagement");
         ipd.setSid("222-888");
         ipd.setUserRef("HWAHNS");
-        ipd.setPersonTypeId(UUID.randomUUID());
-        ipd.setSalutationId(UUID.randomUUID());
+        ipd.setPersonTypeUuid(UUID.randomUUID());
+        ipd.setSalutationUuid(UUID.randomUUID());
         ipd.setContactNote("Vorsicht");
         return ipd;
     }
@@ -339,7 +339,7 @@
         InternalPersonDto ip1 = mockInternalPersonDto();
 
         InternalPersonDto ip2 = new InternalPersonDto();
-        ip2.setContactId(UUID.randomUUID());
+        ip2.setContactUuid(UUID.randomUUID());
         ip2.setFirstName("Fritz");
         ip2.setLastName("Alter");
         ip2.setContactType(Constants.CONTACT_TYPE_INTERNAL_PERSON);
@@ -347,8 +347,8 @@
         ip2.setDepartment("Geschäftsführung");
         ip2.setSid("333-999");
         ip2.setUserRef("FALTER");
-        ip2.setPersonTypeId(UUID.randomUUID());
-        ip2.setSalutationId(UUID.randomUUID());
+        ip2.setPersonTypeUuid(UUID.randomUUID());
+        ip2.setSalutationUuid(UUID.randomUUID());
         ip2.setContactNote("Gründer");
 
         List<InternalPersonDto> list = Arrays.asList(ip1, ip2);
