What actions are used in which workflows?

  • 28 March 2018
  • 6 replies
  • 15 views

Userlevel 7
Badge +17

Hey! Does anyone know how to find out which actions are used in what workflows? I know that using the "Know your workflow" PowerShell script I can find out how often particular actions are used. But there is no report showing in details in which, specific workflows the particular action is used. Do you know how this can be done?

This is related to a Standard Nintex for SP2010.

Regards,

Tomasz


6 replies

Badge +11

Hi Tomasz,

I can only image two ways right now (and both will inflict pain to the poor guy who has to do that = )

1. Modify/Reuse the Know your Workflow script

As far as i inspected that script it is querying mainly the Workflow Progress table to get information about the used actions. Maybe you can join some other tables there to get the precise information you need. However you would have to dive quite deep into the different tables which might be difficult for guys that haven't developed that data model.

2. Inspect exported XML-files

You could write a powershell script that exports all your workflows as xml files and then inspect this xml files script-based to count the actions used. The action types can be identified by the "Type" tag. For example:

<Type>Nintex.Workflow.Activities.Adapters.NWWriteToHistoryListAdapter</Type>

Identifies the Log to history list action. But this requires you to know all the different types first to switch for them.

I really hope there is some ootb script/tool/whatever that already does that. But may I aks why exactly you need this information?

Userlevel 7
Badge +17

This is possible using PowerShell, but it is very convoluted. For example, export a workflow, look at the file in a text editor, you will see the actions there. Now think on how you have to pull that from each workflow.

Or you can just connect the inventory lens in Hawkeye and you're done.

Userlevel 7
Badge +17

Thanks Andrew. I am trying now to modify Vadim's script to ha de that for me. The case is, this is a Standard license of Nintex 2010, and that there are hundreds of Site Collections and workflows inside.

I already made a quite deep analysis of the environment, but what I am missing is the knowledge about the actions used in workflows what I find very important as the project is about migration to O365.

Regards, 

Tomasz

Userlevel 7
Badge +17

The know your workflow does show the top actions in use, just not actions per workflow. 

Are you using a tool for the migration? 

Are you trying to correct/prep/plan for change for workflows that wont' operate online? What if you handle this post migration, because if there are ones that are needed to be updated, you may not have time to correct them before hand. And migration tools will tell you which do not transfer. 

Userlevel 7
Badge +17

I am. I am using Sharegate. However I just wanted to have an overview to explain to the customer where the costs are coming from.

I already quite did what I needed, but hoped there is something already available happy.png

Tomasz Poszytek

e-mail: tomasz@poszytek.eu

tel: +48 603 993 372

www/ blog: www.poszytek.eu

twitter: @TomaszPoszytek

Userlevel 7
Badge +17

I ended up in adding a new function to Vadim Tabakman‌'s script (Nintex Workflow - PowerShell Find Workflows with Verbose Logging Enabled Part 5 - Vadim Tabakman), which lists me all actions and their types from each exported workflow:

"FindActionsWithinWorkflows"
{
  $actionsTypesPlusActions = [regex]::matches($exportedworkflow, "TLabel /|(?<=TLabel&gt;)[w ]*(?=&lt;/TLabel)|(?<=Type&gt;)[w. ]+(?=&lt;/Type)"); 
  $counter = 0;

  for ($i = 0; $i -lt $actionsTypesPlusActions.Count; $i += 2) {
    if (($actionTitle = $actionsTypesPlusActions[$i].Value) -eq "TLabel /" -or ($actionTitle = $actionsTypesPlusActions[$i].Value) -eq "") {
      $actionTitle = "Noname";
    }
    if ($actionsTypesPlusActions[$i].Value -like "Nintex.Workflow*") {
      $actionTitle = "Noname"; $i--;
    }
    $message = "{0} ; {1} ; {2} ; {3} ; {4}" -f $site,$list,$workflowname,$actionTitle,$actionsTypesPlusActions[($i+1)].Value;
    echo $message;
  }
}

Maybe this will be useful for someone happy.png

Regards,

Tomasz

Reply