diff --git a/org.eclipse.virgo.ide.facet.core/src/org/eclipse/virgo/ide/facet/core/CreatePlanProjectOperation.java b/org.eclipse.virgo.ide.facet.core/src/org/eclipse/virgo/ide/facet/core/CreatePlanProjectOperation.java
index bb83491..f16308c 100644
--- a/org.eclipse.virgo.ide.facet.core/src/org/eclipse/virgo/ide/facet/core/CreatePlanProjectOperation.java
+++ b/org.eclipse.virgo.ide.facet.core/src/org/eclipse/virgo/ide/facet/core/CreatePlanProjectOperation.java
@@ -68,6 +68,8 @@
 
     private final String planName;
 
+    private IFile planFile;
+
     /**
      * Creates a new instance
      *
@@ -143,7 +145,7 @@
             if (!"plan".equals(p.getFileExtension())) {
                 p = p.addFileExtension("plan");
             }
-            IFile planFile = sourceFolder.getFile(p);
+            planFile = sourceFolder.getFile(p);
             try {
                 planFile.create(new ByteArrayInputStream(content.getBytes(UTF_8)), true, null);
             } catch (UnsupportedEncodingException e) {
@@ -156,4 +158,13 @@
         monitor.done();
     }
 
+    /**
+     * Returns the plan file created by this operation, or null if no plan file has been created.
+     * 
+     * @return plan file or null
+     */
+    public IFile getPlanFile() {
+        return planFile;
+    }
+
 }
diff --git a/org.eclipse.virgo.ide.ui/src/org/eclipse/virgo/ide/ui/wizards/NewPlanProjectFilePage.java b/org.eclipse.virgo.ide.ui/src/org/eclipse/virgo/ide/ui/wizards/NewPlanProjectFilePage.java
index a07565f..0bb4ec3 100644
--- a/org.eclipse.virgo.ide.ui/src/org/eclipse/virgo/ide/ui/wizards/NewPlanProjectFilePage.java
+++ b/org.eclipse.virgo.ide.ui/src/org/eclipse/virgo/ide/ui/wizards/NewPlanProjectFilePage.java
@@ -11,8 +11,9 @@
 
 package org.eclipse.virgo.ide.ui.wizards;
 
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.resources.ResourcesPlugin;
 import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
 import org.eclipse.jface.layout.GridDataFactory;
 import org.eclipse.jface.wizard.WizardPage;
 import org.eclipse.swt.SWT;
@@ -103,11 +104,12 @@
         planName = null;
 
         String name = planNameText.getText();
-        IStatus status = Status.OK_STATUS;// validator.validateContextRoot(name);
 
-        if (!status.isOK()) {
+        IStatus nameStatus = ResourcesPlugin.getWorkspace().validateName(name, IResource.FILE);
+
+        if (!nameStatus.isOK()) {
+            setErrorMessage(nameStatus.getMessage());
             setPageComplete(false);
-            setErrorMessage(status.getMessage());
             return;
         }
 
diff --git a/org.eclipse.virgo.ide.ui/src/org/eclipse/virgo/ide/ui/wizards/NewPlanProjectWizard.java b/org.eclipse.virgo.ide.ui/src/org/eclipse/virgo/ide/ui/wizards/NewPlanProjectWizard.java
index 0f81125..59ee936 100644
--- a/org.eclipse.virgo.ide.ui/src/org/eclipse/virgo/ide/ui/wizards/NewPlanProjectWizard.java
+++ b/org.eclipse.virgo.ide.ui/src/org/eclipse/virgo/ide/ui/wizards/NewPlanProjectWizard.java
@@ -14,6 +14,7 @@
 import java.lang.reflect.InvocationTargetException;
 import java.net.URI;
 
+import org.eclipse.core.resources.IFile;
 import org.eclipse.core.resources.ResourcesPlugin;
 import org.eclipse.core.runtime.CoreException;
 import org.eclipse.core.runtime.IProgressMonitor;
@@ -21,7 +22,11 @@
 import org.eclipse.core.runtime.Status;
 import org.eclipse.jface.operation.IRunnableWithProgress;
 import org.eclipse.pde.internal.ui.wizards.NewWizard;
+import org.eclipse.ui.IEditorDescriptor;
+import org.eclipse.ui.PartInitException;
+import org.eclipse.ui.PlatformUI;
 import org.eclipse.ui.dialogs.WizardNewProjectCreationPage;
+import org.eclipse.ui.part.FileEditorInput;
 import org.eclipse.ui.statushandlers.StatusManager;
 import org.eclipse.virgo.ide.facet.core.CreatePlanProjectOperation;
 import org.eclipse.virgo.ide.ui.ServerIdeUiPlugin;
@@ -84,6 +89,16 @@
             StatusManager.getManager().handle(s, StatusManager.LOG | StatusManager.SHOW);
         }
 
+        
+        IFile file = operation.getPlanFile();
+        if (file!=null) {
+            IEditorDescriptor editorDesc = PlatformUI.getWorkbench().getEditorRegistry().getDefaultEditor(file.getName());
+            try {
+                PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().openEditor(new FileEditorInput(file), editorDesc.getId());
+            } catch (PartInitException e) {
+                // ignore
+            }
+        }
         return true;
     }
 
