Index: src/org/teiid/designer/modelgenerator/wsdl/ui/wizards/soap/ImportWsdlSchemaHandler.java
===================================================================
--- src/org/teiid/designer/modelgenerator/wsdl/ui/wizards/soap/ImportWsdlSchemaHandler.java	(revision 2466)
+++ src/org/teiid/designer/modelgenerator/wsdl/ui/wizards/soap/ImportWsdlSchemaHandler.java	(working copy)
@@ -7,33 +7,18 @@
  */
 package org.teiid.designer.modelgenerator.wsdl.ui.wizards.soap;
 
-import java.util.ArrayList;
 import java.util.List;
 
-import org.eclipse.emf.common.util.EList;
 import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.xsd.XSDComplexTypeContent;
-import org.eclipse.xsd.XSDComplexTypeDefinition;
-import org.eclipse.xsd.XSDElementDeclaration;
-import org.eclipse.xsd.XSDModelGroup;
-import org.eclipse.xsd.XSDModelGroupDefinition;
-import org.eclipse.xsd.XSDParticle;
-import org.eclipse.xsd.XSDParticleContent;
 import org.eclipse.xsd.XSDSchema;
-import org.eclipse.xsd.XSDSimpleTypeDefinition;
-import org.eclipse.xsd.XSDTypeDefinition;
-import org.eclipse.xsd.XSDWildcard;
 import org.eclipse.xsd.impl.XSDElementDeclarationImpl;
 import org.eclipse.xsd.impl.XSDParticleImpl;
 import org.teiid.designer.modelgenerator.wsdl.ui.wizards.soap.SchemaTreeModel.SchemaNode;
 
-import com.metamatrix.modeler.core.ModelerCoreException;
 import com.metamatrix.modeler.core.types.DatatypeConstants.RuntimeTypeNames;
 import com.metamatrix.modeler.internal.transformation.util.SqlConstants;
 import com.metamatrix.modeler.modelgenerator.wsdl.model.Model;
 import com.metamatrix.modeler.modelgenerator.wsdl.model.ModelGenerationException;
-import com.metamatrix.modeler.modelgenerator.wsdl.model.Operation;
-import com.metamatrix.modeler.modelgenerator.wsdl.model.Part;
 import com.metamatrix.modeler.modelgenerator.wsdl.schema.extensions.SOAPSchemaProcessor;
 import com.metamatrix.modeler.modelgenerator.wsdl.ui.internal.wizards.WSDLImportWizardManager;
 import com.metamatrix.modeler.schema.tools.model.schema.SchemaModel;
@@ -48,123 +33,22 @@
 	OperationsDetailsPage operationsDetailsPage;
 	SchemaTreeModel schemaTreeModel = null;
 	SchemaNode rootnode = null;
+	
+	ImportWsdlSchemaAnalyzer schemaAnayzer; 
 
 	public ImportWsdlSchemaHandler(WSDLImportWizardManager manager,
 			OperationsDetailsPage operationsDetailsPage) {
 		super();
 		this.importManager = manager;
 		this.operationsDetailsPage = operationsDetailsPage;
+		this.schemaTreeModel = new SchemaTreeModel();
+		this.schemaAnayzer = new ImportWsdlSchemaAnalyzer(manager, this.schemaTreeModel);
 	}
