Comparing SharePoint Migration Tools

Microsoft SharePoint periodically releases newer versions with advanced features. There is value-add in every release, making migrating to newer versions beneficial for customers. The migration process can be executed using a manual approach or with a tool.  in case a tool is preferred, it is important to note that there  are several tools available today that support SharePoint migration from older to newer versions. Please note that the migration process is difficult, especially if you have an older version and want to target SharePoint 2013 or SharePoint 2016.

Hence, if you directly jump to SharePoint 2013 or SharePoint 2016, I strongly suggest that you would consider using a tool. This will ease the steps involved and avoid intermediate hop environments.

In this blog, I will discuss the salient features of some popular tools.

Sharegate

Sharegate has a simple user interface suitable for any IT or business user  who would like to migrate their content. The tool is efficient, and  if the content structure is not complicated one can move site, contents, users or permissions easily.

SharePoint is a content management system, hence we consider the amount of data transferred from source to target environment. Based on this, I believe Sharegate is the ideal tool for large data, because the license permits unlimited data migration. This will be useful for a test run and for migration of content to multiple environments like staging and production. The tool has license variance for single user and multiple users. Sharegate has support for migrating Nintex workflows and Nintex forms, which have  a different license value.

Sharegate’s support structure is appreciated. It has good online documentation, with video tutorials. For a specific query, one can send an email to the support team who typically respond within 24 hours. The support team will be available for an online meeting session to interact with the technical team.

The challenging factor is, the tool has limited functionality to schedule and execute a delta migration. Using Sharegate, it is difficult to transform the content structure between source and target environments. This is applicable for migrating user’s Mysite and the profile.

Metalogix

As with any other migration tool, Metalogix is used to migrate sites and content to newer versions of SharePoint – on-premise and online. The tool has extensive features to set up new site infrastructure and reorganize  content during migration. Metalogix has a rich interface with several features and settings enabled for migration from different sources.

