Notes SharePoint Blog

Steve Walch's blog about his favorite migration tool and other things related to Lotus Notes migration projects

Category Archives: Content Types

Notes Migrator for SharePoint 6.1 Reviewers Guide

Notes Migrator for SharePoint 6.1 is a significant product release that pushes the product further in three important areas:  Design Migration, Content Migration and Pre-Migration Analysis.  This release will be “Generally Available” on the Quest web site in a few days.  If you were in the beta program you already have the final build (6.1.0.626).  Below is a high level list of this release’s most important new features.

Design Migration

Migrate Notes Views to SharePoint Views – This feature will allow you to select a Notes view and generate a similar view in any SharePoint list or library.  Because the mapping of columns in your view is intimately tied to the mapping and provisioning of data columns that occurs in your migration job, this new capability is also tied to your migration job.  Specifically, view migration is found on the new Advanced tab of your Target Data Definition.  You can design new views there and the views are provisioned when the migration job is run.  A nice side effect of this model is that you can run the same migration job against many new or existing lists or libraries.

clip_image001

clip_image002

Press “Import from Notes” and then select the Notes view you want to migrate.  The view migration wizard will then attempt to design an equivalent SharePoint view, mapping as many Notes columns as possible to existing SharePoint columns OR to new columns defined in your job’s target data definition.  As you might expect, there are a number of things that can go wrong with such an automated mapping.  The two most likely issues are (1) the Notes data item shown in the view had not been migrated to the SharePoint list yet or (2) the Notes view column is computed and the formula is too complicated for a tool to convert.  For issues like this, manual intervention is required and the migration wizard guides you through that.  In the View Columns step, it gives you a side by side view of the Notes and SharePoint columns and highlights the parts that it needs help with in red.  You can decide to manually map a Notes existing columns, define a new data column (which will be added to your migration job), or even specify a formula for a new computed column in SharePoint.  Similarly you can also specify the sort order, the grouping and the document selection rules, or you can just take the defaults. 

Content Type Generation – These feature takes the tool’s ability to migrate schema (select fields from a custom Notes application and provision a similar schema in a custom list) to a new level.  Now you can migrate your custom Notes application schema to SharePoint content types instead.  You can create new Content Type Definitions on the new Content Types tab of your Database or Technical Class records in the Migration Console.  You can design them from scratch or, more likely, you will generate the Content Type definitions from a Notes Form, from an existing migration job, or from an existing list that you have been working on.  (The last two options allow you to do your initial development and testing on a custom list and then transition to content types later.)

clip_image003

clip_image004

Once you have generated an initial Content Type Definition, you can further customize it, specifying the parent content type, the group, and the columns.  The columns editor looks like the Target Data Definition columns editor, but in this case you are defining Site Columns instead of List columns.  When you are ready to provision your new Content Type, the tool will try to find existing Site Columns that match your specification and will provision new ones if needed. 

clip_image005

clip_image006

New Column Provisioning Options – The ability to provision lists and libraries while migrating content has long been a popular feature.  This capability has been greatly expanded to allow provisioning a nearly complete list of SharePoint column options, such as default values and data validation.  You can even set columns to be read-only (something you can’t normally do in the SharePoint user interface).  Note that as before, the provisioning options only apply when the tool is first provisioning the columns; it does not upgrade existing columns.

clip_image007

Provision Calculated columns You can now define Calculated columns in your target data definition.  These will be provisioned in SharePoint when your migration jobs are run. This Microsoft documentation page explains the legal syntax for SharePoint formulas: 
http://msdn.microsoft.com/en-us/library/bb862071.aspx
.  You can also use our new built-in formula editor, which appears at several points in the product.

clip_image008

clip_image010

Provision Lookup Fields – Lookup fields can now be provisioned in SharePoint lists.  Previous versions of the tool allowed you to migrate to Lookup fields, but you first had to manually configure them in SharePoint. You can even configure lookups from lists in other sites in the same site collection (something you can’t normally do in the SharePoint user interface).

clip_image011


Content Migration

New Run Job options – During normal migration jobs, Notes Migrator for SharePoint first takes care of the provisioning steps (creating the list/library if needed, adding the appropriate content types to the list, adding any missing columns if needed, and creating views, setting the list/library permissions) and then migrates the content.  Now you can now choose to run just the provisioning bits without migrating the content.  This will be useful in cases where you want to review the resulting list schema and perhaps make changes to the list settings before migrating content.

