diff --git a/tests/org.eclipse.jst.j2ee.tests/ejbmodule-tests/org/eclipse/wtp/j2ee/headless/tests/ejb/operations/EJBProjectCreationOperationTest.java b/tests/org.eclipse.jst.j2ee.tests/ejbmodule-tests/org/eclipse/wtp/j2ee/headless/tests/ejb/operations/EJBProjectCreationOperationTest.java
index 424d3ee..326e7d6 100644
--- a/tests/org.eclipse.jst.j2ee.tests/ejbmodule-tests/org/eclipse/wtp/j2ee/headless/tests/ejb/operations/EJBProjectCreationOperationTest.java
+++ b/tests/org.eclipse.jst.j2ee.tests/ejbmodule-tests/org/eclipse/wtp/j2ee/headless/tests/ejb/operations/EJBProjectCreationOperationTest.java
@@ -13,7 +13,10 @@
 import org.eclipse.jem.util.logger.proxy.Logger;
 import org.eclipse.jst.j2ee.internal.ejb.project.operations.EjbFacetProjectCreationDataModelProvider;
 import org.eclipse.jst.j2ee.internal.project.J2EEProjectUtilities;
+import org.eclipse.jst.j2ee.project.facet.IJ2EEModuleFacetInstallDataModelProperties;
 import org.eclipse.wst.common.componentcore.ComponentCore;
+import org.eclipse.wst.common.componentcore.datamodel.properties.IFacetProjectCreationDataModelProperties;
+import org.eclipse.wst.common.componentcore.datamodel.properties.IFacetProjectCreationDataModelProperties.FacetDataModelMap;
 import org.eclipse.wst.common.componentcore.internal.util.ComponentUtilities;
 import org.eclipse.wst.common.componentcore.resources.IVirtualComponent;
 import org.eclipse.wst.common.frameworks.datamodel.DataModelFactory;
@@ -62,4 +65,12 @@
     	Assert.assertTrue(eclipseFile != null && file != null && file.exists());
     }
   
+    public IDataModel getComponentCreationDataModelWithEar() {
+        IDataModel model =  DataModelFactory.createDataModel(new EjbFacetProjectCreationDataModelProvider());
+        FacetDataModelMap map = (FacetDataModelMap) model.getProperty(IFacetProjectCreationDataModelProperties.FACET_DM_MAP);
+        IDataModel facetDM = map.getFacetDataModel(J2EEProjectUtilities.EJB);
+        facetDM.setBooleanProperty( IJ2EEModuleFacetInstallDataModelProperties.ADD_TO_EAR, true );
+        return model;
+    }  
+    
 }
diff --git a/tests/org.eclipse.jst.j2ee.tests/j2ee-tests/org/eclipse/wtp/j2ee/headless/tests/appclient/operations/AppClientProjectCreationOperationTest.java b/tests/org.eclipse.jst.j2ee.tests/j2ee-tests/org/eclipse/wtp/j2ee/headless/tests/appclient/operations/AppClientProjectCreationOperationTest.java
index cb5bfb3..5868f87 100644
--- a/tests/org.eclipse.jst.j2ee.tests/j2ee-tests/org/eclipse/wtp/j2ee/headless/tests/appclient/operations/AppClientProjectCreationOperationTest.java
+++ b/tests/org.eclipse.jst.j2ee.tests/j2ee-tests/org/eclipse/wtp/j2ee/headless/tests/appclient/operations/AppClientProjectCreationOperationTest.java
@@ -9,6 +9,10 @@
 import junit.framework.Test;
 
 import org.eclipse.jst.j2ee.applicationclient.internal.creation.AppClientFacetProjectCreationDataModelProvider;
