Multi-Organization Hierarchy
Feature Detail
Description
Multi-Organization Hierarchy enables the platform to model complex organizational structures where a top-level national organization (e.g., NHF) contains multiple sub-organizations such as regional branches and local associations, each with their own users, settings, and data. Administrators can define parent-child relationships between organizations, assign roles scoped to a specific level of the hierarchy, and view aggregated statistics and reports that roll up data from child organizations into parent-level dashboards. The hierarchy management page provides a tree view of the full organizational structure with drill-down navigation, inline editing of relationships, and the ability to move sub-organizations between parents. Access controls ensure that data remains tenant-isolated while allowing authorized administrators to view cross-organization aggregates.
User Flow
Analysis
NHF has the broadest organizational structure of all workshop participants — 12 national associations, 9 regions, and 1,400 local associations — and requires the platform to accurately reflect this hierarchy to prevent double-reporting and correctly attribute activities to the right organizational level. Without multi-organization hierarchy support, coordinators at the regional level cannot oversee local association data, and national administrators cannot generate consolidated Bufdir reports. This feature directly unblocks accurate Bufdir reporting, which is identified as a must-have across all four organizations. It also supports the member associations feature and the multi-tenancy commercial model, enabling Norse Digital Products to serve umbrella organizations and their member bodies under a single platform contract, which significantly increases the average contract value and reduces churn.
The hierarchy is modeled in PostgreSQL using a closure table pattern on the organizations table, enabling efficient ancestor/descendant queries without recursive CTEs. The API exposes endpoints for GET /api/v1/organizations/:id/hierarchy, POST for creating child organizations, and PATCH for moving nodes. The admin portal renders the hierarchy using a recursive React tree component with expand/collapse controls and drag-to-reorder (with keyboard fallback for WCAG 2.2 compliance). Row-level security policies are parameterized by the user's highest organization scope, resolved at query time via a JWT claim. Aggregate reports use materialized views refreshed nightly for performance. The Global Admin role bypasses organization scope restrictions for system-wide visibility, while Org Admins are limited to their own subtree. Database migrations include scripts to seed the initial hierarchy from existing organization data.
Components (118)
Shared Components
These components are reused across multiple features
User Interface (12)
Service Layer (34)
Data Layer (22)
Infrastructure (38)
User Stories
No user stories have been generated for this feature yet.