When synchronizing their app, users can run into synchronization errors. Most often, these are synchronization conflicts or upload errors. A new item appears as the first item of your Home screen: Sync Errors that lists the affected records.
Sync conflicts occur, for example, when the same record is modified on the client and on the server. Not all conflicts land in the Sync Errors list; only if the Conflict resolution strategy is configured to "Manual Action" and Remote Conflict Resolution is disabled, then the users have to resolve conflicts in the app.
Managing sync errors in the app
In the example below, there is a conflict for the contact record called "Simmons, Victoria", including its details in the right pane. The picture shows no upload errors.
Tap More if you want to show the detail of the affected entity record. The client version is displayed.
Tap Resolve and select how to resolve the conflict:
- Clear Error & Retry – Delete the error log. The record will be synchronized again during the next synchronization. Typically used when the client fixed the validation problem.
- Clear Error & Ignore – Delete the error log. Client and server records will keep their values without any reconciliation.
- Help – About sync errors – Takes you to https://www.resco.net/sync-errors/
- Take Server Version – Download the server version of the record and overwrite the client record, then 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 the device or CRM server version.
- Cancel – Resolve the conflict later.
See also a short demo of this feature. Webinar
Sync conflict merge form
This special form serves to merge the client and server versions of a record. The form shows all fields in conflict (with different values) with both server and local values. Fields updated locally since the last sync are marked by an asterisk (*) next to the display name. For each field, one of the values is selected (blue in the screenshot below). The selected values are preserved once you save the form; gray values are discarded.
The app preselects the recommended values in this order:
- If a relevant Merge Config exists for this entity, preselect the configured value.
- If a field was updated locally, preselect local value.
- If none of the above applies, preselect server value.
You can override the default selection.
- In each field line, tap the value that you prefer.
- Alternatively, tap Server or Local in the top row to select all server or all local values.
Tap Save to save the record to the local database. The sync conflict is resolved locally, and the new version will be updated to the server on the next sync.
In addition to the selectable fields, the merge form may list:
- Automatically resolved fields: Two groups of fields are resolved automatically:
- Fields without update permission.
- Fields with Merge Config flag "readonly" (in combination with either "serverwins" or "devicewins").
- System fields: Selected system fields such as "modified on", "owner", and "status reason" are always visible at the bottom of the sync conflict merge form. The reason is to provide additional information about the updates.
Some fields are hidden:
- All fields without a conflict.
- All fields automatically resolved with the Merge Config flag "hide" (in combination with either "serverwins" or "devicewins").
Woodford administrators can configure the merge form used for resolving synchronization conflicts. For each field, you can set up how it should be handled when a conflict occurs. To enable this advanced merge configuration, you have to upload configuration details:
- Edit an app project and select Configuration from the Project menu.
- Click Merge Config to display the editor.
- Enter the configuration.
- Save all changes.
#;account address1_city;readonly;devicewins address1_country;readonly;serverwins address1_latitude;serverwins address1_line1;serverwins fax;hide;devicewins #;contact address1_city;devicewins
Each line in the file corresponds to an entity name or field name.
- Lines starting with
#;define the entity.
- Lines beneath an entity are the fields.
- Start with defining the entity for that you want to set up per-field merge configuration. Use the format
- Next, list some or all fields. One field per line, in the format
- Repeat steps 1 and 2 for all entities where you need to finetune merge behavior on field level.
The following conflict resolution strategy flags are supported:
- serverwins: server version is selected by default.
- devicewins: device version is selected by default.
- (field not listed in the file): user can select the preferred version manually.
Additionally, two flags control the behavior of the merge form. They have to be used in combination with a conflict resolution strategy flag.
- hide: the field is not displayed on the merge form; the configured behavior applies automatically.
- readonly: the field is displayed on the form, but users cannot modify it; the configured behavior applies automatically.
- Invalid lines are skipped.
- Flag order is not relevant.
- Duplicate lines are ignored, the first setting applies.