09.03 Favorites and Personalization
The SimpleRisk personalization surfaces — report favorites, dashboard widget customization, datatable column display settings — and the candid scope of what Core supports versus what would require custom development.
Why this matters
Personalization is what turns a shared application into one that fits your working style. SimpleRisk supports a few personalization surfaces — report favorites for the reports you read often, dashboard widget customization for the views you've reshaped, and per-table column display settings so the columns you care about are the ones that show. Used well, these reduce the friction on the operations you do every day.
The honest scope of personalization in Core SimpleRisk: column-display customization is the bulk of it. Datatables across the app (Risk Management, Compliance, Governance, etc.) support per-user column selection (which columns to show, in what order) and persist the customization in the user record. Beyond that, dashboards have widget customization and the Reports Hub has favorites. There's no global "favorites" concept that spans all entity types, no saved searches, no saved filter sets, no dashboard layout sharing across users. Programs needing more sophisticated personalization either accept the column-and-widget scope SimpleRisk ships with or build custom additions through the Customization Extra.
The third thing worth knowing: personalization is per-user, not per-team. Two team members on the same team see different customizations on the same datatables (each user customizes their own). For programs that want a standard view across the team, the right pattern is to document the recommended layout and have each team member reproduce it. There's no admin-side surface for pushing a team-wide default layout.
Before you start
Have these in hand:
- A logged-in SimpleRisk session with at least one role that gives you access to a customizable surface (Risk Management for risk lists, Compliance for compliance lists, Reporting for reports/dashboards).
- A clear sense of what you'd like to customize. "Make this list more useful" works as a starting point; you'll find the customization controls on the surface itself.
- Awareness that personalization persists across sessions but not across user accounts. Customizations you make on your account don't transfer to anyone else's account, and they don't transfer if you switch to a different account.
Step-by-step
1. Customize datatable columns
Most datatables in SimpleRisk (the Risk list, the Mitigation list, the Compliance list, the Document list, etc.) support column customization. The customization typically lives behind a Settings cog or a Column Selections control near the table's header.
Steps:
- Open the datatable (e.g., Sidebar: Risk Management → Review Regularly opens the risk-review queue at
/management/review_risks.php). - Find the column-customization control. The exact label varies by table; common labels include Column Selections, Settings, or a gear icon.
- The control opens a modal or panel listing all available columns with checkboxes (or a drag-and-drop reorder list).
- Check the columns you want to show; uncheck the ones you don't.
- Drag to reorder if the table supports reordering.
- Save. The next render of the table reflects your changes.
The customization writes to one of several custom_*_display_settings columns on your user table record:
custom_risk_display_settings— the main risk list view.custom_plan_mitigation_display_settings— the Plan Mitigation queue view.custom_perform_reviews_display_settings— the Perform Reviews (management review) queue.custom_reviewregularly_display_settings— the Review Regularly queue.custom_documents_to_controls_display_settings— the Document-to-Control mapping view.custom_queue_display_settings— the queue / background-tasks view.custom_questionnaire_results_display_settings— the Assessments Extra results view.custom_display_settings— a general-purpose customization holder.
The columns are JSON-encoded; you don't need to read or edit them directly. The UI handles the persistence.
2. Customize dashboard widget layouts
The three Core dashboards (Risk Management, Compliance, Governance) support per-user widget customization through the UILayout widget framework. The customization lets you add, remove, resize, and rearrange widgets on the dashboard.
Steps:
- Open the dashboard (e.g., the Risk Management Dashboard at
/reports/risk_management_dashboard.php). - Find the Edit toggle at the top-right of the dashboard. Clicking it switches the dashboard from read-only to editable mode.
- In edit mode: - Drag widgets by their headers to rearrange. - Resize widgets by dragging their corner handles. - Use the Add Widget control to add available widgets. - Drag a widget into the Trash Widget zone to remove it.
- The layout saves automatically as you edit; there's no separate Save button.
- Toggle Edit mode back off when done.
The customization is per-user — your custom layout doesn't change anyone else's view of the same dashboard. The default layout is what new users see; users see your customizations only on their own visits.
If a customization goes badly, the Restore Layout control resets the dashboard to its default arrangement. This is the safest way to recover from a layout that's gotten unmanageable.
For the full mechanics of dashboard customization, see The Risk Dashboard and The Compliance Dashboard.
3. Favorite reports for quick access
The Reports Hub at /reports/dashboards.php supports per-user favorites — clicking a star icon on a report tile adds the report to your Favorites category. Steps:
- Open the Reports Hub.
- Browse to a report tile you read often.
- Click the star (or favorite-toggle) on the tile. The tile is added to your Favorites category.
- To unfavorite, click the star again.
The favorites filter at the top of the Reports Hub lets you see only your favorited reports in one view — useful when you have many available reports and want to focus on the few you read regularly.
The favorites are stored in the user_favorite_reports table, with one row per user-report pair. The v2 API equivalents:
GET /api/v2/reports/favorites— list your starred reports.POST /api/v2/reports/favorites— add a report to favorites.DELETE /api/v2/reports/favorites/{report_key}— remove a report from favorites.
Most working users converge on 5–10 favorited reports they read regularly; favoriting them keeps the Reports Hub navigable.
4. Reset all customizations to defaults
If your customizations have gotten out of hand and you want to start fresh, the Reset Custom Display Settings button on the profile page (/account/profile.php) clears all your custom_*_display_settings values back to defaults. The reset is global — it affects all your customized datatables at once, not just one.
The reset doesn't affect:
- Dashboard widget layouts (those are in a different storage and reset via the per-dashboard Restore Layout control).
- Report favorites (those are in
user_favorite_reportsand removed via the per-report unfavorite action or via the API). - Account settings (language, MFA enrollment, API keys — these survive the reset).
The reset's scope is exclusively the column-display customizations.
5. Programmatic personalization via the v2 API
For most personalization, the UI is the right path. For programs that want to script user-level setup (e.g., a new-user onboarding flow that sets default report favorites), the v2 API exposes the favorites endpoints listed above. Column display customization isn't currently exposed through public v2 endpoints; it's UI-driven only.
Common pitfalls
A handful of patterns recur with personalization.
-
Customizing for an audience of one. If your customization makes sense only to you, that's fine — personalization is per-user. But if you find yourself thinking "everyone on the team should see this layout," there's no built-in way to share it. The fix is documentation: write down the recommended layout and have each team member reproduce it.
-
Heavy customization that drifts from defaults. A datatable customized down to four columns from the default fifteen feels lean to the customizer and wrong to anyone else who logs in. When team standards matter, customize sparingly; the defaults are the documentation-friendly baseline.
-
Resetting all customizations to fix one table. The Reset Custom Display Settings button is global. To fix one table while keeping customizations on others, use the per-table column control rather than the reset button. The reset is the nuclear option.
-
Treating dashboard customization as portable. A dashboard reshaped to your liking renders the same way only on your account. New users still see the default layout; team members see their own (or the default if they haven't customized). Don't write documentation that assumes a specific dashboard arrangement everyone will see.
-
Favoriting reports without reading them. A favorites list of 30 reports nobody actually opens isn't favorites — it's a backlog. Favorite the reports you genuinely read regularly; unfavorite the ones that fall out of rotation. The point is to make the Reports Hub navigable, not to collect tiles.
-
Expecting saved searches or saved filters. SimpleRisk doesn't ship saved-search or saved-filter functionality natively. Filters apply to the current view but don't persist as named saved sets. The workaround is bookmarking URLs that include filter parameters (some pages encode filters in the URL; some don't — try refreshing the page to see if the filter survives).
-
Building a custom personalization layer before exhausting the built-in one. A team that immediately reaches for the Customization Extra for personalization features ends up maintaining custom code for capabilities that the built-in column-and-widget customization could have served. Try the built-in first; reach for custom only when the built-in genuinely doesn't cover the need.
-
Forgetting that customization persists. A column-customization done in haste during a busy week persists for months afterward. If a teammate reports "the risk list looks weird on my account," check whether they have customizations they don't remember setting; the Reset Custom Display Settings button is the quick fix.