Chat now with support
Chat with Support

Migrator for Notes to Exchange 4.16 - Scenarios Guide

About the Migrator for Notes to Exchange documentation Scenarios overview Migration to a proprietary Exchange
Migration to a proprietary Exchange target Pre-migration preparations Batch migration process Post-migration activities
Migration to Microsoft Office 365
Pre-migration preparations Batch migration process Post-migration activities
SSDM (per-desktop) migration

Configuring Migrator for Notes to Exchange performance for migration to Office 365

Migration to Office 365 uses the Internet to transport data, which is typically slower and less reliable than local network connections. Migrator for Notes to Exchange offers several parameters to minimize timeouts when data transmission delays are encountered during a migration.

Quest recommends you set these parameters as detailed below.

Migrator for Notes to Exchange lets you configure the Data Migration Wizard to retry MAPI calls to Exchange and/or Office 365 when issues occur. In some environments, MAPI communications/connectivity can be occasionally interrupted, which may lead to incomplete migration results. This feature controls MAPI retries when certain errors are encountered.

When using the default Quest MNE MAPI/HTTP library, the MAPI error retry feature has been simplified. When using the legacy Outlook library, there are more parameters to configure. For information about when to use the Outlook MAPI/HTTP library, see the parameter [Exchange] UseMneMapiHttpLib in the MNE Program Parameters Reference Guide.

The retry algorithms for both libraries are described in the following sections.

Quest MNE MAPI/HTTP library

The feature is configured by the MessageRetryWait parameter in the [Exchange] section of Task Parameters and Global Defaults:

If MNE encounters a MAPI API function that fails with a network or session connection related error, it attempts to recover using the following algorithm:

5
If a network communication issue prevents MNE from opening a new MAPI/HTTP session, MNE will try again after pausing for the period of time specified by the MessageRetryWait parameter. MNE will continue to attempt to reopen the session until the session has been successfully opened, or until the user cancels the migration.

Outlook MAPI/HTTP library

The feature is configured by the following program parameters in the [Exchange] section of Task Parameters and Global Defaults:

If MNE encounters a MAPI API function that fails with a network or session connection related error, it attempts to recover using the following algorithm:

1
If a MAPI call fails, the API call is made again after pausing for the number of seconds specified by MessageRetryWait. MNE keeps retrying for a maximum of MAPIRetryCount times.
3
If the attempt to open a new MAPI session fails, MNE waits for the number of second specified by MessageRetryWait and tries opening a new session again. MNE keeps trying to reconnect for a maximum of MaxSessionReconnectCount times.
6
MNE attempts to migrate each object using the algorithm above up to a maximum of MessageRetryCount times. If MNE reaches the MessageRetryCount limit, it assumes that there is something wrong with the object itself and it proceeds to the next object to be migrated.

For both the Quest MNE MAPI/HTTP library and the Outlook MAPI/HTTP library, depending on the Log level set in the Specify Run Information screen, retry attempts may only appear in the program logs without any other documented errors or warnings.

For the Outlook MAPI/HTTP library, the default settings tell the wizard to retry a MAPI call that returns the error 80040115 or 80040125, to a maximum of three attempts at 10-second intervals.

IMPORTANT: If you set the MessageRetry parameters to values higher than the defaults, consider adjusting the WatchDogMinutes parameter as described in the next Important note that follows.
WatchDogMinutes parameter

In the Migrator for Notes to Exchange Global Defaults, the WatchDogMinutes parameter:

... specifies the number of minutes of inactivity an Migrator for Notes to Exchange Wizard will wait before it concludes that a data connection has encountered a fatal error and aborts the process. Migration to hosted platforms often generates more process timeouts than migration to a local server. This can cause problems particularly when migrating quantities of large messages (usually due to large attachments). Quest recommends using the default WatchDogMinutes=180 for connections to Office 365, to make the migration program "forgiving." A substantially lower setting of WatchDogMinutes=30 might be better suited to migration to a local server, where shorter and higher-quality transmission paths make timeouts less common.

IMPORTANT: If you set the MessageRetry parameters to values higher than the defaults, consider adjusting the WatchDogMinutes parameter. Quest recommends you set WatchDogMinutes at the greater of: its 180-minute default, or a setting of 10 minutes for every 30 seconds of retry waiting (MessageRetryCount x MessageRetryWait).

