nextcloud/server · warning · Sabre\DAV\Exception
Setting members of the group is not supported yet
Error message
Setting members of the group is not supported yet
What it means
SystemPrincipalBackend::setGroupMemberSet() (apps/dav/lib/DAV/SystemPrincipalBackend.php:180) unconditionally throws \Sabre\DAV\Exception('Setting members of the group is not supported yet'). The backend implements Sabre's IPrincipalBackend for a fixed set of system principals; these are synthetic singletons (e.g. system scheduling/booking inboxes) with no editable membership, so any write to the member set is rejected.
Source
Thrown at apps/dav/lib/DAV/SystemPrincipalBackend.php:180
}
return [];
}
return [];
}
/**
* Updates the list of group members for a group principal.
*
* The principals should be passed as a list of uri's.
*
* @param string $principal
* @param array $members
* @return void
*/
#[\Override]
public function setGroupMemberSet($principal, array $members) {
throw new \Sabre\DAV\Exception('Setting members of the group is not supported yet');
}
}
View on GitHub (pinned to ecdeb153ff)
Solutions
- Do not attempt group-member-set updates on system principals — membership is fixed by the server.
- Manage user/group membership through the provisioning API (OCS ShareAndProvisioning API) or groupfolders instead.
- Skip principals under principals/system in client-side bulk PROPPATCH logic.
- Treat the returned 500 from this path as 'unsupported' and exclude the principal from future runs.
Defensive patterns
Strategy: validation
Validate before calling
// guard: system principals have fixed membership, skip edits entirely
[$prefix] = \Sabre\Uri\split($principalUri);
if ($prefix === 'principals/system') {
$this->skip('System principals are read-only: ' . $principalUri);
return;
}
$backend->setGroupMemberSet($principalUri, $members); Type guard
function isEditableGroupPrincipal(string $uri): bool {
[$prefix] = \Sabre\Uri\split($uri);
return $prefix !== 'principals/system';
} Try / catch
try {
$backend->setGroupMemberSet($path, $members);
} catch (\Sabre\DAV\Exception $e) {
if (str_contains($e->getMessage(), 'not supported')) {
return; // expected for the read-only system backend
}
throw $e;
} Prevention
- Consider principals/system/* read-only by design.
- Use provisioning APIs for membership changes on real groups.
- Audit bulk PROPPATCH tooling so it filters by principal prefix first.
When it happens
Trigger: A PROPPATCH setting {DAV:}group-member-set on a principals/system/... principal, issued by ACL management clients, CalDAV scheduling configuration tools, or generic WebDAV clients that iterate group principals.
Common situations: Automated provisioning scripts trying to normalize group membership across all principals; WebDAV GUI clients exposing member-set editing for anything that looks like a group.
Related errors
- Adding members to remote user is not supported
- Updating remote user principal is not supported
- Principal not found
- Node with name $name was not found
- Unable to fetch principal for user $user
AI-assisted analysis of nextcloud/server@ecdeb153ff (2026-08-17).
Data as JSON: /api/errors/9630364c19f0a3c9.
Report an issue: GitHub.