Process engine hangs at inclusive gateways

We have modelled a wizard as FlowableProcess, where each step of the wizard is modelled like humanTask. The user can go back and redo previous tasks. If he choses so we complete the abandoned tasks but set local variable in the abandoned execution so it can exit from the process.
All works as expected up until we complete the “enterAddressData” step where the process hangs at the gateways (see debugger screenshot).

We have no explanation for this behavior. Could please anyone share why a process is working up until a point and hangs at the gateways. Is there something that causes the gateway to wait something?

  @Test
  @Deployment(resources = {"processes/registration-process.bpmn20.xml"})
  void moveToMobileNumberVerificationTasks() {
    ProcessInstance processInstance =
        runtimeService.startProcessInstanceByKey("RegistrationProcess");
    assertFalse(super.isProcessMainProcessEnded(processInstance));
    // Get all open tasks. User can not bypass tasks.
    List<Task> allOpenTasks = getOpenTasks(processInstance.getProcessInstanceId());
    assertEquals(1, allOpenTasks.size());
    assertEquals(ENTER_LOGIN_DETAILS_USER_TASK, allOpenTasks.get(0).getTaskDefinitionKey());

    // Complete LOGIN_DETAILS_USER_TASK
    completeStep(processInstance.getProcessInstanceId(), allOpenTasks.get(0).getId());

    // New open tasks 3
    allOpenTasks = getOpenTasks(processInstance.getProcessInstanceId());
    assertEquals(3, allOpenTasks.size());
    assertEquals(ENTER_LOGIN_DETAILS_USER_TASK, allOpenTasks.get(0).getTaskDefinitionKey());
    assertEquals(VERIFY_EMAIL_USER_TASK, allOpenTasks.get(1).getTaskDefinitionKey());
    assertEquals(RESEND_VERIFICATION_MAIL_USER_TASK, allOpenTasks.get(2).getTaskDefinitionKey());

    // move forward - complete VERIFY_EMAIL_USER_TASK
    completeStep(processInstance.getProcessInstanceId(), allOpenTasks.get(1).getId());
    // There should be 2 open tasks
    allOpenTasks = getOpenTasks(processInstance.getProcessInstanceId());
    assertEquals(1, allOpenTasks.size());
    assertEquals(ENTER_PERSONAL_DETAILS_USER_TASK, allOpenTasks.get(0).getTaskDefinitionKey());
    //    assertEquals(LOGIN_DETAILS_USER_TASK, allOpenTasks.get(1).getTaskDefinitionKey());

    // move forward - complete PERSONAL_DETAILS_USER_TASK
    completeStep(processInstance.getProcessInstanceId(), allOpenTasks.get(0).getId());
    // There should be 2 open tasks
    allOpenTasks = getOpenTasks(processInstance.getProcessInstanceId());
    assertEquals(3, allOpenTasks.size());
    assertEquals(VERIFY_EMAIL_USER_TASK, allOpenTasks.get(0).getTaskDefinitionKey());
    assertEquals(ENTER_ADDRESS_DATA_USER_TASK, allOpenTasks.get(1).getTaskDefinitionKey());
    assertEquals(ENTER_PERSONAL_DETAILS_USER_TASK, allOpenTasks.get(2).getTaskDefinitionKey());

    // move forward - complete ADDRESS_DATA_USER_TASK <-- Hangs here
    completeStep(processInstance.getProcessInstanceId(), allOpenTasks.get(1).getId());
    // There should be 2 open tasks
    allOpenTasks = getOpenTasks(processInstance.getProcessInstanceId());
    assertEquals(2, allOpenTasks.size());
    assertEquals(ENTER_ADDRESS_DATA_USER_TASK, allOpenTasks.get(0).getTaskDefinitionKey());
    assertEquals(ENTER_MOBILE_NUMBER_USER_TASK, allOpenTasks.get(1).getTaskDefinitionKey());

    // move back - complete ADDRESS_DATA_USER_TASK
    completeStep(processInstance.getProcessInstanceId(), allOpenTasks.get(0).getId());
    // There should be 2 open tasks
    allOpenTasks = getOpenTasks(processInstance.getProcessInstanceId());
    assertEquals(2, allOpenTasks.size());
    assertEquals(ENTER_ADDRESS_DATA_USER_TASK, allOpenTasks.get(0).getTaskDefinitionKey());
    assertEquals(ENTER_MOBILE_NUMBER_USER_TASK, allOpenTasks.get(1).getTaskDefinitionKey());

    // Check business logic executed 3 times
    verify(sendVerificationMailTaskSpy, times(1)).executeTask(any(TestProcessContext.class));
  }
  private List<Task> getOpenTasks(final String processInstanceId) {
    return taskService.createTaskQuery().processInstanceId(processInstanceId).list();
  }

  private void completeStep(final String processInstanceId, final String taskId) {
    List<Task> openTasks = getOpenTasks(processInstanceId);
    openTasks.stream().filter(task -> !task.getId().equals(taskId))
        .forEach(task -> {
          String executionId = task.getExecutionId();
          System.out.println(
              "task: " + task.getTaskDefinitionKey() + ", id: " + task.getId() + ", executionId: " + executionId);
          runtimeService.setVariableLocal(executionId, "exitProcess", "true");
          taskService.complete(task.getId());
        });

    getOpenTasks(processInstanceId).forEach(task -> System.out.println(
        "Task: " + task.getTaskDefinitionKey() + ", id: " + task.getId() + ", executionId: " + task.getExecutionId()));
    taskService.complete(taskId);
  }


