diff --git a/SAS/ResourceAssignment/ResourceAssignmentEditor/lib/static/app/controllers/gridcontroller.js b/SAS/ResourceAssignment/ResourceAssignmentEditor/lib/static/app/controllers/gridcontroller.js
index f17d991ba72cba747652197bbc42e8a3b8de147c..8793fe228c7a666d1ec2748d89c61d9bbdc1fcdb 100644
--- a/SAS/ResourceAssignment/ResourceAssignmentEditor/lib/static/app/controllers/gridcontroller.js
+++ b/SAS/ResourceAssignment/ResourceAssignmentEditor/lib/static/app/controllers/gridcontroller.js
@@ -788,6 +788,25 @@ gridControllerMod.directive('contextMenu', ['$document', '$window', function($do
                 });
             }
 
+            var liContent = selected_tasks.length > 0 ? '<li><a href="#">Show parset</a></li>' : '<li><a href="#" style="color:#aaaaaa">Show parset</a></li>'
+            var liElement = angular.element(liContent);
+            ulElement.append(liElement);
+            if(selected_tasks.length > 0) {
+                liElement.on('click', function() {
+                    closeContextMenu();
+
+                    var window_cntr = 0;
+                    for(var selected_task of selected_tasks) {
+                        var url = 'rest/tasks/otdb/' + selected_task.otdb_id + '/parset';
+                        setTimeout(function(url_arg) {
+                            $window.open(url_arg, '_blank');
+                        }, window_cntr*750, url);
+                        window_cntr += 1;
+                    }
+
+                });
+            }
+
             var liContent = completed_selected_cep4_tasks.length > 0 ? '<li><a href="#">Show disk usage</a></li>' : '<li><a href="#" style="color:#aaaaaa">Show disk usage</a></li>'
             var liElement = angular.element(liContent);
             ulElement.append(liElement);
diff --git a/SAS/ResourceAssignment/ResourceAssignmentEditor/lib/webservice.py b/SAS/ResourceAssignment/ResourceAssignmentEditor/lib/webservice.py
index 90d85e8b7489d75336e899af23cb6b26fb820fd4..2c3d51cd89c80f56c3270e8bf729d13b71016d99 100755
--- a/SAS/ResourceAssignment/ResourceAssignmentEditor/lib/webservice.py
+++ b/SAS/ResourceAssignment/ResourceAssignmentEditor/lib/webservice.py
@@ -510,6 +510,31 @@ def copyTask(task_id):
 
         return jsonify({'copied':False})
 
+@app.route('/rest/tasks/<int:task_id>/parset', methods=['GET'])
+@gzipped
+def getParset(task_id):
+    try:
+        task = radb().getTask(task_id)
+
+        if not task:
+            abort(404)
+
+        return getParsetByOTDBId(task['otdb_id'])
+    except Exception as e:
+        abort(404)
+    abort(404)
+
+@app.route('/rest/tasks/otdb/<int:otdb_id>/parset', methods=['GET'])
+@gzipped
+def getParsetByOTDBId(otdb_id):
+    try:
+        logger.info('getParsetByOTDBId(%s)', otdb_id)
+        parset = otdbrpc.taskGetSpecification(otdb_id=otdb_id)['specification']
+        return '\n'.join(['%s=%s' % (k,parset[k]) for k in sorted(parset.keys())]), 200, {'Content-Type': 'text/plain; charset=utf-8'}
+    except Exception as e:
+        abort(404)
+    abort(404)
+
 @app.route('/rest/tasks/<int:task_id>/resourceclaims')
 @gzipped
 def taskResourceClaims(task_id):
@@ -741,6 +766,8 @@ def getTaskHtml(task_id):
 
     html += '<p><a href="/tasks/%s/log.html">%s log</a></p> ' % (task['id'], task['type'])
 
+    html += '<p><a href="/rest/tasks/%s/parset">view %s parset</a></p> ' % (task['id'], task['type'])
+
     props = sorted(task.keys())
     html += '<tr><th>key</th><th>value</th></tr>\n'