Issue Tracking and External Integrations
TestPlanIt provides comprehensive issue tracking capabilities, allowing you to track bugs, tasks, and other issues directly within the platform or integrate with external issue tracking systems like Jira, GitHub Issues, Azure DevOps, and more.
Internal Issue Management
TestPlanIt includes a built-in issue tracking system that allows you to:
- Create and manage issues directly within your projects
- Link issues to test cases, test runs, and test results
- Track issue status, priority, and assignments
- Add rich text descriptions with formatting support
- Attach files and screenshots
- Tag issues for better organization
Creating Internal Issues
- Navigate to your project's Issues section
- Click Create Issue
- Fill in the issue details:
- Name: A brief, descriptive title
- Description: Detailed information using the rich text editor
- Status: Current state of the issue
- Priority: Issue importance level
- Tags: Labels for categorization
- Link the issue to relevant test artifacts as needed
External Integration System
TestPlanIt's powerful integration system allows you to connect with external issue tracking platforms for seamless workflow integration. As an administrator, you can configure integrations at the system level and make them available to projects.
Integration Architecture
System-Level vs Project-Level
- System-Level: Integrations are configured once by administrators
- Project-Level: Project managers assign integrations to their projects
- User-Level: Individual users may need to authorize OAuth integrations
Authentication Methods
API Key Authentication
- Single set of credentials for all users
- Configured at the system level
- Best for: Small teams, internal tools
OAuth 2.0 Authentication
- Each user authorizes individually
- More secure and granular permissions
- Best for: Large teams, cloud services
Personal Access Tokens
- Similar to API keys but user-specific
- Common with GitHub and Azure DevOps
- Best for: Developer tools, CI/CD integration
Supported Integration Types
1. Jira Integration
Full bi-directional integration with Atlassian Jira, supporting both Cloud and Server/Data Center deployments.
Features:
- Create Jira issues directly from TestPlanIt
- Rich text formatting preserved using Atlassian Document Format (ADF)
- Automatic user matching between TestPlanIt and Jira
- Support for custom fields and issue types
- Real-time status synchronization
- Both OAuth 2.0 and API Key authentication
2. GitHub Integration
Connect to GitHub for issue tracking and repository integration.
Features:
- Create GitHub issues from test failures
- Link test cases to GitHub issues
- Track issue status across both platforms
- Personal Access Token authentication
3. Azure DevOps Integration
Integrate with Azure DevOps for work item tracking.
Features:
- Create work items (bugs, tasks, etc.) from TestPlanIt
- Support for Azure DevOps projects
- Personal Access Token authentication
- Custom field mapping
4. Simple URL Integration
A flexible integration for any issue tracking system that uses URL-based linking.
Features:
- Configure a base URL pattern with
{issueId}placeholder - Manually link issues by entering issue IDs
- Support for any system with predictable issue URLs
- Minimal configuration required - just a base URL
How it works:
- Set a base URL like
https://your-tracker.com/issues/{issueId} - When linking issues, enter the issue ID (e.g., "ISSUE-123")
- TestPlanIt replaces
{issueId}with the actual ID to create the link
Managing Integrations
Administrator Setup
- Navigate to Administration → Integrations
- Click Add Integration
- Select your integration type (Jira, GitHub, Azure DevOps, or Simple URL)
- Fill in the integration details:
Name: "Production Jira"
Provider: JIRA
Auth Type: API_KEY or OAUTH2
Status: ACTIVE
Configuration by Provider
Jira with API Key
- Generate API token from Atlassian Account Settings
- Configure in TestPlanIt:
Email: [email protected]
API Token: Generated from Atlassian account settings
Jira URL: https://your-domain.atlassian.net
Important: When using API key authentication, the issue reporter will be determined by:
- Matching TestPlanIt user email with Jira user email
- If no email match, matching display names
- If no match found, the API key owner becomes the reporter
Jira with OAuth 2.0
- Create OAuth app in Atlassian Developer Console
- Set redirect URL:
https://your-testplanit-domain/api/auth/jira/callback - Configure in TestPlanIt:
Client ID: [from-atlassian]
Client Secret: [from-atlassian]
Benefits:
- Provides user-specific authentication
- Each user authorizes their own Jira access
- Issues created with the actual user as reporter
GitHub
- Create Personal Access Token in GitHub Settings
- Required scopes:
repo- Full repository accesswrite:issues- Create and update issues
- Configure in TestPlanIt:
Personal Access Token: Generated from GitHub settings
Azure DevOps
- Generate PAT in Azure DevOps User Settings
- Required scopes:
- Work Items (Read & Write)
- Project and Team (Read)
- Configure in TestPlanIt:
Personal Access Token: Generated from Azure DevOps
Organization URL: https://dev.azure.com/your-org
Simple URL
Base URL: https://your-tracker.com/issues/{issueId}
API Key: Optional, only if your system requires authentication
The {issueId} placeholder will be replaced with the actual issue ID when creating links.
Editing Integrations
- Click the Edit button next to an integration
- Update configuration as needed
- Note: Changing authentication type may require users to re-authorize
Deleting Integrations
Warning: Deleting an integration will:
- Remove it from all projects
- Unlink all associated issues
- Delete user authorization tokens
To delete:
- Ensure no active projects are using the integration
- Click Delete and confirm
- Linked issues remain in the database but become unlinked
Project Configuration
After creating an integration, assign it to projects:
- Go to Project Settings → Integrations
- Select the integration from available options
- Choose the external project to link
- Configure project-specific settings:
- External project mapping
- Default issue type (for Jira)
- Field mappings
- Save settings
Multiple Integrations
Projects can have multiple integrations:
- One primary integration for issue creation
- Additional integrations for cross-referencing
- Different integrations for different teams
User Authorization (OAuth)
Initial Authorization
For OAuth integrations, users must:
- Go to Project → Integrations
- Click Authorize
- Log in to the external service
- Grant permissions to TestPlanIt
- Return to TestPlanIt automatically
Token Refresh
OAuth tokens are automatically refreshed when:
- Token is near expiration (< 5 minutes)
- API call fails with 401 error
- User manually re-authorizes
Creating External Issues
From Test Results
- After a test failure, click the Create Issue button
- Choose between internal issue or external integration
- For external issues:
- The form dynamically loads fields from the external system
- Required fields are marked with asterisks
- Rich text descriptions are automatically converted to the target format
- Submit to create the issue in the external system
From Test Cases
- Open a test case
- Click Link Issue or Create Issue
- Select the integration
- Fill in issue details
- The issue will be linked to the test case
Bulk Issue Creation
- Select multiple failed tests
- Click Create Issues
- Choose to create separate issues or one combined issue
- Issues are created with links back to TestPlanIt
Issue Linking and Synchronization
Automatic Linking
When creating issues from TestPlanIt:
- Issues are automatically linked to the source artifact (test case, test run, etc.)
- Links are bidirectional when supported by the integration
- Issue status updates can trigger test status changes
Manual Linking
- Open any test artifact
- Click Link Existing Issue
- Search for the issue by:
- Issue key (e.g., PROJ-123)
- Issue title
- Description content
- Select and link the issue
Status Synchronization
When enabled, TestPlanIt can:
- Update test status when linked issues are resolved
- Create follow-up issues for recurring failures
- Track issue resolution time for metrics
Field Mapping and Transformation
Dynamic Field Discovery
TestPlanIt automatically discovers fields from external systems:
// Jira field discovery
GET /rest/api/3/issue/createmeta
?projectKeys={projectKey}
&issuetypeIds={issueTypeId}
&expand=projects.issuetypes.fields
Custom Field Support
Supported custom field types:
- Text fields (single/multi-line)
- Select lists (single/multi)
- User pickers
- Date/time fields
- Number fields
- Checkboxes
- Labels
Rich Text and Formatting
TestPlanIt preserves rich text formatting when creating external issues:
Supported Formatting:
- Bold and italic text
- Bulleted and numbered lists
- Headers and subheaders
- Code blocks and inline code
- Tables (when supported by target system)
- Links and mentions
Format Conversion:
TestPlanIt automatically converts between:
- TipTap Editor JSON → Atlassian Document Format (Jira)
- TipTap Editor JSON → Markdown (GitHub)
- TipTap Editor JSON → HTML (Azure DevOps)
- User references → Account IDs
- Dates → ISO 8601 format
- Files → Attachments (when supported)
User Management and Permissions
User Matching
For API key integrations, TestPlanIt attempts to match users between systems:
- Email Matching: Primary method using email addresses
- Name Matching: Falls back to display name comparison
- API Key Owner: Uses integration owner as last resort
OAuth Benefits
OAuth integrations provide:
- Individual user authentication
- Accurate reporter/assignee attribution
- User-specific permissions
- No shared credentials
Permission Model
System Admin:
- Create/edit/delete integrations
- View all authorizations
- Access audit logs
Project Admin:
- Assign integrations to projects
- Configure project mappings
- View project authorizations
Users:
- Authorize own OAuth access
- Create issues via integrations
- View linked issues
Monitoring and Maintenance
Health Checks
Regular health checks verify:
- Authentication validity
- API endpoint availability
- Rate limit status
- Token expiration
Audit Logging
All integration actions are logged:
{
action: "ISSUE_CREATED",
integration: "jira-prod",
user: "[email protected]",
issueKey: "PROJ-123",
timestamp: "2024-01-15T10:30:00Z"
}
Rate Limiting
Respect external API limits:
- Jira: 50 requests/second
- GitHub: 5,000 requests/hour
- Azure DevOps: No hard limit
Security Considerations
Credential Storage
- Credentials are encrypted at rest using AES-256
- OAuth tokens stored per user
- API keys stored at integration level
- No credentials in logs or error messages
Troubleshooting
Connection Issues
# Test Jira connection
curl -u [email protected]:api_token \
https://company.atlassian.net/rest/api/3/myself
# Test GitHub connection
curl -H "Authorization: token YOUR_PAT" \
https://api.github.com/user
# Test Azure DevOps connection
curl -u :YOUR_PAT \
https://dev.azure.com/your-org/_apis/projects
Common Issues
Issue: Created issues show wrong reporter
- Ensure TestPlanIt and external system users have matching emails
- Consider using OAuth instead of API keys
- Check user permissions in the external system
Issue: Rich text formatting lost
- Verify the integration supports rich text
- Check that the description field accepts formatted content
- Update to the latest TestPlanIt version
Issue: Cannot see external project
- Verify integration credentials are valid
- Check project permissions in external system
- Ensure the project is not archived
Users can't see integration:
- Check project assignment
- Verify user project membership
- Confirm integration is active
Fields not loading:
- Verify project/issue type selection
- Check API permissions
- Clear browser cache
Integration Testing
- Use Test Connection to verify credentials
- Create a test issue to confirm field mapping
- Check that status synchronization works
- Verify user attribution is correct
Migration Guide
Migrating from Simple URL to Full Integration
- Export existing issue links
- Create new integration
- Map issue IDs to external keys
- Update links in database
- Remove old configuration
Switching Authentication Methods
- Create new integration with desired auth
- Have users authorize (if OAuth)
- Update project assignments
- Migrate existing issues
- Deactivate old integration
Best Practices
- Use OAuth when available for better security and user attribution
- Standardize naming between TestPlanIt and external systems
- Configure field mappings to capture all relevant data
- Enable status sync for automated workflow
- Regular credential rotation for API key integrations (every 90 days minimum)
- Document custom fields used in integrations
- Test integrations in a sandbox environment first
- Limit scope - Request minimum permissions needed
- Monitor usage - Check audit logs for anomalies
Appendix
Jira Cloud vs Server Differences
| Feature | Cloud | Server/DC |
|---|---|---|
| Authentication | OAuth 2.0, API Key | Basic Auth, PAT |
| API Version | v3 | v2/v3 |
| User IDs | accountId | username |
| Webhooks | Yes | Yes (different format) |
Required Permissions by Provider
Jira:
- Browse Projects
- Create Issues
- Edit Issues (optional)
- Add Comments
GitHub:
- Read repository metadata
- Write issues
- Read user info
Azure DevOps:
- View project-level information
- View work items
- Create/update work items
API Reference
For programmatic access to issue and integration features, see the API Documentation.
Key Endpoints
Issues:
POST /api/issues/create- Create internal issueGET /api/issues/{issueId}- Get issue detailsPOST /api/issues/{issueId}/link- Link issue to entityPOST /api/issues/{issueId}/unlink- Unlink issue from entity
Integrations:
POST /api/integrations/{id}/create-issue- Create external issueGET /api/integrations/{id}/search- Search external issuesPOST /api/integrations/{id}/link-issue- Link existing issueGET /api/integrations/{id}/issue-types- Get available issue typesGET /api/integrations/{id}/fields- Get field definitionsPOST /api/integrations/test-connection- Test integration connection
Project Integrations:
GET /api/projects/{projectId}/integrations- Get project integrationsPOST /api/projects/{projectId}/integrations- Assign integration to projectPUT /api/projects/{projectId}/integrations/{id}- Update project integration settingsDELETE /api/projects/{projectId}/integrations/{id}- Remove integration from project