-
+	
 	public List<Object> getSchemaForSelectedOperation(final int type,
 			ProcedureGenerator generator) {
-
-		Model wsdlModel = null;
-		Object elementDeclaration = null;
-
-		try {
-			wsdlModel = importManager.getWSDLModel();
-		} catch (ModelGenerationException e) {
-			throw new RuntimeException(e);
-		}
-
-		XSDSchema[] schemas = wsdlModel.getSchemas();
-
-		Operation selectedOperation = generator.getOperation();
-		String partElementName = null;
-		Part[] partArray = null;
-
-		if (type == ProcedureInfo.REQUEST) {
-			if (selectedOperation.getInputMessage() != null) {
-				partArray = selectedOperation.getInputMessage().getParts();
-			}
-		} else {
-			if (selectedOperation.getOutputMessage() != null) {
-				partArray = selectedOperation.getOutputMessage().getParts();
-			}
-		}
-
-		List<Object> elementArrayList = new ArrayList<Object>();
-
-		for (Part part : partArray) {
-			partElementName = getPartElementName(part);
-			elementDeclaration = null;
-
-			boolean foundElement = false;
-
-			for (XSDSchema schema : schemas) {
-				
-				EList<XSDElementDeclaration> elements = schema
-						.getElementDeclarations();
-				for (XSDElementDeclaration element : elements) {
-					String elementName = element.getName();
-					if (elementName.equals(partElementName)) {
-						if (element.getTypeDefinition() instanceof XSDSimpleTypeDefinition) {
-							elementDeclaration = element;
-						} else {
-							elementDeclaration = element
-									.getTypeDefinition();
-						}
-
-						foundElement = true;
-						if (type == ProcedureInfo.RESPONSE)
-							try {
-								describe(schema, elementName, (XSDElementDeclarationImpl)element);
-							} catch (ModelerCoreException ex) {
-								throw new RuntimeException(ex);
-							}
-						elementArrayList.add(elementDeclaration);
-						break;
-					}
-				}
-				
-
-				if (foundElement == true)
-					break;
-
-				if (elementDeclaration == null) {
-
-					EList<XSDTypeDefinition> types = schema.getTypeDefinitions();
-					for (XSDTypeDefinition xsdType : types) {
-						String elementName = xsdType.getName();
-						if (elementName.equals(partElementName)) {
-							elementDeclaration = xsdType;
-							foundElement = true;
-							if (type == ProcedureInfo.RESPONSE)
-								try {
-									describe(schema, elementName, null);
-								} catch (ModelerCoreException ex) {
-									throw new RuntimeException(ex);
-								}
-							elementArrayList.add(elementDeclaration);
-							break;
-						}
-					}
-				}
-
-				// We already found our element. No need to look through anymore
-				// schemas
-				if (foundElement) {
-					foundElement = false;
-					break;
-				}
-			}
-
-		}
-
-		return elementArrayList;
+		return schemaAnayzer.getSchemaForSelectedOperation(type, generator);
 	}
-	
-	private String getPartElementName(Part part) {
-		String partElementName = null;
-
-		partElementName = part.getTypeName();
-		if (partElementName == null) {
-			partElementName = part.getElementName();
-		}
-
-		return partElementName;
-	}
 
 	public String createRequestColumn(int type, IStructuredSelection selection,
 			ProcedureInfo requestInfo) {
@@ -318,126 +202,19 @@
 		return operationsDetailsPage.getSchemaLabelProvider().getText(obj);
 	}
 
