Skip to content

Performance Considerations Mobile Apps

IFS Cloud Mobile Apps contains a subset of the data that exist in IFS Cloud. In IFS Cloud certain tables have millions of records and you do not want all of them to be synchronized to the mobile app. As the mobile apps are also often to be used in offline mode, this subset of data needs to be downloaded and initialized to the device when logging in for the first time and you have connectivity. After that the synchronization will happen and new data will be downloaded to the app through Batch or Push and Batch processes or Grouped Push process.

In IFS Cloud there are a lot of table columns for each entity. Not all of those table columns are downloaded to the app. By default each app has a defined subset of columns that should be downloaded to the app. Most of them are visible, but there are also some that are hidden for the end user. Every table column that are synchronized will add up to to the initialization and synchronization time.

By minimizing the number of records and table columns to be synchronized to the app, the following will be achieved:

  • Faster initialization time
  • Faster synchronization time
  • Faster operation in online mode
  • Less data in the local table on the device for the app

  • Reduce user error due to less columns

Define functionality to be used

The first step of reducing the data for initialization and synchronization is to define what functionality will be used in the app. Make sure to review the functionalities not in use and remove security for the security groups in Security Groups by Permission Set to avoid synchroinizing unwanted data.

This will decrease the initialization time as well as the synchronization time.

Restrict what data should be synchronized

The second step of reducing the data for initialization and synchronization is to restrict what data should be synchronized to the app. For each entity there are default where statement, but those might not be enough if you have large amount of data in IFS Cloud. In such cases there is a need to further restrict what data should be sent to an app user.

There are separate filters for Push and Batch entities and Grouped Push Filters.

Push And Batch Filters

Push and Batch Filters are added in App Details and are used for Batch, Push and Batch entities. By adding filters for those entities you will be able to restrict the amount of data to be used in the initialization and the synchronization to the app.

Grouped Push Filters

Grouped Push Filters are added in Grouped Push User Filter and is used for Grouped Push entities. By adding filters for those entities you will be able to restrict the amount of data to be used in the initialization and synchronization to the app.

Note: Observe that Grouped Push entities are different in the sense that when a User synchronizes for the first time a check of the generated Grouped Push User Filters is made. If the generated Filter for the specific App/User/Entity has been captured before by the Grouped Push process then this data will be returned in the synchronization process. If the generated Filter does not exist then the Grouped Push process will collect the data and return this in the synchronization process.

Permission Set Filters

In Synchronization Rules, there is a possibility to change the Filter Method used for the entity. Filter Method can be Exclude or Include, which determines how Permission Set Filters will be combined with the default where condition.

By default, the Filter Method is set to Exclude, combining the default where condition and the Permission Set filters with an AND, effectively restricting the dataset.

Include combines the default where condition and the Permission Set Filters with an OR, effectively expanding the dataset.

Note: You need to be very cautious when using the Filter Method Include in Permission Set Filters. Influx of large data will affect the end users as well as performance of the entire system.

Change Synchronization Rules Intervals

There is a possibility to change the synchronization intervals for the Batch and Push and Batch entities used in an app in Synchronization Rules. All the entities comes with a default setting when the entity should be synchronized. The rule of thumb is that data that are considered as basic data are batch entities and the transactional data that needs to be synchronized to the device are Push and Batch entities.

For data that are very seldom change it is a possibility to set the synchronization interval to On Changes, and get that data immediately synchronized to the app. The benefit of doing that is that it doesn't need to be collected at the same time as the rest of the batch entities.

To change the synchronization interval for a certain entity can both have a positive and a negative effect on the synchronization. If the interval is set to low, IFS Cloud will not be able to keep up with the changes for the push and Batch data and it can in such case be worse for the synchronization.

Change Grouped Push behavior

For entities that are defined as Grouped Push in Synchronization Rules, can be changed to Batch. If there are not too many records in the Grouped Push entities it could be worth considering to change those to Batch entities and see if the initialization will go faster. It is possible to change back to Grouped Push again for those entities.

There is also a possibility to change the Grouped Push entities to be fetched in the background by changing the Application Parameter DETACHED_GROUPED_PUSH_DATA. What will happen is that the home screen will come up quicker, but you can still not use the Grouped Push entities before they have been downloaded to the device. It will not have any effect of the synchronization time, but the initialization times feels faster as the home screen comes up quicker.

Custom Attributes

There is a possibility to add Custom Attributes, aka Custom Fields. To that Custom Attribute you can also add SQL statement and if the SQL statement is not written in a good way, the performance may be poor. So when adding a new Custom Attribute, make sure that the SQL statement are also performing well.