If you receive duplicate messages in CHANGES ONLY query and compare mode, the most likely cause is that the query interval you have set is too short for the scope of your query. To diagnose, increase your query interval significantly and see if the duplicates no longer occur.
If you absolutely require a short query interval you can rewrite your query to include fewer results (e.g. restricting only to user objects) and/or split your query across multiple receive locations that handle different subsets of results (e.g. cn filtered A-K on one receive location and L-Z on another).