Jump to content

Conflict resolution: Difference between revisions

From Resco's Wiki
Marek Rodak (talk | contribs)
No edit summary
 
(15 intermediate revisions by one other user not shown)
Line 1: Line 1:
A synchronization conflict comes into play when a user modifies a record in the Resco Mobile CRM application, but before he synchronizes the change, this record is also altered on the CRM server. In other words – the same record gets updated both in the mobile client and on the server, but neither of these modifications has been yet synchronized between them.
{{Synchronization TOC}}
A synchronization conflict comes into play when users modify a record in the Resco Mobile CRM application in offline mode, but before they synchronize the change, the same record is also altered on the backend server. In other words – the same record gets updated both in the mobile client and on the server, but neither of these modifications has been yet synchronized between them.


And thus the conflict occurs: Which modification should be applied to the record, both in the app and on the server, after the next synchronization takes place?
And thus the conflict occurs: Which modification should be applied to the record, both in the app and on the server, after the next synchronization takes place?
Line 9: Line 10:
== Configuring conflict resolution ==
== Configuring conflict resolution ==


[[Woodford]] administrator can configure the conflict resolution strategy for each entity, in the '''On Conflict''' parameter. For automatic handling, you can decide which side (client or server) wins, or you can even resolve conflicts manually. See [[App_projects#Managing_fields]] from more details.
[[Woodford]] administrator can select a conflict resolution strategy. The strategy is defined for each entity. Select the entity in the '''Project''' menu and choose the appropriate option for the '''On Conflict''' parameter:


You have two options for manual conflict resolution:
* '''Server Wins''' – In the case of a conflict, the server version of the record is used and overwrites the record on the client. The action is noted on the sync log. This is the default setting.
* App users can resolve conflicts directly in the app.
* Administrators can resolve conflicts remotely using the [[Sync Dashboard]]. Go to Woodford [[Configuration]] to enable '''Remote Conflict Resolution'''.


== Resolving conflicts on the client ==
* '''Device Wins''' – In the case of a conflict, the client version of the record is used and overwrites the record on the server. However, only the fields changed on the client are uploaded. If the changes on the server affected different fields than on the app, both changes are preserved. If the same field was changed in both databases, server values are overwritten.
 
* '''Device Wins (Full)''' – In this strategy, the whole client record, including unchanged field values, is sent to the server. Server changes are lost.
 
* '''Manual Action''' – Conflicts must be resolved manually, either by the user in the app or by an admin using [[Sync Dashboard]].
 
[[File:On conflict parameter.png|alt=entity on conflict parameter|600px]]


In case of conflicts, a new item appears as the first item of your [[Home screen]]: '''Sync Errors'''.
For automatic handling, you can decide which side (client or server) wins. The change on the losing side is lost.


[[File:Sync Errors.png|600px]]
Alternatively, to ensure that you don't lose any important information, you can resolve conflicts manually. You have two options for manual conflict resolution:
* App users can resolve conflicts directly in the app. This is the default behavior for manual action.
* Administrators can resolve conflicts remotely using the [[Sync Dashboard]]. Go to Woodford '''[[Configuration]] > Offline Data Sync > Sync Errors''' and enable '''Remote Conflict Resolution'''.


Tap '''More''' if you want to show the detail of the affected entity record. The client version is displayed.
== Resolving conflicts on the client ==


Tap '''Resolve''' and select how to resolve the conflict:
In case of conflicts, a new item appears as the first item of your [[Home screen]]: See '''[[Sync Errors]]'''.
* '''Clear Error & Retry''' - Delete the error log, assuming that you have changed the data in Resco Mobile CRM to fix a validation error. The record with new values will be synchronized at the next synchronization.
* '''Clear Error & Ignore''' – Delete the error log, assuming that you have changed the data on the CRM server and next synchronization will download the fix to Resco Mobile CRM application.
* '''Help - About sync errors''' - Takes you to https://www.resco.net/sync-errors/
* '''Take Server Version''' - Save server version of the record also to the local database and delete the error log.
* '''Email''' - Send one or all errors to your administrator for consideration.
* '''Merge''' - Merge conflicting records manually, specifying the fields to take from device or CRM server version.
* '''Cancel''' - Allows you to resolve the conflict later.


== Resolving conflicts on the server ==
== Resolving conflicts on the server ==
Line 37: Line 37:


[[Category:Synchronization]]
[[Category:Synchronization]]
[[Category:Support]]

Latest revision as of 08:26, 15 November 2023

A synchronization conflict comes into play when users modify a record in the Resco Mobile CRM application in offline mode, but before they synchronize the change, the same record is also altered on the backend server. In other words – the same record gets updated both in the mobile client and on the server, but neither of these modifications has been yet synchronized between them.

And thus the conflict occurs: Which modification should be applied to the record, both in the app and on the server, after the next synchronization takes place?

Identifying conflicts

Conflicts are identified during synchronization. One of the early phases of synchronization is uploading client changes to the server, and in this step, the client searches for conflicts (using the modifiedon attribute of records).

Configuring conflict resolution

Woodford administrator can select a conflict resolution strategy. The strategy is defined for each entity. Select the entity in the Project menu and choose the appropriate option for the On Conflict parameter:

  • Server Wins – In the case of a conflict, the server version of the record is used and overwrites the record on the client. The action is noted on the sync log. This is the default setting.
  • Device Wins – In the case of a conflict, the client version of the record is used and overwrites the record on the server. However, only the fields changed on the client are uploaded. If the changes on the server affected different fields than on the app, both changes are preserved. If the same field was changed in both databases, server values are overwritten.
  • Device Wins (Full) – In this strategy, the whole client record, including unchanged field values, is sent to the server. Server changes are lost.
  • Manual Action – Conflicts must be resolved manually, either by the user in the app or by an admin using Sync Dashboard.

entity on conflict parameter

For automatic handling, you can decide which side (client or server) wins. The change on the losing side is lost.

Alternatively, to ensure that you don't lose any important information, you can resolve conflicts manually. You have two options for manual conflict resolution:

  • App users can resolve conflicts directly in the app. This is the default behavior for manual action.
  • Administrators can resolve conflicts remotely using the Sync Dashboard. Go to Woodford Configuration > Offline Data Sync > Sync Errors and enable Remote Conflict Resolution.

Resolving conflicts on the client

In case of conflicts, a new item appears as the first item of your Home screen: See Sync Errors.

Resolving conflicts on the server

See Conflict resolution in Sync Dashboard for more details.