private static String saveProjectToFile(String projectId) { final String serverURL = "localhost"; final int serverPort = 8080; final String serverCertificate = "emfstoreserver"; String fileName = ""; try { ESServer remoteServer = ESServer.FACTORY.createServer(serverURL, serverPort, serverCertificate); ESWorkspace workspace = ESWorkspaceProvider.INSTANCE.getWorkspace(); workspace.addServer(remoteServer); for(ESServer existingServer: workspace.getServers()) { if(existingServer != remoteServer) { try { workspace.removeServer(existingServer); } catch (ESServerNotFoundException e) { e.printStackTrace(); } } } ESUsersession usersession = remoteServer.login("super", "super"); List remoteBuildProjects = remoteServer.getRemoteProjects(); for(ESRemoteProject singleProject: remoteBuildProjects) { if(singleProject.getGlobalProjectId().getId().equals(projectId)) { final String projectName = singleProject.getProjectName(); ESLocalProject localProject = singleProject.checkout(projectName, usersession, null); fileName = "C:/" + projectName + ".xmi"; ResourceSet rs = new ResourceSetImpl(); XMIResourceImpl xmiResourceImpl = new XMIResourceImpl(); xmiResourceImpl.getDefaultSaveOptions().put(XMIResource.OPTION_DEFER_IDREF_RESOLUTION, Boolean.TRUE); rs.getResourceFactoryRegistry().getExtensionToFactoryMap().put("xmi", new XMIResourceFactoryImpl()); URI fileURI = URI.createFileURI(fileName); Resource resource = rs.createResource(fileURI); EObject projectObject = (EObject) localProject; resource.getContents().add(projectObject); try { resource.save(null); } catch (IOException e) { e.printStackTrace(); } break; } } } catch (ESException e) { e.printStackTrace(); } return fileName; }