diff --git a/smp-angular/src/app/edit/edit-group/edit-group.component.html b/smp-angular/src/app/edit/edit-group/edit-group.component.html
index 6d312986d90e6d3b8be5ccfab8a77c9a29e219d7..7437b134c52e1cce7fe8605f423ae59a544c83f7 100644
--- a/smp-angular/src/app/edit/edit-group/edit-group.component.html
+++ b/smp-angular/src/app/edit/edit-group/edit-group.component.html
@@ -16,7 +16,7 @@
       </mat-tab>
       <mat-tab>
         <ng-template mat-tab-label><smp-label icon="article" label="Resources"></smp-label></ng-template>
-        <group-resource-panel
+        <group-resource-panel #groupResourcePanel
           [domainResourceDefs]="_selectedDomainResourceDef"
           [domain]="selectedDomain"
           [group]="selectedGroup"
@@ -47,7 +47,7 @@
     <mat-select placeholder="Select group"
                 matTooltip="Select group."
                 id="group_id"
-                [value]="selectedGroup"
+                [(value)]="selectedGroup"
                 required>
       <mat-option *ngFor="let group of groupList"
                   [value]="group">{{group.groupName}}</mat-option>
diff --git a/smp-angular/src/app/edit/edit-group/edit-group.component.ts b/smp-angular/src/app/edit/edit-group/edit-group.component.ts
index adde53c8a6017339228de883ddd11aa668e29081..4f645f5bda18f00bf82fe2440efe773276205dc5 100644
--- a/smp-angular/src/app/edit/edit-group/edit-group.component.ts
+++ b/smp-angular/src/app/edit/edit-group/edit-group.component.ts
@@ -1,4 +1,4 @@
-import {AfterViewInit, Component, Input, ViewChild} from '@angular/core';
+import {AfterViewInit, Component, EventEmitter, Input, Output, ViewChild} from '@angular/core';
 import {BeforeLeaveGuard} from "../../window/sidenav/navigation-on-leave-guard";
 import {MatPaginator} from "@angular/material/paginator";
 import {AlertMessageService} from "../../common/alert-message/alert-message.service";
@@ -8,6 +8,8 @@ import {EditGroupService} from "./edit-group.service";
 import {GroupRo} from "../../common/model/group-ro.model";
 import {MemberTypeEnum} from "../../common/enums/member-type.enum";
 import {ResourceDefinitionRo} from "../../system-settings/admin-extension/resource-definition-ro.model";
