protected boolean validateFormLogic(UserRequest ureq) {
    // validate event dates
    for (Project.EventType eventType : eventStartElementList.keySet()) {
      Date startDate = eventStartElementList.get(eventType).getDate();
      Date endDate = eventEndElementList.get(eventType).getDate();
      getLogger().debug("validate startDate=" + startDate + " enddate=" + endDate);
      if ((startDate != null) && (endDate != null) && startDate.after(endDate)) {
        eventStartElementList.get(eventType).setErrorKey("from.error.date.start.after.end", null);
        return false;
      }
    }
    if (!project.getTitle().equals(projectTitle.getValue())
        && ProjectBrokerManagerFactory.getProjectBrokerManager()
            .existProjectName(project.getProjectBroker().getKey(), projectTitle.getValue())) {
      projectTitle.setErrorKey("form.error.project.title.already.exist", null);
      return false;
    }
    if (projectTitle.getValue().trim().isEmpty()) {
      projectTitle.setErrorKey("form.error.project.title.is.empty", null);
      return false;
    }

    // http://jira.openolat.org/browse/OO-131  check for too long filename
    if (attachmentFileName.getUploadFileName() != null
        && attachmentFileName.getUploadFileName().length() > 99) {
      attachmentFileName.setErrorKey("form.error.project.filenametoolong", null);
      return false;
    }
    return true;
  }