diff --git a/planetstack/observer/steps/sync_user_deployments.py b/planetstack/observer/steps/sync_user_deployments.py
index 5c04003..ceea4a9 100644
--- a/planetstack/observer/steps/sync_user_deployments.py
+++ b/planetstack/observer/steps/sync_user_deployments.py
@@ -24,9 +24,13 @@
         site_deploy_lookup = defaultdict(list)
         for site_deployment in site_deployments:
             site_deploy_lookup[site_deployment.site].append(site_deployment.deployment)
-        
-        user_deployments = []                
-        for user in User.objects.filter(Q(enacted__lt=F('updated')) | Q(enacted=None)):
+
+        user_deploy_lookup = defaultdict(list)
+        for user_deployment in UserDeployments.objects.all():
+            user_deploy_lookup[user_deployment.user].append(user_deployment.deployment)
+       
+        user_deployments = [] 
+        for user in User.objects.filter():
             if user.is_admin:
                 # admins should have an account at all deployments
                 expected_deployments = deployments
@@ -34,8 +38,15 @@
                 # normal users should have an account at their site's deployments
                 expected_deployments = site_deploy_lookup[user.site]
             for expected_deployment in expected_deployments:
-                ud = UserDeployments(user=user, deployment=expected_deployment)
-                user_deployments.append(ud)
+                if not user in user_deploy_lookup or \
+                  expected_deployment not in user_deploy_lookup[user]: 
+                    # add new record
+                    ud = UserDeployments(user=user, deployment=expected_deployment)
+                    user_deployments.append(ud)
+                #else:
+                #    # update existing record
+                #    ud = UserDeployments.objects.get(user=user, deployment=expected_deployment)
+                #    user_deployments.append(ud)
 
         return user_deployments
 
@@ -82,3 +93,5 @@
         #    user_driver.create_keypair(**key_fields)
 
         user_deployment.save()
+        user = User.objects.get(id=user_deployment.user.id)
+        user.save()