If you still encounter timeouts with a higher WatchDogMinutes value, you can disable the feature by setting WatchDogMinutes=0. Be careful with this option, however, because it tells the program to wait indefinitely for activity, rather than reporting a fatal error after some period of time.

Configure SetUserAccountControl and UserAccountControl

Configure SetUserAccountControl and UserAccountControl

Conditional Substep: This substep applies only if you will provision Office 365 from a local AD.

In Migrator for Notes to Exchange’s Global Defaults: If you intend to provision Office 365 from a local AD (only), Quest recommends you set these parameters as suggested here:

Configuring Migrator for Notes to Exchange to accommodate O365 Wave 15 throttling

Conditional Substep: This substep applies only if you are migrating to Office 365 Wave 15.

The 4.7 release of Migrator for Notes to Exchange improved support for Microsoft's PowerShell throttling in O365 Wave 15, and introduced two new program parameters pertaining to PowerShell connections for Wave 15. If you are migrating to O365 Wave 15, you can improve Migrator for Notes to Exchange performance by setting these two parameters in the new [PowerShell] section of Global Defaults and Task Parameters:

Configurable limit for PowerShell connections: This parameter lets an admin specify a per-server limit for the number of concurrent PowerShell connections Migrator for Notes to Exchange can open. For example:
The parameter should be used to eliminate the possibility of Migrator for Notes to Exchange exceeding the PowerShellMaxTenantConcurrency allowed by Microsoft for the tenant. The default for this throttle is 9 simultaneous runspace connections (remote PowerShell). To calculate the recommended setting for MaxPowerShellConnections:
... where R is the number of simultaneous runspaces allowed by your tenant (9 by default), and S is the number of migration servers you will use. If the quotient is not a whole integer, round down to the next lower whole integer for the MaxPowerShellConnections parameter value. For example, if your limit is 9 runspaces and you intend to use one migration server, then 9/1 = 9, and MaxPowerShellConnections=9. Or for a 9-runspace limit with 2 migration machines: 9/2 = 4.5, so MaxPowerShellConnections=4.
The default MaxPowerShellConnections=0 is interpreted as "no limit," effectively turning off this limiting feature.
Configurable "wait" for idle remote PowerShell connections: This parameter lets an admin specify how long (in seconds) Migrator for Notes to Exchange will hold open an idle remote PowerShell connection before closing it. The default:
... will be suitable for most environments. Note that this feature applies only to the duration of an idle state during a connection. Each command execution resets this timer to zero, so a series of commands with only short idle periods between commands could keep the connection open indefinitely. IdleConnectionTimeoutSeconds=0 would tell Migrator for Notes to Exchange not to wait (wait 0 seconds) for a second command after a first, so every PowerShell connection would close immediately after only one command.

Prepare customattrs.tsv file to migrate Notes custom attributes

Prepare customattrs.tsv file to migrate Notes custom attributes

Conditional Substep: This substep applies only if you intend to migrate Notes custom attributes.

A Notes message contains several standard attributes such as the From, To and Subject fields, and can also include user-defined fields. Migrator for Notes to Exchange’s Data Migration Wizard and SSDM can migrate custom Notes attributes from email messages and Notes contacts to unused properties in Exchange, but only if the migration app knows which properties in the target correspond to which attributes in the source. The migration of custom attributes therefore requires that someone map these source-to-target attribute associations in a tsv data file, before the migration, so the migration apps can refer to that file to migrate the attributes.

This mapping file must be a unicode (not ANSI) file named customattrs.tsv in the default installation folder for the Data Migration Wizard (typically C:\Program Files\Quest\Migrator for Notes to Exchange), and also in the folder containing notesdtapp.exe if you want to migrate Notes custom attributes via the SSDM. Either or both migrator applications can refer to this file to map the source attributes to free (unused) properties in the MAPI target mailboxes.

Migrator for Notes to Exchange installs a unicode attrs.tsv file, with the same column headings required for customattrs.tsv, that you can use as a template to create the customattrs.tsv file.

