OOOCTA (Out of Office Configuration Assistant) – Version 4.0

A long time ago (in a Galaxy far, far away) I released a tool for Exchange 2007 called the OOOCTA. In essence the OOOCTA allowed for administrators to delegate (via a web interface) the configuration and reporting of Out of Office.

To be honest, this tool was a little … clunky. Don’t get me wrong – it did work, but at the same time suffered from a number of bugs that I struggled to eliminate from the code. Some people downloaded it and tried to use it with mixed fortunes – but the long and short of it was it was a victim of its own complexity.

I did try and support as many people as I could – but one of the odd things that I found was that despite it being a pretty standard install, no two environments seemed to exhibit the same problems – there were some that never had an issue (and are still using it today), whilst others had to abandon it.

You see, in Exchange 2007 there is no direct way to set, modify or report on a users Out of Office settings. The OOOCTA (version 3.5) used the Exchange EWS API to set OOF configurations via an agent service which ran on one of the Exchange servers in an organisation. This agent would take input from a SQL database (which contained the users which the admin wish to set the OOF for) – assigned permissions to the mailbox, and using the EWS API – change the OOF configuration and then remove the permissions. Sounds simple enough – but in practice, it was a flawed design and suffered from a number of reliability problems.

The root issue was assigning permissions to the Mailbox to allow for the OOF to be modified. In Exchange 2007 you had to be the mailbox owner (or have full permissions) in order for the EWS code logic to work – I wrote more about this here:

You see, by changing the permissions on the mailbox (which the OOOCTA Command Processor Service did in version 3.5) – you had to wait for the permissions to take effect (if you had more than one than domain controller). This meant that it could be difficult for the OOOCTA to set the OOF on the first service pass (the service queried the OOOCTA SQL Database at a predefined interval). Sometimes and for reasons that I still don’t fully understand – it would miss some entries in the database completely, resulting in having to pour over the OOOCTA logs, and sometimes completely clear the database and start again.

Since the release of OOOCTA 3.5; I have been thinking long and hard about to future of OOOCTA being supported on Exchange 2007 – and I have decided to drop the tool for that version of Exchange.

There are a few reasons for this, but the main one being that with the release of Exchange 2013 – Exchange 2007 (whilst stull supported by Microsoft) is two clear versions down on the current release.

Furthermore fast forwarding to Exchange 2010 Service Pack 1 and Microsoft introduced two new cmdlets:

  • Get-MailboxAutoReplyConfiguration
  • Set-MailboxAutoReplyConfiguration

Which can be executed in the context of RBAC role – meaning that we can natively change the OOF settings on a mailbox without having to install the EWS or modify mailbox permissions.

Given the above, I would like to present to you OOOCTA – Version 4.0 for Exchange 2010, Service Pack 1 and above.


Why OOOCTA v4.0?

The Out of Office function is a very useful tool for customers working within organizations to let people know their whereabouts. However people do forget at times to set their Out of Office before they leave, which can result in delays in getting responses to queries from people who mail a person who is out of the office for a prolonged period of time – as they do not know that they perhaps should be speaking to someone else.

It is common for managers to call ICT Service Desks or HR departments asking for someone’s Out of Office to be configured. This tool allows for this to be delegated through a centralized and simple management interface.

OOOCTA version 4.0 is a complete re-write of the original tool. I have removed both the Windows Service and SQL requirements and added in the ability to configure the OOF’s in real time. I have simplified the install and user interface and improved the error handling.

The OOOCTA is based upon the same design principals as the recently released DLRT

  • Free
  • Simple
  • Easy to install
  • Easy to troubleshoot
  • Easy to Service

The OOOCTA v4 and the DLRT are also compatible with devices such as IPads and IPhones, which opens the possibility of configuring Out of Office on the move.






The following are the pre-requisites for the OOOCTA.

  • Windows Server 2008 R2.
  • IIS 7.0.
  • .NET Framework 3.5 or above.
  • Exchange 2010 Service Pack 2 or above.
  • Exchange 2010 Management Tools installed on the primary OOOCTA server.
  • The OOOCTA Application Service Account will require Exchange Organization Management rights, you will also need the account that you use to install the software has these rights as well.

It is recommended that you install the OOOCTA on a Client Access Server within your environment. Whereas this is not essential to the operation of the tool – it makes the setup easier.


You can download both the OOOCTA v 4.0 and the Installation and Users guide from the following locations.

cntMstr006 [ OOOCTA v 4.0 for Exchange 2010 – 196KB ]

adobe [ OOOCTA v 4.0 Installation and Users Guide – 1.1 MB ]

