Service Management Module
On this pageShow
Service Management Module
Service ticket tracking, installation automation, and technician management for customer satisfaction
Module Purpose: Deliver excellent service through efficient ticket management, automated installation scheduling, and a structured closure workflow
Primary Users: Customer Service, Service Technicians, Supervisors
Last Updated: June 10, 2026
Overview
The Service Management module provides complete lifecycle tracking for service requests—from automatic installation tickets created at the point of sale through repair work, release, and customer feedback collection.
Key Capabilities
- Ticket Types: Installation, Warranty Repair, and Non-Warranty Repair
- Automatic Installation Tickets: Created when a sales order includes machine products (
Printercategory) - Ticket Management: Create, assign, and track service requests manually or from sales
- Priority System: Categorize by urgency (Low, Medium, High, Critical)
- Technician Assignment: Workload distribution and tracking
- Status Tracking: Open → Assigned → In Progress → Completed → Released → Closed
- Closure Workflow: Feedback request and release required before final closure
- Cost Tracking: Parts, labor, and transport costs (waived for non-warranty repairs)
- Customer Feedback: Ratings, comments, and WhatsApp feedback request links
- Warranty Management: Warranty vs. non-warranty service differentiation
Ticket Types
| Ticket Type | How Created | Warranty Type | Service Charge |
|---|---|---|---|
| Installation | Auto from sale (printer products) or manual | Warranty (default) | Per policy |
| Warranty Repair | Manual | Warranty (auto-set) | Parts/labor may apply |
| Non-Warranty Repair | Manual | Non-Warranty (auto-set) | No service charge required |
Installation Tickets (Automatic)
When a sales order is created, the system inspects each line item. For products in the Printer category (machines requiring installation):
- An installation ticket is created immediately—even if the order is unpaid or partially paid
- The ticket is linked to the originating sales order
sourceis set tosale_auto_installationserviceLocationdefaults to Customer Locationprioritydefaults to High- Duplicate tickets are prevented per sales order, product, and unit quantity
Staff can view the linked sale from the ticket detail page.
Repair Tickets (Manual)
Create repair tickets from Services → New Ticket:
- Select Warranty Repair or Non-Warranty Repair
- Warranty type is set automatically from the ticket type
- For Non-Warranty Repair, service costs are not required and are stored as zero
Service Workflow
Status Lifecycle
Open → Assigned → In Progress → Completed → Released → Closed
↓
(Cancelled at any active stage)
| Status | Meaning |
|---|---|
| Open | Ticket created, awaiting assignment |
| Assigned | Technician assigned |
| In Progress | Work underway |
| Completed | Service work finished |
| Released | Customer feedback requested; ticket released for closure |
| Closed | Final archived state |
| Cancelled | Ticket cancelled (cannot be reopened) |
1. Ticket Creation
Manual creation — information captured:
- Customer
- Product/equipment
- Ticket type (Installation, Warranty Repair, Non-Warranty Repair)
- Issue description (max 1000 characters)
- Priority level (Low, Medium, High, Critical)
- Service location (In-Shop or Customer Location)
- Warranty status (auto-set for repair types; editable for Installation)
- Auto-generated ticket number (
ST######)
Automatic creation — triggered by sales orders containing printer products. No staff action required.
2. Priority Assignment
| Priority | Response Time | Use Case |
|---|---|---|
| Critical | < 4 hours | System down, business impact |
| High | < 24 hours | Major functionality affected; default for auto-installation |
| Medium | < 48 hours | Partial functionality affected |
| Low | < 1 week | Minor issues, enhancements |
3. Technician Assignment
Assignment criteria:
- Technician skills match
- Current workload
- Geographic location
- Customer relationship
- Availability
4. Service Execution
Technician actions:
- Review ticket details
- Gather necessary parts/tools
- Travel to service location (if customer site)
- Diagnose issue
- Perform repair, installation, or maintenance
- Update ticket status
- Record work performed
5. Cost Recording
Cost formula:
Parts Cost + Labor Cost + Transport Cost = Total Cost
Non-warranty repairs: Costs are automatically zeroed—no service charge is required.
Warranty and installation tickets: Parts, labor, and transport may be recorded as applicable.
6. Closure & Release Workflow
Closing a ticket follows a enforced sequence:
Completed
↓
Mark feedback requested (+ optional WhatsApp link to customer)
↓
Released (records releasedAt / releasedBy)
↓
Closed
Rules enforced by the system:
- A ticket cannot move to Released unless it is Completed and feedback has been requested
- A ticket cannot move to Closed unless it has been Released and feedback was requested
- Cancelled tickets cannot be reopened
Staff actions (Edit Ticket or Ticket Detail):
- Set status to Completed when work is done
- Click Mark Feedback Requested to record the feedback request timestamp
- Click Send WhatsApp Feedback Request to open a pre-filled
wa.melink for the customer - Set status to Released once feedback has been requested
- Set status to Closed after release
7. Customer Feedback
Feedback is collected in two ways:
- WhatsApp (preferred): Staff send a pre-filled feedback message via WhatsApp share link
- In-system: Staff record rating (1–5) and comments (max 500 characters) on the ticket
WhatsApp links include the ticket number, customer name, and a prompt to reply with a rating and comments. This uses manual share links (wa.me)—the same pattern as invoice sharing—not automated WhatsApp Business API sending.
API endpoint: GET /api/v1/tickets/:id/feedback-whatsapp
User Interface
Routes
| Route | Purpose |
|---|---|
/dashboard/services | Ticket list, filters, and stats |
/dashboard/services/new | Create manual ticket |
/dashboard/services/[id] | Ticket detail, closure actions, WhatsApp feedback |
/dashboard/services/[id]/edit | Edit ticket, costs, status, closure workflow |
/dashboard/services/maintenance | Preventive maintenance schedule |
/dashboard/services/reports | Service performance reports |
Ticket Detail View
Displays:
- Ticket type and source (Manual / Auto from Sale)
- Link to originating sales order (for auto-installation tickets)
- Warranty type and service location
- Release and feedback-request timestamps
- Customer feedback (rating and comments)
- Closure actions (mark feedback requested, WhatsApp link)
Ticket List
Status filter includes all lifecycle states: Open, Assigned, In Progress, Completed, Released, Cancelled, Closed.
API Reference
Base path: /api/v1/tickets
| Method | Endpoint | Description |
|---|---|---|
GET | / | List tickets (filter by status, paginate) |
POST | / | Create manual ticket |
GET | /:id | Get ticket detail (includes sales order, release metadata) |
PUT | /:id | Update ticket; supports markFeedbackRequested: true |
GET | /:id/feedback-whatsapp | Generate WhatsApp feedback share link |
DELETE | /:id | Delete ticket |
Key Ticket Fields
| Field | Type | Description |
|---|---|---|
ticketType | Installation | Warranty Repair | Non-Warranty Repair | Category of service work |
source | manual | sale_auto_installation | How the ticket was created |
salesOrder | ObjectId | Linked sales order (auto-installation only) |
warrantyType | Warranty | Non-Warranty | Coverage type |
status | See lifecycle above | Current workflow state |
releasedAt | Date | When ticket was released |
releasedBy | ObjectId | User who released the ticket |
feedbackRequestedAt | Date | When customer feedback was requested |
customerFeedback | { rating, comments } | Recorded customer satisfaction |
Permissions: serviceTickets:list, serviceTickets:create, serviceTickets:update, serviceTickets:delete
Integration with Sales
When a sales order is created (POST /api/v1/sales):
- The order is saved and inventory is updated as usual
- After the transaction commits, the system scans sold items
- For each Printer product, one installation ticket is created per unit sold
- Idempotency prevents duplicate tickets if the process is retried
This happens regardless of payment status (Paid, Partially Paid, or Pending).
See also: Sales module and Order-to-Cash workflow.
Reporting
Completed statuses for metrics include: Completed, Released, and Closed.
Reports cover:
- Tickets by status and priority
- Average resolution time
- Customer satisfaction (ratings, compliments vs. complaints)
- Open vs. completed ticket counts
Success Metrics
Average Resolution Time:
- By priority level
- Trend over time
- Comparison to SLA targets
First-Time Fix Rate:
- Target: 85%+
- % of tickets resolved on first visit
Customer Satisfaction:
- Target: 4.0+ average rating
- Collect feedback on closed tickets
- Address low ratings promptly
SLA Compliance:
- Target: 95%+ within SLA
- Critical tickets: 100% compliance
Installation Coverage:
- % of printer sales with installation tickets created automatically
Best Practices
✅ Do:
- Verify auto-created installation tickets after machine sales
- Use the correct ticket type for manual repairs
- Follow the closure sequence: Complete → request feedback → Release → Close
- Send WhatsApp feedback links while the service is fresh in the customer's mind
- Record in-system feedback when customers reply
- Update status regularly during active work
❌ Don't:
- Skip the feedback-request step before releasing or closing
- Attempt to close tickets directly from Completed
- Add service charges to non-warranty repair tickets
- Ignore high-priority or auto-generated installation tickets
- Cancel tickets that should be completed and closed properly
Future Enhancements
- WhatsApp Business API: Programmatic message sending behind a messaging provider abstraction
requiresInstallationproduct flag: Extend beyondPrintercategory for other machine types- Customer-facing feedback form: Public URL embedded in WhatsApp messages