diff --git a/openbis_ng_ui/src/js/components/common/form/TextField.jsx b/openbis_ng_ui/src/js/components/common/form/TextField.jsx
index 76a695dead272c294f1d1a4485a266a2f6c89554..b8f95708ca3e292447891ad8e62242526d97c3cf 100644
--- a/openbis_ng_ui/src/js/components/common/form/TextField.jsx
+++ b/openbis_ng_ui/src/js/components/common/form/TextField.jsx
@@ -29,6 +29,7 @@ class TextFormField extends React.PureComponent {
       mandatory,
       disabled,
       error,
+      multiline,
       metadata,
       startAdornment,
       endAdornment,
@@ -80,6 +81,7 @@ class TextFormField extends React.PureComponent {
           value={value || ''}
           error={!!error}
           disabled={disabled}
+          multiline={multiline}
           onChange={onChange}
           onFocus={onFocus}
           onBlur={onBlur}
diff --git a/openbis_ng_ui/src/js/components/types/objectType/ObjectTypeHandlerLoad.js b/openbis_ng_ui/src/js/components/types/objectType/ObjectTypeHandlerLoad.js
index c7eb5885ce75ff25011b14aba746f11751b05736..425888f922721df40b86653ef077697c914226ed 100644
--- a/openbis_ng_ui/src/js/components/types/objectType/ObjectTypeHandlerLoad.js
+++ b/openbis_ng_ui/src/js/components/types/objectType/ObjectTypeHandlerLoad.js
@@ -64,6 +64,8 @@ export default class ObjectTypeHandlerLoad {
           materialType: assignment.propertyType.materialType
             ? assignment.propertyType.materialType.code
             : null,
+          schema: assignment.propertyType.schema,
+          transformation: assignment.propertyType.transformation,
           mandatory: assignment.mandatory,
           showInEditView: assignment.showInEditView,
           showRawValueInForms: assignment.showRawValueInForms,
diff --git a/openbis_ng_ui/src/js/components/types/objectType/ObjectTypeHandlerSave.js b/openbis_ng_ui/src/js/components/types/objectType/ObjectTypeHandlerSave.js
index b46286bfb097fce80130ca2d8204f99d83451058..b302d6e375526833db221940fb3d445101821451 100644
--- a/openbis_ng_ui/src/js/components/types/objectType/ObjectTypeHandlerSave.js
+++ b/openbis_ng_ui/src/js/components/types/objectType/ObjectTypeHandlerSave.js
@@ -151,6 +151,8 @@ export default class ObjectTypeHandlerSave {
       creation.setLabel(property.label)
       creation.setDescription(property.description)
       creation.setDataType(property.dataType)
+      creation.setSchema(property.schema)
+      creation.setTransformation(property.transformation)
 
       if (
         property.dataType === dto.DataType.CONTROLLEDVOCABULARY &&
@@ -179,6 +181,8 @@ export default class ObjectTypeHandlerSave {
       }
       update.setLabel(property.label)
       update.setDescription(property.description)
+      update.setSchema(property.schema)
+      update.setTransformation(property.transformation)
       operations.push(new dto.UpdatePropertyTypesOperation([update]))
     })
 
diff --git a/openbis_ng_ui/src/js/components/types/objectType/ObjectTypeParametersProperty.jsx b/openbis_ng_ui/src/js/components/types/objectType/ObjectTypeParametersProperty.jsx
index e4574667a4e5a9ef045aafddcb497f501d710602..489308c7f0899bda440bbdc4d8170129554ff9eb 100644
--- a/openbis_ng_ui/src/js/components/types/objectType/ObjectTypeParametersProperty.jsx
+++ b/openbis_ng_ui/src/js/components/types/objectType/ObjectTypeParametersProperty.jsx
@@ -40,6 +40,8 @@ class ObjectTypeParametersProperty extends React.PureComponent {
       dataType: React.createRef(),
       vocabulary: React.createRef(),
       materialType: React.createRef(),
+      schema: React.createRef(),
+      transformation: React.createRef(),
       initialValueForExistingEntities: React.createRef(),
       mandatory: React.createRef(),
       showInEditView: React.createRef()
@@ -165,6 +167,8 @@ class ObjectTypeParametersProperty extends React.PureComponent {
         {this.renderDataType(property)}
         {this.renderVocabulary(property)}
         {this.renderMaterialType(property)}
+        {this.renderSchema(property)}
+        {this.renderTransformation(property)}
         {this.renderLabel(property)}
         {this.renderDescription(property)}
         {this.renderVisible(property)}
@@ -351,6 +355,48 @@ class ObjectTypeParametersProperty extends React.PureComponent {
     )
   }
 
+  renderSchema(property) {
+    const { classes } = this.props
+    return (
+      <Collapse in={property.dataType === dto.DataType.XML}>
+        <div className={classes.field}>
+          <TextField
+            reference={this.references.schema}
+            label='XML Schema'
+            name='schema'
+            error={property.errors.schema}
+            value={property.schema}
+            multiline={true}
+            onChange={this.handleChange}
+            onFocus={this.handleFocus}
+            onBlur={this.handleBlur}
+          />
+        </div>
+      </Collapse>
+    )
+  }
+
+  renderTransformation(property) {
+    const { classes } = this.props
+    return (
+      <Collapse in={property.dataType === dto.DataType.XML}>
+        <div className={classes.field}>
+          <TextField
+            reference={this.references.transformation}
+            label='XSLT Script'
+            name='transformation'
+            error={property.errors.transformation}
+            value={property.transformation}
+            multiline={true}
+            onChange={this.handleChange}
+            onFocus={this.handleFocus}
+            onBlur={this.handleBlur}
+          />
+        </div>
+      </Collapse>
+    )
+  }
+
   renderMandatory(property) {
     const { classes } = this.props
     return (
diff --git a/openbis_ng_ui/src/js/components/types/objectType/ObjectTypeParametersType.jsx b/openbis_ng_ui/src/js/components/types/objectType/ObjectTypeParametersType.jsx
index b3d75f39f3eca64466d562689f5336357e4bc1b2..2f417d56dd84d17023dd2d08692a382ab41d1dbe 100644
--- a/openbis_ng_ui/src/js/components/types/objectType/ObjectTypeParametersType.jsx
+++ b/openbis_ng_ui/src/js/components/types/objectType/ObjectTypeParametersType.jsx
@@ -304,7 +304,7 @@ class ObjectTypeParametersType extends React.PureComponent {
       <div className={classes.field}>
         <CheckboxField
           reference={this.references.autoGeneratedCode}
-          label='Generate codes automatically'
+          label='Generate codes'
           name='autoGeneratedCode'
           error={type.errors.autoGeneratedCode}
           value={type.autoGeneratedCode}
diff --git a/openbis_ng_ui/src/js/components/types/objectType/ObjectTypePreviewProperty.jsx b/openbis_ng_ui/src/js/components/types/objectType/ObjectTypePreviewProperty.jsx
index a7f0844509a38aa26bdbcc91531c576f4d4d6ee0..90a58e47b4b993f6edc4663dacfbb7b5fc00734c 100644
--- a/openbis_ng_ui/src/js/components/types/objectType/ObjectTypePreviewProperty.jsx
+++ b/openbis_ng_ui/src/js/components/types/objectType/ObjectTypePreviewProperty.jsx
@@ -203,15 +203,24 @@ class ObjectTypePreviewProperty extends React.PureComponent {
   renderProperty() {
     const { dataType } = this.props.property
 
-    if (dataType === 'VARCHAR' || dataType === 'MULTILINE_VARCHAR') {
+    if (
+      dataType === dto.DataType.VARCHAR ||
+      dataType === dto.DataType.MULTILINE_VARCHAR ||
+      dataType === dto.DataType.HYPERLINK ||
+      dataType === dto.DataType.TIMESTAMP ||
+      dataType === dto.DataType.XML
+    ) {
       return this.renderVarcharProperty()
-    } else if (dataType === 'REAL' || dataType === 'INTEGER') {
+    } else if (
+      dataType === dto.DataType.REAL ||
+      dataType === dto.DataType.INTEGER
+    ) {
       return this.renderNumberProperty()
-    } else if (dataType === 'BOOLEAN') {
+    } else if (dataType === dto.DataType.BOOLEAN) {
       return this.renderBooleanProperty()
-    } else if (dataType === 'CONTROLLEDVOCABULARY') {
+    } else if (dataType === dto.DataType.CONTROLLEDVOCABULARY) {
       return this.renderVocabularyProperty()
-    } else if (dataType === 'MATERIAL') {
+    } else if (dataType === dto.DataType.MATERIAL) {
       return this.renderMaterialProperty()
     } else {
       return <span>Data type not supported yet</span>
@@ -228,6 +237,7 @@ class ObjectTypePreviewProperty extends React.PureComponent {
         description={this.getDescription()}
         value={values[property.id]}
         mandatory={this.getMandatory()}
+        multiline={this.getMultiline()}
         metadata={this.getMetadata()}
         error={this.getError()}
         styles={this.getStyles()}
@@ -359,6 +369,13 @@ class ObjectTypePreviewProperty extends React.PureComponent {
     return this.props.property.mandatory
   }
 
+  getMultiline() {
+    return (
+      this.props.property.dataType === dto.DataType.MULTILINE_VARCHAR ||
+      this.props.property.dataType === dto.DataType.XML
+    )
+  }
+
   getMetadata() {
     const styles = this.getStyles()