SharePoint → Laserfiche Migration Toolkit

A migration tool,
not a migration project.

Three commands. Full metadata. Restartable from any point. Built across real production migrations — and packaged so you don't have to rebuild it from scratch.

migration — bash
# Step 1 — Scan SharePoint and stage everything locally. Nothing touches Laserfiche yet.
$ dotnet run crawl --library "Documents" --site "/sites/finance"
✓ Crawled 4,218 documents across 312 folders
→ Staged to migration.db — ready for dry-run
# Step 2 — Preview every move. Fix config until the plan looks exactly right.
$ dotnet run migrate --dry-run
→ INV-0042.pdf → /Finance/Invoices/2023/ [INVOICE template, Amount: $14,750.00]
→ Master_Services_Agmt.docx → /Finance/Contracts/ [CONTRACT template]
→ 4,218 documents mapped. 0 conflicts. Ready.
# Step 3 — Push to Laserfiche. Parallel batches, every result logged, restartable.
$ dotnet run migrate
✓ 4,218 / 4,218 documents migrated
✓ Metadata applied. No duplicates. Done.

What you were looking at before this

$15–50k

Hire a consulting firm

A one-time engagement billed hourly. The tool they build belongs to them. The next migration costs just as much. And you weren't there to see how it worked.

Months

Drag-and-drop manually

Someone gets assigned to move documents by hand. Every piece of metadata — dates, custom fields, folder structure — is lost along the way.

Weeks

Write your own tool

Folder mapping, template assignments, throttling, retries, duplicate protection — each one is its own project. It breaks on document 2,000 and nobody's sure why.

Or: buy full C# / .NET 10 source code for a tool that already solved all of that — auditable, configurable, tested. One fixed price.

Get the Toolkit

Three commands. The whole workflow.

01
Crawl dotnet run crawl

Scans your SharePoint libraries — on-premises or Microsoft 365 — and stages every document's location and metadata into a local SQLite database. Nothing touches Laserfiche. The crawl is incremental: re-running it only picks up what changed.

// appsettings.json — no schema is hardcoded "SharePoint": { "SiteUrl": "https://contoso.sharepoint.com/sites/finance", "Libraries": ["Documents", "Archive"], "Auth": "M365Certificate" }
02
Dry-run --dry-run

Shows you exactly what would happen: which Laserfiche folder every document lands in, which template it gets, what every field will say. Fix your mapping config until the plan is right. Still nothing written to your repository.

// Field mapping is JSON config, not code "FieldMappings": [ { "Source": "Created", "Target": "Document Date", "Format": "yyyy-MM-dd" }, { "Source": "Department", "Target": "Business Unit" }, { "Source": "InvoiceTotal", "Target": "Amount", "Type": "Currency" } ]
03
Migrate dotnet run migrate

Pushes documents into Laserfiche via the Repository API v2, in parallel batches, with metadata applied. Every document's outcome is logged to the staging database. Stop it halfway, restart it — it picks up where it left off and never imports the same document twice.

-- Every document tracks its own migration state SELECT DocumentPath, Status, LfEntryId, CompletedAt FROM MigrationLog WHERE Status = 'FAILED'; -- Re-runs skip MIGRATED; retry with --retry-failed

Built to run against real repositories

Dry-run everything

Preview the full migration plan — every folder path, every template, every field value — before a single document moves. Fix the config until the plan is exactly right.

Duplicate protection

Optional pre-import checks prevent a document from landing in Laserfiche twice, regardless of how many times you restart or re-run the migration.

Restartable by design

Every document's status lives in the local staging database. Stop the process at any point — deliberately or not — and it resumes from where it left off.

No hardcoded schema

Column names, folder path tokens, field types, date formats — all configuration. The same tool handles a 200-document archive and a 50,000-document finance library.

109 automated tests

The test suite ships with the source. Read them before you run anything against a production repository. The coverage is there because this ran in production first.

No black box

You get full C# / .NET 10 source — not a compiled installer. Your team can read every line before pointing it at a production Laserfiche repository.

Works with the SharePoint you actually have

SharePoint (source)

  • On-premises 2013, 2016, 2019, Subscription Edition — Windows/NTLM service account
  • Microsoft 365 / SharePoint Online — Azure AD app registration, delegated or app-only
  • M365 with MFA enforced — app-only certificate auth, no user account required
  • Multiple site collections and libraries in a single crawl

Laserfiche (target)

  • Self-Hosted Repository API v2 — no legacy SDK, no COM registration
  • Every endpoint path is configurable for non-standard deployments
  • Full metadata template support: text, number, date, currency, list fields
  • Parallel batch upload with configurable concurrency and throttle limits

Everything you need to run a production migration

  • Full C# / .NET 10 source code — yours to read, modify, and extend
  • Setup and configuration documentation
  • A worked example configuration for a typical on-prem and M365 migration
  • The complete automated test suite — 109 tests covering crawl, mapping, and migrate logic
  • Auth configuration templates for NTLM, delegated OAuth, and certificate-based app-only
109
Automated tests shipped with the source
.NET 10
Modern C# — no legacy SDK or COM dependencies
3
Commands to complete a full production migration

One price. No hourly rate. No re-run fees.

Buy once, run it as many times as you need, against any repository you own.

Toolkit
$495
  • Full C# / .NET 10 source code
  • Crawl, dry-run, and migrate commands
  • On-prem and M365 SharePoint support
  • 109 automated tests
  • Setup documentation and worked example
Buy Toolkit
Consultant / VAR License
$1,995
  • Everything in Toolkit + Playbook
  • Commercial license to run migrations for clients
  • Unlimited client engagements
  • Rebrand and deliver as part of your service
Buy VAR License

Stop scoping a migration project.
Start running a migration tool.

Full source. 109 tests. Three commands. Built by a developer who needed this and didn't have it — then ran it across real production Laserfiche repositories.

Get the Toolkit — from $495