diff --git a/bundles/org.eclipse.jst.ws/src/org/eclipse/jst/ws/internal/common/String2TypeRuntimeServerModifier.java b/bundles/org.eclipse.jst.ws/src/org/eclipse/jst/ws/internal/common/String2TypeRuntimeServerModifier.java
index 0b28d1c..adb3c62 100644
--- a/bundles/org.eclipse.jst.ws/src/org/eclipse/jst/ws/internal/common/String2TypeRuntimeServerModifier.java
+++ b/bundles/org.eclipse.jst.ws/src/org/eclipse/jst/ws/internal/common/String2TypeRuntimeServerModifier.java
@@ -17,6 +17,13 @@
 
 public class String2TypeRuntimeServerModifier implements BeanModifier {
 
+	private String SERVICE_RT_ID_KEY = "Service.RuntimeId";  //$NON-NLS-N$
+	private String RUNTIME_ID = "RuntimeId";  //$NON-NLS-N$
+	private String SERVICE_SRV_ID_KEY = "Service.ServerId";  //$NON-NLS-N$
+	private String SERVER_ID = "ServerId";  //$NON-NLS-N$
+	private String SERVICE_PREFIX = "Service.";  //$NON-NLS-N$
+	private String CLIENT_PREFIX = "Client.";  //$NON-NLS-N$
+	
 	/**
 	 * Modifies the supplied TypeRuntimeServer bean with properties in holder.
 	 * If the bean is null, construct a new one and set its properties.
@@ -41,15 +48,23 @@
 			Map typesMap = (Map)holder;
 			String prefix = "";
 			
-			if (typesMap.containsKey("Service.TypeId")||typesMap.containsKey("Service.RuntimeId")||
-					typesMap.containsKey("Service.ServerId"))
-			  	prefix = "Service.";
-			else
-				prefix = "Client.";
 			
-			types.setTypeId((String)typesMap.get(prefix+"TypeId"));
-			types.setRuntimeId((String)typesMap.get(prefix+"RuntimeId"));
-			types.setServerId((String)typesMap.get(prefix+"ServerId"));			
+			if (typesMap.containsKey(SERVICE_RT_ID_KEY)||typesMap.containsKey(SERVICE_SRV_ID_KEY))
+			{
+				prefix = SERVICE_PREFIX;
+			}			  	
+			else
+			{
+				prefix = CLIENT_PREFIX;
+			}
+			
+			String runtimeID = (String)typesMap.get(prefix+RUNTIME_ID);
+			if (runtimeID != null)
+				types.setRuntimeId(runtimeID);		
+			
+			String serverID = (String)typesMap.get(prefix+SERVER_ID);
+			if (serverID  != null)				
+				types.setServerId(serverID);			
 		}
   }
 
diff --git a/bundles/org.eclipse.wst.command.env/src/org/eclipse/wst/command/internal/env/ant/AntEnvironment.java b/bundles/org.eclipse.wst.command.env/src/org/eclipse/wst/command/internal/env/ant/AntEnvironment.java
index 03a0d90..b8b0e8a 100644
--- a/bundles/org.eclipse.wst.command.env/src/org/eclipse/wst/command/internal/env/ant/AntEnvironment.java
+++ b/bundles/org.eclipse.wst.command.env/src/org/eclipse/wst/command/internal/env/ant/AntEnvironment.java
@@ -13,6 +13,7 @@
 import java.lang.reflect.*;
 import java.util.*;
 
+import org.eclipse.core.runtime.CoreException;
 import org.eclipse.core.runtime.IConfigurationElement;
 import org.eclipse.core.runtime.IExtensionPoint;
 import org.eclipse.core.runtime.IExtensionRegistry;
@@ -121,8 +122,9 @@
 								mappingComplete_ = callSetterConstructor(mapping);
 								break;
 								
-							default:								
-								return INIT_OPERATION_DATA_FAIL;
+							default:
+								mappingComplete_ = true;
+								break;								
 							}
 						   step++;
 						}					
@@ -175,7 +177,7 @@
 		   //go to ext registry and get all antMapping extensions
 		   IExtensionRegistry reg = Platform.getExtensionRegistry();
 		   IExtensionPoint extPt = reg.getExtensionPoint(EXT_PT_NAMESPACE, MAPPER_EXT_PT);
-		   Hashtable dataTable = new Hashtable();
+		   Hashtable dataTable = new Hashtable(25);
 		   
 		   IConfigurationElement[] elements = extPt.getConfigurationElements();
 		   
@@ -186,69 +188,83 @@
 			 // look for mappings for this operation
 			 if (obj.equals(operationName))
 			 {				 
-				 String property = ce.getAttribute(MAPPER_PROPERTY_ATTRIBUTE);
 				 String key = ce.getAttribute(MAPPER_KEY_ATTRIBUTE);
-				 String transform = ce.getAttribute(MAPPER_TRANSFORM_ATTRIBUTE);
 				 String value = getProperty(key);
 				 
 				 //check to see if the property for this extension is already in the data table
 				 // if so, there is a m:1 mapping
-				 if (dataTable.containsKey(property))
+				 if (value != null)  //only do a mapping if there is an Ant property value passed in...
 				 {
-					 //get the PropertyDataHolder from the table
-					 PropertyDataHolder holder = (PropertyDataHolder)dataTable.get(property);
-					 //if already have a map - add the current key, value pair
-					 if (holder.map_ != null)
-					 {						
-						holder.map_.put(key, value);
-					 }
-					 // add a new map to the data holder and put first & current key, values into the map
-					 else 
+				
+					 String property = ce.getAttribute(MAPPER_PROPERTY_ATTRIBUTE);
+					 Object transform = null;
+					 try
 					 {
-						holder.map_ = new HashMap();
-						holder.map_.put(holder.key_, holder.value_);
-						holder.key_ = "";
-						holder.value_ = "";	
-						holder.map_.put(key, value);															
+						 transform = ce.createExecutableExtension(MAPPER_TRANSFORM_ATTRIBUTE);	 
 					 }
-				 }
-				 else  //add the extension info to the data table
-				 {
-					 PropertyDataHolder holder = new PropertyDataHolder();
-					 holder.operation_ = operation;
-					 holder.key_ = key;
-					 holder.property_ = property;
-					 holder.transform_ = transform;
-					 holder.value_ = value;
-					 dataTable.put(property, holder);
+					 catch (CoreException cex) {
+					   getLog().log(ILog.ERROR, "ws_ant", 9999, this, "getMappingExtensions", EnvironmentMessages.bind(EnvironmentMessages.MSG_ERR_ANT_DATA_TRANSFORM, key, transform));                  
+					 }
+					 
+					 if (transform != null && transform instanceof BeanModifier/*dataTable.containsKey(property)*/)
+					 {
+						 //get the PropertyDataHolder from the table
+						 PropertyDataHolder holder = (PropertyDataHolder)dataTable.get(property);
+						 if (holder == null)
+						 {
+							 holder = new PropertyDataHolder();
+							 holder.key_ = "";
+							 holder.value_ = "";	
+							 holder.transform_ = transform;
+							 holder.operation_ = operation;
+							 holder.property_ = property;
+							 holder.map_ = new HashMap();
+							 holder.map_.put(key, value);
+							 dataTable.put(property, holder);
+						 }						 
+						 else
+						 {						
+							holder.map_.put(key, value);
+						 }					
+					 }
+					 else  //plain property mapping not a bean
+					 {
+						 PropertyDataHolder holder = new PropertyDataHolder();
+						 holder.operation_ = operation;
+						 holder.key_ = key;
+						 holder.property_ = property;
+						 holder.transform_ = transform;
+						 holder.value_ = value;
+						 dataTable.put(property, holder);
+					 }			 
 				 }			 
