diff --git a/tests/org.eclipse.wst.common.tests.ui/plugin.xml b/tests/org.eclipse.wst.common.tests.ui/plugin.xml
index a338c26..b0e4e7b 100644
--- a/tests/org.eclipse.wst.common.tests.ui/plugin.xml
+++ b/tests/org.eclipse.wst.common.tests.ui/plugin.xml
@@ -18,6 +18,7 @@
       <import plugin="org.eclipse.core.runtime"/>
       <import plugin="org.eclipse.wst.common.frameworks.ui"/>
       <import plugin="org.eclipse.wst.common.tests"/>
+      <import plugin="org.eclipse.wst.common.environment"/>
    </requires>
 
    <extension
diff --git a/tests/org.eclipse.wst.common.tests.ui/src/org/eclipse/wst/common/tests/ui/manager/TestGroupManager.java b/tests/org.eclipse.wst.common.tests.ui/src/org/eclipse/wst/common/tests/ui/manager/TestGroupManager.java
index fa703a4..9556121 100644
--- a/tests/org.eclipse.wst.common.tests.ui/src/org/eclipse/wst/common/tests/ui/manager/TestGroupManager.java
+++ b/tests/org.eclipse.wst.common.tests.ui/src/org/eclipse/wst/common/tests/ui/manager/TestGroupManager.java
@@ -15,6 +15,7 @@
 import junit.framework.TestCase;
 
 import org.eclipse.swt.widgets.Composite;
+import org.eclipse.wst.common.environment.EnvironmentService;
 import org.eclipse.wst.common.frameworks.datamodel.AbstractDataModelProvider;
 import org.eclipse.wst.common.frameworks.datamodel.IDataModel;
 import org.eclipse.wst.common.frameworks.datamodel.IDataModelOperation;
@@ -92,12 +93,12 @@
 
 		// Operations are organized as follows:
 		//
-		// D
-		// / \
-		// B F
-		// / \ / \
-		// A C E G
-		operationManager = new OperationManager(dataModelManager, opD);
+		//    D
+		//   /  \
+		//   B   F
+		//  / \ / \
+		// A  C E  G
+		operationManager = new OperationManager(dataModelManager, opD, EnvironmentService.getEclipseConsoleEnvironment() );
 		operationManager.addPreOperation(opD.getID(), opB);
 		operationManager.addPostOperation(opD.getID(), opF);
 		operationManager.addPreOperation(opB.getID(), opA);
@@ -107,12 +108,12 @@
 
 		// Page groups are organized as follows:
 		//
-		// B - C
-		// / \
-		// Root - A - D \ G
-		// \ \ /
-		// ------ E - F - H
-		// \ null
+		//              B - C
+		//             /     \
+		// Root - A - D       \         G
+		//             \       \      /
+		//               ------ E - F - H
+		//                            \ null
 		//                     
 		// The page group handler for A will return either B and then E or D and
 		// then E. The group handler for F will return either G or H and then null or
@@ -198,6 +199,10 @@
 	}
 
 	public void testSimpleRun() throws Exception {
+    HashSet ids = new HashSet();
+    ids.add( "testprovider1" );
+    ids.add( "testprovider2" );
+    pgA.setDataModelIDs( ids );
 		assertTrue("There should be a next page", pageGroupManager.hasNextPage()); //$NON-NLS-1$
 		assertTrue("The root page should be null", pageGroupManager.getCurrentPage() == null); //$NON-NLS-1$
 		pageGroupManager.moveBackOnePage(); // Should do nothing.
@@ -208,6 +213,7 @@
 		assertTrue("There should be a next page", pageGroupManager.hasNextPage()); //$NON-NLS-1$
 		assertTrue("The page should be r1", pageGroupManager.getCurrentPage() == r1); //$NON-NLS-1$
 		checkResults();
+    assertTrue("Data models not Ok for page group A", checkDataModels() ); //$NON-NLS-1$
 
 		pageGroupManager.moveForwardOnePage();
 		assertTrue("There should be a next page", pageGroupManager.hasNextPage()); //$NON-NLS-1$
@@ -382,6 +388,34 @@
 		expectedUndoOps.removeAllElements();
 	}
 
