diff --git a/server-application-server/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/helper/generators/AbstractGenerator.java b/server-application-server/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/helper/generators/AbstractGenerator.java
index ba44d76975a94a6204575a84f7297fca82c6e60b..82e63079ccd850ef395b1388253faa225436cfd6 100644
--- a/server-application-server/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/helper/generators/AbstractGenerator.java
+++ b/server-application-server/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/helper/generators/AbstractGenerator.java
@@ -120,6 +120,12 @@ public class AbstractGenerator
         gen.addClassForImport(Set.class);
     }
 
+    public static void addMetaData(DtoGenerator gen)
+    {
+        gen.addSimpleField("Map<String, String>", "MetaData", Map.class.getName(), "metaData");
+        gen.addClassForImport(Map.class);
+    }
+
     public static void addProperties(DtoGenerator gen)
     {
         gen.addPluralFetchedField("Map<String, String>", Map.class.getName(), "properties",
@@ -251,21 +257,21 @@ public class AbstractGenerator
         gen.addAdditionalMethod("@Override\n"
                 + "    public void setControlledVocabularyProperty(String propertyName, String propertyValue)\n"
                 + "    {\n"
-                + "        setProperty(propertyName, value);\n"
+                + "        setProperty(propertyName, propertyValue);\n"
                 + "    }");
 
         // Sample
         gen.addAdditionalMethod("@Override\n"
-                + "    public String getSampleProperty(String propertyName)\n"
+                + "    public SamplePermId getSampleProperty(String propertyName)\n"
                 + "    {\n"
                 + "        String propertyValue = getProperty(propertyName);\n"
-                + "        return (propertyValue == null || propertyValue.isBlank()) ? null : new SamplePermId(propertyValue)\n"
+                + "        return (propertyValue == null || propertyValue.isBlank()) ? null : new SamplePermId(propertyValue);\n"
                 + "    }");
 
         gen.addAdditionalMethod("@Override\n"
                 + "    public void setSampleProperty(String propertyName, SamplePermId propertyValue)\n"
                 + "    {\n"
-                + "        setProperty(propertyName, propertyValue == null ? null : propertyValue.getPermId())\n"
+                + "        setProperty(propertyName, propertyValue == null ? null : propertyValue.getPermId());\n"
                 + "    }");
 
         // Hyperlink
diff --git a/server-application-server/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/helper/generators/DtoGenerator.java b/server-application-server/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/helper/generators/DtoGenerator.java
index 829583087ee6a204abb10180051544414830064a..e9b9cb0c27d44b760190afa2953818785381e6f1 100644
--- a/server-application-server/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/helper/generators/DtoGenerator.java
+++ b/server-application-server/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/helper/generators/DtoGenerator.java
@@ -245,6 +245,13 @@ public class DtoGenerator
         fields.add(dtoField);
     }
 
+    public void addSimpleField(String definitionClassName, String name, String fullClassName, String persistentFieldName)
+    {
+        DTOField dtoField = createPlural(name, definitionClassName, fullClassName, null, null);
+        dtoField.persistentFieldName = persistentFieldName;
+        fields.add(dtoField);
+    }
+
     public DTOField addFetchedField(Class<?> c, String name, String description,
             Class<?> fetchOptionsClass)
     {
diff --git a/server-application-server/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/helper/generators/Generator.java b/server-application-server/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/helper/generators/Generator.java
index 14d59dc241b8f7c6c7687ace8e9936f45791be2f..1dadf4b81bd614d52e95a3f35194fe22e741489b 100644
--- a/server-application-server/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/helper/generators/Generator.java
+++ b/server-application-server/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/helper/generators/Generator.java
@@ -234,6 +234,7 @@ public class Generator extends AbstractGenerator
         addRegistrator(gen);
         addModifier(gen);
         addAttachments(gen);
+        addMetaData(gen);
 
         gen.setToStringMethod("\"Sample \" + permId");
 
@@ -265,6 +266,7 @@ public class Generator extends AbstractGenerator
 
         gen.addStringField("generatedCodePrefix");
         addModificationDate(gen);
+        addMetaData(gen);
 
         gen.setToStringMethod("\"SampleType \" + code");
         addPropertyAssignments(gen);