SharePoint Backup Tracker

  • C#
  • JavaScript
  • SharePoint SDK
  • Visual Studio 2010

https://cdn.brianmorrison.me/media/2020/14895539-3a65-48c4-b205-da438cc5eb68

The Problem

I built this while working for a Managed Services Provider. As part of our contractual agreement with our customers, we checked all customers' backups daily to ensure they were being successfully completed. Every day, an administrator would spend upwards of 3 hours manually inputting a list of backup sets that needed to be reviewed by a technician. Once the list was populated, the admin would notify the designated technician that the list was ready to be reviewed. The tech would then manually review the backups for all customers using a number of methods including; remoting directly to a server, checking email reports, or checking a cloud based panel.

Each backup to be checked was a SharePoint list item. This required the technician to open the item, change the necessary attributes, and save the item to return to the list. Any backup that had failed would require the tech to manually create a ticket in the ticketing system and add the ticket number as a reference to the backup item in SharePoint.

This entire process took a minimum of 8 hours of labor due to the volume of backups that needed to be tracked and the speed at which the process flowed.

The Solution

There were several improvements put in place to solve this problem.

The Template List

The first thing that was change is a new list that defined the following attributes;

  • The customer name
  • The backup name
  • The set number (used to assign a set to a technician)
  • The method required for checking the backup
  • The days which the backup needed to be checked (as checkboxes)

This list served as the template for backups to be checked and allowed us to create a programmatic way to populate the daily list of backups to check.

The Daily List

This list was used by the technicians to know which backups needed to be checked, and which were assigned to them. Every day, the techs would log into the SharePoint site and complete the list that was assigned to them. Each item would be populated as follows;

  • The customer name
  • The backup name
  • The set number
  • The methods required for checking the backup
  • The status of the backup (success/failure)
  • Notes that pertain to the failure status

The Technician List

A third list was created with the tech name and the backup set assigned as referenced in the Daily List. This list was used as a reference so that each tech would know which set to check for that day.

Timer Jobs

To automate the process of creating the daily list of backups to check, I created a SharePoint Timer Job that ran every day at 3am and referenced items from the template list to populate the daily list. This completely automate the manual entry required in the original process and free up the time of the admin.

Per the requirements of the lead tech, each tech needed to be assigned a different set on a daily basis. A second Timer Job was created for the purpose of randomizing the sets assigned based on the number of technicians in the Technician List.

JavaScript Multiple Close Button

To resolve the issue with closing multiple Daily List items simultaneously, I created a custom JavaScript button that would update the Status field in any number of selected backup items. This button was added to the ribbon of SharePoint.

The Results

At this point, a process that generally took a minimum of 8 hours between the admin and a single tech was distributed among 4-5 technicians taking a total of 30 minutes of total time. This ultimately saved the company over $100,000 of billable hours that the tech could use to resolve customer issues as opposed to handling this administrative task.

** This project was ultimately rolled into a multi-tiered custom application we named Unify.