Reports Best Practices

Naming Conventions

Description

  • A description of what and where the report is used can be extremely useful for audit purposes and peer review tracking.

Analyser text search

When searching for records, the following methods work from fastest to slowest:

  1.  Where ever possible, use the "Any of" analyser condition to match a resource rather than searching for it by Date.
  2. If searching text, use equals (=) wherever possible.
  3.  Where ever possible, avoid using "Starts with", ''Contains" and "Ends with" when searching for records on large reports.

Use Analyzer Conditions to Optimize Performance 

In some situations the performance of Reports can be significantly improved by using Analyzer conditions as opposed to relying solely on security access rules.  This optimisation requires the access rules to be defined on the same object, or a parent object, as the report (but not a derived object).  

If a report has analyser conditions that cause the (root node) records of the report to be filtered, then (as long as the filter is in place) the Report can be optimised if the following conditions are true:

  • the user has at least one access rule that applies to that type of record (other than 'grant read to all records')
  • the filters on the report imply that at least one of the access rules will always be fulfilled

Examples:

The optimization can be used if:

  • an access rule says that 'status' must be any of: "medium", "large", "x-large"; and the report Analyzer says that the status must be any of "medium", "large", OR
  • an access rule applies to "employees" and says that status must be any of: "available", "on leave"; and the report is of "managers" with the same Analyzer condition

However, the optimization does not apply if:

  • the access rule applies to "managers" and says that status must any of "available", "on leave"; but the report is of "employee" with the same Analyzer condition, OR
  • the access rule has the "exact type only" advanced option set, and the report does not have "exact type only" advanced option set, and the object has derived types

Conditional formatting

Only use conditional formatting when it adds value to the report.

Ordering

Ideally, order the report in a way that the user will find useful (e.g. by Name). If users are continually re-ordering a report then this means more delays for the user.

However, when performance tuning a report, it is a good idea to check the advanced ordering option and remove any unnecessary sorting.

Application Linking

  • It is important that you link your reports to your application as this is the main requirement for you to properly package and publish your application later on.