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