+  private boolean checkDataModels()
+  {
+    IDataModel model = dataModel;
+    
+    boolean containsModel1 = model.isNestedModel( "testprovider1" );
+    boolean containsModel2 = model.isNestedModel( "testprovider2" );
+    boolean prop1          = model.isPropertySet( "provider1Prop1" );
+    boolean prop2          = model.isPropertySet( "provider1Prop2" );
+    boolean prop3          = model.isPropertySet( "provider1Prop3" );
+    boolean prop4          = model.isPropertySet( "provider1Prop4" );
+    boolean prop5          = model.isPropertySet( "provider2Prop1" );
+    boolean prop6          = model.isPropertySet( "provider2Prop2" );
+    boolean prop7          = model.isPropertySet( "provider2Prop3" );
+    boolean prop8          = model.isPropertySet( "provider2Prop4" );
+    boolean value1         = model.getProperty( "provider1Prop1" ).equals( "11" );
+    boolean value2         = model.getProperty( "provider1Prop2" ).equals( "22" );
+    boolean value3         = model.getProperty( "provider1Prop3" ).equals( "33" );
+    boolean value4         = model.getProperty( "provider1Prop4" ).equals( "44" );
+    boolean value5         = model.getProperty( "provider2Prop1" ).equals( "1111" );
+    boolean value6         = model.getProperty( "provider2Prop2" ).equals( "2222" );
+    boolean value7         = model.getProperty( "provider2Prop3" ).equals( "3333" );
+    boolean value8         = model.getProperty( "provider2Prop4" ).equals( "4444" );
+    
+    return containsModel1 && containsModel2 &&
+           prop1 && prop2 && prop3 && prop4 && prop5 && prop6 && prop7 && prop8 &&
+           value1 && value2 && value3 && value4 && value5 && value6 && value7 && value8;
+  }
+  
 	private class AGroupHandler implements IDMPageGroupHandler {
 		private String groupID_;
 
diff --git a/tests/org.eclipse.wst.common.tests/frameworktests/org/eclipse/wst/common/frameworks/operations/tests/manager/BaseOperation.java b/tests/org.eclipse.wst.common.tests/frameworktests/org/eclipse/wst/common/frameworks/operations/tests/manager/BaseOperation.java
index 6af06a2..d8bfddf 100644
--- a/tests/org.eclipse.wst.common.tests/frameworktests/org/eclipse/wst/common/frameworks/operations/tests/manager/BaseOperation.java
+++ b/tests/org.eclipse.wst.common.tests/frameworktests/org/eclipse/wst/common/frameworks/operations/tests/manager/BaseOperation.java
@@ -10,6 +10,8 @@
  *******************************************************************************/
 package org.eclipse.wst.common.frameworks.operations.tests.manager;
 
+import java.util.HashSet;
+import java.util.Set;
 import java.util.Vector;
 
 import org.eclipse.core.commands.ExecutionException;
@@ -17,17 +19,22 @@
 import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.core.runtime.IStatus;
 import org.eclipse.core.runtime.Status;
+import org.eclipse.wst.common.environment.Log;
 import org.eclipse.wst.common.frameworks.datamodel.AbstractDataModelOperation;
+import org.eclipse.wst.common.frameworks.datamodel.IDataModel;
 
 public class BaseOperation extends AbstractDataModelOperation {
 	private Vector resultList;
 	private Vector undoList;
 	private IStatus status;
+  private boolean checkModels;
+  private boolean modelsOK = false;
 
 	public BaseOperation(String id, Vector resultList, Vector undoList) {
 		setID(id);
 		this.resultList = resultList;
 		this.undoList = undoList;
+        
 		status = Status.OK_STATUS;
 	}
 
@@ -37,6 +44,11 @@
 
 	public IStatus execute(IProgressMonitor monitor, IAdaptable info) throws ExecutionException {
 		resultList.add(this);
+    
+    if( checkModels ) modelsOK = checkModels();
+    
+    getEnvironment().getLog().log( Log.OK, 1234, this, "BaseOperation", (Throwable)null );
+    
 		return status;
 	}
 
@@ -49,4 +61,52 @@
 		undoList.add(this);
 		return Status.OK_STATUS;
 	}
+
+  public void setCheckModels( boolean checkModels )
+  {
+    this.checkModels = checkModels;  
+  }
+  
+  public boolean getModelsOK()
+  {
+    return modelsOK;  
+  }
+  
+  public Set getDataModelIDs()
+  {
+    HashSet ids = new HashSet();
+    
+    ids.add( "testprovider1" );
+    ids.add( "testprovider2" );
+    
+    return ids;
+  }
+  
+  private boolean checkModels()
+  {
+    IDataModel model = getDataModel();
+    
+    boolean containsModel1 = model.isNestedModel( "testprovider1" );
+    boolean containsModel2 = model.isNestedModel( "testprovider2" );
+    boolean prop1          = model.isPropertySet( "provider1Prop1" );
+    boolean prop2          = model.isPropertySet( "provider1Prop2" );
+    boolean prop3          = model.isPropertySet( "provider1Prop3" );
+    boolean prop4          = model.isPropertySet( "provider1Prop4" );
+    boolean prop5          = model.isPropertySet( "provider2Prop1" );
+    boolean prop6          = model.isPropertySet( "provider2Prop2" );
+    boolean prop7          = model.isPropertySet( "provider2Prop3" );
+    boolean prop8          = model.isPropertySet( "provider2Prop4" );
+    boolean value1         = model.getProperty( "provider1Prop1" ).equals( "11" );
+    boolean value2         = model.getProperty( "provider1Prop2" ).equals( "22" );
+    boolean value3         = model.getProperty( "provider1Prop3" ).equals( "33" );
+    boolean value4         = model.getProperty( "provider1Prop4" ).equals( "44" );
+    boolean value5         = model.getProperty( "provider2Prop1" ).equals( "1111" );
+    boolean value6         = model.getProperty( "provider2Prop2" ).equals( "2222" );
+    boolean value7         = model.getProperty( "provider2Prop3" ).equals( "3333" );
+    boolean value8         = model.getProperty( "provider2Prop4" ).equals( "4444" );
+    
+    return containsModel1 && containsModel2 &&
+           prop1 && prop2 && prop3 && prop4 && prop5 && prop6 && prop7 && prop8 &&
+           value1 && value2 && value3 && value4 && value5 && value6 && value7 && value8;
+  }
 }
