<?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:zeebe="http://camunda.org/schema/zeebe/1.0" xmlns:modeler="http://camunda.org/schema/modeler/1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="Definitions_1" targetNamespace="http://bpmn.io/schema/bpmn" exporter="@bpmnkit/core" exporterVersion="0.0.23" modeler:executionPlatform="Camunda Cloud" modeler:executionPlatformVersion="8.9.0">
  <bpmn:process id="support-ticket-sla" name="Support Ticket SLA" isExecutable="true">
    <bpmn:extensionElements>
      <zeebe:versionTag value="1.0.0"/>
    </bpmn:extensionElements>
    <bpmn:startEvent id="ticket-created" name="Ticket created">
      <bpmn:outgoing>Flow_ticket-created_prioritise</bpmn:outgoing>
    </bpmn:startEvent>
    <bpmn:businessRuleTask id="prioritise" name="Set priority and queue">
      <bpmn:extensionElements>
        <zeebe:calledDecision decisionId="ticket-priority" resultVariable="routing"/>
      </bpmn:extensionElements>
      <bpmn:incoming>Flow_ticket-created_prioritise</bpmn:incoming>
      <bpmn:outgoing>Flow_prioritise_search-kb</bpmn:outgoing>
    </bpmn:businessRuleTask>
    <bpmn:serviceTask id="search-kb" name="Search knowledge base">
      <bpmn:extensionElements>
        <zeebe:taskDefinition type="kb-search"/>
        <zeebe:ioMapping>
          <zeebe:output source="=match" target="kbMatch"/>
          <zeebe:output source="=articleUrl" target="kbArticle"/>
        </zeebe:ioMapping>
      </bpmn:extensionElements>
      <bpmn:incoming>Flow_prioritise_search-kb</bpmn:incoming>
      <bpmn:outgoing>Flow_search-kb_known-fix</bpmn:outgoing>
    </bpmn:serviceTask>
    <bpmn:exclusiveGateway id="known-fix" name="Known fix?" default="Flow_known-fix_resolve-l1">
      <bpmn:incoming>Flow_search-kb_known-fix</bpmn:incoming>
      <bpmn:outgoing>Flow_known-fix_send-article</bpmn:outgoing>
      <bpmn:outgoing>Flow_known-fix_resolve-l1</bpmn:outgoing>
    </bpmn:exclusiveGateway>
    <bpmn:serviceTask id="send-article" name="Send self-service answer">
      <bpmn:extensionElements>
        <zeebe:taskDefinition type="email-send"/>
        <zeebe:taskHeaders>
          <zeebe:header key="template" value="kb-answer"/>
        </zeebe:taskHeaders>
      </bpmn:extensionElements>
      <bpmn:incoming>Flow_known-fix_send-article</bpmn:incoming>
      <bpmn:outgoing>Flow_send-article_resolved-self-service</bpmn:outgoing>
    </bpmn:serviceTask>
    <bpmn:endEvent id="resolved-self-service" name="Resolved by self-service">
      <bpmn:incoming>Flow_send-article_resolved-self-service</bpmn:incoming>
    </bpmn:endEvent>
    <bpmn:userTask id="resolve-l1" name="Resolve ticket">
      <bpmn:extensionElements>
        <zeebe:userTask/>
        <zeebe:assignmentDefinition candidateGroups="=routing.queue"/>
      </bpmn:extensionElements>
      <bpmn:incoming>Flow_known-fix_resolve-l1</bpmn:incoming>
      <bpmn:outgoing>Flow_resolve-l1_close-merge</bpmn:outgoing>
    </bpmn:userTask>
    <bpmn:boundaryEvent id="sla-breached" name="SLA breached (4h)" attachedToRef="resolve-l1">
      <bpmn:outgoing>Flow_sla-breached_resolve-l2</bpmn:outgoing>
      <bpmn:timerEventDefinition>
        <bpmn:timeDuration>PT4H</bpmn:timeDuration>
      </bpmn:timerEventDefinition>
    </bpmn:boundaryEvent>
    <bpmn:userTask id="resolve-l2" name="Resolve at second line">
      <bpmn:extensionElements>
        <zeebe:userTask/>
        <zeebe:assignmentDefinition candidateGroups="support-l2"/>
        <zeebe:priorityDefinition priority="90"/>
      </bpmn:extensionElements>
      <bpmn:incoming>Flow_sla-breached_resolve-l2</bpmn:incoming>
      <bpmn:outgoing>Flow_resolve-l2_close-merge</bpmn:outgoing>
    </bpmn:userTask>
    <bpmn:exclusiveGateway id="close-merge">
      <bpmn:incoming>Flow_resolve-l1_close-merge</bpmn:incoming>
      <bpmn:incoming>Flow_resolve-l2_close-merge</bpmn:incoming>
      <bpmn:outgoing>Flow_close-merge_close-ticket</bpmn:outgoing>
    </bpmn:exclusiveGateway>
    <bpmn:serviceTask id="close-ticket" name="Close ticket">
      <bpmn:extensionElements>
        <zeebe:taskDefinition type="helpdesk-ticket-close"/>
      </bpmn:extensionElements>
      <bpmn:incoming>Flow_close-merge_close-ticket</bpmn:incoming>
      <bpmn:outgoing>Flow_close-ticket_ticket-closed</bpmn:outgoing>
    </bpmn:serviceTask>
    <bpmn:endEvent id="ticket-closed" name="Ticket closed">
      <bpmn:incoming>Flow_close-ticket_ticket-closed</bpmn:incoming>
    </bpmn:endEvent>
    <bpmn:sequenceFlow id="Flow_ticket-created_prioritise" sourceRef="ticket-created" targetRef="prioritise"/>
    <bpmn:sequenceFlow id="Flow_prioritise_search-kb" sourceRef="prioritise" targetRef="search-kb"/>
    <bpmn:sequenceFlow id="Flow_search-kb_known-fix" sourceRef="search-kb" targetRef="known-fix"/>
    <bpmn:sequenceFlow id="Flow_known-fix_send-article" sourceRef="known-fix" targetRef="send-article" name="self-service">
      <bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">=kbMatch and routing.priority != "P1"</bpmn:conditionExpression>
    </bpmn:sequenceFlow>
    <bpmn:sequenceFlow id="Flow_send-article_resolved-self-service" sourceRef="send-article" targetRef="resolved-self-service"/>
    <bpmn:sequenceFlow id="Flow_known-fix_resolve-l1" sourceRef="known-fix" targetRef="resolve-l1" name="agent"/>
    <bpmn:sequenceFlow id="Flow_resolve-l1_close-merge" sourceRef="resolve-l1" targetRef="close-merge"/>
    <bpmn:sequenceFlow id="Flow_sla-breached_resolve-l2" sourceRef="sla-breached" targetRef="resolve-l2"/>
    <bpmn:sequenceFlow id="Flow_resolve-l2_close-merge" sourceRef="resolve-l2" targetRef="close-merge"/>
    <bpmn:sequenceFlow id="Flow_close-merge_close-ticket" sourceRef="close-merge" targetRef="close-ticket"/>
    <bpmn:sequenceFlow id="Flow_close-ticket_ticket-closed" sourceRef="close-ticket" targetRef="ticket-closed"/>
  </bpmn:process>
  <bpmndi:BPMNDiagram id="support-ticket-sla_di">
    <bpmndi:BPMNPlane id="support-ticket-sla_di_plane" bpmnElement="support-ticket-sla">
      <bpmndi:BPMNShape id="ticket-created_di" bpmnElement="ticket-created">
        <dc:Bounds x="51" y="42" width="36" height="36"/>
        <bpmndi:BPMNLabel>
          <dc:Bounds x="20" y="82" width="98" height="14"/>
        </bpmndi:BPMNLabel>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="prioritise_di" bpmnElement="prioritise">
        <dc:Bounds x="187" y="20" width="100" height="80"/>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="search-kb_di" bpmnElement="search-kb">
        <dc:Bounds x="387" y="20" width="100" height="80"/>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="known-fix_di" bpmnElement="known-fix">
        <dc:Bounds x="587" y="35" width="50" height="50"/>
        <bpmndi:BPMNLabel>
          <dc:Bounds x="577" y="89" width="70" height="14"/>
        </bpmndi:BPMNLabel>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="send-article_di" bpmnElement="send-article">
        <dc:Bounds x="737" y="340" width="100" height="80"/>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="resolved-self-service_di" bpmnElement="resolved-self-service">
        <dc:Bounds x="969" y="362" width="36" height="36"/>
        <bpmndi:BPMNLabel>
          <dc:Bounds x="903" y="402" width="168" height="14"/>
        </bpmndi:BPMNLabel>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="resolve-l1_di" bpmnElement="resolve-l1">
        <dc:Bounds x="737" y="20" width="100" height="80"/>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="sla-breached_di" bpmnElement="sla-breached">
        <dc:Bounds x="769" y="82" width="36" height="36"/>
        <bpmndi:BPMNLabel>
          <dc:Bounds x="728" y="122" width="119" height="14"/>
        </bpmndi:BPMNLabel>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="resolve-l2_di" bpmnElement="resolve-l2">
        <dc:Bounds x="937" y="180" width="100" height="80"/>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="close-merge_di" bpmnElement="close-merge">
        <dc:Bounds x="1137" y="35" width="50" height="50"/>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="close-ticket_di" bpmnElement="close-ticket">
        <dc:Bounds x="1287" y="20" width="100" height="80"/>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="ticket-closed_di" bpmnElement="ticket-closed">
        <dc:Bounds x="1487" y="42" width="36" height="36"/>
        <bpmndi:BPMNLabel>
          <dc:Bounds x="1460" y="82" width="91" height="14"/>
        </bpmndi:BPMNLabel>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNEdge id="Flow_ticket-created_prioritise_di" bpmnElement="Flow_ticket-created_prioritise">
        <di:waypoint x="87" y="60"/>
        <di:waypoint x="187" y="60"/>
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge id="Flow_prioritise_search-kb_di" bpmnElement="Flow_prioritise_search-kb">
        <di:waypoint x="287" y="60"/>
        <di:waypoint x="387" y="60"/>
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge id="Flow_search-kb_known-fix_di" bpmnElement="Flow_search-kb_known-fix">
        <di:waypoint x="487" y="60"/>
        <di:waypoint x="587" y="60"/>
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge id="Flow_known-fix_send-article_di" bpmnElement="Flow_known-fix_send-article">
        <di:waypoint x="612" y="85"/>
        <di:waypoint x="612" y="380"/>
        <di:waypoint x="737" y="380"/>
        <bpmndi:BPMNLabel>
          <dc:Bounds x="588" y="226" width="84" height="14"/>
        </bpmndi:BPMNLabel>
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge id="Flow_send-article_resolved-self-service_di" bpmnElement="Flow_send-article_resolved-self-service">
        <di:waypoint x="837" y="380"/>
        <di:waypoint x="969" y="380"/>
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge id="Flow_known-fix_resolve-l1_di" bpmnElement="Flow_known-fix_resolve-l1">
        <di:waypoint x="637" y="60"/>
        <di:waypoint x="737" y="60"/>
        <bpmndi:BPMNLabel>
          <dc:Bounds x="667" y="36" width="40" height="14"/>
        </bpmndi:BPMNLabel>
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge id="Flow_resolve-l1_close-merge_di" bpmnElement="Flow_resolve-l1_close-merge">
        <di:waypoint x="837" y="60"/>
        <di:waypoint x="1137" y="60"/>
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge id="Flow_sla-breached_resolve-l2_di" bpmnElement="Flow_sla-breached_resolve-l2">
        <di:waypoint x="787" y="118"/>
        <di:waypoint x="787" y="220"/>
        <di:waypoint x="937" y="220"/>
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge id="Flow_resolve-l2_close-merge_di" bpmnElement="Flow_resolve-l2_close-merge">
        <di:waypoint x="987" y="180"/>
        <di:waypoint x="987" y="133"/>
        <di:waypoint x="1162" y="133"/>
        <di:waypoint x="1162" y="85"/>
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge id="Flow_close-merge_close-ticket_di" bpmnElement="Flow_close-merge_close-ticket">
        <di:waypoint x="1187" y="60"/>
        <di:waypoint x="1287" y="60"/>
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge id="Flow_close-ticket_ticket-closed_di" bpmnElement="Flow_close-ticket_ticket-closed">
        <di:waypoint x="1387" y="60"/>
        <di:waypoint x="1487" y="60"/>
      </bpmndi:BPMNEdge>
    </bpmndi:BPMNPlane>
  </bpmndi:BPMNDiagram>
</bpmn:definitions>