+import org.eclipse.jst.j2ee.internal.project.J2EEProjectUtilities;
+import org.eclipse.jst.j2ee.project.facet.IJ2EEModuleFacetInstallDataModelProperties;
+import org.eclipse.wst.common.componentcore.datamodel.properties.IFacetProjectCreationDataModelProperties;
+import org.eclipse.wst.common.componentcore.datamodel.properties.IFacetProjectCreationDataModelProperties.FacetDataModelMap;
 import org.eclipse.wst.common.frameworks.datamodel.DataModelFactory;
 import org.eclipse.wst.common.frameworks.datamodel.IDataModel;
 import org.eclipse.wst.common.tests.SimpleTestSuite;
@@ -39,5 +43,13 @@
     public IDataModel getComponentCreationDataModel() {
         return DataModelFactory.createDataModel(new AppClientFacetProjectCreationDataModelProvider());
     }
+    
+    public IDataModel getComponentCreationDataModelWithEar() {
+        IDataModel model =  DataModelFactory.createDataModel(new AppClientFacetProjectCreationDataModelProvider());
+        FacetDataModelMap map = (FacetDataModelMap) model.getProperty(IFacetProjectCreationDataModelProperties.FACET_DM_MAP);
+        IDataModel facetDM = map.getFacetDataModel(J2EEProjectUtilities.APPLICATION_CLIENT);
+        facetDM.setBooleanProperty( IJ2EEModuleFacetInstallDataModelProperties.ADD_TO_EAR, true );
+        return model;
+    }     
 
 }
diff --git a/tests/org.eclipse.jst.j2ee.tests/j2ee-tests/org/eclipse/wtp/j2ee/headless/tests/j2ee/operations/ModuleProjectCreationOperationTest.java b/tests/org.eclipse.jst.j2ee.tests/j2ee-tests/org/eclipse/wtp/j2ee/headless/tests/j2ee/operations/ModuleProjectCreationOperationTest.java
index 51217fd..553803a 100644
--- a/tests/org.eclipse.jst.j2ee.tests/j2ee-tests/org/eclipse/wtp/j2ee/headless/tests/j2ee/operations/ModuleProjectCreationOperationTest.java
+++ b/tests/org.eclipse.jst.j2ee.tests/j2ee-tests/org/eclipse/wtp/j2ee/headless/tests/j2ee/operations/ModuleProjectCreationOperationTest.java
@@ -7,6 +7,7 @@
 import org.eclipse.core.resources.IProject;
 import org.eclipse.jem.util.emf.workbench.ProjectUtilities;
 import org.eclipse.jst.j2ee.internal.project.J2EEProjectUtilities;
+import org.eclipse.jst.j2ee.project.facet.IJ2EEFacetProjectCreationDataModelProperties;
 import org.eclipse.wst.common.componentcore.ComponentCore;
 import org.eclipse.wst.common.componentcore.datamodel.properties.IFacetProjectCreationDataModelProperties;
 import org.eclipse.wst.common.componentcore.resources.IVirtualComponent;
@@ -26,6 +27,7 @@
     public static String DEFAULT_EAR_PROJECT_NAME = "SimpleEARProject"; //$NON-NLS-1$
 	public static String DEFAULT_COMPONENT_NAME = "SimpleComponent"; //$NON-NLS-1$
 	public static String DEFAULT_EAR_COMPONENT_NAME = "SimpleEARComponent"; //$NON-NLS-1$
