diff --git a/src/api/core/ciphers.rs b/src/api/core/ciphers.rs
index bcf8c797410729c071cea67724b384bdd859574a..2d03459f7f4ddcaa678b32cfb29cb6b562176bc0 100644
--- a/src/api/core/ciphers.rs
+++ b/src/api/core/ciphers.rs
@@ -842,7 +842,7 @@ fn move_cipher_selected(data: JsonUpcase<MoveCipherData>, headers: Headers, conn
     }
 
     for uuid in data.Ids {
-        let mut cipher = match Cipher::find_by_uuid(&uuid, &conn) {
+        let cipher = match Cipher::find_by_uuid(&uuid, &conn) {
             Some(cipher) => cipher,
             None => err!("Cipher doesn't exist"),
         };
@@ -853,12 +853,11 @@ fn move_cipher_selected(data: JsonUpcase<MoveCipherData>, headers: Headers, conn
 
         // Move cipher
         cipher.move_to_folder(data.FolderId.clone(), &user_uuid, &conn)?;
-        cipher.save(&conn)?;
 
         nt.send_cipher_update(
             UpdateType::CipherUpdate,
             &cipher,
-            &User::update_uuid_revision(&user_uuid, &conn),
+            &[user_uuid.clone()]
         );
     }
 
diff --git a/src/db/models/user.rs b/src/db/models/user.rs
index 127fa78a69538adb16f605dace2489a73485addd..390302a9acc10285aca4869f19dd19fb2ebe0e6f 100644
--- a/src/db/models/user.rs
+++ b/src/db/models/user.rs
@@ -184,10 +184,12 @@ impl User {
 
     pub fn update_revision(&mut self, conn: &DbConn) -> EmptyResult {
         self.updated_at = Utc::now().naive_utc();
-        diesel::update(users::table.filter(users::uuid.eq(&self.uuid)))
-            .set(users::updated_at.eq(&self.updated_at))
-            .execute(&**conn)
-            .map_res("Error updating user revision")
+        crate::util::retry( || {
+            diesel::update(users::table.filter(users::uuid.eq(&self.uuid)))
+                .set(users::updated_at.eq(&self.updated_at))
+                .execute(&**conn)
+        }, 10)
+        .map_res("Error updating user revision")
     }
 
     pub fn find_by_mail(mail: &str, conn: &DbConn) -> Option<Self> {