clip_image013

clip_image015

Also note that the above screen shots show off the tool’s new Run Job button with the drop down menu of various modes of running the tool, such as importing data to and importing data from intermediate XML files.  Since this button is also available in the Migration Console, users can now leverage the intermediate file options from there (it was formerly available in the Designer Client only).  Similar functionality is also available in the tool menus and the bulk Migrate To SharePoint task in the Migration Console.

Migrate by Form Used – When selecting records from your Notes database, you can now elect to query records by form.  You can pick one or more Forms from the Notes database design or type them manually.  This will limit the records selected to include only those data records that were flagged with the forms you selected (i.e., where the “Form” item was set to one of those form names).

clip_image017

clip_image019

If you specify forms in this way, the Select Items and Columns dialog will also display the data items defined on your selected forms.  (Remember, however, that background agents, etc., may have also set data items on the Notes documents, so you may still need to look at the Sampled Items node to discover those.)

Improved Content Type Support in Migration Jobs – Notes Migrator for SharePoint already had pretty good support for dealing with content types while migrating content, but this release extends those capabilities and also makes it much easier to use.  The new Manage Content Types section on the first tab of the Target Data Definition allows you to push site content types into a new or existing SharePoint list.  Adding the content type to the list is a prerequisite to writing documents with those content types, so this new feature eliminates that manual step and make more automation possible. 

clip_image021

In addition, you can now associate each content type with one or more Notes forms.  If you do this, then the tool will automatically assign the content type for each migrated document without the need to do any explicit mappings.  (For more complex scenarios you can still explicitly map any piece Notes data, including the result of a formula evaluation, to a ContentType field.)

Note that this feature is completely independent of the ability to generate new Site Content Types, as described above under Design Migration, but you may often find yourself using the two in combination.

Normalize multi-valued items to multiple documents – It is common for Notes forms to implement detail records (the things that relational developers would have set up a one-many-relationship for) using multi-valued data fields arranged to look like a table, as shown below. Users would then fill in as many entries as the needed, making sure that the values from each multi-valued item lined up properly.

clip_image023

clip_image025

Now you can use Notes Migrator for SharePoint to extract the multi-valued items as separate records. To do this set the Multi-Value disposition option for the columns that you expect to contain arrays (ContactName, ContactTitle, and ContactPhone in the above example) to “Normalize”. This will cause NMSP to generate multiple SharePoint items (three in the above example) for the values in the columns designated for Normalization.

clip_image027

clip_image029

Note that if you also wanted “header” records you could first migrate those using a separate migration job. You could use lookup fields or some other mechanism to relate the “header” and “detail” columns. In the above example, Customer ID in the Contacts list is set up as a lookup field that references the Customers list (where Customer Name and Category are also stored).

Finally, you may encounter Notes forms that list out each item in separate rows, instead of using multi-valued items. NMSP can handle that case as well, but the migration team will need to do a little work with formulas to generate multi-valued columns to Normalize on.  For example, you could define a source data definition column with the formula “Product_1: Product_2: Product_3: Product_4” to generate a “Products” array.

clip_image031

Dynamic link tracking for URL columns – When migrating Notes data to SharePoint URL fields, you can now leverage the tool’s popular Link Tracking Service for those links (the same way you currently do for Doc Links in Rich Text Fields).  You do not need to do anything special to enable this.  Simply start migrating data items that store notes:// links (or formulas that generate notes:// links) and they will be converted to dynamic links that will ultimately point users to the migrated versions of those documents. 

As a reminder, the tool supports two input formats for Url fields.

  • <url> -  sets the url to be the display name in SharePoint
  • <url>, < name> -  sets the url and display name separately in SharePoint

Improvements in “Render With Form” function – This very popular feature, which allows you to extract the content of any custom Notes database (regardless of the complexity) so you can archive them as simple rich text documents in SharePoint, has been improved in a number of respects. Handling of dynamic subforms, computed fields, computed text, and keyword fields have been improved, resulting in even better looking rendered documents.

Provision Alternate Libraries – Users have often relied on the tool’s unique ability to migrate images and attachments to a separate location from the main documents being migrated.  For example, you might want to place all attachments in the Shared Documents or Site Assets document library.  Previously you would have had to provision these alternate libraries manually before running your migration job.  Now the tool provisions these automatically if needed.

