Here we have new schema versions after 15. So we will apply all the schema changes until schemaversion becomes 22.
What we saw was schemaversion was not getting updated on the subscriber. It remained 15 after every Merge agent completion. That was the reason schema changes were getting applied repeatedly.
We Checked what profile is used by the Merge agent.
Right click on the subscription and click on Agent Profile:
In this case we are using "High Volume Server to Server Profile" and with this ParallelUploadDownload is set to 1.
ParallelUploadDownload is a deprecated feature. There is a known issue where we don’t update schema water marks if ParallelUploadDownload is set to 1. We changed Merge agent profile to use "Default agent profile" or change Merge agent Job and add "-ParallelUploadDownload 0".
Ran the Merge agent again.
Now the schema watermark was updated successfully on the subscriber and the schema changes were not getting reapplied.
select max(schemaversion) from sysmergeschemachange
select schemaversion, pubid, subid from sysmergesubscriptions