diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/public/resources/api/v3/as/dto/dataset/LinkedData.js b/openbis/source/java/ch/systemsx/cisd/openbis/public/resources/api/v3/as/dto/dataset/LinkedData.js
index 273adca36e8fd4d61aa14c010e67e9f4da3679e1..3a30239ee514bf7cda449e7cca7f620a29db19dc 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/public/resources/api/v3/as/dto/dataset/LinkedData.js
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/public/resources/api/v3/as/dto/dataset/LinkedData.js
@@ -44,7 +44,10 @@ define([ "stjs", "util/Exceptions" ], function(stjs, exceptions) {
 	}, {
 		fetchOptions : "LinkedDataFetchOptions",
 		externalDms : "ExternalDms",
-		contentCopies : "ContentCopy"
+		contentCopies : {
+			name : "List",
+			arguments : [ "ContentCopy" ]
+		}
 	});
 	return LinkedData;
 })
\ No newline at end of file
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/public/resources/api/v3/as/dto/dataset/create/DataSetCreation.js b/openbis/source/java/ch/systemsx/cisd/openbis/public/resources/api/v3/as/dto/dataset/create/DataSetCreation.js
new file mode 100644
index 0000000000000000000000000000000000000000..d4d5481bc73d75c32e4a41bd6c2a0d1502d4d6fd
--- /dev/null
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/public/resources/api/v3/as/dto/dataset/create/DataSetCreation.js
@@ -0,0 +1,167 @@
+define([ "stjs" ], function(stjs) {
+	var DataSetCreation = function() {
+	};
+	stjs.extend(DataSetCreation, null, [], function(constructor, prototype) {
+		prototype['@type'] = 'as.dto.dataset.create.DataSetCreation';
+		constructor.serialVersionUID = 1;
+		prototype.typeId = null;
+		prototype.experimentId = null;
+		prototype.sampleId = null;
+		prototype.dataStoreId = null;
+		prototype.code = null;
+		prototype.measured = null;
+		prototype.dataProducer = null;
+		prototype.dataProductionDate = null;
+		prototype.linkedData = null;
+		prototype.tagIds = null;
+		prototype.properties = null;
+		prototype.containerIds = null;
+		prototype.componentIds = null;
+		prototype.parentIds = null;
+		prototype.childIds = null;
+		prototype.creationId = null;
+		prototype.autoGeneratedCode = null;
+
+		prototype.getTypeId = function() {
+			return this.typeId;
+		};
+		prototype.setTypeId = function(typeId) {
+			this.typeId = typeId;
+		};
+		prototype.getExperimentId = function() {
+			return this.experimentId;
+		};
+		prototype.setExperimentId = function(experimentId) {
+			this.experimentId = experimentId;
+		};
+		prototype.getSampleId = function() {
+			return this.sampleId;
+		};
+		prototype.setSampleId = function(sampleId) {
+			this.sampleId = sampleId;
+		};
+		prototype.getDataStoreId = function() {
+			return this.dataStoreId;
+		};
+		prototype.setDataStoreId = function(dataStoreId) {
+			this.dataStoreId = dataStoreId;
+		};
+		prototype.getCode = function() {
+			return this.code;
+		};
+		prototype.setCode = function(code) {
+			this.code = code;
+		};
+		prototype.isMeasured = function() {
+			return this.measured;
+		};
+		prototype.setMeasured = function(measured) {
+			this.measured = measured;
+		};
+		prototype.getDataProducer = function() {
+			return this.dataProducer;
+		};
+		prototype.setDataProducer = function(dataProducer) {
+			this.dataProducer = dataProducer;
+		};
+		prototype.getDataProductionDate = function() {
+			return this.dataProductionDate;
+		};
+		prototype.setDataProductionDate = function(dataProductionDate) {
+			this.dataProductionDate = dataProductionDate;
+		};
+		prototype.getLinkedData = function() {
+			return this.linkedData;
+		};
+		prototype.setLinkedData = function(linkedData) {
+			this.linkedData = linkedData;
+		};
+		prototype.getTagIds = function() {
+			return this.tagIds;
+		};
+		prototype.setTagIds = function(tagIds) {
+			this.tagIds = tagIds;
+		};
+		prototype.getProperty = function(propertyName) {
+			return this.properties[propertyName];
+		};
+		prototype.setProperty = function(propertyName, propertyValue) {
+			this.properties[propertyName] = propertyValue;
+		};
+		prototype.getProperties = function() {
+			return this.properties;
+		};
+		prototype.setProperties = function(properties) {
+			this.properties = properties;
+		};
+		prototype.getContainerIds = function() {
+			return this.containerIds;
+		};
+		prototype.setContainerIds = function(containerIds) {
+			this.containerIds = containerIds;
+		};
+		prototype.getComponentIds = function() {
+			return this.componentIds;
+		};
+		prototype.setComponentIds = function(componentIds) {
+			this.componentIds = componentIds;
+		};
+		prototype.getChildIds = function() {
+			return this.childIds;
+		};
+		prototype.setChildIds = function(childIds) {
+			this.childIds = childIds;
+		};
+		prototype.getParentIds = function() {
+			return this.parentIds;
+		};
+		prototype.setParentIds = function(parentIds) {
+			this.parentIds = parentIds;
+		};
+		prototype.getCreationId = function() {
+			return this.creationId;
+		};
+		prototype.setCreationId = function(creationId) {
+			this.creationId = creationId;
+		};
+		prototype.isAutoGeneratedCode = function() {
+			return this.autoGeneratedCode;
+		}
+		prototype.setAutoGeneratedCode = function(autoGeneratedCode) {
+			this.autoGeneratedCode = autoGeneratedCode;
+		};
+	}, {
+		typeId : "IEntityTypeId",
+		experimentId : "IExperimentId", 
+		sampleId : "ISampleId",
+		dataStoreId : "IDataStoreId",
+		dataProductionDate : "Date",
+		linkedData : "LinkedDataCreation",
+		tagIds : {
+			name : "List",
+			arguments : [ "Object" ]
+		},
+		properties : {
+			name : "Map",
+			arguments : [ null, null ]
+		},
+		containerIds : {
+			name : "List",
+			arguments : [ "Object" ]
+		},
+		componentIds : {
+			name : "List",
+			arguments : [ "Object" ]
+		},
+		parentIds : {
+			name : "List",
+			arguments : [ "Object" ]
+		},
+		childIds : {
+			name : "List",
+			arguments : [ "Object" ]
+		},
+		creationId : "CreationId"
+	});
+	return DataSetCreation;
+})
\ No newline at end of file
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/public/resources/api/v3/as/dto/dataset/create/LinkedDataCreation.js b/openbis/source/java/ch/systemsx/cisd/openbis/public/resources/api/v3/as/dto/dataset/create/LinkedDataCreation.js
new file mode 100644
index 0000000000000000000000000000000000000000..431866abb8728439cc717380c9fbc50732c4572f
--- /dev/null
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/public/resources/api/v3/as/dto/dataset/create/LinkedDataCreation.js
@@ -0,0 +1,39 @@
+define([ "stjs" ], function(stjs) {
+	var LinkedDataCreation = function() {
+	};
+	stjs.extend(LinkedDataCreation, null, [], function(constructor, prototype) {
+		prototype['@type'] = 'as.dto.dataset.create.LinkedDataCreation';
+		constructor.serialVersionUID = 1;
+		prototype.externalCode = null;
+		prototype.externalDmsId = null;
+		prototype.contentCopies = null;
+
+		prototype.getExternalCode = function() {
+			return this.externalCode;
+		};
+		prototype.setExternalCode = function(externalCode) {
+			this.externalCode = externalCode;
+		};
+		
+		prototype.getExternalDmsId = function() {
+			return this.externalDmsId;
+		};
+		prototype.setExternalDmsId = function(externalDmsId) {
+			this.externalDmsId = externalDmsId;
+		};
+		
+		prototype.getContentCopies = function() {
+			return this.contentCopies;
+		};
+		prototype.setContentCopies = function(contentCopies) {
+			this.contentCopies = contentCopies;
+		};
+	}, {
+		externalDmsId : "IExternalDmsId",
+		contentCopies : {
+			name : "List",
+			arguments : [ "Object" ]
+		}
+	});
+	return LinkedDataCreation;
+})		
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/public/resources/api/v3/openbis.js b/openbis/source/java/ch/systemsx/cisd/openbis/public/resources/api/v3/openbis.js
index e5930b089c1e660569c56e6af7edc3547213cf19..1c9f09886a26ad1781ea157b7b2400d4395c589f 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/public/resources/api/v3/openbis.js
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/public/resources/api/v3/openbis.js
@@ -358,6 +358,21 @@ define([ 'jquery', 'util/Json', 'as/dto/datastore/search/DataStoreSearchCriteria
 			});
 		}
 
+		this.createDataSets = function(creations) {
+			var thisFacade = this;
+			return thisFacade._private.ajaxRequest({
+				url : openbisUrl,
+				data : {
+					"method" : "createDataSets",
+					"params" : [ thisFacade._private.sessionToken, creations ]
+				},
+				returnType : {
+					name : "List",
+					arguments : [ "DataSetPermId" ]
+				}
+			});
+		}
+		
 		this.createMaterials = function(creations) {
 			var thisFacade = this;
 			return thisFacade._private.ajaxRequest({