We need an internal version/timestamp (system change token) for every document. This version will be an opaque string that's updated automatically by the database layer every time the document changes in any way.
This is needed in order to have efficient and accurate reporting of document changes, for synchronization / get-if-modified operations.
This is different from the base change token (NXP-22019), which is oriented toward user-level operations.
Every modification to a document (whether done by the system or by a user) now increments a system value called the "system change token", which is part of the value returned by the API DocumentModel.getChangeToken(). This allows an observer doing synchronization tasks to have precise information about whether or not a document has changed.