Failed restore leaves orphaned app names that cannot be reused or deleted

I have…

I’m submitting a…

  • Regression (a behavior that stopped working in a new release)
  • Bug report
  • Performance issue
  • Documentation issue or request

Current behavior

I was restoring an application backup from our DEV environment to our on-premises STAGE environment.

The restore initially started correctly and restored the app, assets and rules, but it failed while rebuilding the schemas because one schema contains a duplicated field named slug .

The relevant error is:

Found corrupt domain object of type
Squidex.Domain.Apps.Entities.Schemas.DomainObject.SchemaDomainObject
with ID
89f0b7b8-1590-486a-8f20-06bfa0b70adb--b48e18a5-749d-4f8c-9b2e-f1283f3bbe3c.

System.ArgumentException:
A field with name 'slug' already exists. (Parameter 'field')

The restore job then failed with:

Error rate of 0.01694915254237288 is above threshold 0.

The restore log was:

2026-08-05T10:51:28Z: Started.
2026-08-05T10:51:28Z: Downloading Backup
2026-08-05T10:51:49Z: Downloaded Backup
2026-08-05T10:51:49Z: Creating Users
2026-08-05T10:52:21Z: Reading 36882/36881 events and 10 attachments completed.
2026-08-05T10:52:21Z: Restored Apps
2026-08-05T10:52:21Z: Restored Assets
2026-08-05T10:52:22Z: Restored Rules
2026-08-05T10:52:22Z: Failed with internal error.

After the failed restore, the app name used for the restore remains unavailable.

If I try to create or restore another app with the same name, Squidex reports:

The app id or name is not available.

However:

  • the restored app is not visible in the app list;
  • I am a Squidex administrator;
  • opening the app directly through its URL returns 404 ;
  • there is no way to open or delete the app from the administration interface.

I tried the restore more than once using different destination app names. All the names used by the failed restore attempts now remain reserved, even though the corresponding apps are not visible or accessible.

Expected behavior

When a restore operation fails, Squidex should completely remove the partially restored app and release its app name.

Alternatively, an administrator should have a supported way to find and delete incomplete or orphaned apps from the administration panel.

I would like to know the supported procedure to remove:

  • the orphaned app records created by the failed restore attempts;
  • the associated app-name reservations;
  • any partially restored events, assets, rules or schema states;

without affecting the existing applications in the same STAGE environment.

Minimal reproduction of the problem

  1. Create a backup of an app in the DEV environment.
  2. In an on-premises STAGE environment, open the restore page.
  3. Restore the DEV backup using a new destination app name.
  4. The restore imports events, assets and rules.
  5. The restore fails while rebuilding a schema because the schema history contains two fields named slug .
  6. The destination app does not appear in the app list and its direct URL returns 404 .
  7. Try to create or restore an app using the same destination name.
  8. Squidex returns:
The app id or name is not available.
  1. There is no visible app that an administrator can delete.

Environment

App Name:

  • [ X] Self hosted with docker
  • Self hosted with IIS
  • Self hosted with other version
  • Cloud version

Version: 7.23.0

Browser:

  • [ X] Chrome (desktop)
  • Chrome (Android)
  • Chrome (iOS)
  • Firefox
  • Safari (desktop)
  • Safari (iOS)
  • IE
  • Edge

Others:

The source is our DEV environment and the destination is our on-premises STAGE environment.

Failed restore job ID:

9877a636-5869-4c4c-84ed-2fa48f558e10

Partially restored app ID from the log:

89f0b7b8-1590-486a-8f20-06bfa0b70adb

Problematic schema ID:

b48e18a5-749d-4f8c-9b2e-f1283f3bbe3c

Could you please provide the supported procedure for safely deleting these orphaned apps and releasing their names?

We would prefer not to modify the MongoDB collections manually without knowing which collections and records are managed by the restore cleanup process.