diff --git a/1.5/plugins/org.eclipse.epf.library.edit/src/org/eclipse/epf/library/edit/meta/IMetaDef.java b/1.5/plugins/org.eclipse.epf.library.edit/src/org/eclipse/epf/library/edit/meta/IMetaDef.java
index 2a94ee3..d5cfeaf 100644
--- a/1.5/plugins/org.eclipse.epf.library.edit/src/org/eclipse/epf/library/edit/meta/IMetaDef.java
+++ b/1.5/plugins/org.eclipse.epf.library.edit/src/org/eclipse/epf/library/edit/meta/IMetaDef.java
@@ -62,6 +62,8 @@
 	
 	public static final String attachment = "attachment"; 						//$NON-NLS-1$
 	
+	public static final String treeBrowser = "treeBrowser"; 						//$NON-NLS-1$
+	
 	//APIs
 	public String getName();
 	
diff --git a/1.5/plugins/org.eclipse.epf.library.edit/src/org/eclipse/epf/library/edit/meta/internal/ExtendedReferenceImpl.java b/1.5/plugins/org.eclipse.epf.library.edit/src/org/eclipse/epf/library/edit/meta/internal/ExtendedReferenceImpl.java
index dddaf18..1bba756 100644
--- a/1.5/plugins/org.eclipse.epf.library.edit/src/org/eclipse/epf/library/edit/meta/internal/ExtendedReferenceImpl.java
+++ b/1.5/plugins/org.eclipse.epf.library.edit/src/org/eclipse/epf/library/edit/meta/internal/ExtendedReferenceImpl.java
@@ -26,6 +26,8 @@
 	
 	private String contributeTo;
 	
+	private boolean createUDTChild;
+	
 	private ExtendedOppositeImpl opposite;
 
 	public ExtendedReferenceImpl(MetaElement parent) {
@@ -71,6 +73,9 @@
 			opposite.parseElement(childElement);
 		}
 		
+
+		createUDTChild = new Boolean(element.getAttribute(IMetaDef.treeBrowser));
+		
 		qualifiedReferences = new ArrayList<QualifiedReference>();
 		List<Element> rqElements = XMLUtil.getChildElementsByTagName(element, IMetaDef.REFERENCE_QUALIFIERS);
 		if (rqElements == null || rqElements.isEmpty()) {
@@ -86,6 +91,10 @@
 		}
 	}
 	
+	public boolean isCreateUDTChild() {
+		return createUDTChild;
+	}
+
 	public List<String> getValueTypes() {		
 		return valueTypes;
 	}
diff --git a/1.5/plugins/org.eclipse.epf.publishing/src/org/eclipse/epf/publishing/services/ConfigurationViewBuilder.java b/1.5/plugins/org.eclipse.epf.publishing/src/org/eclipse/epf/publishing/services/ConfigurationViewBuilder.java
index 755a861..8070a61 100644
--- a/1.5/plugins/org.eclipse.epf.publishing/src/org/eclipse/epf/publishing/services/ConfigurationViewBuilder.java
+++ b/1.5/plugins/org.eclipse.epf.publishing/src/org/eclipse/epf/publishing/services/ConfigurationViewBuilder.java
@@ -34,13 +34,19 @@
 import org.eclipse.epf.common.utils.FileUtil;
 import org.eclipse.epf.common.utils.StrUtil;
 import org.eclipse.epf.common.utils.Timer;
+import org.eclipse.epf.library.LibraryService;
 import org.eclipse.epf.library.configuration.ConfigurationFilter;
 import org.eclipse.epf.library.configuration.ConfigurationHelper;
 import org.eclipse.epf.library.edit.IFilter;
 import org.eclipse.epf.library.edit.TngAdapterFactory;
 import org.eclipse.epf.library.edit.configuration.PracticeSubgroupItemProvider;
