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

  1. Do not attempt group-member-set updates on system principals — membership is fixed by the server.
  2. Manage user/group membership through the provisioning API (OCS ShareAndProvisioning API) or groupfolders instead.
  3. Skip principals under principals/system in client-side bulk PROPPATCH logic.
  4. 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

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


AI-assisted analysis of nextcloud/server@ecdeb153ff (2026-08-17). Data as JSON: /api/errors/9630364c19f0a3c9. Report an issue: GitHub.