2.2.5.2.1 Working Hours

If the client or server supports configuration data, as specified in section 2.2.2, it stores the settings that are specified in this section in a working hours stream. The application stores the working hours stream in an FAI message contained in the Calendar special folder.

The message MUST have the PidTagMessageClass property ([MS-OXCMSG] section 2.2.1.3) set. The value of the property MUST be "IPM.Configuration.WorkHours".

The XML document that is stored in the PidTagRoamingXmlStream property (section 2.2.2.3) MUST conform to the following XSD.

 <?xml version="1.0" encoding="utf-8"?>
 <xs:schema targetNamespace="WorkingHours.xsd"
            xmlns="WorkingHours.xsd"
            xmlns:xs="http://www.w3.org/2001/XMLSchema">
   <xs:element name="Root">
     <xs:complexType>
       <xs:sequence>
         <xs:element name="WorkHoursVersion1">
           <xs:complexType>
             <xs:sequence>
               <xs:element name="TimeZone">
                 <xs:complexType>
                   <xs:sequence>
                     <xs:element name="Bias"
                                 type="xs:short"/>
                     <xs:element name="Standard"
                                 type="DSTTransition" />
                     <xs:element name="DaylightSavings"
                                 type="DSTTransition" />
                     <xs:element name="Name"
                                 minOccurs="0"
                                 maxOccurs="1"
                                 type="xs:string" />
                   </xs:sequence>
                 </xs:complexType>
               </xs:element>
               <xs:element name="TimeSlot">
                 <xs:complexType>
                   <xs:sequence>
                     <xs:element name="Start"
                                 type="xs:time" />
                     <xs:element name="End"
                                 type="xs:time" />
                   </xs:sequence>
                 </xs:complexType>
               </xs:element>
               <xs:element name="WorkDays"
                           type="WorkDaysList" />
             </xs:sequence>
           </xs:complexType>
         </xs:element>
       </xs:sequence>
     </xs:complexType>
   </xs:element>
   <xs:complexType name="DSTTransition">
     <xs:sequence>
       <xs:element name="Bias"
                   type="xs:short" />
       <xs:element name="ChangeDate">
         <xs:complexType>
           <xs:sequence>
             <xs:element name="Time"
                         type="xs:time" />
             <xs:element name="Date">
               <xs:simpleType>
                 <xs:restriction base="xs:string">
                   <xs:annotation>
                     <xs:documentation xml:lang="en-us">
                       The Date element is a date formatted as
                       "yyyy/mm/dd," where "yyyy" is the 4 digit
                       year, "mm" is the 2 digit month, and "dd"
                       is the 2 digit day of the month.
                     </xs:documentation>
                   </xs:annotation>
                   <xs:pattern value="\d{4}/\d{2}/\d{2}"/>
                 </xs:restriction>
               </xs:simpleType>
             </xs:element>
             <xs:element name="DayOfWeek">
               <xs:simpleType>
                 <xs:restriction base="xs:unsignedByte">
                   <xs:minInclusive value="0"/>
                   <xs:maxInclusive value="7"/>
                 </xs:restriction>
               </xs:simpleType>
             </xs:element>
           </xs:sequence>
         </xs:complexType>
       </xs:element>
     </xs:sequence>
   </xs:complexType>
   <xs:simpleType name="WorkDaysList">
     <xs:list itemType="WorkDayType"/>
   </xs:simpleType>
   <xs:simpleType name="WorkDayType">
     <xs:restriction base="xs:string">
       <xs:enumeration value="Monday"/>
       <xs:enumeration value="Tuesday"/>
       <xs:enumeration value="Wednesday"/>
       <xs:enumeration value="Thursday"/>
       <xs:enumeration value="Friday"/>
       <xs:enumeration value="Saturday"/>
       <xs:enumeration value="Sunday"/>
     </xs:restriction>
   </xs:simpleType>
 </xs:schema>

Root: The top-level element in the XML document. This element MUST exist. The application specifies the XML namespace on this element as "WorkingHours.XSD". This element MUST contain the WorkHoursVersion1 element.