-	// =================================================
-
-	//Traverse Element to build parent-child relationships used
-	//to determine XPath
-	private void describe(XSDSchema schema, String element, XSDElementDeclaration elementDeclaration)
-			throws ModelerCoreException {
-		schemaTreeModel = new SchemaTreeModel();
-		rootnode = schemaTreeModel.new SchemaNode();
-		XSDElementDeclaration xed = (elementDeclaration == null ? schema.resolveElementDeclaration(element) : elementDeclaration);
-		XSDTypeDefinition xtd = elementDeclaration.getTypeDefinition();
-
-		if (xtd instanceof XSDComplexTypeDefinition) {
-			rootnode.setElement(xed);
-			rootnode.setRoot(true);
-			XSDComplexTypeDefinition complexType = (XSDComplexTypeDefinition) xtd;
-			addComplexTypeDefToTree(complexType, rootnode, true);
-		} else if (xtd instanceof XSDSimpleTypeDefinition) {
-			XSDSimpleTypeDefinition simpleType = (XSDSimpleTypeDefinition) xtd;
-			addSimpleTypeDefToTree(simpleType, rootnode);
-		} else {
-			XSDSimpleTypeDefinition simpleType = (XSDSimpleTypeDefinition) xed
-					.getType();
-			addElementDeclarationToTree(xed, simpleType, rootnode);
-		}
-	}
-
-	private void addElementDeclarationToTree(XSDElementDeclaration element,
-			XSDSimpleTypeDefinition type, SchemaNode node)
-			throws ModelerCoreException {
-		String name = element.getName();
-		if (null == name) {
-			name = element.getAliasName();
-		}
-		schemaTreeModel.getMapNode().put(element, node);
-
-	}
-
-	private void addComplexTypeDefToTree(XSDComplexTypeDefinition complexType,
-			SchemaNode node, boolean isRootNode) throws ModelerCoreException {
-		XSDComplexTypeContent content = complexType.getContent();
-		schemaTreeModel.getMapNode().put(complexType, node);
-		if (content instanceof XSDSimpleTypeDefinition) {
-			XSDSimpleTypeDefinition simpleType = (XSDSimpleTypeDefinition) content;
-			addSimpleTypeDefToTree(simpleType, node);
-		} else if (content instanceof XSDParticle) {
-			XSDParticle particle = (XSDParticle) content;
-			addXSDParticleToTree(particle, node, null);
-		}
-	}
-
-	private void addXSDParticleToTree(XSDParticle particle, SchemaNode parent,
-			SchemaNode node) throws ModelerCoreException {
-		XSDParticleContent content = particle.getContent();
-		if (content instanceof XSDWildcard) {
-			// nothing
-		} else if (content instanceof XSDModelGroup) {
-			XSDModelGroup group = (XSDModelGroup) content;
-			EList<XSDParticle> contents = group.getContents();
-			node = schemaTreeModel.new SchemaNode(content, parent, null, false);
-			if (parent!=null){
-				parent.addChild(node);
-			}
-			for (XSDParticle xsdParticle : contents) {
-				addXSDParticleToTree(xsdParticle, parent, node);
-			}
-		} else if (content instanceof XSDElementDeclaration) {
-			XSDElementDeclaration element = (XSDElementDeclaration) content;
-			node = schemaTreeModel.new SchemaNode(particle, parent, null, false);
-			if (parent!=null){
-				parent.addChild(node);
-			}
-			schemaTreeModel.getMapNode().put(particle, node);
-			if (element.isElementDeclarationReference()) {
-				element = element.getResolvedElementDeclaration();
-			}
-			if (element.getType() instanceof XSDSimpleTypeDefinition) {
-				XSDSimpleTypeDefinition type = (XSDSimpleTypeDefinition) element
-						.getType();
-				addElementDeclarationToTree(element, type, node);
-			} else {
-				XSDComplexTypeDefinition type = (XSDComplexTypeDefinition) element
-						.getType();
-				String name = element.getName();
-				if (null == name) {
-					name = element.getAliasName();
-				}
-				
-				addComplexTypeDefToTree(type, node, false);
-			}
-		} else if (content instanceof XSDModelGroupDefinition) {
-			XSDModelGroupDefinition groupDefinition = (XSDModelGroupDefinition) content;
-			XSDModelGroup group = groupDefinition.getModelGroup();
-			EList<XSDParticle> contents = group.getContents();
-			for (XSDParticle xsdParticle : contents) {
-				addXSDParticleToTree(xsdParticle, node, null);
-			}
-		}
-	}
-
-	private void addSimpleTypeDefToTree(XSDSimpleTypeDefinition simpleType,
-			SchemaNode node) throws ModelerCoreException {
-		String name = simpleType.getName();
-		if (null == name) {
-			name = simpleType.getAliasName();
-		}
-	}
-
 	private void getParentXpath(Object element, StringBuilder parentXpath) {
 		SchemaNode node = this.schemaTreeModel.getMapNode().get(element);
 		String rootPath = this.schemaTreeModel.getRootNodeXpath();
-		String parentXPath = node == null ? "" : node.getParentXpath();
+		String parentXPath = node == null ? "" : node.getParentXpath(); //$NON-NLS-1$
 		parentXpath.append(rootPath).append(parentXPath);
 	}
 	
 	private void getRelativeXpath(Object element, StringBuilder xpath) {
 		SchemaNode node = this.schemaTreeModel.getMapNode().get(element);
-		String relativeXpath = node == null ? "" : node.getRelativeXpath();
+		String relativeXpath = node == null ? "" : node.getRelativeXpath(); //$NON-NLS-1$
 		//We need to append the full path and then remove the root path.
 		//This allows us to resolve nested complex types
-		String parentXPath = node == null ? "" : node.getParentXpath();
+		String parentXPath = node == null ? "" : node.getParentXpath(); //$NON-NLS-1$
 		parentXPath = parentXPath.replace(this.schemaTreeModel.getRootPath(), ""); //$NON-NLS-1$
 		xpath.append(parentXPath).append(relativeXpath);
 	}
