spsdc 2013 building solutions using sharepoint timer jobs

44
#SPSDC @PGBhoyar Presented By: Prashant G Bhoyar Building Solutions using SharePoint Timer Jobs 08 June 2013

Upload: prashant-g-bhoyar

Post on 26-Dec-2014

1.844 views

Category:

Education


2 download

DESCRIPTION

Slides of my session on SharePoint 2010 Timer Jobs at SPSDC 2013 in Room 5182A at 12:45 PM. Location: Microsoft Chevy Chase 5404 Wisconsin Ave Chevy Chase, MD 20815

TRANSCRIPT

Page 1: SPSDC 2013 Building Solutions using SharePoint Timer Jobs

#SPSDC @PGBhoyar

Presented By: Prashant G Bhoyar

Building Solutions using SharePoint Timer Jobs

08 June 2013

Page 2: SPSDC 2013 Building Solutions using SharePoint Timer Jobs

#SPSDC @PGBhoyar

Who am I?

Page 3: SPSDC 2013 Building Solutions using SharePoint Timer Jobs

#SPSDC @PGBhoyar

About today’s Session• Raise your hand if something is not clear

• Sharing is Caring

• Ask Questions

• Let the learning begins…

Page 4: SPSDC 2013 Building Solutions using SharePoint Timer Jobs

#SPSDC @PGBhoyar

What Will We Cover Today?• What are Timer Jobs?

• Common business scenarios for Timer Jobs

• Timer Job architecture

• Developing Timer Jobs

• Various approaches to registering Timer Jobs

• How to Test/Debug Timer Jobs

• Common issues and fixes for Timer Jobs

• Timer Jobs best practices

• When not to use them

Page 5: SPSDC 2013 Building Solutions using SharePoint Timer Jobs

#SPSDC @PGBhoyar

Page 6: SPSDC 2013 Building Solutions using SharePoint Timer Jobs

#SPSDC @PGBhoyar

What are Timer Jobs?• Perform much of backend work to maintain farm

• Run on one or more server at scheduled time

• Run periodically and independent of the users

• Offload long running processes from web front end server

• Run code under higher privileges

Page 7: SPSDC 2013 Building Solutions using SharePoint Timer Jobs

#SPSDC @PGBhoyar

What are Timer Jobs?• To Summarize,

Page 8: SPSDC 2013 Building Solutions using SharePoint Timer Jobs

#SPSDC @PGBhoyar

Examples of Timer Jobs in SharePoint• Clean up Old Sites

• User Profile Sync

• Solution Deployment

• Search Index

• Various other Automations/Long Running operations

Page 9: SPSDC 2013 Building Solutions using SharePoint Timer Jobs

#SPSDC @PGBhoyar

Page 10: SPSDC 2013 Building Solutions using SharePoint Timer Jobs

#SPSDC @PGBhoyar

Less

Co

mp

lexi

ty

Timer Jobs Vs Scheduled Tasks

Scheduled Tasks Timer Jobs

-Create Console App-Schedule it using Windows Tasks Scheduler-Easy to setup

-Create Custom Timer Job-Register in SharePoint

-No reporting available-Need to implement custom logging

-Can track status, history, change the schedule, start/stop using Central Admin.

-Need direct access to SharePoint Servers (Not easy to get)-Request special account to run the Scheduled Tasks

-Timer Job runs under SharePoint Timer Job Account

-Load Balancing is not available -Load balancing is available

-Console Application -Full Access to SharePoint API (SPSite, SPWebApplication)

Page 11: SPSDC 2013 Building Solutions using SharePoint Timer Jobs

#SPSDC @PGBhoyar

Timer Jobs in SharePoint Farm• Central Admin -> Monitoring ->Review Job Definitions

Page 12: SPSDC 2013 Building Solutions using SharePoint Timer Jobs

#SPSDC @PGBhoyar

Timer Jobs in SharePoint Farm• Windows SharePoint Services Timer Service(SPTimerV4) run Timer Job

• Service must be enabled and running in each server

• Start –Administrative Tools -> Services

• The timer job executes under OWSTIMER.exe

Page 13: SPSDC 2013 Building Solutions using SharePoint Timer Jobs

#SPSDC @PGBhoyar

Page 14: SPSDC 2013 Building Solutions using SharePoint Timer Jobs

#SPSDC @PGBhoyar

Create Custom Timer Jobs• Visual Studio -> Empty SharePoint Project

• Deploy as Farm Solution

Page 15: SPSDC 2013 Building Solutions using SharePoint Timer Jobs

#SPSDC @PGBhoyar

Less

Co

mp

lexi

ty

Architecture of Timer Jobs• Microsoft.SharePoint.Administration.SPJobDefinition : Timer

Jobs are created and executed by using this class

• Three Constructors

• Default (No Parameters):

• For internal use

• Others :

• Job Name

