diff --git a/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/controller/ContactController.java b/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/controller/ContactController.java
index 6668628..d5df862 100644
--- a/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/controller/ContactController.java
+++ b/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/controller/ContactController.java
@@ -48,10 +48,9 @@
     @GetMapping
     public Page<VwDetailedContact> findContacts(
             @RequestParam( "searchText" ) Optional<String> searchText,
-            @RequestParam( "moduleName") Optional<String> moduleName,
             @PageableDefault( sort = {"name"}, size = 500, direction = ASC) Pageable pageable) {
 
-        return contactService.findContacts(searchText, moduleName, pageable);
+        return contactService.findContacts(searchText, pageable);
     }
 
 }
diff --git a/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/repository/DistributionGroupMemberRepository.java b/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/repository/DistributionGroupMemberRepository.java
index c5ad8b9..dae2ea1 100644
--- a/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/repository/DistributionGroupMemberRepository.java
+++ b/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/repository/DistributionGroupMemberRepository.java
@@ -39,4 +39,7 @@
     @Query("select count(*) from TblDistributionGroupMember a where a.tblDistributionGroup.id=:groupId and a.contactId=:contactId and uuid <>:memberUuid")
     Long countByDistributionGroupIdAndContactIdAndIsNotSame( @Param("groupId") Long groupId, @Param("contactId") UUID contactId, @Param("memberUuid") UUID memberUuid);
 
+    @Query("select count(*) from TblDistributionGroupMember a where a.tblDistributionGroup.id=:groupId and a.contactId=:contactId")
+    Long countByDistributionGroupIdAndContactId( @Param("groupId") Long groupId, @Param("contactId") UUID contactId);
+
 }
diff --git a/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/service/ContactService.java b/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/service/ContactService.java
index 2ffbc6d..a4c6441 100644
--- a/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/service/ContactService.java
+++ b/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/service/ContactService.java
@@ -17,6 +17,7 @@
 import org.eclipse.openk.gridfailureinformation.api.ContactApi;
 import org.eclipse.openk.gridfailureinformation.api.dto.VwDetailedContact;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.data.domain.Page;
 import org.springframework.data.domain.Pageable;
 import org.springframework.security.core.context.SecurityContextHolder;
@@ -30,14 +31,22 @@
     @Autowired
     private ContactApi contactApi;
 
-    public Page<VwDetailedContact> findContacts(Optional<String> searchText, Optional<String> moduleName, Pageable pageable) {
+    @Value("${services.contacts.useModuleNameForFilter}")
+    private Boolean useModuleName;
+
+    @Value("${services.contacts.moduleName}")
+    private String contactModuleName;
+
+    public Page<VwDetailedContact> findContacts(Optional<String> searchText, Pageable pageable) {
 
         String jwt = (String) SecurityContextHolder.getContext().getAuthentication().getDetails();
 
         String st = searchText.orElse(null);
-        String mn = moduleName.orElse(null);
+        String moduleName = null;
 
-        return contactApi.findContacts(st, mn, pageable, jwt );
+        if (useModuleName && !contactModuleName.isEmpty()) moduleName = contactModuleName;
+
+        return contactApi.findContacts(st, moduleName, pageable, jwt );
     }
 
 }
diff --git a/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/service/DistributionGroupMemberService.java b/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/service/DistributionGroupMemberService.java
index 166752a..2955150 100644
--- a/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/service/DistributionGroupMemberService.java
+++ b/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/service/DistributionGroupMemberService.java
@@ -102,11 +102,14 @@
         distributionGroupMemberToSave.setUuid(UUID.randomUUID());
         distributionGroupMemberToSave.setTblDistributionGroup(tblDistributionGroup);
 
+        if ( !checkUniqueContactForGroupMemberForInsert(tblDistributionGroup.getId(), distributionGroupMemberToSave.getContactId())) {
+            throw new OperationDeniedException(OperationType.INSERT, "distribution.group.member.already.existing.for.group");
+        }
+
         TblDistributionGroupMember savedDistributionGroupMember = distributionGroupMemberRepository.save(distributionGroupMemberToSave);
         return distributionGroupMemberMapper.toDistributionGroupMemberDto(savedDistributionGroupMember);
     }
 
