DependencyTrack / DependencyTrack/dependency-track
Optional template-based ID generation for internal vulnerabilities
- Dominant language
- Java
- Stars
- 4.2k
- Forks
- 811
- Avg merge
- 8h 39m
- Merged PRs (30d)
- 237
Description
### Current Behavior
Internally-created vulnerabilities (from pen-tests, manual reviews, or audits) are assigned a random identifier in the INT-xxxx format (e.g. INT-a1b2-c3d4-e5f6),generated by VulnerabilityUtil.randomInternalId(). There is no way to configure this format. The identifier carries no human-readable meaning — it does not indicate the organization, the year it was raised, or a running sequence number, which makes internal findings harder to reference, sort, and track in reporting and audit workflows.
### Proposed Behavior
Add an opt-in setting to generate internal vulnerability IDs from a configurable
template instead of the random INT-xxxx format.
When enabled by an administrator:
- IDs follow a configurable template with placeholders: {ORG_CODE}, {YYYY}, {MM},
{DD}, {SEQUENCE}, and optionally {PROJECT_NAME}. Default: {ORG_CODE}-{YYYY}-{SEQUENCE}
(e.g. ACME-2026-00001, mirroring the familiar CVE-YEAR-SEQUENCE convention).
- A sequence counter increments automatically, with a configurable reset policy
(never / yearly / monthly / daily) and a configurable zero-padding width.
- The setting is off by default. When disabled, IDs use the existing random INT-
format and behavior is completely unchanged, so existing installations are unaffected.
Why: teams that raise internal findings need stable, human-readable, organization-aligned
identifiers that fit their reporting and audit processes, rather than opaque random IDs.
Keeping it opt-in and off-by-default ensures zero impact on current behavior.
Implementation note: no database migration is required (the sequence table is
auto-created from its JDO model and config properties are seeded at startup). A backend
PR and a small admin-UI frontend PR are ready and will be linked to this issue.
### Checklist
- [x] I have read and understand the [contributing guidelines](https://github.com/DependencyTrack/dependency-track/blob/main/CONTRIBUTING.md#filing-issues)
- [x] I have checked the [existing issues](https://github.com/DependencyTrack/dependency-track/issues) for whether this enhancement was already requested
Contributor guide
Research direction
Start with VulnerabilityUtil.randomInternalId() to trace current internal-ID generation, then inspect the backend configuration and JDO model referenced by the issue. Review how the admin UI exposes settings. Done means an opt-in template, sequence and reset configuration works with the listed placeholders, while the default disabled path preserves existing random INT-xxxx behavior.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- java
- Domain
- backend-api-design, frontend, security
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 30/100