Developing Timer Jobs for SharePoint 2013 and Office 365

Learn how to create timer jobs the way the pros do for SharePoint Server 2013 and SharePoint Online (Office 365).
4.6 (5 ratings) Instead of using a simple lifetime average, Udemy calculates a
course's star rating by considering a number of different factors
such as the number of ratings, the age of ratings, and the
likelihood of fraudulent ratings.
1,495 students enrolled
Take This Course
  • Lectures 15
  • Length 2 hours
  • Skill Level Intermediate Level
  • Languages English
  • Includes Lifetime access
    30 day money back guarantee!
    Available on iOS and Android
    Certificate of Completion
Wishlisted Wishlist

How taking a course works


Find online courses made by experts from around the world.


Take your courses with you and learn anywhere, anytime.


Learn and practice real-world skills and achieve your goals.

About This Course

Published 6/2013 English

Course Description

Remember, your one-time purchase grants you lifetime access, so you receive all new lectures & updates at NO ADDITIONAL COST.

Timer jobs are SharePoint's way of executing scheduled tasks. Many commercial SharePoint products and custom solutions use them, and they're a super important concept for any serious SharePoint developer to master.

In this course, I'll teach you all about timer jobs for SharePoint Server 2013 and SharePoint Online. I'll also show you the secrets pros use to create solutions that are good enough to sell commercially!

Here are a few examples of how this course is different:

Example #1: You may have seen articles or blog posts telling you to inherit from SPJobDefinition as your base class for a custom timer job. Did you know there are other options that are sometimes better? I cover those in this course.

Example #2: Many free articles and blog posts about timer jobs say "use the property bag for configuration settings." Well, there are other options too, and sometimes those are better! In this course I delve pretty deep into job configuration and the trade-offs between different approaches.

Example #3: Best practices from real-world experience. This is a big deal. I cover things like error handling and progress reporting that other training courses and articles don't cover much, if at all. Why? Because those things matter in real life! Glossing over them might be okay for simple "how to" articles but not when you're building commercial solutions you're selling to people!

I update this course periodically with new information to keep it current and relevant. Since you have lifetime access to this course once you purchase it, you get these updates at no additional cost once you buy.

The Goal: By the time you finish this course, you should feel confident about when timer jobs are an appropriate design choice in SharePoint and how to create one like the pros do!

Good training is about making you more valuable and getting you productive as quickly as possible. All the information you need is wrapped up into this one course and is presented with real-world examples and best practices.

What are the requirements?

  • Minimum 1 year of SharePoint development experience - should be familiar with concepts like features and farm solutions
  • Proficient in C# and .NET

What am I going to get from this course?

  • Create a timer job the way the pros do - good enough to sell in a commercial solution
  • Make better choices about base classes, configuration, error handling, and progress reporting
  • Discover how to create timer jobs for SharePoint Online (Office 365)
  • And of course, make yourself a more valuable developer by broadening your skill set

What is the target audience?

  • Junior and mid-level SharePoint developers who want to broaden their skill set (if you're a senior SharePoint dev with 10 years of experience, you probably won't benefit as much)
  • Front-end SharePoint developers who want to get into more back-end development
  • Anyone who's created a timer job before but wants to learn the secrets the pros use when creating commercial solutions

What you get with this course?

Not for you? No problem.
30 day money back guarantee.

Forever yours.
Lifetime access.

Learn on the go.
Desktop, iOS and Android.

Get rewarded.
Certificate of completion.


Section 1: Intro
Introductory lecture that presents an overview of this course.
Section 2: Understanding Timer Jobs

Even though the title of this lecture makes it sound pretty basic, I chose to begin the course with this because it's an incredibly important concept. As a consultant out in the field, I've seen plenty of cases where timer jobs were incorrectly used because the developers who wrote them didn't have a proper understanding of what timer jobs actually are and how they work. To use an analogy, it would be like an ASP.NET developer creating an entire web application without understanding how the ASP.NET page lifecycle works. Things are bound to go wrong when you don't understand the basics!

In this lecture I discuss what timer jobs actually are, how they work, and how they're stored in the SharePoint configuration database. Timer jobs are an amazingly useful and important architectural concept in SharePoint, and that's why this lecture will offer you a firm foundation and understanding of key concepts before proceeding with the rest of the course.


