Showing posts with label SharePoint Designer. Show all posts
Showing posts with label SharePoint Designer. Show all posts

SPD Workflow to send reminder notification

Consider a list or library having fields such as End Date and Contract Owner. The requirement is to send the notification to Owner if the contract is going to expire within 30 days from today.
This functionality can be achieved using the SPD workflow with action “Pause Until Date”
To do this, create a calculated column, name it "Alert Date" with formula as [End Date] + 30
  • Now, go into SharePoint Designer.
  • Create a custom workflow with Action “Pause Until this time”
  • Insert the “Alert Date”
  • Pause Until [Alert Date]
  • then Email
If the requirement is too complex to achieve using SPD workflow, then it is preferred to create custom Timer Jobs. Article for this is available at: http://msdn.microsoft.com/en-us/library/cc406686.aspx

Clear SPD Workflow Cache

Whenever the SPD workflow is opened, it fetch the workflow details from server. When the workflow is modified and closed, all the steps are recompiled on the local machine and the same changes finally gets updated on the server.
But some times, it may happen that the workflow show the modified steps, but doesn't work accordingly. This may be due to the changes updated in the cache of local machine, but not reflected on the server workflow. This is a bug from Microsoft.
To fix this problem follow the below mentioned steps to clear the SPD activity cache:
  • Close SPD.
  • Open “My Computer”.
  • Go to %System Drive%\Documents and Settings\%user%\Local Settings\Application Data\Microsoft\WebSiteCache (If you are running Vista, that path is different - look for %System Drive%\Users\%user%\AppData\Local\Microsoft\WebSiteCache).
  • Go to a directory that looks similar to the name of the website you were connecting to. (Alternatively, you can just delete all these directories and everything should work when you boot SPD).
  • Delete the assembly with the name similar to the one you are changing.
  • Boot SPD.
You can now work with your updated activity.

Filter items in a View by User or Group

SharePoint offers different types of views, depending on the type of list. We can filter the items in the views by taking any field as a filter. But if we want to filter the items so that a particular user(other than the user who Created the item) or a group can see them, then views are not directly helpful. We have to use some tricks in order to make them useful.

Let me present a scenario: Suppose I have a list and I want to filter the default view in such a way that every dept can see their own dept items. Lets see how this can be done without code.

Take the names of all the people who are working in respective departments. Like take the names of people working in finance department, then take the names of the people in HR department and like this, take the names department wise. Create a column in the list and give it the name "Users". Choose the type of the field as "People or Group" and select "username" in the last drop down list box. Dont forget to click Yes in "Allow Multiple selections". Once you are done, open SharePoint Designer. In SharePoint designer create a new workflow and write the if condition like:

If department is Finance
     then set the value of the field "Users" equal to usernames

Now here you need to write the usernames of the people who are in finance department in the following manner: jason; david; vic;

Always remember that you have to write the usernames as you selected "usernames" while creating the column "Users". You can get a person's username from his or her account. name like if SHAREPOINT\jason is the account name then the username is jason and SHAREPOINT is the Domain name. Username is case sensitive so write it exactly in the same way as it appears in the account name. You can write any number of usernames seperated by ";".

Create "If" conditions for other departments in the same way, writing their people's usernames in the "Users" field. Once you are done just finish the workflow.

Now come back to the list and click on "Modify this view" for the default view. In filter option, filter the items by selecting "Users" in the field, select "is equal to" and write its value as "[Me]".
Now the filter will work depending on the login user. If the login user name comes in the users column then he will be able to see the item else not.

Whenever an item is created in the list, workflow will run and depending on the departement column value mentioned in the item. Once the item is created, "Users" column value will be set and each department will be able to see their respective department's items.