If you are using SqlSyncProvider, you could do it this way:
Setup 3 scopes on the server, each scope is a filtered scope, with different filters on clientId1, clientId2, clientId3. Then you provision the client1 with scope-clientId1, client2 with scope-clientId2, and so on. So on the server, all client records are
in the same table, but for each client, they only see the records of their own.
With above setup, you don't need to worry that a client gets other client's records. Also, to be sure it's a upload only sync, when you do sync from client, set it to upload on the orchestrator, and in case of conflicts (where server may have updated
records), use remote win (client win).