This topic provides examples of how to use the Transporter Management Shell to migrate custom applications from Lotus Domino to Windows SharePoint Services. Custom applications are any Lotus Domino application that was not created from the standard Discussion or Document Library templates. These custom applications may be migrated to a SharePoint List in one of the Windows SharePoint application templates or to a custom List. For more information about SharePoint templates, see New Application Templates for Windows SharePoint Services 3.0.

Before You Begin

Verify that the Lotus Notes client installed on the computer running Transporter can access the applications on the Lotus Domino server identified as the Domino Application server.

To perform these procedures, the account you use must be delegated Full Control Administrator role in Windows SharePoint Services and read access rights to Active Directory directory service for the domain where the applications will be migrated.

Data Mapping for Application Migration

A special XML configuration file called Microsoft.Exchange.Transporter.Provider.SharePoint.SharePointProvider.xml.smap (XML SMAP file) is located in the \Microsoft Transporter Tools\Config\ folder. The file contains the source and target metadata and data mappings that are used for application migration. You can edit this file to support custom application migrations by using a standard text editor such as Notepad. Make a backup copy of the XML SMAP file before you modify it.

The file is processed from top to bottom and then from left to right. In the case of duplicate information, the first instance will be processed and subsequent instances will be ignored.

Currently, Transporter does not support specific XML SMAP entries for each custom application. Modify the metadata mapping

<ObjectMap object="application.meta" template="inject.GenericList.sharepoint">

and the data mapping

<ObjectMap object="application.generic" template="inject.GenericList.sharepoint">

sections of the XML SMAP file to include custom mapping information. This mapping information should be associated with a single custom Domino application design.

Note:
The following mappings must always be included in custom mappings in order for the application to migrate properly:

<Assign source="SourceUID" prop="UniqueId" type="Text" />

<Assign source="ParentSourceUID" prop="ParentUniqueId" type="Text" />

Note:
Many of the settings in this file are case sensitive. Entries must adhere to the file’s schema.

Sample of Mapping Metadata

The following is a sample from the default XML SMAP file that maps metadata:

<!-- For Metadata mapping between Notes Discussion DBs to WSS V3.0 DiscussionBoards -->

<!-- Mappings for injecting application.meta to a DiscussionBoard -->

<ObjectMap object="application.meta" template="inject.DiscussionBoard.sharepoint">

<Assign prop="OnQuickLaunch" default="True"/>

<Assign source="BodyHtml" field="Body" type="Note" format="text/html" visible="True"/>

<Assign source="Attachments" field="Attachments" visible="True"/>

<Assign source="Category" field="Category" type="Text" format="text/plain" visible="True" />

</ObjectMap>

Note:
Any line that should be commented out starts with a <! And ends with -->. Commented lines cannot wrap to a second line.

In the sample, the following definitions are in use:

Object= is the name reference that is used to describe this section of the file. In this example, it is "application.meta".

Template= indicates that the metadata will be injected into a Windows SharePoint Services DiscussionBoard template. For custom applications, the parameter is genericlist.

Assign prop= is used to assign properties for the SharePoint List. OnQuickLaunch defines that the SharePoint List appears on the left side of the Windows SharePoint Services application along with other available Lists. The default is False.

Assign source= is used to map a Domino application field to a Windows SharePoint Services column and identify the datatype associated with the content.

Type= lists the datatype for this field. Available types are:

  • Attachments

  • Boolean

  • Calculated

  • Choice

  • Computer

  • ContentTypeId

  • Counter

  • CrossProjectLink

  • Currency

  • DateTime

  • Error

  • File

  • GridChoice

  • Guid

  • Integer

  • Lookup

  • MaxItems

  • ModStat

  • MultiChoice

  • Note

  • Number

  • PageSeparator

  • Recurrence

  • Text

  • ThreadIndex

  • Threading

  • URL

  • User

  • WorkflowEventType

  • WorkflowStatus

Format= provides additional details about the type. Available formats are:

  • text/plain

  • text/rich

  • text/html

  • text/xml

  • number/integer

  • number/percent

  • number/decimal

  • datetime/dateonly

  • datetime/full

Visible= defines whether the SharePoint List displays this column.

Sample of Mapping Data

The following is a sample from the default XML SMAP file that maps data:

<!-- ** Custom Data Mapping from Notes Dbs to generic WSS 3.0 lists ** -->

<!-- Notes DBs without Templates are considered Application.Generic -->

<!-- Mapping for Data injecting application.generic to a Generic List -->

<ObjectMap object="application.generic" template="inject.GenericList.sharepoint">

<Assign source="Subject" prop="Subject" field="Title" />

<Assign source="BodyHtml" prop="BodyHtml" field="Body" type="Note"/>

<Assign source="Categories" prop="Categories" field="Category" type="text/plain"/>

<Assign source="SourceUID" prop="UniqueId" type="Text" />

<Assign source="ParentSourceUID" prop="ParentUniqueId" type="Text" />

<Assign source="Attachments" prop="Attachments" field="Attachments" />

</ObjectMap>

In this sample, the following definition is also in use:

Prop= is the Intermediate property used by the migration engine. This should be the same name as the Source.

Examples of Application Migration

You can use the Move-DominoApplication cmdlet to move a custom application's metadata and data with a single command.

The process of migrating these applications requires multiple steps using the following cmdlets:

  1. Get-DominoApplication reads the metadata from the Lotus Domino application. This information can be piped to Add-SharePointApplication.

  2. Add-SharePointApplication creates a new SharePoint List.

  3. Get-DominoApplicationData reads the data from a Lotus Domino application. This information can be piped to Add-SharePointItem.

  4. Add-SharePointItem writes the data into a SharePoint List.

Simple Migration

The Move-DominoApplication cmdlet migrates both metadata and data with a single cmdlet and refers to the mapping rules defined in the XML SMAP file. The following example will move a Lotus Domino application (HRApp.nsf) using the mapping information from the GenericList section of the XML SMAP file to the SharePoint List named HRApp:

Move-DominoApplication –SourceID HRApp.nsf –TargetMapping GenericList –TargetSharePointList HRAPP

Use Move-DominoApplication in any scenario when no data manipulation or review is necessary during the migration process.

Data Manipulation During Migration

If the HRApp.nsf application from the example above needed some modification or review of the metadata and/or data prior to being migrated to Windows SharePoint Services, the migration process requires multiple cmdlets. The example above could be separated into individual tasks, which allow review and/or manipulation of the metadata or data:

Get-DominoApplication –SourceID HRApp.nsf –MatchToTarget –SourceDetail 1 | Add-SharePointApplication –TargetMapping GenericList –TargetSharepointList HRAPP

Get-DominoApplicationData –SourceID HRApp.nsf | Add-SharePointItem –TargetMapping GenericList –TargetSharePointList HRAPP

The following example allows an administrator to review the existing fields in a Lotus Domino application:

$H = Get-DominoApplication –sourceDetail 1 –SourceID HRApp.nsf

$H.Schema displays all fields and their types.

$H.Schema| FT displays the same information in a table format for easier viewing.

This next example replaces the value in the Company field with the string "Contoso Ltd." and then migrates the data into Windows SharePoint Services.

$HD = Get-DominoApplicationData –SourceID HRApp.nsf

For ($i=0;$i –le $HD.count; ++I){

If ($HD[$i].CustomProps[‘Company’] –eq “Contoso Ltd.”){

$HD[$i].CustomProps[‘Company’] = “Contoso Inc.”

}

}

$HD | Add-SharePointItem –TargetMapping GenericList -TargetSharePointList HRAPP