-			 }			 
-		  }    	   
+		      }    	 
+		  }
 		   return dataTable.elements();
 		}     
 	   
 	   private boolean transformAndSet(PropertyDataHolder mapping, String setterMethodName)
 	   {
-			String transform = mapping.transform_;
+			Object transform = mapping.transform_;
 			if (transform != null)
 			{
 				// get transform class & create setter parameters		
 				try
 				{
-					Object classObject = Class.forName(transform).newInstance();
+					//Object classObject = Class.forName(transform).newInstance();
 					Object param = new Object();
-					if (classObject instanceof Transformer)
+					if (transform instanceof Transformer)
 					{
-						Transformer transformer = (Transformer)classObject;						
+						Transformer transformer = (Transformer)transform;						
 						// transform the property value
 						param = transformer.transform(mapping.value_);						
 					}
-					else if (mapping.map_ != null && classObject instanceof BeanModifier)
+					else if (mapping.map_ != null && transform instanceof BeanModifier)
 					{
-						  BeanModifier modifier = (BeanModifier)classObject;		
+						  BeanModifier modifier = (BeanModifier)transform;		
                           Method getter = getGetterMethod(mapping);
 						  param = getter.invoke(mapping.operation_, new Object[]{});						  
-						  modifier.modify(mapping.map_, param);
+						  modifier.modify(param, mapping.map_);
 					}												
 					return callSetter(mapping.operation_, param, setterMethodName);
 					
diff --git a/bundles/org.eclipse.wst.command.env/src/org/eclipse/wst/command/internal/env/ant/PropertyDataHolder.java b/bundles/org.eclipse.wst.command.env/src/org/eclipse/wst/command/internal/env/ant/PropertyDataHolder.java
index be9b75c..509ab6b 100644
--- a/bundles/org.eclipse.wst.command.env/src/org/eclipse/wst/command/internal/env/ant/PropertyDataHolder.java
+++ b/bundles/org.eclipse.wst.command.env/src/org/eclipse/wst/command/internal/env/ant/PropertyDataHolder.java
@@ -24,7 +24,7 @@
 
 public class PropertyDataHolder {
 	   public AbstractDataModelOperation operation_;
-	   public String transform_;
+	   public Object transform_;
 	   public String key_;
 	   public String property_;
 	   public String value_;		
