diff --git a/bundles/org.eclipse.ui.ide/src/org/eclipse/ui/internal/wizards/datatransfer/WizardProjectsImportPage.java b/bundles/org.eclipse.ui.ide/src/org/eclipse/ui/internal/wizards/datatransfer/WizardProjectsImportPage.java
index 6360d31..a176712 100644
--- a/bundles/org.eclipse.ui.ide/src/org/eclipse/ui/internal/wizards/datatransfer/WizardProjectsImportPage.java
+++ b/bundles/org.eclipse.ui.ide/src/org/eclipse/ui/internal/wizards/datatransfer/WizardProjectsImportPage.java
@@ -1506,8 +1506,8 @@
 		List<ProjectRecord> projectRecords = new ArrayList<>();
 		for (ProjectRecord selectedProject : selectedProjects) {
 			String projectName = selectedProject.getProjectName();
-			selectedProject.hasConflicts = (isProjectInWorkspacePath(projectName) && copyFiles)
-					|| isProjectInWorkspace(projectName);
+			selectedProject.hasConflicts = (isProjectInWorkspacePath(projectName)
+					&& (copyFiles || selectedProject.projectArchiveFile != null)) || isProjectInWorkspace(projectName);
 			projectRecords.add(selectedProject);
 		}
 		return projectRecords
diff --git a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/datatransfer/ImportExistingProjectsWizardTest.java b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/datatransfer/ImportExistingProjectsWizardTest.java
index ff2d4b2..6b75ccb 100644
--- a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/datatransfer/ImportExistingProjectsWizardTest.java
+++ b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/datatransfer/ImportExistingProjectsWizardTest.java
@@ -1320,5 +1320,35 @@
 	}
 
 
+	@Test
+	public void test23DoNotShowProjectwithSameNameForZipImport() {
+		try {
+			IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot();
+
+			IProject[] workspaceProjects = root.getProjects();
+			for (IProject workspaceProject : workspaceProjects) {
+				FileUtil.deleteProject(workspaceProject);
+			}
+
+			FileUtil.createProject("HelloWorld");
+
+			URL archiveFile = FileLocator.toFileURL(FileLocator.find(TestPlugin.getDefault().getBundle(),
+					new Path(DATA_PATH_PREFIX + ARCHIVE_HELLOWORLD + ".zip"), null));
+			WizardProjectsImportPage wpip = getNewWizard();
+			// We want the other one selected as we are importing an archive file
+			wpip.getProjectFromDirectoryRadio().setSelection((false));
+			wpip.updateProjectsList(archiveFile.getPath());
+
+			ProjectRecord[] selectedProjects = wpip.getProjectRecords();
+			for (ProjectRecord selectedProject : selectedProjects) {
+				if (selectedProject.getProjectName().equals("HelloWorld")) {
+					assertTrue(selectedProject.hasConflicts());
+				}
+			}
+		} catch (IOException | CoreException e) {
+			fail(e.toString());
+		}
+
+	}
 
 }