1
Use a text editor to open attrs.tsv, and save the open copy under the new name customattrs.tsv. Make sure you save customattrs.tsv as a unicode (not ANSI) file, in the folder(s) as noted above, and delete any data rows that may appear in the copy.
ID: Name of the custom attribute—a unique string that distinguishes this row’s custom attribute from all others in the file.
IMPORTANT: If any data row(s) remain in the original attrs.tsv file, make sure that no ID value in customattrs.tsv is the same as any ID value in attrs.tsv. Custom attributes will not migrate correctly if any ID value appears in both files.
SourceProperty: Name of an attribute that has been added to a Notes mail message or a Notes contact, to be migrated to a property in Exchange.
TargetPropertySet: The GUID for the target property set, which must be one of these values:
If the TargetPropertySet value is PS_PUBLIC_STRINGS, the familiar GUID for the set named will be substituted for the string provided.
TargetPropertySet can be left blank, but in that case TargetProperty (see below) must be an integer property ID in the range 0x0000-0x7FFF.
TargetProperty: Name of the corresponding MAPI property in Exchange. A hexadecimal user-property value will be created in Exchange on each migrated mail message or contact with the Notes property, which will hold the value. The hexadecimal values of the created properties will be reported in the log (search for "custom attr" in the log file).
If TargetPropertySet (above) is left blank, this TargetProperty value must be specified as a 16-bit integer in the range 0x0000-0x7FFF that is not already defined for some other MAPI property.
TargetPropertyType: The data type of the MAPI property, which must logically correspond to the data type used in Notes. Valid values are: STRING, MV_STRING, LONG, SYSTIME, BOOLEAN.
3
Save and close the updated customattrs.tsv file.

For example, a typical customattrs.tsv file might look something like this:

ID

SourceProperty

TargetPropertySet

TargetProperty

TargetPropertyType

Attr1
Attr2
Attr3
Attr4
Attr5

ArchiveId
ArchivedDate
SaveSetId
RetentionCategory
HasAttachments

{D0F41A15-9E91-D111-84E6-0000F877D428}
{D0F41A15-9E91-D111-84E6-0000F877D428}
{D0F41A15-9E91-D111-84E6-0000F877D428}
{D0F41A15-9E91-D111-84E6-0000F877D428}
{D0F41A15-9E91-D111-84E6-0000F877D428}

Archive ID
Archived Date
Saveset ID
Retention Category
HasAttachments

STRING
STRING
STRING
STRING
STRING

You can use the Microsoft MfcMapi.exe utility to view the property and its value, if they have been created. (The utility is a free download from Microsoft; Google "mfcmapi" and visit the www.microsoft.com/downloads link.) Most problems in migrating custom attributes can be diagnosed by these quick tests:

Verify that the target property specified in the customattrs.tsv file does not already exist, and that the target property is in the correct format. See About MAPI properties below for more information about this.
Verify that the customattrs.tsv file is UNICODE, not ANSI.
Verify that the last line in the customattrs.tsv file is followed by a line feed and carriage return (position the cursor at the end of the last line and press Enter).
If any data row(s) remain in the original attrs.tsv file, make sure that no ID value in customattrs.tsv is the same as any ID value in attrs.tsv. Custom attributes will not migrate correctly if any ID value appears in both files.

A named property's name is a property-set GUID and an ID that is either a 32-bit integer or a string. A 16-bit integer alias in the range 0x8000 to 0xFFFF is assigned to the named property by MAPI. That alias is mailbox-specific.

An unnamed property's name is a 16-bit integer in the range 0x0001 to 0x7FFF. That 16-bit integer is valid in all mailboxes. Examples of unnamed properties are 0x0070 (i.e., PR_CONVERSATION_TOPIC) and 0x6656, both of which happen to be used by MAPI. So these two examples cannot be used as target property values for message attributes since they are already used, although they may be used to map Notes contact attributes to Exchange.

A custom property can be unnamed or named. If it is unnamed, you must select a 16-bit integer TargetProperty in the range 0x0001 to 0x7FFF that is not already in use by MAPI. If it is named, you can select any property-set GUID. If you select a property set that is already in use, you must choose a 32-bit integer or string ID that is not already in use in that property set. If you select a brand new property-set GUID, you need not worry about IDs already in use because there will not be any.

If you want named custom properties, Quest recommends you use the PS_PUBLIC_STRINGS property-set GUID, (PS_PUBLIC_STRINGS being an alias for {00020329-0000-0000-C000-000000000046}), and use string IDs with a prefix that is unique to your application (like "Quest-").

Related Documents