SharePoint Library
SharePoint Online, the document libraries behind Microsoft Teams, and SharePoint on-premises. Given as the library's URL.
OneDrive
A user's OneDrive for Business, given as the user's UPN — their sign-in address — and an optional folder inside it.
FileShare
A folder on a file server or a local drive of the SMART Migration server, given as a UNC path or a drive.
File List CSV
A CSV file in Nextcloud Files listing the files to migrate, from any number of the sources above. Given as the file's link.
Dynamic BI data query
The files a Power BI DAX query or a SQL WHERE clause picks from the BI data, across every source Discovery has recorded. Under development.
A whole source, or one folder in it
Section titled “A whole source, or one folder in it”Every kind of source can be read whole or from one folder down: a job takes a whole document library, a whole OneDrive or a whole share, or just one folder inside it — with that folder's subfolders while Include Subfolders is on.
Source Type | The whole source | One folder in it |
|---|---|---|
SharePoint Library | The library's URL in Source URL: https://mytenant.sharepoint.com/sites/S1/LibA | The folder after the library: https://mytenant.sharepoint.com/sites/S1/LibA/MyFolder |
OneDrive | The user's UPN in Source UPN, Source Folder left blank | The UPN, and the folder in Source Folder: Documents/Archive |
FileShare | A share as a UNC path in Source UNC, \\MyServer\MyShare, or a drive of the SMART Migration server, D:\ | A folder on either: \\MyServer\MyShare\MyFolder or D:\MyFolder |
Splitting a large source into one job per folder keeps each run short and its record easy to read; one job for the whole source keeps the source in one place in the trees and the Power BI report.
Split a very large library into jobs by folder
Section titled “Split a very large library into jobs by folder”A document library with many thousands of files is fine as one job. One with hundreds of thousands or millions of documents is not: migrated in one job, it is slow, and it may not finish at all.
Do not migrate a huge library in one job
Reading a library of millions of files in one run uses a great deal of SharePoint's and SharePoint Online's resources and of the SMART Migration server's memory. Microsoft 365 throttles a long, heavy run harder the longer it goes; the server holds the whole library's folder tree while the job prepares; and a run that is stopped near the end — by throttling, a dropout or a reboot — has spent days on work that has to be checked again.
Partition the library instead: one job per folder, or per group of folders, each with a subset of the library.
Discover the library first
Run a Discovery job on the whole library. It moves nothing, and the Power BI report then shows how the files, the versions and the volume are spread over its folders.
Choose the folders
Give each large top-level folder a job of its own — the folder after the library in
Source URL, such as.../sites/S1/LibA/Projects— and gather the small ones into a few more. A folder that is still too large is split again, one level down.Do not forget the files at the top
Files that lie in the library's root, outside every folder, need a job too: the library's own URL with Include Subfolders off.
Keep the jobs together
Put the library's jobs in one group, give them a tag such as the library's name, and let their destinations add up to the library's layout in Nextcloud. Spread the large ones over the evenings and weekends.
It takes some planning — and it is worth it
Splitting a library costs an hour or two of planning. In return, every job is short enough to finish in a night, a stopped job costs only its own part, the progress of each part is clear on the Dashboard, and the owners can check and sign off the library folder by folder.
See also Choose which files a job takes and Groups and tags
SharePoint and Teams document libraries
Section titled “SharePoint and Teams document libraries”For Source Type SharePoint Library, Source URL is the URL of the document library, for example https://mytenant.sharepoint.com/sites/T1/LibB
- A subfolder: write its path after the library, for example
https://mytenant.sharepoint.com/sites/S1/LibA/MyFolderor.../LibA/MyFolder/2024— the job then reads only that folder. Or open the folder in the browser and paste the address bar: the app turns it into that same URL. - Copy the address from the browser — see below.
- The URL is checked as you type. It has to be a web address starting with
https://orhttp://and a valid server name. SharePoint does not allow*:<>"|or?in a site, library or folder name, so a URL with one of them in its path — typed, or written as%2Aand the like — does not validate. A sharing link, such ashttps://mytenant.sharepoint.com/:f:/s/S1/…, does not either: it names a share, not a place; copy the address bar instead. - A site is not a library. An address that ends at the site, such as
https://mytenant.sharepoint.com/sites/S1, does not validate: add the library. - Teams: the files of a team and its channels are kept in a document library of the team's SharePoint site. Use that library's URL.
- SharePoint on-premises: use the library's URL on your farm. SMART Migration signs in to it with NTLM credentials rather than the Microsoft 365 app registration.
Copy the address straight from the browser
Section titled “Copy the address straight from the browser”The easiest way to fill in Source URL is to open the library in the browser — or any folder inside it, as deep as you like — copy what the address bar shows and paste it.
What the browser shows is rarely the library's own address: it is a page of the library, .../Forms/AllItems.aspx, with the folder hidden in an encoded id= parameter and a view id after it. The app strips all of that and keeps the direct, readable address of the library or the folder, as soon as you leave the field and again when the job is saved:
| Pasted from the address bar | Becomes |
|---|---|
https://mytenant.sharepoint.com/sites/S1/LibA/Forms/AllItems.aspx?id=%2Fsites%2FS1%2FLibA%2FMyFolder&viewid=… | https://mytenant.sharepoint.com/sites/S1/LibA/MyFolder |
https://mytenant.sharepoint.com/sites/S1/Shared%20Documents/Forms/AllItems.aspx | https://mytenant.sharepoint.com/sites/S1/Shared Documents |
Encoded characters are turned back into what they stand for — %20 into a space, %C3%A6 into æ — so the address reads as SharePoint shows the names. The same clean-up applies to Destination URL and to an Import job's Import SharePoint URL. It is done in the app alone; nothing is asked of SharePoint.
To create one job for every library of a site or a whole tenant, scan it with an Import job. See Import jobs by scanning SharePoint or OneDrive
OneDrive
Section titled “OneDrive”For Source Type OneDrive, Source UPN is the User Principal Name of the user whose OneDrive is read, for example user1@contoso.com. An address on the tenant's onmicrosoft.com domain, such as user1@tenant.onmicrosoft.com, is valid too.
- Source Folder is an optional path inside the OneDrive, for example
Documents/Archive. Leave it blank to read the whole drive. - Resolves to shows the OneDrive address the job will read, worked out from the UPN and the domain mapping on the Settings tab.
A OneDrive job needs the domain mapping
Microsoft 365 builds a user's OneDrive address from the tenant's own SharePoint domain, not from the domain in their UPN. Until Map From and Map To are set on the Settings tab, a OneDrive job cannot work out which OneDrive to read, and a UPN whose domain does not match Map From does not validate — unless it is an onmicrosoft.com address, which names its tenant itself.
Every OneDrive of a tenant can be turned into jobs with one scan. See OneDrive to Nextcloud
File shares
Section titled “File shares”For Source Type FileShare, Source UNC is the UNC path or drive of the files, for example \\MyServer\MyShare\MyFolder or D:\MyFolder
Read permission on that path must be granted to the Windows account the SMART Migration server runs as: it is the server that reads the files, not Nextcloud. A file share has no version history and no SharePoint metadata, so those settings are not offered for it. See File shares to Nextcloud
A list of files from many sources
Section titled “A list of files from many sources”For Source Type File List CSV, File List Link is the link to a CSV file in Nextcloud Files that lists the files to migrate, one per line — for example exported from the File details table of the Power BI Files report. It has commas or semicolons between the columns, with a Name column and an optional Path column, in any order among any others; without Path, each Name is the file's full URL, UNC path or drive path. The job takes exactly those files, from whichever SharePoint library, OneDrive or file share each one is in. It is offered for Test Migration and Migration jobs, not for Discovery, and Include Subfolders is not offered for it: the list names each file itself. See Migrate a list of files from a CSV file
A query on the BI data
Section titled “A query on the BI data”Source Type Dynamic BI data query picks files by what they are rather than where they are — more than 100 versions, a metadata column with a given value — across every library, OneDrive and file share Discovery has recorded. It is under development: its fields are shown in the job dialog, and a job with it cannot run yet.
- Two ways to write it: a DAX query recorded in Power BI with Performance Analyzer, turned into a SQL WHERE clause by Convert to SQL, or the WHERE clause written by hand.
- Applied by SMART Migration at every run: it adds the clause to its own select of files on the BI data, so the selection is always current and can only pick files.
- Kept current by incremental Discovery: with Incremental (only files changed since the last successful run) on the Discovery jobs of the protected libraries, the BI data follows the documents every night — and a query job keeps a copy of exactly the critical files, for DORA.
- Not a backup: a recurring copy covers selected libraries — fewer than 20 as a rule of thumb, never more than about 50.
See Pick files with a Power BI or SQL query
What each kind of source supports
Section titled “What each kind of source supports”| SharePoint Online and Teams | SharePoint on-premises | OneDrive | File share | |
|---|---|---|---|---|
| Version history | Yes | Yes | Yes | No |
| SharePoint metadata into MetaVox | Yes | Yes | Yes | No |
| Replace the source file with a .url link | Yes | No | Yes | No |
| Signs in with | App registration and certificate | NTLM credentials | App registration and certificate | The server's Windows account |
Narrow the source with filters
Section titled “Narrow the source with filters”A source does not have to be taken whole. Under the source's own fields, the Source step has filters that pick which of its files the job takes. Switch on Advanced Settings, at the top of the step, to show them:
| Field | Takes | Example |
|---|---|---|
From Date and To Date | Files from and up to a date and time | Only the last two years: From Date two years back |
Size From and Size To | Files of at least and at most a size, in KB | Leave out files over 2 GB: Size To 2097152 |
Source File Type | Files with these extensions, without the dot, separated by ; or one per line | pdf;docx;xlsx |
A file is taken when it passes every filter that is set. Once set, the filters stay in force when Advanced Settings is switched off again; while it is off, the line under the switch names what it hides. See Choose which files a job takes
More settings on the Source step
Section titled “More settings on the Source step”- Include Subfolders — read the folders below the source too, or only the files at its top. On by default.
- Include Version History and Version History Scope — see Version history
- From Date, To Date, Size From, Size To and Source File Type (Advanced Settings) — see Choose which files a job takes
- Migrate Files With Metadata Warnings (Advanced Settings) — see Metadata, MetaVox and SharePoint views
- Replace SharePoint Online source Document Library item with a .url link to Nextcloud (Advanced Settings) — see Cutover: Traditional and Enhanced Migration
See also