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 02b0d1c..b88907b 100644
--- a/src/main/java/org/eclipse/openk/contactbasedata/service/CompanyService.java
+++ b/src/main/java/org/eclipse/openk/contactbasedata/service/CompanyService.java
@@ -96,6 +96,7 @@
 
         existingCompany.setCompanyName(companyDto.getCompanyName());
         existingCompany.setCompanyType(companyDto.getCompanyType());
+        existingCompany.setHrNumber(companyDto.getHrNumber());
 
         setFromCompanyDto( existingCompany, companyDto );
         companyUpdated = companyRepository.save(existingCompany);
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 6963a09..c10b9d6 100644
--- a/src/main/java/org/eclipse/openk/contactbasedata/service/InternalPersonService.java
+++ b/src/main/java/org/eclipse/openk/contactbasedata/service/InternalPersonService.java
@@ -104,6 +104,9 @@
         existingInternalPerson.setLastName(internalPersonDto.getLastName());
         existingInternalPerson.setFirstName(internalPersonDto.getFirstName());
         existingInternalPerson.setTitle(internalPersonDto.getTitle());
+        existingInternalPerson.setDepartment(internalPersonDto.getDepartment());
+        existingInternalPerson.setUid(internalPersonDto.getUid());
+        existingInternalPerson.setUserRef(internalPersonDto.getUserRef());
 
         setFromInternalPersonDto( existingInternalPerson, internalPersonDto );
         internalPersonUpdated = internalPersonRepository.save(existingInternalPerson);
diff --git a/src/test/java/org/eclipse/openk/contactbasedata/service/CompanyServiceTest.java b/src/test/java/org/eclipse/openk/contactbasedata/service/CompanyServiceTest.java
new file mode 100644
index 0000000..ba0b175
--- /dev/null
+++ b/src/test/java/org/eclipse/openk/contactbasedata/service/CompanyServiceTest.java
@@ -0,0 +1,144 @@
+/*
+ *******************************************************************************
+ * 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.model.TblCompany;
+import org.eclipse.openk.contactbasedata.model.TblContact;
+import org.eclipse.openk.contactbasedata.repository.CompanyRepository;
+import org.eclipse.openk.contactbasedata.repository.ContactRepository;
+import org.eclipse.openk.contactbasedata.repository.PersonTypeRepository;
+import org.eclipse.openk.contactbasedata.repository.SalutationRepository;
+import org.eclipse.openk.contactbasedata.support.MockDataHelper;
+import org.eclipse.openk.contactbasedata.viewmodel.CompanyDto;
+import org.junit.jupiter.api.Test;
+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.Optional;
+import java.util.UUID;
+
+import static org.junit.jupiter.api.Assertions.*;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.Mockito.when;
+
+@DataJpaTest
+@ContextConfiguration(classes = {TestConfiguration.class})
+
+public class CompanyServiceTest {
+    @Qualifier("myCompanyService")
+    @Autowired
+    private CompanyService companyService;
+
+    @MockBean
+    private CompanyRepository companyRepository;
+
+    @MockBean
+    private ContactRepository contactRepository;
+
+    @MockBean
+    private SalutationRepository salutationRepository;
+
+    @MockBean
+    private PersonTypeRepository personTypeRepository;
+
+    @Test
+    public void shouldFindACompanyProperly() {
+        TblCompany ep = MockDataHelper.mockCompany();
+        when(companyRepository.findByTblContactUuid(any(UUID.class))).thenReturn(Optional.of(ep));
+        CompanyDto dto = companyService.findCompany(UUID.randomUUID());
+
+        assertEquals(ep.getContact().getUuid(), dto.getContactUuid());
+    }
+
+    @Test
+    public void shouldThrowInErrorCaseWithCompany() {
+        TblCompany ep = MockDataHelper.mockCompany();
+        when(companyRepository.findByTblContactUuid(any(UUID.class))).thenReturn(Optional.empty());
+        assertThrows(NotFoundException.class, () -> companyService.findCompany(UUID.randomUUID()));
+    }
+
+    @Test
+    public void shouldUpdateCompany() {
+        CompanyDto epDto = MockDataHelper.mockCompanyDto();
+        TblCompany epTbl = MockDataHelper.mockCompany();
+        when(companyRepository.findByTblContactUuid(any(UUID.class))).thenReturn(Optional.of(epTbl));
+        when(salutationRepository.findByUuid(any(UUID.class)))
+                .thenReturn(Optional.of(MockDataHelper.mockRefSalutation()));
+        when(personTypeRepository.findByUuid(any(UUID.class)))
+                .thenReturn(Optional.of(MockDataHelper.mockRefPersonType()));
+
+        when(companyRepository.save(any(TblCompany.class)))
+                .then((Answer<TblCompany>) invocation -> {
+                    Object[] args = invocation.getArguments();
+                    return (TblCompany) args[0];
+                });
+
+        CompanyDto savedDto = companyService.updateCompany(epDto);
+        assertEquals(epTbl.getContact().getUuid(), savedDto.getContactUuid());
+        assertEquals(epTbl.getContact().getNote(), savedDto.getContactNote());
+        assertEquals(epTbl.getContact().getContactType(), savedDto.getContactType());
+        assertEquals(epTbl.getCompanyName(), savedDto.getCompanyName());
+        assertEquals(epTbl.getCompanyType(), savedDto.getCompanyType());
+    }
+
+    @Test
+    public void shouldNotUpdateCompany_Exception1() {
+        CompanyDto epDto = MockDataHelper.mockCompanyDto();
+        TblCompany epTbl = MockDataHelper.mockCompany();
+        when(companyRepository.findByTblContactUuid(any(UUID.class))).thenReturn(Optional.empty());
+        when(salutationRepository.findByUuid(any(UUID.class)))
+                .thenReturn(Optional.of(MockDataHelper.mockRefSalutation()));
+        when(personTypeRepository.findByUuid(any(UUID.class)))
+                .thenReturn(Optional.of(MockDataHelper.mockRefPersonType()));
+
+        when(companyRepository.save(any(TblCompany.class)))
+                .then((Answer<TblCompany>) invocation -> {
+                    Object[] args = invocation.getArguments();
+                    return (TblCompany) args[0];
+                });
+
+        assertThrows( NotFoundException.class, () -> companyService.updateCompany(epDto));
+    }
+
+    @Test
+    public void shouldInsertCompany() {
+        CompanyDto epDto = MockDataHelper.mockCompanyDto();
+        epDto.setContactUuid(null);
+
+        when(contactRepository.save(any(TblContact.class)))
+                .then((Answer<TblContact>) invocation -> {
+                    Object[] args = invocation.getArguments();
+                    return (TblContact) args[0];
+                });
+        when(companyRepository.save(any(TblCompany.class)))
+                .then((Answer<TblCompany>) invocation -> {
+                    Object[] args = invocation.getArguments();
+                    return (TblCompany) args[0];
+                });
+
+        CompanyDto savedDto = companyService.insertCompany(epDto);
+        assertNotNull(savedDto.getContactUuid());
+        assertEquals(epDto.getContactNote(), savedDto.getContactNote());
+        assertEquals(epDto.getContactType(), savedDto.getContactType());
+        assertEquals(epDto.getCompanyName(), savedDto.getCompanyName());
+        assertEquals(epDto.getCompanyType(), savedDto.getCompanyType());
+    }
+}
\ No newline at end of file
