Index: org.gvsig.tools/library/trunk/org.gvsig.tools/org.gvsig.tools.swing/org.gvsig.tools.swing.api/src/main/java/org/gvsig/tools/swing/api/dynobject/DynObjectModel.java
===================================================================
--- org.gvsig.tools/library/trunk/org.gvsig.tools/org.gvsig.tools.swing/org.gvsig.tools.swing.api/src/main/java/org/gvsig/tools/swing/api/dynobject/DynObjectModel.java	(revision 631)
+++ org.gvsig.tools/library/trunk/org.gvsig.tools/org.gvsig.tools.swing/org.gvsig.tools.swing.api/src/main/java/org/gvsig/tools/swing/api/dynobject/DynObjectModel.java	(revision 632)
@@ -109,6 +109,20 @@
      */
     public String[] getGroups();
     
+	/**
+	 * Determines if a group contains compulsory fields or not
+	 * 
+	 * @param groupName
+	 *            the current groupName
+	 * 
+	 * @return if it has compulsory elements or not
+	 */
+	public boolean isGroupCompulsory(String groupName);
 
+	/**
+	 * Returns a generic label for this group
+	 * 
+	 * @return
+	 */
     public String getGenericLabel() ;
 }
Index: org.gvsig.tools/library/trunk/org.gvsig.tools/org.gvsig.tools.swing/org.gvsig.tools.swing.impl/src/main/java/org/gvsig/tools/swing/impl/dynobject/DefaultJDynObjectComponent.java
===================================================================
--- org.gvsig.tools/library/trunk/org.gvsig.tools/org.gvsig.tools.swing/org.gvsig.tools.swing.impl/src/main/java/org/gvsig/tools/swing/impl/dynobject/DefaultJDynObjectComponent.java	(revision 631)
+++ org.gvsig.tools/library/trunk/org.gvsig.tools/org.gvsig.tools.swing/org.gvsig.tools.swing.impl/src/main/java/org/gvsig/tools/swing/impl/dynobject/DefaultJDynObjectComponent.java	(revision 632)
@@ -257,7 +257,8 @@
 			tab = (MyTab) this.tabComponents.get(group);
 			if (tab == null) {
 				pane = (MyTab) createPanel(group);
-				this.getTabComponent().addTab(group, new JScrollPane(pane));
+				this.getTabComponent().addTab(getGroupText(group),
+						new JScrollPane(pane));
 				tabComponents.put(group, pane);
 			} else {
 				tab.load(this.getDynObject());
@@ -266,6 +267,13 @@
 		this.tabPanel.setTabPlacement(tabPosition);
 	}
 
+	private String getGroupText(String groupName) {
+		if (this.getModel().isGroupCompulsory(groupName)) {
+			return groupName + "*";
+		}
+		return groupName;
+	}
+
 	private String[] getGroups() {
 		return this.getModel().getGroups();
 	}
Index: org.gvsig.tools/library/trunk/org.gvsig.tools/org.gvsig.tools.swing/org.gvsig.tools.swing.impl/src/main/java/org/gvsig/tools/swing/impl/dynobject/AbstractDynObjectModel.java
===================================================================
--- org.gvsig.tools/library/trunk/org.gvsig.tools/org.gvsig.tools.swing/org.gvsig.tools.swing.impl/src/main/java/org/gvsig/tools/swing/impl/dynobject/AbstractDynObjectModel.java	(revision 631)
+++ org.gvsig.tools/library/trunk/org.gvsig.tools/org.gvsig.tools.swing/org.gvsig.tools.swing.impl/src/main/java/org/gvsig/tools/swing/impl/dynobject/AbstractDynObjectModel.java	(revision 632)
@@ -56,6 +56,7 @@
 
     private Map<String, List<DynFieldModel>> modelsList;
     protected DynStruct dynStruct;
+	private List<String> compulsoryGroups;
 
     /**
      * Constructor.
@@ -71,17 +72,22 @@
      */
     public AbstractDynObjectModel(DynStruct definition, boolean initAll) {
         this.dynStruct = definition;
+		this.compulsoryGroups = new ArrayList<String>();
         this.modelsList = new LinkedHashMap<String, List<DynFieldModel>>();
-        if (initAll) {
+		if (initAll) {
             initDynFieldModelList();
         }
     }
 
-    /**
-     * Creates a new DynFieldModel object with a default group set to "General"
-     * and a field name
-     * set to the <b>fieldName</b> value, and returns the created DynFieldModel.
-     */
+	public boolean isGroupCompulsory(String groupName) {
+		return this.compulsoryGroups.contains(groupName);
+	}
+
+	/**
+	 * Creates a new DynFieldModel object with a default group set to "General"
+	 * and a field name set to the <b>fieldName</b> value, and returns the
+	 * created DynFieldModel.
+	 */
     public DynFieldModel add(String fieldName) {
         return add(this.getGenericLabel(), fieldName);
     }
@@ -102,6 +108,11 @@
             List<DynFieldModel> list = getGroupElements(group);
             if (isNewElement(list, elem)) {
                 list.add(list.size(), elem);
+				if (elem.getDynField().isMandatory()) {
+					if (!this.compulsoryGroups.contains(group)) {
+						compulsoryGroups.add(group);
+					}
+				}
             }
             return elem;
         }
Index: org.gvsig.tools/library/trunk/org.gvsig.tools/org.gvsig.tools.swing/org.gvsig.tools.swing.impl/src/main/java/org/gvsig/tools/swing/impl/dynobject/DefaultDynObjectModel.java
===================================================================
--- org.gvsig.tools/library/trunk/org.gvsig.tools/org.gvsig.tools.swing/org.gvsig.tools.swing.impl/src/main/java/org/gvsig/tools/swing/impl/dynobject/DefaultDynObjectModel.java	(revision 631)
+++ org.gvsig.tools/library/trunk/org.gvsig.tools/org.gvsig.tools.swing/org.gvsig.tools.swing.impl/src/main/java/org/gvsig/tools/swing/impl/dynobject/DefaultDynObjectModel.java	(revision 632)
@@ -112,12 +112,13 @@
 							|| ((field.isContainer()) && (field
 									.getElementsType().getType() == DataTypes.DYNOBJECT)))
 						if (field.isMandatory()) {
-							this.add(field.getName() + "*", field.getName());
+							this.add(field.getName(), field.getName());
 						} else {
 							this.add(field.getName(), field.getName());
 						}
-					else
+					else{
 						this.add(getGenericLabel(), field.getName());
+					}
 				}
 			}
 		}
