diff --git a/stager_access.py b/stager_access.py
index eb8cb999b1095adbc0086619ff42013271d1e585..d379f7d7b388f9bc4f76ec64bb4945ead2063ed5 100755
--- a/stager_access.py
+++ b/stager_access.py
@@ -186,6 +186,32 @@ def get_progress(status=None, exclude=False, only_last24h=False):
         requests = all_requests
     return requests
 
+def get_stuck_requests(min_retries = 3, days_without_activity = 30):
+    try:
+        p = proxy.LtaStager.getprogress(True, 0)
+    except xmlrpclib.Error as e:
+        raise Exception(remove_credentials_from_exception(e))
+    stuck = {}
+    for request_id, request_stats in p.items():
+        if request_stats['Status'] != 'aborted' and int(request_stats['Retries']) >= min_retries:
+            pending = get_surls_pending(int(request_id))
+            request_stats['Pending surls'] = pending
+            token = get_srm_token(int(request_id))
+            request_stats['SRM token'] = token
+            if days_without_activity is None or 'Latest success' not in request_stats.keys():
+                request_stats['Pending since'] = "Cannot be determined"
+                stuck[request_id] = request_stats
+            else:
+                dt = datetime.datetime.strptime(request_stats['Latest success'], '%Y-%m-%d %H:%M:%S.%f')
+                if datetime.datetime.now() - dt > datetime.timedelta(hours = 24 * days_without_activity):
+                    request_stats['Pending since'] = dt
+                    stuck[request_id] = request_stats
+    if stuck:
+        prettyprint(stuck)
+    else:
+        print('Nothing found, all running requests are OK.')
+
+
 def reschedule_on_status(status=None):
     """ Reschedule requests that have a status "on hold" or "aborted".
         :param status: The status that a request has to have in order to be