Organizational Hierarchy & Structure Management
Feature Detail
Description
The platform must model fundamentally different organizational structures per tenant. NHF has the most complex hierarchy: 12 national associations, 9 regions, and approximately 1,400 local chapters, with members potentially belonging to up to 5 local chapters simultaneously. HLF and Blindeforbundet have their own regional and local structures. This feature provides the data model and admin UI to configure an organization's hierarchy (levels, names, parent-child relationships) and assign users to one or more nodes within it. The hierarchy drives reporting aggregation (activity data rolls up from local → regional → national), duplicate activity detection (NHF requirement: flag when the same event is registered by multiple coordinators at different levels), and access scoping (coordinators should only see data for their assigned chapter(s)). An admin portal view allows organization administrators to manage the hierarchy without developer intervention.
Analysis
Without correct hierarchy modeling, Bufdir reporting aggregation is impossible and coordinators risk seeing or modifying data that belongs to other chapters. For NHF specifically, supporting multi-chapter membership directly unblocks a significant proportion of their active peer mentors who currently cannot be accurately represented in any digital system.
Use a recursive adjacency-list table in Supabase (`organization_units` with `parent_id`) to support arbitrary depth. User-to-unit assignments in a junction table with an `is_primary` flag. RLS policies must join through this table for all data access. For the multi-chapter NHF case, the UI should show a chapter-switcher (similar to workspace switching in Slack) rather than merging data across chapters. Duplicate detection can be a Supabase database trigger or a scheduled function comparing activity fingerprints within a time window.
Components (206)
Shared Components
These components are reused across multiple features
User Interface (59)
Service Layer (52)
Data Layer (33)
Infrastructure (54)
User Stories (7)
As a As an Organization Administrator
I want to receive automatic validation feedback before committing structural changes to the organizational hierarchy
So that I do not accidentally create orphaned units, circular references, or invalid organizational configurations that would break reporting and access control
- Given I attempt to set a unit's parent to one of its own descendants, when I try to save, then validation blocks the save and displays a 'circular reference detected' error specifying the conflicting units
- Given I deactivate a regional node that has active child chapters, when validation runs, then I receive a list of all child chapters that will be without a parent and must be reassigned before the change can be committed
- Given I make a structural change that would invalidate existing RLS policies, when validation runs, then I am warned which user access scopes will be affected and given the option to review before proceeding
- +2 more
As a As an Organization Administrator
I want to view and resolve cases where the same activity has been registered by multiple coordinators across different chapters
So that Bufdir reports and internal statistics are not inflated by duplicate activity counts
- Given activities have been registered across multiple chapters, when the duplicate detector runs, then it surfaces records where the same peer mentor, date, activity type, and approximate duration appear in more than one chapter's activity log
- Given a duplicate set is detected, when I open the duplicate review interface, then I see a side-by-side comparison of the duplicate records including which coordinator submitted each
- Given I review a duplicate pair, when I mark one record as the canonical version, then the other is flagged as a duplicate and excluded from statistics and Bufdir aggregations
- +2 more
As a As an Organization Administrator
I want to assign coordinators, peer mentors, and members to specific organizational units and reassign them as needed
So that each user's activities, access rights, and reporting are correctly scoped to the organizational unit they belong to
- Given I am managing a peer mentor's profile, when I open the unit assignment panel, then I see all current organizational unit affiliations for that user
- Given I add a new unit affiliation for a peer mentor, when the assignment is saved, then the peer mentor can immediately register activities attributed to the new unit
- Given a peer mentor belongs to multiple chapters, when I view their activity history, then each activity is tagged with the chapter it was attributed to
- +2 more
As a As an Organization Administrator
I want to switch my active chapter context during a working session without logging out and back in
So that I can efficiently manage multiple chapters or regions in sequence without interrupting my workflow
- Given I am an org admin overseeing multiple chapters, when I open the chapter switcher, then I see a list of all chapters I am authorized to administer
- Given I select a different chapter from the switcher, when the selection is confirmed, then all data views (contacts, activities, statistics) refresh to show data scoped to the selected chapter
- Given I have switched to a specific chapter context, when I register an activity or view reports, then all operations are attributed to or filtered by the active chapter
- +2 more
As a As an Organization Administrator
I want to add, rename, move, and deactivate organizational units (chapters, regions, associations) within the hierarchy editor
So that I can keep the organizational structure accurate as local chapters merge, split, rename, or become inactive over time
- Given I am viewing a hierarchy node, when I tap the edit action, then I can rename the unit, change its parent unit, or deactivate it
- Given I attempt to deactivate a node that has active child units, when I confirm the action, then I receive a warning listing all child units that will be affected before proceeding
- Given I add a new local chapter, when I save it, then it appears as a child of the selected parent region and is immediately visible in the hierarchy tree
- +2 more
As a As an Organization Administrator
I want to view aggregated activity statistics rolled up across all levels of the organizational hierarchy
So that I can assess overall organizational performance, identify underperforming units, and produce the data needed for national reporting
- Given I am viewing the admin statistics dashboard, when I select a time period, then I see total activity counts, unique peer mentors active, and total hours logged rolled up across all chapters in my scope
- Given I see a national or regional aggregated figure, when I tap on it, then I drill down to see the breakdown by child units contributing to that total
- Given multiple organizations share the same backend, when I view aggregated statistics, then data from other organizations is never included in my organization's totals
- +2 more
As a As an Organization Administrator
I want to view and navigate the complete organizational hierarchy tree showing all national associations, regions, and local chapters
So that I can understand the full structural landscape of the organization and quickly locate any unit for management or reporting purposes
- Given I am logged in as an org admin, when I navigate to the hierarchy admin portal, then I see the full organizational tree rendered with all levels (national → region → local chapter)
- Given the hierarchy tree is displayed, when I tap on a parent node, then it expands to show all direct child units
- Given the hierarchy tree is displayed, when I use the search input, then the tree filters to show only units whose name matches my search term with ancestors shown for context
- +2 more