Featuring: Samir Jones is a Developer - Attollo AB and Community Captain
In large-scale Board environments, managing unique reporting requirements for hundreds of users can quickly become a maintenance nightmare. As a developer, you often find yourself caught in a cycle of creating near-identical screens to satisfy slightly different user preferences for KPIs or P&L line items.
The solution? User-Configured Reports. By investing development time upfront into a dynamic framework, you can empower users to define their own reporting views while keeping your maintenance footprint at an absolute minimum.
The Core Concept: Personalization at Scale
The goal is to move away from static screen development. Instead, we provide a single, intelligent report screen where users can switch between various report types, such as Payroll, Full P&L, or Expenses, that are dynamically filtered to show only the items relevant to them.
While an Administrator sets the "Global Default," users have the autonomy to override these settings to meet their specific analytical needs.
Key Benefits
- Minimal Screen Sprawl: Theoretically, you only need one report screen to serve the entire organization, drastically reducing the complexity of your Board capsule.
- End-User Empowerment: Users can toggle the visibility of specific items and sort them in their preferred order, creating a truly bespoke experience.
- Agility for the Business: When the client needs a new report variation, they no longer have to wait for a developer. Admins or users can configure it themselves in real-time.
Technical Architecture
To implement this, you need a robust underlying data model. Here is how to structure the setup:
- Entities
- Report: Create a dedicated entity for your report types. You can use a parent group if you need to categorize different types of reports.
- User & UserBoard: The solution relies on a custom selection script on the User entity (in Data Model Security). You will also need the UserBoard entity (a reflection of the User entity) to store user-specific configurations.
- Cubes: You will require two specific "SortFilter" cubes to drive the logic:
- Default Cube: Structured with Report and Data Item (e.g., your P&L line items). This holds the "Master" layout.
- User-Configured Cube: Structured with Report, Data Item, and UserBoard. This stores the personalized layouts for every individual user.
- Procedures: To keep the system running smoothly, two primary procedures are necessary:
- Apply Default to Users: This should be automated when adding new users. It allows Admins to push the default filter to users who have no filter or to force a global update across the organization.
When Admin is forcing the procedure, you can add an interactive selection for Report and User, to create more flexibility for Admin. - Get Default: A self-service procedure that allows users to reset their personal view back to the Admin’s default settings.
The Frontend Experience
Admin Settings
The Administrator uses a dedicated screen to define the master layouts.
Pro Tip: When displaying the cubes in a DataView for sorting, always use at least one decimal place (e.g., 1.0, 2.0). This makes it much easier to "insert" a new item between two existing ones (e.g., 1.5) without renumbering the entire list.
Add an Entity Editor, so that the Administrator can add new Report members.
User Report Management
Users can manage their own SortFilter settings on a dedicated management screen.
User Report
The screen uses a DataView driven by these cubes configured in User Report Management.
- Selectors: Use the Report entity as a selector to let users toggle between their custom views.
- Layout Logic: In the Layout Editor, use the SortFilter cube to drive the "Filter and Sort" settings.
- Column Filtering: If you are displaying report items on columns, remember to deactivate "Show all" in the layout, as column filtering works differently than row filtering.
Setup with items on rows
Setup with items on columns
Conclusion
By shifting from "Building Reports" to "Building Reporting Frameworks," you deliver a more flexible, scalable, and professional solution to your clients. You spend less time on manual updates and more time on high-value development.