diff --git a/bundles/org.eclipse.emf.emfstore.client/src/org/eclipse/emf/emfstore/internal/client/importexport/impl/ExportProjectSpaceController.java b/bundles/org.eclipse.emf.emfstore.client/src/org/eclipse/emf/emfstore/internal/client/importexport/impl/ExportProjectSpaceController.java
index ea8306f..05d506a 100644
--- a/bundles/org.eclipse.emf.emfstore.client/src/org/eclipse/emf/emfstore/internal/client/importexport/impl/ExportProjectSpaceController.java
+++ b/bundles/org.eclipse.emf.emfstore.client/src/org/eclipse/emf/emfstore/internal/client/importexport/impl/ExportProjectSpaceController.java
@@ -14,6 +14,7 @@
 import java.io.File;
 import java.io.IOException;
 
+import org.apache.commons.io.FilenameUtils;
 import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.emf.emfstore.internal.client.model.ProjectSpace;
 import org.eclipse.emf.emfstore.internal.client.model.util.ResourceHelper;
@@ -109,10 +110,15 @@
 		copiedProjectSpace.setUsersession(null);
 
 		final Project clonedProject = ModelUtil.clone(getProjectSpace().getProject());
-		copiedProjectSpace.setProject(clonedProject);
 
 		ResourceHelper.putElementIntoNewResourceWithProject(file.getAbsolutePath(), copiedProjectSpace,
 			copiedProjectSpace.getProject());
+
+		final String projectPath = FilenameUtils.removeExtension(file.getAbsolutePath())
+			+ ExportImportDataUnits.Project.getExtension();
+		final File projectFile = new File(projectPath);
+		projectFile.createNewFile();
+		ResourceHelper.putElementIntoNewResource(projectFile.getAbsolutePath(), clonedProject);
 	}
 
 	/**
diff --git a/bundles/org.eclipse.emf.emfstore.client/src/org/eclipse/emf/emfstore/internal/client/model/impl/WorkspaceBase.java b/bundles/org.eclipse.emf.emfstore.client/src/org/eclipse/emf/emfstore/internal/client/model/impl/WorkspaceBase.java
index db984c0..ead1b55 100644
--- a/bundles/org.eclipse.emf.emfstore.client/src/org/eclipse/emf/emfstore/internal/client/model/impl/WorkspaceBase.java
+++ b/bundles/org.eclipse.emf.emfstore.client/src/org/eclipse/emf/emfstore/internal/client/model/impl/WorkspaceBase.java
@@ -12,6 +12,8 @@
 package org.eclipse.emf.emfstore.internal.client.model.impl;
 
 import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.FilenameFilter;
 import java.io.IOException;
 import java.util.ArrayList;
 import java.util.LinkedHashMap;
@@ -20,11 +22,13 @@
 import java.util.Map;
 import java.util.Set;
 
+import org.apache.commons.io.FilenameUtils;
 import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.core.runtime.NullProgressMonitor;
 import org.eclipse.emf.ecore.impl.EObjectImpl;
 import org.eclipse.emf.ecore.resource.ResourceSet;
 import org.eclipse.emf.edit.domain.EditingDomain;
+import org.eclipse.emf.emfstore.internal.client.importexport.impl.ExportImportDataUnits;
 import org.eclipse.emf.emfstore.internal.client.importexport.impl.ExportProjectSpaceController;
 import org.eclipse.emf.emfstore.internal.client.importexport.impl.ExportWorkspaceController;
 import org.eclipse.emf.emfstore.internal.client.model.AdminBroker;
@@ -264,6 +268,24 @@
 		final ProjectSpace projectSpace = ResourceHelper
 			.getElementFromResource(absoluteFileName, ProjectSpace.class, 0);
 
+		final String parent = FilenameUtils.getFullPath(absoluteFileName);
+		final File parentFolder = new File(parent);
+		final File[] projects = parentFolder.listFiles(new FilenameFilter() {
+			public boolean accept(File dir, String name) {
+				return name.endsWith(ExportImportDataUnits.Project.getExtension());
+			}
+		});
+
+		if (projects.length == 0) {
+			throw new FileNotFoundException("Project was not found.");
+		}
+		if (projects.length > 1) {
+			throw new FileNotFoundException("Cannot find project because multiple files were found.");
+		}
+
+		final Project project = ResourceHelper.getElementFromResource(projects[0].getAbsolutePath(), Project.class, 0);
+		projectSpace.setProject(project);
+
 		projectSpace.setIdentifier(ModelFactory.eINSTANCE.createProjectSpace().getIdentifier());
 		projectSpace.initResources(workspaceResourceSet);
 
diff --git a/tests/org.eclipse.emf.emfstore.client.test/src/org/eclipse/emf/emfstore/client/test/persistence/ImportExportTest.java b/tests/org.eclipse.emf.emfstore.client.test/src/org/eclipse/emf/emfstore/client/test/persistence/ImportExportTest.java
index c6a9fad..13b8a14 100644
--- a/tests/org.eclipse.emf.emfstore.client.test/src/org/eclipse/emf/emfstore/client/test/persistence/ImportExportTest.java
+++ b/tests/org.eclipse.emf.emfstore.client.test/src/org/eclipse/emf/emfstore/client/test/persistence/ImportExportTest.java
@@ -12,6 +12,7 @@
 
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
 
 import java.io.File;
 import java.io.IOException;
@@ -87,7 +88,16 @@
 
 	@Test
 	public void testDuplicateImportOfProjectSpace() throws IOException {
-		final File temp = File.createTempFile("projectSpace", ExportImportDataUnits.ProjectSpace.getExtension());
+		final String tmpDir = System.getProperty("java.io.tmpdir") + "ieTest" + System.currentTimeMillis();
+		final File tmpDirFile = new File(tmpDir);
+		final boolean bo = tmpDirFile.mkdir();
+
+		if (!bo) {
+			fail("Could not create temp folder for test");
+		}
+
+		final File temp = File.createTempFile("projectSpace", ExportImportDataUnits.ProjectSpace.getExtension(),
+			tmpDirFile);
 		new ExportImportControllerExecutor(temp, new NullProgressMonitor())
 			.execute(ExportImportControllerFactory.Export.getExportProjectSpaceController(getProjectSpace()));
 
@@ -109,9 +119,18 @@
 		createTestElement("A");
 		Assert.assertTrue(getProjectSpace().getOperations().size() > 0);
 
+		final String tmpDir = System.getProperty("java.io.tmpdir") + "ieTest" + System.currentTimeMillis();
+		final File tmpDirFile = new File(tmpDir);
+		final boolean bo = tmpDirFile.mkdir();
+
+		if (!bo) {
+			fail("Could not create temp folder for test");
+		}
+
 		// TODO: assert file extension is correct
 
-		final File temp = File.createTempFile("projectSpace", ExportImportDataUnits.ProjectSpace.getExtension());
+		final File temp = File.createTempFile("projectSpace", ExportImportDataUnits.ProjectSpace.getExtension(),
+			tmpDirFile);
 		new ExportImportControllerExecutor(temp, new NullProgressMonitor())
 			.execute(ExportImportControllerFactory.Export.getExportProjectSpaceController(getProjectSpace()));
 
