Multi-Organization Hierarchy
Feature Detail
Description
Supports complex organizational structures where a single tenant may consist of multiple nested layers - national federations, regional bodies, and local branches. Administrators can define parent-child relationships between organizational units, configure activity attribution rules across levels, and manage how reporting data rolls up through the hierarchy. The feature is essential for NHF which operates across 12 national associations, 9 regions, and 1,400 local branches, and must prevent double-reporting when a member belongs to multiple local units.
Sources & reasoning
NHF's unique need (lines 107-109) makes hierarchy management a launch requirement because NHF is one of the initial four organizations and their data integrity depends on it. Blueprint assigns MVP target_release to multi-organization-hierarchy, consistent with admin MVP scope including org management. Without it NHF cannot correctly attribute or report activities.
-
docs/source/likeperson.md · line 109Bredest organisasjonsstruktur: 12 landsforeninger, 9 regioner, 1 400 lokallag - aktivitetsfordeling mellom ledd mÄ stÞttes.
-
docs/source/likeperson.md · line 107HÄndtering av medlemmer i flere lokallag (opptil 5): Avklare tilhÞrighet og hindre dobbeltrapportering.
Analysis
NHF's organizational depth makes hierarchy support a hard requirement, not an enhancement. Without it, activity data cannot be correctly attributed across levels, Bufdir reporting will double-count activities logged by overlapping memberships, and coordinators in regional or national roles will have no aggregate view of their scope. The hierarchy feature also enables the platform to support other federated organizations beyond the initial four clients, making it a significant factor in long-term commercial viability. Addressing NHF's explicit concern about members in multiple local branches (up to 5) requires the hierarchy model to enforce unique attribution and surface duplicate-registration warnings.
Hierarchy relationships are stored in the organization_hierarchies table (self-referential via organizations). The API resolves the effective scope for any Org Admin query by walking the hierarchy tree, applying configurable roll-up rules (sum, deduplicate, exclude). Duplicate activity detection (admin-activity-oversight area) consumes the hierarchy graph to identify cross-branch registration of the same activity. The admin portal hierarchy page renders an interactive tree view using a React tree component. Backend queries use recursive CTEs supported by PostgreSQL. Membership scoping in user_organization_memberships allows a user to belong to multiple nodes in the hierarchy with an authoritative primary node for reporting.
Quality Assurance
Organization Administrator (primary) · Global Administrator (cross-tenant governance)Organization Administrator
Quick UAT
- Logg inn i Admin-portalen som Organisasjonsadministrator. Naviger til Organisasjon â Hierarki.
- Trykk «Legg til enhet», fyll inn navn og velg type (f.eks. Region) for den nye organisasjonsenheten.
- Velg overordnet enhet fra nedtrekkslisten og knytt den nye enheten til riktig nivÄ i trestrukturen.
- Konfigurer attribusjonsregler for enheten (f.eks. aktivitetsfordeling mellom nivÄer) og trykk Lagre.
- Bekreft at den nye enheten vises i hierarkitreet under korrekt overordnet enhet med riktig innrykk og navn.
- Legg til et testmedlem som tilhĂžrer to lokallag og verifiser at dobbeltrapporteringsvarselet vises i hierarkivisningen.
Quick UAT â Accessibility
-
Logg inn i Admin-portalen som Organisasjonsadministrator. Naviger til Organisasjon â Hierarki.
- Screen reader Sideoverskrift 'Hierarki' annonseres; sidemeny-elementer leses i tab-rekkefĂžlge; aktivt menyvalg annonseres som 'valgt'.
- Keyboard / focus Sidemeny nÄs med Tab; piltaster navigerer mellom menyvalg; Enter Äpner Hierarki-siden.
- Focus visibility Synlig fokusring pÄ aktivt menyvalg; fokus flyttes til sideoverskrift ved sidelast.
-
Trykk «Legg til enhet», fyll inn navn og velg type (f.eks. Region) for den nye organisasjonsenheten.
- Screen reader Knapp 'Legg til enhet' annonseres med rolle='knapp'; dialogboks annonseres med tittel og felt-labels ved Äpning.
- Keyboard / focus Tab navigerer til 'Legg til enhet'-knappen; Enter Äpner dialogen; Tab beveger seg mellom navn-felt og type-nedtrekksliste.
- Focus visibility Fokus flyttes automatisk til fÞrste felt i dialogen ved Äpning; synlig fokusring pÄ alle felt.
- Touch target «Legg til enhet»-knapp â„ 24Ă24 CSS px.
-
Velg overordnet enhet fra nedtrekkslisten og knytt den nye enheten til riktig nivÄ i trestrukturen.
- Screen reader Nedtrekksliste annonseres med antall alternativer; valgt alternativ bekreftes ved valg ('Region valgt').
- Keyboard / focus Piltaster navigerer alternativer i nedtrekkslisten; Enter bekrefter valg.
- Focus visibility Synlig fokusring pÄ nedtrekkslisten; Äpen liste har fokus pÄ valgt alternativ.
- Contrast Valgt alternativ skilles fra uvalgte med mer enn kun farge (f.eks. hake-ikon eller fet tekst); 4.5:1 kontrast.
-
Konfigurer attribusjonsregler for enheten (f.eks. aktivitetsfordeling mellom nivÄer) og trykk Lagre.
- Screen reader Lagre-knapp annonseres; feilmeldinger ved ugyldig konfigurasjon leses av skjermleser umiddelbart.
- Keyboard / focus Tab navigerer til Lagre-knapp; Enter aktiverer lagring.
- Focus visibility Synlig fokusring pÄ Lagre-knapp; obligatoriske felt merket 'pÄkrevd' i label.
- Live region 'Endringer lagret' annonseres via polite live region etter vellykket lagring.
-
Bekreft at den nye enheten vises i hierarkitreet under korrekt overordnet enhet med riktig innrykk og navn.
- Screen reader Trestruktur annonseres med nivÄ-dybde per node (f.eks. 'Region, nivÄ 2 av 3'); sammenslÄtte/utvidede noder annonseres.
- Keyboard / focus Piltaster navigerer trestrukturen; hÞyre pil utvider node; venstre pil lukker eller gÄr til foreldrenode.
- Zoom Hierarkitreet er lesbart og navigerbart ved 200% zoom uten horisontal scrolling.
-
Legg til et testmedlem som tilhĂžrer to lokallag og verifiser at dobbeltrapporteringsvarselet vises i hierarkivisningen.
- Screen reader Varselikon eller varselmelding om dobbeltmedlemskap annonseres av skjermleser; status formidles ikke utelukkende via farge.
- Focus visibility Varselkomponenten er fokuserbar og har lesbar label ('Advarsel: dobbeltmedlemskap oppdaget').
- Live region 'Advarsel: medlemmet er registrert i flere lokallag' annonseres via polite live region.
- Contrast Varselsymbol og tekst oppfyller 4.5:1 kontrast; statusskillet bruker ikon i tillegg til farge.
Global Administrator
Quick UAT
- Logg inn i Admin-portalen som Global Administrator. Naviger til Hierarki-oversikt pÄ tvers av organisasjoner.
- Velg en tenantorganisasjon fra listen (f.eks. NHF). Bekreft at visningen krever aktiv stĂžttetilgang innvilget av organisasjonsadministrator â mangler tilgang dersom ingen aktiv grant finnes.
- Med aktiv stĂžttetilgang: verifiser at hierarkitreet viser alle nivĂ„er for valgt organisasjon (landsforening â region â lokallag).
- Sjekk at revisjonsloggen registrerer stĂžttetilgangsĂžkten med tidsstempel, Global Admin-ID og organisasjons-ID.
Quick UAT â Accessibility
-
Logg inn i Admin-portalen som Global Administrator. Naviger til Hierarki-oversikt pÄ tvers av organisasjoner.
- Screen reader Sideoverskrift annonseres; organisasjonsliste annonseres med antall rader; kolonneoverskrifter leses.
- Keyboard / focus Tab navigerer til organisasjonslisten; piltaster navigerer rader; Enter velger organisasjon.
- Focus visibility Synlig fokusring pÄ valgt rad i organisasjonstabellen.
-
Velg en tenantorganisasjon fra listen (f.eks. NHF). Bekreft at visningen krever aktiv stĂžttetilgang innvilget av organisasjonsadministrator â mangler tilgang dersom ingen aktiv grant finnes.
- Screen reader Tilgangsnektet-melding annonseres umiddelbart av skjermleser; feilmelding inneholder Ärsak og neste steg.
- Focus visibility Fokus flyttes til feilmelding eller tilgangsnektet-banner ved avvisning.
- Contrast Tilgangsnektet-status kommuniseres med ikon og tekst i tillegg til farge; 4.5:1 kontrast.
-
Med aktiv stĂžttetilgang: verifiser at hierarkitreet viser alle nivĂ„er for valgt organisasjon (landsforening â region â lokallag).
- Screen reader Trestruktur annonseres med nivÄ-dybde per node; antall underenheter per node annonseres ved utvidelse.
- Keyboard / focus Piltaster navigerer trestrukturen; hÞyre pil utvider node; venstre pil lukker eller gÄr til foreldrenode.
- Zoom Alle hierarkinivÄer er lesbare og navigerbare ved 200% zoom uten tap av informasjon.
-
Sjekk at revisjonsloggen registrerer stĂžttetilgangsĂžkten med tidsstempel, Global Admin-ID og organisasjons-ID.
- Screen reader Revisjonslogg-tabell annonseres med kolonneoverskrifter; siste rad leses med alle relevante feltverdier.
- Keyboard / focus Tab navigerer til revisjonsloggtabellen; piltaster navigerer rader og celler.
- Focus visibility Synlig fokusring pÄ aktiv celle i revisjonsloggtabellen.
Role Boundaries
3 role(s) must NOT access this feature-
Peer Mentor
Hierarki-siden finnes ikke i mobilappens navigasjon; direkte URL-tilgang til Admin-portalen returnerer 403 eller omdirigerer til innloggingssiden.
-
Coordinator
Hierarki-siden finnes ikke i mobilappens navigasjon; koordinatorer har ikke tilgang til Admin-portalen og kan ikke nÄ denne siden.
-
Prospective Organization Representative
Salgsnettsiden gir ingen lenke til Admin-portalen; forsÞk pÄ direkte tilgang returnerer 401.
Expected End State
-
Organization Administrator
Ny organisasjonsenhet er lagret i hierarkiet med korrekt overordnet enhet, attribusjonsregler er konfigurert, og dobbeltrapporteringsvarsel er verifisert for testmedlem med flerlags-tilknytning.
-
Global Administrator
Hierarkistrukturen for valgt tenantorganisasjon er verifisert pÄ alle nivÄer, og revisjonsloggen bekrefter at stÞttetilgangsÞkten er registrert med fullstendige metadata.
Components (21)
Shared Components
These components are reused across multiple features
User Stories
No user stories have been generated for this feature yet.