Banner image for Issue Links
Core Concepts 5 min read

Issue Links

Connect Catalio Requirements and Applications to GitHub Issues, Linear, Jira, and Azure DevOps work items to close the loop between specifications and delivery

Updated
On this page

An Issue Link connects a Catalio Requirement or Application to an issue in an external issue tracker — GitHub, Linear, Jira, or Azure DevOps. Issue Links close the traceability gap between the specification layer (Catalio) and the delivery layer (your issue tracker), answering the questions: “Has this requirement been implemented?” and “Which requirements does this issue address?”

Supported Platforms

Platform Notes
GitHub GitHub Issues — primary integration
Linear Linear issue tracking
Jira Atlassian Jira (Cloud and Data Center)
Azure DevOps Azure DevOps Work Items
Link Type When It Applies
created_from The issue was created directly from this Requirement in Catalio
linked_manually An existing issue was manually linked to this Requirement after the fact

created_from links are created automatically when you use Catalio’s “Create Issue” action. linked_manually links are created when you paste an existing issue URL or ID into the link dialog.

Linking to Requirements vs. Applications

Issue Links can be scoped to either a Requirement or an Application:

  • Requirement link — The most common case. One issue implements one requirement. Required for per-requirement traceability reports.
  • Application link — Link an issue directly to an Application without associating it to a specific requirement. Useful for infrastructure, DevOps, or platform-wide issues that don’t map to a single requirement.

At least one of requirement_id or application_id must be set on every link.

Cached Metadata

Catalio caches issue metadata locally for offline display and reporting:

  • title — Issue title at time of last sync
  • status — Issue state (open, in progress, closed, etc.)
  • assignee — Assigned team member

This cached data allows Catalio to show issue context without a live API call. Use the sync_cached_data action to refresh metadata from the platform when you want the latest status.

Soft Deletion

Issue Links use soft delete (archival). When you delete a link, it is marked with an archived_at timestamp and hidden from all views — but the link record is retained for audit purposes. The unique constraint that prevents duplicate links applies only to non-archived records.

Key Fields

Field Purpose
platform Which issue tracker: github, linear, jira, or azure_devops
external_issue_id Numeric or string identifier from the external platform
external_identifier Full identifier for display (e.g., “GH-123”, “LIN-456”, “PROJ-789”)
link_type created_from or linked_manually
requirement_id The linked Requirement (nullable; one of requirement_id or application_id required)
application_id The linked Application (nullable; alternative to requirement_id)
cached_title Cached issue title from last sync
cached_status Cached issue status from last sync
cached_assignee Cached assignee from last sync

Uniqueness

Catalio enforces that each external issue is linked to a given Requirement (or Application) at most once. Duplicate links — where the same issue is linked to the same Requirement twice — are prevented at the database level. Archived links are excluded from this uniqueness check, so if you delete a link and recreate it, the new link is valid.

Traceability Reporting

Issue Links are the foundation of Catalio’s traceability matrix:

  • Requirement coverage — Which requirements have at least one linked issue? Which are unimplemented?
  • Implementation status — For requirements with linked issues, what is the combined issue status?
  • Cross-platform view — One requirement can link to issues across multiple platforms simultaneously

This makes it possible to answer “Is requirement X delivered?” by checking whether linked issues are closed — without leaving Catalio.

Relationships at a Glance

Related Concept Relationship
Requirements Issue Links connect Requirements to external delivery work
Applications Issue Links can scope directly to an Application
Repositories Repositories are the code layer; Issue Links are the work-item layer

Best Practices

Create links at requirement approval, not at implementation.

The moment a requirement is approved and a corresponding issue is created in your tracker, link them. Waiting until after implementation means traceability gaps form and are hard to backfill.

Link issues to the most specific requirement possible.

Linking an issue to a broad feature requirement (e.g., “Invoice Processing”) when it implements a specific requirement (“Invoice PDF export must preserve line-item totals”) produces misleading traceability reports. Prefer specificity.

Sync cached data regularly.

Issue status in Catalio reflects the last sync, not the current platform state. For sprint reviews or status reports, trigger a sync first to ensure the displayed status is current.

Use application-level links for cross-cutting work.

Not every issue maps to a single requirement. DevOps automation, performance tuning, and infrastructure upgrades often span many requirements. Link these to the Application directly, rather than forcing an incorrect requirement link.

Next Steps


Pro Tip: After an initial batch of requirement approvals, use Catalio’s requirement list view with the “linked issues” filter set to “none” to identify which requirements are still unlinked. This surfaces gaps before sprint planning, not after implementation.

Support

  • Documentation: Continue reading about Requirements and Repositories
  • In-App Help: The AI assistant can help identify requirements without linked issues
  • Email: support@catalio.ai
  • Community: Share traceability patterns with other Catalio users