diff --git a/ckanext/odsh/controller.py b/ckanext/odsh/controller.py
deleted file mode 100644
index fb271c2741a8506a235f54ef239f8ff97bc34d36..0000000000000000000000000000000000000000
--- a/ckanext/odsh/controller.py
+++ /dev/null
@@ -1,32 +0,0 @@
-from types import FunctionType
-import ckan.lib.base as base
-import decorator
-from ckanext.harvest.controllers.view import ViewController as HarvestController
-import ckan.authz as authz
-import logging
-import ckan.logic as logic
-
-abort = base.abort
-log = logging.getLogger(__name__)
-render = base.render
-get_action = logic.get_action
-
-def only_admin(func, *args, **kwargs):
-    if not authz.is_sysadmin(c.user):
-        abort(404)
-    return func(*args, **kwargs)
-
-
-class MetaClass(type):
-    def __new__(meta, classname, bases, classDict):
-        newClassDict = {}
-        wdec = decorator.decorator(only_admin)
-        for attributeName, attribute in list(bases[0].__dict__.items()):
-            if isinstance(attribute, FunctionType) and not attributeName.startswith('_'):
-                attribute = wdec(attribute)
-            newClassDict[attributeName] = attribute
-        return type.__new__(meta, classname, bases, newClassDict)
-
-
-class OdshHarvestController(HarvestController, metaclass=MetaClass):
-    pass
diff --git a/ckanext/odsh/plugin_odsh_harvest.py b/ckanext/odsh/plugin_odsh_harvest.py
deleted file mode 100644
index 6c7d326da317cd8c88254457b5adf380bd62bb81..0000000000000000000000000000000000000000
--- a/ckanext/odsh/plugin_odsh_harvest.py
+++ /dev/null
@@ -1,48 +0,0 @@
-import ckan.plugins as plugins
-import ckan.plugins.toolkit as toolkit
-import ckanext.odsh.logic.action as action
-
-
-class OdshHarvestPlugin(plugins.SingletonPlugin):
-    plugins.implements(plugins.IRoutes, inherit=True)
-    plugins.implements(plugins.IConfigurer)
-
-    def update_config(self, config_):
-        toolkit.add_template_directory(config_, 'harvest_templates')
-
-    def before_map(self, map):
-        DATASET_TYPE_NAME = 'harvest'
-        controller = 'ckanext.odsh.controller:OdshHarvestController'
-        
-        map.connect('{0}_delete'.format(DATASET_TYPE_NAME), '/' +
-                    DATASET_TYPE_NAME + '/delete/:id', controller=controller, action='delete')
-        map.connect('{0}_refresh'.format(DATASET_TYPE_NAME), '/' + DATASET_TYPE_NAME + '/refresh/:id', controller=controller,
-                    action='refresh')
-        map.connect('{0}_admin'.format(DATASET_TYPE_NAME), '/' +
-                    DATASET_TYPE_NAME + '/admin/:id', controller=controller, action='admin')
-        map.connect('{0}_about'.format(DATASET_TYPE_NAME), '/' +
-                    DATASET_TYPE_NAME + '/about/:id', controller=controller, action='about')
-        map.connect('{0}_clear'.format(DATASET_TYPE_NAME), '/' +
-                    DATASET_TYPE_NAME + '/clear/:id', controller=controller, action='clear')
-
-        map.connect('harvest_job_list', '/' + DATASET_TYPE_NAME +
-                    '/{source}/job', controller=controller, action='list_jobs')
-        map.connect('harvest_job_show_last', '/' + DATASET_TYPE_NAME +
-                    '/{source}/job/last', controller=controller, action='show_last_job')
-        map.connect('harvest_job_show', '/' + DATASET_TYPE_NAME +
-                    '/{source}/job/{id}', controller=controller, action='show_job')
-        map.connect('harvest_job_abort', '/' + DATASET_TYPE_NAME +
-                    '/{source}/job/{id}/abort', controller=controller, action='abort_job')
-
-        map.connect('harvest_object_show', '/' + DATASET_TYPE_NAME +
-                    '/object/:id', controller=controller, action='show_object')
-        map.connect('harvest_object_for_dataset_show', '/dataset/harvest_object/:id',
-                    controller=controller, action='show_object', ref_type='dataset')
-
-        org_controller = 'ckanext.harvest.controllers.organization:OrganizationController'
-        map.connect('{0}_org_list'.format(DATASET_TYPE_NAME), '/organization/' +
-                    DATASET_TYPE_NAME + '/' + '{id}', controller=org_controller, action='source_list')
-        return map
-
-    def after_map(self, map):
-        return map
\ No newline at end of file
diff --git a/ckanext/odsh/tests/test_env.py b/ckanext/odsh/tests/test_env.py
index 3162b25fe050dcd0decd86ed6fc94267ff7c5937..bc36ce40aff618df47b0f16917b4601ba0f9851a 100644
--- a/ckanext/odsh/tests/test_env.py
+++ b/ckanext/odsh/tests/test_env.py
@@ -144,7 +144,7 @@ class TestEnv:
             assert p in value, 'missing plugin:' + p
 
         if isMaster():
-            for p in ['odsh_icap', 'odsh_dcat_harvest', 'odsh_harvest']:
+            for p in ['odsh_icap', 'odsh_dcat_harvest']:
                 assert p in value, 'missing plugin:' + p
         if isSlave():
             for p in ['odsh_autocomplete datarequests']:
diff --git a/setup.py b/setup.py
index 260ce13ac5080cf9c11ac36d8595e26bf5b1dfa0..bf2e5056f06d945c5aecfd88037980cc9d33892b 100755
--- a/setup.py
+++ b/setup.py
@@ -85,7 +85,6 @@ setup(
         statistikamtnord_harvester=ckanext.odsh.harvesters:StatistikamtNordHarvester
         kiel_harvester=ckanext.odsh.harvesters:KielHarvester
         odsh_autocomplete=ckanext.odsh.plugin_odsh_autocomplete:OdshAutocompletePlugin
-        odsh_harvest=ckanext.odsh.plugin_odsh_harvest:OdshHarvestPlugin
         odsh_dcat_harvest=ckanext.odsh.plugin_odsh_dcat_harvest:OdshDCATHarvestPlugin
         odsh_collections=ckanext.odsh.collection.plugin:CollectionsPlugin
         thumbnail=ckanext.odsh.pdf_to_thumbnail.plugin:ThumbnailPlugin