docs: @Override
    public ExecutionEntity createChildExecution(ExecutionEntity parentExecutionEntity) {
      ExecutionEntity childExecution = executionDataManager.create();
      inheritCommonProperties(parentExecutionEntity, childExecution);
      childExecution.setParent(parentExecutionEntity);
      childExecution.setProcessDefinitionId(parentExecutionEntity.getProcessDefinitionId());
      childExecution.setProcessDefinitionKey(parentExecutionEntity.getProcessDefinitionKey());
      childExecution.setProcessInstanceId(parentExecutionEntity.getProcessInstanceId() != null 
          ? parentExecutionEntity.getProcessInstanceId() : parentExecutionEntity.getId());
      childExecution.setParentProcessInstanceId(parentExecutionEntity.getParentProcessInstanceId());
      childExecution.setScope(false);
  
      // manage the bidirectional parent-child relation
      parentExecutionEntity.addChildExecution(childExecution);
      
      // Insert the child execution
      insert(childExecution, false);
  
      if (logger.isDebugEnabled()) {
        logger.debug("Child execution {} created with parent {}", childExecution, parentExecutionEntity.getId());
      }
  
      if (getEventDispatcher().isEnabled()) {
        getEventDispatcher().dispatchEvent(ActivitiEventBuilder.createEntityEvent(ActivitiEventType.ENTITY_CREATED, childExecution));
        getEventDispatcher().dispatchEvent(ActivitiEventBuilder.createEntityEvent(ActivitiEventType.ENTITY_INITIALIZED, childExecution));
      }
  
      return childExecution;
    }