Zum Inhalt springen

Management 4 SharePoint: Lösung für viele Berechtigungen

Wir zeigen, warum unser Excel-Add-in bei vielen SharePoint-Berechtigungen in Timeouts lief und wie eine Berechtigungsmatrix die Verwaltung wieder beschleunigt.

Stand 2026: Dieser Beitrag beschreibt einen frühen Stand unseres Excel-Add-ins aus den Jahren 2020/21. Heute ist die Rechtematrix in Excel ein Baustein der Projektportale. Wie sie für komplexe Berechtigungsstrukturen arbeitet, beschreibt der Beitrag SharePoint-Berechtigungen in Excel pflegen: die Rechtematrix eines Projektraums.

Wir haben euch in einem vorigen Blogbeitrag SharePoint Berechtigungskonzept vereinfacht darstellen und verwalten gezeigt, wie wir Berechtigungen eines SharePoint-Projekts in unserem Excel Add-in „Management 4 SharePoint“ abbilden. Sobald wir allerdings große Projektstrukturen mit vielen Listen- und Ordnerberechtigungen verwalten mussten, lief unser Excel Add-in in ein Timeout. In diesem Beitrag teilen wir die Ursachen und unsere Lösung.

Ursachen des Timeout-Problems

Früher haben wir die Berechtigungen für alle Listen, Ordner und Rollen in einer flachen Liste in unserem Redux-State gespeichert. Im Permission-Objekt hielten wir die ID der Liste oder des Ordners (itemId), die ID der Rolle (groupId) sowie den Berechtigungswert (value) fest.

Datenmodell im Redux-State

export interface IPermission {
  id: string;
  value: PermissionType;
  itemId: string;
  groupId: string;
}

Wir speicherten die Berechtigungen in einem NormalizedObject-Format. Das Property byId enthielt alle Objekte, allIds listete deren IDs.

const initialState: INormalizedObject<IPermission> = {
  byId: {},
  allIds: [],
};

Performance-Kosten beim Schreiben

Mussten wir neue Berechtigungen im State speichern, erzeugten wir jedes Mal ein neues State-Objekt mit den hinzugefügten Einträgen:

function reduceAddPermissions(
  state: INormalizedObject<IPermission>,
  action: IAddPermissionsAction
): INormalizedObject<IPermission> {
  const newPermissions: { [id: string]: IPermission } = {};
  const newPermissionIds: string[] = [];

  action.payload.forEach(permission => {
    newPermissions[permission.id] = permission;
    newPermissionIds.push(permission.id);
  });

  return {
    byId: {
      ...state.byId,
      ...newPermissions,
    },
    allIds: [...state.allIds, ...newPermissionIds],
  };
}

Ab etwa 6.000 Berechtigungen lief unser Excel Add-in aufgrund des immer größer werdenden States in ein Timeout. Für große SharePoint-Projektstrukturen war der Ansatz daher ungeeignet. Zusätzlich erforderten Anfragen eine ineffiziente Filterung über alle Berechtigungen hinweg:

const allPermissions: IPermission[] = Object.values(
  (state.entities.permissions as INormalizedObject<IPermission>).byId
);

const permission = allPermissions.find(
  entry => entry.itemId === list.id && entry.groupId === group.id
);

Lösung für viele Listen- und Ordnerberechtigungen

Um das Timeout-Problem zu lösen, haben wir die Speicherung komplett umgebaut und anstelle der flachen Liste eine Berechtigungsmatrix eingeführt. Diese besteht aus einem Array von Integer-Arrays. Für jede Liste oder jeden Ordner fügen wir ein Integer-Array hinzu, das die Berechtigungswerte pro Rolle enthält:

  • 1 = Read
  • 2 = Write
  • 3 = Read + Write
  • 4 = Delete
  • 5 = Read + Delete
  • 6 = Write + Delete
  • 7 = Read + Write + Delete

Berechtigungsmatrix im Excel-Add-in Management 4 SharePoint

Dadurch können wir Berechtigungen indiziert auslesen und sparen uns Filteroperationen über große Arrays.

export function getPermission(
  list: IList,
  groupIndex: number,
  permissionMatrix: number[][],
  appState: AppState
): number {
  const globalListIndex = getGlobalListIndex(list.id, appState);
  return permissionMatrix[globalListIndex][groupIndex];
}

Wir müssen lediglich die Position der abgefragten Liste berechnen und können anschließend mit einem Indexer die Berechtigung der gewünschten Gruppe auslesen. Die Berechtigungsmatrix löst nicht nur das Timeout-Problem für große SharePoint-Strukturen, sondern erhöht die Performance der gesamten Berechtigungsverwaltung in unserem Excel Add-in deutlich.

Hast du noch Fragen zu unserem Excel Add-in? Dann kontaktiere uns gern!

Kontakt aufnehmen

Ähnliche Beiträge

SharePoint-Berechtigungen in Excel pflegen: die
Schema: Tabellenblatt mit Bibliotheken und Ordnern in Zeilen, Rollen in Spalten und den Zellenwerten R, W und D, daneben der Bereich zum Anwenden der Änderungen

SharePoint-Berechtigungen in Excel pflegen: die Rechtematrix eines Projektraums

Rechtematrix eines Projektraums in Excel lesen, ändern und anwenden: Bibliotheken in Zeilen, Rollen in Spalten, ein Protokolleintrag je Änderung.

Weiterlesen
SharePoint-Benutzerverwaltung mit neuem Worksheet im

SharePoint-Benutzerverwaltung mit neuem Worksheet im Add-in

Neues Worksheet im Excel‑Add‑in: SharePoint‑Benutzer und Gruppen übersichtlich verwalten, Einzelberechtigungen prüfen und Rollen komfortabel übertragen.

Weiterlesen
Modernes Excel-Add-in für die SharePoint-Verwaltung
Modernes Excel-Add-in für die SharePoint-Verwaltung

Modernes Excel-Add-in für die SharePoint-Verwaltung

Unser Excel-Add-in für SharePoint erhielt ein frisches UX-Konzept mit klarer Struktur, Farbcodes, Action Buttons und einem hilfreichen Home-Screen für Admins.

Weiterlesen

Fragen zu diesem Thema?

Wir unterstützen Sie gerne bei der Umsetzung in Ihrer Umgebung.