diff --git a/auth.php b/auth.php
index 7f5fe457615e3ab3a3478c208232741b10a853bf..f2fe15d5889de5f216aba708d73a9a0a7bd59c83 100644
--- a/auth.php
+++ b/auth.php
@@ -432,6 +432,7 @@ class auth_plugin_ldap_syncplus extends auth_plugin_ldap {
 
             if (!empty($add_users)) {
                 mtrace(get_string('userentriestoadd', 'auth_ldap', count($add_users)));
+                $errors = 0;
 
                 $transaction = $DB->start_delegated_transaction();
                 foreach ($add_users as $user) {
@@ -457,6 +458,14 @@ class auth_plugin_ldap_syncplus extends auth_plugin_ldap {
                     }
 
                     $id = user_create_user($user, false);
+                    try {
+                        $id = user_create_user($user, false);
+                    } catch (Exception $e) {
+                        print_string('invaliduserexception', 'auth_ldap', print_r($user, true) .  $e->getMessage());
+                        $errors++;
+                        continue;
+                    }
+
                     mtrace("\t".get_string('auth_dbinsertuser', 'auth_db', array('name'=>$user->username, 'id'=>$id)));
                     $euser = $DB->get_record('user', array('id' => $id));
 
@@ -470,6 +479,11 @@ class auth_plugin_ldap_syncplus extends auth_plugin_ldap {
                     // Add roles if needed.
                     $this->sync_roles($euser);
                 }
+
+                // Display number of user creation errors, if any.
+                if ($errors) {
+                    print_string('invalidusererrors', 'auth_ldap', $errors);
+                }
                 $transaction->allow_commit();
                 unset($add_users); // free mem
             } else {