@RvdAuth
 @PUT
 @Path("{name}/rename")
 public Response renameProject(
     @PathParam("name") String projectName,
     @QueryParam("newName") String projectNewName,
     @QueryParam("ticket") String ticket)
     throws StorageException, ProjectDoesNotExist {
   if (!RvdUtils.isEmpty(projectName) && !RvdUtils.isEmpty(projectNewName)) {
     assertProjectAvailable(projectName);
     try {
       ProjectApplicationsApi applicationsApi =
           new ProjectApplicationsApi(servletContext, workspaceStorage, marshaler);
       applicationsApi.renameApplication(ticket, projectName, projectNewName);
       projectService.renameProject(projectName, projectNewName);
       return Response.ok().build();
     } catch (ProjectDirectoryAlreadyExists e) {
       logger.error(e.getMessage(), e);
       return Response.status(Status.CONFLICT).build();
     } catch (StorageException e) {
       return Response.status(Status.INTERNAL_SERVER_ERROR).build();
     } catch (ApplicationAlreadyExists e) {
       return Response.status(Status.CONFLICT).build();
     } catch (ApplicationsApiSyncException e) {
       logger.error(e.getMessage(), e);
       return Response.status(Status.INTERNAL_SERVER_ERROR).build();
     }
   } else return Response.status(Status.BAD_REQUEST).build();
 }