Troubleshooting ENA
Errors here come from three different layers, and knowing which layer produced a message tells you where to fix it.
| Layer | Where you see it | Nothing was sent to ENA? |
|---|---|---|
| SeqDesk pre-checks | A red banner on the study page or dashboard, HTTP 400 | Correct — nothing was sent |
| submg validation | Pipeline run issues, before the run starts | Correct — nothing was sent |
| ENA’s own response | The receipt XML inside the submission’s response | Something was sent and rejected |
Work through them in that order. A SeqDesk pre-check failure is always cheaper to fix than an ENA rejection.
SeqDesk registration errors
These come from POST /api/admin/submissions and appear verbatim in the UI.
None of them results in a call to ENA.
| Message | Cause | Fix |
|---|---|---|
ENA credentials not configured. Please configure your Webin credentials in Admin > Data Upload > ENA Configuration. | No Webin username or password saved | Set the credentials and press Test connection |
Study not found | The study id no longer exists | Reload the study list; the study may have been deleted |
Study already registered with ENA (PRJEB…) | The study is already flagged submitted with a production accession | This is the terminal state. Further changes go through ENA’s Webin portal, not SeqDesk |
Study title is required for ENA registration | Empty or whitespace-only title | Edit the study details |
Study description is required for ENA registration | Empty or whitespace-only description | Edit the study details |
Study must have at least one sample for ENA registration | No samples linked to the study | Link samples on the study edit screen |
N sample(s) missing taxonomy ID (TAXON_ID is required by ENA) | One or more samples have no taxId | Set the organism on each affected sample. See Organism & Taxonomy |
Study already has a production ENA accession. Test re-registration is blocked to avoid overwriting the production accession state. | You selected Test for a study that already carries a production accession | Do not re-register this study on Test; the run would overwrite the stored production accession |
Study and samples are already registered on the ENA Test Server | An unexpired test registration exists and every sample already has an accession | Nothing to do. Either wait for the 24-hour expiry, or move to Production |
A submission for this study is already in progress | A PENDING or SUBMITTED submission row exists for this study | Wait for it, or delete the stuck row from the Submissions Dashboard |
Unsupported entity type | A request with entityType other than study | Registration is study-scoped only; samples cannot be registered on their own |
Failed to get study accession from ENA | ENA accepted the request but the receipt contained no usable PROJECT accession | Expand the submission and read the receipt XML — usually an ENA-side validation failure with success="true" on the envelope |
Authentication
Authentication failed - invalid ENA credentials means ENA returned HTTP 401.
The registration route surfaces this as a 500 with that message and marks the
submission ERROR.
The connection test distinguishes two cases:
Invalid credentials - authentication failed— a hard 401.Authentication failed - check your password— the response body mentioned authorization but was not a 401.
Both point at the same fix: re-enter the Webin password in Administration → ENA Credentials. The password is stored encrypted, so it cannot be read back from the settings screen to check — retyping it is the only way to be sure.
A third case is not an authentication problem at all:
Invalid username format. Expected "Webin-XXXXX" (e.g., Webin-12345), got "…"
SeqDesk validates the username against ^Webin-\d+$ before making any
request. Webin-12345@ebi.ac.uk, a trailing space, or your ENA login email
all fail here. Saving an invalid username is rejected too, with
ENA username must be in format 'Webin-XXXXX' (e.g., Webin-12345).
Anything else — ENA server returned: 5xx, a timeout, a DNS failure — is a
network or ENA availability problem. Confirm the host has outbound HTTPS to
ebi.ac.uk and try again.
submg pipeline errors
These come from the metadata validator and the submg runner, both of which run before anything is submitted. The run is refused; no partial submission is created.
Study-level
| Message | Fix |
|---|---|
SubMG can only run on study targets | Launch it from a study, not a sequencing order |
Study must have an ENA accession (PRJ*) before SubMG submission | Run the XML registration first |
Study is missing ENA accession (PRJ*) and cannot be submitted with submg | Same cause, raised later in the runner |
ENA target is Test server, but this study was not registered on ENA Test. Register the study on Test first (or switch ENA target to Production). | The global target is Test but the study only has a production registration |
ENA Test registration is older than 24 hours (…) and may be expired. Re-register the study on ENA Test before SubMG submission. | Re-register on Test, then start the run again |
ENA credentials are not configured. Set Webin username/password in Admin > Data Upload > ENA. | Save credentials before launching |
No samples selected for SubMG submission | The sample selection resolved to nothing |
No valid samples available for submg submission | Every selected sample failed its own checks |
Per sample
The validator reports one issue per sample, naming it:
| Message | Fix |
|---|---|
Sample X is missing required metadata fields for SubMG: collection date, geographic location (country and/or sea) | Fill those checklist fields. See the field-name mapping if you believe you already did |
Sample X is missing TAX_ID / Sample X: missing taxId. Set taxonomy metadata before starting SubMG. | Set the organism on the sample |
Sample X is missing paired-end read files / Sample X: has no paired-end read files. SubMG requires FASTQ R1/R2 inputs. | submg accepts paired-end FASTQ only. A sample with single-end reads cannot be submitted this way |
Sample X has paired reads without MD5 checksums / Sample X: has reads without MD5 checksums (…). Calculate checksums before running SubMG. | Run the FASTQ Checksum pipeline, or attach checksums when linking the files |
Sample X: read … is missing FASTQ R1 file at … Reattach reads or regenerate input files. | The recorded path does not exist and no near-miss variant was found. Check the data storage mount |
Sample X has no assembly file / Sample X: has no assembly file. SubMG requires an assembly FASTA; run the MAG pipeline first for this sample. | Run MAG for that sample |
Sample X: assembly file does not exist at … Re-run MAG or fix the assembly path in the sample outputs. | The Assembly row points at a file that is gone |
Sample X has an invalid preferred assembly selection (update it in Study Analysis) / Sample X: preferred assembly selection is unavailable. Update it in the Study Analysis section before running SubMG. | A specific assembly was pinned and it is no longer usable. The message names an alternative when one exists |
Sample X: is missing "collection date" in checklist metadata. Add it before running SubMG. | Fill the field |
Sample X: is missing "geographic location (country and/or sea)" in checklist metadata. Add it before running SubMG. | Fill the field |
Warnings that do not stop the run
Read these before you conclude a run was clean:
Sample X has no bins (optional, but recommended)andSample X: has no bins. Bin submission is optional; this sample will be submitted without bins. Run MAG binning first to include bins.Sample X: bin file does not exist at …; this bin will be skipped.— the sample is submitted with the remaining bins.Sample X: no usable bin files were found on disk. Bin submission will be skipped for this sample.Sample X: assembly coverage value not provided; using default 1. Set coverage_depth (or assemblyCoverageValue pipeline config) to override.— this ships a coverage of 1 to ENA. Almost always worth fixing.Sample X: read … FASTQ R1 path … was not found; using … instead.— a near-miss path was substituted. Verify it is the file you meant.
Runtime failures
| Symptom | Cause |
|---|---|
submg-cli/submg command not found in PATH in logs/pipeline.err | The conda environment named by condaEnv does not provide the submg CLI. Note SeqDesk prefers submg-cli; on submg 1.0 and later the bare submg entry point is a stub that does not accept submit |
Failed to parse FASTQ paths from … | The generated YAML manifest is malformed — treat as a bug and attach the run folder to a report |
Run completes, samplesUpdated is 0, no errors | submg ran but SeqDesk could not locate or map its receipts. Check the run artifacts and the Could not map … warnings |
Could not map sample alias 'X' to sample ID | The alias in submg’s accession file matched neither the sanitised sample code nor the sample title |
Could not map read report … to a read record | Checksums in the emitted run.xml did not match any stored read |
Could not map bin 'X' to bin record | The bin filename in submg’s output does not correspond to a Bin row |
Errors that come back from ENA
These are ENA’s words, not SeqDesk’s. They arrive inside the receipt XML,
which is stored in the submission’s response JSON and rendered in the step
timeline.
Taxonomy rejected
Typically “Taxon is not submittable” or a complaint about TAXON_ID. ENA does
not accept every node in the NCBI taxonomy for submission — internal ranks and
some unclassified nodes are not submittable.
Verify the ID at NCBI Taxonomy and
prefer the organism autocomplete over typing an ID by hand. For metagenomes,
use a metagenome taxon (408170 for human gut metagenome), not the host
species.
Mandatory checklist field missing
ENA validates each sample against the checklist named in its ENA-CHECKLIST
attribute. If a required field is missing, check three things in order:
- Is the value actually stored on the sample?
- Is the key one SeqDesk maps to ENA’s name? See the field-name mapping — an unmapped key ships under its literal name and does not satisfy the checklist.
- Is the study’s checklist type the one you intended?
The generated XML in the dashboard settles all three in one look.
Duplicate alias
ENA reports that an alias already exists in the submission account. Aliases are unique per Webin account, and unexpired test submissions occupy the namespace too.
Change the alias, or wait out the 24-hour test expiry, or check the Webin portal for the existing record. Remember the study alias defaults to the study’s internal id when none is set, so two studies never collide by accident — but re-running a registration whose accession SeqDesk failed to record will collide with itself.
Reading a failed submission
Expand the row in the Submissions Dashboard:
- Registration Steps — the timeline. The first step with an error status
tells you how far the attempt got. A failure at Send Study to ENA means
no samples were attempted at all; a failure at Send Samples to ENA means
the project was created and you are in
PARTIAL. - Generated XML — exactly what was sent, including the merged sample attributes.
- Accession Numbers — what came back, with deep links into the ENA browser (the test browser for test submissions).
There is no separate receipt column in the database. The receipt XML lives
inside the response JSON under receipt, which holds studyReceiptXml and
samplesReceiptXml separately.
Recovering from a partial registration
PARTIAL means the study registered but at least one sample did not. This is
the normal outcome when a single sample has bad metadata.
- Read the sample-level errors in the step details.
- Fix the offending samples.
- Retry Submission on the dashboard, or register again from the study.
The re-run reuses the existing study accession, skips the samples that already have one, and submits only the remainder. Do not delete a production submission to “start clean” — that will not remove the record from ENA and will lose your audit trail.
Cleaning up test submissions
Test rows do not expire themselves in SeqDesk; only ENA forgets them. Filter the dashboard for rows whose countdown reads Expired and delete them.
Deleting a test study submission also clears studyAccessionId, submitted,
submittedAt and testRegisteredAt on the study, and the matching
sampleAccessionNumber on its samples — which is exactly what you want before
a fresh test cycle, and exactly what you do not want on a production row.
Deleting a production submission removes the audit record and leaves the
accessions in place.
When none of this helps
Collect the submission id, the step timeline, the generated XML, and for submg
the run folder’s logs/pipeline.err — then see
Support & Messages for what a good report contains.