diff --git a/1.5/plugins/org.eclipse.epf.library.edit/src/org/eclipse/epf/library/edit/util/ProcessUtil.java b/1.5/plugins/org.eclipse.epf.library.edit/src/org/eclipse/epf/library/edit/util/ProcessUtil.java
index 103e5b9..226e818 100644
--- a/1.5/plugins/org.eclipse.epf.library.edit/src/org/eclipse/epf/library/edit/util/ProcessUtil.java
+++ b/1.5/plugins/org.eclipse.epf.library.edit/src/org/eclipse/epf/library/edit/util/ProcessUtil.java
@@ -51,6 +51,7 @@
 import org.eclipse.epf.library.edit.Providers;
 import org.eclipse.epf.library.edit.TngAdapterFactory;
 import org.eclipse.epf.library.edit.command.IActionManager;
+import org.eclipse.epf.library.edit.meta.TypeDefUtil;
 import org.eclipse.epf.library.edit.process.ActivityWrapperItemProvider;
 import org.eclipse.epf.library.edit.process.BSActivityItemProvider;
 import org.eclipse.epf.library.edit.process.BreakdownElementWrapperItemProvider;
@@ -104,6 +105,8 @@
 import org.eclipse.epf.uma.WorkProductDescriptor;
 import org.eclipse.epf.uma.provider.UmaEditPlugin;
 import org.eclipse.epf.uma.util.AssociationHelper;
+import org.eclipse.epf.uma.util.ExtendedReference;
+import org.eclipse.epf.uma.util.ModifiedTypeMeta;
 import org.eclipse.epf.uma.util.Scope;
 import org.eclipse.epf.uma.util.UmaUtil;
 
@@ -2534,6 +2537,20 @@
 						if(AssociationHelper.getOutputFrom(wpd).contains(parentDescriptor)) {
 							features.add(UmaPackage.eINSTANCE.getTaskDescriptor_Output());
 						}
+						
+						ModifiedTypeMeta meta = TypeDefUtil.getMdtMeta(UmaPackage.eINSTANCE.getTask());
+						if (meta != null) {
+						TaskDescriptor td = (TaskDescriptor) parentDescriptor;
+							for (ExtendedReference eRef : meta.getReferences()) {
+								if (ExtendedReference.WorkProducts.equals(eRef.getContributeTo())) {
+									List list = PropUtil.getPropUtil().getExtendedReferenceList(td, eRef, false);
+									if (list.contains(wpd)) {
+										features.add(eRef.getReference());
+									}
+								}
+							}
+						}
+						
 						if(!features.isEmpty()) {
 							if (modelInfo.toString().length() > 0) {
 								modelInfo.append(","); //$NON-NLS-1$
@@ -2583,6 +2600,17 @@
 			modelInfo.append(UmaEditPlugin.INSTANCE
 					.getString("_UI_TaskDescriptor_output_feature")); //$NON-NLS-1$
 		}
+		ModifiedTypeMeta meta = TypeDefUtil.getMdtMeta(UmaPackage.eINSTANCE.getTask());
+		if (meta != null) {
+			for (ExtendedReference eRef : meta.getReferences()) {
+				if (ExtendedReference.WorkProducts.equals(eRef.getContributeTo())) {
+					List list = PropUtil.getPropUtil().getReferencingList(object, eRef);
+					if (list != null && !list.isEmpty()) {
+						modelInfo.append(eRef.getName());
+					}
+				}
+			}
+		}
 	}
 
 	public static Collection getDuplicateDescriptorsAfterReveal(Collection elementsToReveal) {