Index: src/org/teiid/designer/modelgenerator/wsdl/ui/wizards/soap/ImportWsdlSchemaAnalyzer.java
===================================================================
--- src/org/teiid/designer/modelgenerator/wsdl/ui/wizards/soap/ImportWsdlSchemaAnalyzer.java	(revision 0)
+++ src/org/teiid/designer/modelgenerator/wsdl/ui/wizards/soap/ImportWsdlSchemaAnalyzer.java	(revision 0)
@@ -0,0 +1,264 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ *
+ * See the LEGAL.txt file distributed with this work for information regarding copyright ownership and licensing.
+ *
+ * See the AUTHORS.txt file distributed with this work for a full listing of individual contributors.
+ */
+package org.teiid.designer.modelgenerator.wsdl.ui.wizards.soap;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.xsd.XSDComplexTypeContent;
+import org.eclipse.xsd.XSDComplexTypeDefinition;
+import org.eclipse.xsd.XSDElementDeclaration;
+import org.eclipse.xsd.XSDModelGroup;
+import org.eclipse.xsd.XSDModelGroupDefinition;
+import org.eclipse.xsd.XSDParticle;
+import org.eclipse.xsd.XSDParticleContent;
+import org.eclipse.xsd.XSDSchema;
+import org.eclipse.xsd.XSDSimpleTypeDefinition;
+import org.eclipse.xsd.XSDTypeDefinition;
+import org.eclipse.xsd.XSDWildcard;
+import org.teiid.designer.modelgenerator.wsdl.ui.wizards.soap.SchemaTreeModel.SchemaNode;
+
+import com.metamatrix.modeler.core.ModelerCoreException;
+import com.metamatrix.modeler.modelgenerator.wsdl.model.Model;
+import com.metamatrix.modeler.modelgenerator.wsdl.model.ModelGenerationException;
+import com.metamatrix.modeler.modelgenerator.wsdl.model.Operation;
+import com.metamatrix.modeler.modelgenerator.wsdl.model.Part;
+import com.metamatrix.modeler.modelgenerator.wsdl.ui.internal.wizards.WSDLImportWizardManager;
+
+public class ImportWsdlSchemaAnalyzer {
+
+	WSDLImportWizardManager importManager;
+	SchemaTreeModel schemaTreeModel;
+
+	public ImportWsdlSchemaAnalyzer(WSDLImportWizardManager manager, SchemaTreeModel schemaTreeModel) {
+		super();
+		this.importManager = manager;
+		this.schemaTreeModel = schemaTreeModel;
+	}
+
+	public SchemaTreeModel getSchemaTreeModel() {
+		return this.schemaTreeModel;
+	}
+
+	public List<Object> getSchemaForSelectedOperation(final int type,
+			ProcedureGenerator generator) {
+
+		Model wsdlModel = null;
+		Object elementDeclaration = null;
+
+		try {
+			wsdlModel = importManager.getWSDLModel();
+		} catch (ModelGenerationException e) {
+			throw new RuntimeException(e);
+		}
+
+		XSDSchema[] schemas = wsdlModel.getSchemas();
+
+		Operation selectedOperation = generator.getOperation();
+		String partElementName = null;
+		Part[] partArray = null;
+
+		if (type == ProcedureInfo.REQUEST) {
+			if (selectedOperation.getInputMessage() != null) {
+				partArray = selectedOperation.getInputMessage().getParts();
+			}
+		} else {
+			if (selectedOperation.getOutputMessage() != null) {
+				partArray = selectedOperation.getOutputMessage().getParts();
+			}
+		}
+
+		List<Object> elementArrayList = new ArrayList<Object>();
+
+		for (Part part : partArray) {
+			partElementName = getPartElementName(part);
+			elementDeclaration = null;
+
+			boolean foundElement = false;
+
+			for (XSDSchema schema : schemas) {
+				EList<XSDTypeDefinition> types = schema.getTypeDefinitions();
+				for (XSDTypeDefinition xsdType : types) {
+					String elementName = xsdType.getName();
+					if (elementName.equals(partElementName)) {
+						elementDeclaration = xsdType;
+						foundElement = true;
+						if (type == ProcedureInfo.RESPONSE)
+							try {
+								describe(schema, elementName);
+							} catch (ModelerCoreException ex) {
+								throw new RuntimeException(ex);
+							}
+						elementArrayList.add(elementDeclaration);
+						break;
+					}
+				}
+
+				if (foundElement == true)
+					continue;
+
+				if (elementDeclaration == null) {
+
+					EList<XSDElementDeclaration> elements = schema
+							.getElementDeclarations();
+					for (XSDElementDeclaration element : elements) {
+						String elementName = element.getName();
+						if (elementName.equals(partElementName)) {
+							if (element.getTypeDefinition() instanceof XSDSimpleTypeDefinition) {
+								elementDeclaration = element;
+							} else {
+								elementDeclaration = element
+										.getTypeDefinition();
+							}
+
+							foundElement = true;
+							if (type == ProcedureInfo.RESPONSE)
+								try {
+									describe(schema, elementName);
+								} catch (ModelerCoreException ex) {
+									throw new RuntimeException(ex);
+								}
+							elementArrayList.add(elementDeclaration);
+							break;
+						}
+					}
+				}
+
+				// We already found our element. No need to look through anymore
+				// schemas
+				if (foundElement) {
+					foundElement = false;
+					break;
+				}
+			}
+
+		}
+
+		return elementArrayList;
+	}
+
+	private String getPartElementName(Part part) {
+		String partElementName = null;
+
+		partElementName = part.getTypeName();
+		if (partElementName == null) {
+			partElementName = part.getElementName();
+		}
+
+		return partElementName;
+	}
+
+	// =================================================
+
+	// Traverse Element to build parent-child relationships used
+	// to determine XPath
+	private void describe(XSDSchema schema, String element)
+			throws ModelerCoreException {
+		SchemaNode rootnode = schemaTreeModel.new SchemaNode();
+		XSDElementDeclaration xed = schema.resolveElementDeclaration(element);
+		XSDTypeDefinition xtd = xed.getTypeDefinition();
+
+		if (xtd instanceof XSDComplexTypeDefinition) {
+			rootnode.setElement(xed);
+			rootnode.setRoot(true);
+			XSDComplexTypeDefinition complexType = (XSDComplexTypeDefinition) xtd;
+			addComplexTypeDefToTree(schemaTreeModel, complexType, rootnode, true);
+		} else if (xtd instanceof XSDSimpleTypeDefinition) {
+			XSDSimpleTypeDefinition simpleType = (XSDSimpleTypeDefinition) xtd;
+			addSimpleTypeDefToTree(simpleType, rootnode);
+		} else {
+			XSDSimpleTypeDefinition simpleType = (XSDSimpleTypeDefinition) xed.getType();
+			addElementDeclarationToTree(schemaTreeModel, xed, simpleType, rootnode);
+		}
+	}
+
+	private void addElementDeclarationToTree(
+			SchemaTreeModel schemaTreeModel, 
+			XSDElementDeclaration element,
+			XSDSimpleTypeDefinition type, SchemaNode node)
+			throws ModelerCoreException {
+		String name = element.getName();
+		if (null == name) {
+			name = element.getAliasName();
+		}
+		schemaTreeModel.getMapNode().put(element, node);
+
+	}
+
+	private void addComplexTypeDefToTree(
+			SchemaTreeModel schemaTreeModel, 
+			XSDComplexTypeDefinition complexType,
+			SchemaNode node, boolean isRootNode) throws ModelerCoreException {
+		XSDComplexTypeContent content = complexType.getContent();
+		schemaTreeModel.getMapNode().put(complexType, node);
+		if (content instanceof XSDSimpleTypeDefinition) {
+			XSDSimpleTypeDefinition simpleType = (XSDSimpleTypeDefinition) content;
+			addSimpleTypeDefToTree(simpleType, node);
+		} else if (content instanceof XSDParticle) {
+			XSDParticle particle = (XSDParticle) content;
+			addXSDParticleToTree(schemaTreeModel, particle, node, null);
+		}
+	}
+
+	private void addXSDParticleToTree(
+			SchemaTreeModel schemaTreeModel, 
+			XSDParticle particle, 
+			SchemaNode parent,
+			SchemaNode node) throws ModelerCoreException {
+		XSDParticleContent content = particle.getContent();
+		if (content instanceof XSDWildcard) {
+			// nothing
+		} else if (content instanceof XSDModelGroup) {
+			XSDModelGroup group = (XSDModelGroup) content;
+			EList<XSDParticle> contents = group.getContents();
+			for (XSDParticle xsdParticle : contents) {
+				addXSDParticleToTree(schemaTreeModel, xsdParticle, parent, node);
+			}
+		} else if (content instanceof XSDElementDeclaration) {
+			XSDElementDeclaration element = (XSDElementDeclaration) content;
+			node = schemaTreeModel.new SchemaNode(particle, parent, null, false);
+			if (parent != null) {
+				parent.addChild(node);
+			}
+			schemaTreeModel.getMapNode().put(particle, node);
+			if (element.isElementDeclarationReference()) {
+				element = element.getResolvedElementDeclaration();
+			}
+			if (element.getType() instanceof XSDSimpleTypeDefinition) {
+				XSDSimpleTypeDefinition type = (XSDSimpleTypeDefinition) element
+						.getType();
+				addElementDeclarationToTree(schemaTreeModel, element, type, node);
+			} else {
+				XSDComplexTypeDefinition type = (XSDComplexTypeDefinition) element
+						.getType();
+				String name = element.getName();
+				if (null == name) {
+					name = element.getAliasName();
+				}
+
+				addComplexTypeDefToTree(schemaTreeModel, type, node, false);
+			}
+		} else if (content instanceof XSDModelGroupDefinition) {
+			XSDModelGroupDefinition groupDefinition = (XSDModelGroupDefinition) content;
+			XSDModelGroup group = groupDefinition.getModelGroup();
+			EList<XSDParticle> contents = group.getContents();
+			for (XSDParticle xsdParticle : contents) {
+				addXSDParticleToTree(schemaTreeModel, xsdParticle, node, null);
+			}
+		}
+	}
+
+	private void addSimpleTypeDefToTree(XSDSimpleTypeDefinition simpleType,
+			SchemaNode node) throws ModelerCoreException {
+		String name = simpleType.getName();
+		if (null == name) {
+			name = simpleType.getAliasName();
+		}
+	}
+}
\ No newline at end of file
Index: src/org/teiid/designer/modelgenerator/wsdl/ui/wizards/soap/SchemaTreeContentProvider.java
===================================================================
--- src/org/teiid/designer/modelgenerator/wsdl/ui/wizards/soap/SchemaTreeContentProvider.java	(revision 2466)
+++ src/org/teiid/designer/modelgenerator/wsdl/ui/wizards/soap/SchemaTreeContentProvider.java	(working copy)
@@ -9,19 +9,15 @@
 
 import java.util.ArrayList;
 import java.util.Collection;
