@Override public Either<Project, ErrorCollection> updateProjectType(ApplicationUser user, Project project, ProjectTypeKey newProjectType) { I18nHelper i18nBean = getI18nBean(user); ErrorCollection errorCollection = new SimpleErrorCollection(); if (!checkActionPermission(user, project, ProjectAction.EDIT_PROJECT_CONFIG)) { errorCollection.addErrorMessage(i18nBean.getText("admin.errors.project.type.update.no.permission"), Reason.FORBIDDEN); } validateProjectType(user, newProjectType, errorCollection, i18nBean); if (errorCollection.hasAnyErrors()) { return Either.right(errorCollection); } return executeUnderClusterLock(getLockNameFor(project), () -> { Project updatedProject = projectManager.updateProjectType(user, project, newProjectType); return notifyProjectTypeUpdated(user, updatedProject, project.getProjectTypeKey(), newProjectType); }); }