- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎03-31-2022 01:19 PM
Hello,
I'm wondering if someone can tell me how to see when the last time was that a workflow was used? I keep seeing references to the wf_context table, which shows me some workflows and the last time they were triggered, but that still requires a lot of manual effort to look at dates and compare workflows in that table to the amount of workflows in our system. Ideally, I'd like to have a report that shows workflows not used in the last 6 months so we can review them and see if they can be set to inactive. Has anyone created something like that before?
Solved! Go to Solution.
- Labels:
-
Workflow

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎04-05-2022 02:36 PM
Sure it would be easy enough to modify the script I previously provided to check for name instead of sys_id, see updated script below. Also -- if any of my answers in this thread have been helpful or solved your question, I would really appreciate it if you mark them as Helpful and/or Correct!
checkWorkflows();
function checkWorkflows() {
var publishedWfGr = new GlideRecord('wf_workflow_version');
publishedWfGr.addEncodedQuery('published=true');
publishedWfGr.query();
var staleWfList = [];
while (publishedWfGr.next()) {
var wfContextGr = new GlideRecord('wf_context');
wfContextGr.addEncodedQuery(gs.getMessage('workflow_version.name={0}^sys_created_onONLast 6 months@javascript:gs.beginningOfLast6Months()@javascript:gs.endOfLast6Months()', publishedWfGr.getValue('name')));
wfContextGr.setLimit(1);
wfContextGr.orderByDesc('sys_created_on');
wfContextGr.query();
if (!wfContextGr.next()) {
staleWfList.push('Published workflow has not been triggered in past 6 months: ' + publishedWfGr.getDisplayValue());
}
}
var resultSummary = staleWfList.join('\n');
if (resultSummary) {
gs.info(resultSummary);
//could you gs.eventQueue() here instead to trigger scheduled email, include resultSummary as event.parm1 or event.parm2
}
}
If this answer is helpful please mark correct and helpful!
Regards,
Christopher Perry
Regards,
Chris Perry

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎03-31-2022 02:06 PM
Hi Casey,
What kind of workflows specifically? Are you referring to workflows for service catalog items (sc_req_item)?
Regards,
Christopher Perry
Regards,
Chris Perry
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎03-31-2022 02:26 PM
Hello!
I'm looking for anything that shows up in the workflow editor as published. Most are sc_req_item, but we have 55 workflows that are for a variety of tables that aren't sc_req_item.

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎03-31-2022 02:55 PM
Got it - so what you could do is set up a scheduled script execution to run however often you need, for example once monthly as below:
In the script we go find all published workflows, and then iterate through each one to see if it has been triggered in the past 6 months, aka does the workflow have a wf_context record created in the last 6 months. If the workflow does not have a wf_context record in the past 6 months then we will add it to an array to print the results at the end of the script. As I commented in the code you could replace the gs.info() with gs.eventQueue() to trigger an email notification on a scheduled basis with the script results:
script:
checkWorkflows();
function checkWorkflows() {
var publishedWfGr = new GlideRecord('wf_workflow_version');
publishedWfGr.addEncodedQuery('published=true');
publishedWfGr.query();
var staleWfList = [];
while (publishedWfGr.next()) {
var wfContextGr = new GlideRecord('wf_context');
wfContextGr.addEncodedQuery(gs.getMessage('workflow_version={0}^sys_created_onONLast 6 months@javascript:gs.beginningOfLast6Months()@javascript:gs.endOfLast6Months()', publishedWfGr.getUniqueValue()));
wfContextGr.query();
if (!wfContextGr.hasNext()) {
staleWfList.push('Published workflow has not been triggered in past 6 months: ' + publishedWfGr.getDisplayValue());
}
}
var resultSummary = staleWfList.join('\n');
if (resultSummary) {
gs.info(resultSummary);
//could use gs.eventQueue() here instead to trigger scheduled email, include resultSummary as event.parm1 or event.parm2
}
}
result in my PDI:
Published workflow has not been triggered in past 6 months: Change Request - Normal change tasks
Published workflow has not been triggered in past 6 months: Knowledge - Instant Publish
Published workflow has not been triggered in past 6 months: Grant role_delegator role to user in group
Published workflow has not been triggered in past 6 months: Knowledge - Approval Publish
Published workflow has not been triggered in past 6 months: HR Case Approval Subflow
Published workflow has not been triggered in past 6 months: Service Task Processing
Published workflow has not been triggered in past 6 months: Pwd Reset - Local ServiceNow
Published workflow has not been triggered in past 6 months: Item Designer - Approvals
Published workflow has not been triggered in past 6 months: HRI Corporate Credit Card Request
Published workflow has not been triggered in past 6 months: On-Call: Escalations By Email Per Rota
Published workflow has not been triggered in past 6 months: Item Designer - generate approvals for current sequence
Published workflow has not been triggered in past 6 months: Pwd Reset - Master
Published workflow has not been triggered in past 6 months: Change Request - Standard
Published workflow has not been triggered in past 6 months: Delegate roles to group member
If this answer is helpful please mark correct and helpful!
Regards,
Christopher Perry
Regards,
Chris Perry
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎04-04-2022 01:54 PM
Thank you for the reply! I ran this script, and for the most part, it worked great. However, I was manually reviewing a handful on the list just to see if I could find any discrepancies and noticed a couple.
We have two workflows which I can see have had workflows triggered in the last 6 months. In fact one of them had a bunch that were triggered today. So I'm curious why those would have showed up in the list? I attached images of the two workflows in question so you could see what I am talking about. This screen shot is from the Workflow Contexts table.