-import java.util.Collections;
 import java.util.List;
-import java.util.Map;
 
 import org.eclipse.emf.common.notify.AdapterFactory;
-import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
 import org.eclipse.emf.edit.ui.provider.AdapterFactoryContentProvider;
 import org.eclipse.xsd.XSDComplexTypeDefinition;
 import org.eclipse.xsd.XSDParticle;
+import org.eclipse.xsd.impl.XSDElementDeclarationImpl;
 
 public class SchemaTreeContentProvider extends AdapterFactoryContentProvider {
-	
-	private static final Class<?> IStructuredItemContentProviderClass = IStructuredItemContentProvider.class;
 
 	public SchemaTreeContentProvider(AdapterFactory adapterFactory) {
 		super(adapterFactory);
@@ -80,4 +76,37 @@
 		
 		return true;
 	}
+	
+	public boolean hasElementsToSelect(List<Object> someElements) {
+		boolean foundElement = false;
+		for( Object element : someElements) {
+			foundElement = hasElementsToSelect(element);
+			if( foundElement) {
+				break;
+			}
+		}
+		
+		return foundElement;
+	}
+	
+	private boolean hasElementsToSelect(Object someElement) {
+		boolean foundElement = false;
+		Object[] children = getChildren(someElement);
+		
+		for( Object child : children ) {
+			if( child instanceof XSDElementDeclarationImpl) {
+				foundElement = true;
+				break;
+			} else if( child instanceof XSDParticle && hasChildren(child) ) {
+				if( child != someElement) {
+					foundElement = hasElementsToSelect(child);
+					if( foundElement) {
+						break;
+					}
+				}
+			}
+		}
+		
+		return foundElement;
+	}
 }
