Skip to content

New Edit Content shows "This URL does not exist" after deleting content and when opening archived content #37719

Description

@adrianjm-dotCMS

Problem Statement

In the New Edit Content editor, a generic blocking error dialog — "This URL does not exist. The page you are trying to access does not exist." — appears in two situations even though the underlying operation succeeded:

  1. After firing a Delete/Destroy workflow action. The content is deleted (PUT /api/v1/workflow/actions/{id}/fire → 200), but the editor then refetches the deleted contentlet (GET /api/v1/content/{inode}?depth=2 → 404). The 404 goes to the global error manager, which opens the dialog, and the user is left on a page for content that no longer exists (with Unarchive/Delete still shown).
  2. When opening any archived contentlet. The content loads fine, but GET /api/v1/content/{identifier}/push/history returns 404 "Content ID '…' does not exist" for archived content, which also opens the global error dialog.

Found while migrating dotcms.com content types to New Edit Content (#35757). It affects every content type and every user who archives and deletes content from the new editor.

Steps to Reproduce

Screen.Recording.2026-09-23.at.4.44.30.PM.mov
  1. Enable New Edit Content on a content type (e.g. Code Snippet).
  2. Create a contentlet and Save it, then click Archive.
  3. Reload the page → the error dialog appears (bug 2).
  4. Click Delete → the content is deleted, but the error dialog appears and the editor stays on the deleted content (bug 1).

Root cause

# Where What
1 core-web/libs/edit-content/src/lib/store/features/workflow/workflow.feature.ts → fireWorkflowAction After any successful action it always refetches the contentlet, its actions and its workflow status. For actions with hasDeleteActionlet/hasDestroyActionlet that content no longer exists.
2 dotCMS/src/main/java/com/dotcms/rest/api/v1/content/ContentResource.java → getPushHistory Uses findContentletByIdentifierAnyLanguage(id), which excludes archived content, so it returns 404. It should use findContentletByIdentifierAnyLanguage(id, true).
3 core-web/libs/edit-content/src/lib/store/features/history/history.feature.ts → loadPushPublishHistory Any error, even for this secondary sidebar panel, is sent to errorManager.handle(), which blocks the whole editor with a dialog.

Acceptance Criteria

  • After a Delete or Destroy workflow action succeeds in the full-screen editor, a success message is shown and the user is taken to the content listing filtered by that content type (/c/content?filter=<contentType>), with no error dialog.
  • After a Delete or Destroy action in the overlay editor (dialog or side panel), the overlay closes with no error dialog.
  • The editor does not request the deleted contentlet after a Delete or Destroy action.
  • Other workflow actions (Save, Publish, Archive, Unarchive, Reset…) behave exactly as before.
  • If the Delete or Destroy action fails, the existing error handling still applies and the user stays on the content.
  • Opening an archived contentlet in the New Edit Content editor shows no error dialog.
  • GET /api/v1/content/{identifier}/push/history returns 200 for archived content (with its history or an empty list) and still returns 404 for identifiers that do not exist.
  • If loading the push publish history fails, the sidebar panel shows its error state without opening the global error dialog.

dotCMS Version

Reproduced on dotcms-corp-headless-auth.dotcms.dev and on local main (1.0.0-SNAPSHOT).

Severity

Medium - Some functionality impacted

Links

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Type

Projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions