Chapter 5: MS Schedule+ Architecture

The architecture of Schedule+ is dependent on the existence of a version 1.0 Messaging Application Programming Interface (MAPI 1.0) on the local computer. MAPI 1.0 is available by installing the Microsoft Exchange client from Windows 95. If users have MAPI 1.0 installed, they can run Schedule+ in either stand-alone mode or group-enabled mode. If users do not have MAPI 1.0 installed on their computer, they can run Schedule+ in stand-alone mode only. This chapter provides information on how the components of Schedule+ fit together, explains the differences between running Schedule+ in stand-alone or group-enabled mode, and describes how Schedule+ works with the Microsoft Exchange Server.
Schedule+ Components
On the user’s system, Schedule+ consists of the Schedule+ application, the schedule file, and all the schedule items. At the top of the hierarchy is the Schedule+ application, which manages any number of schedule files. Each schedule file contains many items, such as appointments, tasks, contacts, and projects, as shown in the following illustration. In most cases, there is one schedule file for each user, although users can create multiple schedule files for themselves if they want.

Schedule items are like tables that can be further broken down by property. They all have a structure similar to that shown in the following illustration, where appointment items have properties such as attendees, starting date, starting time, and description, and attendee items have properties such as an attendee’s free/busy status and last-received invitation.

Schedule+ Application
The Schedule+ application consists of the Schedule+ program file Schdpl32.exe and the Schedule+ DLLs. Additional files types installed by Setup for running Schedule+ are listed in the following table:
  
File extension	Description

.prt	Print layout files
.fmt	Paper format description files
.hlp	Online Help files
.ico	Icon files
.cfg	Mail forms configuration files
Users can customize Schedule+ default settings by clicking Options on the Tools menu. These settings are stored in the Windows Registry. For information about Registry settings for Schedule+, see Appendix B, “Registry Keys and Values.” Other ways in which users can customize their Schedule+ application include the following:
·	Time and date settings. Schedule+ uses time and date settings that are controlled in Windows, under Regional Settings in the Control Panel. Users can customize these settings in Schedule+ and can specify a secondary time zone to use when scheduling meetings across time zones. These custom settings are stored in the Windows Registry.
·	View settings, such as the Tab Gallery or Columns settings. Users configure these settings by using the commands on the View menu, and the settings are stored in Username.vue, where Username matches the user’s logon name. This file also contains the list of most recently used schedule files. You cannot edit this file directly, as it is binary. However, you can rename it, causing Schedule+ to create a new Username.vue file with default settings the next time the user starts Schedule+. 
·	OLE automation. The Schedule+ application can be extended with OLE automation, using an OLE IDispatch interface. For information about developing software that accesses Schedule+, see the documentation that comes with the Microsoft Solutions Development Kit or the Microsoft Developer’s Network (MSDN). For information about accessing MSDN, see Appendix F, “Resources.”
  
Filters for Importing and Exporting Data
The Schedule+ application includes filters for exporting and importing task, calendar, and contact information to and from other personal information managers, such as Lotus Organizer time management software, Sharp 9600 personal digital assistant, and Timex Data Link watch.
The following table shows the personal information management systems supported by Schedule+ filters. Currently, only the Sharp digital assistants are supported. Filters for the rest of the personal information managers listed will be available free of charge through Microsoft support resources. For information about these resources, see Appendix F. 
In addition to the filters listed here, IntelliLink Corporation supplies a translator package that will be available with future updates to Schedule+. In the meantime, you can call IntelliLink at (603) 888-0666 for information on obtaining the translator package and the converters it contains.
  
Personal Information Manager / File Format	Import/Export

Schedule+ 1.0	Import
ACT! for Windows	Import
ECCO Professional	Import
Lotus Organizer	Import
PackRat 4.1+	Import
Windows Accessories	Import
Sharp 9600	Import/Export
HP 95LX	Import/Export
Sharp 5000/7000/7200	Import/Export
Sharp 7600/7620	Import/Export
Sharp 8000/8200	Import/Export
Sharp 8600/YO-610	Import/Export
Timex Data Link Watch	Export
CSV (comma-separated value file format)	Import/Export
ASCII format	Import/Export
Microsoft Schedule+ 1.x	Import/Export
Windows Cardfile and Calendar	Import/Export
The Text Import/Export Wizard allows information to be exchanged with other applications using a comma-delimited (CSV) format, a standard method for transferring text-based information. For example, this provides an easy way to import contact information into Schedule+ for users who currently store their contact lists in Microsoft Excel or Microsoft Access.
Users can also insert contact information into Microsoft Word documents by using the Address Book tool in Word. Word imports the contact information by reading the Schedule+ contact list using OLE automation. In addition to accessing address information for a specific Schedule+ contact through the Address Book, Word can also integrate the entire Schedule+ contact list into a mail merge.
Schedule File
The Schedule file (.scd) contains all appointments, projects, tasks, alarms, events, contacts, and roles for a single user. The first time a user runs Schedule+, Schedule+ creates a schedule file on the user’s local drive. If the user is running Schedule+ in group-enabled mode, this file is copied to the user’s server after the user has been running Schedule+ for 15 minutes. By default, Schedule+ accesses the local file rather than the user’s server file, keeping network traffic to a minimum.
Schedule Items
Items are stored in the user’s schedule file, as described in the preceding section. Schedule items are appointments, tasks, projects, contacts, alarms, events, and roles. 
Appointments
Appointments in Schedule+ are activities that occur within a specific time period. Users create appointments in the Schedule+ Appointment Book, which is visible on the Daily, Weekly, Monthly, or Yearly tab. Appointments can have reminders attached to them, and they can be made to be private, tentative, and recurring. A private appointment is hidden to all users except those to whom a user has granted Owner or Delegate Owner access permission. A tentative appointment does not show up as a busy time slot for a user when others view the user’s schedule in their Planner. In other words, when a user schedules a tentative appointment for themselves, they can still be considered free to schedule other appointments. A recurring appointment occurs at regular intervals, such as 10 A.M. every Thursday.
If users are running Schedule+ in group-enabled mode, they can schedule meetings by inviting others to their appointments. The list of possible attendees that appears in the user’s Meeting Attendees dialog box comes from the user’s address list in the workgroup postoffice, or from the address list supplied by the mail server if your worksite is running Microsoft Mail 3.x.
Tasks
Tasks are items on a user’s To Do list. They can be part of a project, or they can stand alone. Users can assign priorities to their tasks, and they can schedule an end date and a duration for each task.
Projects
Projects are groups of tasks. Users can create projects to organize their tasks, although tasks do not need to be associated with a project. Users can assign priorities to projects without affecting the priorities assigned to individual tasks within the projects. Users can designate any project as private, which hides all tasks within the project so that only those users granted Owner or Delegate Owner access permission can view the tasks.
Contacts
Contacts are people who users keep track of in a Contact List in their schedule file. The Contact List stores information such as addresses, phone numbers, and user-defined notes. This list is not connected to a user’s postoffice address list. Users can assign access permissions to allow other users to view or modify their contact information. Contacts designated as private are visible only to users granted Owner or Delegate Owner access permission.
Alarms
Alarms are reminders that users can set for appointments and tasks. The reminder is a message box that appears at a specified interval before an appointment or at the start of an appointed day if the reminder is associated with a task. Reminders can be accompanied by sound if the user sets this option. The default sound is provided by the file Msremind.wav, but users can use the Control Panel to change this sound to any .wav file on the system. Users can set reminders automatically for each new appointment or task by clicking Options on the Tools menu and then clicking the Defaults tab. They can also set the default reminder time on the Defaults tab. Users can change reminder settings for individual appointments and tasks without affecting their default settings.
Events
Events are activities or special occasions that occur on a specific day but do not fill a block of time on a user’s schedule. Examples of events include birthdays, conferences, and trade shows. Users can designate events as annual if the event occurs on the same day every year. Events and annual events do not appear as busy times in the Planner. 
Roles
Roles are predefined combinations of access permissions. Users can assign roles to members of their workgroup by clicking Set Access Permissions on the Tools menu. Roles grant access to appointments, contacts, events, and tasks in a user’s schedule, as shown in the following table.
  
Role	Access permissions

None	Cannot read or modify user’s schedule. Question mark appears next to user’s name in Invite pane of the Schedule+ Planner for free/busy times.
Read	Can read schedule, except for items designated as private.
Create	Can read schedule except for items designated as private; can create new schedule items.
Modify	Can read schedule and can modify existing items, except for items designated as private.
Delegate	Can read schedule and modify existing items, including items designated as private. Can send and receive meeting messages on user’s behalf.
Owner	Can read schedule and modify existing items, including items designated as private. Can change access permissions for user’s schedule. Can send and receive meeting messages on user’s behalf.
Delegate Owner	Can read schedule and modify existing items, including items designated as private. Can change access permissions for user’s schedule. 
Custom	User sets read, create, and modify permissions separately for appointments, contacts, events, and tasks.
Server Files
When users run Schedule+ in group-enabled mode, Schedule+ creates files on their workgroup server to allow group scheduling. These files include the user’s server schedule file, free/busy file, key file, and server files associated with the mail server your worksite uses to support Schedule+.
Server Schedule File
Schedule+ creates the user’s server schedule file the first time it synchronizes the user’s local .scd file with the server. This initial synchronization creates a copy of the user’s local schedule file in the Cal subfolder of the folder that contains the user’s postoffice. The name of the file is hex-ID.scd, where hex-ID is a hexadecimal number that is incremented according to the last entry in the Schedul2.key file, which is also stored in the Cal folder.
Free/Busy Files
Files with the extension .pof contain a user’s free/busy information. Schedule+ stores these files in the Cal folder of the user’s workgroup postoffice. A single .pof file stores free/busy information for the entire workgroup. If your worksite is running Microsoft Mail 3.x with Schedule+, there will be one .pof file for each postoffice participating in schedule distribution. These additional files contain Free/Busy information for users in other postoffices. All users in the workgroup postoffice can be invited to meetings, whether or not they are running Schedule+, and regardless of whether they are running Schedule+ in stand-alone or group-enabled mode. If users are not running Schedule+ or are running Schedule+ in stand-alone mode, a question mark appears next to the their name in the Invite pane of the Schedule+ Planner view.
Key File
Schedule+ creates .key files in the Cal folder of the workgroup postoffice. These files act as a maps to identify which server schedule file belongs to which user in the workgroup. These files contain each user’s mailbox name and an eight-digit hexadecimal ID that corresponds to the user’s schedule file. Users running Schedule+ 1.0 store their schedules in .cal files, which are mapped by Schedule.key. Users running Schedule+ 7.0 store their schedules in .scd files, which are mapped by Schedul2.key. You can use the utility Dumpkey.exe to display the contents of both .key files.
Mail Server Files
Depending on the mail server you are using at your worksite to support Schedule+, such as Microsoft Mail 3.x, you may need to install and set up an administration program, a schedule distribution program, and other utilities. For information about how to set up this software, see the documentation that comes with your mail server.
Running Schedule+ in Stand-Alone Mode
Users can run Schedule+ in stand-alone mode whether or not their system is set up with a postoffice. If a user’s system is mail enabled — which means it  has a postoffice — Schedule+ asks the user at startup whether the user wants to work in group-enabled mode or alone. If a user’s system is not mail enabled, Schedule+ always runs in stand-alone mode.
When users run Schedule+ in stand-alone mode, they can use all the time management features of Schedule+, create contact lists, and manage projects. However, they cannot share any of this information with others in their workgroup nor can they use Schedule+ to schedule meetings with other people, until they run Schedule+ in group-enabled mode.
The first time users run Schedule+ in stand-alone mode, Schedule+ prompts them for whether they want to create a new schedule file or to use an existing one. If users have been working group-enabled, they should use their existing .scd file (or .cal file if their schedule file is in Schedule+ 1.0 format), which is stored in the \Msoffice\Schedule folder by default.
If users choose to create a new schedule file, Schedule+ presents a dialog box for the user to supply a name and location for the file. The default location is the \Msoffice\Schedule folder, and the default name is the user’s logon name. If the user’s system is mail enabled, the default name of the schedule file is the name of the user’s mail profile, as determined by Microsoft Exchange. For more information about creating new profiles in Microsoft Exchange, see “Profiles” in the Microsoft Exchange online help.
Running Schedule+ in Group-Enabled Mode
Before a user can run Schedule+, MAPI 1.0 must be available on the local workstation. Also, the user must have a valid mail account on one of the following platforms:
·	Windows 95 Workgroup Postoffice. This postoffice is included with Windows 95. It must be accessible by all users in the workgroup. For more information about setting up a Windows 95 workgroup postoffice and configuring the Microsoft Exchange client, see “Using the Microsoft Exchange Client with Microsoft Mail” in Chapter 26 of the Microsoft Windows 95 Resource Kit.
·	Microsoft Mail Server. Microsoft Mail 3.x supplies a Schedule+ transport that allows users to share schedules and invite one another to meetings across workgroups. For information about configuring the Microsoft Mail server to run with Schedule+, see the documentation that comes with your server.
·	Microsoft Exchange Server. The Microsoft Exchange Server includes MAPI drivers that extend the capabilities of the Microsoft Exchange client by providing access to public folders, creating custom forms and shared documents, scheduling meetings with others, managing time and tasks among workgroups, and creating custom electronic forms. For more information about configuring the Microsoft Exchange Server and setting up public folders, see the documentation that comes with the Microsoft Exchange Server.
  
