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(){



protected override ActivityExecutionStatus Execute(ActivityExecutionContext executionContext){

this.InitialDateOutput = this.InitialDate;

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

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

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

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);}


base.SetValue(InitialDateOutputProperty, value);}


This is how the final workflow would look for update



Author: Nishant Rana

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

Please share your thoughts

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

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

Google photo

You are commenting using your Google 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 )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.