Take the 2-minute tour ×
Super User is a question and answer site for computer enthusiasts and power users. It's 100% free, no registration required.

I'm looking for software where we could set up a 52 week schedule of tasks, and be alerted when a task comes due (with reminders). The types of tasks would include for example a specific type of server maintenance or windows updates to a specific group of servers.

As an example scenario:

Fred needs to schedule time to update the IIS web server pool and the Apache web server pool every three months. He creates an entry and sets it to reoccur every three months. Two weeks prior to the scheduled event he receives an email reminder regarding the event. At one week the security team recieves an email alert to update the servers.

Any help would be appreciated. Not sure if this is a good question for SuperUser or not.

share|improve this question
add comment

2 Answers

Outlook has a pretty handy task feature that you can use.

share|improve this answer
    
I'm looking for something with a bit more detail - a bit of workflow control. Going back to my Fred example, once the security team completes the task the software would need to alert the supervisor that they have marked it as complete, etc. –  666jfox777 Mar 18 '13 at 18:48
add comment
up vote -1 down vote accepted

Here's what I ended up using... Not ideal, but works alright.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Microsoft.Exchange.WebServices.Data;
using Microsoft.Exchange.WebServices.Autodiscover;
using System.Net;

namespace program
{
    class Program
    {
        static void Main(string[] args)
        {
            // Connect to Office 365 Exchange
            ExchangeService service = new ExchangeService();
            NetworkCredential ncNetworkCredential = new NetworkCredential("user@example", "password", "");
            service.Credentials = ncNetworkCredential;
            service.AutodiscoverUrl("user@example", delegate { return true; });

            // Connect to shared mailbox and get the folder id of the calendar
            Mailbox mb = new Mailbox("user@example.com");
            FolderId fid = new FolderId(WellKnownFolderName.Calendar, mb);

            // Create a string to hold all of the email content...
            String emailBody = "";
            emailBody += "<p style=\"font-size:10pt; color: #AAA;text-align:center;\">Please do not reply to this email.</p>";

            // Create a weekly calendar view...
            CalendarView view = new CalendarView(DateTime.Now.AddDays(1).AddHours(-7),DateTime.Now.AddDays(8));
            FindItemsResults<Appointment> results = service.FindAppointments(fid, view);

            // Look through the appointments of the week.
            for (int i = 0; i < results.Items.Count; i++)
            {
                try
                {
                    // Add text to the email body.
                    emailBody += "<p>";
                    emailBody += "Task: " + results.Items[i].Subject.ToString() + "<br />";
                    emailBody += "Resource: " + results.Items[i].Location.ToString() + "<br />";
                    emailBody += "Date: " + results.Items[i].Start.ToShortDateString() + " " + results.Items[i].Start.ToShortTimeString() + "<br />";
                    emailBody += "</p>";
                }
                catch
                {
                    // Add text to the email body.
                    emailBody += "<p>";
                    emailBody += "Task: " + results.Items[i].Subject.ToString() + "<br />";
                    //emailBody += "Resource: " + results.Items[i].Location.ToString() + "<br />";
                    emailBody += "Date: " + results.Items[i].Start.ToShortDateString() + " " + results.Items[i].Start.ToShortTimeString() + "<br />";
                    emailBody += "</p>";
                }
            }

            // Line referencing the calendar.
            emailBody += "<p style=\"color: red;text-align:center;\">For more information on tasks check the \"calendar\"</p>";

            // Create a new email message.
            EmailMessage email = new EmailMessage(service);
            email.ToRecipients.Add("user@example.com");
            email.Subject = "Scheduled Tasks (" + DateTime.Now.ToShortDateString() + ")";
            email.Body = emailBody;
            try
            {
                email.Send();
            }
            catch (Exception e)
            {
                Console.WriteLine("Error: " + e);
            }
        }
    }
}
share|improve this answer
1  
Can you explain your code, and how you implemented it? If not, how is this supposed to help others looking to solve the same problem you presented in your question? Why isn't it "ideal"? –  techie007 Dec 24 '13 at 22:46
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.