Scheduling SharePoint Online Tasks With Azure Web Jobs


Krishna KV
Team Leader, Aspire Systems
Published On :   15 Aug 2016
Visit Count
Today :  1    Total :   7538
Plan, Migrate, Secure, Report
SharePoint & Office 365 Tool. Simple & Easy to Use. 15-Day Trial!

Sharegate: Kick-Ass Tool
Think Your SharePoint & Office 365 Are Secure ? Find Out Now!


In SharePoint, timer job does the repetitive, scheduled background service to perform task. The azure web job takes the advantage of the SharePoint Online timer service to perform the task in regular basis through scheduled or on-demand. The web jobs uses console application and CSOM to execute the task.

We can start with creating a new console application and we need to add the required assembiles to the project.

clip_image002

We can store the site url, username and password in the app.config file. For security we can encrypt the file.

   <appSettings>
     <add key="url" value=""/>
     <add key="userName" value=""/>
     <add key="password" value=""/>
   </appSettings>

Include SharepointPNP Library using Nuget manager.

clip_image003

Program.cs

 class Program
     {
        
         static void Main()
         {
             try
             {
                 AuthenticationManager authenticationManager = new AuthenticationManager();
 
                 string url = ConfigurationManager.AppSettings["url"];
                 string userName = ConfigurationManager.AppSettings["userName"];
                 string password = ConfigurationManager.AppSettings["password"];
 
 
                 using (ClientContext context = authenticationManager.GetSharePointOnlineAuthenticatedContextTenant(url, userName, password))
                 {
                     Console.WriteLine("Started at " + DateTime.Now);
 
                   List lst = context.Web.Lists.GetByTitle("Interview");
 
                     CamlQuery camlQuery = new CamlQuery
                     {
                         ViewXml = @"<View><Query><Where><IsNull><FieldRef Name='Status' /></IsNull></Where></View></Query>"
                     };
                     ListItemCollection listItems = lst.GetItems(camlQuery);
                     context.Load(listItems);
                     context.ExecuteQuery();
 
                     foreach (ListItem item in listItems)
                     {
                         item["Status"] = "Completed";
                         item["DBUpdateOn"] = DateTime.Now;
                         item.Update();
                     }
                     context.ExecuteQuery();
                 }
 
 
                 Console.WriteLine("Ended at " + DateTime.Now);
             }
             catch (Exception exception)
             {
 
                   Console.WriteLine("Error " + exception.Message);
                  throw exception;
             }
         }
     }

· Handle the exception for logging and throws the same, so that web jobs know error has occurred.

· Always the log the major steps using console.writeline for future reference.

Create an app service in Azure to add the web jobs

clip_image005

The jobs can be deployed and scheduled through visual studio

clip_image007

Scheduling the jobs from visual studio.

clip_image009

The web jobs can be deployed manually as follow.

Compress the binaries files. It will be available under the bin\debug or bin\release folder of the visual studio project.

clip_image011

Upload the compress binaries to azure, After the successful upload the web jobs will displayed under the same.

clip_image013

The console.writeline logs will be displayed under the azure as below.

clip_image015

SharePoint Usage Reports
Usage reports, collaboration and audit for SharePoint.
Categories

Migratiin Tools for SharePoint