@Override
  @Transactional
  public OpenHubStackEntity process(OpenHubStackDTO dto) throws Exception {
    OpenHubStackEntity entity = super.process(dto);

    if (entity != null && entity.getStackEntries() != null) {
      Iterator<OpenHubStackEntryEntity> iterator = entity.getStackEntries().iterator();
      while (iterator.hasNext()) {
        OpenHubStackEntryEntity stackEntry = iterator.next();

        if (stackEntry.getProject() != null) {
          projectService.reloadTagsFromDatabase(stackEntry.getProject());
          projectService.reloadLicensesFromDatabase(stackEntry.getProject());
          projectService.reloadAnalysisFromDatabase(stackEntry.getProject());

          OpenHubProjectEntity project = projectService.save(stackEntry.getProject());

          if (project != null) {
            stackEntry.setProject(project);
            stackEntry.setProjectId(project.getId());

            stackEntry.setStack(entity);
            stackEntry.setStackId(entity.getId());
          } else {
            iterator.remove();
            logger.log(
                Level.SEVERE,
                String.format(
                    "stack entry %d project %d nao persistiu corretamente",
                    stackEntry.getId(), stackEntry.getProjectId()));
          }
        } else if (stackEntry.getProject() == null || stackEntry.getStack() == null) {
          iterator.remove();
          logger.log(
              Level.SEVERE,
              String.format(
                  "stack entry %d project %d nao persistiu corretamente",
                  stackEntry.getId(), stackEntry.getProjectId()));
        }
      }
    }

    getRepository().save(entity);
    return entity;
  }