diff --git a/tests/org.eclipse.wst.common.tests/frameworktests/org/eclipse/wst/common/frameworks/operations/tests/manager/TestOperationManager.java b/tests/org.eclipse.wst.common.tests/frameworktests/org/eclipse/wst/common/frameworks/operations/tests/manager/TestOperationManager.java
index 60ff387..6d4bff5 100644
--- a/tests/org.eclipse.wst.common.tests/frameworktests/org/eclipse/wst/common/frameworks/operations/tests/manager/TestOperationManager.java
+++ b/tests/org.eclipse.wst.common.tests/frameworktests/org/eclipse/wst/common/frameworks/operations/tests/manager/TestOperationManager.java
@@ -14,6 +14,7 @@
 import junit.framework.TestCase;
 import org.eclipse.core.runtime.IStatus;
 import org.eclipse.core.runtime.Status;
+import org.eclipse.wst.common.environment.EnvironmentService;
 import org.eclipse.wst.common.frameworks.datamodel.AbstractDataModelProvider;
 import org.eclipse.wst.common.frameworks.datamodel.IDataModelOperation;
 import org.eclipse.wst.common.frameworks.internal.DataModelManager;
@@ -62,7 +63,7 @@
 		//   B   F
 		//  / \ / \
 		// A  C E G
-		manager = new OperationManager(dataModelManager, opD);
+		manager = new OperationManager(dataModelManager, opD, EnvironmentService.getEclipseConsoleEnvironment() );
 		manager.addPreOperation(opD.getID(), opB);
 		manager.addPostOperation(opD.getID(), opF);
 		manager.addPreOperation(opB.getID(), opA);
@@ -83,6 +84,25 @@
 		checkResults();
 	}
 