Timer jobs are also commonly called "multi-server" jobs. But are they really multi-server jobs? The answer is "it depends." Timer jobs can be "locked" - or exclusively run - at different levels in the SharePoint farm hierarchy. Which level your job needs to run at will be determined by your specific requirements. This lecture discusses the different levels and how they determine where your job runs. It also discusses how jobs are scheduled.

This lecture explains and demonstrates how timer jobs are managed and monitored in SharePoint. Even though this lecture has more of an administrator slant than a developer slant, it's important to understand the concepts presented here because your custom jobs will have to be managed and monitored once deployed to a production SharePoint farm.
Section 3: Developing an On-Premise Custom Timer Job
This lecture demonstrates how to set up the Visual Studio project that will contain your custom timer job.

The job definition class is the heart of a timer job. This lecture demonstrates how to create a custom job definition class and talks about what needs to go inside of it (and why).

Although SPJobDefinition is the base class most commonly used for custom timer jobs, there are some other base classes that might be better or easier to work with in certain cases. This lecture offers a code-oriented look at those alternative base classes and discusses when they might be appropriate to use.
Timer Jobs, like other custom solutions deployed to SharePoint, often need to retrieve configuration settings such as connection strings, credentials, templates, and so on. This lecture presents some options for where these settings can be stored for your custom jobs. It also presents some real-world examples and trade-offs that will help you decide which mix of configuration options is appropriate for your specific requirements.
An important (but often overlooked) aspect of creating custom timer jobs is progress reporting. Any job that shows up in Central Administration and can be viewed by administrators should report progress so the administrator can see how far along it is. Progress reporting can also be of great help to the timer job developer because debugging is a lot easier when you have a sense of how your job is progressing. This lecture demonstrates how to report progress from a timer job and also shows where that progress is viewed in Central Administration.
As with any custom solution deployed to SharePoint, logging and error-handling are critical when it comes to debugging and providing support for your custom timer jobs. This lecture demonstrates logging and error-handling in a custom timer job.
3 questions

Check your understanding of how custom timer jobs are developed before proceeding to the next section.

Section 4: Deploying and Debugging an On-Premise Job
A feature is a common way to deploy custom timer jobs. This lecture demonstrates how to create a feature in Visual Studio that will provision and unprovision your custom job in SharePoint.
A key aspect of developing a custom timer job is being able to test and debug it. Unfortunately this process isn't quite as straight-forward as you might expect. This is largely due to timer jobs running in the SharePoint timer service rather than in IIS application pools like other code you might be accustomed to debugging in SharePoint. This lecture demonstrates how to debug and test your custom timer jobs.
Deploying and Debugging Your Job
4 questions
Section 5: Timer Jobs for Office 365 (SharePoint Online)

With farm solutions not available to us in Office 365, this lecture discusses which options are available to us for building timer jobs against SharePoint Online.


This lecture demonstrates a workflow-based approach for building timer jobs against a SharePoint Online site. With new looping capabilities built into SharePoint 2013 workflows, this can be a perfectly viable approach for many scenarios.


This lecture demonstrates how to create a timer job with server-side code (remotely hosted) that runs against a SharePoint Online site. The ASP.NET Visual Studio project demoed in the lecture is available as a downloadable resource. Feel free to download it and use it as a starting point for your own timer jobs.

Timer Jobs for Office 365
2 questions

Students Who Viewed This Course Also Viewed

  • Loading
  • Loading
  • Loading

Instructor Biography

Bart McDonough, Microsoft Technology Consultant

I'm the Principal & Founder of Incline Technical Group, a Microsoft partner providing IT solutions and consulting focused on the Microsoft technology stack. I've been working in IT and developing solutions for paying clients since 2001.

I started teaching on Udemy because I wanted to offer the kinds of courses I was always looking for: courses that go beyond typical "book knowledge" and draw from real-world experience creating commercial solutions for paying clients. I was never satisfied with just knowing "how" to do something, which is easy to find nowadays on Google. I wanted to know "why" so I could make informed decisions and provide more value to my clients (and command higher rates as a result).

I'm also an author and speaker in the technical community, including co-authoring "Pro SharePoint 2010 Development for Office 365" (Apress, 2012).

Ready to start learning?
Take This Course