clip_image032


Analysis / Migration Console

Capture Design Copies during Analysis – Now when you perform a Design Analysis on a set of databases you can elect to also create a local design copy.  For every database scanned, the tool will create a small copy of the database (design elements only, similar to a design template) on the local machine on which the design analysis is being performed.  The intent of this feature is to allow for consultants and other migration personnel to be able to view the full database designs even while they are disconnected from the production environment, which is particularly important on large analysis projects where in-depth manual design analysis is required.  The location of these databases is controlled by a setting on the Analysis tab of your Global Options dialog, and defaults to a folder in the tool’s <ProgramData> area.  Users can the easily open the Local Design Copy from any database view.

clip_image033 clip_image034

Classify by Last Used (All Replicas) – This enhancement expands the available options for automatically determining which Technical Class or Business class a databases belongs to.  Now you create a rule for recognizing class members based on when it was last used across all known replicas.  For example, you can create a class that groups all databases with a Last Used date greater than 356 days ago.

clip_image036

Import data into repository from CSV files – This enhancement allows users to read in records from a CSV file and update vales in certain Quest Repository database records.  The tool is available on the main Notes Migrator for SharePoint node.  First the user is prompted to select a CSV file and then a mapping dialog is displayed.  For each column in the CSV file, the user can choose to map it to one of the available database record properties.  Not all database properties can be imported from external data sources.  The intention here is that users who perform manual analysis/triage projects using spreadsheets or external tools can import that data back into the Migration Console.

This feature can also be used to add new database records into the repository (by Server and File Path, Replica ID, or Database Key).  The intention here is to allow users to import a list of databases to be analyzed or migrated.  Users would typically follow up such an import with a full analysis of those databases to populate the remaining database properties.

clip_image038


General

Performance and scalability for Migration Console – The database views have been re-architected to support 60,000+ databases at a time.  With a very large repository, users may experience a delay while starting the tool as all the records are loaded into memory.  After that, scrolling, sorting and filtering database views and opening additional views should be very fast.  Special protections have also been added to prevent you from running very large reports that are likely to crash the migration console.

New User/Group Mapping options – When performing user/group name mapping, the Output Translation option now allows you to further transform the name that results from your name lookup before submitting that name for resolution in SharePoint.  This may be useful when your environment requires specific name formats that are not immediately available in your mapping source.

Also, the Test User/Group Mapping tool now has a Validate in SharePoint button which will try to resolve the name that your configured mapping process produces so you can verify that it really works in SharePoint. This should make experimenting with and debugging various user mapping options a little easier for everyone.  Note that this capability is only available when using client-side user mapping (not when configuring server-side mapping in the Import Service).

clip_image039

Improved CBA/FBA support – Connections to SharePoint sites using Forms Based Authentication now automatically renew cookies as needed during long migration jobs and other operations.  The tool will routinely check the expiration time of the authentication tokens that it holds for the client and, if a token is due expire within a certain window, it will force a new authentication.  (The time limit will be 30 minutes, but this can be changed in your SharePoint Environment settings.)  Depending on your particular authentication system, this may appear to the user as a browser prompt forcing the user to re-authenticate.  In other cases, it may appear as a browser window that opens briefly and then closes again.

clip_image040

Windows Authentication using alternate account for Link Tracking Database One new connection option is available for connection to the Link Tracking Database.  You can now specify that you want to use Windows Authentication, but supply an account other than your own.

clip_image041

Bulk Editing of certain database / class / job properties – Expanding on the tool’s capability to select multiple databases and set properties in bulk, you can now set a number of additional properties in a large number of selected databases.  You can even set certain properties inside the migration jobs assigned to the selected databases.  Finally, you now have a similar set of options for Technical Classes and Business Classes as well.

Usability improvements A number of things have changed in the product to improve to make the tool easier to use, including rearrangement of dialogs and additions of menus.  More pop-up help icons and more context sensitive links to help topics have been added.  A completely rebuilt “Add/Remove Columns” dialog and the built-in documentation describing the 170 possible built in columns makes customizing views much easier.

clip_image043

clip_image045

Introducing the Notes Migrator for SharePoint 6.1 beta program

Notes Migrator for SharePoint 6.1 is a significant product release that pushes the product further in three important areas:  Design Migration, Content Migration and Pre-Migration Analysis. 

