diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/AbstractRegistrationForm.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/AbstractRegistrationForm.java
index a93ca3f53ed9bbefe493be61f1a590e1d087d6b2..004cfd4856652137e16e15656766e96c2628709e 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/AbstractRegistrationForm.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/AbstractRegistrationForm.java
@@ -55,6 +55,8 @@ import ch.systemsx.cisd.openbis.generic.shared.basic.IIdentifiable;
  */
 public abstract class AbstractRegistrationForm extends ContentPanel
 {
+    private static final int PANEL_MARGIN = 100;
+
     private static final String SESSION_KEY_PREFIX = "sessionKey_";
 
     public static final String SESSION_KEYS_NUMBER = "sessionKeysNumber";
@@ -69,9 +71,9 @@ public abstract class AbstractRegistrationForm extends ContentPanel
 
     public static final int SECTION_FIELD_WIDTH = DEFAULT_FIELD_WIDTH;
 
-    public static final int SECTION_DEFAULT_FIELD_WIDTH = DEFAULT_FIELD_WIDTH - 15;
+    public static final int SECTION_DEFAULT_FIELD_WIDTH = DEFAULT_FIELD_WIDTH;// -15
 
-    public static final int SECTION_WIDTH = SECTION_FIELD_WIDTH + SECTION_LABEL_WIDTH + 16;
+    public static final int SECTION_WIDTH = SECTION_FIELD_WIDTH + SECTION_LABEL_WIDTH + 60;// +16
 
     protected InfoBox infoBox;
 
@@ -152,7 +154,7 @@ public abstract class AbstractRegistrationForm extends ContentPanel
         panel.addClickListener(new InfoBoxResetListener(infoBox));
         panel.setHeaderVisible(false);
         panel.setBodyBorder(false);
-        panel.setWidth(labelWidth + fieldWidth + 40);
+        panel.setWidth(labelWidth + fieldWidth + PANEL_MARGIN);
         panel.setLabelWidth(labelWidth);
         panel.setFieldWidth(fieldWidth);
         panel.setButtonAlign(HorizontalAlignment.RIGHT);
@@ -310,8 +312,6 @@ public abstract class AbstractRegistrationForm extends ContentPanel
     protected final void addUploadFeatures(List<String> sessionKeys)
     {
         assert sessionKeysInitiated == false : "This method should be called only once.";
-        formPanel.setWidth(AbstractRegistrationForm.DEFAULT_LABEL_WIDTH
-                + AbstractRegistrationForm.DEFAULT_FIELD_WIDTH + 50);
         formPanel.setAction(GenericConstants.createServicePath("upload"));
         formPanel.setEncoding(Encoding.MULTIPART);
         formPanel.setMethod(Method.POST);
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/field/PropertyFieldFactory.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/field/PropertyFieldFactory.java
index 62790a67f42f8aa5b60179ee07af2d415550e917..e3da8724c6fb7baa7f5a4fb3005a2a037f66413f 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/field/PropertyFieldFactory.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/field/PropertyFieldFactory.java
@@ -25,6 +25,8 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.application.IViewConte
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.DatabaseModificationAwareField;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.model.VocabularyTermModel;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.renderer.DateRenderer;
+import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.widget.FieldUtil;
+import ch.systemsx.cisd.openbis.generic.client.web.client.application.util.StringUtils;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DataTypeCode;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.PropertyType;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Vocabulary;
@@ -43,6 +45,11 @@ public class PropertyFieldFactory
                 doCreateField(pt, isMandatory, label, fieldId, originalRawValue, viewContext);
         Field<?> field = fieldHolder.get();
         field.setId(fieldId);
+        String description = pt.getDescription();
+        if (StringUtils.isBlank(description) == false)
+        {
+            FieldUtil.addInfoIcon(field, description);
+        }
         return fieldHolder;
     }
 
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/widget/FieldUtil.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/widget/FieldUtil.java
index 06969d0ec33304b1bb7e3630a231ee6446a5c2e2..a8a9c25dcb115b01de26c7e32d149653ae86e5d3 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/widget/FieldUtil.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/widget/FieldUtil.java
@@ -16,8 +16,23 @@
 
 package ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.widget;
 
+import com.extjs.gxt.ui.client.GXT;
+import com.extjs.gxt.ui.client.event.BaseEvent;
+import com.extjs.gxt.ui.client.event.Events;
+import com.extjs.gxt.ui.client.event.Listener;
+import com.extjs.gxt.ui.client.widget.ComponentHelper;
+import com.extjs.gxt.ui.client.widget.MessageBox;
+import com.extjs.gxt.ui.client.widget.WidgetComponent;
 import com.extjs.gxt.ui.client.widget.form.Field;
 import com.extjs.gxt.ui.client.widget.form.TextField;
+import com.google.gwt.event.dom.client.ClickEvent;
+import com.google.gwt.event.dom.client.ClickHandler;
+import com.google.gwt.user.client.Command;
+import com.google.gwt.user.client.DeferredCommand;
+import com.google.gwt.user.client.Element;
+import com.google.gwt.user.client.ui.Widget;
+
+import ch.systemsx.cisd.openbis.generic.client.web.client.application.renderer.LinkRenderer;
 
 /**
  * Utilities for {@link Field} class.
@@ -26,6 +41,13 @@ import com.extjs.gxt.ui.client.widget.form.TextField;
  */
 public class FieldUtil
 {
+    private static final String INFO_LINK_LABEL = "[?]";
+
+    private static final int[] INFO_LINK_FIELD_OFFSETS = new int[]
+        { 20, 3 };
+
+    private static final String INFO_LINK_POSITION = "tl-tr";
+
     private static final String MANDATORY_LABEL_SEPARATOR = ":&nbsp;*";
 
     public static void setMandatoryFlag(Field<?> field, boolean isMandatory)
@@ -83,4 +105,56 @@ public class FieldUtil
             field.validate();
         }
     }
+
+    /**
+     * Adds '?' to the field and allows to display chosen message in the info box.
+     */
+    public static void addInfoIcon(final Field<?> field, final String message)
+    {
+        // WORKAROUND: Based on GXT functionality for displaying error icon, until there is no
+        // dedicated mechanism for showing info icons in GXT
+        field.addListener(Events.Render, new Listener<BaseEvent>()
+            {
+                public void handleEvent(BaseEvent be)
+                {
+                    final Widget detailsLink =
+                            LinkRenderer.getLinkWidget(INFO_LINK_LABEL, new ClickHandler()
+                                {
+                                    public void onClick(ClickEvent event)
+                                    {
+                                        MessageBox.info("Info", message, null);
+                                    }
+                                });
+                    final WidgetComponent info = new WidgetComponent(detailsLink);
+                    Element parent = field.el().getParent().dom;
+                    info.render(parent);
+                    info.setStyleAttribute("display", "block");
+                    info.el().makePositionable(true);
+                    if (!info.isAttached())
+                    {
+                        ComponentHelper.doAttach(info);
+                    }
+                    DeferredCommand.addCommand(new Command()
+                        {
+                            public void execute()
+                            {
+                                info.el().alignTo(field.getElement(), INFO_LINK_POSITION,
+                                        INFO_LINK_FIELD_OFFSETS);
+                            }
+                        });
+                    if (GXT.isIE || GXT.isOpera)
+                    {
+                        DeferredCommand.addCommand(new Command()
+                            {
+                                public void execute()
+                                {
+                                    info.el().alignTo(field.getElement(), INFO_LINK_POSITION,
+                                            INFO_LINK_FIELD_OFFSETS);
+                                }
+                            });
+                    }
+                    field.el().repaint();
+                }
+            });
+    }
 }