This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

Speed of copy from SP2007 to SPO is too slow

We just copied about 350MB of content from SharePoint 2007 to SharePoint Online and it took about 1.5 hours.

I read about ​the SharePoint Migration API here: www.metalogix.com/.../speed-matters-using-the-azure-sharepoint-online-migration-pipeline

Is my understanding this is part of the product. Where is the "new option within the user interface". We have Content Matrix v.8.1.0.7

Unsuported: .aspx - does this mean custom views do not come over. They are aspx files.

 

Thank you

Jose Taboada

NYC Dept. of Education

  • from 2010 to SharePoint online is a very slow also. Part of the reason is you have to create a transformation PowerShell script or MLS package like I did. This converts the classic authentication users to claims. If you're users Sam Account Names, don't map to their email address, you have to include that in the transformation also. I've create an entire ETL process. From Active Directory get an array of users once you have your users, you append the claims ID and possible the Email address to an xml file. Add this file to the C:\users\yourlogin\AppData\Roaming\Content Matrix SharePoint Edition folder if you use an MLS. file. Metalogix support staff can give your the PowerShell to create the MLS but you will have to do everything else in the ETL process. Using AZURE folders with your own Azzure ID helps speed up the migration but nothing is a silver bullet but upping the timeouts in the settings config file and hurry up and wait.

  • # Loads Import CSV file containing source and target users and builds out the UserMappings.mls file used by Content Matrix SharePoint Edition

    # Author: Jay Dave

    # Metalogix 2015

    # CSV file with source and target user names

    # Example ImportUserMapping CSV:

    # SourceUser,TargetUser

    # DOMAIN\user1,i:0#.f|membership|user1@yourSPOTenant.onmicrosoft.com

    # [Yogi] - D0001 - Added a line to trim source/target users read from CSV - prior to write it to mls

    ##############################################################################

    cls

    write-host "Convert User Mapping CSV into UserMappings.mls for Content Matrix SharePoint Edition"

    #Import CSV filename

    $csvFile = 'C:\Users\jralston_admin\Desktop\Metalogixmappings\Import.csv'

    #Output mapping file

    $outFile = "UserMappings.mls"

    if (!(test-path $csvFile))

    {

    write-warning "Error: Import user mapping CSV file does not exist [$csvFile]"

    break

    }

    else

    {

    write-host "Importing CSV [$csvFile] ..."

    $csv = Import-Csv -Header SourceUser, TargetUser $csvFile

    cls

    $cEntries = $csv.Length

    if($cEntries -eq 0)

    {

    write-host "Warning - no entries in [$csvFile] file."

    break

    }

    <# if($csv.SourceUser -eq $null)

    {

    write-host "Warning - SourceUser not defined as header in [$csvFile] file."

    break

    }

    if($csv.TargetUser -eq $null)

    {

    write-host "Warning - TargetUser not defined as header in [$csvFile] file."

    break

    }

    #>

    if($cEntries -eq $null)

    {

    # case when theres only 1 entry, doesnt seem to return a length of 1

    $cEntries = 1

    }

    write-output "<XmlableSet>" | Out-File $outfile

    write-host "Found $cEntries entries in the CSV file"

    Write-host "Processing $cEntries entries from [$csvFile]"

    # Write-Progress "Processing $cEntries entries from [$csvFile]"

    #if($cEntries -ne 0)

    # {

    $csv | % {

    $sourceUser = $_."SourceUser"

    $targetUser = $_."TargetUser"

    $sourceUser = $sourceUser.Trim() # D0001

    $targetUser = $targetUser.Trim() # D0001

    # Write-Progress "User" -status "[$sourceUser] -> [$targetUser]" -id 2

    #Write-Progress "Running" -status $status -percentComplete $percent -id 1

     

    Write-Output "<XmlableItem Type=`"Metalogix.Data.Mapping.ListSummaryItem, Metalogix.Explorer, Version=8.1.0.3, Culture=neutral, PublicKeyToken=3b240fac3e39fc03`"><ListSummaryItem Group=`"default`"><CustomColumns><XmlableTable /></CustomColumns><Source><ListPickerItem Group=`"`" Target=`"$sourceUser`" TargetType=`"SPUser`"><CustomColumns><XmlableTable /></CustomColumns><Tag IsNew=`"False`" Type=`"Metalogix.SharePoint.SPUser, Metalogix.SharePoint, Version=8.5.0.4, Culture=neutral, PublicKeyToken=3b240fac3e39fc03`"><User LoginName=`"$sourceUser`" /></Tag></ListPickerItem></Source><Target><ListPickerItem Group=`"`" Target=`"$targetUser`" TargetType=`"SPUser`"><CustomColumns><XmlableTable /></CustomColumns><Tag IsNew=`"False`" Type=`"Metalogix.SharePoint.SPUser, Metalogix.SharePoint, Version=8.1.0.3, Culture=neutral, PublicKeyToken=3b240fac3e39fc03`"><User LoginName=`"$targetUser`" /></Tag></ListPickerItem></Target></ListSummaryItem></XmlableItem>" | Out-File $outFile -Append

    }

    #}

    write-output "</XmlableSet>" | Out-File $outfile -Append

    }

    write-host ""

    write-host "Completed"

     

  • ​I did this for a project server migration from SharePoint 2010 to SharePoint online. Run this script first to get your users and append the claims ID. After which run the script about with this as the input file.

     

    ## create import.txt "copy screen contents to import.txt file with select all remove bottom line"

    ##before running Metalogix Script posted first get your users from AD and append claims, rename this file from .txt to .csv without opening it.

     

    Get-Module ActiveDirectory

    cls

    $searchOU = 'OU=Project Server,OU=SharePoint,OU=All Groups,DC=dhs,DC=sdc,DC=pvt'

    $user = @()

    $baddata = @()

    $data = @()

    $users = get-adgroup -Filter 'GroupCategory -eq "Security"' -SearchBase $searchOU | Get-ADGroupMember -Recursive

    Function Remove-File {

    if(Test-Path -Path "C:\Users\or0213535\Desktop\ProjectServerWorkingfolder\import.txt")

    {Remove-Item "C:\Users\or0213535\Desktop\ProjectServerWorkingfolder\import.txt"}

    }

    Remove-File

     

    foreach($user in $users)

    {

    If($user.name -notlike "OR*" -and $user.name -notlike "P*" -and $user.name -notlike"xts*")

    {[array]$baddata += $user.name}

    $user.Name | Out-File -Append C:\Users\or0213535\Desktop\ProjectServerWorkingfolder\import.txt

    [array]$data = Get-Content C:\Users\or0213535\Desktop\ProjectServerWorkingfolder\import.txt

    }

    $cleandata = $data | Where {$baddata -NotContains $_}

    ###########################Remove Test Users or any other errors in source file. The original import.txt should only have P# OR# and XTS# Numbers.

    ## now you have your source file create import file for MLS creation.

    Remove-File

    foreach($user in $cleandata)

    {

    ## Concantenate values. for a properly formated Import.txt file. You will rename this to Import.csv on the server to create the MLS XML package using PS_GenerateUserMappingMlsFromCSV_Working_v2 in the

    $U = get-aduser $user -Properties SamAccountName, UserPrincipalName

    "dhs\" + $u.SamAccountName + "," +"i:0#.f|membership|" + $u.UserPrincipalName | Out-File -Append C:\Users\or0213535\Desktop\ProjectServerWorkingfolder\import.txt

    }