+	public static String DEFAULT_COMPONENT_WITH_EAR = "Component"; //$NON-NLS-1$	
     
     /**
 	 * @param name
@@ -72,10 +74,20 @@
     }
 
 	public abstract IDataModel getComponentCreationDataModel();
+	public abstract IDataModel getComponentCreationDataModelWithEar();
 
 	public static void verifyDataModel(IDataModel dataModel) throws Exception{
 	    DataModelVerifier verifier = DataModelVerifierFactory.getInstance().createVerifier(dataModel);
 	    verifier.verify(dataModel);
 	}
 
+    public void testAddtoEAR() throws Exception {
+        createModuleWithEAR(DEFAULT_COMPONENT_WITH_EAR + componentSeed);
+    }	
+    
+	public void createModuleWithEAR(String componentName) throws Exception {
+        IDataModel dataModel = getComponentCreationDataModelWithEar();
+        dataModel.setProperty(IJ2EEFacetProjectCreationDataModelProperties.FACET_PROJECT_NAME, componentName);
+        runAndVerify(dataModel,false,true);
+    }    
 }
diff --git a/tests/org.eclipse.jst.j2ee.tests/jcamodule-tests/org/eclipse/wtp/j2ee/headless/tests/jca/operations/ConnectorProjectCreationOperationTest.java b/tests/org.eclipse.jst.j2ee.tests/jcamodule-tests/org/eclipse/wtp/j2ee/headless/tests/jca/operations/ConnectorProjectCreationOperationTest.java
index 67c324b..ff0555a 100644
--- a/tests/org.eclipse.jst.j2ee.tests/jcamodule-tests/org/eclipse/wtp/j2ee/headless/tests/jca/operations/ConnectorProjectCreationOperationTest.java
+++ b/tests/org.eclipse.jst.j2ee.tests/jcamodule-tests/org/eclipse/wtp/j2ee/headless/tests/jca/operations/ConnectorProjectCreationOperationTest.java
@@ -4,7 +4,11 @@
 import junit.framework.Test;
 import junit.framework.TestSuite;
 
+import org.eclipse.jst.j2ee.internal.project.J2EEProjectUtilities;
 import org.eclipse.jst.j2ee.jca.project.facet.ConnectorFacetProjectCreationDataModelProvider;
+import org.eclipse.jst.j2ee.project.facet.IJ2EEModuleFacetInstallDataModelProperties;
+import org.eclipse.wst.common.componentcore.datamodel.properties.IFacetProjectCreationDataModelProperties;
+import org.eclipse.wst.common.componentcore.datamodel.properties.IFacetProjectCreationDataModelProperties.FacetDataModelMap;
 import org.eclipse.wst.common.frameworks.datamodel.DataModelFactory;
 import org.eclipse.wst.common.frameworks.datamodel.IDataModel;
 import org.eclipse.wtp.j2ee.headless.tests.j2ee.operations.ModuleProjectCreationOperationTest;
@@ -30,5 +34,12 @@
         return DataModelFactory.createDataModel(new ConnectorFacetProjectCreationDataModelProvider());
     }
  
+    public IDataModel getComponentCreationDataModelWithEar() {
+        IDataModel model =  DataModelFactory.createDataModel(new ConnectorFacetProjectCreationDataModelProvider());
+        FacetDataModelMap map = (FacetDataModelMap) model.getProperty(IFacetProjectCreationDataModelProperties.FACET_DM_MAP);
+        IDataModel facetDM = map.getFacetDataModel(J2EEProjectUtilities.JCA);
+        facetDM.setBooleanProperty( IJ2EEModuleFacetInstallDataModelProperties.ADD_TO_EAR, true );
+        return model;
+    }      
     
 }
diff --git a/tests/org.eclipse.jst.j2ee.tests/webmodule-tests/org/eclipse/wtp/j2ee/headless/tests/web/operations/StaticWebProjectCreationOperationTest.java b/tests/org.eclipse.jst.j2ee.tests/webmodule-tests/org/eclipse/wtp/j2ee/headless/tests/web/operations/StaticWebProjectCreationOperationTest.java
index 9242892..eb98993 100644
--- a/tests/org.eclipse.jst.j2ee.tests/webmodule-tests/org/eclipse/wtp/j2ee/headless/tests/web/operations/StaticWebProjectCreationOperationTest.java
+++ b/tests/org.eclipse.jst.j2ee.tests/webmodule-tests/org/eclipse/wtp/j2ee/headless/tests/web/operations/StaticWebProjectCreationOperationTest.java
@@ -3,7 +3,10 @@
 import junit.framework.Test;
 import junit.framework.TestSuite;
 
+import org.eclipse.jst.j2ee.internal.project.J2EEProjectUtilities;
+import org.eclipse.jst.j2ee.project.facet.IJ2EEModuleFacetInstallDataModelProperties;
 import org.eclipse.wst.common.componentcore.datamodel.properties.IFacetProjectCreationDataModelProperties;
+import org.eclipse.wst.common.componentcore.datamodel.properties.IFacetProjectCreationDataModelProperties.FacetDataModelMap;
 import org.eclipse.wst.common.frameworks.datamodel.DataModelFactory;
 import org.eclipse.wst.common.frameworks.datamodel.IDataModel;
 import org.eclipse.wst.project.facet.SimpleWebFacetProjectCreationDataModelProvider;
@@ -33,4 +36,12 @@
        runAndVerify(dataModel,false,true);
     }
 
+    public IDataModel getComponentCreationDataModelWithEar() {
+        IDataModel model =  DataModelFactory.createDataModel(new SimpleWebFacetProjectCreationDataModelProvider());
+        FacetDataModelMap map = (FacetDataModelMap) model.getProperty(IFacetProjectCreationDataModelProperties.FACET_DM_MAP);
+        IDataModel facetDM = map.getFacetDataModel(J2EEProjectUtilities.STATIC_WEB);
+        facetDM.setBooleanProperty( IJ2EEModuleFacetInstallDataModelProperties.ADD_TO_EAR, true );
+        return model;
+    }  
+    
 }
diff --git a/tests/org.eclipse.jst.j2ee.tests/webmodule-tests/org/eclipse/wtp/j2ee/headless/tests/web/operations/WebProjectCreationOperationTest.java b/tests/org.eclipse.jst.j2ee.tests/webmodule-tests/org/eclipse/wtp/j2ee/headless/tests/web/operations/WebProjectCreationOperationTest.java
index ada4b4a..8e63a1f 100644
--- a/tests/org.eclipse.jst.j2ee.tests/webmodule-tests/org/eclipse/wtp/j2ee/headless/tests/web/operations/WebProjectCreationOperationTest.java
+++ b/tests/org.eclipse.jst.j2ee.tests/webmodule-tests/org/eclipse/wtp/j2ee/headless/tests/web/operations/WebProjectCreationOperationTest.java
@@ -9,7 +9,11 @@
 import junit.framework.Test;
 import junit.framework.TestSuite;
 
+import org.eclipse.jst.j2ee.internal.project.J2EEProjectUtilities;
 import org.eclipse.jst.j2ee.internal.web.archive.operations.WebFacetProjectCreationDataModelProvider;
+import org.eclipse.jst.j2ee.project.facet.IJ2EEModuleFacetInstallDataModelProperties;
+import org.eclipse.wst.common.componentcore.datamodel.properties.IFacetProjectCreationDataModelProperties;
+import org.eclipse.wst.common.componentcore.datamodel.properties.IFacetProjectCreationDataModelProperties.FacetDataModelMap;
 import org.eclipse.wst.common.frameworks.datamodel.DataModelFactory;
 import org.eclipse.wst.common.frameworks.datamodel.IDataModel;
 import org.eclipse.wtp.j2ee.headless.tests.j2ee.operations.ModuleProjectCreationOperationTest;
@@ -36,4 +40,12 @@
         return DataModelFactory.createDataModel(new WebFacetProjectCreationDataModelProvider());
     }
     
+    public IDataModel getComponentCreationDataModelWithEar() {
+        IDataModel model =  DataModelFactory.createDataModel(new WebFacetProjectCreationDataModelProvider());
+        FacetDataModelMap map = (FacetDataModelMap) model.getProperty(IFacetProjectCreationDataModelProperties.FACET_DM_MAP);
+        IDataModel facetDM = map.getFacetDataModel(J2EEProjectUtilities.DYNAMIC_WEB);
+        facetDM.setBooleanProperty( IJ2EEModuleFacetInstallDataModelProperties.ADD_TO_EAR, true );
+        return model;
+    }    
+    
 }
