A report that the xMatix mobile app files when a change queued on a device fails for good: the server refused it, it conflicted with a newer server version, or temporary errors used up all five attempts. The device sends the report through its own offline queue, so a failure that happens without coverage still arrives once the device reconnects. Each record carries what the device tried to write, the server's error, the device, user and app version, and a Resolution Status that administrators use to work the queue. Reports are evidence only: editing, resolving or deleting one never re-sends or discards the change still waiting on the device. In the standard setup the reports appear in the Field Sales app under Settings, Diagnostics, and nothing deletes them automatically.
Fields
| Field | Label | Type | Required | What it does |
AppVersion | App Version | Text, inactive | | Version of the mobile app that filed the report. Useful for spotting failures limited to devices that have not updated. |
AttemptCount | Attempt Count | Number, inactive | | How many times the device tried to send the change before giving up. A refusal on the first try shows 1; temporary errors that used up every attempt show 5. |
CreatedById | Created By | Lookup → UserAccount | Yes | |
CreatedDateTime | Created Date | DateAndTime | Yes | |
DeviceId | Device | Text, inactive | | Identifier of the installation that filed the report. It stays the same for one installation of the app, so several reports with the same value point at one phone. |
ErrorMessage | Error Message | LongMultiLineText, inactive | | The server's error as the device recorded it, as a title and message separated by a colon. Cut off after 4000 characters. |
FailureReason | Failure Reason | PickList, inactive | | Rejected when the server refused the change (a validation, permission or not-found error) or when temporary errors such as time-outs, server errors or rate limits persisted through all five attempts. Conflict when the server reported that the record had changed or been removed since the device read it. The seeded Blocked value is never written by the device. |
Id | Id | Guid | Yes | |
LastAttemptUtc | Last Attempt (UTC) | DateAndTime, inactive | | When the final, failing attempt was made, in UTC. |
ModifiedById | Modified By | Lookup → UserAccount | Yes | |
Name | Name | Text | Yes | Short headline the device writes: the internal name of the record type, the operation and the word failed, for example Order Create failed. |
OccurredUtc | Occurred (UTC) | DateAndTime, inactive | | When the change was first queued on the device, in UTC. |
Operation | Operation | PickList, inactive | | What the failed change was trying to do: Create, Update, Delete, Action (running an action, or a queued call to a dedicated endpoint) or UploadFile (a photo or attachment upload). |
OwnerId | Owner | Lookup → UserAccount | Yes | |
Payload | Payload | LongMultiLineText, inactive | | The data the device tried to send, as JSON text. Cut off after 4000 characters, so a long payload may be incomplete. |
RecordTypeId | Record Type | Guid, hidden | | |
ResolutionNotes | Resolution Notes | LongMultiLineText, inactive | | Shown on the standard record form, but the value has no storage on this record type: saving a value is refused because the field is inactive. Leave it empty. |
ResolutionStatus | Resolution Status | PickList, inactive | | Triage state for administrators: Open, In Progress, Resolved or Won't Fix. The device files every report as Open; nothing else changes it automatically. Changing it does not affect the change still waiting on the device. |
ResolvedUtc | Resolved (UTC) | DateAndTime, inactive | | Shown on the standard record form, but the value has no storage on this record type: saving a value is refused because the field is inactive. Leave it empty. |
SourceEntityName | Source Entity | Text, inactive | | Internal name of the record type the failed change was for, such as Order or VisitRouteStop. |
SourceRecordId | Source Record Id | Text, inactive | | Identifier of the record the failed change targeted. For a create that never reached the server it is a temporary identifier generated on the device, which matches no server record. |
SubscriptionKey | Subscription Key | Guid, hidden | Yes | |
UpdatedDateTime | Updated On | DateAndTime | Yes | |
UserName | User | Text, inactive | | Display name of the user signed in on the device. When the name has not loaded yet, for example during a background sync, the device writes the user's sign-in identifier instead. Created By always identifies the user whose session filed the report. |
Actions
| Action | Label | Type | What it does |
Clone | Clone | ServerAction (Clone) | Create a copy of this record |
DeleteEntity | Delete | Delete | DeleteEntity |