When users run Schedule+ in group-enabled mode, they can share the following kinds of information between Schedule+ and other messaging or scheduling applications:
·	Meeting requests. When users make an appointment and invite others, Microsoft Exchange provides a form for sending the meeting request through electronic mail.
·	Free/busy information. On the Planner tab in Schedule+, a meeting organizer can add specific people to a list of invitees, and then check their availability before scheduling a meeting. Their busy times show up as colored bars in the Planner.
·	Details. If an invitee has given the meeting organizer permission to view the details of the invitee’s schedule, the meeting organizer can use the right mouse button to click on a busy time for that person and view the details of an appointment, such as location, purpose of the meeting, and so forth. Details also include access permissions users can give each other to specific parts of their schedule, such as contacts or tasks.
  
The first time users run Schedule+ in group-enabled mode, Schedule+ creates a schedule file on the user’s local drive, as described earlier for running Schedule+ in stand-alone mode. At a default interval of 15 minutes, Schedule+ copies the user’s local schedule files to the server, in the Cal folder of the user’s workgroup postoffice folder. Schedule+ synchronizes users’ local and server schedule files at regular intervals. Users can configure the synchronization interval by clicking Options on the Tools menu and then clicking the Synchronize tab. Schedule+ also synchronizes schedule files when the user quits Schedule+, and when the user synchronizes the files manually from the Synchronize tab in the Options dialog box.
  
Note   If users have been running Schedule+ in stand-alone mode, Schedule+ synchronizes their local and server schedule files the next time they run Schedule+ in group-enabled mode.
  
During users’ initial Schedule+ session, their free and busy times are not available on the server until the local schedule file is copied to the server. These users can still be invited to meetings, because their names are in the workgroup’s postoffice address book.
Running Schedule+ in group-enabled mode allows users to set access permissions on their schedule, allowing certain users to Read, Create, or Modify appointments and tasks. Users set access permissions by clicking Set Access Permission on the Tools menu. By granting create permission for appointments, users can open each other’s schedules and create appointments as needed. 
You can grant individuals various combinations of permissions based on the needs at your worksite. For more information about access permissions, see the Schedule+ online help.
When users invite attendees to their meetings, Schedule+ runs the users’ mail software automatically. However, when users run Schedule+ in group-enabled mode, Schedule+ adds a button to the standard toolbar with the Microsoft Exchange Inbox icon. This button allows users to run Microsoft Exchange manually from Schedule+, making it easy to correspond with other invitees after reading a meeting request.
How Schedule+ Resolves Conflicts
Conflicts can arise in Schedule+ when the local and server schedule files are being synchronized, when backup server files are created, or during file recovery.
File Synchronization
Schedule+ synchronizes a user’s local and server schedule files by merging changes from one file to the other. During the merge, schedule items are merged on a property by property basis. For example, if the text of an appointment is modified in one file and the time is modified in the other file, the appointment will have new text and a new time in the resulting merged file.
Recovered Files
During normal operation, Schedule+ monitors file read and write operations to ensure the user’s data integrity remains intact. Data integrity is measured using two methods.
Checksums
Each block of data is validated with a checksum. A checksum is a calculated value used to test data integrity. If the checksum does not match the recorded value, the operation fails.
Data typing
Each data block has a specific type. If the data type of the written file does not match that of the file being read, the operation fails.
If the operation fails on either method, Schedule+ calls an internal recovery function that seeks to prevent further data loss by rebuilding the data file without the damaged data. In recover mode, Schedule+ removes the damaged data and copies the valid data blocks to a new file.
If the damaged file is the local file and the server file is undamaged, the user can synchronize with the server file to merge undamaged data back into the local file. Likewise, if the damaged file is the server file, the user can merge the undamaged local file into the server file. Users can force synchronization by clicking Options on the Tools menu, clicking the Synchronization tab, and then clicking Synchronize Now.
When Schedule+ recovers a damaged file, it stores the recovered file in the user’s Temp folder, or if this folder does not exist, in the Windows folder. The filename is Recoverx.scd, where x is a number from 0 to 9. If files Recover0.scd through Recover9.scd exist on the user’s computer, Schedule+ continues to overwrite Recover9.scd.
How Schedule+ Works with Microsoft Exchange Server
Schedule+ works with the Microsoft Exchange client for much of its group scheduling capabilities:
·	Meeting requests and responses appear as custom forms in the Inbox.
·	Meeting attendees are selected from the Microsoft Exchange address book.
·	Microsoft Exchange and Schedule+ use the same user list, so there is no need to maintain two different lists.
  
