diff --git a/WebsitePanel/Database/update_db.sql b/WebsitePanel/Database/update_db.sql
index 47b3b188..351f7e6b 100644
--- a/WebsitePanel/Database/update_db.sql
+++ b/WebsitePanel/Database/update_db.sql
@@ -2270,3 +2270,93 @@ EXEC sp_executesql @sql, N'@ItemID int', @ItemID
RETURN
GO
+
+---- Additional Default Groups-------------
+
+IF EXISTS (SELECT * FROM SYS.TABLES WHERE name = 'AdditionalGroups')
+DROP TABLE AdditionalGroups
+GO
+
+CREATE TABLE AdditionalGroups
+(
+ ID INT IDENTITY(1,1) NOT NULL PRIMARY KEY,
+ UserID INT NOT NULL,
+ GroupName NVARCHAR(255)
+)
+GO
+
+IF EXISTS (SELECT * FROM SYS.OBJECTS WHERE type = 'P' AND name = 'GetAdditionalGroups')
+DROP PROCEDURE GetAdditionalGroups
+GO
+
+CREATE PROCEDURE [dbo].[GetAdditionalGroups]
+(
+ @UserID INT
+)
+AS
+
+SELECT
+ AG.ID,
+ AG.UserID,
+ AG.GroupName
+FROM AdditionalGroups AS AG
+WHERE AG.UserID = @UserID
+GO
+
+IF EXISTS (SELECT * FROM SYS.OBJECTS WHERE type = 'P' AND name = 'AddAdditionalGroup')
+DROP PROCEDURE AddAdditionalGroup
+GO
+
+CREATE PROCEDURE [dbo].[AddAdditionalGroup]
+(
+ @GroupID INT OUTPUT,
+ @UserID INT,
+ @GroupName NVARCHAR(255)
+)
+AS
+
+INSERT INTO AdditionalGroups
+(
+ UserID,
+ GroupName
+)
+VALUES
+(
+ @UserID,
+ @GroupName
+)
+
+SET @GroupID = SCOPE_IDENTITY()
+
+RETURN
+GO
+
+IF EXISTS (SELECT * FROM SYS.OBJECTS WHERE type = 'P' AND name = 'DeleteAdditionalGroup')
+DROP PROCEDURE DeleteAdditionalGroup
+GO
+
+CREATE PROCEDURE [dbo].[DeleteAdditionalGroup]
+(
+ @GroupID INT
+)
+AS
+
+DELETE FROM AdditionalGroups
+WHERE ID = @GroupID
+GO
+
+IF EXISTS (SELECT * FROM SYS.OBJECTS WHERE type = 'P' AND name = 'UpdateAdditionalGroup')
+DROP PROCEDURE UpdateAdditionalGroup
+GO
+
+CREATE PROCEDURE [dbo].[UpdateAdditionalGroup]
+(
+ @GroupID INT,
+ @GroupName NVARCHAR(255)
+)
+AS
+
+UPDATE AdditionalGroups SET
+ GroupName = @GroupName
+WHERE ID = @GroupID
+GO
diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Base/HostedSolution/AdditionalGroup.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Base/HostedSolution/AdditionalGroup.cs
new file mode 100644
index 00000000..b8c4bef7
--- /dev/null
+++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Base/HostedSolution/AdditionalGroup.cs
@@ -0,0 +1,48 @@
+// Copyright (c) 2012, Outercurve Foundation.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without modification,
+// are permitted provided that the following conditions are met:
+//
+// - Redistributions of source code must retain the above copyright notice, this
+// list of conditions and the following disclaimer.
+//
+// - Redistributions in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// - Neither the name of the Outercurve Foundation nor the names of its
+// contributors may be used to endorse or promote products derived from this
+// software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
+// ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+// ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+namespace WebsitePanel.EnterpriseServer.Base.HostedSolution
+{
+ public class AdditionalGroup
+ {
+ int groupId;
+ string groupName;
+
+ public int GroupId
+ {
+ get { return this.groupId; }
+ set { this.groupId = value; }
+ }
+
+ public string GroupName
+ {
+ get { return this.groupName; }
+ set { this.groupName = value; }
+ }
+ }
+}
diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Base/WebsitePanel.EnterpriseServer.Base.csproj b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Base/WebsitePanel.EnterpriseServer.Base.csproj
index dde357fa..e5ea3611 100644
--- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Base/WebsitePanel.EnterpriseServer.Base.csproj
+++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Base/WebsitePanel.EnterpriseServer.Base.csproj
@@ -116,6 +116,7 @@
+
@@ -236,6 +237,7 @@
true
+