Corporate Calendar Synchronization Corporate Calendar Synchronization

Field workers require information about the planning to perform their work. Optimize My Day publishes the planning to your corporate calendar such as Microsoft Exchange or Google Calendar, providing the field worker with up-to-date information about the task schedule, the customer's location and other important information.

Synchronization with a corporate calendar has several advantages. The calendar is part of the daily life of a field worker and can be viewed easily from the web or from mobile devices. Collegues can look into the calendar of their group members. Viewing the calendar on a smartphone allows field workers to start navigation by clicking on the address or call the customer by clicking on the customer's telephone number.

Updates of the corporate calendar are required whenever

  • A new task has been planned for a resource
  • A planned task is moved to another date or time but for the same resource
  • A planned task is moved to another date or time and resource
  • A planned task has been un-planned
  • An unavailability has been added to the calendar of a resource
  • An unavailability has been updated
  • An unavailability has been deleted
  • A new exceptional working day has been assigned to a resource
  • An exceptional working day has been removed

One-Click status update

The calendar entry which is pushed to the corporate calendar contains detailed information about the task, including links to change the status of a task to Travelling, Work started or Work done. By simply clicking on the link, the status of the task in Optimize My Day is updated instantly, allowing dispatchers to monitor progress. For security reasons, the link contains a disposible token which is only known to the receiving field worker.

To start the debrief, field workers click on a link provided within the calendar entry to open the debrief form.

How to Setup Microsoft Exchange How to Setup Microsoft Exchange

Microsoft Exchange provides a web-based protocol to push information about the planning to a user's calendar.

Requirements

  • Exchange Server 2003, 2007 or higher
  • For Exchange 2003, WebDAV must be enabled. For Exchange 2007 and higher, Web Services must be enabled. These protocols are by default available when using Outlook Web Access.
  • A seperate Exchange account with permissions to update the calendars of the Field Workers
  • Optionally, a list of public calendars per Field Workers, which can be viewed by any user having access to the Exchange server.
If you enable Microsoft Exchange synchronization, you will have to specify the parameters below to perform updates to the corporate calendar. The specified account needs to be able to update the calendars of all resources in the configuration. An admin account should represent a non-private account that is only available to administrators of the organization using the Optimize My Day configuration.
 
In detail, the following preferences need to be set:
 
Preference Description Example  
syncWithMicrosoftExchange   Indicates if synchronization with an Exchange Server is active true
exchangeHost  The name of the Exchange Server mail.mydomain.com
exchangePath  The base path to the Exchange web pages /exchange
exchangeAuthenticationPath  The path to the authentication form /exchweb/bin/auth/owaauth.dll
exchangeDomain The domain name of the Exchange Server MYDOMAIN
exchangeUsername The name of the account updating the calendars admin
exchangePassword The password of the account updating the calendars mypass
exchangeFolder The name of the folder containing the service calendars. Use a URL-encoded value for Exchange 2003 and a simple path value without the public prefix when using Exchange 2007. /public/Service%20Agendas or /Company Name/Service Agendas
exchangeAccountFieldName The name of the resource field containing the account name name
exchangeTruncEmail Specify true if the e-mail address should be truncated up to the @ sign. This value is only applicable if the account field name is not name. true
exchangeUseWebServices Indicates that the connector must use the Web Services API rather than the WebDAV interface. true

 

Security

The Exchange Connector uses the HTTPS protocol, resulting in encrypted communication between Optimize My Day and the Exchange server. This protocol is identical with the protocol used by Outlook Web Access.

The credentials of the update account must be known to Optimize My Day. The preference settings above are visible to users with an admin role, having access to this particular configuration.

Note that the entire Optimize My Day environment can also be installed on premise. In that case, a perpetual license model is applicable.

Performance

Every change to a task being committed by a planner results in a request to the Exchange Server. Moving a task from one Field Worker to another Field Worker will result in two requests, one for removing the entry from the calendar of the first Field Worker and one for adding the task to the calendar of the second Field Worker. Hence, the total number of requests per day is of an order of magnitude determined by the number of Field Workers multiplied by the average number of tasks per Field Worker per day.

Example
Suppose your environment has to deal with about 200 Field Workers, each of them performing around 7 tasks a day on average. The number of tasks in that case would be roughly 200 x 7 = 1,400 tasks / day. In a normal scenario, each task is replanned about 5-6 times before being closed. Hence, an average scenario with 200 Field Workers would result in 1,400 x 6 = 8,400 requests / day, which is an average of 15 requests / minute based on a 9 hours working day, or 0.075 requests / resource / minute.

To avoid congestion at peek times, Optimize My Day uses an Exponential backoff algorithm whenever the Exchange Server is unable to process the requests.

Calendar Entry Layout Calendar Entry Layout

When creating Calendar entries, Optimize My Day will automatically apply a default layout for each entry description. However, if you want to layout the description differently, the preferences calendarEntryTaskQueries and calendarEntryTaskTemplate will allow you to specify the layout yourself.

calendarEntryTaskQueries

This preference must contain an XML document with a list of Download queries. The Download queries determine the content and structure of the XML document that is created for the calendar entry. Once the XML document is created, it will be transformed by the XSL document described below.

Example

<?xml version="1.0" encoding="UTF-8" ?>
<omd.domain.s4.Task id="?">
  <omd.domain.s4.Task query="omd.domain.s4.Task.findByTaskGroupOtherTasks"/>
  <omd.domain.s4.Resource query="omd.domain.s4.Resource.findByTaskGroup"/>
</omd.domain.s4.Task> 

calendarEntryTaskTemplate

This template must represent an XSL document that transforms the entry XML document.

Example

<?xml version="1.0" encoding="UTF-8"?>

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:output media-type="text/html"/>
  <xsl:template match="/Download/omd.domain.s4.Task">
  <html>
    <body>
      <p>
        Task <xsl:value-of select="@externalId"/>
      </p>
      <p>
        <table cellpadding="0" border="0" cellspacing="0">
          <tr><td><b><xsl:value-of select="@name"/></b></td></tr>
          <tr><td><xsl:value-of select="@street"/></td></tr>
          <tr><td><xsl:value-of select="@city"/></td></tr>
          <tr><td><xsl:value-of select="@country"/></td></tr>
        </table>
      </p>
      <p>
        <xsl:value-of select="@remarks"/>
      </p>
      <ul>
        <li>Status: <xsl:value-of select="@status"/></li>
        <li>Estimated Duration: <xsl:value-of select="@estimatedDuration"/> min</li>
        <li>Earliest: <xsl:value-of select="@earliest"/></li>
        <li>Latest: <xsl:value-of select="@latest"/></li>
      </ul>
      <b>Related tasks</b>
      <ul>
        <xsl:for-each select="omd.domain.s4.Task">
        <li>Task <xsl:value-of select="@externalId"/><xsl:if test="string-length(@scheduled) > 0"> assigned to <xsl:value-of select="//omd.domain.s4.Resource[@id = ../@scheduledFor]/@fullName"/> on <xsl:value-of select="@scheduled"/></xsl:if></li>
        </xsl:for-each>
      </ul>
    </body>
  </html>
</xsl:template>
</xsl:stylesheet>