diff --git a/services/user_svc.py b/services/user_svc.py
index 28ad465..3307cfd 100644
--- a/services/user_svc.py
+++ b/services/user_svc.py
@@ -1,7 +1,6 @@
-# Copyright 2016 The Chromium Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style
-# license that can be found in the LICENSE file or at
-# https://developers.google.com/open-source/licenses/bsd
+# Copyright 2016 The Chromium Authors
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
 
 """A set of functions that provide persistence for users.
 
@@ -21,7 +20,7 @@
 from framework import framework_helpers
 from framework import sql
 from framework import validate
-from proto import user_pb2
+from mrproto import user_pb2
 from services import caches
 
 
@@ -204,9 +203,23 @@
     """Create many users in the database."""
     emails = [email.lower() for email in emails]
     ids = [framework_helpers.MurmurHash3_x86_32(email) for email in emails]
+
+    rows = self.user_tbl.Select(cnxn, cols=('user_id',), user_id=ids)
+    existing_ids = set(row[0] for row in rows)
+    if existing_ids:
+      existing_users = sorted(
+          (user_id, email)
+          for (user_id, email) in zip(ids, emails)
+          if user_id in existing_ids)
+      logging.error(
+          'Unable to create users because IDs are already taken: %.100000s',
+          existing_users)
+
     row_values = [
-      (user_id, email, not framework_bizobj.IsPriviledgedDomainUser(email))
-      for (user_id, email) in zip(ids, emails)]
+        (user_id, email, not framework_bizobj.IsPriviledgedDomainUser(email))
+        for (user_id, email) in zip(ids, emails)
+        if user_id not in existing_ids
+    ]
     self.user_tbl.InsertRows(
         cnxn, ['user_id', 'email', 'obscure_email'], row_values)
     self.user_2lc.InvalidateKeys(cnxn, ids)
