I am working on a SharePoint 2013 site collection. And I have an Issue Tracking list, where I want to perform these actions on it once a day (at 12:05 AM):-
- Check if a column named "Review Date" of an item is met (Review date = today), and if so, to change the item status to be "In Progress".
- Then to send an email to the "Assigned To" user , that there is an item assigned to him with “Review Date” that have been met.
Now I read many articles about implementing similar background jobs in SharePoint 2013, and I can list these main approaches:-
- Write the 2 checks inside a PowerShell script, and call this PowerShell script on timely basis using windows task scheduler.
- Using Visual studio I can create a timer job as a Farm solution and deploy it inside the web application.
- To create a workflow which do the two checks (send email & update the tem status), then link the workflow with the related content type. After that I can set a retention policy which calls the workflow daily.
So I am totally confused on what are the advantages and disadvantages of each approach. Now from my point of view I can list these :-
- Using PowerShell & windows task scheduler. I will be creating dependencies on SharePoint outside the SharePoint farm. For example backuping the farm will not include the PowerShell scripts and their schedule.
- While creating a timer job , will require me to create a farm solution which is not the best approach in SharePoint 2013.
- While the third approach seems the best as it is more SharePoint oriented and can be extended and managed with minimal code?
So can anyone advice on the differences between these approaches, and are there additional approaches better than these?