Showing results for 
Search instead for 
Did you mean: 

Mobile configuration best practices for optimal performance


Mobile configuration best practices for optimal performance

This Best Practices Guide contains performance improvement recommendations for a ServiceMax mobile application. These configuration guidelines help you achieve better application performance by ensuring to download only relevant data to the device. The recommendations given below are grouped based on features:

Event Window

This section provides a context for the optimal event window configuration.

Event window configuration option allows you to define a time range based on which events can be pre-downloaded to your mobile device. It allows you to configure certain number of days in the past and future so that the events scheduled during those days can get downloaded. When events get downloaded, the associated records such as the work order and the related work details will also get downloaded. It means that the long event window time range selection can lead to large amount of data download. In addition, the amount of data that gets downloaded using the Advanced Download Criteria is also based on the event window configuration.

Keep event window small: It is recommended to keep the event window date range at a minimum. It is not advisable to select the date range longer than 10 days.

Event Management

This section specifies the recommended approach for effective event management.

1. Archive older events: The high volume of historic events in your Salesforce org can slow down the performance of the application because of the considerable number of records that can get included in the query. In such cases, it is recommended to have an archival policy for the salesforce orgs with more than ~200K.

2. Do not delete and recreate events: It is recommended that you avoid deleting and recreating events associated to the same reference record (E.g. same work order). The recreated event is treated as a new record and can lead to duplicate download of associated records like work orders and work order details.

Advanced Download Criteria (ADC)

This section provides information on the recommended usage of Advanced Download Criteria. The primary purpose of the Advanced Download criteria is to download records related to an object associated with the event window. For example, you can download all Accounts related to work orders in the event window, or download all Installed Products for the work order location.

  1. Do not use ADC to download records outside event window: It is recommended that you limit the use of Advanced Download criteria to download the records related to the event window. To download objects outside of the event window, use “Download Criteria.
  2. Do not use OR conditions in ADC: Using the ORCondition in Advanced Download Criteria (E.g. selecting IB records where WO site equals IB site OR IB name like ‘abc’) can include results outside of the event window and might lead to performance issues. This should be avoided. Instead, use the Download Criteria to get records outside the event window.

Download Criteria

This section provides information on the recommended usage of Download Criteria. The primary purpose of the Download Criteria is to download non-transactional master data like Accounts, Contacts, Installed Products etc.

  1. Do not use complex formula fields in Download Criteria: Since download criteria can possibly return large datasets, it is recommended that you refrain from using complex formula fields as criteria for download because it can lead to ineffective long running queries. Instead, use literals wherever applicable.
  2. Do not create queries that return more than 30% of the object size: As per Salesforce guidelines, queries should be configured in a way so that they do not return more than 30% of the total dataset size of an object. It is recommended that you use the same guidelines when using Download Criteria for optimal performance.
  3. Employ Data archival policy for large objects: Each organization should have a data archival policy in place to ensure objects do not have unnecessary data leading to deficient performance of queries. Ensure that you do not have objects included in queries with millions of records unless it is necessary. Especially for events object, the record size should be limited to no more than ~ 200K records.
  4. Request Salesforce to create index on large objects: If any object requires to have more than 200K records, it is recommended that a request should be logged with Salesforce to create an index.
  5. Add criteria on indexed field: In addition to having an index, it is recommended to add some criteria on the index field to make the SOQL query more selective.

Global Settings for Synchronization

This section provides information on how to use global settings to ensure performance improvements.

  1. Enable conflict resolution setting SET016: It is recommended that you enable this setting as it facilitates field level conflict resolution. If you enable this setting, it will only update the fields that are modified and not over-write the entire records.
  2. Enable aggressive sync setting SET019 only if required: As the name suggests, enabling this setting invokes data synchronization every time a record is saved on the device. It is recommended that you enable this setting only if your business process requires to connect to a server every time a record is modified and saved. Instead, you can use business rules to validate data on the client side and reduce dependency on aggressive sync.
  3. Keep a lower threshold utilization value for SET011: This setting is used to define a percentage threshold utilization value of available salesforce resources. If the current resource utilization exceeds the threshold value, the method that is called as part of data sync does not get executed. This ensures that you will not get a governor limit system exception upon executing a method. For example, if the value is set to 70% (Governor limit: 10 secs execution time, 100 SOQL’s, 6MB heap size allowed), the system checks if existing resource utilization is under 70%, only if it is less, the new method is executed. It is recommended to keep this value at 70%. Organizations that have large datasets and lots of custom objects should ideally keep a lower threshold value based on resources required for executing methods.

