# Sync Conflicts {#sync-conflicts}


**Version:** 1.0  
**Last Updated:** 2026-07-16

This guide is intended for Project Managers, Supervisors, and Administrators who manage survey data collection teams and resolve data conflicts.

---


## What is a Sync Conflict? {#what-is-a-sync-conflict}


A sync conflict occurs when two versions of the same survey response exist — one on the device (client) and one on the server. This typically happens when:

- An enumerator works offline and later syncs data that was already edited on another device
- Multiple team members edit the same response simultaneously
- A response is submitted after an assignment has been modified or revoked

When a conflict is detected, the system preserves both versions and requires human review before the data can be finalized.

---


## Why Conflicts Happen {#why-conflicts-happen}


Conflicts are a natural result of offline-first survey collection. MQUAD's mobile apps allow enumerators to collect data without internet connectivity. When connectivity is restored, the system compares local changes against the server's current state.

Common scenarios:

1. **Concurrent Edits**: The same response was modified on two different devices. The most recent edit wins.
2. **Offline Submission**: An enumerator submits responses collected while offline, but those responses were already entered by another team member.
3. **Assignment Changes**: Survey assignments are modified while an enumerator has unsynced data.

---


## When You Will See This Page {#when-you-will-see-this-page}


The Sync Conflicts page (`/conflicts`) appears in your navigation when:

- Your role includes `response:read` permission (typically supervisors, project managers, and administrators)
- There are unresolved conflicts in your tenant
- You need to review and resolve data discrepancies

The page shows two counts in the header: total conflicts and unresolved conflicts.

---


## How to Review a Conflict {#how-to-review-a-conflict}


Each conflict is displayed as a card in the conflict list:

1. Click **Refresh** to reload conflicts from the server
2. Review each unresolved conflict card:
   - **Response ID**: Unique identifier (truncated) for the affected response
   - **Conflict type**: The category of conflict detected
   - **Timestamps**: When the conflict was detected
   - **Answer counts**: Number of answers in server version vs. local version
3. Click **View** to examine the actual response in supervisor review mode

---


## How to Compare Versions {#how-to-compare-versions}


The conflict card shows:

- **Server answers**: The version currently stored on the server
- **Local answers**: The version from the enumerator's device

The Conflict Resolution page (accessed through the supervisor review) provides a side-by-side comparison:

- Left panel: Server version of the data
- Right panel: Local version of the data
- Differences are highlighted for clarity

---


## How to Choose the Correct Resolution {#how-to-choose-the-correct-resolution}


Consider these factors when deciding:

**Choose "Server Wins" when:**
- The server version reflects the most recent authoritative changes
- The enumerator's offline data is outdated
- You need to maintain data already processed by other systems

**Choose "Client Wins" when:**
- The enumerator collected corrections or updates while offline
- The server version contains errors that were fixed offline
- The enumerator has more complete or accurate information

When in doubt, contact the enumerator for clarification before making a decision.

---


## What "Server Wins" Means {#what-server-wins-means}


Selecting **Server Wins** keeps the server version and discards the local changes.

After resolution:
- The conflict is marked as resolved
- The response retains its current server state
- No changes are made to the data
- The enumerator may need to re-enter their offline changes

Use this option when the server data is more accurate or recent.

---


## What "Client Wins" Means {#what-client-wins-means}


Selecting **Client Wins** overwrites the server data with the enumerator's version.

After resolution:
- The conflict is marked as resolved
- The server is updated with the local data
- The changes become the new authoritative version
- An audit record is created

Use this option when the enumerator's offline data contains corrections or better information.

---


## Best Practices {#best-practices}


1. **Monitor regularly**: Check the conflicts page daily during active data collection
2. **Train enumerators**: Teach team members about the offline workflow and conflict risks
3. **Minimize overlap**: Assign distinct respondents to different enumerators when possible
4. **Sync frequently**: Encourage enumerators to sync whenever connectivity is available
5. **Document decisions**: Note resolution choices in the survey's administrative logs
6. **Contact field teams**: Communicate resolution outcomes to affected enumerators

---


## Warnings {#warnings}


- **Irreversible decisions**: Once resolved, conflicts cannot be automatically undone
- **Data loss risk**: "Server Wins" permanently discards local changes without recovery
- **Audit impact**: All resolutions are recorded for compliance review
- **Notifications**: Enumerators are NOT currently notified of resolution outcomes (planned for future release)

---


## Frequently Asked Questions {#frequently-asked-questions}


**Q: How often do conflicts occur?**  
A: Conflicts should be rare in well-managed projects. They typically occur only when multiple team members work on overlapping respondent lists or when connectivity is poor for extended periods.

**Q: Can conflicts be prevented?**  
A: While exact prevention is not possible, you can minimize conflicts by ensuring enumerators sync regularly and assign distinct respondents to different team members.

**Q: Who can resolve conflicts?**  
A: Any user with `response:read` permission can view and resolve conflicts. In practice, this is typically supervisors, project managers, and administrators.

**Q: What happens to the enumerator's data after resolution?**  
A: If "Server Wins" is chosen, the local changes are discarded and the enumerator must re-enter their data. If "Client Wins" is chosen, the local data becomes the server version.

**Q: Are conflict resolutions tracked?**  
A: Yes, all resolutions are stored with timestamps and user identification for audit purposes. However, email notifications to enumerators are not yet implemented.

**Q: Can I see which device created the conflict?**  
A: The conflict record includes the device ID, which can be viewed in the detailed conflict information.
