Skip to content

Plugin deleted published, DOI-registered submissions despite "Incomplete" filter #5

Description

@umar76

Plugin version: 0.2.3.0 (latest release at time of use)
OJS version: 3.4.0.3
PHP / DB: MariaDB 11.4.x (server-side, not directly relevant but noted for completeness)

Summary

After installing and running this plugin once, it deleted several
submissions that were already published, with registered Crossref
DOIs
— not incomplete/draft submissions. This resulted in permanent
loss of the publications, authors, author_settings, and
publication_settings rows for those submissions, with only the
original files left orphaned on disk (and even those were later found
empty/gone).

What happened (reconstructed from event_log / event_log_settings,

since the plugin's own deletion of the submission-level log entries
removed the direct audit trail)

  • Plugin installed: 2026-06-26 15:52:49 (per the versions table)
  • Six submissions deleted: 2026-06-26 15:53:4015:53:4151 to 92
    seconds after installation
  • Of those six, five were fully published articles with actively
    registered DOIs
    (Crossref-deposited, status = 3 in the dois
    table), belonging to a specific already-published issue of the journal
  • The sixth was an in-progress submission

This timing makes it very likely the plugin was installed and run
essentially immediately, and its "incomplete" selection criteria
included submissions that were, in fact, complete and published.

Expected behavior

Per the README, the plugin is meant to delete only genuinely incomplete
submissions, with a configurable day-threshold specifically described
as existing "to safeguard the deletion of submissions that are not
meant to be deleted at the moment."

I would expect, at minimum:

  1. Published submissions (submissions.status = STATUS_PUBLISHED, or any
    submission with a current_publication_id pointing to a publication
    with status = STATUS_PUBLISHED) to be categorically excluded
    from deletion, regardless of the day-threshold setting.
  2. Ideally, a preview/dry-run step that lists exactly which
    submissions (with title + status) will be deleted, before the
    irreversible action is confirmed.
  3. Submissions with an assigned DOI (registered or not) to be treated as
    a hard exclusion as well, since a DOI implies formal publication intent.

Actual behavior

Confirmed-published, DOI-registered submissions were deleted alongside
genuinely incomplete ones.

Impact

Total, permanent loss of five published journal articles' metadata
(titles, authors, abstracts) from the OJS database, requiring manual
reconstruction from external citation indexes and direct outreach to
the corresponding authors. The physical article files were also lost.
Five Crossref DOIs are now left pointing at dead article pages on the
live site.

Ask

Could you clarify:

  • What criteria the plugin currently uses to define "incomplete" — does
    it check submissions.status and/or publications.status at all, or
    only submission-completion/stage progress?
  • Whether the day-threshold is applied uniformly regardless of published
    status, or whether published submissions are already meant to be
    excluded and this is a bug in that exclusion logic?

Happy to provide sanitized database excerpts (submission IDs, status
values, timestamps) if that's useful for reproducing this. I'd strongly
recommend the published/DOI-registered exclusion (point 1 above) be
added or fixed regardless of root cause, and that a preview/dry-run
mode be considered for a future release — this kind of deletion is
silent and irreversible under the current design, and we only
recovered as much as we did through forensic reconstruction of
leftover event_log entries, database backups, and external
citation records, not anything the plugin itself preserved.

Thank you for maintaining this plugin — flagging this so it can help
others avoid the same loss.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions