diff --git a/api/api.py b/api/api.py
index c51c27087ecc08afb20fd94a8e21e73c4cce711c..454490bd247ef80bca827cb46561b174feadf691 100644
--- a/api/api.py
+++ b/api/api.py
@@ -172,6 +172,7 @@ routes = [
     webapp2.Route(_format(r'/api/users/<uid:{user_id_re}>/<cont_name:{cont_name_re}>'), containerhandler.ContainerHandler, name='user_conts', handler_method='get_all_for_user', methods=['GET']),
 
     webapp2.Route(r'/api/projects/groups',                                              containerhandler.ContainerHandler, handler_method='get_groups_with_project', methods=['GET']),
+    webapp2.Route(r'/api/projects/recalc',                                              containerhandler.ContainerHandler, handler_method='calculate_project_compliance', methods=['POST']),
     webapp2.Route(_format(r'/api/projects/<cid:{cid_re}>/template'),                    containerhandler.ContainerHandler, handler_method='set_project_template', methods=['POST']),
     webapp2.Route(_format(r'/api/projects/<cid:{cid_re}>/template/recalc'),             containerhandler.ContainerHandler, handler_method='calculate_project_compliance', methods=['POST']),
 
diff --git a/api/dao/containerstorage.py b/api/dao/containerstorage.py
index cf1218ca61e6b7679e802f09cadeeaf25103c988..2b8d91c6cf64273eb5fdb992cf5e9c5e86276127 100644
--- a/api/dao/containerstorage.py
+++ b/api/dao/containerstorage.py
@@ -166,20 +166,29 @@ class ProjectStorage(ContainerStorage):
     def __init__(self):
         super(ProjectStorage,self).__init__('projects', use_object_id=True)
 
-    def recalc_sessions_compliance(self, project_id):
-        project = self.get_container(project_id, get_children=True)
-        if not project:
-            raise APINotFoundException('Could not find project {}'.format(project_id))
-        template = json.loads(project.get('template',{}))
-        if not template:
-            return
+    def recalc_sessions_compliance(self, project_id=None):
+        if project_id is None:
+            # Recalc all projects
+            projects = self.get_all_el({'template': {'$exists': True}}, None, None)
         else:
-            changed_sessions = []
-            session_storage = SessionStorage()
-            for s in project.get('sessions', []):
-                changed = session_storage.recalc_session_compliance(s['_id'], session=s, template=template)
-                if changed:
-                    changed_sessions.append(s['_id'])
+            project = self.get_container(project_id, get_children=True)
+            if project:
+                projects = [project]
+            else:
+                raise APINotFoundException('Could not find project {}'.format(project_id))
+        changed_sessions = []
+
+        for project in projects:
+            template = json.loads(project.get('template',{}))
+            if not template:
+                return
+            else:
+                session_storage = SessionStorage()
+                for s in project.get('sessions', []):
+                    changed = session_storage.recalc_session_compliance(s['_id'], session=s, template=template)
+                    if changed:
+                        changed_sessions.append(s['_id'])
+        return changed_sessions
 
 
 class SessionStorage(ContainerStorage):
diff --git a/api/handlers/containerhandler.py b/api/handlers/containerhandler.py
index ee44a4b6fc1a880a30a045aff0dff0c7503c77a9..aebc7c43ab4605ba62eefae0906fbe456c4cbc27 100644
--- a/api/handlers/containerhandler.py
+++ b/api/handlers/containerhandler.py
@@ -509,10 +509,10 @@ class ContainerHandler(base.RequestHandler):
             self.abort(404, 'Could not find project {}'.format(project_id))
 
     def calculate_project_compliance(self, **kwargs):
-        project_id = kwargs.pop('cid')
+        project_id = kwargs.pop('cid', None)
         self.config = self.container_handler_configurations['projects']
         self.storage = self.config['storage']
-        return {'sessions_changed': self.storage.recalc_sesssions_compliance(project_id)}
+        return {'sessions_changed': self.storage.recalc_sessions_compliance(project_id=project_id)}
 
     def _get_validators(self):
         mongo_schema_uri = validators.schema_uri('mongo', self.config.get('storage_schema_file'))