Michael Hofer

Michael Hofer
14.02.2012
0 Kommentar(e)

.SharePoint Migration gehört zum Daily Business, aber diese war doch etwas speziell: Es sollten einzelne Listen und Bibliotheken von SharePoint 2007 auf 2010 migriert werden, darunter ein Wiki mit Bildern und Listen-WebParts auf den Seiten - und das Ganze auch noch in eine bestehende SharePoint 2010 Site. Wie das ganz ohne zusätzliches Tool geht zeigt dieser Beitrag

Ausgangslage

Der Kunde hat ein bestehendes SharePoint 2007 Wiki mit mehreren hundert Seiten auf denen ingesamt fast 1000 Bilder enthalten sind. Einige Wiki-Seiten beinhalten auch Listen-Webparts, welche Listen respektive Bilbiotheken anzeigen, die auf derselben Site verwaltet werden.

Anforderungen

Das SharePoint 2010 Wiki inklusive alle abhängigen Listen und Bibliotheken soll
  • nach SharePoint 2010 migriert werden,
  • ohne zusätzliche 3rdParty-Migrationstools, maximal mit PowerShell-Unterstützung,
  • mit allen Versionen, Berechtigungen, Autoren-Informationen usw.,
  • In eine besehende SharePoint Site aufgenommen werden, die relativ zur Site Collection in einem anderen Pfad liegt

Analyse / Findings

Die Migration selber ist sehr einfach und ohne Probleme: Die Site Collection, welche das Wiki enthält in eine separate Content-Datenbank verschieben, diese am 2010er System anhängen und mittels Mount-SPContentDatabase migrieren lassen.

Nun sind alle Listen und Bilbiotheken unter SharePoint 2010 verfügbar in einer eigenen Site Collection und es geht einzig und allein darum, diese in die bestehende SharePoint Site zu verschieben. Hierfür habe ich verschiedene Wege genommen, welche allerdings alle auf die eine oder andere Weise nicht zum Ziel geführt haben:
  • Backup/Restore der Site: Es wurde ein Bacjkup der Site erstellt und unterhalb der Ziel-Site wieder hergestellt. Allerdings können die Listen & Bilbiotheken mit Bordmitteln nicht über die Site-Grenzen verschoben werden. Bewegen der einzelnen Elemente über den SiteManager geht nur für Dokumente und ist nicht ganbar, da die Bilder in einer tiefen Verzeichnisstruktur in der Bilbiothek hinterlegt sind und diese zuerst manuell vorängig angelegt werden müsste - ganz zu schweigen davon, dass die Bilder dann je Ordner verschoben werden müssten. Zudem werden die Listen-WebParts auf den Wiki-Seiten nicht angzeigt wenn man die Seiten verschieben, da diese auf eine andere WebID zeigen.
  • Backup/Restore der einzelnen Bilbiotheken und Listen: Dies schien der logische Weg zu sein. Es wurden ein Backup aller voneinander abhängigen Listen und Bilbiotheken erstellt und diese auf der Ziel-Site wieder hergsestellt. Hat aber auch nicht funktioniert, da die Pfade zu den Bildern auf den Wiki-Seiten nach wie vor den (Site-Collection-relativen) Quell-Pfad aufweisen. Dasselbe gilt für die WebParts.
Keiner dieser beiden out-of-the-box Wege schien zum Ziel zu führen. SharePoint bietet sehr begrenzte Out-of-the-box Möglichkeiten um Listen-Elemente respektive Dokumente zu verschieben, insbesondere dann, wenn es sich auch noch um Web-Seiten handelt, die Links enthalten können. Natürlich gibt es 3rdParty Tools hierfür (ein sehr starkes sind übrigens die noch recht unbekannten ShareGate Tools), aber wie gesagt war die Idee, mit out-of-the-box Mitteln zu Arbeiten.

Lösung

Wenn man sie kennt, dann ist die Lösung wie immer sehr einfach:
  • Site Collection auf SharePoint 2010 migrieren
  • In migrierter Site Collection
    • Gewünschte, voneinander abhängige Listen & Bibliotheken exportieren/backupen
    • Site-Collection-Relative Ziel-URL-Struktur erstellen und
    • Listen und Bibliotheken wieder importieren/restoren - jetzt haben alle Elemente die richtigen Site-Collection-relativenURLs
    • Listen und Bibliotheken noch einmal exportieren/backupen
  • In Ziel-Site
    • Listen und Bibliotheken wieder importieren/restoren - jetzt haben alle Elemente die URLs
