Index: /trunk/sources/HeuristicLab.DataAccess.ADOHelper/3.2/ManyToManyRelation.cs
===================================================================
--- /trunk/sources/HeuristicLab.DataAccess.ADOHelper/3.2/ManyToManyRelation.cs	(revision 1655)
+++ /trunk/sources/HeuristicLab.DataAccess.ADOHelper/3.2/ManyToManyRelation.cs	(revision 1656)
@@ -8,4 +8,6 @@
   public class ManyToManyRelation: PersistableObject {
     public Guid Id2 { get; set; }
+
+    public IList<object> AdditionalAttributes { get; set; }
   }
 }
Index: /trunk/sources/HeuristicLab.DataAccess.ADOHelper/3.2/ManyToManyRelationHelper.cs
===================================================================
--- /trunk/sources/HeuristicLab.DataAccess.ADOHelper/3.2/ManyToManyRelationHelper.cs	(revision 1655)
+++ /trunk/sources/HeuristicLab.DataAccess.ADOHelper/3.2/ManyToManyRelationHelper.cs	(revision 1656)
@@ -22,8 +22,15 @@
     }
 
-    public void UpdateRelationships(Guid objectA, IList<Guid> relationships) {
+    public void UpdateRelationships(Guid objectA,
+      IList<Guid> relationships) {
+      UpdateRelationships(objectA, relationships, null);
+    }
+
+    public void UpdateRelationships(Guid objectA, 
+      IList<Guid> relationships,
+      IList<object> additionalAttributes) {
       //firstly check for created references
       IList<Guid> existing =
-        this.GetRelationships(objectA);
+        this.GetRelationships(objectA); 
 
       foreach (Guid relationship in relationships) {
@@ -33,4 +40,7 @@
           rel.Id = objectA;
           rel.Id2 = relationship;
+          if(additionalAttributes != null)
+            rel.AdditionalAttributes = 
+              new List<object>(additionalAttributes);
           
           RowT inserted = 
Index: /trunk/sources/HeuristicLab.Hive.Server.ADODataAccess/3.2/ClientGroupAdapter.cs
===================================================================
--- /trunk/sources/HeuristicLab.Hive.Server.ADODataAccess/3.2/ClientGroupAdapter.cs	(revision 1655)
+++ /trunk/sources/HeuristicLab.Hive.Server.ADODataAccess/3.2/ClientGroupAdapter.cs	(revision 1656)
@@ -88,5 +88,5 @@
           ManyToManyRelationHelper.GetRelationships(clientGroup.Id);
 
-       clientGroup.Resources.Clear();
+        clientGroup.Resources.Clear();
         foreach(Guid resource in resources) {
           Resource res =
Index: /trunk/sources/HeuristicLab.Hive.Server.ADODataAccess/3.2/TableAdapterWrapper/ClientGroupAdapterWrapper.cs
===================================================================
--- /trunk/sources/HeuristicLab.Hive.Server.ADODataAccess/3.2/TableAdapterWrapper/ClientGroupAdapterWrapper.cs	(revision 1655)
+++ /trunk/sources/HeuristicLab.Hive.Server.ADODataAccess/3.2/TableAdapterWrapper/ClientGroupAdapterWrapper.cs	(revision 1656)
@@ -24,5 +24,4 @@
 
       data.AddClientGroupRow(row);
-      TransactionalAdapter.Update(row);
 
       return row;
Index: /trunk/sources/HeuristicLab.Hive.Server.ADODataAccess/3.2/TableAdapterWrapper/ClientGroup_ResourceAdapterWrapper.cs
===================================================================
--- /trunk/sources/HeuristicLab.Hive.Server.ADODataAccess/3.2/TableAdapterWrapper/ClientGroup_ResourceAdapterWrapper.cs	(revision 1655)
+++ /trunk/sources/HeuristicLab.Hive.Server.ADODataAccess/3.2/TableAdapterWrapper/ClientGroup_ResourceAdapterWrapper.cs	(revision 1656)
@@ -25,5 +25,4 @@
 
       data.AddClientGroup_ResourceRow(row);
-      TransactionalAdapter.Update(row);
 
       return row;
Index: /trunk/sources/HeuristicLab.Hive.Server.ADODataAccess/3.2/TableAdapterWrapper/RequiredPluginsAdapterWrapper.cs
===================================================================
--- /trunk/sources/HeuristicLab.Hive.Server.ADODataAccess/3.2/TableAdapterWrapper/RequiredPluginsAdapterWrapper.cs	(revision 1655)
+++ /trunk/sources/HeuristicLab.Hive.Server.ADODataAccess/3.2/TableAdapterWrapper/RequiredPluginsAdapterWrapper.cs	(revision 1656)
@@ -25,5 +25,4 @@
 
       data.AddRequiredPluginsRow(row);
-      TransactionalAdapter.Update(row);
 
       return row;
Index: /trunk/sources/HeuristicLab.Hive.Server.Core/3.2/DbTestApp.cs
===================================================================
--- /trunk/sources/HeuristicLab.Hive.Server.Core/3.2/DbTestApp.cs	(revision 1655)
+++ /trunk/sources/HeuristicLab.Hive.Server.Core/3.2/DbTestApp.cs	(revision 1656)
@@ -152,4 +152,51 @@
     }
 
+    private void InsertTestClientGroups() {
+      ISessionFactory factory =
+        ServiceLocator.GetSessionFactory();
+
+      ISession session =
+        factory.GetSessionForCurrentThread();
+
+      ITransaction trans = null;
+
+      try {
+        IClientGroupAdapter clientGroupAdapter =
+        session.GetDataAdapter<ClientGroup, IClientGroupAdapter>();
+
+        trans =
+          session.BeginTransaction();
+
+        ClientInfo client =
+          new ClientInfo();
+        client.Name = "Stefan";
+        client.Login = DateTime.Now;
+
+        ClientInfo client2 =
+          new ClientInfo();
+        client2.Name = "Martin";
+        client2.Login = DateTime.Now;
+
+        ClientGroup group =
+          new ClientGroup();
+        group.Name = "Gruppe1";
+
+        ClientGroup subGroup =
+          new ClientGroup();
+        subGroup.Name = "Untergruppe1";
+        subGroup.Resources.Add(client);
+
+        group.Resources.Add(client2);
+        group.Resources.Add(subGroup);
+
+        clientGroupAdapter.Update(group);
+
+        trans.Commit();
+      }
+      finally {
+        session.EndSession();
+      }
+    }
+
    /* private void TestJobAdapter() {
       IJobAdapter jobAdapter = 
@@ -244,4 +291,5 @@
     public override void Run() {
       TestClientGroupAdapter();
+      //InsertTestClientGroups();
     }      
   }
Index: /trunk/sources/HeuristicLab.Security.ADODataAccess/3.2/HLUserAdapter.cs
===================================================================
--- /trunk/sources/HeuristicLab.Security.ADODataAccess/3.2/HLUserAdapter.cs	(revision 1656)
+++ /trunk/sources/HeuristicLab.Security.ADODataAccess/3.2/HLUserAdapter.cs	(revision 1656)
@@ -0,0 +1,106 @@
+﻿using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using HeuristicLab.DataAccess.ADOHelper;
+using HeuristicLab.Security.Contracts.BusinessObjects;
+using HeuristicLab.Security.DataAccess;
+using HeuristicLab.Security.ADODataAccess.TableAdapterWrapper;
+
+namespace HeuristicLab.Security.ADODataAccess {
+  class HLUserAdapter: DataAdapterBase<
+      dsSecurityTableAdapters.HLUserTableAdapter, 
+      User, 
+      dsSecurity.HLUserRow>,
+      IUserAdapter {
+    public HLUserAdapter() :
+      base(new HLUserAdapterWrapper()) {
+    }
+
+    private IPermissionOwnerAdapter permOwnerAdapter = null;
+
+    private IPermissionOwnerAdapter PermOwnerAdapter {
+      get {
+        if (permOwnerAdapter == null)
+          permOwnerAdapter =
+            this.Session.GetDataAdapter<PermissionOwner, IPermissionOwnerAdapter>();
+
+        return permOwnerAdapter;
+      }
+    }
+
+    protected override dsSecurity.HLUserRow ConvertObj(User user, dsSecurity.HLUserRow row) {
+      if (user != null && row != null) {
+        row.PermissionOwnerId = user.Id;
+
+        return row;
+      } else {
+        return null;
+      }
+    }
+
+    protected override User ConvertRow(dsSecurity.HLUserRow row, User user) {
+      if (user != null && row != null) {
+        /*Parent - permissionOwner*/
+        user.Id = row.PermissionOwnerId;
+        PermOwnerAdapter.GetById(user);
+
+        if (!row.IsLoginNull())
+          user.Login = row.Login;
+        else
+          user.Login = String.Empty;
+
+        if (!row.IsPasswordNull())
+          user.Password = row.Password;
+        else
+          user.Password = String.Empty;
+
+        if (!row.IsMailAddressNull())
+          user.MailAddress = row.MailAddress;
+        else
+          user.MailAddress = String.Empty;
+
+        return user;
+      } else {
+        return null;
+      }
+    }
+
+    #region IUserAdapter Members
+
+    protected override void doUpdate(User user) {
+      if (user != null) {
+        PermOwnerAdapter.Update(user);
+
+        base.doUpdate(user);
+      }
+    }
+
+    protected override bool doDelete(User user) {
+      bool success = false;
+
+      if (user != null) {
+        dsSecurity.HLUserRow row =
+          GetRowById(user.Id);
+
+        if (row != null) {
+          success = base.doDelete(user) &&
+            PermOwnerAdapter.Delete(user);
+        }
+      }
+
+      return success;
+    }
+
+    public User GetByName(string name)
+    {
+      User user = new User();
+      PermissionOwner permOwner =
+        PermOwnerAdapter.GetByName(name);
+
+      return GetById(permOwner.Id);
+    }
+
+    #endregion
+}
+}
Index: /trunk/sources/HeuristicLab.Security.ADODataAccess/3.2/HeuristicLab.Security.ADODataAccess-3.2.csproj
===================================================================
--- /trunk/sources/HeuristicLab.Security.ADODataAccess/3.2/HeuristicLab.Security.ADODataAccess-3.2.csproj	(revision 1655)
+++ /trunk/sources/HeuristicLab.Security.ADODataAccess/3.2/HeuristicLab.Security.ADODataAccess-3.2.csproj	(revision 1656)
@@ -9,5 +9,5 @@
     <OutputType>Library</OutputType>
     <AppDesignerFolder>Properties</AppDesignerFolder>
-    <RootNamespace>HeuristicLab.Security.ADODataAccess_3._2</RootNamespace>
+    <RootNamespace>HeuristicLab.Security.ADODataAccess</RootNamespace>
     <AssemblyName>HeuristicLab.Security.ADODataAccess-3.2</AssemblyName>
     <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
@@ -74,4 +74,8 @@
   <ItemGroup>
     <Compile Include="ADODataAccessPlugin.cs" />
+    <Compile Include="TableAdapterWrapper\PermissionOwner_UserGroupAdapterWrapper.cs" />
+    <Compile Include="UserGroupAdapter.cs" />
+    <Compile Include="HLUserAdapter.cs" />
+    <Compile Include="PermissionOwnerAdapter.cs" />
     <Compile Include="dsSecurity.Designer.cs">
       <AutoGen>True</AutoGen>
@@ -79,4 +83,5 @@
       <DependentUpon>dsSecurity.xsd</DependentUpon>
     </Compile>
+    <Compile Include="PermissionAdapter.cs" />
     <Compile Include="Properties\AssemblyInfo.cs" />
     <Compile Include="Properties\Settings.Designer.cs">
@@ -85,4 +90,8 @@
       <DependentUpon>Settings.settings</DependentUpon>
     </Compile>
+    <Compile Include="TableAdapterWrapper\UserGroupAdapterWrapper.cs" />
+    <Compile Include="TableAdapterWrapper\HLUserAdapterWrapper.cs" />
+    <Compile Include="TableAdapterWrapper\PermissionOwnerAdapterWrapper.cs" />
+    <Compile Include="TableAdapterWrapper\PermissionAdapterWrapper.cs" />
   </ItemGroup>
   <ItemGroup>
@@ -98,4 +107,8 @@
       <Project>{94186A6A-5176-4402-AE83-886557B53CCA}</Project>
       <Name>HeuristicLab.PluginInfrastructure</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.Security.Contracts\3.2\HeuristicLab.Security.Contracts-3.2.csproj">
+      <Project>{D59E852C-F205-4647-8C05-EB9ED1CF44E9}</Project>
+      <Name>HeuristicLab.Security.Contracts-3.2</Name>
     </ProjectReference>
     <ProjectReference Include="..\..\HeuristicLab.Security.DataAccess\3.2\HeuristicLab.Security.DataAccess-3.2.csproj">
Index: /trunk/sources/HeuristicLab.Security.ADODataAccess/3.2/PermissionAdapter.cs
===================================================================
--- /trunk/sources/HeuristicLab.Security.ADODataAccess/3.2/PermissionAdapter.cs	(revision 1656)
+++ /trunk/sources/HeuristicLab.Security.ADODataAccess/3.2/PermissionAdapter.cs	(revision 1656)
@@ -0,0 +1,81 @@
+﻿using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using HeuristicLab.DataAccess.ADOHelper;
+using HeuristicLab.Security.Contracts.BusinessObjects;
+using HeuristicLab.Security.DataAccess;
+using HeuristicLab.Security.ADODataAccess.TableAdapterWrapper;
+
+namespace HeuristicLab.Security.ADODataAccess {
+  class PermissionAdapter: DataAdapterBase<
+      dsSecurityTableAdapters.PermissionTableAdapter, 
+      Permission, 
+      dsSecurity.PermissionRow>,
+      IPermissionAdapter {
+    public PermissionAdapter() :
+      base(new PermissionAdapterWrapper()) {
+    }
+
+    protected override dsSecurity.PermissionRow ConvertObj(Permission perm, 
+      dsSecurity.PermissionRow row) {
+      if (row != null && perm != null) {
+        row.PermissionId = perm.Id;
+        row.Name = perm.Name;
+        row.Description = perm.Description;
+        row.Plugin = perm.Plugin;
+
+        return row;
+      } else {
+        return null;
+      }
+    }
+
+    protected override Permission ConvertRow(dsSecurity.PermissionRow row,
+      Permission perm) {
+      if (row != null && perm != null) {
+        perm.Id = row.PermissionId;
+        if (!row.IsNameNull())
+          perm.Name = row.Name;
+        else
+          perm.Name = String.Empty;
+
+        if (!row.IsDescriptionNull())
+          perm.Description = row.Description;
+        else
+          perm.Description = String.Empty;
+
+        if (!row.IsPluginNull())
+          perm.Plugin = row.Plugin;
+        else
+          perm.Plugin = String.Empty;
+
+        return perm;
+      } else {
+        return null;
+      }
+    }
+
+    #region IPermissionAdapter Members
+
+    public GrantedPermission getPermission(PermissionOwner permissionOwner, 
+      Permission permission, 
+      Guid entityId) {
+      throw new NotImplementedException();
+    }
+
+    public bool grantPermission(Guid permissionOwnerId, 
+      Guid permissionId, 
+      Guid entityId) {
+      throw new NotImplementedException();
+    }
+
+    public bool revokePermission(Guid permissionOwnerId, 
+      Guid permissionId, 
+      Guid entityId) {
+      throw new NotImplementedException();
+    }
+
+    #endregion
+  }
+}
Index: /trunk/sources/HeuristicLab.Security.ADODataAccess/3.2/PermissionOwnerAdapter.cs
===================================================================
--- /trunk/sources/HeuristicLab.Security.ADODataAccess/3.2/PermissionOwnerAdapter.cs	(revision 1656)
+++ /trunk/sources/HeuristicLab.Security.ADODataAccess/3.2/PermissionOwnerAdapter.cs	(revision 1656)
@@ -0,0 +1,140 @@
+﻿using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using HeuristicLab.DataAccess.ADOHelper;
+using HeuristicLab.Security.Contracts.BusinessObjects;
+using HeuristicLab.Security.DataAccess;
+using HeuristicLab.Security.ADODataAccess.TableAdapterWrapper;
+
+namespace HeuristicLab.Security.ADODataAccess {
+  class PermissionOwnerAdapter: DataAdapterBase<
+      dsSecurityTableAdapters.PermissionOwnerTableAdapter, 
+      PermissionOwner, 
+      dsSecurity.PermissionOwnerRow>,
+      IPermissionOwnerAdapter {
+    public PermissionOwnerAdapter() : 
+      base(new PermissionOwnerAdapterWrapper()) {
+    }
+
+    private IUserAdapter userAdapter = null;
+
+    private IUserAdapter UserAdapter {
+      get {
+        if (userAdapter == null)
+          userAdapter =
+            this.Session.GetDataAdapter<User, IUserAdapter>();
+
+        return userAdapter;
+      }
+    }
+
+    private IUserGroupAdapter userGroupAdapter = null;
+
+    private IUserGroupAdapter UserGroupAdapter {
+      get {
+        if (userGroupAdapter == null)
+          userGroupAdapter =
+            this.Session.GetDataAdapter<UserGroup, IUserGroupAdapter>();
+
+        return userGroupAdapter;
+      }
+    }
+
+    protected override dsSecurity.PermissionOwnerRow ConvertObj(PermissionOwner permOwner, 
+      dsSecurity.PermissionOwnerRow row) {
+      if (row != null && permOwner != null) {
+        row.PermissionOwnerId = permOwner.Id;
+        row.Name = permOwner.Name;
+
+        return row;
+      } else {
+        return null;
+      }
+    }
+
+    protected override PermissionOwner ConvertRow(dsSecurity.PermissionOwnerRow row,
+      PermissionOwner permOwner) {
+      if (row != null && permOwner != null) {
+        permOwner.Id = row.PermissionOwnerId;
+
+        if (!row.IsNameNull())
+          permOwner.Name = row.Name;
+        else
+          permOwner.Name = String.Empty;
+
+        return permOwner;
+      } else {
+        return null;
+      }
+    }
+
+    #region IPermissionOwnerAdapter Members
+
+    public PermissionOwner GetByName(string name) {
+      return base.FindSingle(
+        delegate() {
+          return Adapter.GetDataByName(name);
+        });
+    }
+
+    public bool GetById(PermissionOwner permOwner) {
+      if (permOwner != null) {
+        dsSecurity.PermissionOwnerRow row =
+          GetRowById(permOwner.Id);
+
+        if (row != null) {
+          Convert(row, permOwner);
+
+          return true;
+        }
+      }
+
+      return false;
+    }
+
+    #endregion
+
+    #region IPolymorphicDataAdapter<PermissionOwner> Members
+
+    public void UpdatePolymorphic(PermissionOwner obj) {
+      if (obj is User) {
+        UserAdapter.Update(obj as User);
+      } else if (obj is UserGroup) {
+        UserGroupAdapter.Update(obj as UserGroup);
+      } else {
+        this.Update(obj);
+      }
+    }
+
+    public PermissionOwner GetByIdPolymorphic(Guid id) {
+      UserGroup group =
+        UserGroupAdapter.GetById(id);
+
+      if (group != null)
+        return group;
+      else {
+        User user =
+          UserAdapter.GetById(id);
+
+        if (user != null)
+          return user;
+        else {
+          return this.GetById(id);
+        }
+      }
+    }
+
+    public bool DeletePolymorphic(PermissionOwner obj) {
+      if (obj is User) {
+        return UserAdapter.Delete(obj as User);
+      } else if (obj is UserGroup) {
+        return UserGroupAdapter.Delete(obj as UserGroup);
+      } else {
+        return this.Delete(obj);
+      }
+    }
+
+    #endregion
+  }
+}
Index: /trunk/sources/HeuristicLab.Security.ADODataAccess/3.2/Properties/Settings.Designer.cs
===================================================================
--- /trunk/sources/HeuristicLab.Security.ADODataAccess/3.2/Properties/Settings.Designer.cs	(revision 1655)
+++ /trunk/sources/HeuristicLab.Security.ADODataAccess/3.2/Properties/Settings.Designer.cs	(revision 1656)
@@ -9,5 +9,5 @@
 //------------------------------------------------------------------------------
 
