Take the 2-minute tour ×
SharePoint Stack Exchange is a question and answer site for SharePoint enthusiasts. It's 100% free, no registration required.

I have a custom list that is being used as a "ticket" system for requests from users to our technical group. We have 3 different "departments" who work these tickets, each with a corresponding "status" field with choices for "not started", "in progress" and "complete".

I would like to add 3 timestamp fields (one for each department) that populate the date and time when the status is changed to "complete" for that particular group. This timestamp needs to be "locked-in" so that it doesn't change when the form is modifed by others. I've experimented with the date and time functions (including "today") but am unable to keep the field from changing on subsequent form edits.

The caveat to this is that the powers-that-be in our organization have blocked SharePoint Designer from being used with the sites, so no customization or custom workflows (we're limited to Approval and Three-State!). I have managed to get InfoPath though, so there's at least some flexibility. I am assuming that this can be accomplished with some code? If so, I would appreciate some help getting pointed in the right direction please.

Many thanks in advance!

share|improve this question
    
What version of SharePoint are you working with? –  Dave Wise Sep 11 '13 at 19:09

3 Answers 3

You can not accomplish this either using SharePoint Designer or InfoPath. Create a solution package instead.

You could add 2 datetime fields, let's call them "dateInProgress" and "dateComplete". Both should be DateTime fields. Now, if you have the possibility to make an event receiver, you could create one that runs on every update, and populates the datetime fields. By checking whether "dateInProgress" and "dateCompleted" are empty before saving them, you can make sure that it only writes to these fields once (for each field).

In order to prevent users to change the datetime fields through the user interface, you can make them hidden.

The question is whether you have the possibility to deploy a custom solution. The functionality that I described can be made as a sandboxed solution, so this should not be a problem. it just has to be deployed by a person who is site collection administrator.

share|improve this answer

If you are using InfoPath you can do this.
For each timestamp field you need to update the time by InfoPath form.
If status filed is updated with 'Completed' value you need to update the timestamp field automatically

You can check a working demo video or follow the following steps:

Edit the InfoPath form.

  1. Click on 'status' field to select it
  2. Home Tab > Add Rule > Is Equal to... > Set's a field value
  3. In the "Rul Detail" dialog box input following:
    -If status is equal to following:Completed
    -Field:CompletedDate
    -Value:now()
  4. Now on 'Rule' pane which on right side click on the condition so that it shows a dialog which takes more logical inputs
  5. Add one more condition: CompletedDate 'is blank'. Take a loo at this screenshot
    This condition makes sure that if completed date is already set don't update it.
    Add 'And' condition

Remove the 'DateCompleted' field from the form as this will be set automatically by InfoPath.

Publish the form and test it.

share|improve this answer

You can write event receiver code to a visual studio solution (dont know how to add event receiver?).
Use the ItemUpdating event, as there you would find both older and newer values, and thus can track if the status has changed (dont know how to check for column value changes?).

As far as hiding these date columns from end users, you can do that through the list's Advance Settings.

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.