In Tracker Administration, specifically in Field Usage Administration, when we change the position of a specific field, the system changes its "rank". The rank is how the system locates the position of the field in its level of the tree of components.
When you do it, the system executes the function "prepareRanking" of the class "\DataAccessObject". This update the rank os all elements with the same parent component.
The problem is when you change the location of a field on the root of the tracker. Its parent component id is 0. So, the function can execute this code:
$sql = sprintf(
'UPDATE '. $this->table_name .
' SET '. $rank_key .' = '. $rank_key .' + 1'.
' WHERE '. $parent_key .' = %d'.
' AND '. $rank_key .' >= %d',
$updated = $this->update($sql);
with $parent_id = 0.
So, it can change the rank of almost all fields located on the root of the all trackers of the database.
I think it can be improved with the use of the tracker_id or something like this.
In my company we do some periodical comparision of trackers to make some reports and ever the rank of the components are different.
For example, today, the rank of the components of an old tracker is greater the 5000.