-
     @Transactional
     public void deleteDistributionGroupMember(UUID groupUuid, UUID memberUuid) {
         TblDistributionGroup existingDistributionGroup = distributionGroupRepository.findByUuid(groupUuid)
@@ -139,6 +142,11 @@
         return distributionGroupMemberMapper.toDistributionGroupMemberDto(savedMember);
     }
 
+    private boolean checkUniqueContactForGroupMemberForInsert( Long distributionGroupId, UUID contactId){
+       Long result = distributionGroupMemberRepository.countByDistributionGroupIdAndContactId(distributionGroupId, contactId);
+       return result==0;
+    }
+
     private boolean checkUniqueContactForGroupMemberForUpdate( Long distributionGroupId, UUID contactId, UUID memberUuid){
         Long result = distributionGroupMemberRepository.countByDistributionGroupIdAndContactIdAndIsNotSame(distributionGroupId, contactId, memberUuid) ;
         return result==0;
@@ -152,9 +160,9 @@
         if( contact == null ) {
             return groupMemberDto;
         }
-        completeDto.setFirstName(contact.getFirstName());
-        completeDto.setLastName(contact.getLastName());
+        completeDto.setName(contact.getName());
         completeDto.setEmail(contact.getEmail());
+        completeDto.setMainAddress(contact.getMainAddress());
 
         List<CommunicationDto> communicationDtoList = contactApi.getContactCommunications(groupMemberDto.getContactId(), jwt);
         if( communicationDtoList != null ) {
diff --git a/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/viewmodel/DistributionGroupMemberDto.java b/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/viewmodel/DistributionGroupMemberDto.java
index 6ecf426..cf28340 100644
--- a/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/viewmodel/DistributionGroupMemberDto.java
+++ b/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/viewmodel/DistributionGroupMemberDto.java
@@ -30,10 +30,10 @@
     private String distributionGroup;
 
     private UUID contactId;
-    private String firstName;
-    private String lastName;
+    private String name;
     private String email;
     private String mobileNumber;
+    private String mainAddress;
 
 }
 
diff --git a/gfsBackendService/src/main/resources/application.yml b/gfsBackendService/src/main/resources/application.yml
index 08fcda5..b04cf92 100644
--- a/gfsBackendService/src/main/resources/application.yml
+++ b/gfsBackendService/src/main/resources/application.yml
@@ -46,6 +46,8 @@
     name: contactService
     communicationType:
       mobile: Mobil
+    useModuleNameForFilter: false
+    moduleName: Störungsinformationstool
 
 authNAuthService:
   ribbon:
diff --git a/gfsBackendService/src/main/resources/application_localdev.yml b/gfsBackendService/src/main/resources/application_localdev.yml
index 9a3c583..c12931e 100644
--- a/gfsBackendService/src/main/resources/application_localdev.yml
+++ b/gfsBackendService/src/main/resources/application_localdev.yml
@@ -50,6 +50,8 @@
     name: contactService
     communicationType:
       mobile: Mobil
+    useModuleNameForFilter: false
+    moduleName: Störungsinformationstool DEV
 
 authNAuthService:
   ribbon:
diff --git a/gfsBackendService/src/test/java/org/eclipse/openk/gridfailureinformation/service/DistributionGroupServiceMemberTest.java b/gfsBackendService/src/test/java/org/eclipse/openk/gridfailureinformation/service/DistributionGroupServiceMemberTest.java
index b54ff87..09f9571 100644
--- a/gfsBackendService/src/test/java/org/eclipse/openk/gridfailureinformation/service/DistributionGroupServiceMemberTest.java
+++ b/gfsBackendService/src/test/java/org/eclipse/openk/gridfailureinformation/service/DistributionGroupServiceMemberTest.java
@@ -16,6 +16,7 @@
 
 import org.eclipse.openk.gridfailureinformation.config.TestConfiguration;
 import org.eclipse.openk.gridfailureinformation.exceptions.NotFoundException;
+import org.eclipse.openk.gridfailureinformation.exceptions.OperationDeniedException;
 import org.eclipse.openk.gridfailureinformation.model.TblDistributionGroup;
 import org.eclipse.openk.gridfailureinformation.model.TblDistributionGroupMember;
 import org.eclipse.openk.gridfailureinformation.repository.DistributionGroupMemberRepository;
@@ -39,8 +40,7 @@
 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.any;
-import static org.mockito.ArgumentMatchers.isA;
+import static org.mockito.ArgumentMatchers.*;
 import static org.mockito.Mockito.times;
 import static org.mockito.Mockito.when;
 
@@ -91,7 +91,6 @@
         assertEquals(dto.getUuid(), dto.getUuid());
     }
 