• Job Lock Type

• Web Application or Service

Page 16: SPSDC 2013 Building Solutions using SharePoint Timer Jobs

#SPSDC @PGBhoyar

Less

Co

mp

lexi

ty

Architecture of Timer Jobs• Parameters of SPJobDefinition Constructor

Name Description

Name Name of the Job

Service An instance of the SPService class that owns this job. Only the servers where the service, represented by the SPService object, is running can run this job.

WebApplication Parent WebApplication

Server An instance of the SPServer class associated with this job. Pass null if this job is not associated with a specific server.

lockType An SPJobLockType value that indicates the circumstances under which multiple instances of the job can be run simultaneously.

http://msdn.microsoft.com/en-us/library/hh528519(v=office.14).aspx

Page 17: SPSDC 2013 Building Solutions using SharePoint Timer Jobs

#SPSDC @PGBhoyar

Less

Co

mp

lexi

ty

Architecture of Timer Jobs• SPJobLockType values

Value Description

None No locks. The timer job runs on every machine on which the parent service is provisioned.

ContentDatabase Job runs for each content database associated with the job's web application.

Job Only one server can run the job at a time.

Page 18: SPSDC 2013 Building Solutions using SharePoint Timer Jobs

#SPSDC @PGBhoyar

Less

Co

mp

lexi

ty

Architecture of Timer Jobs• Override the Execute method of the SPJobDefinition class and

replace the code in that method with the code that your job requires.

• The targetInstanceId maps to the Guid of the Current content database while the timer job is running

Page 19: SPSDC 2013 Building Solutions using SharePoint Timer Jobs

#SPSDC @PGBhoyar

Less

Co

mp

lexi

ty

Configuration Options for Custom Timer Jobs• OWSTimer.Exe.Config (Not Recommended)

• Need to modify manually in each server

• External Files : (For Example config.xml)

• SharePoint Lists:

• SharePoint Object Property Bag

Page 20: SPSDC 2013 Building Solutions using SharePoint Timer Jobs

#SPSDC @PGBhoyar

Page 21: SPSDC 2013 Building Solutions using SharePoint Timer Jobs

#SPSDC @PGBhoyar

Typical Timer Job Life Cycle

Page 22: SPSDC 2013 Building Solutions using SharePoint Timer Jobs

#SPSDC @PGBhoyar

Page 23: SPSDC 2013 Building Solutions using SharePoint Timer Jobs

#SPSDC @PGBhoyar

Less

Co

mp

lexi

ty

Two options:

• Declarative by using SharePoint Feature

• Pros: Easy to deploy and maintain

• Cons: Difficult to develop

• Programmatically using Server side object model

• Pros : Flexible, Easier to Develop

• Cons : Difficult to deploy and maintain

Deployment and Registration of Custom Timer Jobs

Page 24: SPSDC 2013 Building Solutions using SharePoint Timer Jobs

#SPSDC @PGBhoyar

Less

Co

mp

lexi

ty

SPSchedule Class Types

Deployment and Registration of Custom Timer Jobs

Name Description

SPMinuteSchedule Runs the job every x number of minutes. This class can be used to schedule jobs for periods of time other than hour, day, week, month, or year. For example, to run a job every 11 days, use this class and set its Interval property to 15840 minutes.

SPHourlySchedule Runs the job every hour.

SPDailySchedule Runs the job daily.

SPWeeklySchedule Runs the job weekly.

SPMonthlySchedule Runs the job monthly.

SPYearlySchedule Runs the job yearly.

Page 25: SPSDC 2013 Building Solutions using SharePoint Timer Jobs

#SPSDC @PGBhoyar

Less

Co

mp

lexi

ty

Option 01 : Declarative by using SharePoint

Feature

• Add Feature

• Add code to register

Timer Job in the

FeatureActivated

• Add code to delete

Timer Job in the

FeatureDeActivating

Deployment and Registration of Custom Timer Jobs

Page 26: SPSDC 2013 Building Solutions using SharePoint Timer Jobs

#SPSDC @PGBhoyar

Less

Co

mp

lexi

ty

Option 02 : Programmatically using Server side object model

• Create Console Application/Power Shell Script

• Add code to register Timer Job

• Add code to delete Timer Job

Deployment and Registration of Custom Timer Jobs

Page 27: SPSDC 2013 Building Solutions using SharePoint Timer Jobs

#SPSDC @PGBhoyar

Page 28: SPSDC 2013 Building Solutions using SharePoint Timer Jobs

#SPSDC @PGBhoyar

Less

Co

mp

lexi

ty

• Attach the debugger to “OWSTIMER.EXE”

• Debug -> Attach to Process

Debug Custom Timer Jobs

Page 29: SPSDC 2013 Building Solutions using SharePoint Timer Jobs

#SPSDC @PGBhoyar

Less

Co

mp

lexi

ty

