Unable to delete team with (removed) collective (HTTP 400)
Nobody has claimed this yet.
- Dominant language
- JavaScript
- Stars
- 177
- Forks
- 68
- Avg merge
- 2d 22h
- Merged PRs (30d)
- 60
Description
How to use GitHub
- Please use the 👍 reaction to show that you are affected by the same issue.
- Please don't comment if you have no relevant information to add. It's just extra noise for everyone subscribed to this issue.
- Subscribe to receive notifications on status change and new comments.
Steps to reproduce
- Create a team (without additional members)
- Create a collective for the team
- Optionional: Delete the collective
- Try to delete the team
Expected behaviour
The team should be removed.
Actual behaviour
Nextcloud shows an error message "Unable to delete team O7lBaXjiZCymjStHbfbcbeVY6mcFHzJ" (translated from German: "Fehler beim Löschen des Teams O7lBaXjiZCymjStHbfbcbeVY6mcFHzJ")
Server configuration
Debian Trixie
Nextcloud AIO: 12.9.1
Web server: Apache/Nginx
The one from Nextcloud AIO
Database: MySQL/Maria/SQLite/PostgreSQL
PostgreSQL 17.9
PHP version: 8.2/8.3/8.4
8.3.30
Nextcloud version: (see Nextcloud admin page)
32.0.8
List of activated apps
Enabled:
- activity: 5.0.0
- admin_audit: 1.22.0
- bruteforcesettings: 5.0.0
- calendar: 6.2.2
- call_summary_bot: 3.3.0
- circles: 32.0.0
- cloud_federation_api: 1.16.0
- collectives: 4.2.0
- comments: 1.22.0
- contacts: 8.3.7
- contactsinteraction: 1.13.1
- dashboard: 7.12.0
- dav: 1.34.2
- deck: 1.16.3
- federatedfilesharing: 1.22.0
- federation: 1.22.0
- files: 2.4.0
- files_accesscontrol: 3.0.2
- files_downloadlimit: 5.0.0
- files_fulltextsearch: 32.0.2
- files_lock: 32.0.2
- files_pdfviewer: 5.0.0
- files_reminders: 1.5.0
- files_sharing: 1.24.1
- files_trashbin: 1.22.0
- files_versions: 1.25.0
- firstrunwizard: 5.0.0
- fulltextsearch: 32.0.0
- fulltextsearch_elasticsearch: 32.0.2
- groupfolders: 20.1.12
- guests: 4.6.0
- impersonate: 3.0.1
- logreader: 5.0.0
- lookup_server_connector: 1.20.0
- nextcloud-aio: 0.8.0
- nextcloud_announcements: 4.0.0
- notes: 4.13.1
- notifications: 5.0.0
- notify_push: 1.3.1
- oauth2: 1.20.0
- password_policy: 4.0.0
- photos: 5.0.0
- polls: 8.6.3
- privacy: 4.0.0
- profile: 1.1.0
- provisioning_api: 1.22.0
- related_resources: 3.0.0
- richdocuments: 9.0.5
- serverinfo: 4.0.0
- settings: 1.15.1
- sharebymail: 1.22.0
- spreed: 22.0.11
- support: 4.0.0
- survey_client: 4.0.0
- systemtags: 1.22.0
- tasks: 0.17.1
- text: 6.0.1
- theming: 2.7.0
- twofactor_backupcodes: 1.21.0
- twofactor_totp: 14.0.0
- updatenotification: 1.22.0
- user_ldap: 1.23.0
- user_status: 1.12.0
- viewer: 5.0.0
- webhook_listeners: 1.3.0
- whiteboard: 1.5.7
- workflowengine: 2.14.0
Disabled:
- app_api: 32.0.0 (installed 32.0.0)
- encryption: 2.20.0
- files_external: 1.24.1
- recommendations: 5.0.0 (installed 5.0.0-dev.0)
- suspicious_login: 10.0.0
- twofactor_nextcloud_notification: 6.0.0
- weather_status: 1.12.0 (installed 1.12.0)
Nextcloud configuration
{
"system": {
"one-click-instance": true,
"one-click-instance.user-limit": 100,
"memcache.local": "\\OC\\Memcache\\APCu",
"apps_paths": [
{
"path": "\/var\/www\/html\/apps",
"url": "\/apps",
"writable": false
},
{
"path": "\/var\/www\/html\/custom_apps",
"url": "\/custom_apps",
"writable": true
}
],
"check_data_directory_permissions": false,
"memcache.distributed": "\\OC\\Memcache\\Redis",
"memcache.locking": "\\OC\\Memcache\\Redis",
"redis": {
"host": "***REMOVED SENSITIVE VALUE***",
"password": "***REMOVED SENSITIVE VALUE***",
"port": 6379
},
"overwritehost": "DOMAIN_REMOVED",
"overwriteprotocol": "https",
"passwordsalt": "***REMOVED SENSITIVE VALUE***",
"secret": "***REMOVED SENSITIVE VALUE***",
"trusted_domains": [
"localhost",
"DOMAIN_REMOVED"
],
"datadirectory": "***REMOVED SENSITIVE VALUE***",
"dbtype": "pgsql",
"version": "32.0.8.2",
"overwrite.cli.url": "https:\/\/DOMAIN_REMOVED\/",
"dbname": "***REMOVED SENSITIVE VALUE***",
"dbhost": "***REMOVED SENSITIVE VALUE***",
"dbtableprefix": "oc_",
"dbuser": "***REMOVED SENSITIVE VALUE***",
"dbpassword": "***REMOVED SENSITIVE VALUE***",
"installed": true,
"instanceid": "***REMOVED SENSITIVE VALUE***",
"maintenance": false,
"updatechecker": false,
"loglevel": 2,
"log_type": "file",
"logfile": "\/var\/www\/html\/data\/nextcloud.log",
"log_rotate_size": 10485760,
"log.condition": {
"apps": [
"admin_audit"
]
},
"preview_max_x": 2048,
"preview_max_y": 2048,
"jpeg_quality": 60,
"enabledPreviewProviders": {
"1": "OC\\Preview\\Image",
"2": "OC\\Preview\\MarkDown",
"3": "OC\\Preview\\MP3",
"4": "OC\\Preview\\TXT",
"5": "OC\\Preview\\OpenDocument",
"6": "OC\\Preview\\Movie",
"7": "OC\\Preview\\Krita",
"0": "OC\\Preview\\Imaginary",
"23": "OC\\Preview\\ImaginaryPDF"
},
"enable_previews": true,
"upgrade.disable-web": true,
"mail_smtpmode": "smtp",
"trashbin_retention_obligation": "auto, 30",
"versions_retention_obligation": "auto, 30",
"activity_expire_days": 30,
"simpleSignUpLink.shown": false,
"share_folder": "\/Shared",
"one-click-instance.link": "https:\/\/nextcloud.com\/all-in-one\/",
"upgrade.cli-upgrade-link": "https:\/\/github.com\/nextcloud\/all-in-one\/discussions\/2726",
"updatedirectory": "\/nc-updater",
"maintenance_window_start": 100,
"allow_local_remote_servers": true,
"davstorage.request_timeout": 3600,
"documentation_url.server_logs": "https:\/\/github.com\/nextcloud\/all-in-one\/discussions\/5425",
"htaccess.RewriteBase": "\/",
"dbpersistent": false,
"auth.bruteforce.protection.enabled": true,
"ratelimit.protection.enabled": true,
"files_external_allow_create_new_local": true,
"trusted_proxies": "***REMOVED SENSITIVE VALUE***",
"preview_imaginary_url": "***REMOVED SENSITIVE VALUE***",
"preview_imaginary_key": "***REMOVED SENSITIVE VALUE***",
"mail_domain": "***REMOVED SENSITIVE VALUE***",
"mail_sendmailmode": "smtp",
"mail_from_address": "***REMOVED SENSITIVE VALUE***",
"forbidden_filename_basenames": [
"con",
"prn",
"aux",
"nul",
"com0",
"com1",
"com2",
"com3",
"com4",
"com5",
"com6",
"com7",
"com8",
"com9",
"com\u00b9",
"com\u00b2",
"com\u00b3",
"lpt0",
"lpt1",
"lpt2",
"lpt3",
"lpt4",
"lpt5",
"lpt6",
"lpt7",
"lpt8",
"lpt9",
"lpt\u00b9",
"lpt\u00b2",
"lpt\u00b3"
],
"forbidden_filename_characters": [
"<",
">",
":",
"\"",
"|",
"?",
"*",
"\\",
"\/"
],
"forbidden_filename_extensions": [
" ",
".",
".filepart",
".part"
],
"mail_smtphost": "***REMOVED SENSITIVE VALUE***",
"mail_smtpport": "25",
"updater.server.url": "***REMOVED SENSITIVE VALUE***",
"default_language": "de",
"onlyoffice": {
"editors_check_interval": 0,
"jwt_secret": "***REMOVED SENSITIVE VALUE***",
"jwt_header": "AuthorizationJwt"
},
"ldapProviderFactory": "OCA\\User_LDAP\\LDAPProviderFactory",
"twofactor_enforced": "false",
"twofactor_enforced_groups": [],
"twofactor_enforced_excluded_groups": [],
"app_install_overwrite": [],
"default_phone_region": "DE",
"DOMAIN": "DOMAIN_REMOVED",
"AIO_VERSION": "v12.9.1"
}
}
Browser
Browser name: Firefox + Edge
Browser version: TODO
Operating system: Windows 11
Nextcloud Log
``` {"reqId":"GL7ncgJkahre9VGvyklL","level":3,"time":"2026-04-17T10:22:17+00:00","remoteAddr":"192.168.201.1","user":"endrullis","app":"circles","method":"DELETE","url":"/ocs/v2.php/apps/circles/circles/O7lBaXjiZCymjStHbfbcbeVY6mcFHzJ","scriptName":"/ocs/v2.php","message":"{\"circleId\":\"O7lBaXjiZCymjStHbfbcbeVY6mcFHzJ\"}","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/147.0.0.0 Safari/537.36 Edg/147.0.0.0","version":"32.0.8.2","exception":{"Exception":"OCA\\Circles\\Exceptions\\FederatedItemBadRequestException","Message":"Team is managed from an other app","Code":120,"Trace":[{"file":"/var/www/html/apps/circles/lib/Service/FederatedEventService.php","line":159,"function":"verify","class":"OCA\\Circles\\FederatedItems\\CircleDestroy","type":"->","args":[{"__class__":"OCA\\Circles\\Model\\Federated\\FederatedEvent"}]},{"file":"/var/www/html/apps/circles/lib/Service/CircleService.php","line":247,"function":"newEvent","class":"OCA\\Circles\\Service\\FederatedEventService","type":"->","args":[{"__class__":"OCA\\Circles\\Model\\Federated\\FederatedEvent"}]},{"file":"/var/www/html/apps/circles/lib/Controller/LocalController.php","line":153,"function":"destroy","class":"OCA\\Circles\\Service\\CircleService","type":"->","args":["O7lBaXjiZCymjStHbfbcbeVY6mcFHzJ"]},{"file":"/var/www/html/lib/private/AppFramework/Http/Dispatcher.php","line":204,"function":"destroy","class":"OCA\\Circles\\Controller\\LocalController","type":"->","args":["O7lBaXjiZCymjStHbfbcbeVY6mcFHzJ"]},{"file":"/var/www/html/lib/private/AppFramework/Http/Dispatcher.php","line":118,"function":"executeController","class":"OC\\AppFramework\\Http\\Dispatcher","type":"->","args":[{"__class__":"OCA\\Circles\\Controller\\LocalController"},"destroy"]},{"file":"/var/www/html/lib/private/AppFramework/App.php","line":153,"function":"dispatch","class":"OC\\AppFramework\\Http\\Dispatcher","type":"->","args":[{"__class__":"OCA\\Circles\\Controller\\LocalController"},"destroy"]},{"file":"/var/www/html/lib/private/Route/Router.php","line":321,"function":"main","class":"OC\\AppFramework\\App","type":"::","args":["OCA\\Circles\\Controller\\LocalController","destroy",{"__class__":"OC\\AppFramework\\DependencyInjection\\DIContainer"},{"_route":"ocs.circles.local.destroy","circleId":"O7lBaXjiZCymjStHbfbcbeVY6mcFHzJ"}]},{"file":"/var/www/html/ocs/v1.php","line":61,"function":"match","class":"OC\\Route\\Router","type":"->","args":["/ocsapp/apps/circles/circles/O7lBaXjiZCymjStHbfbcbeVY6mcFHzJ"]},{"file":"/var/www/html/ocs/v2.php","line":8,"args":["/var/www/html/ocs/v1.php"],"function":"require_once"}],"File":"/var/www/html/apps/circles/lib/FederatedItems/CircleDestroy.php","Line":85,"message":"{\"circleId\":\"O7lBaXjiZCymjStHbfbcbeVY6mcFHzJ\"}","exception":{"class":"OCA\\Circles\\Exceptions\\FederatedItemBadRequestException","status":400,"code":120,"message":"Team is managed from an other app"},"CustomMessage":"{\"circleId\":\"O7lBaXjiZCymjStHbfbcbeVY6mcFHzJ\"}"},"id":"69e20c2e3754c"} ```Browser console log
``` circles.ts:74 DELETE https://DOMAIN_REMOVED/ocs/v2.php/apps/circles/circles/O7lBaXjiZCymjStHbfbcbeVY6mcFHzJ 400 (Bad Request) (anonymous) @ xhr.js:198 (anonymous) @ xhr.js:15 (anonymous) @ dispatchRequest.js:49 _request @ Axios.js:194 request @ Axios.js:41 (anonymous) @ Axios.js:220 (anonymous) @ bind.js:12 deleteCircle @ circles.ts:74 deleteCircle @ circles.js:210 (anonymous) @ vuex.esm-bundler.js:322 (anonymous) @ vuex.esm-bundler.js:1055 (anonymous) @ vuex.esm-bundler.js:937 deleteCircle @ CircleActionsMixin.js:129 callback @ dialogs.js:380 callback @ index-C1xmmKTZ.mjs:515 handleClick @ NcDialogButton.vue_vue_type_script_setup_true_lang-DABuSwSR.mjs:30 callWithErrorHandling @ runtime-core.esm-bundler.js:199 callWithAsyncErrorHandling @ runtime-core.esm-bundler.js:206 emit @ runtime-core.esm-bundler.js:4404 onClick @ NcButton-C9D47Igd.mjs:84 callWithErrorHandling @ runtime-core.esm-bundler.js:199 callWithAsyncErrorHandling @ runtime-core.esm-bundler.js:206 (anonymous) @ runtime-dom.esm-bundler.js:730 circles.js:215 AxiosError: Request failed with status code 400 at Xf (settle.js:19:12) at XMLHttpRequest.j (xhr.js:59:7) at Ln.request (Axios.js:46:41) at async W5 (circles.ts:74:19) at async te.deleteCircle (circles.js:210:4) deleteCircle @ circles.js:215 await in deleteCircle (anonymous) @ vuex.esm-bundler.js:322 (anonymous) @ vuex.esm-bundler.js:1055 (anonymous) @ vuex.esm-bundler.js:937 deleteCircle @ CircleActionsMixin.js:129 callback @ dialogs.js:380 callback @ index-C1xmmKTZ.mjs:515 handleClick @ NcDialogButton.vue_vue_type_script_setup_true_lang-DABuSwSR.mjs:30 callWithErrorHandling @ runtime-core.esm-bundler.js:199 callWithAsyncErrorHandling @ runtime-core.esm-bundler.js:206 emit @ runtime-core.esm-bundler.js:4404 onClick @ NcButton-C9D47Igd.mjs:84 callWithErrorHandling @ runtime-core.esm-bundler.js:199 callWithAsyncErrorHandling @ runtime-core.esm-bundler.js:206 (anonymous) @ runtime-dom.esm-bundler.js:730 ```Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with the DELETE request in circles.ts and follow the trace through lib/FederatedItems/CircleDestroy.php, lib/Service/FederatedEventService.php, lib/Service/CircleService.php, and lib/Controller/LocalController.php. Reproduce deletion after removing a collective and inspect why the managed-by-another-app check returns HTTP 400. Done means the team can be deleted successfully in this scenario without the error.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- javascript, php
- Domain
- api, backend
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 55/100