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 26 |
|
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. Template System
Templates enable standardized issue creation:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
|
6. Status Management
IssueStatus
maps backend statuses to resolution types:
1 2 3 4 5 6 7 |
|
7. 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
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 |
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 |
|
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 to IssueStatus entries
- Define clear RESOLVED vs CANCELED mappings
- Test status transitions before production
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. Monitoring
- Monitor sync task execution
- Track webhook delivery failures
- Log backend API errors
- Set up alerts for SLA breaches
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
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
See Ticket-Based Offerings Documentation for detailed marketplace integration.
Extension Points
The support module provides several extension points:
- Custom Backends: Implement
SupportBackend
interface - 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 configurationsupport_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 |