When combined with a Microsoft Exchange Server, Schedule+ becomes an even more powerful group scheduling platform. In addition to all of the benefits of using just the Microsoft Exchange client:
·	Schedule+ adopts the client/server architecture of the Microsoft Exchange Server. You do not need to add anything to Schedule+; the enhancement to Schedule+ is built into the Microsoft Exchange Server.
·	Time zone information is stored on each Microsoft Exchange Server so that meeting requests from a user in another time zone are booked at the correct times for their time zone, and free/busy information in the planner view is adjusted for time zone differences.
·	Microsoft Exchange Server public folders are used to store free/busy information. Because public folders can be replicated among Microsoft Exchange Servers, this information can easily be shared with others.
·	Schedule+ can be incorporated into any public folder application, such as customer tracking, using OLE automation.
·	No separate administration is required for Schedule+ on a Microsoft Exchange Server. All of the administrative features of the Microsoft Exchange Server automatically incorporate Schedule+.
  
Accessing Personal Schedules
Microsoft Exchange stores information in public and private folders. These folders are kept in an information store on a Microsoft Exchange server. The information store is made up of two elements: the public information store, where public folders are located; and the private information store, where private folders are located.
Microsoft Exchange stores users’ personal schedules in private folders on their home servers. Each time users change their personal schedules, the Microsoft Exchange private folder is updated to reflect that change. Individual users can delegate access permissions to their personal schedule using the Set Access Permissions dialog box in Schedule+.
When one user tries to access another user’s personal schedule in the same site, the following events occur:
·	Schedule+ checks to see that the user has the appropriate access permissions to view the personal schedule information.
·	If the appropriate permissions are in place, Schedule+ connects to the private information store and logs onto the private folder where personal schedule information is stored.
  
Accessing Free and Busy Times
Schedule+ free and busy times are stored in a public folder on a Microsoft Exchange server. The Schedule+ Free Busy Information public folder is a hidden folder and can be viewed by choosing the Hidden Recipients command from the View menu in the Microsoft Exchange Administrator program.
The Schedule+ Free Busy Information public folder is created automatically when you install Microsoft Exchange and configure your first site and server. Each time you create a new Microsoft Exchange mailbox, an entry is created in the Schedule+ Free Busy Information public folder for the associated account. By default, each time the users logs in and change the information in their schedule file, their entry in the Schedule+ Free Busy Information public folder is updated to reflect the change. Individual users can prohibit the publication of their free/busy information using the Set Access Permissions dialog box in Schedule+.
The information in the Schedule+ Free Busy Information public folder is available to all other users within a Microsoft Exchange site. When a user invites attendees to a meeting the user scheduling, Schedule+ connects to the public information store on the Microsoft Exchange server that contains the Schedule+ Free Busy Information public folder, logs on to the public folder, and accesses all free/busy information for the attendees.
Sharing Free/Busy Information Between Sites
Schedule+ Free Busy Information can be shared between sites, extending group scheduling functionality to your entire organization. Every Microsoft Exchange public folder is represented by two entries: a directory entry, which records configuration information about the public folder, and an entry in the public information store, which is where the actual content of the public folder is stored.
Each time you create a new site and initiate site replication between the two sites, the directory entry for the Schedule+ Free Busy Information public folder is automatically replicated to the new site. When users in the new site invite users from the original site to a meeting, Schedule+ detects the directory entry for the Schedule+ Free Busy Information public folder, and attempts to connect to the public information store on the Microsoft Exchange server that contains the Schedule+ Free Busy Information public folder.