Design Migration

  • Migrate Notes Views to SharePoint Views
  • Content Type Generation
  • New Column Provisioning Options
  • Provision Calculated columns
  • Provision Lookup Fields

Content Migration

  • Migrate by Form Used
  • Improved Content Type Support in Migration Jobs
  • Normalize multi-valued items to multiple documents
  • Dynamic link tracking for URL columns
  • New Run Job options
  • Provision Alternate Libraries

Analysis / Migration Console

  • Capture Design Copies during Analysis
  • Classify by Last Used (All Replicas)
  • Import data into repository from CSV files

General

  • Performance and scalability for Migration Console
  • New User/Group Mapping options
  • Improved CBA/FBA support
  • Windows Authentication using alternate account for Link Tracking
  • Bulk Editing of certain database / class / job properties
  • Usability improvements

 

Once again, the beta will be managed on the new SharePoint for All community site.  If you would like to participate in the beta program, go to
http://communities.quest.com/groups/notes-migration-product-beta-group
.  Sign in with your Quest Community ID, or register to create a new one.  Then press the “Ask To Join This Group” button.

image

One of the site owners will review your request and will typically approve it the same day.  You will receive a notification and then get full access to technical content and (of course) the beta build itself.

Quest Support will not be able to help you with this version until it releases, so please use the group’s Discussion area for any questions, problems or suggestions.

Utilizing Content Types during a Notes to SharePoint migration (Part 2)

Part 1 of this article [link] describes how SharePoint Content Types might be useful when migrating multiple Notes “document types” to a single SharePoint List, Document Library, or InfoPath Forms Library.  Now we will take a look at how this can be accomplished using our tool, Notes Migrator for SharePoint.

First a recap of the Content Type features in the Notes Migrator for SharePoint documentation:

  • To assign the Content Type of a SharePoint item, simply add a Text field named “ContentType” and map the appropriate input data to it.
  • The ContentTypes property in a Source DataDefinition field indicates that the data field should only be migrated SharePoint for certain Content Types.  Leave this property blank to always write the field, regardless of content type.

The following example walks through the steps needed to create a SharePoint list using Content Types and then migrate Notes content to it:

Our example Notes database is a fairly typical Notes document library except that it has three types of documents in it:  Tech Notes, Code Samples, and FAQ Documents.  The “document type” is really controlled via a DocType field (not separate forms as described in Part 1).  All documents contain standard fields such as “Subject”, “Category”, and “Product”.  Code Sample documents contain an extra “Language” field and FAQ Documents contain “FAQ Type” fields.

image

On our SharePoint site we created a corresponding List with three content types similar to the ones we had in Notes:

  • Content type “Tech Note” has columns “Title”, “Product”, “Details”, “Url” (a “link” field).
  • Content type “Sample” inherits from “Tech Note” and adds column “Language” (a choice field).
  • Content type “FAQ” inherits from “Tech Note” and adds column “FAQType” (a choice field).

Note: I intentionally designed the Notes “FAQType” field to have a slightly set of choices than the WSS “FAQType” field so we can demo data massaging.

In the following screen shots, notice that certain columns only apply to certain Content Types:

image  image

 

For the migration job itself, I selected all the data fields, including the DocType field as well as fields that were specific to certain document types, in my Source Data Definition.  Nothing unusual here, except that I did a little “data massaging” along the way:

  • The “Product” column is really the Categories item with an alias.
  • The “FAQType” column is a Formula column that massages the data during migration: 
    @If(FAQType=”How To” | FAQType=”Problem”;”Solutions”;FAQType)
  • The “OnlineLink” column is a Formula column that computes the URL to the document on the Proposion web site.

image

In our Target Data Definition, we added a SharePoint field called “ContentType”.  We can map any source column we want to this field, and the Content Type for each new document will be set accordingly.  In our case, of course, we will map the DocType column to this field.

image

For the “Language” and “FAQType” fields, which are only for certain Content Types, we specified the content type in the ContentTypes property of the Target Data Definition field definition.

image 

The result of running this migration job is a SharePoint List populated with mixed types of content:

image

Utilizing Content Types during a Notes to SharePoint migration – Part 1

Content Types are a very powerful way to express the concept of “document types” or “business objects” in SharePoint. 

