CSV import: surface skipped relationship identifiers (not-found & no-READ) in the import summary
Nobody has claimed this yet.
- Dominant language
- Java
- Stars
- 970
- Forks
- 486
- Avg merge
- 3d 33m
- Merged PRs (30d)
- 170
Description
Problem Statement
When a CSV import resolves relationship columns, related content can be silently dropped from the resulting relationships, with only a server-side Logger.warn and nothing surfaced in the import result shown to the user. There are two such cases in RelationshipUtil / the import flow:
- Identifier not found —
RelationshipUtil.filterContentletlogs"No contentlet found for identifier '…'"and skips it (pre-existing). - No READ permission — introduced in #35222 (PR #36425): related content the importing user cannot READ is filtered out via
permissionAPI.filterCollection(...)inRelationshipUtil.getRelatedContentFromQuery.
In both cases the import reports success with silently incomplete relationships, and the user cannot tell a permission-filtered identifier apart from a genuinely missing one.
Acceptance Criteria
- When a relationship identifier is dropped during import (not found or filtered by permission), a warning/message is threaded back into the import result (e.g. via
RelationshipProcessingBuilder/ theValidationMessages surfaced in the import summary), not just the server log. - The message distinguishes "not found" from "no permission" so the user can act on it.
- Existing behavior (the relationship is still created for the resolvable/authorized identifiers; the row is not aborted) is preserved.
Context / Origin
Follow-up from PR #36425 (fix for #35222). The permission-filtering there was intentionally scoped to the import path and kept as filter-and-warn to avoid aborting import rows. This issue tracks improving visibility of both silent-drop cases together, since the not-found case has the same gap.
Relevant code:
dotCMS/src/main/java/com/dotcms/util/RelationshipUtil.java—getRelatedContentFromQuery(permission filter) andfilterContentlet(not-found skip)dotCMS/src/main/java/com/dotmarketing/util/ImportUtil.java—processRelationships/RelationshipProcessingBuilder(where warnings are surfaced to the import result)
dotCMS Version
Evergreen 26.06.21-01
Severity
Low — visibility/UX improvement; no data loss or security impact.
Links
Freshdesk ticket for the original issue:
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with dotCMS/src/main/java/com/dotcms/util/RelationshipUtil.java, reading getRelatedContentFromQuery and filterContentlet to trace permission-filtered and not-found identifiers. Then inspect dotCMS/src/main/java/com/dotmarketing/util/ImportUtil.java, especially processRelationships and RelationshipProcessingBuilder; done means the import summary distinguishes both warnings while preserving resolvable relationships and row processing.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- java
- Domain
- backend, content
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 55/100