Programmatically updating the status of workflow logs using TargetUpdateWorkflowLog class in CRM 4.0

I was just trying out if changing the status for the workflow is possible programmatically. Well this is something I tried.

Created a function which would take primary key(guid) of the entity intance and would return all the workflow logs for that entity instance having status as “In Progress” and changing their status to “Failed”

 

The function to retrieve all the workflowlog id

 

private ArrayList   GetInProgressWorkflowLogIDForEntity(CrmService crmService, string EntityId)

        {

            QueryExpression myQuery = new QueryExpression();

            ColumnSet myCols = new ColumnSet();

            // to retireve workflowlogid

            myCols.Attributes = new String[] { “workflowlogid” };

            myQuery.ColumnSet = myCols;

            myQuery.EntityName = EntityName.workflowlog.ToString();

          

            ConditionExpression myCondtionExpression1 = new ConditionExpression();

            // entityinstance id against which workflowlog is running

            myCondtionExpression1.AttributeName = “regardingobjectid”;

            myCondtionExpression1.Operator = ConditionOperator.Equal;

            myCondtionExpression1.Values = new object[] {EntityId };

            // Status of workflowlog

            // Failed – 3

            // Succeeded – 2

            // In Progress – 1

            ConditionExpression myCondtionExpression2 = new ConditionExpression();

            myCondtionExpression2.AttributeName = “In Progress”;

            myCondtionExpression2.Operator = ConditionOperator.Equal;

            myCondtionExpression2.Values = new object[] { “1” };

 

            FilterExpression myFilterExpression = new FilterExpression();

            myFilterExpression.FilterOperator = LogicalOperator.And;

            myFilterExpression.Conditions = new ConditionExpression[] { myCondtionExpression1, myCondtionExpression2 };

 

            myQuery.Criteria = myFilterExpression;

 

            BusinessEntityCollection myBE=crmService.RetrieveMultiple(myQuery);

 

            ArrayList myWFLogList = new ArrayList();

            foreach (BusinessEntity myBusinessEntity in myBE.BusinessEntities)

            {

                workflowlog myWFLogId = (workflowlog)myBusinessEntity;

                myWFLogList.Add(myWFLogId.workflowlogid.Value.ToString());

 

            }

            return myWFLogList;    

        }

 

 

 

 

Using TargetUpdateWorkflowLog class

 

 

ArrayList myWorkflowLog=GetInProgressWorkflowLogIDForEntity(crmService, “55B93CBB-99E3-DD11-9D85-00164145E126”);

 

                foreach (String wfLogId in myWorkflowLog)

                {

                    TargetUpdateWorkflowLog myUpdateWorkflow = new TargetUpdateWorkflowLog();

                    myUpdateWorkflow.WorkflowLog = new workflowlog();

                    myUpdateWorkflow.WorkflowLog.workflowlogid = new Key();

                    // workflowlogid of workflow having status as In Progress

                    // to be changed to Failed – 3

                    myUpdateWorkflow.WorkflowLog.workflowlogid.Value = new Guid(wfLogId);

 

                    // Failed – 3

                    // Succeeded – 2

                    // In Progress – 1

                    myUpdateWorkflow.WorkflowLog.status = new Picklist();

                    myUpdateWorkflow.WorkflowLog.status.name = “Failed”;

                    myUpdateWorkflow.WorkflowLog.status.Value = 3;

 

                    UpdateRequest myRequest = new UpdateRequest();

                    myRequest.Target = myUpdateWorkflow;

 

                    UpdateResponse myRes = (UpdateResponse)crmService.Execute(myRequest);

                }

           


Author: Nishant Rana

I love working in and sharing everything about Microsoft.NET technology !

1 thought on “Programmatically updating the status of workflow logs using TargetUpdateWorkflowLog class in CRM 4.0”

Share your thoughts

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s