In the Notes world, it is quite common to design an application that has multiple types of documents in it.  Even though Notes databases are unstructured and (by design) lack any type of schema, good Notes developers usually adopt certain patterns and practices that impose some order in their applications and usually this includes establishing distinct, meaningful document types.

From a development perspective, this is largely driven by the different Forms used to create Notes documents.  A great example of this is a standard Notes mail database, which has Memos, Tasks and Calendar Entries.  If you want a business application example, think of Customers, Customer Contacts, and Sales Reps in a CRM database.  Each of these “document types” has different fields in it and each is created with a different Form. 

image

While Notes Forms has several other uses (for example, to display a pop-up dialog), the Form used to a create a document becomes the de facto “document type” in most cases.  An application may contain one or more Views or Folders for each document type (for example “All Tasks by Priority” or “Open Tasks”).  But it is also common to design a View or Folder that shows multiple document types together (for example showing Customers and Customer Contacts together in the same view).

A common variation on the above pattern is to use different forms to express extended document types (what object oriented developers would call “sub-classes”).   An example of this would be an application that had both Customers and Government Customers.  While a Government Customer is a type of Customer, it has additional fields and may have additional data validation rules, different security, etc.  You could easily imagine a View that shows “all customers” together without making any distinction, but when you opened a Government Customer record you would see something different than if you opened a “plain” Customer record.

The notion of defining different document types is not limited to Notes applications.  QuickPlace sites have several different default “Page Types” and users can create their own custom Page Types with additional fields.  Similarly Domino.Doc libraries can be extended with both custom Document Types and custom Binder Types.

So how do these concepts translate to the SharePoint world and how do you you deal with them when migrating?

When migrating a Notes application, a QuickPlace site or a Domino.Doc library to SharePoint, developers typically do one of three things.  Note that each of the following choices apply equally well whether you are migrating to a SharePoint List, Document Library, or an InfoPath Forms Library:

  1. Split different document types into a different Lists.  You could easily run one migration job that moved all Customer records to one list and another job that moved all Sales Rep records to a different List in the same SharePoint site.  This would be a particularly good idea if, for example, you wanted Customers to have a “Rep” field that was a Lookup field from the Sales Rep list.  It is less clear, however, that it would be good to split up Customers and Government Customers this way as you probably want them to stay together.  Notes Migrator for SharePoint allows you to select records by View or by Formula; if you can not find a View that selects the documents you want you can use a Formula such as: FORM = ‘GovernmentContact’
  2. Merge different document types into a single uniform List schema.  For example, you could migrate all Customers to a single Customers list and discard the extra fields that was in Government Customers (a “least common denominator” approach).  Or you could include all the “government” fields in your new Customer definition and just leave these blank for the records they don’t apply to (a “grab everything” approach).  You might even add a new “Customer Type” field that recorded whether or not it was a Government Customer in Notes.
  3. Use Content Types.  The pattern of using Forms to express document types in Notes applications maps almost perfectly to SharePoint “Content Types”.

image

There is a lot of information on the web about Content Types.  I like Andrew May’s blog [link].  The Microsoft SDK documentation [link], which can be pretty intimidating to read, introduces Content Types this way:

Content types, a core concept used throughout the functionality and services offered in Windows SharePoint Services 3.0, are designed to help users organize their SharePoint content in a more meaningful way. A content type is a reusable collection of settings you want to apply to a certain category of content. Content types enable you to manage the metadata and behaviors of a document or item type in a centralized, reusable way.

One of the reasons Content Types seem so intimidating to new SharePoint developers is that they are used for so many things.  Not only are they used to express which document types contain which fields (the important part for people migrating content), they can also be used for the following:

  • Custom user interfaces
  • Templates for creating new documents
  • Workflow rules
  • Microsoft Office integration
  • Inheritance from “base” Content Types
  • Reuse across multiple lists in a SharePoint site

The good news is that using Content Types for simple things (i.e., defining multiple structured document types in a single list) is actually pretty simple.  In spite of what some of the literature implies, you do not need to be a developer or create features or even use XML to create document types.  I believe that as people come to understand them better, they will become more widely used.

image

Notes Migrator for SharePoint has the ability to set content types in migrated documents based on the Form that was used in Notes, or whatever other criteria you want to use.  Part 2 of this article will discuss how we make that happen and will include a working example.

Follow

Get every new post delivered to your Inbox.