Index: src/org/teiid/designer/modelgenerator/wsdl/ui/wizards/soap/ProcedureInfo.java
===================================================================
--- src/org/teiid/designer/modelgenerator/wsdl/ui/wizards/soap/ProcedureInfo.java	(revision 2466)
+++ src/org/teiid/designer/modelgenerator/wsdl/ui/wizards/soap/ProcedureInfo.java	(working copy)
@@ -10,6 +10,7 @@
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.HashMap;
+import java.util.List;
 import java.util.Map;
 import java.util.Properties;
 
@@ -49,6 +50,10 @@
 	
 	private ProcedureGenerator generator;
 	
+	private List<Object> operationSchema;
+	
+	private boolean hasSelectableRequestElements = false;
+	
 	/**
      * The unique procedureName defining a procedure containing the generated SELECT SQL statement
      */
@@ -362,6 +367,22 @@
 		return this.changed;
 	}
 	
+	public List<Object> getOperationSchema() {
+		return this.operationSchema;
+	}
+
+	public void setOperationSchema(List<Object> operationSchema) {
+		this.operationSchema = operationSchema;
+	}
+	
+	public void setHasSelectableRequestElements(boolean value) {
+		this.hasSelectableRequestElements = value;
+	}
+	
+	public boolean hasSelectableRequestElements() {
+		return this.hasSelectableRequestElements;
+	}
+
 	abstract String getSqlStringTemplate();
 	
 	abstract String getSqlString(Properties properties);
