Returns and refunds (RMA) with inspection grading
E-commerce returns: eligibility check against the returns policy, RMA and prepaid label, a 14-day timer on the parcel arriving, inspection and grading that restocks resaleable items, returns faulty units to the vendor or refuses customer-damaged items, and a refund to the original payment method. Six message flows with the customer. Illustrative policy windows.
Rendering…
Make it your own.
<?xml version="1.0" encoding="UTF-8"?>
<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="Process_Returns_defs" targetNamespace="http://flowss.ai/bpmn">
<bpmn:message id="Msg_ReturnRequest" name="Return request"/>
<bpmn:process id="Process_Returns" name="Returns and refunds" isExecutable="false">
<bpmn:documentation>Return merchandise authorisation (RMA). Eligibility is a business-rule task over the returns policy (30-day window, excluded categories). An authorised return waits for the parcel under a 14-day interrupting timer; if nothing arrives the RMA is cancelled. Inspection grades the item: resaleable stock is restocked, faulty units go back to the vendor for credit, and customer damage is refused with the item shipped back. Both refundable outcomes join before the refund to the original payment method. The 30-day and 14-day windows are illustrative.</bpmn:documentation>
<bpmn:laneSet id="Process_Returns_lanes">
<bpmn:lane id="Lane_CustomerService" name="Customer service"><bpmn:flowNodeRef>Start_ReturnRequest</bpmn:flowNodeRef><bpmn:flowNodeRef>Task_Eligibility</bpmn:flowNodeRef><bpmn:flowNodeRef>Gw_Eligible</bpmn:flowNodeRef><bpmn:flowNodeRef>Task_IssueRMA</bpmn:flowNodeRef><bpmn:flowNodeRef>Task_DeclineReturn</bpmn:flowNodeRef><bpmn:flowNodeRef>End_Declined</bpmn:flowNodeRef><bpmn:flowNodeRef>Task_Refuse</bpmn:flowNodeRef><bpmn:flowNodeRef>End_Refused</bpmn:flowNodeRef></bpmn:lane>
<bpmn:lane id="Lane_ReturnsCentre" name="Returns centre"><bpmn:flowNodeRef>Task_ReceiveParcel</bpmn:flowNodeRef><bpmn:flowNodeRef>Timer_NotReceived</bpmn:flowNodeRef><bpmn:flowNodeRef>Task_CancelRMA</bpmn:flowNodeRef><bpmn:flowNodeRef>End_Expired</bpmn:flowNodeRef><bpmn:flowNodeRef>Task_Inspect</bpmn:flowNodeRef><bpmn:flowNodeRef>Gw_Condition</bpmn:flowNodeRef><bpmn:flowNodeRef>Task_Restock</bpmn:flowNodeRef><bpmn:flowNodeRef>Task_ReturnToVendor</bpmn:flowNodeRef><bpmn:flowNodeRef>Gw_RefundMerge</bpmn:flowNodeRef></bpmn:lane>
<bpmn:lane id="Lane_Finance" name="Finance"><bpmn:flowNodeRef>Task_Refund</bpmn:flowNodeRef><bpmn:flowNodeRef>End_Refunded</bpmn:flowNodeRef></bpmn:lane>
</bpmn:laneSet>
<bpmn:startEvent id="Start_ReturnRequest" name="Return requested"><bpmn:messageEventDefinition id="Start_ReturnRequest_ed" messageRef="Msg_ReturnRequest"/></bpmn:startEvent>
<bpmn:businessRuleTask id="Task_Eligibility" name="Check return eligibility"/>
<bpmn:exclusiveGateway id="Gw_Eligible" name="Eligible?" default="Flow_3"/>
<bpmn:sendTask id="Task_IssueRMA" name="Issue RMA and return label"/>
<bpmn:sendTask id="Task_DeclineReturn" name="Decline with reason"/>
<bpmn:endEvent id="End_Declined" name="Return declined"/>
<bpmn:receiveTask id="Task_ReceiveParcel" name="Receive returned parcel"/>
<bpmn:boundaryEvent id="Timer_NotReceived" name="Not received in 14 days" attachedToRef="Task_ReceiveParcel"><bpmn:timerEventDefinition id="Timer_NotReceived_ed"><bpmn:timeDuration xsi:type="bpmn:tFormalExpression">P14D</bpmn:timeDuration></bpmn:timerEventDefinition></bpmn:boundaryEvent>
<bpmn:serviceTask id="Task_CancelRMA" name="Cancel RMA and close case"/>
<bpmn:endEvent id="End_Expired" name="RMA expired"/>
<bpmn:userTask id="Task_Inspect" name="Inspect and grade item"/>
<bpmn:exclusiveGateway id="Gw_Condition" name="Item condition?" default="Flow_11"/>
<bpmn:userTask id="Task_Restock" name="Restock item"/>
<bpmn:userTask id="Task_ReturnToVendor" name="Return to vendor for credit"/>
<bpmn:sendTask id="Task_Refuse" name="Refuse refund and ship back"/>
<bpmn:endEvent id="End_Refused" name="Refund refused"/>
<bpmn:exclusiveGateway id="Gw_RefundMerge"/>
<bpmn:serviceTask id="Task_Refund" name="Refund original payment"/>
<bpmn:endEvent id="End_Refunded" name="Refund issued"/>
<bpmn:sequenceFlow id="Flow_1" sourceRef="Start_ReturnRequest" targetRef="Task_Eligibility"/>
<bpmn:sequenceFlow id="Flow_2" sourceRef="Task_Eligibility" targetRef="Gw_Eligible"/>
<bpmn:sequenceFlow id="Flow_3" name="eligible" sourceRef="Gw_Eligible" targetRef="Task_IssueRMA"/>
<bpmn:sequenceFlow id="Flow_4" name="not eligible" sourceRef="Gw_Eligible" targetRef="Task_DeclineReturn"><bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">=eligible = false</bpmn:conditionExpression></bpmn:sequenceFlow>
<bpmn:sequenceFlow id="Flow_5" sourceRef="Task_DeclineReturn" targetRef="End_Declined"/>
<bpmn:sequenceFlow id="Flow_6" sourceRef="Task_IssueRMA" targetRef="Task_ReceiveParcel"/>
<bpmn:sequenceFlow id="Flow_7" sourceRef="Timer_NotReceived" targetRef="Task_CancelRMA"/>
<bpmn:sequenceFlow id="Flow_8" sourceRef="Task_CancelRMA" targetRef="End_Expired"/>
<bpmn:sequenceFlow id="Flow_9" sourceRef="Task_ReceiveParcel" targetRef="Task_Inspect"/>
<bpmn:sequenceFlow id="Flow_10" sourceRef="Task_Inspect" targetRef="Gw_Condition"/>
<bpmn:sequenceFlow id="Flow_11" name="resaleable" sourceRef="Gw_Condition" targetRef="Task_Restock"/>
<bpmn:sequenceFlow id="Flow_12" name="faulty" sourceRef="Gw_Condition" targetRef="Task_ReturnToVendor"><bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">=grade = "faulty"</bpmn:conditionExpression></bpmn:sequenceFlow>
<bpmn:sequenceFlow id="Flow_13" name="customer damage" sourceRef="Gw_Condition" targetRef="Task_Refuse"><bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">=grade = "customer damage"</bpmn:conditionExpression></bpmn:sequenceFlow>
<bpmn:sequenceFlow id="Flow_14" sourceRef="Task_Refuse" targetRef="End_Refused"/>
<bpmn:sequenceFlow id="Flow_15" sourceRef="Task_Restock" targetRef="Gw_RefundMerge"/>
<bpmn:sequenceFlow id="Flow_16" sourceRef="Task_ReturnToVendor" targetRef="Gw_RefundMerge"/>
<bpmn:sequenceFlow id="Flow_17" sourceRef="Gw_RefundMerge" targetRef="Task_Refund"/>
<bpmn:sequenceFlow id="Flow_18" sourceRef="Task_Refund" targetRef="End_Refunded"/>
<bpmn:textAnnotation id="Note_Policy"><bpmn:text>30-day return window and 14-day parcel deadline are illustrative policy values.</bpmn:text></bpmn:textAnnotation>
</bpmn:process>
<bpmn:collaboration id="Process_Returns_collab">
<bpmn:participant id="Process_Returns_pool" name="Online retailer — returns" processRef="Process_Returns"/>
<bpmn:participant id="Participant_Customer" name="Customer"/>
<bpmn:messageFlow id="MsgFlow_Request" name="Return request" sourceRef="Participant_Customer" targetRef="Start_ReturnRequest"/>
<bpmn:messageFlow id="MsgFlow_RMA" name="RMA and prepaid label" sourceRef="Task_IssueRMA" targetRef="Participant_Customer"/>
<bpmn:messageFlow id="MsgFlow_Decline" name="Decline notice" sourceRef="Task_DeclineReturn" targetRef="Participant_Customer"/>
<bpmn:messageFlow id="MsgFlow_Parcel" name="Returned item" sourceRef="Participant_Customer" targetRef="Task_ReceiveParcel"/>
<bpmn:messageFlow id="MsgFlow_Refuse" name="Refusal and item" sourceRef="Task_Refuse" targetRef="Participant_Customer"/>
<bpmn:messageFlow id="MsgFlow_Refund" name="Refund confirmation" sourceRef="Task_Refund" targetRef="Participant_Customer"/>
</bpmn:collaboration>
<bpmndi:BPMNDiagram id="Process_Returns_di">
<bpmndi:BPMNPlane id="Process_Returns_plane" bpmnElement="Process_Returns_collab">
<bpmndi:BPMNShape id="Process_Returns_pool_di" bpmnElement="Process_Returns_pool" isHorizontal="true"><dc:Bounds x="160" y="200" width="1998" height="670"/></bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Lane_CustomerService_di" bpmnElement="Lane_CustomerService" isHorizontal="true"><dc:Bounds x="190" y="200" width="1968" height="250"/></bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Lane_ReturnsCentre_di" bpmnElement="Lane_ReturnsCentre" isHorizontal="true"><dc:Bounds x="190" y="450" width="1968" height="270"/></bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Lane_Finance_di" bpmnElement="Lane_Finance" isHorizontal="true"><dc:Bounds x="190" y="720" width="1968" height="150"/></bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Participant_Customer_di" bpmnElement="Participant_Customer" isHorizontal="true"><dc:Bounds x="160" y="60" width="1998" height="60"/></bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Start_ReturnRequest_di" bpmnElement="Start_ReturnRequest"><dc:Bounds x="262" y="257" width="36" height="36"/><bpmndi:BPMNLabel><dc:Bounds x="237" y="298" width="87" height="15"/></bpmndi:BPMNLabel></bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Task_Eligibility_di" bpmnElement="Task_Eligibility"><dc:Bounds x="380" y="235" width="100" height="80"/></bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Gw_Eligible_di" bpmnElement="Gw_Eligible" isMarkerVisible="true"><dc:Bounds x="555" y="250" width="50" height="50"/><bpmndi:BPMNLabel><dc:Bounds x="558" y="231" width="44" height="15"/></bpmndi:BPMNLabel></bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Task_IssueRMA_di" bpmnElement="Task_IssueRMA"><dc:Bounds x="680" y="235" width="100" height="80"/></bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Task_DeclineReturn_di" bpmnElement="Task_DeclineReturn"><dc:Bounds x="830" y="345" width="100" height="80"/></bpmndi:BPMNShape>
<bpmndi:BPMNShape id="End_Declined_di" bpmnElement="End_Declined"><dc:Bounds x="1012" y="367" width="36" height="36"/><bpmndi:BPMNLabel><dc:Bounds x="966" y="408" width="80" height="15"/></bpmndi:BPMNLabel></bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Task_ReceiveParcel_di" bpmnElement="Task_ReceiveParcel"><dc:Bounds x="980" y="485" width="100" height="80"/></bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Timer_NotReceived_di" bpmnElement="Timer_NotReceived"><dc:Bounds x="992" y="547" width="36" height="36"/><bpmndi:BPMNLabel><dc:Bounds x="1024" y="581" width="91" height="28"/></bpmndi:BPMNLabel></bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Task_CancelRMA_di" bpmnElement="Task_CancelRMA"><dc:Bounds x="1130" y="610" width="100" height="80"/></bpmndi:BPMNShape>
<bpmndi:BPMNShape id="End_Expired_di" bpmnElement="End_Expired"><dc:Bounds x="1312" y="632" width="36" height="36"/><bpmndi:BPMNLabel><dc:Bounds x="1297" y="673" width="66" height="15"/></bpmndi:BPMNLabel></bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Task_Inspect_di" bpmnElement="Task_Inspect"><dc:Bounds x="1280" y="485" width="100" height="80"/></bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Gw_Condition_di" bpmnElement="Gw_Condition" isMarkerVisible="true"><dc:Bounds x="1455" y="500" width="50" height="50"/><bpmndi:BPMNLabel><dc:Bounds x="1387" y="483" width="77" height="15"/></bpmndi:BPMNLabel></bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Task_Restock_di" bpmnElement="Task_Restock"><dc:Bounds x="1580" y="485" width="100" height="80"/></bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Task_ReturnToVendor_di" bpmnElement="Task_ReturnToVendor"><dc:Bounds x="1580" y="610" width="100" height="80"/></bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Task_Refuse_di" bpmnElement="Task_Refuse"><dc:Bounds x="1580" y="235" width="100" height="80"/></bpmndi:BPMNShape>
<bpmndi:BPMNShape id="End_Refused_di" bpmnElement="End_Refused"><dc:Bounds x="1762" y="257" width="36" height="36"/><bpmndi:BPMNLabel><dc:Bounds x="1741" y="298" width="78" height="15"/></bpmndi:BPMNLabel></bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Gw_RefundMerge_di" bpmnElement="Gw_RefundMerge" isMarkerVisible="true"><dc:Bounds x="1755" y="500" width="50" height="50"/></bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Task_Refund_di" bpmnElement="Task_Refund"><dc:Bounds x="1880" y="755" width="100" height="80"/></bpmndi:BPMNShape>
<bpmndi:BPMNShape id="End_Refunded_di" bpmnElement="End_Refunded"><dc:Bounds x="2062" y="777" width="36" height="36"/><bpmndi:BPMNLabel><dc:Bounds x="2044" y="818" width="73" height="15"/></bpmndi:BPMNLabel></bpmndi:BPMNShape>
<bpmndi:BPMNEdge id="Flow_1_di" bpmnElement="Flow_1"><di:waypoint x="298" y="275"/><di:waypoint x="380" y="275"/></bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_2_di" bpmnElement="Flow_2"><di:waypoint x="480" y="275"/><di:waypoint x="555" y="275"/></bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_3_di" bpmnElement="Flow_3"><di:waypoint x="605" y="275"/><di:waypoint x="680" y="275"/><bpmndi:BPMNLabel><dc:Bounds x="611" y="256" width="37" height="15"/></bpmndi:BPMNLabel></bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_4_di" bpmnElement="Flow_4"><di:waypoint x="580" y="300"/><di:waypoint x="580" y="385"/><di:waypoint x="830" y="385"/><bpmndi:BPMNLabel><dc:Bounds x="586" y="303" width="55" height="15"/></bpmndi:BPMNLabel></bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_5_di" bpmnElement="Flow_5"><di:waypoint x="930" y="385"/><di:waypoint x="1012" y="385"/></bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_6_di" bpmnElement="Flow_6"><di:waypoint x="780" y="275"/><di:waypoint x="805" y="275"/><di:waypoint x="805" y="525"/><di:waypoint x="980" y="525"/></bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_7_di" bpmnElement="Flow_7"><di:waypoint x="1010" y="583"/><di:waypoint x="1010" y="650"/><di:waypoint x="1130" y="650"/></bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_8_di" bpmnElement="Flow_8"><di:waypoint x="1230" y="650"/><di:waypoint x="1312" y="650"/></bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_9_di" bpmnElement="Flow_9"><di:waypoint x="1080" y="525"/><di:waypoint x="1280" y="525"/></bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_10_di" bpmnElement="Flow_10"><di:waypoint x="1380" y="525"/><di:waypoint x="1455" y="525"/></bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_11_di" bpmnElement="Flow_11"><di:waypoint x="1505" y="525"/><di:waypoint x="1580" y="525"/><bpmndi:BPMNLabel><dc:Bounds x="1511" y="506" width="53" height="15"/></bpmndi:BPMNLabel></bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_12_di" bpmnElement="Flow_12"><di:waypoint x="1480" y="550"/><di:waypoint x="1480" y="650"/><di:waypoint x="1580" y="650"/><bpmndi:BPMNLabel><dc:Bounds x="1486" y="553" width="29" height="15"/></bpmndi:BPMNLabel></bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_13_di" bpmnElement="Flow_13"><di:waypoint x="1480" y="500"/><di:waypoint x="1480" y="275"/><di:waypoint x="1580" y="275"/><bpmndi:BPMNLabel><dc:Bounds x="1486" y="481" width="91" height="15"/></bpmndi:BPMNLabel></bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_14_di" bpmnElement="Flow_14"><di:waypoint x="1680" y="275"/><di:waypoint x="1762" y="275"/></bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_15_di" bpmnElement="Flow_15"><di:waypoint x="1680" y="525"/><di:waypoint x="1755" y="525"/></bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_16_di" bpmnElement="Flow_16"><di:waypoint x="1680" y="650"/><di:waypoint x="1780" y="650"/><di:waypoint x="1780" y="550"/></bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_17_di" bpmnElement="Flow_17"><di:waypoint x="1805" y="525"/><di:waypoint x="1843" y="525"/><di:waypoint x="1843" y="795"/><di:waypoint x="1880" y="795"/></bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_18_di" bpmnElement="Flow_18"><di:waypoint x="1980" y="795"/><di:waypoint x="2062" y="795"/></bpmndi:BPMNEdge>
<bpmndi:BPMNShape id="Note_Policy_di" bpmnElement="Note_Policy"><dc:Bounds x="580" y="770" width="250" height="44"/></bpmndi:BPMNShape>
<bpmndi:BPMNEdge id="MsgFlow_Request_di" bpmnElement="MsgFlow_Request"><di:waypoint x="280" y="120"/><di:waypoint x="280" y="257"/><bpmndi:BPMNLabel><dc:Bounds x="286" y="153" width="75" height="15"/></bpmndi:BPMNLabel></bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="MsgFlow_RMA_di" bpmnElement="MsgFlow_RMA"><di:waypoint x="730" y="235"/><di:waypoint x="730" y="120"/><bpmndi:BPMNLabel><dc:Bounds x="736" y="146" width="88" height="28"/></bpmndi:BPMNLabel></bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="MsgFlow_Decline_di" bpmnElement="MsgFlow_Decline"><di:waypoint x="880" y="345"/><di:waypoint x="880" y="120"/><bpmndi:BPMNLabel><dc:Bounds x="886" y="153" width="72" height="15"/></bpmndi:BPMNLabel></bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="MsgFlow_Parcel_di" bpmnElement="MsgFlow_Parcel"><di:waypoint x="1065" y="120"/><di:waypoint x="1065" y="485"/><bpmndi:BPMNLabel><dc:Bounds x="1071" y="153" width="72" height="15"/></bpmndi:BPMNLabel></bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="MsgFlow_Refuse_di" bpmnElement="MsgFlow_Refuse"><di:waypoint x="1630" y="235"/><di:waypoint x="1630" y="120"/><bpmndi:BPMNLabel><dc:Bounds x="1636" y="153" width="85" height="15"/></bpmndi:BPMNLabel></bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="MsgFlow_Refund_di" bpmnElement="MsgFlow_Refund"><di:waypoint x="1930" y="755"/><di:waypoint x="1930" y="120"/><bpmndi:BPMNLabel><dc:Bounds x="1936" y="146" width="62" height="28"/></bpmndi:BPMNLabel></bpmndi:BPMNEdge>
</bpmndi:BPMNPlane>
</bpmndi:BPMNDiagram>
</bpmn:definitions>