Waldur Support Module
The Support module provides a comprehensive helpdesk and ticketing system with multi-backend integration, enabling organizations to manage support requests through JIRA, SMAX, Zammad, or a basic built-in system.
Overview
The support module acts as an abstraction layer over multiple ticketing backends, providing:
- Unified API for ticket management across different backends
- Bidirectional synchronization with external ticketing systems
- Template-based issue creation
- Customer feedback collection
- SLA tracking and reporting
- Advanced permission management
Architecture
graph TB
subgraph "Waldur Support"
API[Support API]
Models[Support Models]
Backend[Backend Interface]
end
subgraph "External Systems"
JIRA[JIRA/Service Desk]
SMAX[Micro Focus SMAX]
Zammad[Zammad]
end
subgraph "Integration"
Webhook[Webhooks]
Sync[Synchronization]
end
API --> Models
Models --> Backend
Backend --> JIRA
Backend --> SMAX
Backend --> Zammad
JIRA --> Webhook
SMAX --> Webhook
Zammad --> Webhook
Webhook --> Models
Sync --> Backend
Core Components
1. Issue Management
The Issue model is the central entity for ticket management:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | |
Issue Types:
INFORMATIONAL- General information requestsSERVICE_REQUEST- Service provisioning requestsCHANGE_REQUEST- Change management requestsINCIDENT- Incident reports and outages
2. Comment System
Comments provide threaded discussions on issues:
1 2 3 4 5 6 | |
Comment Features:
- Public/private visibility control
- Automatic user information formatting for backends
- Bidirectional synchronization
3. Attachment Management
File attachments for issues and templates:
1 2 3 4 5 6 7 8 | |
4. User Management
SupportUser bridges Waldur users with backend systems:
1 2 3 4 5 6 | |
5. Custom Field Integration
Resource Backend ID Synchronization:
The system supports automatic resource backend_id updates via Service Desk custom fields:
1 2 3 4 5 6 7 8 9 | |
Integration Benefits:
- External systems can update Waldur resource identifiers via Service Desk
- One-way data synchronization from helpdesk to Waldur resources
- Automated resource identifier management from external platforms
- Enhanced integration capabilities for third-party tools
Supported Resource Types:
- Marketplace Orders (
marketplace.Order) - Marketplace Resources (
marketplace.Resource) - Any resource with
backend_idfield connected via Issue generic foreign key
6. Template System
Templates enable standardized issue creation:
1 2 3 4 5 6 7 8 9 10 11 12 13 | |
7. Status Management
IssueStatus maps backend statuses to resolution types:
1 2 3 4 5 6 7 8 | |
Status Configuration:
Status configuration is critical for proper issue resolution detection. The system uses IssueStatus entries to determine whether an issue has been successfully resolved or canceled:
- RESOLVED: Statuses that indicate successful completion (e.g., "Done", "Resolved", "Completed")
- CANCELED: Statuses that indicate cancellation or failure (e.g., "Cancelled", "Rejected", "Failed")
Management Access:
- Staff users: Full CRUD access to manage status configurations
- Support users: Read-only access to view existing statuses
- Regular users: No access
API Operations:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | |
8. Feedback System
Customer satisfaction tracking:
1 2 3 4 | |
Backend Integration
Supported Backends
1. JIRA/Atlassian Service Desk
Full-featured integration with:
- Service Desk project support
- Request type management
- Customer portal integration
- Webhook support for real-time updates
- Custom field mapping with one-way resource synchronization (Service Desk → Waldur)
Authentication Methods:
Supports multiple authentication methods with automatic fallback:
- OAuth 2.0 (Recommended for Enterprise)
1 2 3 | |
- Personal Access Token (Server/Data Center)
1 | |
- API Token (Cloud - Recommended)
1 2 | |
- Basic Authentication (Legacy)
1 2 | |
Authentication Priority Order: OAuth 2.0 > Personal Access Token > API Token > Basic Authentication
Security Recommendations:
- Use OAuth 2.0 for enterprise integrations with fine-grained permissions
- Use API Tokens for Atlassian Cloud instances
- Use Personal Access Tokens for Server/Data Center instances
- Avoid Basic Authentication in production environments
OAuth 2.0 Setup:
- Create an OAuth 2.0 app in your Atlassian organization
- Obtain client_id and access_token from the OAuth flow
- Configure the credentials in your environment variables
- The system will automatically use OAuth 2.0 when configured
Custom Field Mapping:
Waldur supports custom field mapping with Atlassian Service Desk for enhanced integration capabilities:
1 2 3 4 5 6 7 8 9 10 11 | |
Resource Backend ID Synchronization:
The system automatically synchronizes resource backend IDs using the waldur_backend_id custom field:
- Jira Setup: Create a custom field named
waldur_backend_id(text field, single line) - Field Mapping: The system automatically detects field ID
customfield_10200or uses field lookup - Service Desk → Waldur Sync:
- Issue synchronization reads
waldur_backend_idcustom field and updates connected resource'sbackend_id - External systems can update Waldur resources by modifying the custom field in Service Desk tickets
Use Cases:
- External systems can update Waldur resource identifiers via Service Desk
- Cross-platform resource synchronization through helpdesk integration
- Automated data consistency maintenance across integrated systems
- Third-party tool integration via Service Desk custom field updates
Configuration Example:
1 2 3 4 5 6 7 | |
2. Micro Focus SMAX
Enterprise ITSM integration:
- Request and incident management
- Change management workflows
- Service catalog integration
- REST API-based synchronization
- Webhook support for real-time updates
3. Zammad
Open-source ticketing system:
- Multi-channel support (email, web, phone)
- Customer organization management
- Tag-based categorization
- Webhook integration
4. Basic Backend
No-op implementation for:
- Development and testing
- Environments without external ticketing
- Minimal support requirements
Backend Interface
All backends implement the SupportBackend interface:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | |
API Endpoints
Issue Management
| Endpoint | Method | Description |
|---|---|---|
/api/support-issues/ |
GET | List issues with filtering |
/api/support-issues/ |
POST | Create new issue |
/api/support-issues/{uuid}/ |
GET | Retrieve issue details |
/api/support-issues/{uuid}/ |
PATCH | Update issue |
/api/support-issues/{uuid}/ |
DELETE | Delete issue |
/api/support-issues/{uuid}/comment/ |
POST | Add comment to issue |
/api/support-issues/{uuid}/sync/ |
POST | Sync issue with backend |
Comments
| Endpoint | Method | Description |
|---|---|---|
/api/support-comments/ |
GET | List comments |
/api/support-comments/{uuid}/ |
GET | Retrieve comment |
/api/support-comments/{uuid}/ |
PATCH | Update comment |
/api/support-comments/{uuid}/ |
DELETE | Delete comment |
Attachments
| Endpoint | Method | Description |
|---|---|---|
/api/support-attachments/ |
GET | List attachments |
/api/support-attachments/ |
POST | Upload attachment |
/api/support-attachments/{uuid}/ |
GET | Download attachment |
/api/support-attachments/{uuid}/ |
DELETE | Delete attachment |
Configuration & Management
| Endpoint | Method | Description |
|---|---|---|
/api/support-users/ |
GET | List support users |
/api/support-priorities/ |
GET | List priorities |
/api/support-templates/ |
GET/POST | Manage templates |
/api/support-feedback/ |
GET/POST | Manage feedback |
/api/support-issue-statuses/ |
GET/POST | Manage issue statuses (staff only) |
/api/support-issue-statuses/{uuid}/ |
GET/PATCH/DELETE | Issue status details (staff only) |
Webhooks
| Endpoint | Method | Description |
|---|---|---|
/api/support-jira-webhook/ |
POST | JIRA webhook receiver |
/api/support-smax-webhook/ |
POST | SMAX webhook receiver |
/api/support-zammad-webhook/ |
POST | Zammad webhook receiver |
Reports
| Endpoint | Method | Description |
|---|---|---|
/api/support-statistics/ |
GET | Dashboard statistics |
/api/support-feedback-report/ |
GET | Feedback summary |
/api/support-feedback-average-report/ |
GET | Average ratings |
Permissions
Permission Model
The support module uses Waldur's standard permission system with additional paths:
1 2 3 4 5 6 7 8 9 10 11 12 | |
Filtering
Advanced filtering capabilities:
- Customer/project-based filtering
- Resource-based filtering (VMs, networks)
- IP address lookup for resource issues
- Full-text search across summary/description
- Status, priority, and type filtering
Configuration
Django Settings
1 2 3 4 5 6 7 8 | |
Constance Settings
Dynamic configuration via admin:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | |
Backend Configuration
JIRA Configuration
1 2 3 4 5 6 7 8 | |
SMAX Configuration
1 2 3 4 5 6 7 | |
Zammad Configuration
1 2 3 4 5 6 | |
Workflows
Issue Creation Flow
sequenceDiagram
participant User
participant API
participant Models
participant Backend
participant External
User->>API: POST /support-issues/
API->>Models: Create Issue
Models->>Backend: create_issue()
Backend->>External: Create ticket
External-->>Backend: Ticket ID
Backend-->>Models: Update backend_id
Models-->>API: Issue created
API-->>User: 201 Created
Synchronization Flow
sequenceDiagram
participant Scheduler
participant Backend
participant External
participant Models
Scheduler->>Backend: sync_issues()
Backend->>External: Fetch updates
External-->>Backend: Issue data
Backend->>Models: Update issues
Note over Backend,Models: Update status, comments, attachments
Backend->>Models: Process callbacks
Note over Models: Trigger marketplace callbacks if needed
Webhook Flow
sequenceDiagram
participant External
participant Webhook
participant Models
participant Callbacks
External->>Webhook: POST /support-*-webhook/
Webhook->>Webhook: Validate signature
Webhook->>Models: Update issue/comment
alt Status changed
Models->>Callbacks: Trigger callbacks
Note over Callbacks: Resource state updates
end
Webhook-->>External: 200 OK
Celery Tasks
Scheduled background tasks:
| Task | Schedule | Description |
|---|---|---|
pull-support-users |
Every 6 hours | Sync support users from backend |
pull-priorities |
Daily at 1 AM | Update priority levels |
sync_request_types |
Daily at 1 AM | Sync JIRA request types |
sync-issues |
Configurable | Full issue synchronization |
Best Practices
1. Backend Selection
- Use JIRA for enterprise environments with existing Atlassian infrastructure
- Use SMAX for ITIL-compliant service management
- Use Zammad for open-source, multi-channel support
- Use Basic for development or minimal requirements
2. Status Configuration
- Map all backend statuses: Create IssueStatus entries for every status that your backend can return
- Define clear RESOLVED vs CANCELED mappings:
- RESOLVED (type=0): Statuses indicating successful completion
- CANCELED (type=1): Statuses indicating cancellation or failure
- Use descriptive names: Match the exact status names from your backend system
- Test status transitions: Verify resolution detection works correctly before production
- Staff-only management: Only staff users can create/modify status configurations
- Regular monitoring: Review status configurations when backend workflows change
3. Performance Optimization
- Enable webhooks for real-time updates
- Configure appropriate sync intervals
- Use pagination for large issue lists
- Implement caching for frequently accessed data
4. Security
- Use secure webhook endpoints with signature validation
- Implement proper permission checks
- Sanitize user input in comments/descriptions
- Use HTTPS for all backend connections
5. Custom Field Integration
- Enable custom field mapping: Set
ATLASSIAN_CUSTOM_ISSUE_FIELD_MAPPING_ENABLED = Truefor enhanced integration - Create required custom fields: Ensure
waldur_backend_idcustom field exists in Jira/Service Desk - Test field permissions: Verify API user can read/write custom fields
- Monitor field updates: Log resource backend_id changes for audit trails
- Validate field values: Ensure custom field values are appropriate for resource backend IDs
- Document field usage: Maintain clear documentation of custom field purposes and expected values
6. Monitoring
- Monitor sync task execution
- Track webhook delivery failures
- Log backend API errors
- Set up alerts for SLA breaches
- Monitor custom field mapping operations
- Track resource backend_id updates via logs
Troubleshooting
Common Issues
1. Issues Not Syncing
- Check backend connectivity
- Verify API credentials
- Review sync task logs
- Ensure webhook configuration
2. Missing Status Updates
- Verify IssueStatus configuration
- Check webhook signature validation
- Review backend field mappings
- Monitor sync intervals
3. Permission Errors
- Verify user roles and permissions
- Check customer/project associations
- Review permission paths configuration
- Validate backend user permissions
4. Attachment Upload Failures
- Check file size limits
- Verify MIME type restrictions
- Review storage permissions
- Monitor backend API limits
5. Custom Field Mapping Issues
- Field Not Found: Verify
waldur_backend_idcustom field exists in Jira (should becustomfield_10200) - Mapping Disabled: Ensure
ATLASSIAN_CUSTOM_ISSUE_FIELD_MAPPING_ENABLED = True - Resource Not Updated: Check if issue is properly connected to resource via
resource_content_typeandresource_object_id - Permission Errors: Verify Jira user has permission to read/write custom fields
- Field Name Mismatch: Ensure custom field name matches exactly
waldur_backend_id - API Errors: Check Jira REST API logs for custom field access issues
Debugging Custom Field Integration:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | |
Integration with Marketplace
The support module integrates with the marketplace for ticket-based offerings:
- Orders create support issues automatically
- Issue status changes trigger order callbacks
- Resolution status determines order success/failure
- Comments and attachments sync bidirectionally
- Resource backend_id synchronization: Custom field mapping enables automatic resource identifier updates
Enhanced Marketplace Integration Features:
- Support.OfferingTemplate Integration: Marketplace orders for support offerings automatically create connected support issues
- One-way Resource Sync: Service Desk custom field updates can automatically update connected marketplace resource backend IDs
- Cross-System Data Flow: External systems can update Waldur resources via Service Desk custom field modifications
- Automated Identifier Management: Maintains consistent resource identifiers across integrated platforms
See Ticket-Based Offerings Documentation for detailed marketplace integration.
Extension Points
The support module provides several extension points:
- Custom Backends: Implement
SupportBackendinterface - Template Processors: Custom template variable processing
- Notification Handlers: Custom email/notification logic
- Webhook Processors: Custom webhook payload processing
- Feedback Collectors: Alternative feedback mechanisms
Appendix
Database Schema
Key database tables:
support_issue- Issue recordssupport_comment- Issue commentssupport_attachment- File attachmentssupport_supportuser- Backend user mappingsupport_priority- Priority levelssupport_issuestatus- Status configuration (with UUID support)support_template- Issue templatessupport_feedback- Customer feedback
API Filters
Available query parameters:
1 2 3 4 5 6 7 8 9 10 11 12 | |
Error Codes
Common error responses:
| Code | Description |
|---|---|
| 400 | Invalid request data |
| 401 | Authentication required |
| 403 | Permission denied |
| 404 | Issue/resource not found |
| 409 | Conflict (duplicate, state issue) |
| 424 | Backend dependency failed |
| 500 | Internal server error |