<?xml version="1.0" encoding="UTF-8"?>
<definitions xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:flowable="http://flowable.org/bpmn" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:omgdc="http://www.omg.org/spec/DD/20100524/DC" xmlns:omgdi="http://www.omg.org/spec/DD/20100524/DI" typeLanguage="http://www.w3.org/2001/XMLSchema" expressionLanguage="http://www.w3.org/1999/XPath" targetNamespace="http://www.flowable.org/processdef">
  <process id="RegistrationProcess" name="RegistrationProcess" isExecutable="true">
    <startEvent id="startEvent" name="Start Event"/>
    <endEvent id="endEvent"/>
    <sequenceFlow id="startEvent_flow" sourceRef="startEvent" targetRef="loginDetails"/>
    <userTask id="loginDetails" name="Enter Login Details"/>
    <sequenceFlow id="loginDetails_flow" sourceRef="loginDetails" targetRef="loginDetails_gw"/>
    <inclusiveGateway id="loginDetails_gw" default="loginDetails_gw_default_flow"/>
    <sequenceFlow id="loginDetails_gw_default_flow" sourceRef="loginDetails_gw" targetRef="endEvent" name="exit"/>
    <sequenceFlow id="loginDetails_gw_back" sourceRef="loginDetails_gw" targetRef="loginDetails" name="back">
      <conditionExpression xsi:type="tFormalExpression">${!variables:exists(exitProcess)}</conditionExpression>
    </sequenceFlow>
    <sequenceFlow id="loginDetails_gw_sendMail" sourceRef="loginDetails_gw" targetRef="sendVerificationMail" name="send mail">
      <conditionExpression xsi:type="tFormalExpression">${!variables:exists(exitProcess)}</conditionExpression>
    </sequenceFlow>
    <serviceTask id="sendVerificationMail" flowable:exclusive="true" name="Send Verification Mail" flowable:delegateExpression="${sendVerificationMailTask}"/>
    <sequenceFlow id="sendVerificationMail_flow" sourceRef="sendVerificationMail" targetRef="resendVerificationMail"/>
    <userTask id="resendVerificationMail" name="Resend Verification Mail"/>
    <sequenceFlow id="resendVerificationMail_flow" sourceRef="resendVerificationMail" targetRef="loginDetails_gw"/>
    <sequenceFlow id="loginDetails_gw_continue" sourceRef="loginDetails_gw" targetRef="verifyEmailAddress" name="continue">
      <conditionExpression xsi:type="tFormalExpression">${!variables:exists(exitProcess)}</conditionExpression>
    </sequenceFlow>
    <userTask id="verifyEmailAddress" name="Verify Email Address"/>
    <sequenceFlow id="verifyEmailAddress_flow" sourceRef="verifyEmailAddress" targetRef="verifyEmail_gw">
      <conditionExpression xsi:type="tFormalExpression"/>
    </sequenceFlow>
    <inclusiveGateway id="verifyEmail_gw" default="verifyEmail_gw_default_flow"/>
    <sequenceFlow id="verifyEmail_gw_default_flow" sourceRef="verifyEmail_gw" targetRef="endEvent" name="exit"/>
    <sequenceFlow id="verifyEmail_gw_continue" sourceRef="verifyEmail_gw" targetRef="personalDetails" name="continue">
      <conditionExpression xsi:type="tFormalExpression">${!variables:exists(exitProcess)}</conditionExpression>
    </sequenceFlow>
    <userTask id="personalDetails" name="Enter Personal Details"/>
    <sequenceFlow id="personalDetails_flow" sourceRef="personalDetails" targetRef="personalDetails_gw">
      <conditionExpression xsi:type="tFormalExpression"/>
    </sequenceFlow>
    <inclusiveGateway id="personalDetails_gw" default="personalDetails_gw_default_flow"/>
    <sequenceFlow id="personalDetails_gw_default_flow" sourceRef="personalDetails_gw" targetRef="endEvent" name="exit"/>
    <sequenceFlow id="personalDetails_gw_back" sourceRef="personalDetails_gw" targetRef="verifyEmailAddress" name="back">
      <conditionExpression xsi:type="tFormalExpression">${!variables:exists(exitProcess)}</conditionExpression>
    </sequenceFlow>
    <sequenceFlow id="personalDetails_gw_continue" sourceRef="personalDetails_gw" targetRef="addressData" name="continue">
      <conditionExpression xsi:type="tFormalExpression">${!variables:exists(exitProcess)}</conditionExpression>
    </sequenceFlow>
    <userTask id="addressData" name="Enter Address Data"/>
    <sequenceFlow id="addressData_flow" sourceRef="addressData" targetRef="addressData_gw">
      <conditionExpression xsi:type="tFormalExpression"/>
    </sequenceFlow>
    <inclusiveGateway id="addressData_gw" default="addressData_gw_default_flow"/>
    <sequenceFlow id="addressData_gw_default_flow" sourceRef="addressData_gw" targetRef="endEvent" name="exit"/>
    <sequenceFlow id="addressData_gw_back" sourceRef="addressData_gw" targetRef="addressData" name="back">
      <conditionExpression xsi:type="tFormalExpression">${!variables:exists(exitProcess)}</conditionExpression>
    </sequenceFlow>
    <sequenceFlow id="addressData_gw_continue" sourceRef="addressData_gw" targetRef="mobileNumber" name="continue">
      <conditionExpression xsi:type="tFormalExpression">${!variables:exists(exitProcess)}</conditionExpression>
    </sequenceFlow>
    <userTask id="mobileNumber" name="Enter Mobile Number"/>
    <sequenceFlow id="mobileNumber_flow" sourceRef="mobileNumber" targetRef="mobileNumer_gw"/>
    <inclusiveGateway id="mobileNumer_gw" default="mobileNumer_gw_default_flow"/>
    <sequenceFlow id="mobileNumer_gw_default_flow" sourceRef="mobileNumer_gw" targetRef="endEvent" name="exit"/>
    <sequenceFlow id="mobileNumer_gw_back" sourceRef="mobileNumer_gw" targetRef="mobileNumber" name="back">
      <conditionExpression xsi:type="tFormalExpression">${!variables:exists(exitProcess)}</conditionExpression>
    </sequenceFlow>
    <sequenceFlow id="mobileNumer_gw_sendSms" sourceRef="mobileNumer_gw" targetRef="sendVerificationSms" name="send SMS">
      <conditionExpression xsi:type="tFormalExpression">${!variables:exists(exitProcess)}</conditionExpression>
    </sequenceFlow>
    <serviceTask id="sendVerificationSms" flowable:exclusive="true" name="Send Verification SMS" flowable:delegateExpression="${sendVerificationSmsTask}"/>
    <sequenceFlow id="sendVerificationSms_flow" sourceRef="sendVerificationSms" targetRef="resendVerificationSms"/>
    <userTask id="resendVerificationSms" name="Resend Verification SMS"/>
    <sequenceFlow id="resendVerificationSms_flow" sourceRef="resendVerificationSms" targetRef="mobileNumer_gw"/>
    <sequenceFlow id="mobileNumer_gw_continue" sourceRef="mobileNumer_gw" targetRef="verifyMobileNumber" name="continue">
      <conditionExpression xsi:type="tFormalExpression">${!variables:exists(exitProcess)}</conditionExpression>
    </sequenceFlow>
    <userTask id="verifyMobileNumber" name="Verify Mobile Number"/>
    <sequenceFlow id="verifyMobileNumber_flow" sourceRef="verifyMobileNumber" targetRef="createCustomer_gw"/>
    <exclusiveGateway id="createCustomer_gw" default="createCustomer_gw_default_flow"/>
    <sequenceFlow id="createCustomer_gw_default_flow" sourceRef="createCustomer_gw" targetRef="endEvent" name="exit"/>
    <sequenceFlow id="createCustomer_gw_continue" sourceRef="createCustomer_gw" targetRef="createCustomer" name="continue">
      <conditionExpression xsi:type="tFormalExpression">${!variables:exists(exitProcess)}</conditionExpression>
    </sequenceFlow>
    <serviceTask id="createCustomer" flowable:exclusive="true" name="Create Customer" flowable:delegateExpression="${createCustomerTask}"/>
    <sequenceFlow id="createCustomer_flow" sourceRef="createCustomer" targetRef="endEvent"/>
    <sequenceFlow id="sid-e0ed9ee5-3314-4600-9100-a8f155958b2e" sourceRef="personalDetails_gw" targetRef="personalDetails">
      <conditionExpression xsi:type="tFormalExpression">${!variables:exists(exitProcess)}</conditionExpression>
    </sequenceFlow>
  </process>
  <bpmndi:BPMNDiagram id="BPMNDiagram_EmptyProcess.bpmn20">
    <bpmndi:BPMNPlane bpmnElement="RegistrationProcess" id="BPMNPlane_RegistrationProcess.bpmn20">
      <bpmndi:BPMNShape id="shape-e85115b7-ca85-46f6-878b-5cc96447d9fb" bpmnElement="startEvent">
        <omgdc:Bounds x="-710.0" y="-25.0" width="30.0" height="30.0"/>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="shape-4521691c-6383-40b9-990e-fdfa8541359b" bpmnElement="endEvent">
        <omgdc:Bounds x="860.0" y="-25.0" width="30.0" height="30.0"/>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNEdge id="edge-d51fbcdb-d295-4e55-8395-39917500eae4" bpmnElement="startEvent_flow">
        <omgdi:waypoint x="-680.0" y="-10.0"/>
        <omgdi:waypoint x="-630.0" y="-9.999998"/>
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge id="edge-967e33a1-b7a7-400e-a5f6-9c5f6821271d" bpmnElement="personalDetails_flow">
        <omgdi:waypoint x="-98.50001" y="-10.0"/>
        <omgdi:waypoint x="-55.0" y="-10.0"/>
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNShape id="shape-d66c7ccd-0814-4c0a-9257-59626d829ad3" bpmnElement="verifyEmailAddress">
        <omgdc:Bounds x="-425.0" y="-29.338707" width="105.0" height="40.0"/>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="sid-00aea978-7eee-4ec9-950d-0b1cdc7ad72b" bpmnElement="personalDetails">
        <omgdc:Bounds x="-213.5" y="-30.0" width="114.99999" height="40.0"/>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNEdge id="edge-7152b1a8-4e4b-4b1e-89ef-e164121b0358" bpmnElement="verifyEmailAddress_flow">
        <omgdi:waypoint x="-320.0" y="-9.338707"/>
        <omgdi:waypoint x="-295.66132" y="-9.338707"/>
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge id="edge-c00c118c-f338-4988-b336-116c4494db07" bpmnElement="verifyEmail_gw_continue">
        <omgdi:waypoint x="-255.66133" y="-9.338707"/>
        <omgdi:waypoint x="-234.58066" y="-10.0"/>
        <omgdi:waypoint x="-213.5" y="-10.0"/>
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNShape id="shape-79efde77-d3cf-4f91-adc6-2b5b9247b0d8" bpmnElement="verifyEmail_gw">
        <omgdc:Bounds x="-295.66132" y="-29.338707" width="40.0" height="40.0"/>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNEdge id="edge-cab1ad6f-8013-47cf-9ce5-25f1b2014d16" bpmnElement="verifyEmail_gw_default_flow">
        <omgdi:waypoint x="-275.66132" y="10.661293"/>
        <omgdi:waypoint x="-275.66132" y="73.749985"/>
        <omgdi:waypoint x="875.0" y="73.749985"/>
        <omgdi:waypoint x="875.0" y="5.0"/>
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNShape id="shape-c289d91d-e759-42ea-8a8c-ac233a6c1639" bpmnElement="createCustomer_gw">
        <omgdc:Bounds x="655.0" y="-30.0" width="40.0" height="40.0"/>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="shape-91d99172-c595-4e39-93f1-0d743ca127b3" bpmnElement="createCustomer">
        <omgdc:Bounds x="730.0" y="-32.5" width="90.0" height="45.0"/>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNEdge id="edge-145308c8-b036-47ce-af63-4310d9f8758c" bpmnElement="createCustomer_gw_default_flow">
        <omgdi:waypoint x="675.0" y="10.0"/>
        <omgdi:waypoint x="674.99994" y="28.749998"/>
        <omgdi:waypoint x="875.0" y="28.75"/>
        <omgdi:waypoint x="875.0" y="5.0"/>
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge id="edge-c8580f33-af00-4474-a2b2-d713e2d3a222" bpmnElement="createCustomer_gw_continue">
        <omgdi:waypoint x="695.0" y="-10.0"/>
        <omgdi:waypoint x="730.0" y="-10.0"/>
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge id="edge-b7dc03ab-4408-4b3a-96d8-b348e4893498" bpmnElement="createCustomer_flow">
        <omgdi:waypoint x="820.0" y="-10.0"/>
        <omgdi:waypoint x="860.0" y="-10.0"/>
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNShape id="shape-608d0c0a-4608-43ce-86f2-0678e089d7ce" bpmnElement="resendVerificationMail">
        <omgdc:Bounds x="-381.0" y="-170.00005" width="130.0" height="40.0"/>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNEdge id="edge-fdd70998-ba25-4414-b21b-c8085579d62f" bpmnElement="loginDetails_gw_sendMail">
        <omgdi:waypoint x="-480.0" y="-29.999998"/>
        <omgdi:waypoint x="-480.0" y="-130.00003"/>
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge id="edge-c02616f3-7076-401b-b8d4-d633c2acf37b" bpmnElement="resendVerificationMail_flow">
        <omgdi:waypoint x="-316.0" y="-130.00005"/>
        <omgdi:waypoint x="-316.0" y="-70.0"/>
        <omgdi:waypoint x="-451.25" y="-70.0"/>
        <omgdi:waypoint x="-479.99997" y="-29.999998"/>
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNShape id="shape-5ac7101d-2cc0-4f84-860f-85780f58d7a3" bpmnElement="sendVerificationMail">
        <omgdc:Bounds x="-537.5" y="-170.00003" width="115.0" height="40.0"/>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNEdge id="edge-680bf412-340b-4679-b354-07855e93800e" bpmnElement="sendVerificationMail_flow">
        <omgdi:waypoint x="-422.5" y="-150.00003"/>
        <omgdi:waypoint x="-381.0" y="-150.00005"/>
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNShape id="shape-58f3a284-9526-4cc5-ba19-45f73a6f4874" bpmnElement="loginDetails">
        <omgdc:Bounds x="-630.0" y="-30.0" width="100.0" height="40.000004"/>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNEdge id="edge-460c1427-ff62-4ea3-beda-0e524bcabd60" bpmnElement="loginDetails_flow">
        <omgdi:waypoint x="-530.0" y="-9.999998"/>
        <omgdi:waypoint x="-500.00003" y="-9.999998"/>
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNShape id="shape-4b65cd89-1f73-439a-97ba-009e562b1030" bpmnElement="addressData">
        <omgdc:Bounds x="35.0" y="-32.5" width="100.0" height="45.0"/>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="shape-72af6717-45b2-4632-aa7d-56d6f10b5a4c" bpmnElement="mobileNumber">
        <omgdc:Bounds x="260.0" y="-35.0" width="105.0" height="50.0"/>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="shape-4d75e5e5-3b1f-4fec-9ddf-26ea51a96c3e" bpmnElement="verifyMobileNumber">
        <omgdc:Bounds x="495.0" y="-35.0" width="120.0" height="50.0"/>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNEdge id="edge-4ce2e5a1-50c6-4622-be70-17a4bd4fa241" bpmnElement="addressData_flow">
        <omgdi:waypoint x="135.0" y="-10.0"/>
        <omgdi:waypoint x="180.0" y="-10.000001"/>
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge id="edge-0dc78866-febc-4827-ba47-e276b538fc29" bpmnElement="mobileNumber_flow">
        <omgdi:waypoint x="365.0" y="-10.0"/>
        <omgdi:waypoint x="410.00003" y="-10.0"/>
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge id="edge-6414f278-9ec4-4171-803e-16f587711549" bpmnElement="verifyMobileNumber_flow">
        <omgdi:waypoint x="615.0" y="-10.0"/>
        <omgdi:waypoint x="655.0" y="-10.0"/>
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNShape id="shape-d33e2797-45bf-482a-9d97-56bc3c7ac85b" bpmnElement="mobileNumer_gw">
        <omgdc:Bounds x="410.0" y="-30.0" width="40.0" height="40.0"/>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNEdge id="edge-f1995142-0803-44b1-9f3d-54a7e6bf55a2" bpmnElement="mobileNumer_gw_continue">
        <omgdi:waypoint x="450.0" y="-10.0"/>
        <omgdi:waypoint x="495.0" y="-10.0"/>
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge id="edge-48e684c7-6b14-486b-bda4-5ae3f8d73d3a" bpmnElement="mobileNumer_gw_default_flow">
        <omgdi:waypoint x="430.0" y="10.0"/>
        <omgdi:waypoint x="430.0" y="37.500004"/>
        <omgdi:waypoint x="875.0" y="37.500004"/>
        <omgdi:waypoint x="874.99994" y="5.0"/>
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNShape id="shape-a468aa94-6a22-48f1-bca5-c70b5d2ef217" bpmnElement="resendVerificationSms">
        <omgdc:Bounds x="515.0" y="-172.50003" width="120.00003" height="45.0"/>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="shape-93cd12aa-2f21-4e30-95f2-952b59e22626" bpmnElement="sendVerificationSms">
        <omgdc:Bounds x="370.0" y="-170.00002" width="120.0" height="40.0"/>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNEdge id="edge-a9a61d8a-602f-4a14-acdd-4f76be68a8f2" bpmnElement="mobileNumer_gw_sendSms">
        <omgdi:waypoint x="430.0" y="-30.0"/>
        <omgdi:waypoint x="430.00006" y="-80.0"/>
        <omgdi:waypoint x="430.0" y="-130.00002"/>
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge id="edge-53578584-8294-4409-ab30-f67e6dfee400" bpmnElement="sendVerificationSms_flow">
        <omgdi:waypoint x="490.0" y="-150.00002"/>
        <omgdi:waypoint x="515.0" y="-150.00003"/>
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge id="edge-ebfb5ac2-3983-4d34-b9f0-0d8ad08f4273" bpmnElement="resendVerificationSms_flow">
        <omgdi:waypoint x="575.0" y="-127.50003"/>
        <omgdi:waypoint x="575.0" y="-70.0"/>
        <omgdi:waypoint x="450.0" y="-70.0"/>
        <omgdi:waypoint x="430.0" y="-30.0"/>
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge id="edge-d9564423-410a-4fa5-921a-e5ce07810464" bpmnElement="mobileNumer_gw_back">
        <omgdi:waypoint x="430.0" y="-30.0"/>
        <omgdi:waypoint x="430.00003" y="-60.0"/>
        <omgdi:waypoint x="312.50003" y="-60.0"/>
        <omgdi:waypoint x="312.50003" y="-35.0"/>
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNShape id="shape-78a9f9d1-d8ca-41cc-88ba-3f4872c0b470" bpmnElement="loginDetails_gw">
        <omgdc:Bounds x="-500.0" y="-29.999998" width="40.0" height="40.0"/>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNEdge id="edge-8fbc3564-225b-4622-8b1a-c017f1f19bcd" bpmnElement="loginDetails_gw_continue">
        <omgdi:waypoint x="-460.0" y="-9.999998"/>
        <omgdi:waypoint x="-425.0" y="-9.338707"/>
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge id="edge-3d825955-9951-4ad6-a9a3-098a1e400eca" bpmnElement="loginDetails_gw_back">
        <omgdi:waypoint x="-479.99997" y="-29.999996"/>
        <omgdi:waypoint x="-479.99997" y="-55.0"/>
        <omgdi:waypoint x="-580.0" y="-55.0"/>
        <omgdi:waypoint x="-579.99994" y="-30.0"/>
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge id="edge-486e9227-1c1e-4755-870d-ac23993c6765" bpmnElement="loginDetails_gw_default_flow">
        <omgdi:waypoint x="-480.0" y="10.000002"/>
        <omgdi:waypoint x="-480.0" y="82.5"/>
        <omgdi:waypoint x="875.0" y="82.5"/>
        <omgdi:waypoint x="875.0" y="5.0"/>
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNShape id="shape-18ab997e-5991-4e17-a48b-26dec89752ef" bpmnElement="personalDetails_gw">
        <omgdc:Bounds x="-55.0" y="-30.0" width="40.0" height="40.0"/>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNEdge id="edge-fc463d81-968b-4089-8642-9c5fe33eb9f8" bpmnElement="personalDetails_gw_continue">
        <omgdi:waypoint x="-15.0" y="-10.0"/>
        <omgdi:waypoint x="35.0" y="-10.0"/>
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge id="edge-b2dd8588-3f56-4cc9-967c-7f94ef891dd5" bpmnElement="personalDetails_gw_default_flow">
        <omgdi:waypoint x="-35.0" y="10.0"/>
        <omgdi:waypoint x="-35.0" y="61.25"/>
        <omgdi:waypoint x="875.0" y="61.25"/>
        <omgdi:waypoint x="874.9999" y="5.0"/>
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge id="edge-e0e536f1-2cb0-4c27-9d26-eb110b97f32a" bpmnElement="personalDetails_gw_back">
        <omgdi:waypoint x="-35.0" y="-30.0"/>
        <omgdi:waypoint x="-35.0" y="-55.0"/>
        <omgdi:waypoint x="-346.25" y="-55.0"/>
        <omgdi:waypoint x="-346.25" y="-29.338705"/>
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNShape id="shape-354afe82-b9ba-4b30-af8f-8cc12222712f" bpmnElement="addressData_gw">
        <omgdc:Bounds x="180.0" y="-30.0" width="40.0" height="40.0"/>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNEdge id="edge-286d3998-7b42-462a-bcbf-3869642b59b0" bpmnElement="addressData_gw_continue">
        <omgdi:waypoint x="220.00002" y="-10.0"/>
        <omgdi:waypoint x="260.0" y="-10.0"/>
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge id="edge-17a2c217-4290-46ac-a40c-72d4944e7141" bpmnElement="addressData_gw_back">
        <omgdi:waypoint x="200.0" y="-30.0"/>
        <omgdi:waypoint x="200.0" y="-54.999996"/>
        <omgdi:waypoint x="85.0" y="-54.999996"/>
        <omgdi:waypoint x="85.0" y="-32.500004"/>
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge id="edge-89f0d57f-948d-4183-a17e-8bd3472ef468" bpmnElement="addressData_gw_default_flow">
        <omgdi:waypoint x="200.0" y="10.0"/>
        <omgdi:waypoint x="200.0" y="48.75"/>
        <omgdi:waypoint x="875.0" y="48.75"/>
        <omgdi:waypoint x="875.00006" y="4.9999995"/>
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge id="edge-ed9414b7-9e7a-434e-827f-1d993e8849a4" bpmnElement="sid-e0ed9ee5-3314-4600-9100-a8f155958b2e">
        <omgdi:waypoint x="-35.000004" y="-30.0"/>
        <omgdi:waypoint x="-35.0" y="-90.0"/>
        <omgdi:waypoint x="-156.0" y="-90.0"/>
        <omgdi:waypoint x="-156.0" y="-30.000002"/>
      </bpmndi:BPMNEdge>
    </bpmndi:BPMNPlane>
  </bpmndi:BPMNDiagram>
</definitions>

An inclusive gateway will wait until 'there is no path anymore to the inclusive gateway that can reach it, disregarding conditions on sequence flow). Which is, I assume, what is happening here. Is there a reason why you’re using an inclusive gateway. From the screenshot you shared, it looks like most can be replaced by a simple exclusive gateway?

Thanks for the clarification as this is not so easy to understand. Basically our use case is to model onboarding process, where in certain steps the user is allowed to go back and re-do previous steps.
So this solution came to mind where past tasks (screens) get reopened and we try to abandon (complete) the tasks that are deemed invalid (by setting local variable and exit condition).
This way when you complete Task 1 → next you got Task1 and Task2 open so you can complete either of them. Choosing to complete again Task1 would again reopen Task2 with the new context from Task1. Since we want to “abandon” the old Task2 we set local variable (exit) and complete it before Task1 and count on the GW to exit the abandoned execution’s.

Is there more elegant way to achieve this ?

I agree. However, it’s implemented like it’s described in the BPMN specification.

With the scenario you describe you indeed get quickly into a cobweb of sequenceflow going left and right from sequence flow. Sadly, not much to be done about it.
These kind of use cases are easier expressed in CMMN typically, where tasks can have guards (=sentries) based on variables that can activate or complete automatically.