diff --git a/pybis/src/python/pybis/dataset.py b/pybis/src/python/pybis/dataset.py
index e88f28dbb7ab0227c58620e92112f0dba641625e..b96a8a568b4b63ab9b43e1320683edb564f914cb 100644
--- a/pybis/src/python/pybis/dataset.py
+++ b/pybis/src/python/pybis/dataset.py
@@ -3,6 +3,7 @@ from threading import Thread
 from tabulate import tabulate
 from queue import Queue
 from .openbis_object import OpenBisObject 
+from .definitions import openbis_definitions
 from .utils import VERBOSE
 import requests
 import json
@@ -11,6 +12,7 @@ from pandas import DataFrame
 import urllib.parse
 # for Data upload
 PYBIS_PLUGIN = "dataset-uploader-api"
+dataset_definitions = openbis_definitions('DataSet')
 
 
 class DataSet(OpenBisObject):
@@ -21,6 +23,10 @@ class DataSet(OpenBisObject):
 
         if kwargs is None:
             kwargs = {}
+        else:
+            for key in kwargs:
+                if key not in dataset_definitions['attrs_new']:
+                    raise ValueError("{} is not a valid attribute for a DataSet".format(key))
 
         if kwargs.get('code'):
             kwargs["autoGeneratedCode"] = False
@@ -106,6 +112,7 @@ class DataSet(OpenBisObject):
             'set_parents()', 'set_children()', 'set_components()', 'set_contained()', 'set_containers()',
             'sample', 
             'experiment', 
+            'collection', 
             'dataStore',
             'physicalData',
             'linkedData',