Telemetry events for mobile app synchronization and actions

Power Apps mobile application data related to offline synchronization events is available for model-driven and canvas apps. This data can be used to evaluate the health and performance of offline sync events for your organization.

This data goes into the Power Apps > Mobile app synchronization and actions table in Application Insights. An entry is logged when a user accesses a Power Apps mobile app, which is configured for offline mode. More data, related to failure events in model-driven apps, is available through the Power Apps > UCI.

Mobile app synchronization and action event definitions

  • id: Event ID.
  • target: Name of the scenario tracked by the event.
  • type: Source table of the event.
  • name: Name of the scenario tracked by the event.
  • duration: Scenario duration in milliseconds. Duration may include long periods of time when the app is inactive.
  • operation_Id: Unique identifier for the session.
  • operation_ParentId: Unique identifier for the scenario tracked by the event.
  • user_Id: Microsoft Entra user ID.
  • application_Version: Version of the app.
  • customDimensions: Contains the following attributes:
    • "EventName": Summary of the scenario tracked by the event (ScenarioEnd).
    • "ScenarioResult": SUCCESS or FAILURE.
    • ErrorCode: Error code generated upon sync failure. Learn more in Error code mapping table.
    • ErrorMessage: Empty on success or string describing the error.
    • FailureType: Defines type of sync failure.
    • LogLevel: The severity or reporting level of the event. Valid values are info, error, warning, error, or verbose.
    • DataSyncMode: What type of offline sync the user has experienced.
      • DELTA_SYNC: Automatic incremental sync.
      • GRID_SYNC: Triggered by a refresh on a grid view.
      • FIRST_SYNC: Initial sync on a device (or after a signout/reconfigure).
      • FORCED_SYNC: Triggered from the Device Status page button.
      • SINGLE_RECORD_SYNC: Triggered by Push notification.
    • AppFlavor: Native app installed on the devices. Valid values are FieldService and PowerApps.
    • AppInfo_Version: Version of the native app, as seen in the app store.
    • ActiveDuration: Scenario duration in milliseconds including only time while the app is active.
    • DeviceInfo_Id: Unique identifier of the device.
    • DeviceInfo_model: Device model (such as iPhone 13).
    • DeviceInfo_make: Device make (such as Apple).
    • DeviceInfo_OsName: Device operating system (such as Android).
    • DeviceInfo_OsVersion: Operating system version (such as Android 13).
    • Loc_country: Telemetry device origin.
    • eventContext: Contains the following properties:
      • CurrentSyncId: ID of a successful sync pass. Reset after each successful sync. (It isn't reset after an error.)
      • CurrentActivityId: ID of the sync pass. Reset after each sync.
      • entityName: Name of the table in data download events.
      • ProfileId: ID of the offline profile configured for the app and user.
      • RecordCount: Number of records downloaded.
      • ResponseSize: Incoming payload data size as reported by HTTPClient (compressed size).
      • ContentLength: Incoming payload data size as reported by HTTPClient (compressed size).

Unified Client Interface failure events

  • timestamp [UTC]: When the event happened.
  • problemId: "uci_trace" or "uciMonitorFailure" (Where the data came from.)
  • type: "uci_trace" or "uciMonitorFailure" (Where the data came from.)
  • outType: "uci_trace" or "uciMonitorFailure" (Where the data came from.)
  • outerMessage: Error message.
  • itemType: "exception"
  • CustomDimensions:
    • eventContext: More details related to the error.
    • ServerConnectivityState: Is user in offline mode? (Offline/Online)
    • NetworkConnectivityState: Does user have internet connection? Note that a user can be in offline mode, but have an internet connection.
    • IsOfflineByDefaultApp: When false, it means the Work in offline mode feature is on. When true, it means offline-first is turned on.
    • callStack: The programming code where the error occurred.
    • hostSubType: "PowerApps-Player-iOS-fieldservice"
    • hostType: "MobileApplication"
  • Operation_ID: A string concatenation of sessionID followed by a '_' and External correlation ID, for example, e11e8465-bc8f-4319-b64a-9c1e42453148_0da90a33-ad68-4a4e-bd45-5728d5da719a.
  • Operation_ParentID: Activity ID related to error.
  • SessionId: Session ID of error.
  • UserId: Dynamics 365 user ID.
  • User_authenticatedID: Dynamics 365 user ID.
  • Application_version: App version, for example, 9.2.24045.00212.
  • Client_Type: Operating system version, such as iOS or Android.

Example scenarios

Offline sync failures by error code

This query allows you see what types of failures frontline workers are encountering when a sync fails. Some failures are excepted, such as if the mobile application is closed while syncing, or if the network disconnects while syncing and prevents the sync from completing. Definition of failure codes is shown in the Error code mapping table.

dependencies
| where name == "Offline.SyncDatabase"
| where success == false
| extend cd = parse_json(customDimensions)
| extend AppVersion = tostring(cd.AppInfo_Version)
| extend ErrorCode = tostring(cd.ErrorCode)
| extend ErrorMessage = tostring(cd.ErrorMessage)
| extend FailureType = tostring(cd.FailureType)
| summarize dcount(user_Id), count() by ErrorCode, ErrorMessage, FailureType, bin(timestamp, 1d)

Average records synced by table

This query allows you to evaluate which tables are contributing most records to a sync. Using this data you can try to further optimize your offline profile to reduce records or data within each table.

dependencies
| where name endswith_cs "Offline.DdsClient.GetRecords"
| extend cd = parse_json(customDimensions)
| extend ec = parse_json(tostring(cd.eventContext))
| extend RecordCount = toint(ec.RecordCount)
| extend EntityName = tostring(ec.EntityName)
| extend syncid = tostring(ec.CurrentSyncId)
| extend DataSyncMode = tostring(cd.DataSyncMode)
//| where DataSyncMode == "FIRST_SYNC" //This is used to pivot on the type of sync being executed.
| summarize sum(RecordCount) by syncid, EntityName, DataSyncMode, user_Id
| summarize percentile(sum_RecordCount, 50), arg_max(sum_RecordCount, user_Id), count() by EntityName, DataSyncMode

Average sync duration by sync mode

This query allows you to evaluate the average sync duration for users in your organization.

dependencies
| where name == "Offline.SyncDatabase"
| extend cd = parse_json(customDimensions)
| extend ActiveDuration = toint(tostring(cd.ActiveDuration))
| extend WithBackgroundTime = duration
| extend DataSyncMode = tostring(cd.DataSyncMode)
| summarize percentile(ActiveDuration, 50), percentile(WithBackgroundTime, 50) by client_Type, DataSyncMode

Sync details by user

This query provides a per-user view of synchronization, including last sync date, last error, duration of sync, and records synced.

dependencies
| where name == "Offline.SyncDatabase"
| extend cd = parse_json(customDimensions)
| extend ActiveDuration = toint(tostring(cd.ActiveDuration))
| extend WithBackgroundTime = duration
| extend DataSyncMode = tostring(cd.DataSyncMode)
| extend ErrorMessage = tostring(cd.ErrorMessage)
| summarize percentile(ActiveDuration, 50), percentile(WithBackgroundTime, 50), arg_max(timestamp, ErrorMessage), countif(success == false) by user_Id, DataSyncMode

Users by device type and app version

This query gives more information on users in your organization who are accessing the mobile application on their device model.

dependencies
| where name == "Offline.SyncDatabase"
| extend cd = parse_json(customDimensions)
| extend AppVersion = tostring(cd.AppInfo_Version)
| summarize dcount(user_Id) by AppVersion, client_Type

Error code mapping

Error code Failure type Definition
-2146864604 CONFIG_ERROR App or user configuration error. See Web service error codes.
-2146864606 CONFIG_ERROR App or user configuration error. See Web service error codes.
-2146864607 CONFIG_ERROR App or user configuration error. See Web service error codes.
-2146864608 CONFIG_ERROR App or user configuration error. See Web service error codes.
-2146869250 CONFIG_ERROR App or user configuration error. See Web service error codes.
-2147015328 ACCESS_ERROR App or user configuration error. See Web service error codes.
-2147088248 CONFIG_ERROR App or user configuration error. See Web service error codes.
-2147155198 ERROR For error codes beginning in –214, see Web service error codes.
-2147155198 ACCESS_ERROR App or user configuration error. See Web service error codes.
-2147167669 ACCESS_ERROR App or user configuration error. See Web service error codes.
-2147180269 ACCESS_ERROR App or user configuration error. See Web service error codes.
-2147180284 ACCESS_ERROR App or user configuration error. See Web service error codes.
-2147187375 ERROR App or user configuration error. See Web service error codes.
-2147187388 ERROR App or user configuration error. See Web service error codes.
-2147187389 ERROR App or user configuration error. See Web service error codes.
-2147204270 ERROR App or user configuration error. See Web service error codes.
-2147204339 ERROR App or user configuration error. See Web service error codes.
-2147204784 ERROR App or user configuration error. See Web service error codes.
-2147209463 ACCESS_ERROR App or user configuration error. See Web service error codes.
-2147217124 ERROR For error codes beginning in –214, see Web service error codes.
-2147220884 ERROR For error codes beginning in –214, see Web service error codes.
-2147220955 ACCESS_ERROR App or user configuration error. See Web service error codes.
-2147220956 EXTERNAL_ERROR For error codes beginning in –214, see Web service error codes.
-2147220960 ACCESS_ERROR App or user configuration error. See Web service error codes.
-2147220970 ERROR For error codes beginning in –214, see Web service error codes.
-2147220989 ERROR For error codes beginning in –214, see Web service error codes.
-50 ERROR Internal error.
0 ERROR Unknown error.
2000 ERROR Unmapped error.
2002 ERROR Dataverse SQL timeout.
2003 DATABASE_ERROR Database error.
2004 NETWORK_ERROR Network error.
2005 SERVER_ERROR Server error.
2006 AUTH_ERROR Authentication error.
2007 DEVICE_ERROR Disk is full error.
2008 ERROR Internal error.
2009 AUTH_ERROR Authentication error.
2011 CONFIG_ERROR App module privilege error.
2016 CONFIG_ERROR Offline configuration error.
2017 CONFIG_ERROR Offline profile configuration error.
3000 EXPECTED_ERROR Sync internal event.
3003 CONFIG_ERROR Offline profile configuration error.