Index: branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Security.Contracts/3.3/BusinessObjects/GrantedPermission.cs
===================================================================
--- branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Security.Contracts/3.3/BusinessObjects/GrantedPermission.cs	(revision 4072)
+++ branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Security.Contracts/3.3/BusinessObjects/GrantedPermission.cs	(revision 4072)
@@ -0,0 +1,39 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Text;
+using System.Runtime.Serialization;
+using HeuristicLab.DataAccess.Interfaces;
+
+namespace HeuristicLab.Security.Contracts.BusinessObjects {
+  
+  [DataContract]
+  public class GrantedPermission {    
+    [DataMember]
+    public Guid PermissionId { get; set; }
+    [DataMember]
+    public Guid EntityId { get; set; }
+    [DataMember]
+    public Guid PermissionOwnerId { get; set; }
+  }
+}
Index: branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Security.Contracts/3.3/BusinessObjects/Permission.cs
===================================================================
--- branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Security.Contracts/3.3/BusinessObjects/Permission.cs	(revision 4072)
+++ branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Security.Contracts/3.3/BusinessObjects/Permission.cs	(revision 4072)
@@ -0,0 +1,38 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Text;
+using System.Runtime.Serialization;
+
+namespace HeuristicLab.Security.Contracts.BusinessObjects {
+
+  [DataContract]
+  public class Permission: PersistableObject {
+    [DataMember]
+    public String Description { get; set; }
+    [DataMember]
+    public String Name { get; set; }
+    [DataMember]
+    public String Plugin { get; set; }
+  }
+}
Index: branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Security.Contracts/3.3/BusinessObjects/PermissionOwner.cs
===================================================================
--- branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Security.Contracts/3.3/BusinessObjects/PermissionOwner.cs	(revision 4072)
+++ branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Security.Contracts/3.3/BusinessObjects/PermissionOwner.cs	(revision 4072)
@@ -0,0 +1,37 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Text;
+using System.Runtime.Serialization;
+
+namespace HeuristicLab.Security.Contracts.BusinessObjects {
+
+  [DataContract]
+  [KnownType(typeof(User))]
+  [KnownType(typeof(UserGroup))]
+  public class PermissionOwner: PersistableObject {
+    [DataMember]
+    public string Name { get; set; }
+
+ }
+}
Index: branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Security.Contracts/3.3/BusinessObjects/PersistableObject.cs
===================================================================
--- branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Security.Contracts/3.3/BusinessObjects/PersistableObject.cs	(revision 4072)
+++ branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Security.Contracts/3.3/BusinessObjects/PersistableObject.cs	(revision 4072)
@@ -0,0 +1,46 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Text;
+using System.Runtime.Serialization;
+using HeuristicLab.DataAccess.Interfaces;
+
+namespace HeuristicLab.Security.Contracts {
+  [DataContract]
+  public class PersistableObject: IPersistableObject {
+    [DataMember]
+    public Guid Id { get; set; }
+
+    public override bool Equals(object obj) {
+      if (obj is PersistableObject)
+        return this.Id.Equals(
+          (obj as PersistableObject).Id);
+      else
+        return base.Equals(obj);
+    }
+
+    public override int GetHashCode() {
+      return this.Id.GetHashCode();
+    }
+  }
+}
Index: branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Security.Contracts/3.3/BusinessObjects/User.cs
===================================================================
--- branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Security.Contracts/3.3/BusinessObjects/User.cs	(revision 4072)
+++ branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Security.Contracts/3.3/BusinessObjects/User.cs	(revision 4072)
@@ -0,0 +1,80 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Text;
+using System.Runtime.Serialization;
+using System.Security.Cryptography;
+
+namespace HeuristicLab.Security.Contracts.BusinessObjects {
+
+  [DataContract]
+  public class User : PermissionOwner {
+
+    [DataMember]
+    public String Login { get; set; }
+
+    private String password;
+    
+    [DataMember]
+    public String Password {
+      get {
+        return this.password;
+      }
+      protected set {
+        this.password = value;
+      }
+    }
+
+    [DataMember]
+    public String MailAddress { get; set; }
+
+    public void SetPlainPassword(String password) {
+      this.password = password;
+    }
+
+    public void SetHashedPassword(String password) {
+      this.password = getMd5Hash(password);
+    }
+
+    private static string getMd5Hash(string input) {
+      // Create a new instance of the MD5CryptoServiceProvider object.
+      MD5 md5Hasher = MD5.Create();
+
+      // Convert the input string to a byte array and compute the hash.
+      byte[] data = md5Hasher.ComputeHash(Encoding.Default.GetBytes(input));
+
+      // Create a new Stringbuilder to collect the bytes
+      // and create a string.
+      StringBuilder sBuilder = new StringBuilder();
+
+      // Loop through each byte of the hashed data 
+      // and format each one as a hexadecimal string.
+      for (int i = 0; i < data.Length; i++) {
+        sBuilder.Append(data[i].ToString("x2"));
+      }
+
+      // Return the hexadecimal string.
+      return sBuilder.ToString();
+    }
+  }
+}
Index: branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Security.Contracts/3.3/BusinessObjects/UserGroup.cs
===================================================================
--- branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Security.Contracts/3.3/BusinessObjects/UserGroup.cs	(revision 4072)
+++ branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Security.Contracts/3.3/BusinessObjects/UserGroup.cs	(revision 4072)
@@ -0,0 +1,38 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Text;
+using System.Runtime.Serialization;
+
+namespace HeuristicLab.Security.Contracts.BusinessObjects {
+
+  [DataContract]
+  public class UserGroup : PermissionOwner {
+    [DataMember]
+    public List<PermissionOwner> Members { get; set; }
+
+    public UserGroup() {
+      Members = new List<PermissionOwner>();
+    }
+  }
+}
Index: branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Security.Contracts/3.3/HeuristicLab.Security.Contracts-3.2.csproj
===================================================================
--- branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Security.Contracts/3.3/HeuristicLab.Security.Contracts-3.2.csproj	(revision 4072)
+++ branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Security.Contracts/3.3/HeuristicLab.Security.Contracts-3.2.csproj	(revision 4072)
@@ -0,0 +1,122 @@
+﻿<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="3.5" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ProductVersion>9.0.30729</ProductVersion>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{D59E852C-F205-4647-8C05-EB9ED1CF44E9}</ProjectGuid>
+    <OutputType>Library</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>HeuristicLab.Security.Contracts</RootNamespace>
+    <AssemblyName>HeuristicLab.Security.Contracts-3.2</AssemblyName>
+    <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
+    <FileAlignment>512</FileAlignment>
+    <StartupObject>
+    </StartupObject>
+    <SignAssembly>true</SignAssembly>
+    <AssemblyOriginatorKeyFile>HeuristicLab.snk</AssemblyOriginatorKeyFile>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>bin\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <OutputPath>bin\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
+    <DebugSymbols>true</DebugSymbols>
+    <OutputPath>bin\x86\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <DebugType>full</DebugType>
+    <PlatformTarget>x86</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
+    <OutputPath>bin\x86\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <Optimize>true</Optimize>
+    <DebugType>pdbonly</DebugType>
+    <PlatformTarget>x86</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x64' ">
+    <DebugSymbols>true</DebugSymbols>
+    <OutputPath>bin\x64\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <DebugType>full</DebugType>
+    <PlatformTarget>x64</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x64' ">
+    <OutputPath>bin\x64\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <Optimize>true</Optimize>
+    <DebugType>pdbonly</DebugType>
+    <PlatformTarget>x64</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+  </PropertyGroup>
+  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
+  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
+       Other similar extension points exist, see Microsoft.Common.targets.
+  <Target Name="BeforeBuild">
+  </Target>
+  <Target Name="AfterBuild">
+  </Target>
+  -->
+  <ItemGroup>
+    <Compile Include="Properties\AssemblyInfo.cs" />
+    <Compile Include="BusinessObjects\GrantedPermission.cs" />
+    <Compile Include="BusinessObjects\Permission.cs" />
+    <Compile Include="BusinessObjects\PermissionOwner.cs" />
+    <Compile Include="BusinessObjects\User.cs" />
+    <Compile Include="BusinessObjects\UserGroup.cs" />
+    <Compile Include="BusinessObjects\PersistableObject.cs" />
+    <Compile Include="SecurityContractsPlugin.cs" />
+    <Compile Include="Interfaces\IPermissionManager.cs" />
+    <Compile Include="Interfaces\ISecurityManager.cs" />
+  </ItemGroup>
+  <ItemGroup>
+    <Reference Include="System" />
+    <Reference Include="System.Data" />
+    <Reference Include="System.Runtime.Serialization">
+      <RequiredTargetFramework>3.0</RequiredTargetFramework>
+    </Reference>
+    <Reference Include="System.ServiceModel">
+      <RequiredTargetFramework>3.0</RequiredTargetFramework>
+    </Reference>
+    <Reference Include="System.Xml" />
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="..\..\HeuristicLab.DataAccess\3.2\HeuristicLab.DataAccess-3.2.csproj">
+      <Project>{9076697B-C151-46CD-95BC-1D059492B478}</Project>
+      <Name>HeuristicLab.DataAccess-3.2</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.PluginInfrastructure\HeuristicLab.PluginInfrastructure.csproj">
+      <Project>{94186A6A-5176-4402-AE83-886557B53CCA}</Project>
+      <Name>HeuristicLab.PluginInfrastructure</Name>
+    </ProjectReference>
+  </ItemGroup>
+  <PropertyGroup>
+    <PreBuildEvent>set Path=%25Path%25;$(ProjectDir);$(SolutionDir)
+set ProjectDir=$(ProjectDir)
+set SolutionDir=$(SolutionDir)
+set Outdir=$(Outdir)
+
+call PreBuildEvent.cmd</PreBuildEvent>
+  </PropertyGroup>
+  <ItemGroup>
+    <None Include="HeuristicLab.snk" />
+    <None Include="Properties\AssemblyInfo.frame" />
+  </ItemGroup>
+</Project>
Index: branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Security.Contracts/3.3/Interfaces/IPermissionManager.cs
===================================================================
--- branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Security.Contracts/3.3/Interfaces/IPermissionManager.cs	(revision 4072)
+++ branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Security.Contracts/3.3/Interfaces/IPermissionManager.cs	(revision 4072)
@@ -0,0 +1,25 @@
+﻿using System;
+using System.Collections.Generic;
+using System.Text;
+using System.ServiceModel;
+
+namespace HeuristicLab.Security.Contracts.Interfaces {
+
+  [ServiceContract]
+  public interface IPermissionManager  {
+
+    [OperationContract]
+    [FaultContractAttribute(typeof(CommunicationException))]
+    Guid Authenticate(String userName, String password);
+
+    [OperationContract]
+    [FaultContractAttribute(typeof(CommunicationException))]
+    bool CheckPermission(Guid sessionId, Guid permissionId,
+      Guid enitityId);
+
+    [OperationContract]
+    [FaultContractAttribute(typeof(CommunicationException))]
+    void EndSession(Guid sessionId);
+
+  }
+}
Index: branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Security.Contracts/3.3/Interfaces/ISecurityManager.cs
===================================================================
--- branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Security.Contracts/3.3/Interfaces/ISecurityManager.cs	(revision 4072)
+++ branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Security.Contracts/3.3/Interfaces/ISecurityManager.cs	(revision 4072)
@@ -0,0 +1,92 @@
+﻿using System;
+using System.Collections.Generic;
+using System.Text;
+using System.ServiceModel;
+using HeuristicLab.Security.Contracts.BusinessObjects;
+
+namespace HeuristicLab.Security.Contracts.Interfaces {
+
+  [ServiceContract]
+  public interface ISecurityManager {
+
+    [OperationContract]
+    [FaultContractAttribute(typeof(CommunicationException))]
+    Permission AddPermission(Permission permission);
+
+    [OperationContract]
+    [FaultContractAttribute(typeof(CommunicationException))]
+    bool RemovePermission(Guid permissionId);
+
+    [OperationContract]
+    [FaultContractAttribute(typeof(CommunicationException))]
+    Permission UpdatePermission(Permission permission);
+
+    [OperationContract]
+    [FaultContractAttribute(typeof(CommunicationException))]
+    User AddNewUser(User user);
+
+    [OperationContract]
+    [FaultContractAttribute(typeof(CommunicationException))]
+    bool RemoveUser(Guid userId);
+
+    [OperationContract]
+    [FaultContractAttribute(typeof(CommunicationException))]
+    User UpdateUser(User user);
+
+    [OperationContract]
+    [FaultContractAttribute(typeof(CommunicationException))]
+    ICollection<User> GetAllUsers();
+
+    [OperationContract]
+    [FaultContractAttribute(typeof(CommunicationException))]
+    User GetUserByName(string name);
+
+    [OperationContract]
+    [FaultContractAttribute(typeof(CommunicationException))]
+    User GetUserByLogin(string login);
+
+    [OperationContract]
+    [FaultContractAttribute(typeof(CommunicationException))]
+    UserGroup AddNewUserGroup(UserGroup group);
+
+    [OperationContract]
+    [FaultContractAttribute(typeof(CommunicationException))]
+    bool RemoveUserGroup(Guid userGroupId);
+
+    [OperationContract]
+    [FaultContractAttribute(typeof(CommunicationException))]
+    UserGroup UpdateUserGroup(UserGroup group);
+
+    [OperationContract]
+    [FaultContractAttribute(typeof(CommunicationException))]
+    ICollection<UserGroup> GetAllUserGroups();
+
+    [OperationContract]
+    [FaultContractAttribute(typeof(CommunicationException))]
+    UserGroup GetUserGroupByName(string name);
+
+    [OperationContract]
+    [FaultContractAttribute(typeof(CommunicationException))]
+    PermissionOwner UpdatePermissionOwner(PermissionOwner permissionOwner);
+
+    [OperationContract]
+    [FaultContractAttribute(typeof(CommunicationException))]
+    bool AddPermissionOwnerToGroup(Guid userGroupId, Guid permissionOwnerId);
+
+    [OperationContract]
+    [FaultContractAttribute(typeof(CommunicationException))]
+    bool RemovePermissionOwnerFromGroup(Guid userGroupId, Guid permissionOwnerId);
+
+    [OperationContract]
+    [FaultContractAttribute(typeof(CommunicationException))]
+    bool GrantPermission(Guid permissionOwnerId, Guid permissionId, Guid entityId);
+
+    [OperationContract]
+    [FaultContractAttribute(typeof(CommunicationException))]
+    Permission GetPermissionById(Guid permissionId);
+
+    [OperationContract]
+    [FaultContractAttribute(typeof(CommunicationException))]
+    bool RevokePermission(Guid permissionOwnerId, Guid permissionId, Guid entityId);
+  }
+}
Index: branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Security.Contracts/3.3/Properties/AssemblyInfo.frame
===================================================================
--- branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Security.Contracts/3.3/Properties/AssemblyInfo.frame	(revision 4072)
+++ branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Security.Contracts/3.3/Properties/AssemblyInfo.frame	(revision 4072)
@@ -0,0 +1,59 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+using HeuristicLab.PluginInfrastructure;
+
+// General Information about an assembly is controlled through the following 
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("HeuristicLab.Security.Contracts")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("HeuristicLab")]
+[assembly: AssemblyCopyright("(c) 2002-2008 HEAL")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible 
+// to COM components.  If you need to access a type in this assembly from 
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("9A54C04F-E1B3-490a-AB49-D3F42CAAB4F1")]
+
+// Version information for an assembly consists of the following four values:
+//
+//      Major Version
+//      Minor Version 
+//      Build Number
+//      Revision
+//
+// You can specify all the values or you can default the Build and Revision Numbers 
+// by using the '*' as shown below:
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("3.2.0.$WCREV$")]
+[assembly: AssemblyFileVersion("3.2.0.$WCREV$")]
+[assembly: AssemblyBuildDate("$WCNOW$")]
Index: branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Security.Contracts/3.3/SecurityContractsPlugin.cs
===================================================================
--- branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Security.Contracts/3.3/SecurityContractsPlugin.cs	(revision 4072)
+++ branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Security.Contracts/3.3/SecurityContractsPlugin.cs	(revision 4072)
@@ -0,0 +1,33 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Text;
+using HeuristicLab.PluginInfrastructure;
+
+namespace HeuristicLab.Security.Contracts {
+  [Plugin("HeuristicLab.Security.Contracts-3.2")]
+  [PluginFile("HeuristicLab.Security.Contracts-3.2.dll", PluginFileType.Assembly)]
+  [PluginDependency("HeuristicLab.Core-3.2")]
+  public class SecurityContractsPlugin : PluginBase {
+  }
+}