+  public void testDataModelsAreSet() throws Exception {
+    expectedOps.add(opA);
+    expectedOps.add(opB);
+    expectedOps.add(opC);
+    expectedOps.add(opD);
+    expectedOps.add(opE);
+    expectedOps.add(opF);
+    expectedOps.add(opG);
+    
+    opA.setCheckModels( true );
+    opG.setCheckModels( true );
+    manager.runOperations();
+    checkResults();
+    
+    assertTrue("Expected opA models to be OK", opA.getModelsOK() );
+    assertTrue("Expected opG models to be OK", opG.getModelsOK() );
+      
+  }
+  
 	public void testRunWithErrors() throws Exception {
 		BaseOperation[] operations = new BaseOperation[]{opA, opB, opC, opD, opE, opF, opG};
 
diff --git a/tests/org.eclipse.wst.common.tests/frameworktests/org/eclipse/wst/common/frameworks/operations/tests/manager/TestProvider1.java b/tests/org.eclipse.wst.common.tests/frameworktests/org/eclipse/wst/common/frameworks/operations/tests/manager/TestProvider1.java
new file mode 100644
index 0000000..b42075c
--- /dev/null
+++ b/tests/org.eclipse.wst.common.tests/frameworktests/org/eclipse/wst/common/frameworks/operations/tests/manager/TestProvider1.java
@@ -0,0 +1,40 @@
+/***************************************************************************************************
+ * Copyright (c) 2003, 2005 IBM Corporation and others. All rights reserved. This program and the
+ * accompanying materials are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors: IBM Corporation - initial API and implementation
+ **************************************************************************************************/
+package org.eclipse.wst.common.frameworks.operations.tests.manager;
+
+import java.util.Set;
+import org.eclipse.wst.common.frameworks.datamodel.AbstractDataModelProvider;
+
+public class TestProvider1 extends AbstractDataModelProvider
+{
+  public Set getPropertyNames(){
+    Set propertyNames = super.getPropertyNames();
+    propertyNames.add("provider1Prop1");
+    propertyNames.add("provider1Prop2");
+    propertyNames.add("provider1Prop3");
+    propertyNames.add("provider1Prop4");
+    
+    return propertyNames;
+  }
+
+  public void init()
+  {
+    setProperty( "provider1Prop1", "11" );
+    setProperty( "provider1Prop2", "22" );
+    setProperty( "provider1Prop3", "33" );
+    setProperty( "provider1Prop4", "44" );
+  }
+
+  public String getID()
+  {
+    return "testprovider1";
+  }
+  
+
+}
diff --git a/tests/org.eclipse.wst.common.tests/frameworktests/org/eclipse/wst/common/frameworks/operations/tests/manager/TestProvider2.java b/tests/org.eclipse.wst.common.tests/frameworktests/org/eclipse/wst/common/frameworks/operations/tests/manager/TestProvider2.java
new file mode 100644
index 0000000..4e134dd
--- /dev/null
+++ b/tests/org.eclipse.wst.common.tests/frameworktests/org/eclipse/wst/common/frameworks/operations/tests/manager/TestProvider2.java
@@ -0,0 +1,39 @@
+/***************************************************************************************************
+ * Copyright (c) 2003, 2005 IBM Corporation and others. All rights reserved. This program and the
+ * accompanying materials are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors: IBM Corporation - initial API and implementation
+ **************************************************************************************************/
+package org.eclipse.wst.common.frameworks.operations.tests.manager;
+
+import java.util.Set;
+import org.eclipse.wst.common.frameworks.datamodel.AbstractDataModelProvider;
+
+public class TestProvider2 extends AbstractDataModelProvider
+{
+  public Set getPropertyNames(){
+    Set propertyNames = super.getPropertyNames();
+    propertyNames.add("provider2Prop1");
+    propertyNames.add("provider2Prop2");
+    propertyNames.add("provider2Prop3");
+    propertyNames.add("provider2Prop4");
+    
+    return propertyNames;
+  }
+
+  public void init()
+  {
+    setProperty( "provider2Prop1", "1111" );
+    setProperty( "provider2Prop2", "2222" );
+    setProperty( "provider2Prop3", "3333" );
+    setProperty( "provider2Prop4", "4444" );
+  }
+  
+  public String getID()
+  {
+    return "testprovider2";
+  }
+  
+}
diff --git a/tests/org.eclipse.wst.common.tests/plugin.xml b/tests/org.eclipse.wst.common.tests/plugin.xml
index b73056e..7fbae56 100644
--- a/tests/org.eclipse.wst.common.tests/plugin.xml
+++ b/tests/org.eclipse.wst.common.tests/plugin.xml
@@ -24,6 +24,7 @@
       <import plugin="org.eclipse.wst.common.modulecore"/>
       <import plugin="org.eclipse.wst.common.tests.collector" export="true"/>
       <import plugin="org.eclipse.jem.util" />
+      <import plugin="org.eclipse.wst.common.environment"/>
    </requires>
    <extension-point id="DataModelVerifier" name="Data Model Verifier Factory Extension" schema="schema/dataModelVerifier.exsd"/>
 
@@ -40,6 +41,12 @@
             class="org.eclipse.wst.common.frameworks.datamodel.tests.TestDataModelProvider"
             id="org.eclipse.wst.common.frameworks.datamodel.tests.ITestDataModel"/>
       <DataModelProvider
+            class="org.eclipse.wst.common.frameworks.operations.tests.manager.TestProvider1"
+            id="testprovider1"/>
+      <DataModelProvider
+            class="org.eclipse.wst.common.frameworks.operations.tests.manager.TestProvider2"
+            id="testprovider2"/>
+      <DataModelProvider
             class="bogusClass"
             id="bogus"/>
       <ProviderDefinesType