-namespace HeuristicLab.Security.ADODataAccess_3._2.Properties {
+namespace HeuristicLab.Security.ADODataAccess.Properties {
     
     
Index: /trunk/sources/HeuristicLab.Security.ADODataAccess/3.2/TableAdapterWrapper/HLUserAdapterWrapper.cs
===================================================================
--- /trunk/sources/HeuristicLab.Security.ADODataAccess/3.2/TableAdapterWrapper/HLUserAdapterWrapper.cs	(revision 1656)
+++ /trunk/sources/HeuristicLab.Security.ADODataAccess/3.2/TableAdapterWrapper/HLUserAdapterWrapper.cs	(revision 1656)
@@ -0,0 +1,50 @@
+﻿using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using HeuristicLab.DataAccess.ADOHelper;
+using System.Data.SqlClient;
+using HeuristicLab.Security.Contracts.BusinessObjects;
+using System.Data.Common;
+
+namespace HeuristicLab.Security.ADODataAccess.TableAdapterWrapper {
+  class HLUserAdapterWrapper :
+   TableAdapterWrapperBase<
+       dsSecurityTableAdapters.HLUserTableAdapter,
+       User,
+       dsSecurity.HLUserRow> {
+    public override void UpdateRow(dsSecurity.HLUserRow row) {
+      TransactionalAdapter.Update(row);
+    }
+
+    public override dsSecurity.HLUserRow
+      InsertNewRow(User user) {
+      dsSecurity.HLUserDataTable data =
+        new dsSecurity.HLUserDataTable();
+
+      dsSecurity.HLUserRow row = data.NewHLUserRow();
+      row.PermissionOwnerId = user.Id;
+      data.AddHLUserRow(row);
+
+      return row;
+    }
+
+    public override IEnumerable<dsSecurity.HLUserRow>
+      FindById(Guid id) {
+      return TransactionalAdapter.GetDataById(id);
+    }
+
+    public override IEnumerable<dsSecurity.HLUserRow>
+      FindAll() {
+      return TransactionalAdapter.GetData();
+    }
+
+    protected override void SetConnection(DbConnection connection) {
+      adapter.Connection = connection as SqlConnection;
+    }
+
+    protected override void SetTransaction(DbTransaction transaction) {
+      adapter.Transaction = transaction as SqlTransaction;
+    }
+  }
+}
Index: /trunk/sources/HeuristicLab.Security.ADODataAccess/3.2/TableAdapterWrapper/PermissionAdapterWrapper.cs
===================================================================
--- /trunk/sources/HeuristicLab.Security.ADODataAccess/3.2/TableAdapterWrapper/PermissionAdapterWrapper.cs	(revision 1656)
+++ /trunk/sources/HeuristicLab.Security.ADODataAccess/3.2/TableAdapterWrapper/PermissionAdapterWrapper.cs	(revision 1656)
@@ -0,0 +1,50 @@
+﻿using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using HeuristicLab.DataAccess.ADOHelper;
+using System.Data.SqlClient;
+using HeuristicLab.Security.Contracts.BusinessObjects;
+using System.Data.Common;
+
+namespace HeuristicLab.Security.ADODataAccess.TableAdapterWrapper {
+  class PermissionAdapterWrapper :
+   TableAdapterWrapperBase<
+       dsSecurityTableAdapters.PermissionTableAdapter,
+       Permission,
+       dsSecurity.PermissionRow> {
+    public override void UpdateRow(dsSecurity.PermissionRow row) {
+      TransactionalAdapter.Update(row);
+    }
+
+    public override dsSecurity.PermissionRow
+      InsertNewRow(Permission permission) {
+      dsSecurity.PermissionDataTable data =
+        new dsSecurity.PermissionDataTable();
+
+      dsSecurity.PermissionRow row = data.NewPermissionRow();
+      row.PermissionId = permission.Id;
+      data.AddPermissionRow(row);
+
+      return row;
+    }
+
+    public override IEnumerable<dsSecurity.PermissionRow>
+      FindById(Guid id) {
+      return TransactionalAdapter.GetDataById(id);
+    }
+
+    public override IEnumerable<dsSecurity.PermissionRow>
+      FindAll() {
+      return TransactionalAdapter.GetData();
+    }
+
+    protected override void SetConnection(DbConnection connection) {
+      adapter.Connection = connection as SqlConnection;
+    }
+
+    protected override void SetTransaction(DbTransaction transaction) {
+      adapter.Transaction = transaction as SqlTransaction;
+    }
+  }
+}
Index: /trunk/sources/HeuristicLab.Security.ADODataAccess/3.2/TableAdapterWrapper/PermissionOwnerAdapterWrapper.cs
===================================================================
--- /trunk/sources/HeuristicLab.Security.ADODataAccess/3.2/TableAdapterWrapper/PermissionOwnerAdapterWrapper.cs	(revision 1656)
+++ /trunk/sources/HeuristicLab.Security.ADODataAccess/3.2/TableAdapterWrapper/PermissionOwnerAdapterWrapper.cs	(revision 1656)
@@ -0,0 +1,50 @@
+﻿using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using HeuristicLab.DataAccess.ADOHelper;
+using System.Data.SqlClient;
+using HeuristicLab.Security.Contracts.BusinessObjects;
+using System.Data.Common;
+
+namespace HeuristicLab.Security.ADODataAccess.TableAdapterWrapper {
+  class PermissionOwnerAdapterWrapper :
+   TableAdapterWrapperBase<
+       dsSecurityTableAdapters.PermissionOwnerTableAdapter,
+       PermissionOwner,
+       dsSecurity.PermissionOwnerRow> {
+    public override void UpdateRow(dsSecurity.PermissionOwnerRow row) {
+      TransactionalAdapter.Update(row);
+    }
+
+    public override dsSecurity.PermissionOwnerRow
+      InsertNewRow(PermissionOwner permission) {
+      dsSecurity.PermissionOwnerDataTable data =
+        new dsSecurity.PermissionOwnerDataTable();
+
+      dsSecurity.PermissionOwnerRow row = data.NewPermissionOwnerRow();
+      row.PermissionOwnerId = permission.Id;
+      data.AddPermissionOwnerRow(row);
+
+      return row;
+    }
+
+    public override IEnumerable<dsSecurity.PermissionOwnerRow>
+      FindById(Guid id) {
+      return TransactionalAdapter.GetDataById(id);
+    }
+
+    public override IEnumerable<dsSecurity.PermissionOwnerRow>
+      FindAll() {
+      return TransactionalAdapter.GetData();
+    }
+
+    protected override void SetConnection(DbConnection connection) {
+      adapter.Connection = connection as SqlConnection;
+    }
+
+    protected override void SetTransaction(DbTransaction transaction) {
+      adapter.Transaction = transaction as SqlTransaction;
+    }
+  }
+}
Index: /trunk/sources/HeuristicLab.Security.ADODataAccess/3.2/TableAdapterWrapper/PermissionOwner_UserGroupAdapterWrapper.cs
===================================================================
--- /trunk/sources/HeuristicLab.Security.ADODataAccess/3.2/TableAdapterWrapper/PermissionOwner_UserGroupAdapterWrapper.cs	(revision 1656)
+++ /trunk/sources/HeuristicLab.Security.ADODataAccess/3.2/TableAdapterWrapper/PermissionOwner_UserGroupAdapterWrapper.cs	(revision 1656)
@@ -0,0 +1,52 @@
+﻿using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using HeuristicLab.DataAccess.ADOHelper;
+using System.Data.SqlClient;
+using HeuristicLab.Security.Contracts.BusinessObjects;
+using System.Data.Common;
+
+namespace HeuristicLab.Security.ADODataAccess.TableAdapterWrapper {
+  class PermissionOwner_UserGroupAdapterWrapper :
+   TableAdapterWrapperBase<
+       dsSecurityTableAdapters.PermissionOwner_UserGroupTableAdapter,
+       ManyToManyRelation,
+       dsSecurity.PermissionOwner_UserGroupRow> {
+    public override void UpdateRow(dsSecurity.PermissionOwner_UserGroupRow row) {
+      TransactionalAdapter.Update(row);
+    }
+
+    public override dsSecurity.PermissionOwner_UserGroupRow
+      InsertNewRow(ManyToManyRelation relation) {
+      dsSecurity.PermissionOwner_UserGroupDataTable data =
+        new dsSecurity.PermissionOwner_UserGroupDataTable();
+
+      dsSecurity.PermissionOwner_UserGroupRow row = data.NewPermissionOwner_UserGroupRow();
+      row.UserGroupId = relation.Id;
+      row.PermissionOwnerId = relation.Id2;
+
+      data.AddPermissionOwner_UserGroupRow(row);
+
+      return row;
+    }
+
+    public override IEnumerable<dsSecurity.PermissionOwner_UserGroupRow>
+      FindById(Guid id) {
+      return TransactionalAdapter.GetDataByUserGroupId(id);
+    }
+
+    public override IEnumerable<dsSecurity.PermissionOwner_UserGroupRow>
+      FindAll() {
+      return TransactionalAdapter.GetData();
+    }
+
+    protected override void SetConnection(DbConnection connection) {
+      adapter.Connection = connection as SqlConnection;
+    }
+
+    protected override void SetTransaction(DbTransaction transaction) {
+      adapter.Transaction = transaction as SqlTransaction;
+    }
+  }
+}
Index: /trunk/sources/HeuristicLab.Security.ADODataAccess/3.2/TableAdapterWrapper/UserGroupAdapterWrapper.cs
===================================================================
--- /trunk/sources/HeuristicLab.Security.ADODataAccess/3.2/TableAdapterWrapper/UserGroupAdapterWrapper.cs	(revision 1656)
+++ /trunk/sources/HeuristicLab.Security.ADODataAccess/3.2/TableAdapterWrapper/UserGroupAdapterWrapper.cs	(revision 1656)
@@ -0,0 +1,50 @@
+﻿using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using HeuristicLab.DataAccess.ADOHelper;
+using System.Data.SqlClient;
+using HeuristicLab.Security.Contracts.BusinessObjects;
+using System.Data.Common;
+
+namespace HeuristicLab.Security.ADODataAccess.TableAdapterWrapper {
+  class UserGroupAdapterWrapper :
+   TableAdapterWrapperBase<
+       dsSecurityTableAdapters.UserGroupTableAdapter,
+       UserGroup,
+       dsSecurity.UserGroupRow> {
+    public override void UpdateRow(dsSecurity.UserGroupRow row) {
+      TransactionalAdapter.Update(row);
+    }
+
+    public override dsSecurity.UserGroupRow
+      InsertNewRow(UserGroup group) {
+      dsSecurity.UserGroupDataTable data =
+        new dsSecurity.UserGroupDataTable();
+
+      dsSecurity.UserGroupRow row = data.NewUserGroupRow();
+      row.PermissionOwnerId = group.Id;
+      data.AddUserGroupRow(row);
+
+      return row;
+    }
+
+    public override IEnumerable<dsSecurity.UserGroupRow>
+      FindById(Guid id) {
+      return TransactionalAdapter.GetDataById(id);
+    }
+
+    public override IEnumerable<dsSecurity.UserGroupRow>
+      FindAll() {
+      return TransactionalAdapter.GetData();
+    }
+
+    protected override void SetConnection(DbConnection connection) {
+      adapter.Connection = connection as SqlConnection;
+    }
+
+    protected override void SetTransaction(DbTransaction transaction) {
+      adapter.Transaction = transaction as SqlTransaction;
+    }
+  }
+}
Index: /trunk/sources/HeuristicLab.Security.ADODataAccess/3.2/UserGroupAdapter.cs
===================================================================
--- /trunk/sources/HeuristicLab.Security.ADODataAccess/3.2/UserGroupAdapter.cs	(revision 1656)
+++ /trunk/sources/HeuristicLab.Security.ADODataAccess/3.2/UserGroupAdapter.cs	(revision 1656)
@@ -0,0 +1,133 @@
+﻿using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using HeuristicLab.DataAccess.ADOHelper;
+using HeuristicLab.Security.Contracts.BusinessObjects;
+using HeuristicLab.Security.DataAccess;
+using HeuristicLab.Security.ADODataAccess.TableAdapterWrapper;
+
+namespace HeuristicLab.Security.ADODataAccess {
+  class UserGroupAdapter: DataAdapterBase<
+      dsSecurityTableAdapters.UserGroupTableAdapter, 
+      UserGroup, 
+      dsSecurity.UserGroupRow>,
+      IUserGroupAdapter {
+    public UserGroupAdapter() :
+      base(new UserGroupAdapterWrapper()) {
+    }
+
+    private ManyToManyRelationHelper<
+      dsSecurityTableAdapters.PermissionOwner_UserGroupTableAdapter,
+      dsSecurity.PermissionOwner_UserGroupRow> manyToManyRelationHelper = null;
+
+    private ManyToManyRelationHelper<dsSecurityTableAdapters.PermissionOwner_UserGroupTableAdapter,
+      dsSecurity.PermissionOwner_UserGroupRow> ManyToManyRelationHelper {
+      get {
+        if (manyToManyRelationHelper == null) {
+          manyToManyRelationHelper =
+            new ManyToManyRelationHelper<dsSecurityTableAdapters.PermissionOwner_UserGroupTableAdapter,
+              dsSecurity.PermissionOwner_UserGroupRow>(new PermissionOwner_UserGroupAdapterWrapper());
+        }
+
+        manyToManyRelationHelper.Session = Session as Session;
+
+        return manyToManyRelationHelper;
+      }
+    }
+
+    private IPermissionOwnerAdapter permOwnerAdapter = null;
+
+    private IPermissionOwnerAdapter PermOwnerAdapter {
+      get {
+        if (permOwnerAdapter == null)
+          permOwnerAdapter =
+            this.Session.GetDataAdapter<PermissionOwner, IPermissionOwnerAdapter>();
+
+        return permOwnerAdapter;
+      }
+    }
+
+    protected override dsSecurity.UserGroupRow ConvertObj(UserGroup group, 
+      dsSecurity.UserGroupRow row) {
+      if (group != null && row != null) {
+        row.PermissionOwnerId = group.Id;
+
+        return row;
+      } else {
+        return null;
+      }
+    }
+
+    protected override UserGroup ConvertRow(dsSecurity.UserGroupRow row,
+      UserGroup group) {
+      if (group != null && row != null) {
+        group.Id = row.PermissionOwnerId;
+        PermOwnerAdapter.GetById(group);
+
+        ICollection<Guid> permissionOwners =
+          ManyToManyRelationHelper.GetRelationships(group.Id);
+
+        group.Members.Clear();
+        foreach (Guid permissionOwner in permissionOwners) {
+          PermissionOwner permOwner =
+            PermOwnerAdapter.GetByIdPolymorphic(permissionOwner);
+
+          group.Members.Add(permOwner);
+        }
+
+        return group;
+      } else {
+        return null;
+      }
+    }
+
+    #region IUserGroupAdapter Members
+
+    protected override void doUpdate(UserGroup group) {
+      if (group != null) {
+        PermOwnerAdapter.Update(group);
+
+        base.doUpdate(group);
+
+        List<Guid> relationships =
+          new List<Guid>();
+        foreach (PermissionOwner permOwner in group.Members) {
+          PermOwnerAdapter.UpdatePolymorphic(permOwner);
+
+          relationships.Add(permOwner.Id);
+        }
+
+        ManyToManyRelationHelper.UpdateRelationships(group.Id,
+          relationships);
+      }
+    }
+
+    protected override bool doDelete(UserGroup group) {
+      if (group != null) {
+        //delete all relationships
+        ManyToManyRelationHelper.UpdateRelationships(group.Id,
+          new List<Guid>());
+
+        return base.doDelete(group) &&
+          PermOwnerAdapter.Delete(group);
+      }
+
+      return false;
+    }
+
+    public UserGroup GetByName(string name) {
+      UserGroup group = new UserGroup();
+      PermissionOwner permOwner =
+        PermOwnerAdapter.GetByName(name);
+
+      return GetById(permOwner.Id);
+    }
+
+    public ICollection<UserGroup> MemberOf(PermissionOwner permOwner) {
+      throw new NotImplementedException();
+    }
+
+    #endregion
+  }
+}
Index: /trunk/sources/HeuristicLab.Security.ADODataAccess/3.2/dsSecurity.Designer.cs
===================================================================
--- /trunk/sources/HeuristicLab.Security.ADODataAccess/3.2/dsSecurity.Designer.cs	(revision 1655)
+++ /trunk/sources/HeuristicLab.Security.ADODataAccess/3.2/dsSecurity.Designer.cs	(revision 1656)
@@ -11,5 +11,5 @@
 #pragma warning disable 1591
 
-namespace HeuristicLab.Security.ADODataAccess_3._2 {
+namespace HeuristicLab.Security.ADODataAccess {
     
     
@@ -1066,5 +1066,5 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-            public HLUserRow AddHLUserRow(PermissionOwnerRow parentPermissionOwnerRowByUser_is_a_PermissionOwner, byte[] Password, string Login, string MailAddress) {
+            public HLUserRow AddHLUserRow(PermissionOwnerRow parentPermissionOwnerRowByUser_is_a_PermissionOwner, string Password, string Login, string MailAddress) {
                 HLUserRow rowHLUserRow = ((HLUserRow)(this.NewRow()));
                 object[] columnValuesArray = new object[] {
@@ -1111,5 +1111,5 @@
                 this.columnPermissionOwnerId = new global::System.Data.DataColumn("PermissionOwnerId", typeof(global::System.Guid), null, global::System.Data.MappingType.Element);
                 base.Columns.Add(this.columnPermissionOwnerId);
-                this.columnPassword = new global::System.Data.DataColumn("Password", typeof(byte[]), null, global::System.Data.MappingType.Element);
+                this.columnPassword = new global::System.Data.DataColumn("Password", typeof(string), null, global::System.Data.MappingType.Element);
                 base.Columns.Add(this.columnPassword);
                 this.columnLogin = new global::System.Data.DataColumn("Login", typeof(string), null, global::System.Data.MappingType.Element);
@@ -1121,4 +1121,5 @@
                 this.columnPermissionOwnerId.AllowDBNull = false;
                 this.columnPermissionOwnerId.Unique = true;
+                this.columnPassword.MaxLength = 2147483647;
                 this.columnLogin.MaxLength = 2147483647;
                 this.columnMailAddress.MaxLength = 2147483647;
@@ -1343,5 +1344,5 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-            public PermissionRow AddPermissionRow(System.Guid PermissionId, byte[] Name, byte[] Description, string Plugin) {
+            public PermissionRow AddPermissionRow(System.Guid PermissionId, string Name, string Description, string Plugin) {
                 PermissionRow rowPermissionRow = ((PermissionRow)(this.NewRow()));
                 object[] columnValuesArray = new object[] {
@@ -1385,7 +1386,7 @@
                 this.columnPermissionId = new global::System.Data.DataColumn("PermissionId", typeof(global::System.Guid), null, global::System.Data.MappingType.Element);
                 base.Columns.Add(this.columnPermissionId);
-                this.columnName = new global::System.Data.DataColumn("Name", typeof(byte[]), null, global::System.Data.MappingType.Element);
+                this.columnName = new global::System.Data.DataColumn("Name", typeof(string), null, global::System.Data.MappingType.Element);
                 base.Columns.Add(this.columnName);
-                this.columnDescription = new global::System.Data.DataColumn("Description", typeof(byte[]), null, global::System.Data.MappingType.Element);
+                this.columnDescription = new global::System.Data.DataColumn("Description", typeof(string), null, global::System.Data.MappingType.Element);
                 base.Columns.Add(this.columnDescription);
                 this.columnPlugin = new global::System.Data.DataColumn("Plugin", typeof(string), null, global::System.Data.MappingType.Element);
@@ -1395,4 +1396,6 @@
                 this.columnPermissionId.AllowDBNull = false;
                 this.columnPermissionId.Unique = true;
+                this.columnName.MaxLength = 2147483647;
+                this.columnDescription.MaxLength = 2147483647;
                 this.columnPlugin.MaxLength = 2147483647;
             }
@@ -1598,5 +1601,5 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-            public PermissionOwnerRow AddPermissionOwnerRow(System.Guid PermissionOwnerId, byte[] Name) {
+            public PermissionOwnerRow AddPermissionOwnerRow(System.Guid PermissionOwnerId, string Name) {
                 PermissionOwnerRow rowPermissionOwnerRow = ((PermissionOwnerRow)(this.NewRow()));
                 object[] columnValuesArray = new object[] {
@@ -1636,5 +1639,5 @@
                 this.columnPermissionOwnerId = new global::System.Data.DataColumn("PermissionOwnerId", typeof(global::System.Guid), null, global::System.Data.MappingType.Element);
                 base.Columns.Add(this.columnPermissionOwnerId);
-                this.columnName = new global::System.Data.DataColumn("Name", typeof(byte[]), null, global::System.Data.MappingType.Element);
+                this.columnName = new global::System.Data.DataColumn("Name", typeof(string), null, global::System.Data.MappingType.Element);
                 base.Columns.Add(this.columnName);
                 this.Constraints.Add(new global::System.Data.UniqueConstraint("Constraint1", new global::System.Data.DataColumn[] {
@@ -1642,4 +1645,5 @@
                 this.columnPermissionOwnerId.AllowDBNull = false;
                 this.columnPermissionOwnerId.Unique = true;
+                this.columnName.MaxLength = 2147483647;
             }
             
@@ -2148,8 +2152,8 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-            public byte[] Password {
+            public string Password {
                 get {
                     try {
-                        return ((byte[])(this[this.tableHLUser.PasswordColumn]));
+                        return ((string)(this[this.tableHLUser.PasswordColumn]));
                     }
                     catch (global::System.InvalidCastException e) {
@@ -2258,8 +2262,8 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-            public byte[] Name {
+            public string Name {
                 get {
                     try {
-                        return ((byte[])(this[this.tablePermission.NameColumn]));
+                        return ((string)(this[this.tablePermission.NameColumn]));
                     }
                     catch (global::System.InvalidCastException e) {
@@ -2273,8 +2277,8 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-            public byte[] Description {
+            public string Description {
                 get {
                     try {
-                        return ((byte[])(this[this.tablePermission.DescriptionColumn]));
+                        return ((string)(this[this.tablePermission.DescriptionColumn]));
                     }
                     catch (global::System.InvalidCastException e) {
@@ -2368,8 +2372,8 @@
             
             [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-            public byte[] Name {
+            public string Name {
                 get {
                     try {
-                        return ((byte[])(this[this.tablePermissionOwner.NameColumn]));
+                        return ((string)(this[this.tablePermissionOwner.NameColumn]));
                     }
                     catch (global::System.InvalidCastException e) {
@@ -2675,5 +2679,5 @@
     }
 }
-namespace HeuristicLab.Security.ADODataAccess_3._2.dsSecurityTableAdapters {
+namespace HeuristicLab.Security.ADODataAccess.dsSecurityTableAdapters {
     
     
@@ -2830,5 +2834,5 @@
         private void InitConnection() {
             this._connection = new global::System.Data.SqlClient.SqlConnection();
-            this._connection.ConnectionString = global::HeuristicLab.Security.ADODataAccess_3._2.Properties.Settings.Default.HeuristicLab_SecurityConnectionString;
+            this._connection.ConnectionString = global::HeuristicLab.Security.ADODataAccess.Properties.Settings.Default.HeuristicLab_SecurityConnectionString;
         }
         
@@ -3112,14 +3116,19 @@
         private void InitConnection() {
             this._connection = new global::System.Data.SqlClient.SqlConnection();
-            this._connection.ConnectionString = global::HeuristicLab.Security.ADODataAccess_3._2.Properties.Settings.Default.HeuristicLab_SecurityConnectionString;
+            this._connection.ConnectionString = global::HeuristicLab.Security.ADODataAccess.Properties.Settings.Default.HeuristicLab_SecurityConnectionString;
         }
         
         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
         private void InitCommandCollection() {
-            this._commandCollection = new global::System.Data.SqlClient.SqlCommand[1];
+            this._commandCollection = new global::System.Data.SqlClient.SqlCommand[2];
             this._commandCollection[0] = new global::System.Data.SqlClient.SqlCommand();
             this._commandCollection[0].Connection = this.Connection;
             this._commandCollection[0].CommandText = "SELECT * FROM dbo.UserGroup";
             this._commandCollection[0].CommandType = global::System.Data.CommandType.Text;
+            this._commandCollection[1] = new global::System.Data.SqlClient.SqlCommand();
+            this._commandCollection[1].Connection = this.Connection;
+            this._commandCollection[1].CommandText = "SELECT * FROM dbo.UserGroup WHERE PermissionOwnerId = @Id";
+            this._commandCollection[1].CommandType = global::System.Data.CommandType.Text;
+            this._commandCollection[1].Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Id", global::System.Data.SqlDbType.UniqueIdentifier, 16, global::System.Data.ParameterDirection.Input, 0, 0, "PermissionOwnerId", global::System.Data.DataRowVersion.Current, false, null, "", "", ""));
         }
         
@@ -3141,4 +3150,28 @@
         public virtual dsSecurity.UserGroupDataTable GetData() {
             this.Adapter.SelectCommand = this.CommandCollection[0];
+            dsSecurity.UserGroupDataTable dataTable = new dsSecurity.UserGroupDataTable();
+            this.Adapter.Fill(dataTable);
+            return dataTable;
+        }
+        
+        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")]
+        [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Fill, false)]
+        public virtual int FillById(dsSecurity.UserGroupDataTable dataTable, System.Guid Id) {
+            this.Adapter.SelectCommand = this.CommandCollection[1];
+            this.Adapter.SelectCommand.Parameters[0].Value = ((System.Guid)(Id));
+            if ((this.ClearBeforeFill == true)) {
+                dataTable.Clear();
+            }
+            int returnValue = this.Adapter.Fill(dataTable);
+            return returnValue;
+        }
+        
+        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")]
+        [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Select, false)]
+        public virtual dsSecurity.UserGroupDataTable GetDataById(System.Guid Id) {
+            this.Adapter.SelectCommand = this.CommandCollection[1];
+            this.Adapter.SelectCommand.Parameters[0].Value = ((System.Guid)(Id));
             dsSecurity.UserGroupDataTable dataTable = new dsSecurity.UserGroupDataTable();
             this.Adapter.Fill(dataTable);
@@ -3365,24 +3398,25 @@
             this._adapter.DeleteCommand = new global::System.Data.SqlClient.SqlCommand();
             this._adapter.DeleteCommand.Connection = this.Connection;
-            this._adapter.DeleteCommand.CommandText = "DELETE FROM [dbo].[HLUser] WHERE (([PermissionOwnerId] = @Original_PermissionOwne" +
-                "rId))";
+            this._adapter.DeleteCommand.CommandText = "DELETE FROM [HLUser] WHERE (([PermissionOwnerId] = @Original_PermissionOwnerId))";
             this._adapter.DeleteCommand.CommandType = global::System.Data.CommandType.Text;
             this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_PermissionOwnerId", global::System.Data.SqlDbType.UniqueIdentifier, 0, global::System.Data.ParameterDirection.Input, 0, 0, "PermissionOwnerId", global::System.Data.DataRowVersion.Original, false, null, "", "", ""));
             this._adapter.InsertCommand = new global::System.Data.SqlClient.SqlCommand();
             this._adapter.InsertCommand.Connection = this.Connection;
-            this._adapter.InsertCommand.CommandText = @"INSERT INTO [dbo].[HLUser] ([PermissionOwnerId], [Password], [Login], [MailAddress]) VALUES (@PermissionOwnerId, @Password, @Login, @MailAddress);
-SELECT PermissionOwnerId, Password, Login, MailAddress FROM HLUser WHERE (PermissionOwnerId = @PermissionOwnerId)";
+            this._adapter.InsertCommand.CommandText = "INSERT INTO [HLUser] ([PermissionOwnerId], [Password], [Login], [MailAddress]) VA" +
+                "LUES (@PermissionOwnerId, @Password, @Login, @MailAddress);\r\nSELECT PermissionOw" +
+                "nerId, Password, Login, MailAddress FROM HLUser WHERE (PermissionOwnerId = @Perm" +
+                "issionOwnerId)";
             this._adapter.InsertCommand.CommandType = global::System.Data.CommandType.Text;
             this._adapter.InsertCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@PermissionOwnerId", global::System.Data.SqlDbType.UniqueIdentifier, 0, global::System.Data.ParameterDirection.Input, 0, 0, "PermissionOwnerId", global::System.Data.DataRowVersion.Current, false, null, "", "", ""));
-            this._adapter.InsertCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Password", global::System.Data.SqlDbType.VarBinary, 0, global::System.Data.ParameterDirection.Input, 0, 0, "Password", global::System.Data.DataRowVersion.Current, false, null, "", "", ""));
+            this._adapter.InsertCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Password", global::System.Data.SqlDbType.VarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "Password", global::System.Data.DataRowVersion.Current, false, null, "", "", ""));
             this._adapter.InsertCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Login", global::System.Data.SqlDbType.VarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "Login", global::System.Data.DataRowVersion.Current, false, null, "", "", ""));
             this._adapter.InsertCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@MailAddress", global::System.Data.SqlDbType.VarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "MailAddress", global::System.Data.DataRowVersion.Current, false, null, "", "", ""));
             this._adapter.UpdateCommand = new global::System.Data.SqlClient.SqlCommand();
             this._adapter.UpdateCommand.Connection = this.Connection;
-            this._adapter.UpdateCommand.CommandText = @"UPDATE [dbo].[HLUser] SET [PermissionOwnerId] = @PermissionOwnerId, [Password] = @Password, [Login] = @Login, [MailAddress] = @MailAddress WHERE (([PermissionOwnerId] = @Original_PermissionOwnerId));
+            this._adapter.UpdateCommand.CommandText = @"UPDATE [HLUser] SET [PermissionOwnerId] = @PermissionOwnerId, [Password] = @Password, [Login] = @Login, [MailAddress] = @MailAddress WHERE (([PermissionOwnerId] = @Original_PermissionOwnerId));
 SELECT PermissionOwnerId, Password, Login, MailAddress FROM HLUser WHERE (PermissionOwnerId = @PermissionOwnerId)";
             this._adapter.UpdateCommand.CommandType = global::System.Data.CommandType.Text;
             this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@PermissionOwnerId", global::System.Data.SqlDbType.UniqueIdentifier, 0, global::System.Data.ParameterDirection.Input, 0, 0, "PermissionOwnerId", global::System.Data.DataRowVersion.Current, false, null, "", "", ""));
-            this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Password", global::System.Data.SqlDbType.VarBinary, 0, global::System.Data.ParameterDirection.Input, 0, 0, "Password", global::System.Data.DataRowVersion.Current, false, null, "", "", ""));
+            this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Password", global::System.Data.SqlDbType.VarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "Password", global::System.Data.DataRowVersion.Current, false, null, "", "", ""));
             this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Login", global::System.Data.SqlDbType.VarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "Login", global::System.Data.DataRowVersion.Current, false, null, "", "", ""));
             this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@MailAddress", global::System.Data.SqlDbType.VarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "MailAddress", global::System.Data.DataRowVersion.Current, false, null, "", "", ""));
@@ -3393,14 +3427,19 @@
         private void InitConnection() {
             this._connection = new global::System.Data.SqlClient.SqlConnection();
-            this._connection.ConnectionString = global::HeuristicLab.Security.ADODataAccess_3._2.Properties.Settings.Default.HeuristicLab_SecurityConnectionString;
+            this._connection.ConnectionString = global::HeuristicLab.Security.ADODataAccess.Properties.Settings.Default.HeuristicLab_SecurityConnectionString;
         }
         
         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
         private void InitCommandCollection() {
-            this._commandCollection = new global::System.Data.SqlClient.SqlCommand[1];
+            this._commandCollection = new global::System.Data.SqlClient.SqlCommand[2];
             this._commandCollection[0] = new global::System.Data.SqlClient.SqlCommand();
             this._commandCollection[0].Connection = this.Connection;
-            this._commandCollection[0].CommandText = "SELECT * FROM dbo.HLUser";
+            this._commandCollection[0].CommandText = "SELECT * FROM HLUser";
             this._commandCollection[0].CommandType = global::System.Data.CommandType.Text;
+            this._commandCollection[1] = new global::System.Data.SqlClient.SqlCommand();
+            this._commandCollection[1].Connection = this.Connection;
+            this._commandCollection[1].CommandText = "SELECT * FROM HLUser WHERE PermissionOwnerId = @Id";
+            this._commandCollection[1].CommandType = global::System.Data.CommandType.Text;
+            this._commandCollection[1].Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Id", global::System.Data.SqlDbType.UniqueIdentifier, 16, global::System.Data.ParameterDirection.Input, 0, 0, "PermissionOwnerId", global::System.Data.DataRowVersion.Current, false, null, "", "", ""));
         }
         
@@ -3422,4 +3461,28 @@
         public virtual dsSecurity.HLUserDataTable GetData() {
             this.Adapter.SelectCommand = this.CommandCollection[0];
+            dsSecurity.HLUserDataTable dataTable = new dsSecurity.HLUserDataTable();
+            this.Adapter.Fill(dataTable);
+            return dataTable;
+        }
+        
+        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")]
+        [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Fill, false)]
+        public virtual int FillById(dsSecurity.HLUserDataTable dataTable, System.Guid Id) {
+            this.Adapter.SelectCommand = this.CommandCollection[1];
+            this.Adapter.SelectCommand.Parameters[0].Value = ((System.Guid)(Id));
+            if ((this.ClearBeforeFill == true)) {
+                dataTable.Clear();
+            }
+            int returnValue = this.Adapter.Fill(dataTable);
+            return returnValue;
+        }
+        
+        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")]
+        [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Select, false)]
+        public virtual dsSecurity.HLUserDataTable GetDataById(System.Guid Id) {
+            this.Adapter.SelectCommand = this.CommandCollection[1];
+            this.Adapter.SelectCommand.Parameters[0].Value = ((System.Guid)(Id));
             dsSecurity.HLUserDataTable dataTable = new dsSecurity.HLUserDataTable();
             this.Adapter.Fill(dataTable);
@@ -3476,5 +3539,5 @@
         [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")]
         [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Insert, true)]
-        public virtual int Insert(System.Guid PermissionOwnerId, byte[] Password, string Login, string MailAddress) {
+        public virtual int Insert(System.Guid PermissionOwnerId, string Password, string Login, string MailAddress) {
             this.Adapter.InsertCommand.Parameters[0].Value = ((System.Guid)(PermissionOwnerId));
             if ((Password == null)) {
@@ -3482,5 +3545,5 @@
             }
             else {
-                this.Adapter.InsertCommand.Parameters[1].Value = ((byte[])(Password));
+                this.Adapter.InsertCommand.Parameters[1].Value = ((string)(Password));
             }
             if ((Login == null)) {
@@ -3515,5 +3578,5 @@
         [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")]
         [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Update, true)]
-        public virtual int Update(System.Guid PermissionOwnerId, byte[] Password, string Login, string MailAddress, System.Guid Original_PermissionOwnerId) {
+        public virtual int Update(System.Guid PermissionOwnerId, string Password, string Login, string MailAddress, System.Guid Original_PermissionOwnerId) {
             this.Adapter.UpdateCommand.Parameters[0].Value = ((System.Guid)(PermissionOwnerId));
             if ((Password == null)) {
@@ -3521,5 +3584,5 @@
             }
             else {
-                this.Adapter.UpdateCommand.Parameters[1].Value = ((byte[])(Password));
+                this.Adapter.UpdateCommand.Parameters[1].Value = ((string)(Password));
             }
             if ((Login == null)) {
@@ -3555,5 +3618,5 @@
         [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")]
         [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Update, true)]
-        public virtual int Update(byte[] Password, string Login, string MailAddress, System.Guid Original_PermissionOwnerId) {
+        public virtual int Update(string Password, string Login, string MailAddress, System.Guid Original_PermissionOwnerId) {
             return this.Update(Original_PermissionOwnerId, Password, Login, MailAddress, Original_PermissionOwnerId);
         }
@@ -3682,25 +3745,25 @@
             this._adapter.DeleteCommand = new global::System.Data.SqlClient.SqlCommand();
             this._adapter.DeleteCommand.Connection = this.Connection;
-            this._adapter.DeleteCommand.CommandText = "DELETE FROM [dbo].[Permission] WHERE (([PermissionId] = @Original_PermissionId))";
+            this._adapter.DeleteCommand.CommandText = "DELETE FROM [Permission] WHERE (([PermissionId] = @Original_PermissionId))";
             this._adapter.DeleteCommand.CommandType = global::System.Data.CommandType.Text;
             this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_PermissionId", global::System.Data.SqlDbType.UniqueIdentifier, 0, global::System.Data.ParameterDirection.Input, 0, 0, "PermissionId", global::System.Data.DataRowVersion.Original, false, null, "", "", ""));
             this._adapter.InsertCommand = new global::System.Data.SqlClient.SqlCommand();
             this._adapter.InsertCommand.Connection = this.Connection;
-            this._adapter.InsertCommand.CommandText = "INSERT INTO [dbo].[Permission] ([PermissionId], [Name], [Description], [Plugin]) " +
-                "VALUES (@PermissionId, @Name, @Description, @Plugin);\r\nSELECT PermissionId, Name" +
-                ", Description, Plugin FROM Permission WHERE (PermissionId = @PermissionId)";
+            this._adapter.InsertCommand.CommandText = "INSERT INTO [Permission] ([PermissionId], [Name], [Description], [Plugin]) VALUES" +
+                " (@PermissionId, @Name, @Description, @Plugin);\r\nSELECT PermissionId, Name, Desc" +
+                "ription, Plugin FROM Permission WHERE (PermissionId = @PermissionId)";
             this._adapter.InsertCommand.CommandType = global::System.Data.CommandType.Text;
             this._adapter.InsertCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@PermissionId", global::System.Data.SqlDbType.UniqueIdentifier, 0, global::System.Data.ParameterDirection.Input, 0, 0, "PermissionId", global::System.Data.DataRowVersion.Current, false, null, "", "", ""));
-            this._adapter.InsertCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Name", global::System.Data.SqlDbType.VarBinary, 0, global::System.Data.ParameterDirection.Input, 0, 0, "Name", global::System.Data.DataRowVersion.Current, false, null, "", "", ""));
-            this._adapter.InsertCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Description", global::System.Data.SqlDbType.VarBinary, 0, global::System.Data.ParameterDirection.Input, 0, 0, "Description", global::System.Data.DataRowVersion.Current, false, null, "", "", ""));
+            this._adapter.InsertCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Name", global::System.Data.SqlDbType.VarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "Name", global::System.Data.DataRowVersion.Current, false, null, "", "", ""));
+            this._adapter.InsertCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Description", global::System.Data.SqlDbType.VarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "Description", global::System.Data.DataRowVersion.Current, false, null, "", "", ""));
             this._adapter.InsertCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Plugin", global::System.Data.SqlDbType.VarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "Plugin", global::System.Data.DataRowVersion.Current, false, null, "", "", ""));
             this._adapter.UpdateCommand = new global::System.Data.SqlClient.SqlCommand();
             this._adapter.UpdateCommand.Connection = this.Connection;
-            this._adapter.UpdateCommand.CommandText = @"UPDATE [dbo].[Permission] SET [PermissionId] = @PermissionId, [Name] = @Name, [Description] = @Description, [Plugin] = @Plugin WHERE (([PermissionId] = @Original_PermissionId));
+            this._adapter.UpdateCommand.CommandText = @"UPDATE [Permission] SET [PermissionId] = @PermissionId, [Name] = @Name, [Description] = @Description, [Plugin] = @Plugin WHERE (([PermissionId] = @Original_PermissionId));
 SELECT PermissionId, Name, Description, Plugin FROM Permission WHERE (PermissionId = @PermissionId)";
             this._adapter.UpdateCommand.CommandType = global::System.Data.CommandType.Text;
             this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@PermissionId", global::System.Data.SqlDbType.UniqueIdentifier, 0, global::System.Data.ParameterDirection.Input, 0, 0, "PermissionId", global::System.Data.DataRowVersion.Current, false, null, "", "", ""));
-            this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Name", global::System.Data.SqlDbType.VarBinary, 0, global::System.Data.ParameterDirection.Input, 0, 0, "Name", global::System.Data.DataRowVersion.Current, false, null, "", "", ""));
-            this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Description", global::System.Data.SqlDbType.VarBinary, 0, global::System.Data.ParameterDirection.Input, 0, 0, "Description", global::System.Data.DataRowVersion.Current, false, null, "", "", ""));
+            this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Name", global::System.Data.SqlDbType.VarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "Name", global::System.Data.DataRowVersion.Current, false, null, "", "", ""));
+            this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Description", global::System.Data.SqlDbType.VarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "Description", global::System.Data.DataRowVersion.Current, false, null, "", "", ""));
             this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Plugin", global::System.Data.SqlDbType.VarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "Plugin", global::System.Data.DataRowVersion.Current, false, null, "", "", ""));
             this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_PermissionId", global::System.Data.SqlDbType.UniqueIdentifier, 0, global::System.Data.ParameterDirection.Input, 0, 0, "PermissionId", global::System.Data.DataRowVersion.Original, false, null, "", "", ""));
@@ -3710,14 +3773,20 @@
         private void InitConnection() {
             this._connection = new global::System.Data.SqlClient.SqlConnection();
-            this._connection.ConnectionString = global::HeuristicLab.Security.ADODataAccess_3._2.Properties.Settings.Default.HeuristicLab_SecurityConnectionString;
+            this._connection.ConnectionString = global::HeuristicLab.Security.ADODataAccess.Properties.Settings.Default.HeuristicLab_SecurityConnectionString;
         }
         
         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
         private void InitCommandCollection() {
-            this._commandCollection = new global::System.Data.SqlClient.SqlCommand[1];
+            this._commandCollection = new global::System.Data.SqlClient.SqlCommand[2];
             this._commandCollection[0] = new global::System.Data.SqlClient.SqlCommand();
             this._commandCollection[0].Connection = this.Connection;
-            this._commandCollection[0].CommandText = "SELECT * FROM dbo.Permission";
+            this._commandCollection[0].CommandText = "SELECT * FROM Permission";
             this._commandCollection[0].CommandType = global::System.Data.CommandType.Text;
+            this._commandCollection[1] = new global::System.Data.SqlClient.SqlCommand();
+            this._commandCollection[1].Connection = this.Connection;
+            this._commandCollection[1].CommandText = "SELECT Description, Name, PermissionId, Plugin FROM Permission WHERE (PermissionI" +
+                "d = @Id)";
+            this._commandCollection[1].CommandType = global::System.Data.CommandType.Text;
+            this._commandCollection[1].Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Id", global::System.Data.SqlDbType.UniqueIdentifier, 16, global::System.Data.ParameterDirection.Input, 0, 0, "PermissionId", global::System.Data.DataRowVersion.Current, false, null, "", "", ""));
         }
         
@@ -3739,4 +3808,28 @@
         public virtual dsSecurity.PermissionDataTable GetData() {
             this.Adapter.SelectCommand = this.CommandCollection[0];
+            dsSecurity.PermissionDataTable dataTable = new dsSecurity.PermissionDataTable();
+            this.Adapter.Fill(dataTable);
+            return dataTable;
+        }
+        
+        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")]
+        [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Fill, false)]
+        public virtual int FillById(dsSecurity.PermissionDataTable dataTable, System.Guid Id) {
+            this.Adapter.SelectCommand = this.CommandCollection[1];
+            this.Adapter.SelectCommand.Parameters[0].Value = ((System.Guid)(Id));
+            if ((this.ClearBeforeFill == true)) {
+                dataTable.Clear();
+            }
+            int returnValue = this.Adapter.Fill(dataTable);
+            return returnValue;
+        }
+        
+        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")]
+        [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Select, false)]
+        public virtual dsSecurity.PermissionDataTable GetDataById(System.Guid Id) {
+            this.Adapter.SelectCommand = this.CommandCollection[1];
+            this.Adapter.SelectCommand.Parameters[0].Value = ((System.Guid)(Id));
             dsSecurity.PermissionDataTable dataTable = new dsSecurity.PermissionDataTable();
             this.Adapter.Fill(dataTable);
@@ -3793,5 +3886,5 @@
         [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")]
         [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Insert, true)]
-        public virtual int Insert(System.Guid PermissionId, byte[] Name, byte[] Description, string Plugin) {
+        public virtual int Insert(System.Guid PermissionId, string Name, string Description, string Plugin) {
             this.Adapter.InsertCommand.Parameters[0].Value = ((System.Guid)(PermissionId));
             if ((Name == null)) {
@@ -3799,5 +3892,5 @@
             }
             else {
-                this.Adapter.InsertCommand.Parameters[1].Value = ((byte[])(Name));
+                this.Adapter.InsertCommand.Parameters[1].Value = ((string)(Name));
             }
             if ((Description == null)) {
@@ -3805,5 +3898,5 @@
             }
             else {
-                this.Adapter.InsertCommand.Parameters[2].Value = ((byte[])(Description));
+                this.Adapter.InsertCommand.Parameters[2].Value = ((string)(Description));
             }
             if ((Plugin == null)) {
@@ -3832,5 +3925,5 @@
         [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")]
         [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Update, true)]
-        public virtual int Update(System.Guid PermissionId, byte[] Name, byte[] Description, string Plugin, System.Guid Original_PermissionId) {
+        public virtual int Update(System.Guid PermissionId, string Name, string Description, string Plugin, System.Guid Original_PermissionId) {
             this.Adapter.UpdateCommand.Parameters[0].Value = ((System.Guid)(PermissionId));
             if ((Name == null)) {
@@ -3838,5 +3931,5 @@
             }
             else {
-                this.Adapter.UpdateCommand.Parameters[1].Value = ((byte[])(Name));
+                this.Adapter.UpdateCommand.Parameters[1].Value = ((string)(Name));
             }
             if ((Description == null)) {
@@ -3844,5 +3937,5 @@
             }
             else {
-                this.Adapter.UpdateCommand.Parameters[2].Value = ((byte[])(Description));
+                this.Adapter.UpdateCommand.Parameters[2].Value = ((string)(Description));
             }
             if ((Plugin == null)) {
@@ -3872,5 +3965,5 @@
         [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")]
         [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Update, true)]
-        public virtual int Update(byte[] Name, byte[] Description, string Plugin, System.Guid Original_PermissionId) {
+        public virtual int Update(string Name, string Description, string Plugin, System.Guid Original_PermissionId) {
             return this.Update(Original_PermissionId, Name, Description, Plugin, Original_PermissionId);
         }
@@ -3997,25 +4090,25 @@
             this._adapter.DeleteCommand = new global::System.Data.SqlClient.SqlCommand();
             this._adapter.DeleteCommand.Connection = this.Connection;
-            this._adapter.DeleteCommand.CommandText = "DELETE FROM [dbo].[PermissionOwner] WHERE (([PermissionOwnerId] = @Original_Permi" +
-                "ssionOwnerId))";
+            this._adapter.DeleteCommand.CommandText = "DELETE FROM [PermissionOwner] WHERE (([PermissionOwnerId] = @Original_PermissionO" +
+                "wnerId))";
             this._adapter.DeleteCommand.CommandType = global::System.Data.CommandType.Text;
             this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_PermissionOwnerId", global::System.Data.SqlDbType.UniqueIdentifier, 0, global::System.Data.ParameterDirection.Input, 0, 0, "PermissionOwnerId", global::System.Data.DataRowVersion.Original, false, null, "", "", ""));
             this._adapter.InsertCommand = new global::System.Data.SqlClient.SqlCommand();
             this._adapter.InsertCommand.Connection = this.Connection;
-            this._adapter.InsertCommand.CommandText = "INSERT INTO [dbo].[PermissionOwner] ([PermissionOwnerId], [Name]) VALUES (@Permis" +
-                "sionOwnerId, @Name);\r\nSELECT PermissionOwnerId, Name FROM PermissionOwner WHERE " +
-                "(PermissionOwnerId = @PermissionOwnerId)";
+            this._adapter.InsertCommand.CommandText = "INSERT INTO [PermissionOwner] ([PermissionOwnerId], [Name]) VALUES (@PermissionOw" +
+                "nerId, @Name);\r\nSELECT PermissionOwnerId, Name FROM PermissionOwner WHERE (Permi" +
+                "ssionOwnerId = @PermissionOwnerId)";
             this._adapter.InsertCommand.CommandType = global::System.Data.CommandType.Text;
             this._adapter.InsertCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@PermissionOwnerId", global::System.Data.SqlDbType.UniqueIdentifier, 0, global::System.Data.ParameterDirection.Input, 0, 0, "PermissionOwnerId", global::System.Data.DataRowVersion.Current, false, null, "", "", ""));
-            this._adapter.InsertCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Name", global::System.Data.SqlDbType.VarBinary, 0, global::System.Data.ParameterDirection.Input, 0, 0, "Name", global::System.Data.DataRowVersion.Current, false, null, "", "", ""));
+            this._adapter.InsertCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Name", global::System.Data.SqlDbType.VarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "Name", global::System.Data.DataRowVersion.Current, false, null, "", "", ""));
             this._adapter.UpdateCommand = new global::System.Data.SqlClient.SqlCommand();
             this._adapter.UpdateCommand.Connection = this.Connection;
-            this._adapter.UpdateCommand.CommandText = "UPDATE [dbo].[PermissionOwner] SET [PermissionOwnerId] = @PermissionOwnerId, [Nam" +
-                "e] = @Name WHERE (([PermissionOwnerId] = @Original_PermissionOwnerId));\r\nSELECT " +
-                "PermissionOwnerId, Name FROM PermissionOwner WHERE (PermissionOwnerId = @Permiss" +
-                "ionOwnerId)";
+            this._adapter.UpdateCommand.CommandText = "UPDATE [PermissionOwner] SET [PermissionOwnerId] = @PermissionOwnerId, [Name] = @" +
+                "Name WHERE (([PermissionOwnerId] = @Original_PermissionOwnerId));\r\nSELECT Permis" +
+                "sionOwnerId, Name FROM PermissionOwner WHERE (PermissionOwnerId = @PermissionOwn" +
+                "erId)";
             this._adapter.UpdateCommand.CommandType = global::System.Data.CommandType.Text;
             this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@PermissionOwnerId", global::System.Data.SqlDbType.UniqueIdentifier, 0, global::System.Data.ParameterDirection.Input, 0, 0, "PermissionOwnerId", global::System.Data.DataRowVersion.Current, false, null, "", "", ""));
-            this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Name", global::System.Data.SqlDbType.VarBinary, 0, global::System.Data.ParameterDirection.Input, 0, 0, "Name", global::System.Data.DataRowVersion.Current, false, null, "", "", ""));
+            this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Name", global::System.Data.SqlDbType.VarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "Name", global::System.Data.DataRowVersion.Current, false, null, "", "", ""));
             this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_PermissionOwnerId", global::System.Data.SqlDbType.UniqueIdentifier, 0, global::System.Data.ParameterDirection.Input, 0, 0, "PermissionOwnerId", global::System.Data.DataRowVersion.Original, false, null, "", "", ""));
         }
@@ -4024,14 +4117,24 @@
         private void InitConnection() {
             this._connection = new global::System.Data.SqlClient.SqlConnection();
-            this._connection.ConnectionString = global::HeuristicLab.Security.ADODataAccess_3._2.Properties.Settings.Default.HeuristicLab_SecurityConnectionString;
+            this._connection.ConnectionString = global::HeuristicLab.Security.ADODataAccess.Properties.Settings.Default.HeuristicLab_SecurityConnectionString;
         }
         
         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
         private void InitCommandCollection() {
-            this._commandCollection = new global::System.Data.SqlClient.SqlCommand[1];
+            this._commandCollection = new global::System.Data.SqlClient.SqlCommand[3];
             this._commandCollection[0] = new global::System.Data.SqlClient.SqlCommand();
             this._commandCollection[0].Connection = this.Connection;
-            this._commandCollection[0].CommandText = "SELECT * FROM dbo.PermissionOwner";
+            this._commandCollection[0].CommandText = "SELECT * FROM PermissionOwner";
             this._commandCollection[0].CommandType = global::System.Data.CommandType.Text;
+            this._commandCollection[1] = new global::System.Data.SqlClient.SqlCommand();
+            this._commandCollection[1].Connection = this.Connection;
+            this._commandCollection[1].CommandText = "SELECT * FROM PermissionOwner WHERE (Id = @Id)";
+            this._commandCollection[1].CommandType = global::System.Data.CommandType.Text;
+            this._commandCollection[1].Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Id", global::System.Data.SqlDbType.Variant, 1024, global::System.Data.ParameterDirection.Input, 0, 0, "", global::System.Data.DataRowVersion.Current, false, null, "", "", ""));
+            this._commandCollection[2] = new global::System.Data.SqlClient.SqlCommand();
+            this._commandCollection[2].Connection = this.Connection;
+            this._commandCollection[2].CommandText = "SELECT Name, PermissionOwnerId FROM PermissionOwner WHERE (Name = @Name)";
+            this._commandCollection[2].CommandType = global::System.Data.CommandType.Text;
+            this._commandCollection[2].Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Name", global::System.Data.SqlDbType.VarChar, 2147483647, global::System.Data.ParameterDirection.Input, 0, 0, "Name", global::System.Data.DataRowVersion.Current, false, null, "", "", ""));
         }
         
@@ -4053,4 +4156,72 @@
         public virtual dsSecurity.PermissionOwnerDataTable GetData() {
             this.Adapter.SelectCommand = this.CommandCollection[0];
+            dsSecurity.PermissionOwnerDataTable dataTable = new dsSecurity.PermissionOwnerDataTable();
+            this.Adapter.Fill(dataTable);
+            return dataTable;
+        }
+        
+        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")]
+        [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Fill, false)]
+        public virtual int FillById(dsSecurity.PermissionOwnerDataTable dataTable, object Id) {
+            this.Adapter.SelectCommand = this.CommandCollection[1];
+            if ((Id == null)) {
+                throw new global::System.ArgumentNullException("Id");
+            }
+            else {
+                this.Adapter.SelectCommand.Parameters[0].Value = ((object)(Id));
+            }
+            if ((this.ClearBeforeFill == true)) {
+                dataTable.Clear();
+            }
+            int returnValue = this.Adapter.Fill(dataTable);
+            return returnValue;
+        }
+        
+        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")]
+        [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Select, false)]
+        public virtual dsSecurity.PermissionOwnerDataTable GetDataById(object Id) {
+            this.Adapter.SelectCommand = this.CommandCollection[1];
+            if ((Id == null)) {
+                throw new global::System.ArgumentNullException("Id");
+            }
+            else {
+                this.Adapter.SelectCommand.Parameters[0].Value = ((object)(Id));
+            }
+            dsSecurity.PermissionOwnerDataTable dataTable = new dsSecurity.PermissionOwnerDataTable();
+            this.Adapter.Fill(dataTable);
+            return dataTable;
+        }
+        
+        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")]
+        [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Fill, false)]
+        public virtual int FillByName(dsSecurity.PermissionOwnerDataTable dataTable, string Name) {
+            this.Adapter.SelectCommand = this.CommandCollection[2];
+            if ((Name == null)) {
+                this.Adapter.SelectCommand.Parameters[0].Value = global::System.DBNull.Value;
+            }
+            else {
+                this.Adapter.SelectCommand.Parameters[0].Value = ((string)(Name));
+            }
+            if ((this.ClearBeforeFill == true)) {
+                dataTable.Clear();
+            }
+            int returnValue = this.Adapter.Fill(dataTable);
+            return returnValue;
+        }
+        
+        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")]
+        [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Select, false)]
+        public virtual dsSecurity.PermissionOwnerDataTable GetDataByName(string Name) {
+            this.Adapter.SelectCommand = this.CommandCollection[2];
+            if ((Name == null)) {
+                this.Adapter.SelectCommand.Parameters[0].Value = global::System.DBNull.Value;
+            }
+            else {
+                this.Adapter.SelectCommand.Parameters[0].Value = ((string)(Name));
+            }
             dsSecurity.PermissionOwnerDataTable dataTable = new dsSecurity.PermissionOwnerDataTable();
             this.Adapter.Fill(dataTable);
@@ -4107,5 +4278,5 @@
         [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")]
         [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Insert, true)]
-        public virtual int Insert(System.Guid PermissionOwnerId, byte[] Name) {
+        public virtual int Insert(System.Guid PermissionOwnerId, string Name) {
             this.Adapter.InsertCommand.Parameters[0].Value = ((System.Guid)(PermissionOwnerId));
             if ((Name == null)) {
@@ -4113,5 +4284,5 @@
             }
             else {
-                this.Adapter.InsertCommand.Parameters[1].Value = ((byte[])(Name));
+                this.Adapter.InsertCommand.Parameters[1].Value = ((string)(Name));
             }
             global::System.Data.ConnectionState previousConnectionState = this.Adapter.InsertCommand.Connection.State;
@@ -4134,5 +4305,5 @@
         [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")]
         [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Update, true)]
-        public virtual int Update(System.Guid PermissionOwnerId, byte[] Name, System.Guid Original_PermissionOwnerId) {
+        public virtual int Update(System.Guid PermissionOwnerId, string Name, System.Guid Original_PermissionOwnerId) {
             this.Adapter.UpdateCommand.Parameters[0].Value = ((System.Guid)(PermissionOwnerId));
             if ((Name == null)) {
@@ -4140,5 +4311,5 @@
             }
             else {
-                this.Adapter.UpdateCommand.Parameters[1].Value = ((byte[])(Name));
+                this.Adapter.UpdateCommand.Parameters[1].Value = ((string)(Name));
             }
             this.Adapter.UpdateCommand.Parameters[2].Value = ((System.Guid)(Original_PermissionOwnerId));
@@ -4162,5 +4333,5 @@
         [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")]
         [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Update, true)]
-        public virtual int Update(byte[] Name, System.Guid Original_PermissionOwnerId) {
+        public virtual int Update(string Name, System.Guid Original_PermissionOwnerId) {
             return this.Update(Original_PermissionOwnerId, Name, Original_PermissionOwnerId);
         }
@@ -4313,14 +4484,32 @@
         private void InitConnection() {
             this._connection = new global::System.Data.SqlClient.SqlConnection();
-            this._connection.ConnectionString = global::HeuristicLab.Security.ADODataAccess_3._2.Properties.Settings.Default.HeuristicLab_SecurityConnectionString;
+            this._connection.ConnectionString = global::HeuristicLab.Security.ADODataAccess.Properties.Settings.Default.HeuristicLab_SecurityConnectionString;
         }
         
         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
         private void InitCommandCollection() {
-            this._commandCollection = new global::System.Data.SqlClient.SqlCommand[1];
+            this._commandCollection = new global::System.Data.SqlClient.SqlCommand[4];
             this._commandCollection[0] = new global::System.Data.SqlClient.SqlCommand();
             this._commandCollection[0].Connection = this.Connection;
             this._commandCollection[0].CommandText = "SELECT * FROM dbo.PermissionOwner_UserGroup";
             this._commandCollection[0].CommandType = global::System.Data.CommandType.Text;
+            this._commandCollection[1] = new global::System.Data.SqlClient.SqlCommand();
+            this._commandCollection[1].Connection = this.Connection;
+            this._commandCollection[1].CommandText = "SELECT * FROM dbo.PermissionOwner_UserGroup WHERE PermissionOwnerId = @Permission" +
+                "OwnerId ";
+            this._commandCollection[1].CommandType = global::System.Data.CommandType.Text;
+            this._commandCollection[1].Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@PermissionOwnerId", global::System.Data.SqlDbType.UniqueIdentifier, 16, global::System.Data.ParameterDirection.Input, 0, 0, "PermissionOwnerId", global::System.Data.DataRowVersion.Current, false, null, "", "", ""));
+            this._commandCollection[2] = new global::System.Data.SqlClient.SqlCommand();
+            this._commandCollection[2].Connection = this.Connection;
+            this._commandCollection[2].CommandText = "SELECT * FROM dbo.PermissionOwner_UserGroup WHERE PermissionOwnerId = @Permission" +
+                "OwnerId AND UserGroupId = @UserGroupId";
+            this._commandCollection[2].CommandType = global::System.Data.CommandType.Text;
+            this._commandCollection[2].Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@PermissionOwnerId", global::System.Data.SqlDbType.UniqueIdentifier, 16, global::System.Data.ParameterDirection.Input, 0, 0, "PermissionOwnerId", global::System.Data.DataRowVersion.Current, false, null, "", "", ""));
+            this._commandCollection[2].Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@UserGroupId", global::System.Data.SqlDbType.UniqueIdentifier, 16, global::System.Data.ParameterDirection.Input, 0, 0, "UserGroupId", global::System.Data.DataRowVersion.Current, false, null, "", "", ""));
+            this._commandCollection[3] = new global::System.Data.SqlClient.SqlCommand();
+            this._commandCollection[3].Connection = this.Connection;
+            this._commandCollection[3].CommandText = "SELECT * FROM dbo.PermissionOwner_UserGroup WHERE UserGroupId = @UserGroupId";
+            this._commandCollection[3].CommandType = global::System.Data.CommandType.Text;
+            this._commandCollection[3].Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@UserGroupId", global::System.Data.SqlDbType.UniqueIdentifier, 16, global::System.Data.ParameterDirection.Input, 0, 0, "UserGroupId", global::System.Data.DataRowVersion.Current, false, null, "", "", ""));
         }
         
@@ -4342,4 +4531,78 @@
         public virtual dsSecurity.PermissionOwner_UserGroupDataTable GetData() {
             this.Adapter.SelectCommand = this.CommandCollection[0];
+            dsSecurity.PermissionOwner_UserGroupDataTable dataTable = new dsSecurity.PermissionOwner_UserGroupDataTable();
+            this.Adapter.Fill(dataTable);
+            return dataTable;
+        }
+        
+        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")]
+        [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Fill, false)]
+        public virtual int FillByPermissionOwnerId(dsSecurity.PermissionOwner_UserGroupDataTable dataTable, System.Guid PermissionOwnerId) {
+            this.Adapter.SelectCommand = this.CommandCollection[1];
+            this.Adapter.SelectCommand.Parameters[0].Value = ((System.Guid)(PermissionOwnerId));
+            if ((this.ClearBeforeFill == true)) {
+                dataTable.Clear();
+            }
+            int returnValue = this.Adapter.Fill(dataTable);
+            return returnValue;
+        }
+        
+        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")]
+        [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Select, false)]
+        public virtual dsSecurity.PermissionOwner_UserGroupDataTable GetDataByPermissionOwnerId(System.Guid PermissionOwnerId) {
+            this.Adapter.SelectCommand = this.CommandCollection[1];
+            this.Adapter.SelectCommand.Parameters[0].Value = ((System.Guid)(PermissionOwnerId));
+            dsSecurity.PermissionOwner_UserGroupDataTable dataTable = new dsSecurity.PermissionOwner_UserGroupDataTable();
+            this.Adapter.Fill(dataTable);
+            return dataTable;
+        }
+        
+        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")]
+        [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Fill, false)]
+        public virtual int FillByPermissionOwnerUserGroupId(dsSecurity.PermissionOwner_UserGroupDataTable dataTable, System.Guid PermissionOwnerId, System.Guid UserGroupId) {
+            this.Adapter.SelectCommand = this.CommandCollection[2];
+            this.Adapter.SelectCommand.Parameters[0].Value = ((System.Guid)(PermissionOwnerId));
+            this.Adapter.SelectCommand.Parameters[1].Value = ((System.Guid)(UserGroupId));
+            if ((this.ClearBeforeFill == true)) {
+                dataTable.Clear();
+            }
+            int returnValue = this.Adapter.Fill(dataTable);
+            return returnValue;
+        }
+        
+        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")]
+        [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Select, false)]
+        public virtual dsSecurity.PermissionOwner_UserGroupDataTable GetDataByPermissionOwnerUserGroupId(System.Guid PermissionOwnerId, System.Guid UserGroupId) {
+            this.Adapter.SelectCommand = this.CommandCollection[2];
+            this.Adapter.SelectCommand.Parameters[0].Value = ((System.Guid)(PermissionOwnerId));
+            this.Adapter.SelectCommand.Parameters[1].Value = ((System.Guid)(UserGroupId));
+            dsSecurity.PermissionOwner_UserGroupDataTable dataTable = new dsSecurity.PermissionOwner_UserGroupDataTable();
+            this.Adapter.Fill(dataTable);
+            return dataTable;
+        }
+        
+        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")]
+        [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Fill, false)]
+        public virtual int FillByUserGroupId(dsSecurity.PermissionOwner_UserGroupDataTable dataTable, System.Guid UserGroupId) {
+            this.Adapter.SelectCommand = this.CommandCollection[3];
+            this.Adapter.SelectCommand.Parameters[0].Value = ((System.Guid)(UserGroupId));
+            if ((this.ClearBeforeFill == true)) {
+                dataTable.Clear();
+            }
+            int returnValue = this.Adapter.Fill(dataTable);
+            return returnValue;
+        }
+        
+        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")]
+        [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Select, false)]
+        public virtual dsSecurity.PermissionOwner_UserGroupDataTable GetDataByUserGroupId(System.Guid UserGroupId) {
+            this.Adapter.SelectCommand = this.CommandCollection[3];
+            this.Adapter.SelectCommand.Parameters[0].Value = ((System.Guid)(UserGroupId));
             dsSecurity.PermissionOwner_UserGroupDataTable dataTable = new dsSecurity.PermissionOwner_UserGroupDataTable();
             this.Adapter.Fill(dataTable);
Index: /trunk/sources/HeuristicLab.Security.ADODataAccess/3.2/dsSecurity.xsd
===================================================================
--- /trunk/sources/HeuristicLab.Security.ADODataAccess/3.2/dsSecurity.xsd	(revision 1655)
+++ /trunk/sources/HeuristicLab.Security.ADODataAccess/3.2/dsSecurity.xsd	(revision 1656)
@@ -5,5 +5,5 @@
       <DataSource DefaultConnectionIndex="0" FunctionsComponentName="QueriesTableAdapter" Modifier="AutoLayout, AnsiClass, Class, Public" SchemaSerializationMode="IncludeSchema" xmlns="urn:schemas-microsoft-com:xml-msdatasource">
         <Connections>
-          <Connection AppSettingsObjectName="Settings" AppSettingsPropertyName="HeuristicLab_SecurityConnectionString" ConnectionStringObject="" IsAppSettingsProperty="true" Modifier="Assembly" Name="HeuristicLab_SecurityConnectionString (Settings)" ParameterPrefix="@" PropertyReference="ApplicationSettings.HeuristicLab.Security.ADODataAccess_3._2.Properties.Settings.GlobalReference.Default.HeuristicLab_SecurityConnectionString" Provider="System.Data.SqlClient" />
+          <Connection AppSettingsObjectName="Settings" AppSettingsPropertyName="HeuristicLab_SecurityConnectionString" ConnectionStringObject="" IsAppSettingsProperty="true" Modifier="Assembly" Name="HeuristicLab_SecurityConnectionString (Settings)" ParameterPrefix="@" PropertyReference="ApplicationSettings.HeuristicLab.Security.ADODataAccess.Properties.Settings.GlobalReference.Default.HeuristicLab_SecurityConnectionString" Provider="System.Data.SqlClient" />
         </Connections>
         <Tables>
@@ -102,5 +102,16 @@
               <Mapping SourceColumn="PermissionOwnerId" DataSetColumn="PermissionOwnerId" />
             </Mappings>
-            <Sources />
+            <Sources>
+              <DbSource ConnectionRef="HeuristicLab_SecurityConnectionString (Settings)" DbObjectName="[HeuristicLab.Security].dbo.UserGroup" DbObjectType="Table" FillMethodModifier="Public" FillMethodName="FillById" GenerateMethods="Both" GenerateShortCommands="true" GeneratorGetMethodName="GetDataById" GeneratorSourceName="FillById" GetMethodModifier="Public" GetMethodName="GetDataById" QueryType="Rowset" ScalarCallRetval="System.Object, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" UseOptimisticConcurrency="true" UserGetMethodName="GetDataById" UserSourceName="FillById">
+                <SelectCommand>
+                  <DbCommand CommandType="Text" ModifiedByUser="true">
+                    <CommandText>SELECT * FROM dbo.UserGroup WHERE PermissionOwnerId = @Id</CommandText>
+                    <Parameters>
+                      <Parameter AllowDbNull="false" AutogeneratedName="Id" ColumnName="PermissionOwnerId" DataSourceName="[HeuristicLab.Security].dbo.UserGroup" DataTypeServer="uniqueidentifier" DbType="Guid" Direction="Input" ParameterName="@Id" Precision="0" ProviderType="UniqueIdentifier" Scale="0" Size="16" SourceColumn="PermissionOwnerId" SourceColumnNullMapping="false" SourceVersion="Current" />
+                    </Parameters>
+                  </DbCommand>
+                </SelectCommand>
+              </DbSource>
+            </Sources>
           </TableAdapter>
           <TableAdapter BaseClass="System.ComponentModel.Component" DataAccessorModifier="AutoLayout, AnsiClass, Class, Public" DataAccessorName="HLUserTableAdapter" GeneratorDataComponentClassName="HLUserTableAdapter" Name="HLUser" UserDataComponentName="HLUserTableAdapter">
@@ -109,5 +120,5 @@
                 <DeleteCommand>
                   <DbCommand CommandType="Text" ModifiedByUser="false">
-                    <CommandText>DELETE FROM [dbo].[HLUser] WHERE (([PermissionOwnerId] = @Original_PermissionOwnerId))</CommandText>
+                    <CommandText>DELETE FROM [HLUser] WHERE (([PermissionOwnerId] = @Original_PermissionOwnerId))</CommandText>
                     <Parameters>
                       <Parameter AllowDbNull="false" AutogeneratedName="" DataSourceName="" DbType="Guid" Direction="Input" ParameterName="@Original_PermissionOwnerId" Precision="0" ProviderType="UniqueIdentifier" Scale="0" Size="0" SourceColumn="PermissionOwnerId" SourceColumnNullMapping="false" SourceVersion="Original" />
@@ -117,9 +128,9 @@
                 <InsertCommand>
                   <DbCommand CommandType="Text" ModifiedByUser="false">
-                    <CommandText>INSERT INTO [dbo].[HLUser] ([PermissionOwnerId], [Password], [Login], [MailAddress]) VALUES (@PermissionOwnerId, @Password, @Login, @MailAddress);
+                    <CommandText>INSERT INTO [HLUser] ([PermissionOwnerId], [Password], [Login], [MailAddress]) VALUES (@PermissionOwnerId, @Password, @Login, @MailAddress);
 SELECT PermissionOwnerId, Password, Login, MailAddress FROM HLUser WHERE (PermissionOwnerId = @PermissionOwnerId)</CommandText>
                     <Parameters>
                       <Parameter AllowDbNull="false" AutogeneratedName="" DataSourceName="" DbType="Guid" Direction="Input" ParameterName="@PermissionOwnerId" Precision="0" ProviderType="UniqueIdentifier" Scale="0" Size="0" SourceColumn="PermissionOwnerId" SourceColumnNullMapping="false" SourceVersion="Current" />
-                      <Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DbType="Binary" Direction="Input" ParameterName="@Password" Precision="0" ProviderType="VarBinary" Scale="0" Size="0" SourceColumn="Password" SourceColumnNullMapping="false" SourceVersion="Current" />
+                      <Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DbType="AnsiString" Direction="Input" ParameterName="@Password" Precision="0" ProviderType="VarChar" Scale="0" Size="0" SourceColumn="Password" SourceColumnNullMapping="false" SourceVersion="Current" />
                       <Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DbType="AnsiString" Direction="Input" ParameterName="@Login" Precision="0" ProviderType="VarChar" Scale="0" Size="0" SourceColumn="Login" SourceColumnNullMapping="false" SourceVersion="Current" />
                       <Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DbType="AnsiString" Direction="Input" ParameterName="@MailAddress" Precision="0" ProviderType="VarChar" Scale="0" Size="0" SourceColumn="MailAddress" SourceColumnNullMapping="false" SourceVersion="Current" />
@@ -129,5 +140,5 @@
                 <SelectCommand>
                   <DbCommand CommandType="Text" ModifiedByUser="true">
-                    <CommandText>SELECT * FROM dbo.HLUser</CommandText>
+                    <CommandText>SELECT * FROM HLUser</CommandText>
                     <Parameters />
                   </DbCommand>
@@ -135,9 +146,9 @@
                 <UpdateCommand>
                   <DbCommand CommandType="Text" ModifiedByUser="false">
-                    <CommandText>UPDATE [dbo].[HLUser] SET [PermissionOwnerId] = @PermissionOwnerId, [Password] = @Password, [Login] = @Login, [MailAddress] = @MailAddress WHERE (([PermissionOwnerId] = @Original_PermissionOwnerId));
+                    <CommandText>UPDATE [HLUser] SET [PermissionOwnerId] = @PermissionOwnerId, [Password] = @Password, [Login] = @Login, [MailAddress] = @MailAddress WHERE (([PermissionOwnerId] = @Original_PermissionOwnerId));
 SELECT PermissionOwnerId, Password, Login, MailAddress FROM HLUser WHERE (PermissionOwnerId = @PermissionOwnerId)</CommandText>
                     <Parameters>
                       <Parameter AllowDbNull="false" AutogeneratedName="" DataSourceName="" DbType="Guid" Direction="Input" ParameterName="@PermissionOwnerId" Precision="0" ProviderType="UniqueIdentifier" Scale="0" Size="0" SourceColumn="PermissionOwnerId" SourceColumnNullMapping="false" SourceVersion="Current" />
-                      <Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DbType="Binary" Direction="Input" ParameterName="@Password" Precision="0" ProviderType="VarBinary" Scale="0" Size="0" SourceColumn="Password" SourceColumnNullMapping="false" SourceVersion="Current" />
+                      <Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DbType="AnsiString" Direction="Input" ParameterName="@Password" Precision="0" ProviderType="VarChar" Scale="0" Size="0" SourceColumn="Password" SourceColumnNullMapping="false" SourceVersion="Current" />
                       <Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DbType="AnsiString" Direction="Input" ParameterName="@Login" Precision="0" ProviderType="VarChar" Scale="0" Size="0" SourceColumn="Login" SourceColumnNullMapping="false" SourceVersion="Current" />
                       <Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DbType="AnsiString" Direction="Input" ParameterName="@MailAddress" Precision="0" ProviderType="VarChar" Scale="0" Size="0" SourceColumn="MailAddress" SourceColumnNullMapping="false" SourceVersion="Current" />
@@ -154,5 +165,16 @@
               <Mapping SourceColumn="MailAddress" DataSetColumn="MailAddress" />
             </Mappings>
-            <Sources />
+            <Sources>
+              <DbSource ConnectionRef="HeuristicLab_SecurityConnectionString (Settings)" DbObjectName="[HeuristicLab.Security].dbo.HLUser" DbObjectType="Table" FillMethodModifier="Public" FillMethodName="FillById" GenerateMethods="Both" GenerateShortCommands="true" GeneratorGetMethodName="GetDataById" GeneratorSourceName="FillById" GetMethodModifier="Public" GetMethodName="GetDataById" QueryType="Rowset" ScalarCallRetval="System.Object, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" UseOptimisticConcurrency="true" UserGetMethodName="GetDataById" UserSourceName="FillById">
+                <SelectCommand>
+                  <DbCommand CommandType="Text" ModifiedByUser="true">
+                    <CommandText>SELECT * FROM HLUser WHERE PermissionOwnerId = @Id</CommandText>
+                    <Parameters>
+                      <Parameter AllowDbNull="false" AutogeneratedName="Id" ColumnName="PermissionOwnerId" DataSourceName="[HeuristicLab.Security].dbo.HLUser" DataTypeServer="uniqueidentifier" DbType="Guid" Direction="Input" ParameterName="@Id" Precision="0" ProviderType="UniqueIdentifier" Scale="0" Size="16" SourceColumn="PermissionOwnerId" SourceColumnNullMapping="false" SourceVersion="Current" />
+                    </Parameters>
+                  </DbCommand>
+                </SelectCommand>
+              </DbSource>
+            </Sources>
           </TableAdapter>
           <TableAdapter BaseClass="System.ComponentModel.Component" DataAccessorModifier="AutoLayout, AnsiClass, Class, Public" DataAccessorName="PermissionTableAdapter" GeneratorDataComponentClassName="PermissionTableAdapter" Name="Permission" UserDataComponentName="PermissionTableAdapter">
@@ -161,5 +183,5 @@
                 <DeleteCommand>
                   <DbCommand CommandType="Text" ModifiedByUser="false">
-                    <CommandText>DELETE FROM [dbo].[Permission] WHERE (([PermissionId] = @Original_PermissionId))</CommandText>
+                    <CommandText>DELETE FROM [Permission] WHERE (([PermissionId] = @Original_PermissionId))</CommandText>
                     <Parameters>
                       <Parameter AllowDbNull="false" AutogeneratedName="" DataSourceName="" DbType="Guid" Direction="Input" ParameterName="@Original_PermissionId" Precision="0" ProviderType="UniqueIdentifier" Scale="0" Size="0" SourceColumn="PermissionId" SourceColumnNullMapping="false" SourceVersion="Original" />
@@ -169,10 +191,10 @@
                 <InsertCommand>
                   <DbCommand CommandType="Text" ModifiedByUser="false">
-                    <CommandText>INSERT INTO [dbo].[Permission] ([PermissionId], [Name], [Description], [Plugin]) VALUES (@PermissionId, @Name, @Description, @Plugin);
+                    <CommandText>INSERT INTO [Permission] ([PermissionId], [Name], [Description], [Plugin]) VALUES (@PermissionId, @Name, @Description, @Plugin);
 SELECT PermissionId, Name, Description, Plugin FROM Permission WHERE (PermissionId = @PermissionId)</CommandText>
                     <Parameters>
                       <Parameter AllowDbNull="false" AutogeneratedName="" DataSourceName="" DbType="Guid" Direction="Input" ParameterName="@PermissionId" Precision="0" ProviderType="UniqueIdentifier" Scale="0" Size="0" SourceColumn="PermissionId" SourceColumnNullMapping="false" SourceVersion="Current" />
-                      <Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DbType="Binary" Direction="Input" ParameterName="@Name" Precision="0" ProviderType="VarBinary" Scale="0" Size="0" SourceColumn="Name" SourceColumnNullMapping="false" SourceVersion="Current" />
-                      <Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DbType="Binary" Direction="Input" ParameterName="@Description" Precision="0" ProviderType="VarBinary" Scale="0" Size="0" SourceColumn="Description" SourceColumnNullMapping="false" SourceVersion="Current" />
+                      <Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DbType="AnsiString" Direction="Input" ParameterName="@Name" Precision="0" ProviderType="VarChar" Scale="0" Size="0" SourceColumn="Name" SourceColumnNullMapping="false" SourceVersion="Current" />
+                      <Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DbType="AnsiString" Direction="Input" ParameterName="@Description" Precision="0" ProviderType="VarChar" Scale="0" Size="0" SourceColumn="Description" SourceColumnNullMapping="false" SourceVersion="Current" />
                       <Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DbType="AnsiString" Direction="Input" ParameterName="@Plugin" Precision="0" ProviderType="VarChar" Scale="0" Size="0" SourceColumn="Plugin" SourceColumnNullMapping="false" SourceVersion="Current" />
                     </Parameters>
@@ -181,5 +203,5 @@
                 <SelectCommand>
                   <DbCommand CommandType="Text" ModifiedByUser="true">
-                    <CommandText>SELECT * FROM dbo.Permission</CommandText>
+                    <CommandText>SELECT * FROM Permission</CommandText>
                     <Parameters />
                   </DbCommand>
@@ -187,10 +209,10 @@
                 <UpdateCommand>
                   <DbCommand CommandType="Text" ModifiedByUser="false">
-                    <CommandText>UPDATE [dbo].[Permission] SET [PermissionId] = @PermissionId, [Name] = @Name, [Description] = @Description, [Plugin] = @Plugin WHERE (([PermissionId] = @Original_PermissionId));
+                    <CommandText>UPDATE [Permission] SET [PermissionId] = @PermissionId, [Name] = @Name, [Description] = @Description, [Plugin] = @Plugin WHERE (([PermissionId] = @Original_PermissionId));
 SELECT PermissionId, Name, Description, Plugin FROM Permission WHERE (PermissionId = @PermissionId)</CommandText>
                     <Parameters>
                       <Parameter AllowDbNull="false" AutogeneratedName="" DataSourceName="" DbType="Guid" Direction="Input" ParameterName="@PermissionId" Precision="0" ProviderType="UniqueIdentifier" Scale="0" Size="0" SourceColumn="PermissionId" SourceColumnNullMapping="false" SourceVersion="Current" />
-                      <Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DbType="Binary" Direction="Input" ParameterName="@Name" Precision="0" ProviderType="VarBinary" Scale="0" Size="0" SourceColumn="Name" SourceColumnNullMapping="false" SourceVersion="Current" />
-                      <Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DbType="Binary" Direction="Input" ParameterName="@Description" Precision="0" ProviderType="VarBinary" Scale="0" Size="0" SourceColumn="Description" SourceColumnNullMapping="false" SourceVersion="Current" />
+                      <Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DbType="AnsiString" Direction="Input" ParameterName="@Name" Precision="0" ProviderType="VarChar" Scale="0" Size="0" SourceColumn="Name" SourceColumnNullMapping="false" SourceVersion="Current" />
+                      <Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DbType="AnsiString" Direction="Input" ParameterName="@Description" Precision="0" ProviderType="VarChar" Scale="0" Size="0" SourceColumn="Description" SourceColumnNullMapping="false" SourceVersion="Current" />
                       <Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DbType="AnsiString" Direction="Input" ParameterName="@Plugin" Precision="0" ProviderType="VarChar" Scale="0" Size="0" SourceColumn="Plugin" SourceColumnNullMapping="false" SourceVersion="Current" />
                       <Parameter AllowDbNull="false" AutogeneratedName="" DataSourceName="" DbType="Guid" Direction="Input" ParameterName="@Original_PermissionId" Precision="0" ProviderType="UniqueIdentifier" Scale="0" Size="0" SourceColumn="PermissionId" SourceColumnNullMapping="false" SourceVersion="Original" />
@@ -206,5 +228,16 @@
               <Mapping SourceColumn="Plugin" DataSetColumn="Plugin" />
             </Mappings>
-            <Sources />
+            <Sources>
+              <DbSource ConnectionRef="HeuristicLab_SecurityConnectionString (Settings)" DbObjectName="[HeuristicLab.Security].dbo.Permission" DbObjectType="Table" FillMethodModifier="Public" FillMethodName="FillById" GenerateMethods="Both" GenerateShortCommands="true" GeneratorGetMethodName="GetDataById" GeneratorSourceName="FillById" GetMethodModifier="Public" GetMethodName="GetDataById" QueryType="Rowset" ScalarCallRetval="System.Object, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" UseOptimisticConcurrency="true" UserGetMethodName="GetDataById" UserSourceName="FillById">
+                <SelectCommand>
+                  <DbCommand CommandType="Text" ModifiedByUser="true">
+                    <CommandText>SELECT Description, Name, PermissionId, Plugin FROM Permission WHERE (PermissionId = @Id)</CommandText>
+                    <Parameters>
+                      <Parameter AllowDbNull="false" AutogeneratedName="Id" ColumnName="PermissionId" DataSourceName="[HeuristicLab.Security].dbo.Permission" DataTypeServer="uniqueidentifier" DbType="Guid" Direction="Input" ParameterName="@Id" Precision="0" ProviderType="UniqueIdentifier" Scale="0" Size="16" SourceColumn="PermissionId" SourceColumnNullMapping="false" SourceVersion="Current" />
+                    </Parameters>
+                  </DbCommand>
+                </SelectCommand>
+              </DbSource>
+            </Sources>
           </TableAdapter>
           <TableAdapter BaseClass="System.ComponentModel.Component" DataAccessorModifier="AutoLayout, AnsiClass, Class, Public" DataAccessorName="PermissionOwnerTableAdapter" GeneratorDataComponentClassName="PermissionOwnerTableAdapter" Name="PermissionOwner" UserDataComponentName="PermissionOwnerTableAdapter">
@@ -213,5 +246,5 @@
                 <DeleteCommand>
                   <DbCommand CommandType="Text" ModifiedByUser="false">
-                    <CommandText>DELETE FROM [dbo].[PermissionOwner] WHERE (([PermissionOwnerId] = @Original_PermissionOwnerId))</CommandText>
+                    <CommandText>DELETE FROM [PermissionOwner] WHERE (([PermissionOwnerId] = @Original_PermissionOwnerId))</CommandText>
                     <Parameters>
                       <Parameter AllowDbNull="false" AutogeneratedName="" DataSourceName="" DbType="Guid" Direction="Input" ParameterName="@Original_PermissionOwnerId" Precision="0" ProviderType="UniqueIdentifier" Scale="0" Size="0" SourceColumn="PermissionOwnerId" SourceColumnNullMapping="false" SourceVersion="Original" />
@@ -221,9 +254,9 @@
                 <InsertCommand>
                   <DbCommand CommandType="Text" ModifiedByUser="false">
-                    <CommandText>INSERT INTO [dbo].[PermissionOwner] ([PermissionOwnerId], [Name]) VALUES (@PermissionOwnerId, @Name);
+                    <CommandText>INSERT INTO [PermissionOwner] ([PermissionOwnerId], [Name]) VALUES (@PermissionOwnerId, @Name);
 SELECT PermissionOwnerId, Name FROM PermissionOwner WHERE (PermissionOwnerId = @PermissionOwnerId)</CommandText>
                     <Parameters>
                       <Parameter AllowDbNull="false" AutogeneratedName="" DataSourceName="" DbType="Guid" Direction="Input" ParameterName="@PermissionOwnerId" Precision="0" ProviderType="UniqueIdentifier" Scale="0" Size="0" SourceColumn="PermissionOwnerId" SourceColumnNullMapping="false" SourceVersion="Current" />
-                      <Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DbType="Binary" Direction="Input" ParameterName="@Name" Precision="0" ProviderType="VarBinary" Scale="0" Size="0" SourceColumn="Name" SourceColumnNullMapping="false" SourceVersion="Current" />
+                      <Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DbType="AnsiString" Direction="Input" ParameterName="@Name" Precision="0" ProviderType="VarChar" Scale="0" Size="0" SourceColumn="Name" SourceColumnNullMapping="false" SourceVersion="Current" />
                     </Parameters>
                   </DbCommand>
@@ -231,5 +264,5 @@
                 <SelectCommand>
                   <DbCommand CommandType="Text" ModifiedByUser="true">
-                    <CommandText>SELECT * FROM dbo.PermissionOwner</CommandText>
+                    <CommandText>SELECT * FROM PermissionOwner</CommandText>
                     <Parameters />
                   </DbCommand>
@@ -237,9 +270,9 @@
                 <UpdateCommand>
                   <DbCommand CommandType="Text" ModifiedByUser="false">
-                    <CommandText>UPDATE [dbo].[PermissionOwner] SET [PermissionOwnerId] = @PermissionOwnerId, [Name] = @Name WHERE (([PermissionOwnerId] = @Original_PermissionOwnerId));
+                    <CommandText>UPDATE [PermissionOwner] SET [PermissionOwnerId] = @PermissionOwnerId, [Name] = @Name WHERE (([PermissionOwnerId] = @Original_PermissionOwnerId));
 SELECT PermissionOwnerId, Name FROM PermissionOwner WHERE (PermissionOwnerId = @PermissionOwnerId)</CommandText>
                     <Parameters>
                       <Parameter AllowDbNull="false" AutogeneratedName="" DataSourceName="" DbType="Guid" Direction="Input" ParameterName="@PermissionOwnerId" Precision="0" ProviderType="UniqueIdentifier" Scale="0" Size="0" SourceColumn="PermissionOwnerId" SourceColumnNullMapping="false" SourceVersion="Current" />
-                      <Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DbType="Binary" Direction="Input" ParameterName="@Name" Precision="0" ProviderType="VarBinary" Scale="0" Size="0" SourceColumn="Name" SourceColumnNullMapping="false" SourceVersion="Current" />
+                      <Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DbType="AnsiString" Direction="Input" ParameterName="@Name" Precision="0" ProviderType="VarChar" Scale="0" Size="0" SourceColumn="Name" SourceColumnNullMapping="false" SourceVersion="Current" />
                       <Parameter AllowDbNull="false" AutogeneratedName="" DataSourceName="" DbType="Guid" Direction="Input" ParameterName="@Original_PermissionOwnerId" Precision="0" ProviderType="UniqueIdentifier" Scale="0" Size="0" SourceColumn="PermissionOwnerId" SourceColumnNullMapping="false" SourceVersion="Original" />
                     </Parameters>
@@ -252,5 +285,26 @@
               <Mapping SourceColumn="Name" DataSetColumn="Name" />
             </Mappings>
-            <Sources />
+            <Sources>
+              <DbSource ConnectionRef="HeuristicLab_SecurityConnectionString (Settings)" DbObjectName="[HeuristicLab.Security].dbo.PermissionOwner" DbObjectType="Table" FillMethodModifier="Public" FillMethodName="FillById" GenerateMethods="Both" GenerateShortCommands="true" GeneratorGetMethodName="GetDataById" GeneratorSourceName="FillById" GetMethodModifier="Public" GetMethodName="GetDataById" QueryType="Rowset" ScalarCallRetval="System.Object, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" UseOptimisticConcurrency="true" UserGetMethodName="GetDataById" UserSourceName="FillById">
+                <SelectCommand>
+                  <DbCommand CommandType="Text" ModifiedByUser="true">
+                    <CommandText>SELECT * FROM PermissionOwner WHERE (Id = @Id)</CommandText>
+                    <Parameters>
+                      <Parameter AllowDbNull="false" AutogeneratedName="Id" ColumnName="" DataSourceName="" DataTypeServer="unknown" DbType="Object" Direction="Input" ParameterName="@Id" Precision="0" Scale="0" Size="1024" SourceColumn="" SourceColumnNullMapping="false" SourceVersion="Current" />
+                    </Parameters>
+                  </DbCommand>
+                </SelectCommand>
+              </DbSource>
+              <DbSource ConnectionRef="HeuristicLab_SecurityConnectionString (Settings)" DbObjectName="[HeuristicLab.Security].dbo.PermissionOwner" DbObjectType="Table" FillMethodModifier="Public" FillMethodName="FillByName" GenerateMethods="Both" GenerateShortCommands="true" GeneratorGetMethodName="GetDataByName" GeneratorSourceName="FillByName" GetMethodModifier="Public" GetMethodName="GetDataByName" QueryType="Rowset" ScalarCallRetval="System.Object, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" UseOptimisticConcurrency="true" UserGetMethodName="GetDataByName" UserSourceName="FillByName">
+                <SelectCommand>
+                  <DbCommand CommandType="Text" ModifiedByUser="true">
+                    <CommandText>SELECT Name, PermissionOwnerId FROM PermissionOwner WHERE (Name = @Name)</CommandText>
+                    <Parameters>
+                      <Parameter AllowDbNull="true" AutogeneratedName="Name" ColumnName="Name" DataSourceName="[HeuristicLab.Security].dbo.PermissionOwner" DataTypeServer="varchar(MAX)" DbType="AnsiString" Direction="Input" ParameterName="@Name" Precision="0" ProviderType="VarChar" Scale="0" Size="2147483647" SourceColumn="Name" SourceColumnNullMapping="false" SourceVersion="Current" />
+                    </Parameters>
+                  </DbCommand>
+                </SelectCommand>
+              </DbSource>
+            </Sources>
           </TableAdapter>
           <TableAdapter BaseClass="System.ComponentModel.Component" DataAccessorModifier="AutoLayout, AnsiClass, Class, Public" DataAccessorName="PermissionOwner_UserGroupTableAdapter" GeneratorDataComponentClassName="PermissionOwner_UserGroupTableAdapter" Name="PermissionOwner_UserGroup" UserDataComponentName="PermissionOwner_UserGroupTableAdapter">
@@ -300,5 +354,37 @@
               <Mapping SourceColumn="UserGroupId" DataSetColumn="UserGroupId" />
             </Mappings>
-            <Sources />
+            <Sources>
+              <DbSource ConnectionRef="HeuristicLab_SecurityConnectionString (Settings)" DbObjectName="[HeuristicLab.Security].dbo.PermissionOwner_UserGroup" DbObjectType="Table" FillMethodModifier="Public" FillMethodName="FillByPermissionOwnerId" GenerateMethods="Both" GenerateShortCommands="true" GeneratorGetMethodName="GetDataByPermissionOwnerId" GeneratorSourceName="FillByPermissionOwnerId" GetMethodModifier="Public" GetMethodName="GetDataByPermissionOwnerId" QueryType="Rowset" ScalarCallRetval="System.Object, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" UseOptimisticConcurrency="true" UserGetMethodName="GetDataByPermissionOwnerId" UserSourceName="FillByPermissionOwnerId">
+                <SelectCommand>
+                  <DbCommand CommandType="Text" ModifiedByUser="true">
+                    <CommandText>SELECT * FROM dbo.PermissionOwner_UserGroup WHERE PermissionOwnerId = @PermissionOwnerId </CommandText>
+                    <Parameters>
+                      <Parameter AllowDbNull="false" AutogeneratedName="PermissionOwnerId" ColumnName="PermissionOwnerId" DataSourceName="[HeuristicLab.Security].dbo.PermissionOwner_UserGroup" DataTypeServer="uniqueidentifier" DbType="Guid" Direction="Input" ParameterName="@PermissionOwnerId" Precision="0" ProviderType="UniqueIdentifier" Scale="0" Size="16" SourceColumn="PermissionOwnerId" SourceColumnNullMapping="false" SourceVersion="Current" />
+                    </Parameters>
+                  </DbCommand>
+                </SelectCommand>
+              </DbSource>
+              <DbSource ConnectionRef="HeuristicLab_SecurityConnectionString (Settings)" DbObjectName="[HeuristicLab.Security].dbo.PermissionOwner_UserGroup" DbObjectType="Table" FillMethodModifier="Public" FillMethodName="FillByPermissionOwnerUserGroupId" GenerateMethods="Both" GenerateShortCommands="true" GeneratorGetMethodName="GetDataByPermissionOwnerUserGroupId" GeneratorSourceName="FillByPermissionOwnerUserGroupId" GetMethodModifier="Public" GetMethodName="GetDataByPermissionOwnerUserGroupId" QueryType="Rowset" ScalarCallRetval="System.Object, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" UseOptimisticConcurrency="true" UserGetMethodName="GetDataByPermissionOwnerUserGroupId" UserSourceName="FillByPermissionOwnerUserGroupId">
+                <SelectCommand>
+                  <DbCommand CommandType="Text" ModifiedByUser="true">
+                    <CommandText>SELECT * FROM dbo.PermissionOwner_UserGroup WHERE PermissionOwnerId = @PermissionOwnerId AND UserGroupId = @UserGroupId</CommandText>
+                    <Parameters>
+                      <Parameter AllowDbNull="false" AutogeneratedName="PermissionOwnerId" ColumnName="PermissionOwnerId" DataSourceName="[HeuristicLab.Security].dbo.PermissionOwner_UserGroup" DataTypeServer="uniqueidentifier" DbType="Guid" Direction="Input" ParameterName="@PermissionOwnerId" Precision="0" ProviderType="UniqueIdentifier" Scale="0" Size="16" SourceColumn="PermissionOwnerId" SourceColumnNullMapping="false" SourceVersion="Current" />
+                      <Parameter AllowDbNull="false" AutogeneratedName="UserGroupId" ColumnName="UserGroupId" DataSourceName="[HeuristicLab.Security].dbo.PermissionOwner_UserGroup" DataTypeServer="uniqueidentifier" DbType="Guid" Direction="Input" ParameterName="@UserGroupId" Precision="0" ProviderType="UniqueIdentifier" Scale="0" Size="16" SourceColumn="UserGroupId" SourceColumnNullMapping="false" SourceVersion="Current" />
+                    </Parameters>
+                  </DbCommand>
+                </SelectCommand>
+              </DbSource>
+              <DbSource ConnectionRef="HeuristicLab_SecurityConnectionString (Settings)" DbObjectName="[HeuristicLab.Security].dbo.PermissionOwner_UserGroup" DbObjectType="Table" FillMethodModifier="Public" FillMethodName="FillByUserGroupId" GenerateMethods="Both" GenerateShortCommands="true" GeneratorGetMethodName="GetDataByUserGroupId" GeneratorSourceName="FillByUserGroupId" GetMethodModifier="Public" GetMethodName="GetDataByUserGroupId" QueryType="Rowset" ScalarCallRetval="System.Object, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" UseOptimisticConcurrency="true" UserGetMethodName="GetDataByUserGroupId" UserSourceName="FillByUserGroupId">
+                <SelectCommand>
+                  <DbCommand CommandType="Text" ModifiedByUser="true">
+                    <CommandText>SELECT * FROM dbo.PermissionOwner_UserGroup WHERE UserGroupId = @UserGroupId</CommandText>
+                    <Parameters>
+                      <Parameter AllowDbNull="false" AutogeneratedName="UserGroupId" ColumnName="UserGroupId" DataSourceName="[HeuristicLab.Security].dbo.PermissionOwner_UserGroup" DataTypeServer="uniqueidentifier" DbType="Guid" Direction="Input" ParameterName="@UserGroupId" Precision="0" ProviderType="UniqueIdentifier" Scale="0" Size="16" SourceColumn="UserGroupId" SourceColumnNullMapping="false" SourceVersion="Current" />
+                    </Parameters>
+                  </DbCommand>
+                </SelectCommand>
+              </DbSource>
+            </Sources>
           </TableAdapter>
         </Tables>
@@ -307,8 +393,8 @@
     </xs:appinfo>
   </xs:annotation>
-  <xs:element name="dsSecurity" msdata:IsDataSet="true" msdata:UseCurrentLocale="true" msprop:Generator_DataSetName="dsSecurity" msprop:Generator_UserDSName="dsSecurity" msprop:EnableTableAdapterManager="true">
+  <xs:element name="dsSecurity" msdata:IsDataSet="true" msdata:UseCurrentLocale="true" msprop:Generator_UserDSName="dsSecurity" msprop:Generator_DataSetName="dsSecurity" msprop:EnableTableAdapterManager="true">
     <xs:complexType>
       <xs:choice minOccurs="0" maxOccurs="unbounded">
-        <xs:element name="GrantedPermissions" msprop:Generator_UserTableName="GrantedPermissions" msprop:Generator_RowDeletedName="GrantedPermissionsRowDeleted" msprop:Generator_TableClassName="GrantedPermissionsDataTable" msprop:Generator_RowChangedName="GrantedPermissionsRowChanged" msprop:Generator_RowClassName="GrantedPermissionsRow" msprop:Generator_RowChangingName="GrantedPermissionsRowChanging" msprop:Generator_RowEvArgName="GrantedPermissionsRowChangeEvent" msprop:Generator_RowEvHandlerName="GrantedPermissionsRowChangeEventHandler" msprop:Generator_TablePropName="GrantedPermissions" msprop:Generator_TableVarName="tableGrantedPermissions" msprop:Generator_RowDeletingName="GrantedPermissionsRowDeleting">
+        <xs:element name="GrantedPermissions" msprop:Generator_UserTableName="GrantedPermissions" msprop:Generator_RowDeletedName="GrantedPermissionsRowDeleted" msprop:Generator_RowChangedName="GrantedPermissionsRowChanged" msprop:Generator_RowClassName="GrantedPermissionsRow" msprop:Generator_RowChangingName="GrantedPermissionsRowChanging" msprop:Generator_RowEvArgName="GrantedPermissionsRowChangeEvent" msprop:Generator_RowEvHandlerName="GrantedPermissionsRowChangeEventHandler" msprop:Generator_TableClassName="GrantedPermissionsDataTable" msprop:Generator_TableVarName="tableGrantedPermissions" msprop:Generator_RowDeletingName="GrantedPermissionsRowDeleting" msprop:Generator_TablePropName="GrantedPermissions">
           <xs:complexType>
             <xs:sequence>
@@ -319,5 +405,5 @@
           </xs:complexType>
         </xs:element>
-        <xs:element name="UserGroup" msprop:Generator_UserTableName="UserGroup" msprop:Generator_RowDeletedName="UserGroupRowDeleted" msprop:Generator_TableClassName="UserGroupDataTable" msprop:Generator_RowChangedName="UserGroupRowChanged" msprop:Generator_RowClassName="UserGroupRow" msprop:Generator_RowChangingName="UserGroupRowChanging" msprop:Generator_RowEvArgName="UserGroupRowChangeEvent" msprop:Generator_RowEvHandlerName="UserGroupRowChangeEventHandler" msprop:Generator_TablePropName="UserGroup" msprop:Generator_TableVarName="tableUserGroup" msprop:Generator_RowDeletingName="UserGroupRowDeleting">
+        <xs:element name="UserGroup" msprop:Generator_UserTableName="UserGroup" msprop:Generator_RowDeletedName="UserGroupRowDeleted" msprop:Generator_RowChangedName="UserGroupRowChanged" msprop:Generator_RowClassName="UserGroupRow" msprop:Generator_RowChangingName="UserGroupRowChanging" msprop:Generator_RowEvArgName="UserGroupRowChangeEvent" msprop:Generator_RowEvHandlerName="UserGroupRowChangeEventHandler" msprop:Generator_TableClassName="UserGroupDataTable" msprop:Generator_TableVarName="tableUserGroup" msprop:Generator_RowDeletingName="UserGroupRowDeleting" msprop:Generator_TablePropName="UserGroup">
           <xs:complexType>
             <xs:sequence>
@@ -326,17 +412,23 @@
           </xs:complexType>
         </xs:element>
-        <xs:element name="HLUser" msprop:Generator_UserTableName="HLUser" msprop:Generator_RowDeletedName="HLUserRowDeleted" msprop:Generator_TableClassName="HLUserDataTable" msprop:Generator_RowChangedName="HLUserRowChanged" msprop:Generator_RowClassName="HLUserRow" msprop:Generator_RowChangingName="HLUserRowChanging" msprop:Generator_RowEvArgName="HLUserRowChangeEvent" msprop:Generator_RowEvHandlerName="HLUserRowChangeEventHandler" msprop:Generator_TablePropName="HLUser" msprop:Generator_TableVarName="tableHLUser" msprop:Generator_RowDeletingName="HLUserRowDeleting">
+        <xs:element name="HLUser" msprop:Generator_UserTableName="HLUser" msprop:Generator_RowDeletedName="HLUserRowDeleted" msprop:Generator_RowChangedName="HLUserRowChanged" msprop:Generator_RowClassName="HLUserRow" msprop:Generator_RowChangingName="HLUserRowChanging" msprop:Generator_RowEvArgName="HLUserRowChangeEvent" msprop:Generator_RowEvHandlerName="HLUserRowChangeEventHandler" msprop:Generator_TableClassName="HLUserDataTable" msprop:Generator_TableVarName="tableHLUser" msprop:Generator_RowDeletingName="HLUserRowDeleting" msprop:Generator_TablePropName="HLUser">
           <xs:complexType>
             <xs:sequence>
               <xs:element name="PermissionOwnerId" msdata:DataType="System.Guid, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" msprop:Generator_UserColumnName="PermissionOwnerId" msprop:Generator_ColumnPropNameInRow="PermissionOwnerId" msprop:Generator_ColumnVarNameInTable="columnPermissionOwnerId" msprop:Generator_ColumnPropNameInTable="PermissionOwnerIdColumn" type="xs:string" />
-              <xs:element name="Password" msprop:Generator_UserColumnName="Password" msprop:Generator_ColumnPropNameInRow="Password" msprop:Generator_ColumnVarNameInTable="columnPassword" msprop:Generator_ColumnPropNameInTable="PasswordColumn" type="xs:base64Binary" minOccurs="0" />
-              <xs:element name="Login" msprop:Generator_UserColumnName="Login" msprop:Generator_ColumnPropNameInRow="Login" msprop:Generator_ColumnVarNameInTable="columnLogin" msprop:Generator_ColumnPropNameInTable="LoginColumn" minOccurs="0">
-                <xs:simpleType>
-                  <xs:restriction base="xs:string">
-                    <xs:maxLength value="2147483647" />
-                  </xs:restriction>
-                </xs:simpleType>
-              </xs:element>
-              <xs:element name="MailAddress" msprop:Generator_UserColumnName="MailAddress" msprop:Generator_ColumnPropNameInRow="MailAddress" msprop:Generator_ColumnVarNameInTable="columnMailAddress" msprop:Generator_ColumnPropNameInTable="MailAddressColumn" minOccurs="0">
+              <xs:element name="Password" msprop:Generator_UserColumnName="Password" msprop:Generator_ColumnVarNameInTable="columnPassword" msprop:Generator_ColumnPropNameInRow="Password" msprop:Generator_ColumnPropNameInTable="PasswordColumn" minOccurs="0">
+                <xs:simpleType>
+                  <xs:restriction base="xs:string">
+                    <xs:maxLength value="2147483647" />
+                  </xs:restriction>
+                </xs:simpleType>
+              </xs:element>
+              <xs:element name="Login" msprop:Generator_UserColumnName="Login" msprop:Generator_ColumnVarNameInTable="columnLogin" msprop:Generator_ColumnPropNameInRow="Login" msprop:Generator_ColumnPropNameInTable="LoginColumn" minOccurs="0">
+                <xs:simpleType>
+                  <xs:restriction base="xs:string">
+                    <xs:maxLength value="2147483647" />
+                  </xs:restriction>
+                </xs:simpleType>
+              </xs:element>
+              <xs:element name="MailAddress" msprop:Generator_UserColumnName="MailAddress" msprop:Generator_ColumnVarNameInTable="columnMailAddress" msprop:Generator_ColumnPropNameInRow="MailAddress" msprop:Generator_ColumnPropNameInTable="MailAddressColumn" minOccurs="0">
                 <xs:simpleType>
                   <xs:restriction base="xs:string">
@@ -348,11 +440,23 @@
           </xs:complexType>
         </xs:element>
-        <xs:element name="Permission" msprop:Generator_UserTableName="Permission" msprop:Generator_RowDeletedName="PermissionRowDeleted" msprop:Generator_TableClassName="PermissionDataTable" msprop:Generator_RowChangedName="PermissionRowChanged" msprop:Generator_RowClassName="PermissionRow" msprop:Generator_RowChangingName="PermissionRowChanging" msprop:Generator_RowEvArgName="PermissionRowChangeEvent" msprop:Generator_RowEvHandlerName="PermissionRowChangeEventHandler" msprop:Generator_TablePropName="Permission" msprop:Generator_TableVarName="tablePermission" msprop:Generator_RowDeletingName="PermissionRowDeleting">
+        <xs:element name="Permission" msprop:Generator_UserTableName="Permission" msprop:Generator_RowDeletedName="PermissionRowDeleted" msprop:Generator_RowChangedName="PermissionRowChanged" msprop:Generator_RowClassName="PermissionRow" msprop:Generator_RowChangingName="PermissionRowChanging" msprop:Generator_RowEvArgName="PermissionRowChangeEvent" msprop:Generator_RowEvHandlerName="PermissionRowChangeEventHandler" msprop:Generator_TableClassName="PermissionDataTable" msprop:Generator_TableVarName="tablePermission" msprop:Generator_RowDeletingName="PermissionRowDeleting" msprop:Generator_TablePropName="Permission">
           <xs:complexType>
             <xs:sequence>
               <xs:element name="PermissionId" msdata:DataType="System.Guid, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" msprop:Generator_UserColumnName="PermissionId" msprop:Generator_ColumnPropNameInRow="PermissionId" msprop:Generator_ColumnVarNameInTable="columnPermissionId" msprop:Generator_ColumnPropNameInTable="PermissionIdColumn" type="xs:string" />
-              <xs:element name="Name" msprop:Generator_UserColumnName="Name" msprop:Generator_ColumnPropNameInRow="Name" msprop:Generator_ColumnVarNameInTable="columnName" msprop:Generator_ColumnPropNameInTable="NameColumn" type="xs:base64Binary" minOccurs="0" />
-              <xs:element name="Description" msprop:Generator_UserColumnName="Description" msprop:Generator_ColumnPropNameInRow="Description" msprop:Generator_ColumnVarNameInTable="columnDescription" msprop:Generator_ColumnPropNameInTable="DescriptionColumn" type="xs:base64Binary" minOccurs="0" />
-              <xs:element name="Plugin" msprop:Generator_UserColumnName="Plugin" msprop:Generator_ColumnPropNameInRow="Plugin" msprop:Generator_ColumnVarNameInTable="columnPlugin" msprop:Generator_ColumnPropNameInTable="PluginColumn" minOccurs="0">
+              <xs:element name="Name" msprop:Generator_UserColumnName="Name" msprop:Generator_ColumnVarNameInTable="columnName" msprop:Generator_ColumnPropNameInRow="Name" msprop:Generator_ColumnPropNameInTable="NameColumn" minOccurs="0">
+                <xs:simpleType>
+                  <xs:restriction base="xs:string">
+                    <xs:maxLength value="2147483647" />
+                  </xs:restriction>
+                </xs:simpleType>
+              </xs:element>
+              <xs:element name="Description" msprop:Generator_UserColumnName="Description" msprop:Generator_ColumnVarNameInTable="columnDescription" msprop:Generator_ColumnPropNameInRow="Description" msprop:Generator_ColumnPropNameInTable="DescriptionColumn" minOccurs="0">
+                <xs:simpleType>
+                  <xs:restriction base="xs:string">
+                    <xs:maxLength value="2147483647" />
+                  </xs:restriction>
+                </xs:simpleType>
+              </xs:element>
+              <xs:element name="Plugin" msprop:Generator_UserColumnName="Plugin" msprop:Generator_ColumnVarNameInTable="columnPlugin" msprop:Generator_ColumnPropNameInRow="Plugin" msprop:Generator_ColumnPropNameInTable="PluginColumn" minOccurs="0">
                 <xs:simpleType>
                   <xs:restriction base="xs:string">
@@ -364,13 +468,19 @@
           </xs:complexType>
         </xs:element>
-        <xs:element name="PermissionOwner" msprop:Generator_UserTableName="PermissionOwner" msprop:Generator_RowDeletedName="PermissionOwnerRowDeleted" msprop:Generator_TableClassName="PermissionOwnerDataTable" msprop:Generator_RowChangedName="PermissionOwnerRowChanged" msprop:Generator_RowClassName="PermissionOwnerRow" msprop:Generator_RowChangingName="PermissionOwnerRowChanging" msprop:Generator_RowEvArgName="PermissionOwnerRowChangeEvent" msprop:Generator_RowEvHandlerName="PermissionOwnerRowChangeEventHandler" msprop:Generator_TablePropName="PermissionOwner" msprop:Generator_TableVarName="tablePermissionOwner" msprop:Generator_RowDeletingName="PermissionOwnerRowDeleting">
+        <xs:element name="PermissionOwner" msprop:Generator_UserTableName="PermissionOwner" msprop:Generator_RowDeletedName="PermissionOwnerRowDeleted" msprop:Generator_RowChangedName="PermissionOwnerRowChanged" msprop:Generator_RowClassName="PermissionOwnerRow" msprop:Generator_RowChangingName="PermissionOwnerRowChanging" msprop:Generator_RowEvArgName="PermissionOwnerRowChangeEvent" msprop:Generator_RowEvHandlerName="PermissionOwnerRowChangeEventHandler" msprop:Generator_TableClassName="PermissionOwnerDataTable" msprop:Generator_TableVarName="tablePermissionOwner" msprop:Generator_RowDeletingName="PermissionOwnerRowDeleting" msprop:Generator_TablePropName="PermissionOwner">
           <xs:complexType>
             <xs:sequence>
               <xs:element name="PermissionOwnerId" msdata:DataType="System.Guid, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" msprop:Generator_UserColumnName="PermissionOwnerId" msprop:Generator_ColumnPropNameInRow="PermissionOwnerId" msprop:Generator_ColumnVarNameInTable="columnPermissionOwnerId" msprop:Generator_ColumnPropNameInTable="PermissionOwnerIdColumn" type="xs:string" />
-              <xs:element name="Name" msprop:Generator_UserColumnName="Name" msprop:Generator_ColumnPropNameInRow="Name" msprop:Generator_ColumnVarNameInTable="columnName" msprop:Generator_ColumnPropNameInTable="NameColumn" type="xs:base64Binary" minOccurs="0" />
+              <xs:element name="Name" msprop:Generator_UserColumnName="Name" msprop:Generator_ColumnVarNameInTable="columnName" msprop:Generator_ColumnPropNameInRow="Name" msprop:Generator_ColumnPropNameInTable="NameColumn" minOccurs="0">
+                <xs:simpleType>
+                  <xs:restriction base="xs:string">
+                    <xs:maxLength value="2147483647" />
+                  </xs:restriction>
+                </xs:simpleType>
+              </xs:element>
             </xs:sequence>
           </xs:complexType>
         </xs:element>
-        <xs:element name="PermissionOwner_UserGroup" msprop:Generator_UserTableName="PermissionOwner_UserGroup" msprop:Generator_RowDeletedName="PermissionOwner_UserGroupRowDeleted" msprop:Generator_TableClassName="PermissionOwner_UserGroupDataTable" msprop:Generator_RowChangedName="PermissionOwner_UserGroupRowChanged" msprop:Generator_RowClassName="PermissionOwner_UserGroupRow" msprop:Generator_RowChangingName="PermissionOwner_UserGroupRowChanging" msprop:Generator_RowEvArgName="PermissionOwner_UserGroupRowChangeEvent" msprop:Generator_RowEvHandlerName="PermissionOwner_UserGroupRowChangeEventHandler" msprop:Generator_TablePropName="PermissionOwner_UserGroup" msprop:Generator_TableVarName="tablePermissionOwner_UserGroup" msprop:Generator_RowDeletingName="PermissionOwner_UserGroupRowDeleting">
+        <xs:element name="PermissionOwner_UserGroup" msprop:Generator_UserTableName="PermissionOwner_UserGroup" msprop:Generator_RowDeletedName="PermissionOwner_UserGroupRowDeleted" msprop:Generator_RowChangedName="PermissionOwner_UserGroupRowChanged" msprop:Generator_RowClassName="PermissionOwner_UserGroupRow" msprop:Generator_RowChangingName="PermissionOwner_UserGroupRowChanging" msprop:Generator_RowEvArgName="PermissionOwner_UserGroupRowChangeEvent" msprop:Generator_RowEvHandlerName="PermissionOwner_UserGroupRowChangeEventHandler" msprop:Generator_TableClassName="PermissionOwner_UserGroupDataTable" msprop:Generator_TableVarName="tablePermissionOwner_UserGroup" msprop:Generator_RowDeletingName="PermissionOwner_UserGroupRowDeleting" msprop:Generator_TablePropName="PermissionOwner_UserGroup">
           <xs:complexType>
             <xs:sequence>
Index: /trunk/sources/HeuristicLab.Security.ADODataAccess/3.2/dsSecurity.xss
===================================================================
--- /trunk/sources/HeuristicLab.Security.ADODataAccess/3.2/dsSecurity.xss	(revision 1655)
+++ /trunk/sources/HeuristicLab.Security.ADODataAccess/3.2/dsSecurity.xss	(revision 1656)
@@ -5,19 +5,19 @@
      the code is regenerated.
 </autogenerated>-->
-<DiagramLayout xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" ex:showrelationlabel="False" ViewPortX="230" ViewPortY="47" xmlns:ex="urn:schemas-microsoft-com:xml-msdatasource-layout-extended" xmlns="urn:schemas-microsoft-com:xml-msdatasource-layout">
+<DiagramLayout xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" ex:showrelationlabel="False" ViewPortX="231" ViewPortY="48" xmlns:ex="urn:schemas-microsoft-com:xml-msdatasource-layout-extended" xmlns="urn:schemas-microsoft-com:xml-msdatasource-layout">
   <Shapes>
     <Shape ID="DesignTable:GrantedPermissions" ZOrder="9" X="241" Y="438" Height="122" Width="256" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="75" />
-    <Shape ID="DesignTable:UserGroup" ZOrder="8" X="946" Y="238" Height="88" Width="202" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="42" />
-    <Shape ID="DesignTable:HLUser" ZOrder="1" X="577" Y="484" Height="139" Width="182" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="92" />
-    <Shape ID="DesignTable:Permission" ZOrder="7" X="292" Y="210" Height="139" Width="204" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="92" />
-    <Shape ID="DesignTable:PermissionOwner" ZOrder="5" X="600" Y="61" Height="105" Width="242" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="58" />
-    <Shape ID="DesignTable:PermissionOwner_UserGroup" ZOrder="6" X="860" Y="455" Height="105" Width="300" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="58" />
+    <Shape ID="DesignTable:UserGroup" ZOrder="8" X="946" Y="238" Height="106" Width="202" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="42" />
+    <Shape ID="DesignTable:HLUser" ZOrder="2" X="577" Y="484" Height="156" Width="182" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="92" />
+    <Shape ID="DesignTable:Permission" ZOrder="3" X="292" Y="192" Height="156" Width="204" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="92" />
+    <Shape ID="DesignTable:PermissionOwner" ZOrder="1" X="600" Y="61" Height="139" Width="242" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="58" />
+    <Shape ID="DesignTable:PermissionOwner_UserGroup" ZOrder="7" X="860" Y="455" Height="156" Width="300" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="58" />
   </Shapes>
   <Connectors>
-    <Connector ID="DesignRelation:R_49" ZOrder="4" LineWidth="11">
+    <Connector ID="DesignRelation:R_49" ZOrder="6" LineWidth="11">
       <RoutePoints>
         <Point>
           <X>394</X>
-          <Y>349</Y>
+          <Y>348</Y>
         </Point>
         <Point>
@@ -31,5 +31,5 @@
         <Point>
           <X>628</X>
-          <Y>166</Y>
+          <Y>200</Y>
         </Point>
         <Point>
@@ -43,5 +43,5 @@
       </RoutePoints>
     </Connector>
-    <Connector ID="DesignRelation:UserGroup_is_a_PermissionOwner" ZOrder="2" LineWidth="11">
+    <Connector ID="DesignRelation:UserGroup_is_a_PermissionOwner" ZOrder="4" LineWidth="11">
       <RoutePoints>
         <Point>
@@ -63,5 +63,5 @@
         <Point>
           <X>706</X>
-          <Y>166</Y>
+          <Y>200</Y>
         </Point>
         <Point>
@@ -71,9 +71,9 @@
       </RoutePoints>
     </Connector>
-    <Connector ID="DesignRelation:R_44" ZOrder="3" LineWidth="11">
+    <Connector ID="DesignRelation:R_44" ZOrder="5" LineWidth="11">
       <RoutePoints>
         <Point>
           <X>817</X>
-          <Y>166</Y>
+          <Y>200</Y>
         </Point>
         <Point>
@@ -91,5 +91,5 @@
         <Point>
           <X>1024</X>
-          <Y>326</Y>
+          <Y>344</Y>
         </Point>
         <Point>
Index: /trunk/sources/HeuristicLab.Security.Contracts/3.2/BusinessObjects/Permission.cs
===================================================================
--- /trunk/sources/HeuristicLab.Security.Contracts/3.2/BusinessObjects/Permission.cs	(revision 1655)
+++ /trunk/sources/HeuristicLab.Security.Contracts/3.2/BusinessObjects/Permission.cs	(revision 1656)
@@ -31,5 +31,8 @@
     [DataMember]
     public String Description { get; set; }
-
+    [DataMember]
+    public String Name { get; set; }
+    [DataMember]
+    public String Plugin { get; set; }
   }
 }
Index: /trunk/sources/HeuristicLab.Security.Contracts/3.2/BusinessObjects/User.cs
===================================================================
--- /trunk/sources/HeuristicLab.Security.Contracts/3.2/BusinessObjects/User.cs	(revision 1655)
+++ /trunk/sources/HeuristicLab.Security.Contracts/3.2/BusinessObjects/User.cs	(revision 1656)
@@ -30,5 +30,9 @@
   public class User : PermissionOwner {
     [DataMember]
+    public String Login { get; set; }
+    [DataMember]
     public String Password { get; set; }
+    [DataMember]
+    public String MailAddress { get; set; }
   }
 }
Index: /trunk/sources/HeuristicLab.Security.DataAccess/3.2/IPermissionOwnerAdapter.cs
===================================================================
--- /trunk/sources/HeuristicLab.Security.DataAccess/3.2/IPermissionOwnerAdapter.cs	(revision 1655)
+++ /trunk/sources/HeuristicLab.Security.DataAccess/3.2/IPermissionOwnerAdapter.cs	(revision 1656)
@@ -30,5 +30,12 @@
   /// The permission owner database adapter
   /// </summary>
-  public interface IPermissionOwnerAdapter: IDataAdapter<PermissionOwner> {
+  public interface IPermissionOwnerAdapter: IPolymorphicDataAdapter<PermissionOwner> {
+    /// <summary>
+    /// Gets the permissionOwner and updates the values of the object
+    /// </summary>
+    /// <param name="resource"></param>
+    /// <returns></returns>
+    bool GetById(PermissionOwner permOwner);
+    
     /// <summary>
     /// Get the permission owner with the specified name
