diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/widget/EntityRegistrationPanel.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/widget/EntityRegistrationPanel.java
index 3e44d64e49b4e49fbc69607863e7b7a1aec6b9f0..0666c37dd9168da6d1ae0de4941a552afd020e2d 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/widget/EntityRegistrationPanel.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/widget/EntityRegistrationPanel.java
@@ -194,7 +194,13 @@ abstract public class EntityRegistrationPanel<T extends ModelData, S extends Dro
     @Override
     public boolean shouldAskForCloseConfirmation()
     {
-        return ComponentWithCloseConfirmationUtil.shouldAskForCloseConfirmation(registrationWidget
-                .get());
+        if (registrationWidget != null)
+        {
+            return ComponentWithCloseConfirmationUtil
+                    .shouldAskForCloseConfirmation(registrationWidget.get());
+        } else
+        {
+            return false;
+        }
     }
 }
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/widget/FormPanelWithSavePoint.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/widget/FormPanelWithSavePoint.java
index cb2d05ecd71fcdf80e434383bee30ae2796fd917..75a61fa58b58d7b1916a43773a7c264514cd6820 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/widget/FormPanelWithSavePoint.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/widget/FormPanelWithSavePoint.java
@@ -32,6 +32,7 @@ import com.extjs.gxt.ui.client.util.Util;
 import com.extjs.gxt.ui.client.widget.Component;
 import com.extjs.gxt.ui.client.widget.Container;
 import com.extjs.gxt.ui.client.widget.form.Field;
+import com.extjs.gxt.ui.client.widget.form.MultiField;
 
 /**
  * @author pkupczyk
@@ -54,9 +55,28 @@ public class FormPanelWithSavePoint extends ClickableFormPanel
         addListener(Events.Add, new Listener<ContainerEvent>()
             {
                 @Override
-                public void handleEvent(ContainerEvent e)
+                public void handleEvent(ContainerEvent ce)
                 {
-                    addDirtyCheckField(e.getItem());
+                    List<Field<?>> fields = new ArrayList<Field<?>>();
+                    getDirtyCheckFields(ce.getItem(), fields);
+
+                    for (Field<?> field : fields)
+                    {
+                        field.addListener(Events.Change, new Listener<FieldEvent>()
+                            {
+                                @Override
+                                public void handleEvent(FieldEvent fe)
+                                {
+                                    DirtyChangeEvent dirtyChangedEvent =
+                                            new DirtyChangeEvent(FormPanelWithSavePoint.this);
+
+                                    for (Listener<DirtyChangeEvent> dirtyChangeListener : dirtyChangeListeners)
+                                    {
+                                        dirtyChangeListener.handleEvent(dirtyChangedEvent);
+                                    }
+                                }
+                            });
+                    }
                 }
             });
     }
@@ -64,7 +84,8 @@ public class FormPanelWithSavePoint extends ClickableFormPanel
     public void setSavePoint()
     {
         dirtyCheckSavePointValues.clear();
-        for (Field field : getFields())
+
+        for (Field field : getDirtyCheckFields())
         {
             setSavePointValue(field);
         }
@@ -79,7 +100,7 @@ public class FormPanelWithSavePoint extends ClickableFormPanel
 
     public void resetToSavePoint()
     {
-        for (Field field : getFields())
+        for (Field field : getDirtyCheckFields())
         {
             field.setValue(getSavePointValue(field));
         }
@@ -101,31 +122,31 @@ public class FormPanelWithSavePoint extends ClickableFormPanel
         }
     }
 
-    private void addDirtyCheckField(Component component)
+    private List<Field<?>> getDirtyCheckFields()
     {
-        if (component instanceof Field<?>)
-        {
-            Field<?> field = (Field<?>) component;
-            field.addListener(Events.Change, new Listener<FieldEvent>()
-                {
-                    @Override
-                    public void handleEvent(FieldEvent e)
-                    {
-                        DirtyChangeEvent dirtyChangedEvent =
-                                new DirtyChangeEvent(FormPanelWithSavePoint.this);
+        List<Field<?>> fields = new ArrayList<Field<?>>();
+        getDirtyCheckFields(this, fields);
+        return fields;
+    }
 
-                        for (Listener<DirtyChangeEvent> dirtyChangeListener : dirtyChangeListeners)
-                        {
-                            dirtyChangeListener.handleEvent(dirtyChangedEvent);
-                        }
-                    }
-                });
+    private void getDirtyCheckFields(Component component, List<Field<?>> fields)
+    {
+        if (component instanceof MultiField<?>)
+        {
+            MultiField<?> multifield = (MultiField<?>) component;
+            for (Component item : multifield.getAll())
+            {
+                getDirtyCheckFields(item, fields);
+            }
+        } else if (component instanceof Field<?>)
+        {
+            fields.add((Field<?>) component);
         } else if (component instanceof Container<?>)
         {
             Container<Component> container = (Container<Component>) component;
             for (Component item : container.getItems())
             {
-                addDirtyCheckField(item);
+                getDirtyCheckFields(item, fields);
             }
         }
     }
@@ -137,7 +158,7 @@ public class FormPanelWithSavePoint extends ClickableFormPanel
 
     public boolean isDirtyForSavePoint()
     {
-        for (Field<?> field : getFields())
+        for (Field<?> field : getDirtyCheckFields())
         {
             if (dirtyCheckIgnoredFields.contains(field) == false)
             {
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/experiment/AbstractGenericExperimentRegisterEditForm.java b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/experiment/AbstractGenericExperimentRegisterEditForm.java
index b92fcec069e0839847eada5c8e7969d1bc9c190e..b6a98ca3d75fd619f7ffaf2067e936de6c2badc5 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/experiment/AbstractGenericExperimentRegisterEditForm.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/experiment/AbstractGenericExperimentRegisterEditForm.java
@@ -228,6 +228,13 @@ abstract public class AbstractGenericExperimentRegisterEditForm extends
         attachmentsManager.resetAttachmentFieldSetsInPanel(formPanel);
     }
 
+    @Override
+    protected void revertPanel()
+    {
+        super.revertPanel();
+        attachmentsManager.resetAttachmentFieldSetsInPanel(formPanel);
+    }
+
     private static LabelField createTemplateField(String label,
             final SampleTypeSelectionWidget typeSelection, final CheckBox autoGenerate)
     {
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/sample/AbstractGenericSampleRegisterEditForm.java b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/sample/AbstractGenericSampleRegisterEditForm.java
index 4fbcaa6c3ea3ca48ceb4eb7dceccb9af1269aced..0a2244a987d2d60d8255e92bf709c68ba93d6e95 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/sample/AbstractGenericSampleRegisterEditForm.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/generic/client/web/client/application/sample/AbstractGenericSampleRegisterEditForm.java
@@ -285,6 +285,13 @@ abstract public class AbstractGenericSampleRegisterEditForm extends
         attachmentsManager.resetAttachmentFieldSetsInPanel(formPanel);
     }
 
+    @Override
+    protected void revertPanel()
+    {
+        super.revertPanel();
+        attachmentsManager.resetAttachmentFieldSetsInPanel(formPanel);
+    }
+
     @Override
     protected String getGeneratedCodePrefix()
     {