nextcloud / nextcloud/circles

Unable to delete team with (removed) collective (HTTP 400)

Open
#2,446 6 comments 2 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

0. Needs triage bug
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
  1. Create a team (without additional members)
  2. Create a collective for the team
  3. Optionional: Delete the collective
  4. 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

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.