Profiles and Permissions
This section provides suggestions on how to manage profiles and permissions for improving the application performance.

  1. Create profiles by device type: It is recommended to use different profiles for different device types used by users. This is done to ensure not to download the same data and SFM processes across different devices. For example, an iPhone profile can have less data and transactions assigned to it as compared to a windows laptop client.
  2. Do not assign object permissions to technician profiles that they do not use: While assigning object permissions to technician profiles, make sure you assign only the objects that are used by the profile.

SFM Process Assignment

This section helps you understand how to use SFM processes judiciously to improve performance.

Create a ‘placeholder’ profile for unused SFM processes: Please note that an SFM process which is not assigned to any profile is automatically assigned to all the profiles. While this can reduce the number of steps required to add an SFM process to the profiles, it can adversely affect the application’s performance. If more number of SFM processes are assigned, it might require more time for synchronization. Follow the guidelines given below while you assign SFM processes to profiles:

  1. Create a ‘placeholder’ ServiceMax profile.
  2. Assign all SFM Processes to the ‘placeholder’ profile.
  3. Assign only required SFM processes to a technician profile.


This section provides guidelines on optimizing Pricebook downloads.

  1. Add a filter to pricebook download: Downloading the entire pricebook on a client device can have significant performance implications because of the considerable number of records that a pricebook usually have. You can create filters on pricebook download criteria, thereby reducing the number of records downloaded.
  2. Do not enable pricebook sync as part of aggressive sync unless necessary: Enabling the setting SET022 will update the pricebook data as part of aggressive sync. Make sure you enable this setting only if your organization’s pricebook data is susceptible to regular changes and you want it to be updated as part of every aggressive sync call.

IB App Configurations

  1. Use filters and limit the size while downloading attachments: IB App has specific configuration options for downloading attachments. It supports filters which allow you to define the file type and limit the size of attachments that can be downloaded. It is recommended that you define the file type and the maximum limit of the file size so that only the required attachments get downloaded to the device.
  2. Limit number of events and work orders downloaded: It is generally recommended to keep the number of events and work orders downloaded to the minimum because IBs and related attachments downloaded are based on the number of events and work orders that are downloaded.

External Data Integration

  1. External calls as part of data sync are made as @future calls: Salesforce has a limitation that it cannot trigger an external call when a CRUD operation is being performed as part of an inbound call (e.g. data sync from client). Any external call is queued and performed as future call. As a result, data synchronization cannot wait for the response of an external call before returning the data back to the client. You need to keep this limitation in mind when designing an external data integration.
  2. Do not delete and recreate data: As a best practice, data modified in salesforce because of external integration (e.g. From SAP, Siebel etc.) should be an update instead of a delete and insert. Deleting and inserting records may impact sync performance.
  3. Limit combined external integration call: It is also recommended that too many integration calls with an external system should be avoided wherever possible. It is recommended that you analyze the architecture and combine multiple calls together if possible.

The same guide is also available as part of user docs at the following location:

And as a pdf at the following location:

Special thanks to Ranga Vaithyalingam​ for putting this guide together!

Line Chef
Line Chef

Re: Mobile configuration best practices for optimal performance

tushar sharma

Hello Tushar,

     Thanks for publishing a Document on Mobile Configuration on Best Practices. I need a clarity on your suggestions on Profiles & Permissions. Are you suggesting to create multiple Salesforce Profiles for a Technician, if he uses Laptop, iPad & iPhone? One salesforce profile can only be assigned to one ServiceMax profile & so we cannot manage different SVMX Permissions with a single sfdc profile.