Since version 11.1, Resco Mobile CRM app can track users' real-time GPS position and send location records to the CRM server.
Key features:
-
It's implemented as a background service activated via the App Configurator (formerly known as Woodford).
-
It runs even when the app is killed or running in the background.
-
It caches data locally until the user connects to the internet.
-
Users can disable it in the app setup or by disabling access to the location services.
-
By default, it uses Resco's web service to flush data (real-time flushing option).
-
Alternatively, it can send the location tracking records directly to the CRM server.
-
Location tracking data is stored in the CRM as Mobile Auditing entity records. The Owner field is set to user who initiated the tracking event.
-
External user mode isn't supported.
-
It supports Dynamics 365 and Resco Cloud backends.
-
Available for iOS and Android versions of Resco Mobile CRM.
Note
Newer versions of mobile operating systems may restrict access to location information to apps in the background (for example, Background location limits on Android). See also the geofencing feature as a potential alternative.
Location data storage and flushing
By default, location tracking uses Resco's web service for flushing data, which is the so called real-time flushing option. Flushing means that the location data is sent to Resco's service if there is connectivity.
If there is no connectivity or Resco's service is not accessible, the location data are stored locally on the device. If during the next attempt the connectivity is restored, all cached data are sent to the service. This approach was chosen because the app cannot have access to user's password when running on background and therefore it cannot access the CRM server.
This requires activation through the App Configurator by providing valid CRM user and password which is then stored on Resco's server. This login is used for sending all collected organization data from Resco's server to your CRM server. No data is stored on the Resco’s server as all the location records are immediately sent (forwarded) to your CRM server.
Alternatively, the location tracking records can be sent directly to the CRM server via an online web request. Again, if the password is not available, the records are cached locally on the device until the background service gets the password. This can happen after restarting phone/tablet or if OS decides to kill the service due to the lack of resources. When the user provides the password after starting the app, the cached location data are sent to the CRM server.
Registering organization for location tracking
If you want to use the real-time flushing mode, you must register your organization for Resco location tracking web service. When you switch the real-time flushing mode off, records are sent directly to CRM and no registration is needed.
-
Select Location Tracking or Location-based services from the Administration menu of the App Configurator to register your organization for the location tracking web service.
-
Click User name and select one of the users (email addresses), then click OK. For the purposes of location tracking, ideally use/create a service account.
-
Enter a password.
-
Click Register.
This information is stored on the Resco's server which hosts the web service for background GPS position reporting. This is because the app does not have access to the user’s password when it runs on background. The web service then creates records in the target CRM system using this user's credentials.
Authentication error while publishing
When publishing projects, you can run into authentication problems.
-
As the first thing to try, verify that the user name and password are still valid. Unregister your location tracking service user and re-register it. When you save the changes, App Configurator will verify that the credentials are correct.
For Dynamics organizations, verify also the following:
-
The account used when you register your organization for location tracking must be granted consent to access organization data. See here for details.
-
Multi-factor authentication must be disabled for the account.
Configuring an app project for location tracking
Add location tracking to your app project:
-
In the App Configurator, go to the app project where you want to configure location tracking.
-
Select Map & Routes > Location Tracking from the Project menu.
-
Update your configuration and click Save.
Location tracking can generate a large amount of Mobile Audit records.
Common options
-
Business hours: Restrict tracking to business hours. Specify time from and to.
-
Business days: Restrict tracking to business days. Select which days of a week count as business days.
Careful when setting up business hours. They apply to the time zone of the service account used when registering for location tracking. If you are unsure about the time zones of the service account or operate globally, consider setting up a wide window for business hours, e.g. from 0:00 to 23:59.
Background service options
-
Enable background GPS monitoring: Enable location tracking
-
Request position every x minutes: Specify how often should the position be polled.
Keep in mind that it's not possible to specify the exact time interval for system service. This value is rather a suggestion for the device, how often we would like to get positions. Neither Android nor iOS reports the position more frequently than once per minute. This value prevents our service to flush positions too frequently. It prevents massive battery drain which would be caused by frequent system wake-ups.
-
Optimize for: Select whether you want to optimize the location data for Best Results or longer Battery Life.
-
Enable real-time position flushing via Resco web service: Send changes in the position real-time through the Resco web service or directly to the CRM.
Monitoring options
Customize which entity/view represents tracked users, and which entity/view is used as a visit displayed on the Location Monitor map.
User entity view
Choose user entity and its view defining a set of users or resources that are being tracked. The default configuration uses the User entity. You can select a different entity and view (e.g. Bookable Resource) that will be used in location tracking.
Visit entity view
Choose an entity and its view which should be displayed on the Location Tracking Monitor map along with tracked users trajectory. The default configuration uses the Appointment entity. You can select a different entity and view (e.g. Bookable Resource Booking) that will be used to display the visits on the Location Monitor map. Selected view should contain the following fields: primary field (id), name field, start/end fields, latitude/longitude fields (can be linked from a related entity), owner field (lookup to user entity), status field.
Using location data
Administrators and managers can visualize the gathered location data for each user on a map.
-
The main tool for viewing staff location is the Location Monitor.
-
Alternatively, you can use Auditing | Display auditing data in Microsoft Dynamics server to see the collected mobile audit records as a view or on a map.
Tips to improve tracking
Location tracking is designed for constant background location monitoring regardless of application state (even when it's on background or completely stopped). If both admin and user follow configuration requirements, app can provide that. OS limitations, however, strongly influence the outcome.
Configuration requirements
-
User must confirm location access "Always" on iOS. There's no way how to enforce it as it's iOS requirement giving the freedom to users protecting their privacy. If a user chooses "when-in-use" option, app can collect locations only while it's on foreground.
-
Similarly, user must confirm location access on Android. This need is coupled with vendor-specific Security options that must allow app to start on background. See Background location on Android devices for detailed instructions.
-
To achieve real-time updates even when app is on background (and device keychain is locked), we strongly recommend to configure the App Configurator for "real-time" flushing as described above. If real-time flushing is turned off, app is collecting locations locally and flush them when the new location comes in state when app is able to connect to CRM server (device is unlocked).
OS limitations
Mobile operating systems tighten privacy protections with each release, which directly affects how often and how reliably location can be collected in the background.
iOS
-
As of October 2026, Apple has granted Resco an exception that allows the app to fetch location in the background.
-
Resco is currently evaluating the changes introduced in the iOS 27 SDK, which also alter how apps behave in the background. No data is available yet on the impact for location tracking.
Android
-
Google restricts background activity more strictly with nearly every Android release.
-
Apps running foreground services were restricted several years ago. In response, Resco re-implemented location tracking as a background broadcast receiver. This approach is still permitted on the latest Android versions, but it delivers less frequent position updates than the previous implementation.
-
When the device enters deep sleep mode (after approximately 30 minutes of inactivity), location updates delivered to receivers are further throttled to roughly one every 10 minutes.
Alternatives
If scenario requires confirming specific set of locations (e.g. expected customer visits), we suggest using geofencing instead of location tracking. It does not produce so many records, and it reports the location safer comparing to location tracking which might miss important place in case of brief visit.
See also