From adadadba96b122707b02a27eaf11eee82150cf83 Mon Sep 17 00:00:00 2001 From: Sameer Zahir Date: Wed, 8 Jul 2026 14:37:11 -0700 Subject: [PATCH] docs: reframe positioning function-first; confine ShareGate to one disclaimed comparison MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Lead every surface (README, docs, GUI, both manifests, changelog, cmdlet help) with what OpenGateSP does — built on Microsoft Fluent 2, PnP PowerShell, and the generic assess-move-verify-govern migration lifecycle — instead of "ShareGate parity / mirrors ShareGate / the open equivalent of ShareGate's / ShareGate-style / Protect-style". Keep exactly one honest, disclaimed nominative comparison (the README "How it compares" section + a single "alternative to ShareGate" clause and the sharegate-alternative tag in the winget/PSGallery manifests), and name the trademark owner (Workleap) in the non-affiliation disclaimers. Docs/strings/comments only — no code, cmdlet, parameter, or version change. Co-Authored-By: Claude Opus 4.8 (1M context) --- CHANGELOG.md | 26 +++++++++---------- README.md | 20 +++++++------- docs/03-quickstart.md | 5 ++-- docs/07-sharepoint-migration.md | 2 +- docs/09-governance.md | 4 +-- docs/10-explore.md | 4 +-- docs/14-identity-copy.md | 4 +-- docs/design-system.md | 10 +++---- docs/distribution.md | 2 +- docs/roadmap.md | 13 +++++----- gui/MainWindow.xaml | 2 +- gui/Start-OpenGateSPGui.ps1 | 4 +-- .../SameerZahir.OpenGateSP.locale.en-US.yaml | 14 +++++----- mcp-server/README.md | 2 +- module/OpenGateSP/OpenGateSP.psd1 | 4 +-- module/OpenGateSP/Public/Copy-SPIdentity.ps1 | 2 +- module/OpenGateSP/Public/Copy-SPSite.ps1 | 2 +- .../Public/Find-SPEveryoneClaims.ps1 | 2 +- .../Public/Get-SPOwnerlessGroups.ps1 | 2 +- tests/Protect.Tests.ps1 | 2 +- tools/Build-Exe.ps1 | 2 +- tools/Launch.ps1 | 2 +- 22 files changed, 66 insertions(+), 64 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index fc18a44..555c4e4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,8 +6,8 @@ follow [Semantic Versioning](https://semver.org/). ## [0.14.0] -The identity release: **Copy identities (Entra tenant-to-tenant)** — the open answer to -ShareGate's Copy identities — plus ShareGate-style **environments** with browser-SSO, +The identity release: **Copy identities (Entra tenant-to-tenant)** — cross-tenant identity +copy for Entra ID users and groups — plus saved **environments** with browser-SSO, stay-signed-in, and Windows-native sign-in. Also folds in the planned 0.13 migration correctness wave, so failures can no longer report as Success. @@ -25,7 +25,7 @@ correctness wave, so failures can no longer report as Success. - **Environments** — save each tenant as a named profile: `Connect-SPTool -Environment`, `Get-SPEnvironment`, `Remove-SPEnvironment`, `Disconnect-SPTool`, and `New-SPMigrationConnection -Environment` (one line per side for cross-tenant). The GUI - Connect view becomes a ShareGate-style **Environments manager** with one-click switching + Connect view becomes a saved-tenant **Environments manager** with one-click switching and the app's first **Sign out**. Read-only `sharepoint_environments` MCP tool. See docs/03. - **Sign-in upgrades** — `-OSLogin` (Windows Hello / WAM broker, no browser; automatic browser fallback when the app registration lacks the broker redirect URI — docs/02); @@ -53,7 +53,7 @@ correctness wave, so failures can no longer report as Success. - Note: the PnP token cache is per app registration, so `-ClearPersistedLogin` signs out every environment sharing that app. - README: Fluent Light screenshots (incl. the new Environments page); identity copy and - environments move to checkmarks in the ShareGate comparison. + environments move to checkmarks in the feature comparison. - CI: a failed winget submission no longer fails the release job (the GitHub release is already published by then). @@ -110,7 +110,7 @@ correctness wave, so failures can no longer report as Success. ## [0.11.0] -The BYOK in-app AI assistant, ShareGate-Protect-style governance detection, and a dashboard Home. +The BYOK in-app AI assistant, governance detection (oversharing & ownership risk), and a dashboard Home. ### Added - **In-app AI assistant (bring your own model)** — chat with *your own* Claude / OpenAI key or a local @@ -123,7 +123,7 @@ The BYOK in-app AI assistant, ShareGate-Protect-style governance detection, and metadata, check-in, trim versions, restore inheritance, remove orphaned users, site lifecycle) that **always run as a preview first** — `execute` only takes effect after an identical preview ran and you confirmed in chat (the wizard's Run-locked-until-Preview rule, enforced in code). -- **Protect-style governance detection** — `Find-SPEveryoneClaims` (where "Everyone"/"Everyone +- **Governance detection** — `Find-SPEveryoneClaims` (where "Everyone"/"Everyone except external users" has access — the biggest oversharing risk, graded Error/Warning), `Get-SPOwnerlessGroups` (Microsoft 365 Groups with no owner), and `Invoke-SPGovernanceReview` (broad-audience grants + external sharing + orphaned access in one severity-graded list). All @@ -171,7 +171,7 @@ A polished, human GUI and the groundwork for a seamless install. No engine cmdle ## [0.9.0] -GUI redesign — ShareGate-aligned navigation and a guided Copy wizard. No engine cmdlet changes. +GUI redesign — lifecycle-grouped navigation and a guided Copy wizard. No engine cmdlet changes. ### Added - **Guided Copy flow** — a "What would you like to copy?" **chooser** (SharePoint / Collaboration / @@ -185,7 +185,7 @@ GUI redesign — ShareGate-aligned navigation and a guided Copy wizard. No engin GUI can be extended consistently. ### Changed -- **Left navigation** regrouped to the ShareGate model — Home (top); **Migration** (Explore, Copy, +- **Left navigation** regrouped by the migration lifecycle — Home (top); **Migration** (Explore, Copy, Pre-check, Security); **Activity** (Tasks, Scheduled); **Governance** (Provisioning); Connect pinned at the bottom. The old Migrate / Copy-site / Teams-&-Groups nav entries fold into the single **Copy** chooser (those forms are still reached through it). @@ -240,7 +240,7 @@ Source **Explore** (pre-migration discovery) and post-migration validation. ## [0.6.0] -ShareGate-parity **Phase 5** — deeper governance. +**Phase 5** — deeper governance. ### Added - **`Get-SPPermissionsMatrix`** — pivot a site's role assignments into a per-principal access @@ -258,7 +258,7 @@ ShareGate-parity **Phase 5** — deeper governance. ## [0.5.0] -ShareGate-parity **Phase 4** — Teams, Microsoft 365 Groups, and Planner. +**Phase 4** — Teams, Microsoft 365 Groups, and Planner. ### Added - **`Copy-SPM365Group`** — create a new Microsoft 365 Group modelled on an existing one @@ -276,7 +276,7 @@ ShareGate-parity **Phase 4** — Teams, Microsoft 365 Groups, and Planner. ## [0.4.0] -ShareGate-parity **Phase 3** — tenant-to-tenant. +**Phase 3** — tenant-to-tenant. ### Added - **`New-SPMigrationConnection`** — open a PnP connection to a specific site in a specific @@ -298,7 +298,7 @@ ShareGate-parity **Phase 3** — tenant-to-tenant. ## [0.3.0] -ShareGate-parity **Phase 2** — permissions, identity mapping, and incremental copy. +**Phase 2** — permissions, identity mapping, and incremental copy. ### Added - **`Copy-SPPermissions`** — copy a site's role assignments (and, with `-IncludeListPermissions`, @@ -325,7 +325,7 @@ ShareGate-parity **Phase 2** — permissions, identity mapping, and incremental - **Scheduled governance reports** — `scripts/scheduled/Run-GovernanceReport.ps1` writes sharing/permission CSVs headless (app-only auth); `Register-GovernanceReportTask.ps1` schedules it; `Get-SPScheduledCommand` builds the command line. See [docs/06](docs/06-scheduled-reports.md). -- **SharePoint → SharePoint site copy (ShareGate-parity, Phase 1)** — `Copy-SPSite` copies a +- **SharePoint → SharePoint site copy (Phase 1)** — `Copy-SPSite` copies a site's structure (lists, libraries, fields, content types, views, navigation, pages) and optionally its content (items, plus files with their Created/Modified/Author timestamps) to another site in the **same tenant**. Dry-run by default; conflict modes Replace / Skip / diff --git a/README.md b/README.md index 021a245..444aa20 100644 --- a/README.md +++ b/README.md @@ -5,10 +5,11 @@ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE) ![PowerShell 7.4+](https://img.shields.io/badge/PowerShell-7.4%2B-5391FE?logo=powershell&logoColor=white) -> **The free, open-source alternative to [ShareGate](https://sharegate.com)** for SharePoint Online -> and Microsoft 365. Migrate file shares, copy sites and Teams, see who has access to what, clean -> up the mess, and schedule the reports — with a built-in AI assistant that runs on **your own** -> model. No tiers, no trials, no sales call. +> **A free, open-source SharePoint Online & Microsoft 365 migration and governance toolkit** — +> an independent, open-source alternative to [ShareGate](https://sharegate.com). Migrate file +> shares, copy sites and Teams, see who has access to what, clean up the mess, and schedule the +> reports — with a built-in AI assistant that runs on **your own** model. No tiers, no trials, +> no sales call. ![OpenGateSP — the home dashboard](docs/screenshot-light.png) @@ -72,9 +73,10 @@ Details: [docs/13-ai-assistant.md](docs/13-ai-assistant.md). ## How it compares to ShareGate -ShareGate is a polished, expensive tool for work that comes down to SharePoint API calls anyone -can script. OpenGateSP does that work in the open, for free. (It's an independent project built -on [PnP PowerShell](https://pnp.github.io/powershell/) — not affiliated with ShareGate.) +ShareGate is the established commercial tool in this space. OpenGateSP is an independent, +open-source project that does the common migration and governance jobs for free, built on +[PnP PowerShell](https://pnp.github.io/powershell/) and the Microsoft Graph / SharePoint APIs — +not affiliated with or endorsed by Workleap. | | ShareGate | OpenGateSP | |---|---|---| @@ -133,7 +135,7 @@ Four themes, picked on first run, changeable any time. ## Roadmap Next up: governance auto-remediation policies and access-review campaigns, **identity copy** -(Entra tenant-to-tenant users/groups — ShareGate's "Copy identities"), full version-history +(Entra tenant-to-tenant users/groups), full version-history fidelity via the Migration API, and PowerShell Gallery publishing. The full list, including what already shipped: [docs/roadmap.md](docs/roadmap.md). @@ -143,4 +145,4 @@ already shipped: [docs/roadmap.md](docs/roadmap.md). --- -OpenGateSP is an independent open-source project, not affiliated with or endorsed by ShareGate or Workleap. "ShareGate" is a trademark of its respective owner. +OpenGateSP is an independent open-source project, not affiliated with or endorsed by Workleap. ShareGate is a trademark of Workleap. diff --git a/docs/03-quickstart.md b/docs/03-quickstart.md index 7c2600b..6489d96 100644 --- a/docs/03-quickstart.md +++ b/docs/03-quickstart.md @@ -37,9 +37,8 @@ After `-SaveConfig`, later sessions are just `Connect-SPTool`. ### Environments — work with more than one tenant -An **environment** is a saved, named tenant connection (the ShareGate "Connect to your -environments" idea). Connecting to one saves it and makes it active; everything you run -afterwards targets the active environment: +An **environment** is a saved, named tenant connection. Connecting to one saves it and makes it +active; everything you run afterwards targets the active environment: ```powershell # Save each tenant once (the browser signs you in — SSO picks up your session): diff --git a/docs/07-sharepoint-migration.md b/docs/07-sharepoint-migration.md index f5a45cc..8cfea45 100644 --- a/docs/07-sharepoint-migration.md +++ b/docs/07-sharepoint-migration.md @@ -1,7 +1,7 @@ # 07 — SharePoint → SharePoint migration `Copy-SPSite` copies a site's **structure** (and optionally its **content**) to another site — -the open equivalent of ShareGate's "Copy structure and content". It's **dry-run by default**: +a structure-and-content site copy. It's **dry-run by default**: same-tenant by default, with **tenant-to-tenant** via `-CrossTenant` (see below). > **Status:** the planning, conflict-resolution, and reporting logic is unit-tested; the live diff --git a/docs/09-governance.md b/docs/09-governance.md index 3818b11..d771ece 100644 --- a/docs/09-governance.md +++ b/docs/09-governance.md @@ -1,8 +1,8 @@ # 09 — Deeper governance Beyond the sharing / permission / inventory reports, OpenGateSP can answer "who can touch -what", flag stale access, detect the biggest oversharing and ownership risks -(ShareGate-Protect-style), and lock or archive a site. +what", flag stale access, detect the biggest oversharing and ownership risks, and lock or +archive a site. ## Functions diff --git a/docs/10-explore.md b/docs/10-explore.md index 73cecfb..3d467e7 100644 --- a/docs/10-explore.md +++ b/docs/10-explore.md @@ -1,8 +1,8 @@ # Explore & post-migration validation -ShareGate's "Explore" is *browse + report + remediate* a SOURCE environment. OpenGateSP's `Invoke-SPExplore` is the read-only, consolidated **pre-migration assessment** of a SharePoint -source — the SharePoint-side companion to `Test-SPMigrationReadiness` (which scans local folders). +source — *browse + report* a SOURCE environment, the SharePoint-side companion to +`Test-SPMigrationReadiness` (which scans local folders). After a copy, `Compare-SPSite` validates the result. ## Assess a source diff --git a/docs/14-identity-copy.md b/docs/14-identity-copy.md index 7804b6b..3784a04 100644 --- a/docs/14-identity-copy.md +++ b/docs/14-identity-copy.md @@ -2,8 +2,8 @@ Create the **people and groups** in a destination tenant before you move their content: users, guests (by invitation), security groups, and Microsoft 365 groups — with their -owner/member rosters. OpenGateSP's answer to ShareGate's *Copy identities* (Entra ID -Migration), built on the same review-first posture as the rest of the module: every step +owner/member rosters. Cross-tenant identity copy (Entra ID users & groups), built on the same +review-first posture as the rest of the module: every step until the last is **read-only**, and the last is **dry-run by default**. Run this **before** a cross-tenant content copy ([docs/07](07-sharepoint-migration.md)): diff --git a/docs/design-system.md b/docs/design-system.md index 6c0f66e..861228b 100644 --- a/docs/design-system.md +++ b/docs/design-system.md @@ -3,8 +3,8 @@ The reference for the OpenGateSP GUI (WPF). Everything here already lives in code — `gui/Start-OpenGateSPGui.ps1` (`$XamlControls` = component styles, `$Xaml*` = theme token dictionaries) and `gui/MainWindow.xaml` (layout). This doc is the contract: **build new UI from -these tokens and components so the app stays one coherent surface.** Design direction follows -ShareGate Migrate/Protect — calm, guided, foolproof — see [[opengatesp-design-northstar]]. +these tokens and components so the app stays one coherent surface.** Design direction: calm, +guided, foolproof — built on the Microsoft Fluent 2 design language. > How to extend: add a `