It may be a regular update conflict, when somebody (either a user or another process, such as your integration) changed the record before you managed to save your changes. It protects the system from inconsistent updates (e.g. you could unintentionally remove a part of changes done by the other user).
But it can also be caused by a bug in code, when a single process is changing the record twice and doesn't do it right.