Skip to content

Implement storage pool / quota per group #2896

Open

Description

@jospoortvliet

Is your feature request related to a problem? Please describe.
Non-admin users can now create Team folders for an existing team, and the Teams app automatically creates team folders when a team is created.

A default quota is assigned, based on group membership of the person who created the Team folder.

But even if a default quota is low, unlimited creation of Team folders can cause issues. A total storage pool per group can fix that.

Tasks (MVP)

  • store the team-group relation in the database

  • add logic to select group and check storage quota on team creation

    • If a user is in multiple groups that have a total storage pool quota, the group selected for the team should be the one with the largest amount of quota assigned.
  • The team admin page:

    • add a column to the storage quota management with group quota
    • allow changing the group membership of a team, to move the team quota to a different storage pool
    • Changing the quota on a Team should of course be checked against the quota of the total group storage pool the team belongs to.
    • Show total quota usage of a pool

for later

  • When a group hits 90% usage of total quota, we should warn admins. When it hits 100%, members of the group won't be able to create new team folders anymore.
  • The team page should show, at least to team managers, their quota, group, and their pool usage.
  • the teams admin UI with team folders should group them by group membership.
  • on creation, it should be possible to choose a smaller quota than the maximum.

We could create sub issues for this - do what is easiest to manage.

Use case

Department 'engineering' has a default quota of 25GB.
Department 'sales' has a default quota of 20GB.

The organization has a total of 1TB of storage reserved. When this storage is used, work blocks. The administrator wants to divide the storage allocation, so each department can distribute storage between their teams.

Solution

Department 'Engineering' gets a storage pool of 1TB, department sales gets a storage pool of 500GB.

When the total quota of the team folders of Engineering hits 1TB, creation of new Team folders should be blocked. This way, Engineering can never exceed their allocated storage, and neither can Sales.

Group storage pool

We set a total limit of the storage for all team folders in a certain group, acting as a shared storage pool.

This total limit, requires maintaining a link between the initial group and the Team.

We check on team (folder) creation and quota changes what the current usage of the group is and if the change exceeds the limits, we block it with a warning.

Admin UI

The admin can configure the group quotas in the admin section of the Teams app, in a table:

group default quota total storage
everyone else 2gb 1tb
management 10gb 500gb
team leads 5gb 2tb

Implementation details

  • We need to store the team-group relation in the database.
  • The total storage controls the pool for the group. The default quota is the max quota on individual Teamfolder.
  • When a group hits 90% usage of total quota, we should warn admins. When it hits 100%, members of the group won't be able to create new team folders anymore.
  • The team page should show, at least to team managers, their quota, group, and their pool usage.
  • The team admin page should allow changing the group membership of a team, to move the team quota to a different storage pool
  • Changing the quota on a Team should of course be checked against the quota of the total group storage pool the team belongs to.
  • Let's not create a UI to switch a team from one group to another, it complicates things. Agreement: def not initially.
    • If a user is in multiple groups that have a total storage pool quota, the group selected for the team should be the one with the largest amount of quota assigned.
    • Maybe in the future: we should let the user pick the group the team belongs to. In most cases, there will probably not be any choice as this is likely set at a high level, per department for example.
  • Let's have a automatic selection of group the Team will belong to, to not complicate the creation of Teams further. No full agreement, but let's not do this initially.
  • Let's show the group a Team belongs to in the Teams admin overview and let them change the group there. It should show the current usage of the team. Then it can be managed by the admin.
  • the overview should also show the total usage per group.
  • the teams admin UI with team folders should group them by group membership.
  • on creation, it should be possible to choose a smaller quota than the maximum.

notes

We think that the relation with a group shouldn't imply the team being a member of the group - that comes with way more possible implications.

Admins can choose to simply assign existing groups they use for managing people in the organization a quota. If there are department groups, for example, or management laywers. Of course they can also create special groups just to manage quota.

Feel free to just edit this issue! Def to check things off.

Activity

  1. added this to the Nextcloud 36 milestone on Sep 8, 2026
  2. moved this from Backlog to Ready to pick up in 👥 Teamson Oct 14, 2026
  3. alimmroth commented on Oct 14, 2026

    @alimmroth

    @ dDevs, please cut this into smaller issues to get startet with

    • Add property to groupfolders, to link them to a (storage) group
    • Change the columns inside the "default quota for groups table", so that it resembles the table above (group / default quota / total storage)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    • Status
      Ready to pick up

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions