private String constructProjectsObjectsXmi() throws Exception {
    User user = AdminFactory.eINSTANCE.createUser();
    user.setLogin("*****@*****.**");

    List<EObject> objects = new ArrayList<EObject>();
    objects.add(user);
    final String BRANCHES = "branches";

    final String TRUNK = "trunk";
    List<Project> projectsList = new ArrayList<Project>();

    Project projectRef1 = AdminFactory.eINSTANCE.createProject();
    projectRef1.setId(1);
    projectRef1.setLabel("projectRef1 id=" + projectRef1.getId());
    projectRef1.setCreationDate(new Date());
    projectsList.add(projectRef1);

    Project projectRef2 = AdminFactory.eINSTANCE.createProject();
    projectRef2.setId(2);
    projectRef2.setLabel("projectRef2 id=" + projectRef2.getId());
    projectsList.add(projectRef2);

    Project projectRef3 = AdminFactory.eINSTANCE.createProject();
    projectRef3.setId(3);
    projectRef3.setLabel("projectRef3 id=" + projectRef3.getId());
    projectsList.add(projectRef3);

    Project project1 = AdminFactory.eINSTANCE.createProject();
    project1.setId(11);
    project1.setLabel("project1 id=" + project1.getId());
    projectsList.add(project1);

    Project project2 = AdminFactory.eINSTANCE.createProject();
    project2.setId(22);
    project2.setLabel("project2 id=" + project2.getId());
    projectsList.add(project2);

    Project project3 = AdminFactory.eINSTANCE.createProject();
    project3.setId(33);
    project3.setLabel("project3 id=" + project3.getId());
    projectsList.add(project3);

    for (Project project : projectsList) {
      project.setCreationDate(new Date());
      project.setAuthor(user);
    }

    List<ProjectReference> projectReferenceList = new ArrayList<ProjectReference>();

    ProjectReference ref1 = AdminFactory.eINSTANCE.createProjectReference();
    ref1.setProject(project1);
    ref1.setBranch(TRUNK);
    ref1.setReferencedProject(projectRef1);
    ref1.setReferencedBranch(BRANCHES + "/" + "myBranch1");
    projectReferenceList.add(ref1);

    ProjectReference ref2 = AdminFactory.eINSTANCE.createProjectReference();
    ref2.setProject(project1);
    ref2.setBranch(TRUNK);
    ref2.setReferencedProject(projectRef2);
    ref2.setReferencedBranch(BRANCHES + "/" + "myBranch2");
    projectReferenceList.add(ref2);

    ProjectReference ref3 = AdminFactory.eINSTANCE.createProjectReference();
    ref3.setProject(projectRef2);
    ref3.setBranch(BRANCHES + "/" + "myBranch2");
    ref3.setReferencedProject(projectRef3);
    ref3.setReferencedBranch(BRANCHES + "/" + "myBranch3");
    projectReferenceList.add(ref3);
    for (Project project : projectsList) {
      UserProjectAuthorization authorization =
          AdminFactory.eINSTANCE.createUserProjectAuthorization();
      authorization.setType(UserProjectAuthorizationType.READ_ONLY_LITERAL);
      authorization.setUser(user);
      authorization.setProject(project);
      objects.add(project);
      objects.add(authorization);
      objects.add(project.getAuthor());
      for (Iterator iterator = project.getReferencedProjects().iterator(); iterator.hasNext(); ) {
        ProjectReference projectReference = (ProjectReference) iterator.next();
        if (projectReference.getReferencedProject() != null) {
          objects.add(projectReference);
          // should not add this, will be duplicated.
          // objects.add(projectReference.getReferencedProject());
          objects.add(projectReference.getReferencedProject().getAuthor());
        }
      }
    }

    return generateObjectsEncodedXmi(objects);
  }