WorkHoursVersion1: This element MUST exist and contains the TimeZone, TimeSlot, and WorkDays elements.

TimeZone: This element MUST exist and contains a description of the user's current time-zone settings. It contains the Bias, Standard, DaylightSavings, and Name elements.

Bias: This element MUST exist as a subelement of the TimeZone element. It contains the offset in minutes of the user's current time zone from Coordinated Universal Time (UTC).

Standard: This element MUST exist and contains the definition of standard time in the user's time zone. The type of this element is DSTTransition.

DaylightSavings: This element MUST exist and contains the definition of daylight-saving time in the user's time zone. The type of this element is DSTTransition.

Name: This element SHOULD<5> exist and contains the standard name of the time zone described by the data in the TimeZone element. For possible values, see the KeyName field of the PidLidAppointmentTimeZoneDefinitionRecur property ([MS-OXOCAL] section 2.2.1.41).

DSTTransition: This complexType describes the differences between standard time and daylight-saving time in the user's current time zone. It contains the Bias and ChangeDate elements. The Bias element from the DSTTransition type MUST be added to the Bias element value contained in the WorkHoursVersion1 element when this transition takes effect, which MUST be determined by the value of the ChangeDate element.

Bias: This element MUST exist as a subelement of the DSTTransition type. The Bias element value specified in the DSTTransition type MUST be added to the time zone bias after the transition.

ChangeDate: This element MUST exist as a subelement of the DSTTransition type. The value of this element determines when the transition takes place. This element contains a Time element, a Date element, and a DayOfWeek element.

Time: This element contains the time of day when the transition takes place.

Date: This element contains a date formatted as <yyyy/mm/dd>, where yyyy is the 4-digit year, mm is the 2-digit month, and dd is the 2-digit day of the month.

If the year is set to "0000", the application performs the transition every year. If the year is any other value, the application performs the transition only in that year.

The application performs the transition in the month that is specified.

If the year is set to "0000", the interpretation of the day of the month depends on the value of the DayOfWeek element, as specified in this section. If the year is any other value, the application performs the transition on the day of the month that is specified.

DayOfWeek: If the year portion of the Date element is set to "0000", this element MUST contain the day of the week when the transition takes place. The application selects the occurrence of that day of the week using the day of the month portion of the Date element. For example, if the DayOfWeek element contains the value 0, and the day of the month is 2 in the Date element, the application performs the transition on the second Sunday of the month. In this case, the day of the month in the Date element MUST be between 1 and 5, inclusive. The possible values for the DayOfWeek element are given in the following table.

Value

Meaning

0

The application performs the transition on a Sunday.

1

The application performs the transition on a Monday.

2

The application performs the transition on a Tuesday.

3

The application performs the transition on a Wednesday.

4

The application performs the transition on a Thursday.

5

The application performs the transition on a Friday.

6

The application performs the transition on a Saturday.

If the year portion of the Date element is any other value, the application MUST ignore the DayOfWeek element and use the day of the month portion of the Date element instead.

TimeSlot: This element contains the Start and End elements.

Start: This element contains the start time for the user's work day, relative to the user's current time zone, as specified in the TimeZone element.

End: This element contains the end time for the user's work day, relative to the user's current time zone, as specified in the TimeZone element.

WorkDays: This element contains a list of strings that specify which days of the week are work days for this user. The set of strings is defined by the enumeration restriction on the WorkDayType simpleType. The application treats any day that is included in this element as a work day for the user.

WorkDayType: A simpleType based on a string. The possible values are given in the following table.

Value

Meaning

Monday

If this string is included in the WorkDays element list, Monday is a work day for this user.

Tuesday

If this string is included in the WorkDays element list, Tuesday is a work day for this user.

Wednesday

If this string is included in the WorkDays element list, Wednesday is a work day for this user.

Thursday

If this string is included in the WorkDays element list, Thursday is a work day for this user.

Friday

If this string is included in the WorkDays element list, Friday is a work day for this user.

Saturday

If this string is included in the WorkDays element list, Saturday is a work day for this user.

Sunday

If this string is included in the WorkDays element list, Sunday is a work day for this user.