• Check the History To see when the timer job ran last time

Debug Custom Timer Jobs

Page 30: SPSDC 2013 Building Solutions using SharePoint Timer Jobs

#SPSDC @PGBhoyar

Page 31: SPSDC 2013 Building Solutions using SharePoint Timer Jobs

#SPSDC @PGBhoyar

Less

Co

mp

lexi

ty

• Change the Schedule using Central Admin

• Change the Schedule using PowerShell Commands

• $timerJob = Get-SPTimerJob -Identity "SPSDC2013TimerJob01"

• Start-SPTimerJob $timerJob

• Easiest : Write Console Application to debug business logic

Expedite Debugging

Page 32: SPSDC 2013 Building Solutions using SharePoint Timer Jobs

#SPSDC @PGBhoyar

Page 33: SPSDC 2013 Building Solutions using SharePoint Timer Jobs

#SPSDC @PGBhoyar

Less

Co

mp

lexi

ty

PowerShell Commands• To retrieve all available timer jobs

• Get-SPTimerJob cmdlet

• To set the schedule• $timerJob = Get-SPTimerJob -Identity "SPSDC2013

TimerJob01"• Set-SPTimerJob -Identity $timerJob -Schedule "Every 4

minutes between 0 and 59“

• To Start a Timer Job• $timerJob = Get-SPTimerJob -Identity " SPSDC2013

TimerJob01 "• Start-SPTimerJob $timerJob

Page 34: SPSDC 2013 Building Solutions using SharePoint Timer Jobs

#SPSDC @PGBhoyar

DEMO

Page 35: SPSDC 2013 Building Solutions using SharePoint Timer Jobs

#SPSDC @PGBhoyar

Less

Co

mp

lexi

ty

Developing Custom Timer Jobs• Set up the solution

• Add a class and Inherit from SPJobDefinition

• Override Execute Method

• Write Business Logic

• Register Timer Jobs

Page 36: SPSDC 2013 Building Solutions using SharePoint Timer Jobs

#SPSDC @PGBhoyar

Page 37: SPSDC 2013 Building Solutions using SharePoint Timer Jobs

#SPSDC @PGBhoyar

Common Issues and Fixes• Redeployment : IISRESET and ReStart Timer Services

• Debugging takes lot of time :Use Console Application to debug the business login during development

• Always implement Exception Handling

• SPContext is NOT AVAILABLE. Never use it in Timer Jobs.

• If you use SiteCollection Feature to register timer job, activate/deactivate using PowerShell

• If SPJobLockType is set to ContentDatabase, timer job will get fired multiple times depending on number of Content Databases

Page 38: SPSDC 2013 Building Solutions using SharePoint Timer Jobs

#SPSDC @PGBhoyar

Best Practices• Always implement Exception Handling

• SPContext is NOT AVAILABLE. Never use it in Timer Jobs.

• Avoid using OSTTIMER.EXE.Config to store configuration entries

• In production restart the Timer Services using command

• “Get-SPTimerJob job-timer-recycle | Start-SPTimerJob”

• Use Console Application to debug the business login during development

Page 39: SPSDC 2013 Building Solutions using SharePoint Timer Jobs

#SPSDC @PGBhoyar

When not to use Timer Jobs?• OOTB Options are available

• Content/Data needs to be updated synchronously

• Simple data processing that can be easily handled with Event Receivers

Page 40: SPSDC 2013 Building Solutions using SharePoint Timer Jobs

#SPSDC @PGBhoyar

Less

Co

mp

lexi

ty

Is Timer Job Right Choice?• Yes if,

• OOTB options are not available

• Data update/Operation can wait

• Complex time-consuming processing logic

• Would like to restrict certain activities at specific time

Page 41: SPSDC 2013 Building Solutions using SharePoint Timer Jobs

#SPSDC @PGBhoyar

References

Appendix/ResourcesMSDN: http://msdn.microsoft.com/en-us/library/hh528519(v=office.14).aspxhttp://technet.microsoft.com/en-us/library/cc678870(v=office.12).aspxhttp://www.andrewconnell.com/Creating-Custom-SharePoint-Timer-Jobshttp://msdn.microsoft.com/en-us/library/cc406686.aspx

Page 42: SPSDC 2013 Building Solutions using SharePoint Timer Jobs

#SPSDC @PGBhoyar

Thanks to our sponsors!

Page 43: SPSDC 2013 Building Solutions using SharePoint Timer Jobs

#SPSDC @PGBhoyar

SharePint!!!

Page 44: SPSDC 2013 Building Solutions using SharePoint Timer Jobs

#SPSDC @PGBhoyar

Questions? Feedback? Contact me:

Twitter: @PGBhoyar Blog: http://pgbhoyar.wordpress.com (limited contents) Email: [email protected]

Thank YouOrganizers, Sponsors and You for Making this Possible.