What is Helix Project Management?
Helix Project Management is a core component of Perforce’s Helix ALM suite—an integrated Application Lifecycle Management platform. It provides a centralized, web-based workspace for managing the entire lifecycle of a project: from initial requirements and design artifacts through test cases, issues, and release documentation. Unlike standalone project trackers, Helix Project Management connects every work item (requirements, tests, bugs) with full traceability, enabling teams to see how a requirement relates to a test, which bug stems from a failed test, and exactly which code changes resolved the issue.
The tool supports both waterfall and agile methodologies. You can organize work into projects, folders, and iterations, assign owners, set priorities, and track progress with customizable dashboards and reports. Because it lives inside Helix ALM, it also ties into version control (Helix Core) and test automation, giving a single source of truth from planning to production.
Why Helix Project Management Matters for Development Teams
🚀 Deploy your AI agent in 10 minutes
Managed Hermes hosting. Zero DevOps. 100M tokens/mo included.
Try it free →In complex development environments, disconnected tools create silos: requirements in one spreadsheet, tests in another, bugs in a tracker, and code in a repository. Helix Project Management breaks those silos by linking all artifacts together. This matters for several reasons:
- End-to-end traceability: Every requirement can be traced to its tests, defects, and code commits—critical for compliance (ISO, FDA, DO-178C).
- Impact analysis: When a requirement changes, you instantly see affected tests and issues, reducing regression risk.
- Cross-team collaboration: Business analysts, QA engineers, and developers work in the same system with role-based views, avoiding handoff gaps.
- Automation ready: The REST API lets you integrate project management into CI/CD pipelines, auto-create items from test failures, and sync with external tools.
- Audit-ready history: Every change to an item is versioned with baselines, so you can prove exactly who changed what and when.
Core Concepts and Terminology
Before diving in, understand the key building blocks:
- Project: A container for all artifacts related to a product or effort. Projects can have sub-projects and folders.
- Items: The fundamental work unit. Items are categorized by type: Requirement, Test Case, Issue (bug), Task, or Document. Each has a unique ID, title, description, status, priority, and relationships.
- Relationships: Directed links between items (e.g., “traces to”, “tests”, “blocks”). They form the traceability matrix.
- Baselines: A snapshot of all item versions at a point in time (e.g., a release milestone). Baselines enable comparisons and rollbacks.
- Workflows: State transition rules that define how an item moves from “In Progress” to “Done”. Workflows enforce process discipline.
- Queries: Saved filters that return lists of items matching criteria. Queries power reports, dashboards, and API automation.
Getting Started with Helix Project Management
Helix ALM can be deployed on-premises (Windows/Linux) or used as a cloud-hosted service. For a quick start:
- Install the server and connect to a database (SQL Server, PostgreSQL).
- Create a project via the web UI or REST API. Give it a name, key (short code), and optional description.
- Define item types you need (the default set works well for most teams).
- Set up workflows matching your team’s process (e.g., “Open → In Progress → Review → Closed”).
- Add users and assign permissions (administrator, contributor, viewer).
- Start populating requirements, then link test cases and issues.
The web interface is intuitive, but automation unlocks the real power. Let's explore the REST API.
Working with the Helix ALM REST API
Helix ALM provides a comprehensive REST API (version 2) that lets you programmatically manage projects, items, relationships, baselines, and more. All API calls use JSON, and authentication is handled via HTTP Basic Auth with an API token or username/password. The base URL is typically https://your-server/api/v2.
Authentication
Generate an API token from the web UI under your user profile. Use it in the Authorization header. For curl examples, we pass -u username:token.
# Example: test authentication by fetching current user info
curl -u jsmith:abc123token -X GET https://helix.example.com/api/v2/user
Creating a Project
Projects are created with a POST to /api/v2/projects. You must provide a name and a key (short identifier, no spaces). The response returns the new project ID.
curl -u jsmith:abc123token \
-H "Content-Type: application/json" \
-X POST https://helix.example.com/api/v2/projects \
-d '{
"name": "Phoenix Rocket Guidance",
"key": "PRG",
"description": "Flight software for next-gen rocket"
}'
Creating Items (Requirements, Issues, Test Cases)
All work items are managed via the /api/v2/items endpoint. To create a new requirement, specify type: "Requirement" and the project ID.
curl -u jsmith:abc123token \
-H "Content-Type: application/json" \
-X POST https://helix.example.com/api/v2/items \
-d '{
"project": {"id": 42},
"type": "Requirement",
"title": "Guidance system must tolerate sensor loss",
"description": "The system shall maintain stability when one IMU fails.",
"priority": "High",
"status": "In Progress"
}'
Similarly, create a test case that traces to the requirement using the relationships array:
curl -u jsmith:abc123token \
-H "Content-Type: application/json" \
-X POST https://helix.example.com/api/v2/items \
-d '{
"project": {"id": 42},
"type": "Test Case",
"title": "Verify IMU failover stability",
"description": "Disable one IMU in flight simulation and measure deviation.",
"status": "Ready for Review",
"relationships": [
{
"target": {"id": 1001},
"type": "traces-to"
}
]
}'
Issues (bugs) are just items with type: "Issue". You can relate them to failing test cases to maintain full traceability.
Querying Items and Updating Status
Use GET with query parameters to filter items by project, type, status, or custom fields. This is essential for dashboards and automation scripts.
# Fetch all open issues in project PRG, sorted by priority
curl -u jsmith:abc123token \
-X GET "https://helix.example.com/api/v2/items?project=PRG&type=Issue&status=Open&sort=-priority" \
-H "Content-Type: application/json"
To update an item’s status (e.g., close a bug), send a PATCH with the changed fields:
curl -u jsmith:abc123token \
-H "Content-Type: application/json" \
-X PATCH https://helix.example.com/api/v2/items/2003 \
-d '{
"status": "Closed",
"resolution": "Fixed"
}'
Automating with Python
Python’s requests library makes it easy to build scripts that sync Helix with CI/CD results. Below is a complete script that fetches open issues and logs a summary, then demonstrates creating a test case from a test failure.
import requests
import json
BASE_URL = "https://helix.example.com/api/v2"
AUTH = ("jsmith", "abc123token") # username, API token
def get_open_issues(project_key):
url = f"{BASE_URL}/items"
params = {"project": project_key, "type": "Issue", "status": "Open", "sort": "-priority"}
r = requests.get(url, auth=AUTH, params=params)
r.raise_for_status()
return r.json()["data"]
def create_test_case(project_id, title, description, requirement_id):
payload = {
"project": {"id": project_id},
"type": "Test Case",
"title": title,
"description": description,
"status": "Ready for Review",
"relationships": [
{"target": {"id": requirement_id}, "type": "traces-to"}
]
}
r = requests.post(f"{BASE_URL}/items", auth=AUTH, json=payload)
r.raise_for_status()
return r.json()
# Example usage
issues = get_open_issues("PRG")
print(f"Found {len(issues)} open issues:")
for issue in issues[:5]:
print(f"- [{issue['id']}] {issue['title']} (Priority: {issue['priority']})")
# Simulate: a CI test failed, so create a linked test case
new_test = create_test_case(
project_id=42,
title="Auto-created: Sensor loss recovery time",
description="Generated from CI failure log: recovery time exceeded 50ms.",
requirement_id=1001
)
print(f"Created test case {new_test['id']}")
Working with Baselines
Baselines capture a project state for audits or release comparisons. Create a baseline via /api/v2/baselines and retrieve it to compare item versions.
# Create a baseline for project PRG
curl -u jsmith:abc123token \
-H "Content-Type: application/json" \
-X POST https://helix.example.com/api/v2/baselines \
-d '{
"project": {"id": 42},
"name": "Release 2.1.0",
"description": "Snapshot before release 2.1.0"
}'
# List baselines for a project
curl -u jsmith:abc123token \
-X GET "https://helix.example.com/api/v2/baselines?project=PRG"
You can later compare two baselines to see which items changed, helping with impact analysis and regulatory audits.
Best Practices for Helix Project Management
To get the most from Helix Project Management, adopt these practices early:
- Model real processes in workflows: Don't just use the default; tailor statuses and transitions to match your team’s actual steps (e.g., add “Code Review” state). Enforce transition conditions to prevent skipping steps.
- Maintain a single source of truth: Store all requirements in Helix, not in external documents. Use the built-in rich text editor for detailed specs, and attach diagrams or mockups directly to items.
- Link everything from the start: Create relationships as you go. A requirement without linked tests is untested; a bug without a linked failing test lacks context. Use the traceability matrix views regularly.
- Use baselines for every release and milestone: Before each build or release, create a baseline. It’s cheap and invaluable when you need to prove what was delivered.
- Automate repetitive tasks via API: Write scripts to auto-create issues from CI failures, sync status with external boards, or generate weekly reports. The Python example above can be extended into a cron job or Jenkins step.
- Define queries for dashboards: Save queries for “My open tasks”, “Untested requirements”, “High-priority open bugs”. Display them on the dashboard and in automated reports.
- Control permissions thoughtfully: Grant write access only to those who need it; use viewer roles for stakeholders who just need to track progress. This protects item integrity.
- Regularly groom the backlog: Archive or close stale items. A clean project improves performance and keeps the team focused.
Conclusion
Helix Project Management brings together requirements, tests, issues, and documentation in a single connected system, breaking the cycle of fragmented tools and manual traceability efforts. Its REST API turns project management into a programmable layer that fits neatly into modern DevOps pipelines. By understanding the core concepts—items, relationships, baselines, and workflows—and applying best practices like early linking, consistent baselining, and API-driven automation, teams can achieve the traceability, compliance, and collaboration needed for complex, safety-critical, or regulated software development. Whether you’re building flight software, medical devices, or enterprise applications, Helix Project Management provides the structure and visibility to ship with confidence.