Customer Service Platform
Sofar CSP
RMA cases, replacement units, and spare-parts tracking. Pulls warranty tickets in from Thulium, opens TMS on-site dispatches when an engineer visit is required, and consumes SKUs directly from the Sofar Products catalogue.
In build
What this module handles
- RMA intake — warranty claims from installers, distributors, end-users.
- Diagnosis tracking — fault codes, firmware, asset history pulled from TMS.
- Resolution path — repair on-site, replace unit, replace part, refund, reject.
- Spare-parts ledger — every part pulled from every warehouse against an RMA.
- Supersedes / replaces nothing — stands up beside the existing Sofar CSP service portal.
Data model
- RmaCase
- orgId, number (RMA-YYYY-NNNNN), externalRef, customerId, siteId, assetId, ticketId?, taskId?, status, resolutionType, priority, faultDescription, reportedBy, closedAt
- RmaPartUsage
- rmaCaseId, productId (FK Sofar Products), qty, serialNumber?, warehouseCode, usedAt, usedByUserId
- RmaEvent
- rmaCaseId, actorId, event (status_changed / part_pulled / shipment_created / note), fromValue, toValue, detail JSON
- RmaShipment
- rmaCaseId, carrier, trackingNumber, shippedAt, deliveredAt, direction (OUTBOUND_REPLACEMENT / INBOUND_FAULTY)
API surface
GET /api/csp/rmaGET /api/csp/rma/:idPOST /api/csp/rmaPATCH /api/csp/rma/:idPOST /api/csp/rma/:id/partsPOST /api/csp/rma/:id/shipPOST /api/csp/rma/:id/closePOST /api/integrations/thulium/rma-webhook
Escalation paths
- Ticket → RMA— a customer support ticket escalates to an RMA case once warranty fault is confirmed. The ticket stays linked for the customer's view of the full resolution.
- RMA → TMS task— when an on-site visit is needed the RMA spawns a TMS task; the engineer's completion closes both records.
- Thulium inbound — warranty flags from the Thulium helpdesk land via webhook and auto-create the RMA with the ticket body attached.
Integrates with
Sofar CustomersSofar ProductsSofar TicketsSofar TMSThuliumHuiLianYi OA