Index: src/main/resources/struts.xml
===================================================================
--- src/main/resources/struts.xml	(revision 753031)
+++ src/main/resources/struts.xml	(working copy)
@@ -196,7 +196,7 @@
     
     <action name="addMavenOneProject" class="addMavenOneProject">
       <interceptor-ref name="configuredContinuumStack"/>
-      <interceptor-ref name="execAndWait"/> 
+      <interceptor-ref name="execAndWait"/>
       <result name="wait">/WEB-INF/jsp/navigations/wait.jsp</result>      
       <result name="input">/WEB-INF/jsp/addMavenOneProject.jsp</result>
       <result name="success" type="chain">groupSummary</result>
@@ -207,19 +207,19 @@
     </action>
 
     <action name="addProjectInput" class="addProject" method="input">
-      <result name="success">/WEB-INF/jsp/addProject.jsp</result>
+      <result name="input">/WEB-INF/jsp/addProject.jsp</result>
     </action>
 
     <action name="addProject" class="addProject" method="add">
       <interceptor-ref name="configuredContinuumStack"/>
-      <interceptor-ref name="execAndWait"/> 
+      <interceptor-ref name="execAndWait"/>
       <result name="wait">/WEB-INF/jsp/navigations/wait.jsp</result>      
-      <result name="input">/WEB-INF/jsp/addProject.jsp</result>
+      <result name="input" type="chain">addProjectInput</result>
       <result name="success" type="chain">groupSummary</result>
       <result name="projectGroupSummary" type="redirect-action">
         <param name="actionName">projectGroupSummary</param>
         <param name="projectGroupId">${projectGroupId}</param>
-      </result>        
+      </result>
     </action>
 
     <action name="deleteProject" class="deleteProject">
Index: src/main/resources/localization/Continuum.properties
===================================================================
--- src/main/resources/localization/Continuum.properties	(revision 753031)
+++ src/main/resources/localization/Continuum.properties	(working copy)
@@ -769,6 +769,7 @@
 installation.ant.type.label = ANT
 installation.automaticProfile.label=Create a Build Environment with the Installation name
 installation.name.duplicate = Installation name already exists.
+installation.varName.required = You must define an environment variable
 
 # ----------------------------------------------------------------------
 # Page: Installations Type Choice
Index: src/main/java/org/apache/maven/continuum/web/action/AddProjectAction.java
===================================================================
--- src/main/java/org/apache/maven/continuum/web/action/AddProjectAction.java	(revision 753031)
+++ src/main/java/org/apache/maven/continuum/web/action/AddProjectAction.java	(working copy)
@@ -19,7 +19,11 @@
  * under the License.
  */
 
-import com.opensymphony.xwork2.Validateable;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Iterator;
+import java.util.List;
+
 import org.apache.maven.continuum.Continuum;
 import org.apache.maven.continuum.ContinuumException;
 import org.apache.maven.continuum.builddefinition.BuildDefinitionServiceException;
@@ -34,11 +38,6 @@
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Iterator;
-import java.util.List;
-
 /**
  * @author Nick Gonzalez
  * @version $Id$
@@ -46,7 +45,6 @@
  */
 public class AddProjectAction
     extends ContinuumActionSupport
-    implements Validateable
 {
     private Logger logger = LoggerFactory.getLogger( this.getClass() );
 
@@ -91,49 +89,24 @@
 
     public void validate()
     {
-        boolean projectNameAlreadyExist = false;
-
         clearErrorsAndMessages();
-
         try
         {
-            if ( ( projectName.trim().length() > 0 ) && ( projectVersion.trim().length() > 0 ) &&
-                ( projectScmUrl.trim().length() > 0 ) )
+            if ( !( projectName.trim().length() > 0 ) )
             {
-                Iterator<Project> projects = getContinuum().getProjects().iterator();
-                while ( projects.hasNext() )
-                {
-                    Project project = projects.next();
-                    // CONTINUUM-1445
-                    if ( StringUtils.equalsIgnoreCase( project.getName(), projectName.trim() ) &&
-                        StringUtils.equalsIgnoreCase( project.getVersion(), projectVersion.trim() ) &&
-                        StringUtils.equalsIgnoreCase( project.getScmUrl(), projectScmUrl.trim() ) )
-                    {
-                        projectNameAlreadyExist = true;
-                        break;
-                    }
-                }
-                if ( projectNameAlreadyExist )
-                {
-                    addActionError( getText( "projectName.already.exist.error" ) );
-                    this.input();
-                }
+                addActionError( getText( "addProject.name.required" ) );
             }
-            else
+            if ( !( projectVersion.trim().length() > 0 ) )
+            {
+                addActionError( getText( "addProject.version.required" ) );
+            }
+            if ( !( projectScmUrl.trim().length() > 0 ) )
+            {
+                addActionError( getText( "addProject.scmUrl.required" ) );
+            }
+            if ( hasActionErrors() )
             {
-                if ( !( projectName.trim().length() > 0 ) )
-                {
-                    addActionError( getText( "addProject.name.required" ) );
-                }
-                if ( !( projectVersion.trim().length() > 0 ) )
-                {
-                    addActionError( getText( "addProject.version.required" ) );
-                }
-                if ( !( projectScmUrl.trim().length() > 0 ) )
-                {
-                    addActionError( getText( "addProject.scmUrl.required" ) );
-                }
-                this.input();
+                input();
             }
         }
         catch ( ContinuumException e )
@@ -168,18 +141,33 @@
             return REQUIRES_AUTHORIZATION;
         }
 
+        String projectNameTrim = projectName.trim();
+        String versionTrim = projectVersion.trim();
+        String scmTrim = projectScmUrl.trim();
+        for ( Project project : getContinuum().getProjects() )
+        {
+            // CONTINUUM-1445
+            if ( StringUtils.equalsIgnoreCase( project.getName(), projectNameTrim )
+                && StringUtils.equalsIgnoreCase( project.getVersion(), versionTrim )
+                && StringUtils.equalsIgnoreCase( project.getScmUrl(), scmTrim ) )
+            {
+                addActionError( getText( "projectName.already.exist.error" ) );
+                return INPUT;
+            }
+        }
+
         Project project = new Project();
 
-        project.setName( projectName.trim() );
+        project.setName( projectNameTrim );
 
         if ( projectDescription != null )
         {
             project.setDescription( projectDescription.trim() );
         }
 
-        project.setVersion( projectVersion.trim() );
+        project.setVersion( versionTrim );
 
-        project.setScmUrl( projectScmUrl.trim() );
+        project.setScmUrl( scmTrim );
 
         project.setScmUsername( projectScmUsername );
 
@@ -243,7 +231,7 @@
         }
         this.profiles = profileService.getAllProfiles();
         buildDefinitionTemplates = getContinuum().getBuildDefinitionService().getAllBuildDefinitionTemplate();
-        return SUCCESS;
+        return INPUT;
     }
 
     private void initializeProjectGroupName()