-
     @Test
     public void shouldThrowExceptionWhenFailureNotFound() {
         TblDistributionGroupMember groupMember = MockDataHelper.mockTblDistributionGroupMember();
@@ -117,6 +116,20 @@
     }
 
     @Test
+    public void shouldNotInsertMember_Exception_Member_Exists() {
+        DistributionGroupMemberDto memberDto = MockDataHelper.mockDistributionGroupMemberDto();
+        TblDistributionGroupMember tblDistributionGroupMember = MockDataHelper.mockTblDistributionGroupMember();
+
+        TblDistributionGroup tblDistributionGroup = MockDataHelper.mockTblDistributionGroup();
+
+        when(distributionGroupRepository.findByUuid(any(UUID.class))).thenReturn(Optional.of(tblDistributionGroup));
+        when(distributionGroupMemberRepository.countByDistributionGroupIdAndContactId(anyLong(),any(UUID.class))).thenReturn(4L);
+        when(distributionGroupMemberRepository.save(any(TblDistributionGroupMember.class))).thenReturn(tblDistributionGroupMember);
+
+        assertThrows(OperationDeniedException.class, () -> distributionGroupMemberService.insertDistributionGroupMember(UUID.randomUUID(), memberDto));
+    }
+
+    @Test
     public void shouldDeleteDistributionGroupMember() {
         TblDistributionGroupMember tblDistributionGroupMember = MockDataHelper.mockTblDistributionGroupMember();
         TblDistributionGroup tblDistributionGroup = MockDataHelper.mockTblDistributionGroup();
@@ -155,7 +168,6 @@
         when(distributionGroupRepository.findByUuid(any(UUID.class))).thenReturn(Optional.empty());
         when(distributionGroupMemberRepository.save(any(TblDistributionGroupMember.class))).thenReturn(tblDistributionGroupMember);
 
-
         when(distributionGroupMemberRepository.save(any(TblDistributionGroupMember.class)))
                 .then((Answer<TblDistributionGroupMember>) invocation -> {
                     Object[] args = invocation.getArguments();
@@ -165,5 +177,4 @@
 
     }
 
-
 }
diff --git a/gfsBackendService/src/test/java/org/eclipse/openk/gridfailureinformation/support/MockDataHelper.java b/gfsBackendService/src/test/java/org/eclipse/openk/gridfailureinformation/support/MockDataHelper.java
index cbf84f8..cd2d05d 100644
--- a/gfsBackendService/src/test/java/org/eclipse/openk/gridfailureinformation/support/MockDataHelper.java
+++ b/gfsBackendService/src/test/java/org/eclipse/openk/gridfailureinformation/support/MockDataHelper.java
@@ -1064,6 +1064,7 @@
     public static TblDistributionGroup mockTblDistributionGroup(){
 
         TblDistributionGroup tblDistributionGroup = new TblDistributionGroup();
+        tblDistributionGroup.setId(1L);
         tblDistributionGroup.setUuid(UUID.randomUUID());
         tblDistributionGroup.setName("Testverteiler - Abteilung intern");
         tblDistributionGroup.setDistributionText("Liebe Kollegen blabla ...");
@@ -1074,6 +1075,7 @@
     public static TblDistributionGroup mockTblDistributionGroup2(){
 
         TblDistributionGroup tblDistributionGroup = new TblDistributionGroup();
+        tblDistributionGroup.setId(2L);
         tblDistributionGroup.setUuid(UUID.randomUUID());
         tblDistributionGroup.setName("Testverteiler - Gruppe intern");
         tblDistributionGroup.setDistributionText("Liebste Kollegen blabla ...");
