diff --git a/api/rules.py b/api/rules.py
index 32c910fcfbd5c9bcdb6be0853c09751238727eee..544c35a9c078d489d306611d0d38546f86f7d164 100644
--- a/api/rules.py
+++ b/api/rules.py
@@ -136,8 +136,7 @@ def create_jobs(db, container, container_type, file_):
     job_list = []
 
     # Get configured rules for this project
-    project = get_project_for_container(db, container)
-    rules = project.get('rules', [])
+    rules = get_rules_for_container(db, container)
 
     # Add hardcoded rules that cannot be removed or changed
     for hardcoded_rule in HARDCODED_RULES:
@@ -153,14 +152,16 @@ def create_jobs(db, container, container_type, file_):
     return job_list
 
 # TODO: consider moving to a module that has a variety of hierarchy-management helper functions
-def get_project_for_container(db, container):
+def get_rules_for_container(db, container):
     """
     Recursively walk the hierarchy until the project object is found.
     """
     if 'session' in container:
         session = db.sessions.find_one({'_id': container['session']})
-        return get_project_for_container(db, session)
+        return get_rules_for_container(db, session)
     elif 'project' in container:
         project = db.projects.find_one({'_id': container['project']})
-        return project
-    raise Exception('Hierarchy walking not implemented for container ' + str(container['_id']))
+        return get_rules_for_container(db, project)
+    else:
+        # Assume container is a project, or a collection (which currently cannot have a rules property)
+        return container.get('rules', [])