Rewrite preUpdate to the form of preInsert+postInsert
Split preUpdate to form of preInsert/preUpdate
Merged postInsert and postUpdate to postSave
getNextVersion should also work without auditlog
Merge preInsert and preUpdate to preSave
Wrap version updates in a transaction with a FOR UPDATE lock