I hope that you enjoy OOOCTA 4.0, and of course value your feedback.


  1. Hi Andy,

    when I select ‘Scheduled Time’ I get the following error message:

    I’m using the german version of IIS7.

    Error message:

    Serverfehler in der Anwendung /ooocta.

    Ein möglicherweise gefährlicher Request.Form-Wert wurde vom Client (tb_IntOOFMessage=”<!–
    /* Font Defini…") entdeckt.
    Beschreibung: Die Anfragevalidierung hat einen möglicherweise gefährlichen Clienteingabewert entdeckt und den Anfragevorgang abgebrochen. Dieser Wert kann bedeuten, dass die Sicherheit Ihrer Anwendung z.B. durch einen siteübergreifenden Angriff gefährdet wird. Sie können die Anfragevalidierung deaktivieren, indem Sie in der Seitendirektive bzw. im -Konfigurationsabschnitt validateRequest=false festlegen. Dennoch sollte Ihre Anwendung in diesem Fall unbedingt alle Eingaben explizit überprüfen.

    Ausnahmedetails: System.Web.HttpRequestValidationException: Ein möglicherweise gefährlicher Request.Form-Wert wurde vom Client (tb_IntOOFMessage="<!–
    /* Font Defini…") entdeckt.


    Der Quellcode, der diese unbehandelte Ausnahme verursacht hat, kann nur angezeigt werden, wenn im Debugmodus kompiliert wird. Um dies zu aktivieren, müssen Sie einen der folgenden Schritte ausführen und den URL anfordern:

    1) Fügen Sie eine "Debug=true"-Direktive am Anfang der Datei hinzu, die den Fehler generiert hat. Beispiel:


    2) Fügen Sie der Konfigurationsdatei Ihrer Anwendung folgenden Konfigurationsabschnitt hinzu:

    Hinweis: Die zweite Option hat zur Folge, das alle Dateien in der Anwendung im Debugmodus kompiliert werden. Mit der ersten Option wird nur die angegebene Datei im Debugmodus kompiliert.

    Wichtig: Das Ausführen von Anwendungen im Debugmodus belegt zusätzlichen Arbeitsspeicher. Stellen Sie daher sicher, dass das Debuggen für eine Anwendung deaktiviert wird, bevor sie für die Produktion bereitgestellt wird.


    [HttpRequestValidationException (0x80004005): Ein möglicherweise gefährlicher Request.Form-Wert wurde vom Client (tb_IntOOFMessage=”<!–
    /* Font Defini…") entdeckt.]
    System.Web.HttpRequest.ValidateString(String s, String valueName, String collectionName) +11103979
    System.Web.HttpRequest.ValidateNameValueCollection(NameValueCollection nvc, String collectionName) +71
    System.Web.HttpRequest.get_Form() +178
    System.Web.HttpRequest.get_HasForm() +11104215
    System.Web.UI.Page.GetCollectionBasedOnMethod(Boolean dontReturnNull) +124
    System.Web.UI.Page.DeterminePostBackMode() +83
    System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +11070247
    System.Web.UI.Page.ProcessRequest(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +11069786
    System.Web.UI.Page.ProcessRequest() +91
    System.Web.UI.Page.ProcessRequest(HttpContext context) +240
    ASP.default_aspx.ProcessRequest(HttpContext context) +9
    System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +599
    System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +171

    Versionsinformationen: Microsoft .NET Framework-Version:2.0.50727.5466; ASP.NET-Version:2.0.50727.5456

    Best regards,


    1. Hiya Martin, I think that I might know what is wrong.
      Could you send the me the internal and external message (in German) that you are trying to set that I can see in the screen shot within the mail you sent to me?.

    2. Martin, really sorry for the delay.
      I have found and corrected the problem – if you download the OOOCTA from the original location there is a new release that you can install over the top of your existing installation.
      The problem stemmed from how strings are handled within the OOOCTA interface which are then passed to the PowerShell automation RunSpace.

      The OOF examples that you gave me contained “ around a mail address – this caused a problem in the code as the PS command that is passed by the OOOCTA to the Automation runspace is enclosed in “ – this broke the string, and caused the error.
      I have added in new handling within the OOOCTA which strips out “ and replaces it with the HTML tag of &quot – this has the same effect for the OOF in Exchange – but when the OOF is returned into the OOOCTA you will see &quot.

      The text fields in the OOCTA do accept HTML tags.

      Anyhow – hope that this helps.


    1. Thanks Christoph, I have sent you a copy of the script in text format – and I have now updated the download so that it has the correct files. Really sorry about that.

        1. Sorry – not sure what happened to my source control on this one. The addrolegroup.ps1 script is now included in the download.

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.