01
Connect
One admin-consent click in Microsoft's own dialog connects your SharePoint — no certificate to create, no secret to paste, revocable by you at any time. Every plan, including free dry runs.
admin consent → connected · no key to enter
Spec 00 — site-to-site migration
S2Stools moves SharePoint sites 1:1 — files, lists and pages arrive with their authors and timestamps, people matched to the target tenant's users, and the site notebook comes along. Turn them on, and item-level permissions and file version history move too. Each run ends with a report that checks what landed against the source.
Free preview · dry runs don't count against your allowance
/sites/marketing · source
/sites/marketing-new · faithful copy
Spec 01 — process
01
One admin-consent click in Microsoft's own dialog connects your SharePoint — no certificate to create, no secret to paste, revocable by you at any time. Every plan, including free dry runs.
admin consent → connected · no key to enter
02
Tell us the size of the source and the estimate sizes the job — GB, items, compute-hours — so you know which plan covers it before anything moves.
2,000,000 items · 500 GB · ~80 compute-hours (vCPU-hours)
03
The engine walks the whole site and reports the plan — lists, pages, permissions, and the people and terms the run will hand the target — and writes nothing.
"DryRun": true — plan only, write nothing
04
Each run ends by comparing the target with the source — item counts, columns, views and content types. A run you pause or cancel resumes where it stopped: finished lists are skipped, and a list in progress picks up item by item instead of starting over. Cancel is one click, cooperative.
verification → counts · columns · views · content types
Spec 02 — fidelity
Most tools move files. S2Stools moves the record — the metadata trail your compliance team actually cares about.
Version chains on documents are replayed oldest-to-newest, each version keeping its own date, content and Modified By. List items and pages arrive at their current version.
File.Versions → replayed v1…vN
Created/Modified and Created by/Modified by survive the move on files, pages and list items. Between tenants, each person is matched to a target user — a map row, a domain rule, or a fallback account you choose — and anyone left without a match is reported.
system fields stamped · no version bump
Turn on item-level permissions and broken-inheritance items keep their own grants for principals with a match on the target; site groups and M365 group claims are remapped. A grant whose principal has no match is skipped and named in the report.
opt-in · principals mapped source → target
Turn on list-item attachments and they travel with their items, added before the final metadata stamp so dates stay true.
opt-in · AttachmentFiles copied per item
Quick launch arrives without duplicate or dead links, and the site notebook is renamed for its new home.
system links stripped · notebook retitled
Taxonomy columns, content types, and term groups are extracted together so nothing is silently dropped.
Fields + ContentTypes + TermGroups
The preview lists the people the run hands the target — Created by and Modified by, people columns, permissions — and whether each one resolves there, with a draft map to fill in. Match them by map row, by ordered domain rules such as @contoso.com → @fabrikam.com (user accounts only), or name a fallback account for content; permissions do not use it. Migrating across tenants comes with assisted setup — contact us.
map rows · domain rules · fallback for content
Spec 03 — pricing
Flat monthly plans, each with a clear allowance — GB moved, compute-hours, items. Every run's usage is measured and shown under Usage & allowance; it updates when a run finishes or pauses.
$0/mo
Most teams
$49/mo
$199/mo
$999/mo
1 compute-hour = 1 vCPU-hour. Migrations run on 2-vCPU workers, so 25 compute-hours is about 12.5 hours of migration time.
Each plan's allowance covers one billing period. When a run reaches it, it pauses; add a +100 GB pack ($39) to continue it (paid plans). Dry runs are free and don't count against your allowance. Set a per-run budget and the run pauses before it passes it.
Spec 04 — isolation & custody
// the API, refusing a pasted secret
POST /v1/migrations → 422 Unprocessable Entity "Source.Auth.ClientSecret.ClientSecret: inline secrets are not accepted — use a Key Vault reference."
Every plan starts with a free preview: connect, pick a site, and get the full inventory and what the run would cost — before anything moves. Dry runs don't count against your allowance. Real migrations start on Pro at $49.