Migration | << | >> |
---|
A secondary file is a collection of one or more sections. Each section contains a description of the data, followed by the actual data. A message body and its attachments are in separate sections.
The offset in the primary file specifies the first section in the secondary file for messages with multiple sections. Sections are separated by blank lines. The following example shows the format of secondary files:
Type,Length,Encoding,Islast,Name,Position,Format
Body,91,,TRUE,,,
Do you want to play a game of racquetball after work tonight?
Pat
Body,70,,FALSE,,,
I saw this short review of Microsoft's Back Office products.
Pat
Attachment,205,,TRUE,backoffi.txt,0,
Microsoft BackOffice package includes Windows NT Server, Microsoft Exchange Server, SQL Server, and System Management Server.
Other,51,,TRUE,,,
leslied;sallys;marck;louisej;robinh;bobbyq;gregoryc
The following table describes the fields in the header line of secondary files.
Heading | Description | Values |
---|---|---|
Type (Required) | Type of data. | Body, Attachment, Schedule, Document, or Other. |
Length (Required) | Length of data in bytes, including end-of-line characters. | Integer. If message is body part of a free document, the length must = 0. |
Encoding | Reserved field. | Leave blank. |
Islast | If TRUE, body or attachment is the last in the file for this message. If FALSE, the next section in file is either body or attachment for this message. | TRUE or FALSE. |
Name | File name of attachment. | Required for sections that are attachments and documents, and ignored otherwise. |
Position (Optional) | Location, in bytes, where icon for attachment should be placed. Valid only for attachments. | Default is to end of the body. Required for sections that are attachments and ignored otherwise. Must be between -1 and the number of bytes in the body. |
Format | File format of attachment. | None or Macbinary. Defaults to None. Required for sections that are attachments and ignored otherwise. |
Documents or files can be migrated, even if they are not associated with messages. In the primary file, they appear as standard messages. In the secondary file, the length of the body of the message = 0. The subject for this message is ignored, and the Islast field is set to FALSE. The Document section is next in the secondary file.
It is very important that the file name in the Document section include an extension. If none exists, add an extension that can launch a viewer application. Here is an example of a free document in the secondary file:
Type,Length,Encoding,Islast,Name,Position,Format
Body,0,,FALSE,,,
Document,205,,TRUE,backoffi.txt,0,
Microsoft BackOffice package includes Windows NT Server, Microsoft Exchange Server, SQL Server, and System Management Server.
Schedule data is moved to the user's mailbox as an attachment to a new mail message. The user opens the message and imports the data by double-clicking the attachment. You must install Microsoft Outlook to import the data.
In the primary file, the schedule data appears to be another message in the message section. In the following example, the third message in bold is the schedule message, which is placed in the Inbox.
MAILMESSAGE,PROFS:SANFRAN(HOWARDS)
Folder,Sender,To,Cc,Bcc,Subject,Send-Date,Received-Date,Priority,Unread,Unsent,Body
,Bill Lee,Howard Snyder,,,"End of Month Report",19950321093421,,-1,,,#SALESPO1.SEC(54)
Phoenix Project,Pat Parkes,Howard Snyder,,,Back Office Review,,,,,,#SALESPO1.SEC(161)
,Howard Snyder,Howard Snyder,,,Schedule+,19951005022543,,1,TRUE,,#SALESPO1.SEC(356)
In the secondary file, set the body of the message to a length of 0. The Migration Wizard automatically adds instructions for importing the schedule file in English, German, French, or Japanese, depending on the language of your Microsoft Exchange Server computer.
Type,Length,Encoding,Islast,Name,Position,Format
Body,0,,FALSE,,,
Schedule,298,,True,HOWARDS.SC2,-1,
SCHEDULE+2 EXPORT VERSION 103
...
The first line in the schedule file must be a header line as follows:
SCHEDULE+2 EXPORT VERSION 103
Each line thereafter has schedule properties and values. The following table describes the differences between the schedule file format and the standard migration file format.
Property | Description |
---|---|
Object | Starts with line that describes type of data (for example: "Projects"), followed by a colon. Next line has open brace ({). Each line thereafter has a property, followed by a colon and the value. Last line of table has close brace (}). Comparable to a header line and row of data in the migration file format. |
Object containing an object | An object can contain another object. Within open and close braces of an object, another set of braces can designate another object. For example, recurring appointments can contain exception objects to describe modified or deleted single appointments in the recurring appointment schedule. |
Separator | Schedule file format uses a colon, instead of a comma, to separate schedule property names from values. A colon must be followed by a space. |
Space | A space after a colon and before a value are ignored. You can use spaces to make the file more readable. |
Line continuation character | Schedule file format uses a backslash (\), followed by a carriage return and line feed, to indicate that the line continues. Lines cannot exceed 80 characters. You can use two line continuation characters to make a line break in appointment or task descriptions. |
Quotation mark | Schedule file format encloses all strings and binary data in quotation marks. Quotation marks inside these values are represented by a backslash followed by a quotation mark (\"). |
Date/Time | Date = mm-dd-yyyy. Time = hh:mm, 24-hour format. You can join date and time with a space: mm-dd-yyyy hh:mm. For example, 9:00 AM on New Years Day = 01-01-1996 09:00. All times and dates are imported in the time zone of user. |
Tip To see examples of the schedule file format, create examples in Microsoft Outlook Calendar and export the calendar.
The following objects can be created in the schedule file format.
Property | Description |
---|---|
Projects | Table of all projects. |
Contacts | Table of contacts. |
SingleAppointments | Appointments that occur only once. |
SingleEvents | Events that occur only once. |
SingleTasks | Tasks that occur only once. |
RecurringAppointments | Recurring appointments. |
RecurringEvents | Recurring events. |
RecurringTasks | Recurring tasks. |
Each type of property can occur multiple times within the file. If objects of the same type are kept together, import performance is improved.
SCHEDULE+2 EXPORT VERSION 103
Projects:
{
data
}
Projects:
{
data
}
Contacts:
{
data
}
RecurringAppointments:
{
data
}
RecurringEvents:
{
data
}
RecurringTasks:
{
data
}
SingleAppointments:
{
data
}
SingleEvents:
{
data
}
SingleTasks:
{
data
}
The following examples illustrate the projects format:
Projects:
{
Priority: 16945
Text: "Colossus Project"
}
Projects:
{
Priority: 16689
Text: "Region 6 Spring Sales Drive"
}
The following table describes the properties of projects.
Property | Description |
---|---|
Priority | Urgency of project. |
Text | Description of project. |
For more information on priorities, see "Priority Property" later in this appendix.
Schedule+ contacts are separate from Microsoft Outlook PAB entries. There is no link between them. Depending on the configuration of your source system, contacts can be imported into Schedule+ if contact entries are created in the schedule migration file.
You can also create contacts from PAB entries in the source system. Users can delete contacts created this way, but they cannot add information from PAB entries to the contacts list.
The following example illustrates the contact format:
Contacts:
{
LastName: "Lee"
Department: "MIS"
AddressBusiness: "12 Main St"
CountryBusiness: "USA"
PhoneBusiness: "415 555-9839"
CityBusiness: "San Francisco"
Office: "16/2102"
Company: "Ferguson & Bardell"
Assistant: "Sarah"
ZipCodeBusiness: "94105"
CurrentPhone1: 4
FirstName: "William"
StateBusiness: "CA"
JobTitle: "Team Manager"
}
The following table describes the properties of contacts.
Property | Description |
---|---|
AddressBusiness | Business address. |
AddressHome | Home address. |
Assistant | Assistant of the contact. |
CityBusiness | City for the business address. |
CityHome | City for the home address. |
Company | Company. |
CountryBusiness | Country for the business address. |
CountryHome | Country for the home address. |
Department | Department. |
FirstName | First name. |
JobTitle | Job title. |
LastName | Last name. |
Notes | Miscellaneous information. |
Office | Office location. |
PhoneAssistant | Phone number of the contact's assistant. |
PhoneBusiness | Business phone number. |
PhoneBusiness2 | Second business phone number. |
PhoneFax | Fax phone number. |
PhoneHome | Home phone number. |
PhoneHome2 | Second home phone number. |
PhoneMobile | Mobile phone number. |
PhonePager | Pager phone number. |
Spouse | Name of the contact's spouse. |
StateBusiness | State/province of business address. |
StateHome | State/province of home address. |
User1 | User-defined string for contact information that doesn't fit any other field. |
User2 | User-defined string for contact information that doesn't fit any other field. |
User3 | User-defined string for contact information that doesn't fit any other field. |
User4 | User-defined string for contact information that doesn't fit any other field. |
ZipCodeBusiness | Business address postal code. |
ZipCodeHome | Home address postal code. |
If attendees are invited to a migrated appointment, put their names into the Notes or Text property of the appointment. To make it easier for the user to send mail to the attendees or to add the attendees to the attendees list, use a semicolon to separate the names. The user can then copy the list of names into the To line of a message or to the attendees list and resolve them against the Address Book.
Calendar appointments can list outside attendees. Their unique MAPI ID is stored with the appointment and is used to verify responses to meeting requests. Without an attendee's MAPI ID, the display name cannot be added to the attendees list.
The following example illustrates the SingleAppointment format:
SingleAppointments:
{
Ring: T
AlarmAmount: 15
Text: "Attend training class."
AlarmTypeUnit: 0
AlarmAmountOriginal: 15
BusyType: 0
Start: 3-5-1996 15:00
End: 3-5-1996 17:00
}
SingleAppointments:
{
Where: "Rona's office"
Text: "Meet with Rona about shifting contacts to new employees.\
\
Rona Rumalski"
Ring: T
AlarmAmount: 15
Start: 3-5-1996 09:00
BusyType: 1
End: 3-5-1996 10:30
AlarmTypeUnit: 0
}
The following table describes the properties of SingleAppointments.
Property | Values | Description |
---|---|---|
AlarmAmount | Integer | Amount of time before meeting date to issue alarm. |
AlarmTypeUnit |
0 = Minute 1 = Hour 2 = Day 3 = Week 4 = Month |
Type of unit for AlarmAmount. |
BeforeEnd |
T or F Default = F |
Alarm is set relative to end rather than to start of SingleAppointment. |
BusyType |
0 = Tentative 1 = Busy |
If SingleAppointment should appear busy or tentative. |
End (Required) | mm-dd-yyyy hh:mm | End date and time for SingleAppointment. |
IsRecurringInstance |
T or F Default = F |
If SingleAppointment is instance of recurring series. |
Notes |   | Miscellaneous information. Text appears in Notes property page for appointment. |
Ring |
T or F Default = T |
If alarm was set for SingleAppointment. |
Start (Required) | mm-dd-yyyy hh:mm | Start date and time for SingleAppointment. |
Text |   | Description for SingleAppointment. Text appears on calendar. |
Where |   | Location for appointment. |
Events are different from appointments in the following ways:
The following example illustrates the SingleEvents format:
SingleEvents:
{
Ring: T
AlarmAmount: 2
Text: "River City 10 mile hike and camp. (Weather permitting.)\
Call Josh at 555-1232 to make sure it is happening."
AlarmTypeUnit: 2
AlarmAmount: 2
StartDate: 3-2-1996
EndDate: 3-3-1996
}
The following table describes the properties of SingleEvents:
Property | Values | Description |
---|---|---|
AlarmAmount | Integer | Amount of time before midnight to issue alarm. |
AlarmTypeUnit |
0 = Minute 1 = Hour 2 = Day 3 = Week 4 = Month |
Type of unit for AlarmAmount. |
BusyType |
0 = Tentative 1 = Busy |
If event should appear busy or tentative. |
EndDate (Required) | mm-dd-yyyy | End date for event. |
IsRecurringInstance |
T or F Default = F |
Indicates if event is instance of recurring series. |
Notes |   | Miscellaneous information. |
Ring |
T or F Default = T |
If alarm was set to ring for event. |
StartDate (Required) | mm-dd-yyyy hh:mm | Start date for event. |
Text | String | Text (description) for event. |
Microsoft Outlook Calendar relates tasks to projects by using the ProjectID number. Without a ProjectID number, tasks are imported without being related to a project.
The following example illustrates the SingleTask format:
SingleTasks:
{
Priority: 16672
Text: "Update summer catalog."
AmountActualEffort: 0
AmountEstimatedEffort: 1
IsTaskAutoDone: T
StartDate: 3-6-1996
AmountStartWork: 4
TypeUnitStartWork: 2
EndDate: 3-10-1996
TypeUnitEstimatedEffort: 2
TypeUnitActualEffort: 2
}
The following table describes the properties of SingleTasks.
Property | Values | Description |
---|---|---|
AmountActualEffort | Number | Amount of time of actual effort, in units set by TypeUnitActualEffort. |
TypeUnitActualEffort |
0 = Minute 1 = Hour 2 = Day 3 = Week 4 = Month |
Type of unit for measuring actual effort for task. |
AmountEstimatedEffort | Number | Amount of estimated time effort, in units set by TypeUnitEstimatedEffort. |
TypeUnitEstimatedEffort |
0 = Minute 1 = Hour 2 = Day 3 = Week 4 = Month |
Type of unit for measuring estimated effort for task. |
AmountStartWork | Number | Amount of time before end date to start work on item, in units set by TypeUnitStartWork. |
TypeUnitStartWork |
0 = Minute 1 = Hour 2 = Day 3 = Week 4 = Month |
Type of unit for amount of time before end date to start work. |
Billing | String | Billing information. |
CompletedDate | mm-dd-yyyy | Date task was completed. |
StartDate | mm-dd-yyyy | Date task starts. |
EndDate | mm-dd-yyyy | Date task ends. |
IsTaskAutoDone | T or F | If task should appear as automatically completed on end date. |
Mileage | String | Mileage associated with task. |
PercentCompleted | Number | Percentage of task completed. |
Priority | See the following explanation. | Priority of task. |
Priority Property Schedule+ prioritizes tasks by using numbers (1 through 9) and/or letters (A through Z). For example, "A1," " 3," and "B" are valid priorities. The migration file format converts this priority to a decimal.
The following table illustrates how priorities are converted to decimal versions. The ASCII value of the letter or number is converted to a hexadecimal, the number 20 is prefixed or appended as a space and place holder, and this number is converted to a decimal.
Priority | Convert to hexadecimal | Prefix or append 20 | Convert to decimal |
---|---|---|---|
1 | 31 | 2031 | 8241 |
2 | 32 | 2032 | 8242 |
3 | 33 | 2033 | 8243 |
4 | 34 | 2034 | 8244 |
5 | 35 | 2035 | 8245 |
6 | 36 | 2036 | 8246 |
7 | 37 | 2037 | 8247 |
8 | 38 | 2038 | 8248 |
9 | 39 | 2039 | 8249 |
A | 41 | 4120 | 16672 |
B | 42 | 4220 | 16928 |
C | 43 | 4320 | 17184 |
D | 44 | 4420 | 17440 |
E | 45 | 4520 | 17696 |
F | 46 | 4620 | 17952 |
G | 47 | 4720 | 18208 |
H | 48 | 4820 | 18464 |
I | 49 | 4920 | 18720 |
J | 4A | 4A20 | 18976 |
K | 4B | 4B20 | 19232 |
L | 4C | 4C20 | 19488 |
M | 4D | 4D20 | 19744 |
N | 4E | 4E20 | 20000 |
O | 4F | 4F20 | 20256 |
P | 50 | 5020 | 20512 |
Q | 51 | 5120 | 20768 |
R | 52 | 5220 | 21024 |
S | 53 | 5320 | 21280 |
T | 54 | 5420 | 21536 |
U | 55 | 5520 | 21792 |
V | 56 | 5620 | 22048 |
W | 57 | 5720 | 22304 |
X | 58 | 5820 | 22560 |
Y | 59 | 5920 | 22816 |
Z | 5A | 5A20 | 23072 |
For a number priority of 3, for example, use the hexadecimal 33 and prefix 20. The value 2033 converts to decimal 8243. For a letter priority of C, for example, take the hexadecimal 43, and append 20. The value 4320 converts to 17184.
If your existing system prioritizes by requiring both letters and numbers (for example: A1, B3, or Z9), use this procedure. Convert both to hexadecimal, concatenate (link together) the values of the letter and number, and then convert that value to decimal. For a priority of A3, for example, use the hexadecimal of A (41) and concatenate it with the hexadecimal of 3 (33). The value 4133 converts to 16691.
The following examples illustrate the format for recurring appointments, events, and tasks:
RecurringEvents:
{
Text: "Yearly tax audit. Start preparations early."
Ring: T
AlarmAmount: 21
AlarmTypeUnit: 2
StartDate: 3-4-1996
EndDate: 3-4-1996
RecurringType: 7
YearInterval: 1
DayOfMonthMask: 8
MonthOfYearMask: 4
}
RecurringAppointments:
{
Text: "SATR meeting.\
\
Big Sale."
Ring: T
AlarmAmount: 15
DayOfWeekStart: 0
StartRecurringTime: 12:00
YearInterval: 1
WeekInterval: 1
BusyType: 0
RecurringType: 51
StartRecurringDate: 2-26-1996
DayOfWeekMask: 32
EndRecurringDate: 3-4-2000
DayOfMonthMask: 8
EndRecurringTime: 13:00
MonthOfYearMask: 4
AlarmTypeUnit: 0
}
RecurringTasks:
{
Text: "Check online mailbox for new mail."
Priority: 8243
TypeUnitActualEffort: 2
AmountEstimatedEffort: 1
TypeUnitEstimatedEffort: 2
Billing: "Billed at higher rate"
BeforeEndOriginal: F
AmountStartWork: 0
StartRecurringDate: 3-2-1996
RecurringType: 64
WeekInterval: 1
DayOfWeekMask: 16
DayOfWeekStart: 0
DayInterval: 1
EndRecurringDate: 8-10-1996
TypeUnitStartWork: 2
Ring: T
AlarmAmount: 0
AlarmTypeUnit: 2
BeforeEnd: F
Exceptions:
{
InstanceDate: 3-3-1996
StartDate: 3-3-1996
EndDate: 3-4-1996
Deleted: F
Text: "Check online mailbox for new mail. Check for new rates."
Priority: 8241
TypeUnitActualEffort: 2
AmountEstimatedEffort: 1
TypeUnitEstimatedEffort: 2
BeforeEndOriginal: F
AmountStartWork: 0
TypeUnitStartWork: 2
Ring: T
AlarmAmount: 5
AlarmTypeUnit: 2
BeforeEnd: F
}
}
The following table describes the properties shared by recurring appointments, events, and tasks.
Property | Values | Description |
---|---|---|
DayInterval | 1 through 999 | Number of days between instances. Used only if RecurringType is 64. |
DayOfMonthMask |
1st day of month = bit 0 31st day of month = bit 30 |
Bit field indicating which days of the month are valid for recurrence pattern. Used only if RecurringType is 7 or 12. |
DayOfWeekMask |
Sunday = bit 0 Saturday = bit 6 |
Bit field indicating which days of the week are valid for recurrence pattern. Used only if RecurringType is 48, 51, or 56. |
DayOfWeekStart |
0 through 6 Sunday = 0 |
Start of week preference. Used only if RecurringType is 48. For recalculating biweekly meetings. |
EndRecurringDate | mm-dd-yyyy | End date for recurrence pattern. |
EndRecurringTime (Required) | hh:mm | End time for a recurring item. |
Exceptions | See "Exceptions Property" section later in this chapter. | Exceptions to a recurring item. |
FirstRecurringAlarmDate | Today's date in mm-dd-yyyy format. | First recurring item with alarm. Recalculated during import into Microsoft Outlook. |
MonthInterval | 1 through 99 | Interval between months for recurrence pattern. Used only if RecurringType is 12 or 56. |
MonthOfYearMask |
January = bit 0 December = bit 11 |
Bit field indicating which months of year are valid for recurrence pattern. Used only if RecurringType is 7 or 51. |
RecurringType (Required) |
7 = Yearly on specific day 12 = Monthly on specific day 48 = Weekly 51 = Yearly on a pattern 56 = Monthly on a pattern 64 = Daily |
Type of recurrence pattern. |
StartRecurringDate (Required) | mm-dd-yyyy | Start date for recurrence pattern. |
StartRecurringTime (Required) | hh:mm | Start time for recurring item. |
WeekInterval | Positive integer | Interval between weeks for recurrence pattern. Used only if RecurringType is 48, 51, or 56. |
YearInterval | Positive integer | Interval between years for recurrence pattern. Used only if RecurringType is 7. |
The following table describes additional values required for the RecurringType property.
RecurringType | Required values |
---|---|
7 = Yearly on specific day | DayOfMonthMask, MonthOfYearMask, YearInterval |
12 = Monthly on specific day | DayOfMonthMask, MonthInterval |
48 = Weekly | DayOfWeekMask, DayOfWeekStart, WeekInterval |
51 = Yearly on a pattern | DayOfWeekMask, MonthOfYearMask, WeekInterval |
56 = Monthly on a pattern | DayOfWeekMask, MonthInterval, WeekInterval |
64 = Daily | DayInterval |
Exceptions Property Exceptions are deleted or modified properties of a recurring appointment or task. To delete, only two properties are required: Deleted and InstanceDate. To modify, the appointment or task must be redefined as a single appointment or task, and you must redefine the StartDate and EndDate, even if only the Location property is modified.
Property | Values | Description |
---|---|---|
Deleted | T or F | If instance was marked "deleted." If FALSE, instance has been modified. |
InstanceDate | mm-dd-yyyy | Date that original instance would have occurred. |