SharePoint Developer Support Team Blog

The Official blog of the SharePoint Developer Support Team

Workflow name in workflow history list

Workflow name in workflow history list

  • Comments 1
  • Likes

This blog post is a contribution from Balaji Sadasivan, an engineer with the SharePoint Developer Support team.

Issue

In order to audit workflows, we require to see the name of the workflow in the history list.

Cause

Currently the workflow history has no provision to show the workflow name.

Workaround

Create a new workflow history list from the schema of the original workflow history list. To the workflow history list add an ItemAdded even handler. In that write the flowing code:

SPListItem item = properties.ListItem;
SPSite site = new SPSite("http://<Servername>");
SPWeb web = site.RootWeb;
SPList destination = web.Lists["CustWFHistory"];//Custom workflow list
SPList wrkFlwList = web.Lists["MyList"];//The list where the workflow is located
           
           
string assocID = item["Workflow Association ID"].ToString();//Copying values from source workflow history
string templateID = item["Workflow Template ID"].ToString();
string listID = item["List ID"].ToString();
string primaryID = item["Primary Item ID"].ToString();
DateTime dateOccured = (DateTime)item["Date Occurred"];
Guid instance=new Guid(assocID);
SPWorkflowAssociationCollection WFCol = wrkFlwList.WorkflowAssociations;
           
         
 
SPListItem newItem = destination.Items.Add();
newItem["Workflow Association ID"] = assocID;//Adding them to destination
newItem["Workflow Template ID"] = templateID;
newItem["List ID"] = listID;
newItem["Primary Item ID"] = Convert.ToInt32(primaryID);
newItem["Date Occurred"] = dateOccured;
          
foreach (SPWorkflowAssociation wa in wrkFlwList.WorkflowAssociations)
{
    string silID = wa.Id.ToString();
    assocID = assocID.Replace("{", "");
    assocID = assocID.Replace("}", "");
    assocID = assocID.Trim();
    if(silID==assocID)
        newItem["Workflow name"] = wa.Name;//Getting the workflow name       
}
newItem.Update();
site.Dispose();

The new list will show up with the workflow name, workflow association ID, List ID, date occurred. You can add fields like user ID etc. to the custom list query it from the workflow history list and add it.

Comments
  • Nice post

Your comment has been posted.   Close
Thank you, your comment requires moderation so it may take a while to appear.   Close
Leave a Comment