Follow these best practices to create secure, maintainable, and high-performing reports in Apex 2.0 Reporting.
These recommendations help ensure consistent report design, improve dashboard usability, and simplify long-term maintenance.
Configure User Permissions
Access to reporting features and data is controlled by the user's assigned roles and application permissions. Do not assign any additional reporting role to a user with the Customer Admin role. If a reporting role is assigned, Row-Level Security (RLS) is also applied to the user, which may restrict the data available.
Apex 2.0 Reporting implements a role-based access control with three distinct roles:
Level | Role | Permission |
|---|---|---|
1 | Customer Admin | Full access - Create datasets, SQL Lab, Build charts, Design dashboards |
2 | Report Designer | Partial access - Build charts, Design dashboards |
3 | Report Viewer | View only - View dashboards and charts |
Note
Only users assigned the Customer Admin role can create datasets. This role is required to set up and manage the reporting infrastructure.
For more information, refer User List.
Dataset Creation
Follow these best practices when creating datasets to ensure they are reusable, secure, and suitable for multiple reporting requirements.
Include the mandatory RLS columns. When creating a virtual dataset using SQL Lab, include the following columns with the exact column names:
tenant_idassigned_workgroup_idlocation_idcustomer_idNote
These columns are required to apply Row-Level Security (RLS) based on user permissions.
Design Datasets: Include the dimensions, measures, and calculated fields required for multiple charts and dashboards instead of creating a separate Dataset for each chart. This reduces duplicate datasets and provides a consistent data source for reporting.
Avoid transaction tables: Do not use transaction tables to create custom Datasets because they do not contain the required RLS columns.
Apply Role-Based Data Access Using RLS
Row-Level Security (RLS) controls which data appears in your reports. It automatically restricts what you see based on your assigned permissions—such as your tenant, location, customer, and workgroup—ensuring you only access data you're authorized to view.
When Setting Up Your Dataset:
Include the right access columns – Add these columns to your dataset based on your reporting needs:
Tenant
Location
Customer
Workgroup
Check the RLS matrix – Refer to the provided RLS matrix to confirm which columns are required for your specific module or report type.
RLS automatically filters your data based on your access level. When building datasets, include the appropriate access columns and use the RLS matrix as your reference guide.Module
Dataset Prefix
Fields Used for RLS Filtering
Knowledge Master
mart_km_*
tenant_id
Problem Management
mart_pm_*
tenant_id, assigned_workgroup_id
Service Request
mart_sr_*
tenant_id, assigned_workgroup_id, customer_id, location_id
Change Management
mart_cm_*
tenant_id, assigned_workgroup_id
Asset Management
mart_am_*
tenant_id
Incident
mart_im_*
tenant_id, assigned_workgroup_id, customer_id, location_id
CMDB
mart_cmdb_*
tenant_id, assigned_workgroup_id, customer_id
Service Automation
mart_orc_*
none
Info
Create reusable datasets that support multiple reporting requirements and include all required RLS columns to ensure consistent and secure data access.
Dataset Naming Conventions
Use the recommended naming convention for custom datasets to ensure consistency and simplify identification and management.
Use the following naming structure:
Example:
mart_<module_code>_<custom>_<functional_name>module_code: Specify the applicable module code.custom: Specifycustomto identify the dataset as custom.functional_name: Specify a descriptive name that reflects the dataset's purpose.
Note
Use descriptive functional names that clearly indicate the purpose of the dataset.
Configure Time-zone
When creating a dataset using SQL Lab, apply the following expression to each date-time column to ensure the values are adjusted based on the user's time zone. The expression retrieves the GMT offset configured for the logged-in user and automatically adjusts the date-time value based on the user's time zone.
STR_TO_DATE(DATE_ADD(<column_name>,
INTERVAL IFNULL((SELECT gmt_time_diff FROM user_timezone_mapping
WHERE username='{{ current_username() }}'),330) MINUTE), '%Y-%m-%d %H:%i:%s.%f') <column_name>Note
Replace <column_name> with the corresponding date-time column in the dataset.
For more information, refer Configure Time Zone Handling.
Dashboard creation
Organize related charts by using layout elements such as Rows, Columns, Headers, and Tabs. Grouping related information makes dashboards easier to navigate and interpret.
Publish dashboards before sharing them. Publish a dashboard to make it available to other users.
Copy OOB reports before customization. Do not add OOTB reports directly to Custom Dashboards. Use Save As to create a copy of the OOTB report, customize the copy, and then add it to the Custom Dashboard.
For more information, refer Create Dashboard.
Report Creation
Design Virtual Datasets to Include only the fields required for reports, charts, and drill-down views. Use column aliases, calculations, or transformations as needed to create a focused and reusable data source.
Configure datasets before creating reports. Define the required fields and conditions in the virtual dataset before using it to create charts or reports.
Clone reports and dashboards before editing. Only the owner can edit an existing report or dashboard. Use Save As to create a copy and make the required changes to the copy. Do not add default charts directly to custom dashboards, as future product updates to default chart configurations or logic may affect dashboards that use them..
For more information, refer Create Charts.
Configure Dashboard Filters
Dashboard filters allow you to filter the data displayed in multiple charts on a dashboard based on selected criteria. You can configure filters for specific fields, set default values, and control which charts are affected by each filter.
View only the data relevant to your analysis.
Apply the same filter criteria to multiple charts.
Configure filters for specific charts based on your requirements.
Set default filter values for a dashboard.
Quickly change the data displayed without modifying individual charts.
For more information, refer Add and edit filter section from Create Dashboard.