Insurance claim processing BPMN example
Insurance claim processing runs from first notification of loss to a payment or a decline letter. Insurers map it because claims are the moment the product is actually delivered, and because handling time and leakage both hide in unmapped handoffs: a claim that sits between the handler and the assessor for a week costs money and goodwill. The usual failure is that decline decisions happen informally, at different points, with no consistent letter going out.
This example keeps the flow deliberately compact: one pool, three lanes (Claims handler, Assessor, Payments), and two exclusive gateways. The modelling choice worth noticing is that both decline routes converge on a single "Send decline letter" task rather than each having its own copy. Pointing two flows at the same task is perfectly legal BPMN and it guarantees every declined claimant gets the same treatment, whichever gateway rejected them.
Standard BPMN 2.0 interchange XML: opens in Camunda Modeler, Signavio, Bizagi, and any other compliant tool.
The process at a glance
How to read this diagram
From the moment a claim is notified, the Claims handler lane takes over: the handler registers the claim and checks the policy cover. The gateway "Policy covers loss?" makes the first decision. Its default No branch goes straight to the "Send decline letter" task and the "Claim declined" end event, so uncovered claims exit early without wasting assessor time. The Yes branch passes the claim to the Assessor lane.
In the Assessor lane, a user task assesses the loss, and the gateway "Settlement approved?" carries the second decision. On Yes, the Payments lane pays the settlement through a service task and the process finishes at "Claim settled". On the default No branch, the flow merges into the same decline letter task used earlier, ending at "Claim declined". One settlement path, one decline path, and no way for a claim to finish without the customer hearing the outcome.
BPMN elements used
| Element | Count | In this diagram |
|---|---|---|
| Start event | 1 | Claim notified |
| End event | 2 | Claim settled, Claim declined |
| Task | 1 | Register claim |
| User task | 2 | Check policy cover, Assess the loss |
| Service task | 1 | Pay settlement |
| Send task | 1 | Send decline letter |
| Exclusive gateway | 2 | Policy covers loss?, Settlement approved? |
View the BPMN 2.0 XML for this diagram
<?xml version="1.0" encoding="UTF-8"?>
<bpmn2:definitions xmlns:bpmn2="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="Definitions_1" targetNamespace="http://bpmn.io/schema/bpmn" exporter="swimdraft" exporterVersion="1.0">
<bpmn2:collaboration id="Collaboration_1">
<bpmn2:participant id="pool_clm" name="Insurance claim processing" processRef="Process_pool_clm" />
</bpmn2:collaboration>
<bpmn2:process id="Process_pool_clm" isExecutable="false">
<bpmn2:laneSet id="LaneSet_pool_clm">
<bpmn2:lane id="lane_clm_handler" name="Claims handler">
<bpmn2:flowNodeRef>start_clm</bpmn2:flowNodeRef>
<bpmn2:flowNodeRef>t_clm_register</bpmn2:flowNodeRef>
<bpmn2:flowNodeRef>t_clm_cover</bpmn2:flowNodeRef>
<bpmn2:flowNodeRef>g_clm_cover</bpmn2:flowNodeRef>
<bpmn2:flowNodeRef>t_clm_decline</bpmn2:flowNodeRef>
<bpmn2:flowNodeRef>end_clm_declined</bpmn2:flowNodeRef>
</bpmn2:lane>
<bpmn2:lane id="lane_clm_assessor" name="Assessor">
<bpmn2:flowNodeRef>t_clm_assess</bpmn2:flowNodeRef>
<bpmn2:flowNodeRef>g_clm_settle</bpmn2:flowNodeRef>
</bpmn2:lane>
<bpmn2:lane id="lane_clm_pay" name="Payments">
<bpmn2:flowNodeRef>t_clm_pay</bpmn2:flowNodeRef>
<bpmn2:flowNodeRef>end_clm_settled</bpmn2:flowNodeRef>
</bpmn2:lane>
</bpmn2:laneSet>
<bpmn2:startEvent id="start_clm" name="Claim notified">
<bpmn2:outgoing>fclm1</bpmn2:outgoing>
</bpmn2:startEvent>
<bpmn2:task id="t_clm_register" name="Register claim">
<bpmn2:incoming>fclm1</bpmn2:incoming>
<bpmn2:outgoing>fclm2</bpmn2:outgoing>
</bpmn2:task>
<bpmn2:userTask id="t_clm_cover" name="Check policy cover">
<bpmn2:incoming>fclm2</bpmn2:incoming>
<bpmn2:outgoing>fclm3</bpmn2:outgoing>
</bpmn2:userTask>
<bpmn2:exclusiveGateway id="g_clm_cover" name="Policy covers loss?" default="fclm5">
<bpmn2:incoming>fclm3</bpmn2:incoming>
<bpmn2:outgoing>fclm4</bpmn2:outgoing>
<bpmn2:outgoing>fclm5</bpmn2:outgoing>
</bpmn2:exclusiveGateway>
<bpmn2:userTask id="t_clm_assess" name="Assess the loss">
<bpmn2:incoming>fclm4</bpmn2:incoming>
<bpmn2:outgoing>fclm6</bpmn2:outgoing>
</bpmn2:userTask>
<bpmn2:exclusiveGateway id="g_clm_settle" name="Settlement approved?" default="fclm8">
<bpmn2:incoming>fclm6</bpmn2:incoming>
<bpmn2:outgoing>fclm7</bpmn2:outgoing>
<bpmn2:outgoing>fclm8</bpmn2:outgoing>
</bpmn2:exclusiveGateway>
<bpmn2:serviceTask id="t_clm_pay" name="Pay settlement">
<bpmn2:incoming>fclm7</bpmn2:incoming>
<bpmn2:outgoing>fclm9</bpmn2:outgoing>
</bpmn2:serviceTask>
<bpmn2:endEvent id="end_clm_settled" name="Claim settled">
<bpmn2:incoming>fclm9</bpmn2:incoming>
</bpmn2:endEvent>
<bpmn2:sendTask id="t_clm_decline" name="Send decline letter">
<bpmn2:incoming>fclm5</bpmn2:incoming>
<bpmn2:incoming>fclm8</bpmn2:incoming>
<bpmn2:outgoing>fclm10</bpmn2:outgoing>
</bpmn2:sendTask>
<bpmn2:endEvent id="end_clm_declined" name="Claim declined">
<bpmn2:incoming>fclm10</bpmn2:incoming>
</bpmn2:endEvent>
<bpmn2:sequenceFlow id="fclm1" sourceRef="start_clm" targetRef="t_clm_register" />
<bpmn2:sequenceFlow id="fclm2" sourceRef="t_clm_register" targetRef="t_clm_cover" />
<bpmn2:sequenceFlow id="fclm3" sourceRef="t_clm_cover" targetRef="g_clm_cover" />
<bpmn2:sequenceFlow id="fclm4" name="Yes" sourceRef="g_clm_cover" targetRef="t_clm_assess">
<bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression">Yes</bpmn2:conditionExpression>
</bpmn2:sequenceFlow>
<bpmn2:sequenceFlow id="fclm5" name="No" sourceRef="g_clm_cover" targetRef="t_clm_decline" />
<bpmn2:sequenceFlow id="fclm6" sourceRef="t_clm_assess" targetRef="g_clm_settle" />
<bpmn2:sequenceFlow id="fclm7" name="Yes" sourceRef="g_clm_settle" targetRef="t_clm_pay">
<bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression">Yes</bpmn2:conditionExpression>
</bpmn2:sequenceFlow>
<bpmn2:sequenceFlow id="fclm8" name="No" sourceRef="g_clm_settle" targetRef="t_clm_decline" />
<bpmn2:sequenceFlow id="fclm9" sourceRef="t_clm_pay" targetRef="end_clm_settled" />
<bpmn2:sequenceFlow id="fclm10" sourceRef="t_clm_decline" targetRef="end_clm_declined" />
</bpmn2:process>
<bpmndi:BPMNDiagram id="BPMNDiagram_1">
<bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="Collaboration_1">
<bpmndi:BPMNShape id="pool_clm_di" bpmnElement="pool_clm" isHorizontal="true">
<dc:Bounds x="20" y="20" width="1270" height="390" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="lane_clm_handler_di" bpmnElement="lane_clm_handler" isHorizontal="true">
<dc:Bounds x="50" y="20" width="1240" height="130" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="lane_clm_assessor_di" bpmnElement="lane_clm_assessor" isHorizontal="true">
<dc:Bounds x="50" y="150" width="1240" height="130" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="lane_clm_pay_di" bpmnElement="lane_clm_pay" isHorizontal="true">
<dc:Bounds x="50" y="280" width="1240" height="130" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="start_clm_di" bpmnElement="start_clm">
<dc:Bounds x="112" y="59" width="36" height="36" />
<bpmndi:BPMNLabel><dc:Bounds x="96" y="101" width="69" height="14" /></bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="t_clm_register_di" bpmnElement="t_clm_register">
<dc:Bounds x="230" y="37" width="100" height="80" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="t_clm_cover_di" bpmnElement="t_clm_cover">
<dc:Bounds x="380" y="37" width="100" height="80" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="g_clm_cover_di" bpmnElement="g_clm_cover">
<dc:Bounds x="555" y="52" width="50" height="50" />
<bpmndi:BPMNLabel><dc:Bounds x="532" y="32" width="96" height="14" /></bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="t_clm_assess_di" bpmnElement="t_clm_assess">
<dc:Bounds x="680" y="167" width="100" height="80" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="g_clm_settle_di" bpmnElement="g_clm_settle">
<dc:Bounds x="855" y="182" width="50" height="50" />
<bpmndi:BPMNLabel><dc:Bounds x="825" y="162" width="110" height="14" /></bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="t_clm_pay_di" bpmnElement="t_clm_pay">
<dc:Bounds x="980" y="297" width="100" height="80" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="end_clm_settled_di" bpmnElement="end_clm_settled">
<dc:Bounds x="1162" y="319" width="36" height="36" />
<bpmndi:BPMNLabel><dc:Bounds x="1147" y="361" width="66" height="14" /></bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="t_clm_decline_di" bpmnElement="t_clm_decline">
<dc:Bounds x="980" y="37" width="100" height="80" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="end_clm_declined_di" bpmnElement="end_clm_declined">
<dc:Bounds x="1162" y="59" width="36" height="36" />
<bpmndi:BPMNLabel><dc:Bounds x="1143" y="101" width="75" height="14" /></bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNEdge id="fclm1_di" bpmnElement="fclm1">
<di:waypoint x="148" y="77" />
<di:waypoint x="230" y="77" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="fclm2_di" bpmnElement="fclm2">
<di:waypoint x="330" y="77" />
<di:waypoint x="380" y="77" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="fclm3_di" bpmnElement="fclm3">
<di:waypoint x="480" y="77" />
<di:waypoint x="555" y="77" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="fclm4_di" bpmnElement="fclm4">
<di:waypoint x="605" y="77" />
<di:waypoint x="660" y="77" />
<di:waypoint x="660" y="207" />
<di:waypoint x="680" y="207" />
<bpmndi:BPMNLabel><dc:Bounds x="611" y="57" width="21" height="14" /></bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="fclm5_di" bpmnElement="fclm5">
<di:waypoint x="605" y="77" />
<di:waypoint x="980" y="77" />
<bpmndi:BPMNLabel><dc:Bounds x="611" y="83" width="17" height="14" /></bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="fclm6_di" bpmnElement="fclm6">
<di:waypoint x="780" y="207" />
<di:waypoint x="855" y="207" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="fclm7_di" bpmnElement="fclm7">
<di:waypoint x="905" y="207" />
<di:waypoint x="960" y="207" />
<di:waypoint x="960" y="337" />
<di:waypoint x="980" y="337" />
<bpmndi:BPMNLabel><dc:Bounds x="911" y="187" width="21" height="14" /></bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="fclm8_di" bpmnElement="fclm8">
<di:waypoint x="905" y="207" />
<di:waypoint x="960" y="207" />
<di:waypoint x="960" y="77" />
<di:waypoint x="980" y="77" />
<bpmndi:BPMNLabel><dc:Bounds x="911" y="213" width="17" height="14" /></bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="fclm9_di" bpmnElement="fclm9">
<di:waypoint x="1080" y="337" />
<di:waypoint x="1162" y="337" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="fclm10_di" bpmnElement="fclm10">
<di:waypoint x="1080" y="77" />
<di:waypoint x="1162" y="77" />
</bpmndi:BPMNEdge>
</bpmndi:BPMNPlane>
</bpmndi:BPMNDiagram>
</bpmn2:definitions>Frequently asked questions
Is it valid for two gateway branches to target the same task?
Yes. BPMN allows multiple incoming sequence flows on a task, which acts as an implicit exclusive merge: whichever token arrives, the task runs. It is a tidy alternative to a converging gateway when the joining paths are alternatives rather than parallel branches, and here it keeps a single, consistent decline letter step.
Where would fraud screening fit in this model?
Insert a gateway after loss assessment asking "Fraud indicators present?" with a Yes branch into an investigation task, then loop the outcome back into the settlement decision. Keeping investigation as a detour that rejoins the main flow means a cleared claim continues normally, and only proven fraud needs its own end event.
Can I open this diagram in other BPMN tools?
Yes. The download is standard BPMN 2.0 interchange XML, validated against 19 normative rules from the OMG 2.0.2 specification, so it opens in Camunda Modeler, Signavio, Bizagi, or any other compliant tool. You can also edit it in the browser first and export .bpmn, SVG, or PNG when you are done.
Related BPMN examples
Loan approval
A bank loan approval process as a BPMN 2.0 diagram: completeness check, credit scoring, offer, and payout, with a document rework loop. Download the .bpmn file free.
Mortgage application
A mortgage application mapped in BPMN 2.0: parallel valuation and underwriting, lending decision, offer, and completion. View the swimlanes and download the .bpmn free.
Patient admission
A hospital patient admission flow as a BPMN 2.0 swimlane diagram: registration, triage, bed request, and ward transfer. Download the .bpmn file free.
Student enrolment
University student enrolment modelled in BPMN 2.0: condition checks, an evidence loop, parallel fees and records, and IT setup. Free .bpmn download.
Generate your own version of this diagram
Describe how the process works in your organisation: plain English, meeting notes, a transcript, or a spreadsheet. Swimdraft turns it into a spec-validated BPMN 2.0 diagram you can edit in the browser and export as .bpmn, SVG, or PNG.
Start freeNo credit card required