{"record":{"id":"9630364c19f0a3c9","repo":"nextcloud/server","slug":"setting-members-of-the-group-is-not-supported-yet-963036","errorCode":null,"errorMessage":"Setting members of the group is not supported yet","messagePattern":"Setting members of the group is not supported yet","errorType":"exception","errorClass":"Sabre\\DAV\\Exception","httpStatus":500,"severity":"warning","filePath":"apps/dav/lib/DAV/SystemPrincipalBackend.php","lineNumber":180,"sourceCode":"\t\t\t}\n\n\t\t\treturn [];\n\t\t}\n\t\treturn [];\n\t}\n\n\t/**\n\t * Updates the list of group members for a group principal.\n\t *\n\t * The principals should be passed as a list of uri's.\n\t *\n\t * @param string $principal\n\t * @param array $members\n\t * @return void\n\t */\n\t#[\\Override]\n\tpublic function setGroupMemberSet($principal, array $members) {\n\t\tthrow new \\Sabre\\DAV\\Exception('Setting members of the group is not supported yet');\n\t}\n}\n","sourceCodeStart":162,"sourceCodeEnd":183,"githubUrl":"https://github.com/nextcloud/server/blob/ecdeb153ffdf227235c9a7e2d13dbe0f9c817bc3/apps/dav/lib/DAV/SystemPrincipalBackend.php#L162-L183","documentation":"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.","triggerScenarios":"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.","commonSituations":"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.","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."],"exampleFix":null,"handlingStrategy":"validation","validationCode":"// guard: system principals have fixed membership, skip edits entirely\n[$prefix] = \\Sabre\\Uri\\split($principalUri);\nif ($prefix === 'principals/system') {\n    $this->skip('System principals are read-only: ' . $principalUri);\n    return;\n}\n$backend->setGroupMemberSet($principalUri, $members);","typeGuard":"function isEditableGroupPrincipal(string $uri): bool {\n    [$prefix] = \\Sabre\\Uri\\split($uri);\n    return $prefix !== 'principals/system';\n}","tryCatchPattern":"try {\n    $backend->setGroupMemberSet($path, $members);\n} catch (\\Sabre\\DAV\\Exception $e) {\n    if (str_contains($e->getMessage(), 'not supported')) {\n        return; // expected for the read-only system backend\n    }\n    throw $e;\n}","preventionTips":["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."],"tags":["dav","principal","group-membership","system-principal","unsupported"],"backgroundTag":"unsupported-operation","analyzedSha":"ecdeb153ffdf227235c9a7e2d13dbe0f9c817bc3","analyzedAt":"2026-08-17T01:36:13.386Z","schemaVersion":2},"datasetVersion":"2026-08-17T04:17:16.089Z"}