Paul Galvin's (old) SharePoint space [SharePoint

Just another WordPress.com site

Premature Workflow Activation — A Non-medical Solution

UPDATE: See this MSDN discussion, especially the last entry: http://forums.microsoft.com/MSDN/showpost.aspx?postid=2631057&siteid=1.  It describes a condition that may short circuit this whole thing.  In short, it may be as simple as making at least one of the fields mandatory.

I have a document library that supports eight content types.

I have a SharePoint Designer workflow that wants to calculate and assign a "reminder date" by simply subtracting 30 days from another column, "due date".  This should only happen for one of the content types, "Insurance".  The business objective is to produce a KPI that shows two categories of insurance documents: "about to expire" and "expired."  (You can read more about this kind of KPI and more substantial drill-down here).

I have configured the workflow to fire when a new item is created and when an item is modified.  The idea is that when an insurance document is uploaded, we calculate a "warning date" based on the expiration date.  A pair of views work in connection with a KPI List to highlight these conditions when users hit their home page.

This strategy does not work when I upload a document.

I upload the document and I am presented with the meta data entry screen.  At this point, I’m already in trouble.  SharePoint has already, prematurely from my perspective, fired the workflow.  I haven’t had a chance to pick the correct content type nor assign a due date.  At the same time, the workflow does not fire when I hit the submit button at this time.  There’s some built-in logic that "believes" that first submit is part of the "create" event.  So … my workflow has fired and when it executed, it was passed default meta data values. 

The best work-around I know of is to insert a "pause until" activity in the workflow.  I have the workflow pause for 1 minute.  While it’s pausing, I select the correct content type, enter the meta data and submit.  The pause completes and the workflow proceeds as needed.  (Note that in my environment, timer workflow activities from SPD do not work out of the box.  You may have the same trouble.  See here for more details).

I don’t like "magic delay" work-around.  What happens if the user uploads a document and the phone rings and the ensuing conversation outlasts the pause?  I can make the pause longer, but I still don’t like it.

I wrote about this on the MSDN forums here: http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=2430725&SiteID=1 

Advertisements

8 responses to “Premature Workflow Activation — A Non-medical Solution

  1. Unknown November 27, 2007 at 10:54 pm

    I found this problem also – not just with a date oriented workflow, but any workflow on a doc library where users will upload documents.
     
    If the workflow depends on any metadata, you can\’t have it fire automatically because the upload fires the workflow before the metatdata is filled in.  This is a flaw in SharePoint in my opinion.
     
    As for "reminder" dates, instead of using workflow, I ended up writing a timer job that scans the list every day and sends out e-mail reminders based on a date field. 
     
    I tried having users manually start the workflow after the metadata was entered, but I still had a problem using workflow for the reminders because it would pause the workflow until the reminder date, but if the user later edited the document data and changed the date, the old reminder workflow was still out there.
     

  2. Paul November 27, 2007 at 11:19 pm

    Joe,
     
    I\’m glad to know I\’m not the only one.  This is another case where SharePoint brings you soooo close to a solution but leaves you short and no really good option to finish the crossing line. 
     
    I went down the same path you describe but didn\’t finish it entirely.  I expect I will end up doing exactly that in the end.
     
    Thanks for sharing,
     
    –Paul G

  3. Unknown November 28, 2007 at 8:50 am

    I know what you mean… my saying around here in my office is that SharePoint does about 90% of what you really need it to do… but that last 10% that it doesn\’t do is usually really a killer.

  4. Corey November 28, 2007 at 2:27 pm

    We had this same issue and what we wound up doing was to create an "Unclassified" content type which was the default.  As long as your workflows ignore the "Unclassified" content type (and you\’re not firing on create) you\’re good to go.

  5. Richard January 7, 2008 at 2:14 pm

    I saw a post to a similar issue that said you need to make the fields required and that it will then stop the workflow from firing until the required fields are filled in. I have not tested it just documenting here what I read elsewhere.

  6. Marc August 26, 2008 at 4:40 pm

    Can\’t you just attach the workflow to the Content Type itself rather than the list?  It sounds like you want the workflow only to fire for a specific Content Type, anyway.

  7. Saurabh October 2, 2008 at 4:02 pm

    Hi,I am creating a reminder wrokflow using SharePoint Designer, and when i  using "Pause Until Date" activity. It doesn\’t resume and Workflow status does not change from "In Progress".(i.e it displays "Pausing for 0 minutes" under Workflow History but it doesn\’t take specified action). I have created it many times but found same problem.I have done some googling for that in last some days, and from there I had got a hot fix  KB 932394 and installed it but still I am in same trouble with Pause Until Date Activity.I have also changed job-workflow time duration using stsadm command from 5 minutes to 1 minute as below:
    stsadm -o setproperty -propertyname "job-workflow" -propertyvalue "every 1 minutes between 0 and 59" -url http://localhost
    but found same problem.What should I do for this? Please suggest me why "Pause Until Date" doesn\’t resume and Workflow status does not change from "In Progress" in my workflow.If anyone have any solution regarding this then please reply me at saurabhsinghmca@gmail.comThank you,Saurabh Kumar Singh

  8. Nyi Htway February 15, 2009 at 11:56 am

    hey guys, I got the solution. place an EventDriven activity next to the Workflow Initialize event. put an OnWorkflowItemChanged event. Inside there, catch the updated value from the custom column. It works for me.

Leave a Reply

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

%d bloggers like this: