Escalate Workflow CRM

Recently we had a requirement to write a workflow which would be sending mail to the manager of the owner if a record is not updated within 5 days of it being created or updated.

So here we created two workflows over here one for create and other for update.

For create it would look like this

First we’ll have wait condition where we will set the timeout duration to 5 days. After 5 days the workflow will come out of its wait condition and will check if the “created on” and “modified on” values are equal or not. If equal it means the record has not been updated. So it will send a mail to owner’s manager.

In case of update, things would be little tricky as we need to store the “modified on” date value. This value would later be used to compare against the “modified on” date of the record after workflow comes out of the wait condition.

So here we need to write a custom workflow activity with one input and one output parameter. It will take current modified on date value as input and would pass the same value to the output parameter.

Code would be something this

[CrmWorkflowActivity(“Save Date Variable Value”)]

public partial class WorkflowVariable: SequenceActivity{

public WorkflowVariable(){

InitializeComponent();

}

protected override ActivityExecutionStatus Execute(ActivityExecutionContext executionContext){

this.InitialDateOutput = this.InitialDate;
return
ActivityExecutionStatus.Closed;}


public static DependencyProperty InitialDateProperty = DependencyProperty.Register(“InitialDate”, typeof(CrmDateTime), typeof(WorkflowVariable));

[CrmInput(“Initial Date Input”)] //Input Label
public CrmDateTime InitialDate {

get{
return (CrmDateTime)base.GetValue(InitialDateProperty);}

set{
base.SetValue(InitialDateProperty, value);}

}

public static DependencyProperty InitialDateOutputProperty = DependencyProperty.Register(“InitialDateOutput”, typeof(CrmDateTime), typeof(WorkflowVariable));

[CrmOutput(“Initial Date OutPut”)] //Input Label
public CrmDateTime InitialDateOutput {

get {
return (CrmDateTime)base.GetValue(InitialDateOutputProperty);}

set{

base.SetValue(InitialDateOutputProperty, value);}

}}

This is how the final workflow would look for update

Bye.


Author: Nishant Rana

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

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