+import org.eclipse.epf.library.edit.meta.TypeDefUtil;
+import org.eclipse.epf.library.edit.meta.internal.ExtendedReferenceImpl;
 import org.eclipse.epf.library.edit.process.IBSItemProvider;
+import org.eclipse.epf.library.edit.util.LibraryEditUtil;
+import org.eclipse.epf.library.edit.util.PracticePropUtil;
 import org.eclipse.epf.library.edit.util.ProcessUtil;
+import org.eclipse.epf.library.edit.util.PropUtil;
 import org.eclipse.epf.library.edit.util.Suppression;
 import org.eclipse.epf.library.edit.util.TngUtil;
 import org.eclipse.epf.library.layout.Bookmark;
@@ -74,6 +80,11 @@
 import org.eclipse.epf.uma.UmaPackage;
 import org.eclipse.epf.uma.WorkProduct;
 import org.eclipse.epf.uma.util.AssociationHelper;
+import org.eclipse.epf.uma.util.ExtendedAttribute;
+import org.eclipse.epf.uma.util.ExtendedReference;
+import org.eclipse.epf.uma.util.ModifiedTypeMeta;
+import org.eclipse.epf.uma.util.UmaUtil;
+import org.eclipse.epf.uma.util.UserDefinedTypeMeta;
 
 /**
  * Builds the views defined for a method configuration.
@@ -552,6 +563,10 @@
 			// Either delegate the call or return nothing.
 			if (treeItemContentProvider != null) {
 				Collection items = treeItemContentProvider.getChildren(obj);
+				Collection udtReference = getUDTReference(obj);
+				if(udtReference != null){
+					items.addAll(udtReference);
+				}	
 				for (Iterator it = items.iterator(); it.hasNext();) {
 					if (monitor.isCanceled()) {
 						return;
@@ -600,8 +615,7 @@
 										}
 									} else {
 										if (itorObj instanceof PracticeSubgroupItemProvider) {
-											buildPracticeSubgroupTree(obj, parent,
-													(PracticeSubgroupItemProvider) itorObj);
+											isCreateSubFolder(obj, parent, itorObj);
 										} else {										
 											Bookmark b = createBookmark(me, parent);
 											if (!buildSubTree(itorObj, me, b)) {
@@ -619,7 +633,7 @@
 						}
 					} else {
 						if (itorObj instanceof PracticeSubgroupItemProvider) {
-							buildPracticeSubgroupTree(obj, parent, (PracticeSubgroupItemProvider) itorObj);
+							isCreateSubFolder(obj, parent, itorObj);
 						} else {
 							iterate(itorObj, parent);
 						}
@@ -636,6 +650,51 @@
 	}
 
 	/**
+	 * it udt designed as have treebroswer,create tree node for it
+	 * @param obj
+	 * @return
+	 */
+	private Collection<?> getUDTReference(Object obj) {
+		Collection<?> result = null;
+		if(obj instanceof Practice && PracticePropUtil.getPracticePropUtil().isUdtType((Practice)obj)){
+			Practice practice = (Practice)obj;
+			UserDefinedTypeMeta udtMeta = PracticePropUtil.getPracticePropUtil().getUdtMeta(practice);
+			ModifiedTypeMeta modifiedTypeMeta = LibraryEditUtil.getInstance().getModifiedType(udtMeta.getId());
+			if(modifiedTypeMeta != null){
+				List<ExtendedAttribute> attributes = modifiedTypeMeta.getAttributes();
+				String flag = null;
+				if(flag != null && !new Boolean(flag)){
+					result = practice.getContentReferences();
+				}
+			}
+		}
+		return result;
+	}
+
+	/**
+	 * for udt generateTreebrowserFolders attribute.If false,no sub folder
+	 * @param obj
+	 * @param parent
+	 * @param itorObj
+	 */
+	private void isCreateSubFolder(Object obj, Bookmark parent, Object itorObj) {
+		PracticeSubgroupItemProvider provider = (PracticeSubgroupItemProvider)itorObj;
+		if(provider.getPractice() != null && PracticePropUtil.getPracticePropUtil().isUdtType(provider.getPractice())){
+			//first UDT to get ID,use ID to get generateTreebrowserFolders
+			UserDefinedTypeMeta udtMeta = PracticePropUtil.getPracticePropUtil().getUdtMeta(provider.getPractice());
+			UserDefinedTypeMeta userDefineType = LibraryService.getInstance().getCurrentLibraryManager().getUserDefineType(udtMeta.getId());
+			String flag = userDefineType.getRteNameMap().get(UserDefinedTypeMeta._generateTreebrowserFolders);
+			if(Boolean.FALSE.toString().equals(flag)){
+				iterate(itorObj, parent);
+			}else{
+				buildPracticeSubgroupTree(obj, parent, (PracticeSubgroupItemProvider) itorObj);
+			}
+		}else{
+			buildPracticeSubgroupTree(obj, parent, (PracticeSubgroupItemProvider) itorObj);
+		}
+	}
+
+	/**
 	 * create a bookmark under the specified parent. If no parent is specified,
 	 * 
 	 * @param monitor
@@ -684,6 +743,14 @@
 			}
 		} else if (LibraryUtil.isProcess(element)) {
 			buildProcessSubTree(obj, (org.eclipse.epf.uma.Process) element, bm);
+		} else if (element instanceof Practice) {
+			ModifiedTypeMeta meta = TypeDefUtil.getMdtMeta(element);
+			if (meta == null) {
+				return false;
+			}else{
+				buildUDTSubTree(obj, element, bm, meta);
+				return true;
+			}
 		} else {
 			// System.out.println("Not handled: " + element);
 			return false;
@@ -692,6 +759,28 @@
 		return true;
 	}
 
+	/**
+	 * create the children of the UDT
+	 * @param obj
+	 * @param element
+	 * @param bm
+	 * @param meta
+	 */
+	private void buildUDTSubTree(Object obj, MethodElement element,
+			Bookmark bm, ModifiedTypeMeta meta) {
+		List<ExtendedReference> references = meta.getReferences();
+		iterate(obj, bm);//create references elements
+		for(ExtendedReference reference:references){
+			ExtendedReferenceImpl referenceimpl = (ExtendedReferenceImpl)reference;
+			boolean createUDTChild = referenceimpl.isCreateUDTChild();
+			List<MethodElement> items = PropUtil.getPropUtil().getExtendedReferenceList(
+					element, referenceimpl, false);
+			if(createUDTChild){
+				createFolderBookmark(element, bm, referenceimpl.getName(), referenceimpl.getName(), items, true);
+			}
+		}
+	}
+
 	private void buildItems(List elements, Bookmark bm) {
 		buildItems(elements, bm, false);
 	}
diff --git a/1.5/plugins/org.eclipse.epf.uma/src/org/eclipse/epf/uma/util/UserDefinedTypeMeta.java b/1.5/plugins/org.eclipse.epf.uma/src/org/eclipse/epf/uma/util/UserDefinedTypeMeta.java
index a31b570..822ee57 100644
--- a/1.5/plugins/org.eclipse.epf.uma/src/org/eclipse/epf/uma/util/UserDefinedTypeMeta.java
+++ b/1.5/plugins/org.eclipse.epf.uma/src/org/eclipse/epf/uma/util/UserDefinedTypeMeta.java
@@ -34,6 +34,7 @@
 	public static final String _shapeIconRelative = "shapeIconRelative";    //$NON-NLS-1$
 	public static final String _referenceQualifiers = "referenceQualifiers";//$NON-NLS-1$
 	public static final String _referenceQualifierNames = "referenceQualifierNames";//$NON-NLS-1$
+	public static final String _generateTreebrowserFolders = "generateTreebrowserFolders";//$NON-NLS-1$
 	
 	public static String[] rteNames = {
 		_typeName,