Index: src/org/teiid/designer/modelgenerator/wsdl/ui/wizards/soap/ProcedureGenerator.java
===================================================================
--- src/org/teiid/designer/modelgenerator/wsdl/ui/wizards/soap/ProcedureGenerator.java	(revision 2466)
+++ src/org/teiid/designer/modelgenerator/wsdl/ui/wizards/soap/ProcedureGenerator.java	(working copy)
@@ -7,12 +7,14 @@
 */
 package org.teiid.designer.modelgenerator.wsdl.ui.wizards.soap;
 
+import java.util.List;
 import java.util.Properties;
 
 import org.eclipse.core.runtime.IStatus;
 import org.eclipse.core.runtime.MultiStatus;
 import org.eclipse.core.runtime.Status;
 import org.eclipse.osgi.util.NLS;
+import org.eclipse.xsd.provider.XSDSemanticItemProviderAdapterFactory;
 import org.teiid.designer.modelgenerator.wsdl.ui.Messages;
 import org.teiid.language.SQLConstants;
 
@@ -80,7 +82,6 @@
 	
 	private boolean initializing;
 	
-
 	public ProcedureGenerator(Operation operation, WSDLImportWizardManager importManager) {
 		super();
 		this.initializing = true;
@@ -94,6 +95,20 @@
 		this.bindingType = operation.getBinding().getPort().getBindingType();
 		this.soapAction = operation.getSOAPAction();
 		this.initializing = false;
+		
+		setSchema();
+	}
+	
+	private void setSchema() {
+		ImportWsdlSchemaAnalyzer schemaAnayzer = new ImportWsdlSchemaAnalyzer(this.importManager, new SchemaTreeModel());
+		
+		List<Object> requestSchema = schemaAnayzer.getSchemaForSelectedOperation(ProcedureInfo.REQUEST, this);
+		this.requestInfo.setOperationSchema(requestSchema);
+		List<Object> responseSchema = schemaAnayzer.getSchemaForSelectedOperation(ProcedureInfo.REQUEST, this);
+		this.responseInfo.setOperationSchema(responseSchema);
+
+		SchemaTreeContentProvider contentProvider = new SchemaTreeContentProvider(new XSDSemanticItemProviderAdapterFactory());
+		this.requestInfo.setHasSelectableRequestElements(contentProvider.hasElementsToSelect(requestSchema));
 	}
 
 	public WSDLImportWizardManager getImportManager() {
Index: src/org/teiid/designer/modelgenerator/wsdl/ui/wizards/soap/OperationsDetailsPage.java
===================================================================
--- src/org/teiid/designer/modelgenerator/wsdl/ui/wizards/soap/OperationsDetailsPage.java	(revision 2466)
+++ src/org/teiid/designer/modelgenerator/wsdl/ui/wizards/soap/OperationsDetailsPage.java	(working copy)
@@ -592,22 +592,18 @@
 
 	void updateSchemaTree(int type) {
 		if (type == REQUEST) {
-			requestBodySchemaContentsGroup.setInput(getSchemaForSelectedOperation(type));
-			requestHeaderSchemaContentsGroup.setInput(getSchemaForSelectedOperation(type));
+			requestBodySchemaContentsGroup.setInput(this.procedureGenerator.getRequestInfo().getOperationSchema());
+			requestHeaderSchemaContentsGroup.setInput(this.procedureGenerator.getRequestInfo().getOperationSchema());
 		} else if (type == RESPONSE) {
-			responseBodySchemaContentsGroup.setInput(getSchemaForSelectedOperation(type));
-			responseHeaderSchemaContentsGroup.setInput(getSchemaForSelectedOperation(type));
+			responseBodySchemaContentsGroup.setInput(this.procedureGenerator.getResponseInfo().getOperationSchema());
+			responseHeaderSchemaContentsGroup.setInput(this.procedureGenerator.getResponseInfo().getOperationSchema());
 		} else {
-			requestBodySchemaContentsGroup.setInput(getSchemaForSelectedOperation(REQUEST));
-			requestHeaderSchemaContentsGroup.setInput(getSchemaForSelectedOperation(REQUEST));
-			responseBodySchemaContentsGroup.setInput(getSchemaForSelectedOperation(RESPONSE));
-			responseHeaderSchemaContentsGroup.setInput(getSchemaForSelectedOperation(RESPONSE));
+			requestBodySchemaContentsGroup.setInput(this.procedureGenerator.getRequestInfo().getOperationSchema());
+			requestHeaderSchemaContentsGroup.setInput(this.procedureGenerator.getRequestInfo().getOperationSchema());
+			responseBodySchemaContentsGroup.setInput(this.procedureGenerator.getResponseInfo().getOperationSchema());
+			responseHeaderSchemaContentsGroup.setInput(this.procedureGenerator.getResponseInfo().getOperationSchema());
 		}
 	}
-	
-	List<Object> getSchemaForSelectedOperation(int type) {
-		return this.schemaHandler.getSchemaForSelectedOperation(type, this.procedureGenerator);
-	}
 
 	/**
 	 * @see org.eclipse.jface.dialogs.IDialogPage#dispose()
Index: src/org/teiid/designer/modelgenerator/wsdl/ui/wizards/soap/RequestInfo.java
===================================================================
--- src/org/teiid/designer/modelgenerator/wsdl/ui/wizards/soap/RequestInfo.java	(revision 2466)
+++ src/org/teiid/designer/modelgenerator/wsdl/ui/wizards/soap/RequestInfo.java	(working copy)
@@ -69,6 +69,8 @@
 		}
 		
 		if( getBodyColumnInfoList().length == 0 ) {
+			// Check to see if operation has input elements
+			//getGenerator().getOperation().getInputMessage().getParts()
 			status.add(new Status(IStatus.WARNING, ProcedureGenerator.PLUGIN_ID,
 				NLS.bind(Messages.Error_NoElementsDefinedForRequestProcedureForOperation_0, 
 					getOperation().getName())));
