Index: branches/WebJobManager/HeuristicLab.Clients.Hive.WebJobManager/Services/Imports/AccessAdministrationClient.cs
===================================================================
--- branches/WebJobManager/HeuristicLab.Clients.Hive.WebJobManager/Services/Imports/AccessAdministrationClient.cs	(revision 13741)
+++ branches/WebJobManager/HeuristicLab.Clients.Hive.WebJobManager/Services/Imports/AccessAdministrationClient.cs	(revision 13742)
@@ -27,4 +27,5 @@
 using HeuristicLab.Clients.Hive.WebJobManager.ViewModels;
 using HeuristicLab.Clients.Hive.WebJobManager.Services;
+using System.Collections.Generic;
 
 namespace HeuristicLab.Clients.Access.Administration
@@ -169,4 +170,5 @@
         }
 
+        /* BROKEN 
         public void DeleteUserGroup(UserGroup u)
         {
@@ -179,5 +181,5 @@
             ExecuteActionAsync(deleteUserGroupAction, exceptionCallback);
         }
-
+        */
         public void DeleteRole(Role u)
         {
@@ -233,21 +235,102 @@
         #endregion
 
+        #region User
+
+        public string resetPassword(Guid id)
+        {
+            return CallAccessService<string>(s => s.ResetPassword(id));
+        }
+        public Guid addUser(Access.User u)
+        {
+            return CallAccessService(s => s.AddUser(u).Id);
+        }
+        
+        public void updateUser(Access.User u)
+        {
+            
+             CallAccessService(s => s.UpdateUser(u));
+        }
+        #endregion
+
+        #region Group
+        public Guid addGroup(Access.UserGroup g)
+        {
+            return CallAccessService(s => s.AddUserGroup(g));
+        }
+        public void updateGroup(UserGroup g)
+        {
+            CallAccessService(s => s.UpdateUserGroup(g));
+        }
+        public List<Access.UserGroup> getSubscribedGroups(Guid id)
+        {
+            var maps = CallAccessService(s => s.GetUserGroupMapping());
+            maps = maps.FindAll(x => x.Child == id);
+
+            RefreshUserGroups();
+            RefreshUsers();
+
+            List<Access.UserGroup> members = new List<Access.UserGroup>();
+            foreach (var map in maps)
+            {
+                    UserGroup g = Groups.Find(x => x.Id == map.Parent);
+                    if (g != null)
+                    {
+                        members.Add( g);
+                    }
+            }
+            return members;
+        }
+        public List<Access.UserGroupBase> getGroupMembers(Guid id)
+        {
+            var maps = CallAccessService(s => s.GetUserGroupMapping());
+            maps = maps.FindAll(x => x.Parent == id);
+
+            RefreshUserGroups();
+            RefreshUsers();
+
+            List<Access.UserGroupBase> members = new List<Access.UserGroupBase>();
+            foreach (var map in maps)
+            {
+                User t = users.Find(x => x.Id == map.Child);
+                if (t == null)
+                {
+                    UserGroup g = Groups.Find(x => x.Id == map.Child);
+                    if (g != null)
+                    {
+                        members.Insert(0,g);//Groups always in the front
+                    }
+                }
+                else
+                {
+                    members.Add(t);//members in the back
+                }
+            }
+            return members;
+        }
+
+        public void deleteUserGroup(UserGroup group)
+        {
+            deleteAllMembers(group);
+            CallAccessService(s => s.DeleteUserGroup(group));
+        }
+        private void deleteAllMembers(UserGroup group)
+        {
+            var list = getGroupMembers(group.Id);
+            foreach (var member in list)
+            {//Empties all member connections
+                CallAccessService(s => s.RemoveUserGroupBaseFromGroup(member, group));
+            }
+        }
+        public void addMember(UserGroupBase member, UserGroup group)
+        {
+            CallAccessService(s => s.AddUserGroupBaseToGroup(member, group));
+        }
+        public void deleteMember(UserGroupBase member,UserGroup group)
+        {
+            CallAccessService(s => s.RemoveUserGroupBaseFromGroup(member, group));
+        }
+        #endregion
+
         #region Helpers
-        public string resetPassword(Guid id)
-        {
-            return CallAccessService<string>(s => s.ResetPassword(id));
-        }
-        public Guid addUser(Access.User u)
-        {
-            return CallAccessService(s => s.AddUser(u).Id);
-        }
-        public void updateUser(Access.User u)
-        {
-             CallAccessService(s => s.UpdateUser(u));
-        }
-        public void deleteUser(Access.User u)
-        {
-            CallAccessService(s => s.DeleteUser(u));
-        }
         private void getAccessClient()
         {
