SwimdraftPricingSign inStart free

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.

Insurance claim processing: BPMN 2.0 diagram
Insurance claim processing process modelled as a BPMN 2.0 diagram

Standard BPMN 2.0 interchange XML: opens in Camunda Modeler, Signavio, Bizagi, and any other compliant tool.

The process at a glance

Starts when
Claim notified
Ends with
Claim settled · Claim declined
Lanes
Claims handler · Assessor · Payments
Decisions
Policy covers loss? · Settlement approved?

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

ElementCountIn this diagram
Start event1Claim notified
End event2Claim settled, Claim declined
Task1Register claim
User task2Check policy cover, Assess the loss
Service task1Pay settlement
Send task1Send decline letter
Exclusive gateway2Policy 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

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 free

No credit card required