Der wichtige Zwischenschritt ist also der, dass man sicherstellt, dass alle Elemente den richtigen Site-Collection-Relativen URL haben, den dieser wird beim exportieren/importieren mitgegeben. So werden auch in der Ziel-Site alle Bilder und sogar Listen-WebParts richtig angzeigt und das Wiki funktioniert wie bisher.

Resourcen
Folgende sehr einfach PowerShell Scripts habe ich für die Automatisierung des Migrationsvorgangs verwendet:


Add-PsSnapIn Microsoft.SharePoint.PowerShell -ErrorAction SilentlyContinue

Mount-SPContentDatabase WSS_Content_MyTools -WebApplication http://<MyMigrationWebApp> -ClearChangeLog -UpdateUserExperience

## To be executed on the migration server
$SourceBaseUrl = "http://<MyMigrationWebApp>/sites/MyTools"
$SourcePath = "C:\1stQuad\MyToolsMigration\SpBackups"

Get-SPWeb $SourceBaseUrl | export-spweb -Path "$SourcePath\Site\MyTools.cmp" -IncludeUserSecurity -IncludeVersions All

New-SPWeb "$SourceBaseUrl/Sub1" -Template STS#0
New-SPWeb "$SourceBaseUrl/Sub1/Sub2" -Template STS#0
New-SPWeb "$SourceBaseUrl/Sub1/Sub2/Sub3" -Template STS#0

Import-SPWeb "$SourceBaseUrl/Sub1/Sub2/Sub3" -Path  "$SourcePath\Site\MyTools.cmp" -IncludeUserCustomAction All -IncludeUserSecurity

Export-SPWeb "$SourceBaseUrl/Sub1/Sub2/Sub3" -Path  "$SourcePath\Lists\MyTools-My Wiki.cmp" -ItemUrl "My Wiki" -IncludeUserSecurity -IncludeVersions All
Export-SPWeb "$SourceBaseUrl/Sub1/Sub2/Sub3" -Path  "$SourcePath\Lists\MyTools-Wiki Images.cmp" -ItemUrl "Wiki Images" -IncludeUserSecurity -IncludeVersions All
Export-SPWeb "$SourceBaseUrl/Sub1/Sub2/Sub3" -Path  "$SourcePath\Lists\MyTools-Wiki Documents.cmp" -ItemUrl "Wiki Documents" -IncludeUserSecurity -IncludeVersions All
Export-SPWeb "$SourceBaseUrl/Sub1/Sub2/Sub3" -Path  "$SourcePath\Lists\MyTools-Lists-Wiki Discussion.cmp" -ItemUrl "Lists/Wiki Discussion" -IncludeUserSecurity -IncludeVersions All

@'
# On the target server
$TargetBaseUrl = "http://<MyProductionWebApp>/sites/psn/Sub1/Sub2/Sub3"
$TargetPath = "C:\1stQuad\MyToolsMigration\SpBackups"

Import-SPWeb "$SourceBaseUrl" -Path  "$SourcePath\Lists\MyTools-Lists-Wiki Discussion.cmp" -IncludeUserCustomAction All -IncludeUserSecurity -Force
Import-SPWeb "$SourceBaseUrl" -Path  "$SourcePath\Lists\MyTools-Wiki Documents.cmp" -IncludeUserCustomAction All -IncludeUserSecurity -Force
Import-SPWeb "$SourceBaseUrl" -Path  "$SourcePath\Lists\MyTools-Wiki Images.cmp" -IncludeUserCustomAction All -IncludeUserSecurity -Force
Import-SPWeb "$SourceBaseUrl" -Path  "$SourcePath\Lists\MyTools-My Wiki.cmp" -IncludeUserCustomAction All -IncludeUserSecurity -Force

'@

Kommentar hinterlassen




Is three < than three? (true/false)

Kommentar(e)

Noch keine Kommentare.