diff --git a/planetstack/core/models/__init__.py b/planetstack/core/models/__init__.py
index e31da37..4e76958 100644
--- a/planetstack/core/models/__init__.py
+++ b/planetstack/core/models/__init__.py
@@ -8,10 +8,11 @@
 from .role import Role
 from .site import Site,Deployment, DeploymentRole, DeploymentPrivilege, SiteDeployments
 from .dashboard import DashboardView
-from .user import User, UserDeployments, UserDashboardView
+from .user import User, UserDashboardView
 from .serviceclass import ServiceClass
 from .slice import Slice, SliceDeployments
 from .site import SitePrivilege, SiteDeployments
+from .userdeployments import UserDeployments
 from .image import Image, ImageDeployments
 from .node import Node
 from .serviceresource import ServiceResource
diff --git a/planetstack/core/models/user.py b/planetstack/core/models/user.py
index a74ba78..3c4d377 100644
--- a/planetstack/core/models/user.py
+++ b/planetstack/core/models/user.py
@@ -164,24 +164,6 @@
             qs = User.objects.filter(Q(site__in=sites) | Q(id__in=user_ids))
         return qs            
 
-             
-    
-class UserDeployments(PlCoreBase):
-    user = models.ForeignKey(User)
-    deployment = models.ForeignKey(Deployment)
-    kuser_id = models.CharField(null=True, blank=True, max_length=200, help_text="Keystone user id")
-
-    def __unicode__(self):  return u'%s %s' % (self.user, self.deployment.name)
-
-    @staticmethod
-    def select_by_user(user):
-        if user.is_admin:
-            qs = UserDeployments.objects.all()
-        else:
-            users = Users.select_by_user(user)
-            qs = Usereployments.objects.filter(user__in=slices)
-        return qs
-
 class UserDashboardView(PlCoreBase):
      user = models.ForeignKey(User, related_name="dashboardViews")
      dashboardView = models.ForeignKey(DashboardView, related_name="dashboardViews")
diff --git a/planetstack/core/models/userdeployments.py b/planetstack/core/models/userdeployments.py
new file mode 100644
index 0000000..3422156
--- /dev/null
+++ b/planetstack/core/models/userdeployments.py
@@ -0,0 +1,22 @@
+import os
+import datetime
+from collections import defaultdict
+from django.db import models
+from django.db.models import F, Q
+from core.models import PlCoreBase,Site,User,Deployment
+
+class UserDeployments(PlCoreBase):
+    user = models.ForeignKey(User)
+    deployment = models.ForeignKey(Deployment)
+    kuser_id = models.CharField(null=True, blank=True, max_length=200, help_text="Keystone user id")
+
+    def __unicode__(self):  return u'%s %s' % (self.user, self.deployment.name)
+
+    @staticmethod
+    def select_by_user(user):
+        if user.is_admin:
+            qs = UserDeployments.objects.all()
+        else:
+            users = Users.select_by_user(user)
+            qs = Usereployments.objects.filter(user__in=slices)
+        return qs