We always welcome a job completed during the idle time or off business hours. Using Metalogix, we can schedule a series of jobs, hence the content is moved to target the environment on a convenient time thereby reducing impact while saving time. Metalogix site has a `help’ section with helpful documentation on migration and tool support. The awesome support team from Metalogix will be available for any technical support.

From another standpoint, Metalogix license is based on the amount of data being migrated. Hence, it makes you rethink your decision, especially if you have to migrate a huge content base with no customization. The feature loaded interface, makes it complicated for a business user and invites a technical person with good migration experience.

Other Tools

There are several other tools that help with migrating content to SharePoint on-premise or online.

AvePoint is one of the most commonly used among SharePoint customers.  This tool comes with DocAve migrators which supports all stages of migration such as pre-analysis reports, planning, migration and reporting. DocAve content managers along with migrators will make an easy restructuring of the content, on-the-fly.

Quest is a migration tool from Dell, which comes with two variances, i.e. Migration Suite for SharePoint and Migrator for Notes to SharePoint. Migration suite for SharePoint will support migration from previous versions and from some cloud storage, whereas,  Migrator for Notes has the features to migrate from Lotus Notes to SharePoint and Office 365.

Comparison Matrix

This link contains a comparison matrix of some popular tools used for SharePoint migration.

https://collab365.community/wp-content/uploads/2014/12/SharePoint_Comparison_Matrix_Migration_Tools_v1_7.xlsx

Conclusion

All the tools analyzed above are designed for SharePoint migration, which avoid content database attach method and multiple hop environments. Each tool has a set of distinct features, which makes it different. This comparison makes it easier to choose the tool, based on relevancy.

What is SharePoint Sprawl?

Introduction

SharePoint Sprawl explains a situation where an excessive number of unattended or rarely used SharePoint sites and content, farm. A perusal of such sites will have outdated information or unknown ownership. SharePoint sprawl happens when an organization implements content management in the enterprise without rethinking it’s usage or plan structure.

Generally, a SharePoint site in an organization consists of sites, lists and document libraries, which can get out of control if suitable governance is not applied.

Why SharePoint sprawl is necessary

  • A site having several non-managed sub-sites will complicate the process of identifying content, by screening through every site. This will lead to more resources as a result of storage of duplicate documents in multiple sites. For example, project documents and templates uploaded in every project site.
  • A migration to future versions of SharePoint becomes a difficult task when duplicate sites or unused sites and content exist in the source platform.

How to avoid SharePoint Sprawl

  • Ensure duplicate sites are not created – Apply proper governance in the SharePoint farm to restrict permission to create new sites. Create an approval process, requesting user for justification of their site request, and there-by confirm none of the existing sites can be utilized.
  • Implement a strong governance plan – Governance can apply permission based on organization rules to create, manage and archive SharePoint sites. This will enforce a set of guidelines while creating new projects and allocation of team members permissions.

SharePoint Files – What happens to old/unused files

In many organizations, SharePoint is used as a source for file share. Migration phase in SharePoint is when documents in SharePoint will grow, if not managed properly. Once all documents from a source environment is migrated to target; those files which are never relevant in newer environment will become idle. During migration all unused file share sources need to be replaced.

SharePoint Sprawl – Implementations in SharePoint 2013

Organize documents in SharePoint and configure into multiple views, tagged with metadata. Each view in the library is considered as a virtual folder displaying content relevant to the view. With SharePoint 2013 expanded enterprise search capability and new features of SQL Server 2008 R2, there is a way forward for SharePoint to store content virtually in CMS.

The new feature Remote Blob Storage(RBS) in SQL Server 2008 R2 enables the rerouting of original file types to peripheral storage (save into Windows file system) rather than SQL database storage. When these large volume files are routed peripheral storage via RBS, they appear to be in SharePoint for user’s view (in a way, secured and administered from SharePoint) but they reside beside the database, and it is a Windows file system. The SQL Server will have reference to the file in physical location, hence make the process cheaper and more efficient than SQL storage. This will lead to efficient best practices with regard to content management and put an end to SharePoint sprawl.

Customizing Content Query Web Part and ItemStyle

Content Query Webpart in SharePoint is a feature of Enterprise Content Management functionality. The Web Part helps to aggregate and display list items within a site collection. Content Query Web Part also has caching and query optimization capability for SPSiteDataQuery. The Content Query Web Part can display items such as any ‘list’ or ‘document library’ within a root site or its sub-sites.

A Content Query Web Part can be used to query items based on three options:

  • Show items from all sites in the site collection
  • Show items from the following site and all sub-sites
  • Show items from the following list

In this blog, I will explain the process to save items within a SharePoint List, in the root site, and display them in sub-sites based on a column filter and customizing ItemStyle.

Create Calendar Events List

For my requirement, a Calendar list for Departments root site is used to save all events. I have chosen the root site to save the calendar in order to have a common design and storage. The sub-sites for each department holds its documents and manages permissions. A home page should display upcoming events of the current department.

I have added two additional columns to default calendar list in SharePoint site:

  1. Community – Choice field to select a department for the event
  2. EventStartTime – Calculated field to copy ‘Start Time’ value

Add Content Query Web Part

This is an out-of-the-box Web Part available to all SharePoint pages under category ‘Content Rollup’. Insert the Web Part into the department home page:

Select the option to display items from a specific list and browse to select the Calendar list:

Configure filter and sort order for the web part and save:

On the home page, the CQWP will display upcoming events of the current department.

Customize ItemStyle XSLT

Content Query Webpart uses ItemStyle.xsl file located in sitecollection Style Library. I have created a new template named “EventsDisplay” within ItemStyle.xsl file.

<xsl:template name="EventsDisplay" match="Row[@Style='EventsDisplay']" mode="itemstyle"> </xsl:template>

Custom header text and formatting are added to xsl file:

<div class="events-header">
 <xsl:if test="count(preceding-sibling::*)=0">
 <h3> <span class="events-header-text">Upcoming Events</span> <a class="events-header-link" href="/departments/Lists/UpcomingEvents">Visit Calendar <span class="glyphicon glyphicon-arrow-right" aria-hidden="true"></span></a> </h3>
 </xsl:if>
 </div>

To display fields in content query webpart add an xsl:value-of attribute:

<xsl:value-of select="ddwrt:FormatDate(string(@EventDate), 1033, 3)" />
 <xsl:value-of select="@Title" />

The webpart displays its content in table format:

<table class="table events-table" style="margin-bottom:0px;">
 <xsl:if test="count(preceding-sibling::*)=0">
 <tr>
 <td width="25%" class="calevent_date" valign="top" style="border-top:1px solid #ddd;border-left:1px solid #ddd; border-right:1px solid #ddd; background-color:#F5F5F5;padding:0px 8px;">
 <div class="item"><b>Date</b></div>
 </td>
 <td width="75%" class="calevent_date" valign="top" style="border-top:1px solid #ddd; border-right:1px solid #ddd; background-color:#F5F5F5;padding:0px 8px;">
 <div class="item"><b>Event</b></div>
 </td>
 </tr>
 </xsl:if>
 <tr>
 <td class="calevent_td" width="25%" valign="top" style="padding:0px 8px;">
 <div class="item">
 <xsl:value-of select="ddwrt:FormatDate(string(@EventDate), 1033, 3)" />
 </div>
 </td>
 <td class="calevent_td" width="75%" valign="top" style="padding:0px 8px;">
 <div class="item">
 <xsl:value-of select="@Title" />
 </div>
 </td>
 </tr>
 </table>

Conclusion

Content Query Webpart in SharePoint is a very handy out-of-the-box functionality to display list items within a site collection, by avoiding customization. This Web Part does not belong to search category hence does not require crawl to view results. The Web Part’s display can be customized extensively with the help of XSL files.

Introduction to REST API with OData Operators in SharePoint 2013

What is REST API?

REpresentational State Transfer Application Program Interface (REST API)  is an architectural style which consists of a set of constraints applied to components, connectors and data elements within a system. REST-based systems typically communicate over HTTP, using  verbs such as GET, POST, PUT and DELETE.

SharePoint 2013 supports REST service which helps in executions similar to Client Object Model scripts. Using REST API we can interact remotely with SharePoint by using any technology of our choice that supports REST web service requests. This empowers developers to perform Create, Read, Update and Delete (CRUD) operations from their solutions, client applications or SharePoint apps using REST and Open Data Protocol (OData).

How REST API works in SharePoint 2013

SharePoint 2013 uses two different approaches to authorize user access to the site with REST. Firstly, when you use a remotely hosted application, an OAuth token with Microsoft Access Control Service is used as secure token server. Another alternative approach is used while accessing from client side scripting where the logged-in user’s permission is sufficient for authentication. SharePoint REST helps authenticated users to directly interact with SharePoint objects.

SharePoint resources are accessed using a RESTful HTTP request using Open Data Protocol (OData) which resulta from client-object model API. Consider the below example:

http://%3cserver%3e/site/_api/lists/getbytitle(‘listname’)

The client.svc web service in SharePoint handles this HTTP request and returns the response in JSON format. A client application handling this request can parse the response.

How to Construct RESTful URLs to access SharePoint resources

REST service always uses the main entry point to SharePoint as the site collection and the site of the specified context. The site collection is accessed using the below url:

http://<server>/site/_api/site

And, to access a sub-site you can generate url as:

http://%3cserver%3e/site/_api/site

where <server> represents SharePoint server name and site represents path of the site

One can access the SharePoint data with below REST endpoints; prefix the endpoint with url http://<server>/site/_api/ to construct a fully qualified REST url.

URL endpoint HTTP method Result
web/title GET Get the list title
lists GET Get all lists from a site
lists/getbytitle(‘listname’) GET Get a specified list’s metadata
lists/getbytitle(‘listname’)/items GET Get items from a specified list
lists/getbytitle(‘listname’)?select=Title GET Get a specific property of an item
lists POST Creates a list
lists/getbytitle(‘listname’)/items POST Add an item to a specific list

Open Data (OData) Standard Protocol

OData is a Standard protocol or a set of rules for creating RESTful calls. You can use OData system query options to control the result.

Criteria Result
$select Sets the field names for returned result
$filter Sets the members of a collection
$top Sets the number of items to return
$skip Let you skip first n items from the result
$orderby Let you sort result by a specific field

Some examples on how to use OData operators in RESTful calls:

http://<server>/site/_api/web/lists/getbytitle(‘Employee’)/items$top=10

This REST endpoint URL will return top 10 employees from the list ‘Employee’

http://<server>/site/_api/web/lists/getbytitle(‘Employee’)/items$select=FirstName,LastName,Email&$top=5

This url will have a response of top 5 employees from the list and the result will consists of only three fields from the list namely; FirstName, LastName and Email.

OData Operators

The query section of OData URI can be used to filter data in SharePoint REST service.

Operator Description
Logical Operators
Eq Equal
Ne Not equal
Gt Greater than
Ge Greater than or equal
Lt Less than
Le Less than or equal
And Logical and
Or Logical or
Not Logical negation
String comparison
startsWith Starts with a specified text
endsWith Ends with a specified text
replace Replace a string
tolower Convert to lower case
toupper Convert to upper case
trim Removes white spaces

Few examples of getting SharePoint data using OData operators

http://<server>/site/_api/web/lists/getbytitle(‘Employee’)/items$select=FirstName,LastName,Email&$orderby=EmpID asc

http://<server>/site/_api/web/lists/getbytitle(‘Employee’)/items$orderby=EmpID asc&$filter=FirstName eq ‘John’

 Conclusion

SharePoint 2013 with REST interface is extensive and powerful enough to execute most of the operations for web and app developers. We have looked at the key ways to integrate SharePoint to other applications using REST API interface, but there are several other possibilities. The SharePoint 2013 SDK consists of a huge collection of resources for REST based development, which can be a reference.