diff --git a/ckanext/odsh/plugin.py b/ckanext/odsh/plugin.py
index 7519426b8ae49de7e1ebd95f19d0990b66d1305d..67bce258c81375ca1a830608aa4f2362e98f2de8 100644
--- a/ckanext/odsh/plugin.py
+++ b/ckanext/odsh/plugin.py
@@ -19,8 +19,8 @@ from dateutil.parser import parse
 import ckan.plugins as p
 
 import logging
-
 import validation
+import precondition
 
 log = logging.getLogger(__name__)
 
@@ -96,7 +96,7 @@ class OdshPlugin(plugins.SingletonPlugin, DefaultTranslation, DefaultDatasetForm
     # IActions
 
     def get_actions(self):
-        return {'package_create': action.odsh_package_create,
+        return {'package_create': precondition.not_on_slave(action.odsh_package_create),
                 'user_create': action.odsh_user_create}
 
     # IConfigurer
@@ -332,11 +332,8 @@ class OdshPlugin(plugins.SingletonPlugin, DefaultTranslation, DefaultDatasetForm
                     dict_pkg['openness']=OdshPlugin.scores[score-1]
 
 
+    @precondition.not_on_slave
     def before_index(self, dict_pkg):
-        debug = config.get('ckanext.odsh.debug',False)
-        slave = config.get('ckanext.odsh.slave',False)
-        assert not (debug and slave)
-
         # make special date fields solr conform
         fields = ["issued", "temporal_start", "temporal_end"]
         for field in fields:
diff --git a/ckanext/odsh/precondition.py b/ckanext/odsh/precondition.py
new file mode 100644
index 0000000000000000000000000000000000000000..542c14fbb564c7a9a4e0b65ed00072de0617482a
--- /dev/null
+++ b/ckanext/odsh/precondition.py
@@ -0,0 +1,17 @@
+from pylons import config
+
+
+class PreconditionViolated(Exception):
+    def __init__(self, message):
+        super(PreconditionViolated, self).__init__(message)
+
+
+def not_on_slave(func):
+    def wrapped(*args, **kwargs):
+        if config.get('ckanext.odsh.slave', False):
+            raise PreconditionViolated('not allowed on slave')
+        return func(*args, **kwargs)
+
+    if config.get('ckanext.odsh.debug', False):
+        return wrapped
+    return func