+import {GroupResourcePanelComponent} from "./group-resource-panel/group-resource-panel.component";
+import {MembershipPanelComponent} from "../../common/panels/membership-panel/membership-panel.component";
 
 
 @Component({
@@ -16,6 +18,10 @@ import {ResourceDefinitionRo} from "../../system-settings/admin-extension/resour
   styleUrls: ['./edit-group.component.css']
 })
 export class EditGroupComponent implements AfterViewInit, BeforeLeaveGuard {
+
+  @Output() onSelectedGroup: EventEmitter<GroupRo> = new EventEmitter<GroupRo>();
+
+
   groupMembershipType: MemberTypeEnum = MemberTypeEnum.GROUP;
   domainList: DomainRo[] = [];
   groupList: GroupRo[] = [];
diff --git a/smp-angular/src/app/edit/edit-group/group-resource-panel/group-resource-panel.component.ts b/smp-angular/src/app/edit/edit-group/group-resource-panel/group-resource-panel.component.ts
index 3b7d1b88376d32520f040495806cdd23a4fbe777..60e31262f708e6583aba6a64a2c6ee8db45e5abd 100644
--- a/smp-angular/src/app/edit/edit-group/group-resource-panel/group-resource-panel.component.ts
+++ b/smp-angular/src/app/edit/edit-group/group-resource-panel/group-resource-panel.component.ts
@@ -22,6 +22,8 @@ import {VisibilityEnum} from "../../../common/enums/visibility.enum";
 })
 export class GroupResourcePanelComponent implements BeforeLeaveGuard {
 
+
+
   title: string = "Group resources";
   private _group: GroupRo;
   @Input() resource: ResourceRo;
@@ -47,7 +49,7 @@ export class GroupResourcePanelComponent implements BeforeLeaveGuard {
     }
     this._group = value;
     this.title = "Group resources" + (!!this._group?": [" +this._group.groupName+"]":"")
-    if (!!value) {
+    if (!!this._group) {
       this.loadGroupResources();
     } else {
       this.isLoadingResults = false;
@@ -122,7 +124,7 @@ export class GroupResourcePanelComponent implements BeforeLeaveGuard {
         group: this._group,
         domain: this.domain,
         domainResourceDefs: this.domainResourceDefs,
-        formTitle: "Group details dialog"
+        formTitle: "Resource details dialog"
       }
     }).afterClosed().subscribe(value => {
       this.refresh();
diff --git a/smp-angular/src/app/edit/edit-group/group-resource-panel/resource-dialog/resource-dialog.component.html b/smp-angular/src/app/edit/edit-group/group-resource-panel/resource-dialog/resource-dialog.component.html
index 75e7b4a7e8d8d69db2d9ca6b1fc5c3fbdd5426bd..6acdab838e64ce39a44230bc1b039b90a0155ee2 100644
--- a/smp-angular/src/app/edit/edit-group/group-resource-panel/resource-dialog/resource-dialog.component.html
+++ b/smp-angular/src/app/edit/edit-group/group-resource-panel/resource-dialog/resource-dialog.component.html
@@ -24,7 +24,7 @@
     </mat-form-field>
 
     <mat-form-field  style="width: 100%">
-      <mat-label>Group description</mat-label>
+      <mat-label>Resource scheme</mat-label>
       <input id="identifierScheme_id" type="text" matInput
              formControlName="identifierScheme"
              >
@@ -32,7 +32,7 @@
 
 
     <mat-form-field style="width:100%">
-      <mat-label>Group visibility</mat-label>
+      <mat-label>Resource visibility</mat-label>
       <mat-select placeholder="Resource visibility"
                   formControlName="visibility"
                   matTooltip="Resource visibility."
diff --git a/smp-angular/src/app/edit/edit-resources/edit-resource.component.html b/smp-angular/src/app/edit/edit-resources/edit-resource.component.html
index ea6047654c858afa01d54cfafe77872541e3f69c..532a7898ce8cbd4bd590c3a5b83f629c1d4cac11 100644
--- a/smp-angular/src/app/edit/edit-resources/edit-resource.component.html
+++ b/smp-angular/src/app/edit/edit-resources/edit-resource.component.html
@@ -50,7 +50,7 @@
     <mat-select placeholder="Select domain"
                 matTooltip="Select domain."
                 id="domain_id"
-                [value]="selectedDomain"
+                [(value)]="selectedDomain"
                 required>
       <mat-option *ngFor="let domain of domainList"
                   [value]="domain"
@@ -66,7 +66,7 @@
     <mat-select placeholder="Select group"
                 matTooltip="Select group."
                 id="group_id"
-                [value]="selectedGroup"
+                [(value)]="selectedGroup"
                 required>
       <mat-option *ngFor="let group of groupList"
                   [value]="group">{{group.groupName}}</mat-option>
diff --git a/smp-angular/src/app/edit/edit-resources/edit-resource.component.ts b/smp-angular/src/app/edit/edit-resources/edit-resource.component.ts
index 620b490673685561d565c5c99e31b1b8ac2a676b..9d7f5fc6adadb440b44b68d3fddeb0b09a2e2925 100644
--- a/smp-angular/src/app/edit/edit-resources/edit-resource.component.ts
+++ b/smp-angular/src/app/edit/edit-resources/edit-resource.component.ts
@@ -113,7 +113,7 @@ export class EditResourceComponent implements AfterViewInit, BeforeLeaveGuard {
   }
 
   refreshResources() {
-    if (!this.selectedGroup) {
+    if (!this._selectedGroup) {
       this.updateResourceList([]);
       return;
     }
@@ -127,8 +127,6 @@ export class EditResourceComponent implements AfterViewInit, BeforeLeaveGuard {
       }, (error: any) => {
         this.alertService.error(error.error?.errorDescription)
       });
-
-
   }
 
   refreshDomainsResourceDefinitions() {
diff --git a/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/data/model/DBDomain.java b/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/data/model/DBDomain.java
index fb791616ff095fb7aa8948ff90d06f1599c2b302..43ea855ca694339b32eeb2869b4199545009c4dc 100644
--- a/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/data/model/DBDomain.java
+++ b/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/data/model/DBDomain.java
@@ -42,30 +42,30 @@ import static eu.europa.ec.edelivery.smp.data.dao.QueryNames.*;
         query = "update SMP_DOMAIN set SIGNATURE_KEY_ALIAS=:alias " +
                 "WHERE SML_CLIENT_KEY_ALIAS IS null")
 
-@NamedQuery(name = QUERY_DOMAIN_BY_USER_ROLES_COUNT, query = "SELECT count(c) FROM DBDomain c JOIN DBDomainMember dm ON c.id = dm.domain.id " +
+@NamedQuery(name = QUERY_DOMAIN_BY_USER_ROLES_COUNT, query = "SELECT count( distinct c) FROM DBDomain c JOIN DBDomainMember dm ON c.id = dm.domain.id " +
         " WHERE dm.role in (:membership_roles) and dm.user.id= :user_id")
 
-@NamedQuery(name = QUERY_DOMAIN_BY_USER_ROLES, query = "SELECT c FROM DBDomain c JOIN DBDomainMember dm ON c.id = dm.domain.id " +
+@NamedQuery(name = QUERY_DOMAIN_BY_USER_ROLES, query = "SELECT distinct c FROM DBDomain c JOIN DBDomainMember dm ON c.id = dm.domain.id " +
         " WHERE dm.role in (:membership_roles) and dm.user.id= :user_id")
 
-@NamedQuery(name = QUERY_DOMAIN_BY_USER_GROUP_ROLES_COUNT, query = "SELECT count(d) FROM DBDomain d " +
+@NamedQuery(name = QUERY_DOMAIN_BY_USER_GROUP_ROLES_COUNT, query = "SELECT count( distinct d) FROM DBDomain d " +
         " JOIN DBGroup g ON d.id = g.domain.id " +
         " JOIN DBGroupMember gm ON g.id = gm.group.id " +
         " WHERE gm.role in (:membership_roles) and gm.user.id= :user_id")
 
-@NamedQuery(name = QUERY_DOMAIN_BY_USER_GROUP_ROLES, query = "SELECT d FROM DBDomain d " +
+@NamedQuery(name = QUERY_DOMAIN_BY_USER_GROUP_ROLES, query = "SELECT distinct d FROM DBDomain d " +
         " JOIN DBGroup g ON d.id = g.domain.id " +
         " JOIN DBGroupMember gm ON g.id = gm.group.id " +
         " WHERE gm.role in (:membership_roles) and gm.user.id= :user_id")
 
-@NamedQuery(name = QUERY_DOMAIN_BY_USER_RESOURCE_ROLES_COUNT, query = "SELECT count(d) FROM DBDomain d " +
+@NamedQuery(name = QUERY_DOMAIN_BY_USER_RESOURCE_ROLES_COUNT, query = "SELECT count(distinct d) FROM DBDomain d " +
         " JOIN DBGroup g ON d.id = g.domain.id " +
         " JOIN DBResource r ON  g.id = r.group.id " +
         " JOIN DBResourceMember rm ON r.id = rm.resource.id " +
         " WHERE rm.role in (:membership_roles) and rm.user.id= :user_id")
 
 
-@NamedQuery(name = QUERY_DOMAIN_BY_USER_RESOURCE_ROLES, query = "SELECT d FROM DBDomain d " +
+@NamedQuery(name = QUERY_DOMAIN_BY_USER_RESOURCE_ROLES, query = "SELECT distinct d FROM DBDomain d " +
         " JOIN DBGroup g ON d.id = g.domain.id " +
         " JOIN DBResource r ON  g.id = r.group.id " +
         " JOIN DBResourceMember rm ON r.id = rm.resource.id " +
diff --git a/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/services/ui/UIGroupPublicService.java b/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/services/ui/UIGroupPublicService.java
index 53c37efd16691d7a324a905613e7e2cb5f69ad91..cd9168f4c3b0725e4263f49d1e5f7016d6f80150 100644
--- a/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/services/ui/UIGroupPublicService.java
+++ b/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/services/ui/UIGroupPublicService.java
@@ -5,9 +5,11 @@ import eu.europa.ec.edelivery.smp.data.enums.MembershipRoleType;
 import eu.europa.ec.edelivery.smp.data.model.DBDomain;
 import eu.europa.ec.edelivery.smp.data.model.DBGroup;
 import eu.europa.ec.edelivery.smp.data.model.user.DBGroupMember;
+import eu.europa.ec.edelivery.smp.data.model.user.DBResourceMember;
 import eu.europa.ec.edelivery.smp.data.model.user.DBUser;
 import eu.europa.ec.edelivery.smp.data.ui.GroupRO;
 import eu.europa.ec.edelivery.smp.data.ui.MemberRO;
+import eu.europa.ec.edelivery.smp.data.ui.ResourceRO;
 import eu.europa.ec.edelivery.smp.data.ui.ServiceResult;
 import eu.europa.ec.edelivery.smp.exceptions.ErrorCode;
 import eu.europa.ec.edelivery.smp.exceptions.SMPRuntimeException;
@@ -101,7 +103,7 @@ public class UIGroupPublicService extends UIServiceBase<DBGroup, GroupRO> {
     }
 
     @Transactional
-    public GroupRO createGroupForDomain(Long domainId, GroupRO groupRO) {
+    public GroupRO createGroupForDomain(GroupRO groupRO, Long domainId, Long userId) {
         LOG.info("create group [{}] to domain [{}]", groupRO, domainId);
 
         Optional<DBGroup> optGroup = groupDao.getGroupByNameAndDomain(groupRO.getGroupName(), domainId);
@@ -118,6 +120,13 @@ public class UIGroupPublicService extends UIServiceBase<DBGroup, GroupRO> {
         // to get ID for conversion
         groupDao.persistFlushDetach(group);
 
+        // create first member as admin user
+        DBUser user = userDao.find(userId);
+        DBGroupMember dbMember = new DBGroupMember();
+        dbMember.setRole(MembershipRoleType.ADMIN);
+        dbMember.setGroup(group);
+        dbMember.setUser(user);
+        groupMemberDao.persist(dbMember);
         return conversionService.convert(group, GroupRO.class);
     }
 
diff --git a/smp-webapp/src/main/java/eu/europa/ec/edelivery/smp/ui/edit/GroupEditController.java b/smp-webapp/src/main/java/eu/europa/ec/edelivery/smp/ui/edit/GroupEditController.java
index 94d03743f4b3b7d025c420ec18d473bd3c173e9a..6b9bba221d1ab4a9471d8f989e91c6bb4cc3778c 100644
--- a/smp-webapp/src/main/java/eu/europa/ec/edelivery/smp/ui/edit/GroupEditController.java
+++ b/smp-webapp/src/main/java/eu/europa/ec/edelivery/smp/ui/edit/GroupEditController.java
@@ -90,7 +90,8 @@ public class GroupEditController {
             @RequestBody GroupRO group) {
         logAdminAccess("putGroupForDomain");
         Long domainId = SessionSecurityUtils.decryptEntityId(domainEncId);
-        return uiGroupPublicService.createGroupForDomain(domainId, group);
+        Long userId = SessionSecurityUtils.decryptEntityId(userEncId);
+        return uiGroupPublicService.createGroupForDomain(group, domainId, userId);
     }
 
     @PostMapping(path = SUB_CONTEXT_PATH_EDIT_GROUP_UPDATE, produces = MimeTypeUtils.APPLICATION_JSON_VALUE, consumes = MimeTypeUtils.APPLICATION_JSON_VALUE)
diff --git a/smp-webapp/src/main/java/eu/europa/ec/edelivery/smp/ui/edit/ResourceEditController.java b/smp-webapp/src/main/java/eu/europa/ec/edelivery/smp/ui/edit/ResourceEditController.java
index 8e2e346e9d41d9f2991b76bc117368b0a09f3c30..581305b6d3368fc63208f4b5f94d9b470a5e6c7a 100644
--- a/smp-webapp/src/main/java/eu/europa/ec/edelivery/smp/ui/edit/ResourceEditController.java
+++ b/smp-webapp/src/main/java/eu/europa/ec/edelivery/smp/ui/edit/ResourceEditController.java
@@ -51,7 +51,7 @@ public class ResourceEditController {
      */
     @GetMapping(produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
     @PreAuthorize("@smpAuthorizationService.isCurrentlyLoggedIn(#userEncId) " +
-            "and @smpAuthorizationService.isAnyGroupResourceAdministrator(#groupEncId)")
+            "and (@smpAuthorizationService.isGroupAdministrator(#groupEncId) or  @smpAuthorizationService.isAnyGroupResourceAdministrator(#groupEncId))")
     public ServiceResult<ResourceRO> getResourcesForGroup(@PathVariable(PATH_PARAM_ENC_USER_ID) String userEncId,
                                                           @PathVariable(PATH_PARAM_ENC_DOMAIN_ID) String domainEncId,
                                                           @PathVariable(PATH_PARAM_ENC_GROUP_ID) String groupEncId,