When the object layer of Identity Manager is loaded, the values of properties are stored in fields “OldValue”. If a property is changed, a field “NewValue” is populated.
When the object layer is updating the database, a SQL Update Statement is created, where the NewValue fields are used for the update values and the OldValue fields are used in the WHERE clause of the same statement. So if someone else changed a value in the database, the statement will not find a record to update with this where clause.
That exactly is where you get the message "was changed by another user".