code: public CmsProject createProject(
          CmsDbContext dbc,
          String name,
          String description,
          String groupname,
          String managergroupname,
          CmsProject.CmsProjectType projecttype)
      throws CmsIllegalArgumentException, CmsException {
  
          if (CmsProject.ONLINE_PROJECT_NAME.equals(name)) {
              throw new CmsIllegalArgumentException(
                  Messages.get().container(
                      Messages.ERR_CREATE_PROJECT_ONLINE_PROJECT_NAME_1,
                      CmsProject.ONLINE_PROJECT_NAME));
          }
          // check the name
          CmsProject.checkProjectName(CmsOrganizationalUnit.getSimpleName(name));
          // check the ou
          readOrganizationalUnit(dbc, CmsOrganizationalUnit.getParentFqn(name));
          // read the needed groups from the cms
          CmsGroup group = readGroup(dbc, groupname);
          CmsGroup managergroup = readGroup(dbc, managergroupname);
  
          return getProjectDriver(dbc).createProject(
              dbc,
              new CmsUUID(),
              dbc.currentUser(),
              group,
              managergroup,
              name,
              description,
              projecttype.getDefaultFlags(),
              projecttype);
      }
docs: Creates a project.<p>
  
  @param dbc the current database context
  @param name the name of the project to create
  @param description the description of the project
  @param groupname the project user group to be set
  @param managergroupname the project manager group to be set
  @param projecttype the type of the project
  
  @return the created project
  
  @throws CmsIllegalArgumentException if the chosen <code>name</code> is already used
  by the online project, or if the name is not valid
  @throws CmsException if something goes wrong