Scheduling SharePoint Online Tasks With Azure Web Jobs

Krishna KV
 
Team Leader, Aspire Systems
August 15, 2016
 
Rate this article
 
Views
11087

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

Author Info

Krishna KV
 
Team Leader, Aspire Systems
 
Rate this article
 
Krishna K.V has been working in IT Industry for over 7+ years. He holds a Master Degree in Information Technology. He is more interested to learn and share new technologies, ...read more
 

Leave a comment