Per ogni evento, oltre al suo "tempo dell'evento" devi anche tenere traccia di un altro attributo orario, il tempo dell'ultima modifica. Questo si occupa dello scenario di sincronizzazione semplice e, ehm, diciamo, senza incidenti: gli eventi che sono stati modificati dall'ultima sincronizzazione vengono copiati.
I problemi iniziano se c'è la possibilità che due eventi siano stati entrambi modificati dall'ultima sincronizzazione, e non vuoi che gli attributi modificati da una sovrascrittura abbiano cambiato gli attributi nell'altra. Chiamiamo questa situazione un "conflitto". Per superare i conflitti, è possibile tenere traccia del tempo dell'ultima modifica di ciascun attributo all'interno di un evento, ma ciò a) complica molto le cose, e b) risolverà solo i conflitti nei casi in cui sono stati modificati attributi dissimili . Avresti ancora un problema quando lo stesso attributo è stato cambiato. Quindi, un approccio migliore per gestire i conflitti è presentare sempre l'utente con i due record affiancati, evidenziare per essi gli attributi modificati e lasciare che decidano quale attributo modificato del record di sinistra sovrascrive l'attributo corrispondente sul record corretto, e viceversa.
Il caso di eventi sovrapposti può anche essere visto come un conflitto, che però deve essere gestito in modo particolare: la durata di un evento (quello che si verifica prima nel tempo) dovrà essere abbreviata, o il tempo di inizio del l'altro evento (quello che si verifica più avanti nel tempo) dovrà essere spostato in avanti, eventualmente anche regolando la sua durata.