From ea35d1aecd2ec4c0372bb8cb77d5948c597cf0cb Mon Sep 17 00:00:00 2001 From: titao Date: Wed, 22 Jul 2026 16:48:18 +0800 Subject: [PATCH 01/15] Add Microsoft 365 Assessment modernization guidance Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: a7db0d98-be53-48c2-9488-9a226f457144 --- docs/toc.yml | 33 +++ .../assess-sharepoint-modernization.md | 44 ++++ .../assessment-tool-classic-pages-csv.md | 206 ++++++++++++++++++ .../assessment-tool-classic-pages-report.md | 127 +++++++++++ ...essment-tool-classic-pages-requirements.md | 85 ++++++++ .../assessment-tool-classic-pages-run.md | 130 +++++++++++ .../assessment-tool-classic-pages.md | 82 +++++++ .../assessment-tool-common-reports.md | 128 +++++++++++ .../assessment-tool-extensibility-csv.md | 86 ++++++++ .../assessment-tool-extensibility.md | 97 +++++++++ docs/transform/assessment-tool-lists.md | 96 ++++++++ docs/transform/assessment-tool-overview.md | 70 ++++++ .../assessment-tool-publishing-coverage.md | 89 ++++++++ docs/transform/assessment-tool-reports.md | 88 ++++++++ ...int-modernization-assessment-comparison.md | 32 +++ 15 files changed, 1393 insertions(+) create mode 100644 docs/transform/assess-sharepoint-modernization.md create mode 100644 docs/transform/assessment-tool-classic-pages-csv.md create mode 100644 docs/transform/assessment-tool-classic-pages-report.md create mode 100644 docs/transform/assessment-tool-classic-pages-requirements.md create mode 100644 docs/transform/assessment-tool-classic-pages-run.md create mode 100644 docs/transform/assessment-tool-classic-pages.md create mode 100644 docs/transform/assessment-tool-common-reports.md create mode 100644 docs/transform/assessment-tool-extensibility-csv.md create mode 100644 docs/transform/assessment-tool-extensibility.md create mode 100644 docs/transform/assessment-tool-lists.md create mode 100644 docs/transform/assessment-tool-overview.md create mode 100644 docs/transform/assessment-tool-publishing-coverage.md create mode 100644 docs/transform/assessment-tool-reports.md create mode 100644 docs/transform/sharepoint-modernization-assessment-comparison.md diff --git a/docs/toc.yml b/docs/toc.yml index 9251fb8bad..e8b92833be 100644 --- a/docs/toc.yml +++ b/docs/toc.yml @@ -1833,6 +1833,39 @@ items: - name: Overview href: solution-guidance/Office-365-development-patterns-and-practices-solution-guidance.md + - name: Assess SharePoint modernization + href: transform/assess-sharepoint-modernization.md + items: + - name: Microsoft 365 Assessment Tool + href: transform/assessment-tool-overview.md + items: + - name: Classic pages + href: transform/assessment-tool-classic-pages.md + items: + - name: Requirements + href: transform/assessment-tool-classic-pages-requirements.md + - name: Run the assessment + href: transform/assessment-tool-classic-pages-run.md + - name: Interpret the report + href: transform/assessment-tool-classic-pages-report.md + - name: CSV reference + href: transform/assessment-tool-classic-pages-csv.md + - name: Publishing portal coverage + href: transform/assessment-tool-publishing-coverage.md + - name: Lists and libraries + href: transform/assessment-tool-lists.md + - name: Extensibility and custom actions + href: transform/assessment-tool-extensibility.md + items: + - name: CSV reference + href: transform/assessment-tool-extensibility-csv.md + - name: Reports and CSV files + href: transform/assessment-tool-reports.md + items: + - name: Common CSV files + href: transform/assessment-tool-common-reports.md + - name: Compare assessment tools + href: transform/sharepoint-modernization-assessment-comparison.md - name: Modernizing your classic SharePoint sites items: - name: Overview diff --git a/docs/transform/assess-sharepoint-modernization.md b/docs/transform/assess-sharepoint-modernization.md new file mode 100644 index 0000000000..9c54e20206 --- /dev/null +++ b/docs/transform/assess-sharepoint-modernization.md @@ -0,0 +1,44 @@ +--- +title: Assess SharePoint modernization +description: Choose an assessment tool and start collecting the data needed to modernize SharePoint. +ms.date: 07/22/2026 +ms.localizationpriority: high +ms.service: sharepoint +--- + +# Assess SharePoint modernization + +Assess your environment before you plan remediation or migration. The assessment identifies the classic features and customizations that are still in use, provides usage and readiness data, and helps you decide which sites and pages to modernize first. + +For new SharePoint Online assessments, start with the [Microsoft 365 Assessment Tool](assessment-tool-overview.md). The tool is open source and produces CSV output for supported modernization, adoption, and retirement scenarios. On Windows, it can also generate a Power BI template. + +## Choose an assessment tool + +| Scenario | Recommended tool | +| --- | --- | +| Assess classic SharePoint pages | [Microsoft 365 Assessment Tool - Classic pages](assessment-tool-classic-pages.md) | +| Assess modern list and library readiness | [Microsoft 365 Assessment Tool - Lists and libraries](assessment-tool-lists.md) | +| Find custom master pages, alternate CSS, and incompatible user custom actions | [Microsoft 365 Assessment Tool - Extensibility](assessment-tool-extensibility.md) | +| Assess InfoPath, SharePoint Add-Ins, Azure ACS, or SharePoint Alerts | [Microsoft 365 Assessment Tool](assessment-tool-overview.md) | +| Assess Microsoft 365 group connection readiness | Legacy SharePoint Modernization Scanner | +| Inventory SharePoint Designer customized forms | Legacy SharePoint Modernization Scanner | +| Collect the complete legacy Publishing Portal Web-level inventory | Legacy SharePoint Modernization Scanner | +| Assess SharePoint Server or another on-premises source | [SharePoint Migration Assessment Tool](/sharepointmigration/overview-of-the-sharepoint-migration-assessment-tool) or another scenario-specific tool | + +For a detailed capability comparison, see [Compare SharePoint modernization assessment tools](sharepoint-modernization-assessment-comparison.md). + +## Assessment workflow + +1. Select the assessment tool and modules that cover your scenario. +1. Configure authentication and scope. +1. Run the assessment against a test scope before scanning the full tenant. +1. Generate CSV output and, on Windows, the Power BI template. +1. Validate the report coverage and any failed sites or queries. +1. Use the results to define remediation and migration waves. + +## Next steps + +- [Microsoft 365 Assessment Tool overview](assessment-tool-overview.md) +- [Assessment reports and CSV files](assessment-tool-reports.md) +- [Transform classic pages to modern pages](modernize-userinterface-site-pages.md) +- [Maximize use of modern lists and libraries](modernize-userinterface-lists-and-libraries.md) diff --git a/docs/transform/assessment-tool-classic-pages-csv.md b/docs/transform/assessment-tool-classic-pages-csv.md new file mode 100644 index 0000000000..2fe459b8ef --- /dev/null +++ b/docs/transform/assessment-tool-classic-pages-csv.md @@ -0,0 +1,206 @@ +--- +title: Classic pages assessment CSV reference +description: Understand the page, web part, usage, web, site, and publishing CSV files generated by the Microsoft 365 Assessment Tool. +ms.date: 07/22/2026 +ms.localizationpriority: high +ms.service: sharepoint +--- + +# Classic pages assessment CSV reference + +A Classic report always exports the common assessment files and the Classic component files. Files for components that weren't selected can contain only headers. + +The page-specific output is: + +| File | Granularity | +| --- | --- | +| `classicpages.csv` | One row per discovered classic page. | +| `classicpagewebparts.csv` | One row per extracted web part. | +| `classicwebpartunique.csv` | One row per unique web part type across the assessment. | +| `classicpageauditusage.csv` | One row per page with audit activity, plus coverage-status rows when required. | +| `classicwebsummaries.csv` | One row per web. | +| `classicsitesummaries.csv` | One row per site collection. | +| `classicpublishingsitesummaries.csv` | One row per publishing portal site collection. | + +`classicpageauditusage.csv` is created only when audit collection writes rows. It isn't created when `--skipusageinformation` is used. + +## Join keys + +Use these keys when combining files: + +| Relationship | Keys | +| --- | --- | +| Page to web part | `ScanId`, `SiteUrl`, `WebUrl`, `PageUrl` | +| Page to audit usage | Normally `ScanId`, `SiteUrl`, `PageUrl` | +| Page to web summary | `ScanId`, `SiteUrl`, `WebUrl` | +| Web summary to site summary | `ScanId`, `SiteUrl` | +| Publishing summary to site summary | `ScanId`, `SiteUrl` | + +`PageUrl` is normally a server-relative URL in both `classicpages.csv` and `classicpageauditusage.csv`. An unexpected post-scan exception creates a site-level audit row with `QueryStatus=error` and an absolute `PageUrl`; use `ScanId` and `SiteUrl` to identify that coverage row. + +## `classicpages.csv` + +| Column | Description | +| --- | --- | +| `ScanId` | Assessment identifier. | +| `SiteUrl` | Absolute site-collection URL. | +| `WebUrl` | Site-collection-relative web URL. `/` represents the root web. | +| `PageUrl` | Server-relative page URL. | +| `PageName` | Page title or derived file name. | +| `PageType` | `WikiPage`, `WebPartPage`, `PublishingPage`, `BlogPage`, `ASPXPage`, or `DelveBlogPage`. | +| `ListUrl` | Server-relative URL of the containing library or list. | +| `ListTitle` | Title of the containing library or list. | +| `ListId` | Identifier of the containing library or list. | +| `ModifiedAt` | Last modification time. | +| `Layout` | Detected wiki or web part layout, or publishing layout name. | +| `HomePage` | Indicates whether this page is the web's welcome page. | +| `UncustomizedHomePage` | Indicates whether the home page still matches the recognized default configuration. | +| `ModifiedBy` | Last modifier. Empty when `--skipuserinformation` is used. | +| `WebPartCount` | Number of extracted web parts. A zero can also remain when enrichment failed before extraction completed. | +| `MappingPercentage` | Rounded percentage of extracted web parts with usable mappings. A zero with `WebPartCount=0` on an enriched page can indicate an enrichment failure. | +| `UnmappedWebParts` | De-duplicated short type names for unmapped web parts. | +| `RemediationCode` | Page classification: `CP1` Web Part, `CP2` Wiki, `CP3` Publishing, `CP4` Blog, or `CP5` ASPX. It can be empty for a Delve Blog page. | + +Detailed `Layout`, `WebPartCount`, `MappingPercentage`, and `UnmappedWebParts` analysis applies to Wiki, Web Part, and Publishing pages. Don't treat default values on Blog, ASPX, or Delve Blog rows as completed mapping analysis. + +For an enriched page with no web parts, `MappingPercentage` is 100 by convention. + +If a Wiki, Web Part, or Publishing row has `WebPartCount=0` and `MappingPercentage=0`, review the assessment log for a per-page enrichment failure. + +## `classicpagewebparts.csv` + +This file contains extracted web parts from Wiki, Web Part, and Publishing pages. + +| Column | Description | +| --- | --- | +| `ScanId` | Assessment identifier. | +| `SiteUrl` | Absolute site-collection URL. | +| `WebUrl` | Site-collection-relative web URL. `/` represents the root web. | +| `PageUrl` | Server-relative page URL. | +| `WebPartIndex` | Zero-based index in the extracted page inventory. | +| `WebPartType` | Raw mapping key. It is usually an assembly-qualified type, but wiki text, image, and video parts use synthetic type values. | +| `WebPartTypeShort` | Portion of `WebPartType` before the first comma. The namespace is retained. | +| `WebPartTitle` | Configured web part title. | +| `WebPartProperties` | JSON-serialized properties when `--exportwebpartproperties` is used. | +| `ZoneId` | Web part zone identifier when available. | +| `Row` | Detected page row. | +| `Column` | Detected page column. | +| `Order` | Order within the zone or layout cell. | +| `Hidden` | Indicates whether the web part is hidden. | +| `IsClosed` | Indicates whether the web part is closed. | +| `IsMappable` | Indicates whether the embedded model contains a usable mapping. | + +## `classicwebpartunique.csv` + +This file is scan-wide. It doesn't contain `SiteUrl` or `WebUrl`. + +| Column | Description | +| --- | --- | +| `ScanId` | Assessment identifier. | +| `WebPartType` | Assembly-qualified web part type. | +| `InMappingFile` | Indicates whether the type has an entry in the embedded mapping file. | +| `PageCount` | Number of distinct pages on which the type was found. | + +`InMappingFile=true` doesn't guarantee that the entry has a usable mapping. Use `IsMappable` in `classicpagewebparts.csv` for the transformation-readiness decision. + +## `classicpageauditusage.csv` + +| Column | Description | +| --- | --- | +| `ScanId` | Assessment identifier. | +| `SiteUrl` | Absolute site-collection URL. | +| `PageUrl` | Server-relative page URL. On a site-level coverage row, this is the server-relative site URL. | +| `AuditViewsCount` | Number of `ClassicPageViewed` events. | +| `AuditCreatesCount` | Number of `ClassicPageCreated` events. | +| `AuditEditsCount` | Number of `ClassicPageEdited` events. | +| `AuditUniqueUsers` | Distinct-user signal across the three operations, capped internally for highly used pages. | +| `AuditWindowStart` | Start of the queried window in UTC. | +| `AuditWindowEnd` | End of the queried window in UTC. | +| `QueryStatus` | `succeeded`, `partial`, `failed`, `skipped`, or `error`. | +| `SkipReason` | Permission, cloud, timeout, query, or partial-data explanation when applicable. | + +The file intentionally omits `WebUrl`. Join to `classicpages.csv` by `ScanId`, `SiteUrl`, and `PageUrl`. + +If `QueryStatus=partial`, counts are a lower bound. If `QueryStatus` is `failed` or `skipped`, don't use the zero counts as activity evidence. + +An `error` row represents an unexpected post-scan exception. It is a site-level coverage row, and its `PageUrl` is currently the absolute site URL rather than a server-relative URL. + +## `classicwebsummaries.csv` + +This file is shared by the Pages, Lists, InfoPath, Workflow-compatibility, and Extensibility components. + +Page-related columns include: + +| Column | Description | +| --- | --- | +| `ScanId`, `SiteUrl`, `WebUrl` | Web identity. | +| `Template` | Web template. | +| `LastItemUserModifiedDate` | Last user modification time recorded for the web. | +| `ClassicPages` | Total discovered classic pages. | +| `ClassicWikiPages` | Wiki page count. | +| `ClassicASPXPages` | ASPX page count. | +| `ClassicBlogPages` | Blog page count. | +| `ClassicWebPartPages` | Web Part page count. | +| `ClassicPublishingPages` | Publishing page count. | +| `ModernPages` | Modern page count. | +| `PagesWithWebParts` | Enriched classic pages with extracted web parts. | +| `MappableWebPartPages` | Pages with web parts and a mapping percentage of 100. | +| `UnmappedWebPartPages` | Pages with at least one unmapped web part. | +| `AvgMappingPercentage` | Average across pages in `PagesWithWebParts`. | +| `UncustomizedHomePages` | Recognized default home-page count. | +| `IsModernSite` | Indicates a modern site classification. | +| `IsClassicPublishingSite` | Indicates a classic publishing web. | +| `IsModernCommunicationSite` | Indicates a modern communication site. | +| `RemediationCode` | Web-level remediation classification. | +| `AggregatedRemediationCodes` | De-duplicated component remediation codes. | + +The file also contains Classic Lists, Workflow compatibility, InfoPath, Extensibility, SharePoint Add-In, and Azure ACS rollup columns. + +The current page-type rollups don't include `DelveBlogPage` rows, although those rows are present in `classicpages.csv`. + +## `classicsitesummaries.csv` + +Page-related columns include: + +| Column | Description | +| --- | --- | +| `ScanId`, `SiteUrl` | Site-collection identity. | +| `LastItemUserModifiedDate` | Last user modification time recorded for the site collection. | +| `RootWebTemplate` | Root web template. | +| `SubWebTemplates` | Templates found in subwebs. | +| `SubWebCount` | Number of subwebs. | +| `SubWebDepth` | Maximum subweb depth. | +| `ClassicPages` | Total discovered classic pages. | +| `ClassicWikiPages` | Wiki page count. | +| `ClassicASPXPages` | ASPX page count. | +| `ClassicBlogPages` | Blog page count. | +| `ClassicWebPartPages` | Web Part page count. | +| `ClassicPublishingPages` | Publishing page count. | +| `ModernPages` | Modern page count. | +| `PagesWithWebParts` | Enriched classic pages with extracted web parts. | +| `MappableWebPartPages` | Pages with web parts and a mapping percentage of 100. | +| `UnmappedWebPartPages` | Pages with at least one unmapped web part. | +| `AvgMappingPercentage` | Average across pages in `PagesWithWebParts`. | +| `UncustomizedHomePages` | Recognized default home-page count. | +| `AggregatedRemediationCodes` | De-duplicated component remediation codes. | + +The file also contains site-level Lists, Workflow compatibility, InfoPath, Extensibility, SharePoint Add-In, and Azure ACS counts. + +The current page-type rollups don't include `DelveBlogPage` rows, although those rows are present in `classicpages.csv`. + +## `classicpublishingsitesummaries.csv` + +This file contains one row per site collection that has at least one publishing web. + +| Column | Description | +| --- | --- | +| `ScanId` | Assessment identifier. | +| `SiteUrl` | Absolute publishing portal site-collection URL. | +| `NumberOfWebs` | Number of publishing webs. | +| `NumberOfPages` | Number of classic publishing pages. | +| `UsedSiteMasterPages` | De-duplicated custom site master pages. Populated when Extensibility is included. | +| `UsedSystemMasterPages` | De-duplicated custom system master pages. Populated when Extensibility is included. | +| `UsedPageLayouts` | De-duplicated publishing page layouts. | +| `LastPageUpdateDate` | Most recent publishing-page modification time. | + +For legacy publishing fields that aren't represented by this file, see [Understand publishing portal coverage](assessment-tool-publishing-coverage.md). diff --git a/docs/transform/assessment-tool-classic-pages-report.md b/docs/transform/assessment-tool-classic-pages-report.md new file mode 100644 index 0000000000..799a846b0e --- /dev/null +++ b/docs/transform/assessment-tool-classic-pages-report.md @@ -0,0 +1,127 @@ +--- +title: Interpret the classic pages assessment report +description: Use page, web part, usage, and rollup results from the Microsoft 365 Assessment Tool to plan SharePoint page modernization. +ms.date: 07/22/2026 +ms.localizationpriority: high +ms.service: sharepoint +--- + +# Interpret the classic pages assessment report + +A Classic assessment exports CSV files for every Classic component. On Windows, the default `report` command also creates `ClassicAssessmentReport.pbit`. + +The Power BI template contains these tabs: + +```text +Start +Summary +Sites overview +Extensibility +Extensibility: user custom actions +InfoPath +Lists +Lists details +Pages +Workflow +Workflow details +Scan overview +``` + +Workflow is retired. Its tabs and `workflows.csv` remain for compatibility with existing assessment data. + +## Validate scan coverage first + +Before interpreting page readiness, confirm that the expected scope completed: + +1. Use **Scan overview**, `scans.csv`, and `history.csv` to review assessment state and messages. +1. Use `sitecollections.csv` and `webs.csv` to identify failed, unfinished, or unusually slow locations. +1. Confirm whether the assessment used a complete tenant scope, `--siteslist`, or `--sitesfile`. +1. Review `classicpageauditusage.csv` coverage status before using activity counts. + +An assessment that finished can still contain site or web failures. Treat missing locations as a coverage gap, not as a finding that no classic content exists. + +## Prioritize pages + +The current **Pages** Power BI tab uses the basic page inventory fields, such as page type, URL, modification date, and remediation code. + +Use `classicpages.csv` for the enriched readiness fields and to segment pages by: + +- Page type. +- Home-page status. +- Last modification date and modifier. +- Web part count. +- Mapping percentage. +- Unmapped web part types. + +Combine this inventory with `classicpageauditusage.csv` to distinguish frequently used pages from stale or low-use content. + +The current embedded Power BI model doesn't include the enriched home-page, web part, mapping, audit, or page-readiness rollup fields. Analyze those fields directly in the CSV files, or extend the Power BI model before using them in visuals. + +Audit usage is a planning signal, not a raw web analytics counter. Always check `QueryStatus`: + +| Status | Meaning | +| --- | --- | +| `succeeded` | The requested audit window completed. | +| `partial` | One or more audit subqueries failed. Counts are a lower bound. | +| `failed` | Audit collection failed. Counts aren't usable. | +| `skipped` | Audit collection wasn't run for the site, such as in an unsupported cloud. | +| `error` | An unexpected post-scan exception occurred. Review `SkipReason` and the assessment log. | + +When a site's audit query succeeded, the absence of a page row means that no matching events were returned for that page in the requested window. Treat an absent row as zero activity only after confirming successful coverage for the site. + +## Understand page-type coverage + +Wiki, Web Part, and Publishing pages receive detailed web part extraction and mapping analysis. + +Blog, ASPX, and Delve Blog pages are discovered and recorded, but don't receive the same mapping-readiness enrichment. Don't interpret a default or empty mapping value for these page types as a completed readiness analysis. + +Delve Blog pages appear in `classicpages.csv` but aren't included in the current web and site page-count rollups. + +## Interpret mapping results + +`MappingPercentage` is the percentage of extracted web parts that have a usable mapping in the embedded mapping model: + +- A page with no extracted web parts is 100 percent by convention. +- A 100-percent result means that all extracted web part types have mappings. It doesn't guarantee visual, data, permission, or business-behavior parity after transformation. +- A value below 100 with `WebPartCount` greater than zero identifies one or more web part types that require remediation, replacement, or a custom mapping. +- For a Wiki, Web Part, or Publishing page, `WebPartCount=0` and `MappingPercentage=0` can indicate that extraction failed before the mapping calculation ran. Review the assessment log for `Failed to assess the web parts of classic page`. + +Use `classicpagewebparts.csv` for the per-page decision: + +- `IsMappable` means that the web part has a nonempty usable mapping. +- `WebPartProperties` is populated only when `--exportwebpartproperties` was selected. +- Row, column, zone, order, hidden, and closed values help explain the current page layout. + +Use `classicwebpartunique.csv` to identify web part types that affect many pages. `InMappingFile` is weaker than `IsMappable`: it only means that the type has an entry in the mapping file. + +The current Assessment implementation deliberately treats the community mappings for `ScriptEditorWebPart` and `SimpleFormWebPart` as unavailable. It also doesn't support the legacy Scanner's on-disk mapping-file override. + +## Use rollups + +Use `classicwebsummaries.csv` and `classicsitesummaries.csv` to identify: + +- Webs and site collections with the most classic pages. +- Pages with fully mappable or unmapped web parts. +- Average mapping percentage across pages that contain web parts. +- Default home pages that can be replaced as an early modernization wave. + +Rollups are useful for sequencing, but return to the page and web part CSV files before making a remediation decision. + +## Review publishing portals + +`classicpublishingsitesummaries.csv` provides a site-collection-level publishing summary. Detailed legacy web-level publishing configuration isn't included. + +See [Understand publishing portal coverage](assessment-tool-publishing-coverage.md) before replacing an established Publishing Scanner workflow. + +## Power BI and CSV + +The Power BI template is a visualization layer over the CSV output. The CSV files remain the source for: + +- Automation. +- Schema-level validation. +- Joining page, web part, usage, web, and site records. +- Retaining a reviewable evidence snapshot. + +Power BI template generation requires Windows. CSV generation works on Windows, macOS, and Linux. + +For every field and join key, see [Classic pages CSV reference](assessment-tool-classic-pages-csv.md). diff --git a/docs/transform/assessment-tool-classic-pages-requirements.md b/docs/transform/assessment-tool-classic-pages-requirements.md new file mode 100644 index 0000000000..7fde9fcd0b --- /dev/null +++ b/docs/transform/assessment-tool-classic-pages-requirements.md @@ -0,0 +1,85 @@ +--- +title: Requirements for the classic pages assessment +description: Configure authentication, permissions, audit access, and a supported environment for the Microsoft 365 Assessment Tool classic pages component. +ms.date: 07/22/2026 +ms.localizationpriority: high +ms.service: sharepoint +--- + +# Requirements for the classic pages assessment + +The classic pages component assesses SharePoint Online. It doesn't assess SharePoint Server or another on-premises source. + +Download the latest [Microsoft 365 Assessment Tool release](https://github.com/pnp/pnpassessment/releases). Core classic page readiness analysis is available in version 1.15.0 and later. The Microsoft Graph audit usage flow, `--auditlogwindowdays`, and `classicpageauditusage.csv` contract documented in this guidance require version 1.16.0 or later. + +## Authentication + +The tool supports the following authentication modes: + +| Mode | Permission type | Recommended use | +| --- | --- | --- | +| `Application` | Application permissions and a certificate | Full-tenant and unattended assessments. | +| `Interactive` | Delegated permissions | A limited scope on Windows or macOS. | +| `Device` | Delegated permissions | A limited scope on Linux or another device-code scenario. | + +Application authentication is recommended for a full-tenant assessment. A delegated assessment can access only the sites that the signed-in account can access. + +For general application-registration steps, see [Configure authentication](https://pnp.github.io/pnpassessment/using-the-assessment-tool/setupauth.html). + +## Permissions + +The current classic pages implementation requires the following permissions: + +| Authentication | Microsoft Graph | SharePoint | +| --- | --- | --- | +| Application | `Sites.Read.All` application permission | `Sites.FullControl.All` application permission | +| Interactive or Device | `Sites.Read.All` and `User.Read` delegated permissions | `AllSites.FullControl` delegated permission | + +The page inventory reads web part configuration through the SharePoint `LimitedWebPartManager` API. Read-only SharePoint permission isn't sufficient for this operation. + +Grant admin consent for the configured permissions before starting the assessment. + +## Audit usage permission + +Unless you specify `--skipusageinformation`, the assessment queries Microsoft Graph for `ClassicPageViewed`, `ClassicPageCreated`, and `ClassicPageEdited` audit events. + +Add `AuditLogsQuery-SharePoint.Read.All` in the same permission type as the authentication mode: + +| Authentication | Additional Microsoft Graph permission | +| --- | --- | +| Application | `AuditLogsQuery-SharePoint.Read.All` application permission | +| Interactive or Device | `AuditLogsQuery-SharePoint.Read.All` delegated permission | + +Admin consent is required. For delegated authentication, the signed-in account must also be authorized to search audit data in Microsoft Purview. + +If the permission is missing, page discovery and web part analysis can still finish. Audit rows are marked `failed`, and `SkipReason` explains the missing permission. + +## Audit availability + +- Verify that Microsoft Purview Audit is available and recording activity for the tenant. +- New events can take approximately 60 to 90 minutes to become available. +- `--auditlogwindowdays` accepts a value from 1 through 180. The default is 14. +- The Microsoft Graph audit query API used by the tool is available only in the global service. The current tool records audit collection as `skipped` in sovereign-cloud environments. + +Use `--skipusageinformation` when audit data isn't required or isn't available. In that case, `classicpageauditusage.csv` isn't generated. + +## Report platform + +CSV report generation is supported on Windows, macOS, and Linux. Power BI template generation requires Windows. + +To create a Power BI template for an assessment that ran on macOS or Linux, copy the complete assessment-ID folder to the Windows installation directory of the same tool version, and then run the `report` command on Windows. + +## Data handling + +Assessment output can contain tenant and site URLs, application identifiers, user information, audit activity, web part titles, and web part configuration. + +- Use `--skipuserinformation` when the page modifier isn't required. +- Enable `--exportwebpartproperties` only when the configuration details are needed. +- Review and sanitize CSV files before sharing them outside the assessment team. +- Never include certificates, tokens, passwords, or unredacted authentication material with shared report output. + +## Next steps + +- [Run a classic pages assessment](assessment-tool-classic-pages-run.md) +- [Interpret the classic pages report](assessment-tool-classic-pages-report.md) +- [Classic pages CSV reference](assessment-tool-classic-pages-csv.md) diff --git a/docs/transform/assessment-tool-classic-pages-run.md b/docs/transform/assessment-tool-classic-pages-run.md new file mode 100644 index 0000000000..7fde6d3201 --- /dev/null +++ b/docs/transform/assessment-tool-classic-pages-run.md @@ -0,0 +1,130 @@ +--- +title: Run a classic pages assessment +description: Start, scope, monitor, and report a Microsoft 365 Assessment Tool classic pages assessment. +ms.date: 07/22/2026 +ms.localizationpriority: high +ms.service: sharepoint +--- + +# Run a classic pages assessment + +Use `--mode Classic --classicinclude Pages` to run only the classic pages component. If you omit `--classicinclude`, the tool runs all supported Classic components: Pages, Lists, InfoPath, and Extensibility. + +Before you start, complete the [classic pages requirements](assessment-tool-classic-pages-requirements.md). + +## Assess the complete tenant + +Application authentication is recommended for a full-tenant assessment: + +```powershell +microsoft365-assessment.exe start --mode Classic --classicinclude Pages ` + --authmode application ` + --tenant .sharepoint.com ` + --applicationid ` + --certpath "My|CurrentUser|" +``` + +The `--tenant` value is the SharePoint host name without `https://`. + +## Assess selected site collections + +Use `--siteslist` for a short comma-separated list: + +```powershell +microsoft365-assessment.exe start --mode Classic --classicinclude Pages ` + --authmode interactive ` + --tenant .sharepoint.com ` + --applicationid ` + --siteslist "https://.sharepoint.com/sites/site1,https://.sharepoint.com/sites/site2" +``` + +Use `--sitesfile` for a larger scope: + +```powershell +microsoft365-assessment.exe start --mode Classic --classicinclude Pages ` + --authmode application ` + --tenant .sharepoint.com ` + --applicationid ` + --certpath "My|CurrentUser|" ` + --sitesfile "C:\assessment\sites.txt" +``` + +The sites file contains one absolute site-collection URL per line. Don't combine `--siteslist` and `--sitesfile`. + +## Page-specific options + +| Option | Effect | +| --- | --- | +| `--exportwebpartproperties` | Adds serialized web part properties to `classicpagewebparts.csv`. | +| `--skipusageinformation` | Skips Microsoft Graph audit usage collection and doesn't generate `classicpageauditusage.csv`. | +| `--auditlogwindowdays <1-180>` | Sets the audit window. The default is 14 days. | +| `--skipuserinformation` | Omits page modifier information. | +| `--homepageonly` | Assesses only the home page of each web. | +| `--threads ` | Changes parallelism. Start with 4 through 8 threads when throttling is a concern. | + +For example, assess only home pages, export web part properties, and skip audit usage: + +```powershell +microsoft365-assessment.exe start --mode Classic --classicinclude Pages ` + --homepageonly ` + --exportwebpartproperties ` + --skipusageinformation ` + --authmode application ` + --tenant .sharepoint.com ` + --applicationid ` + --certpath "My|CurrentUser|" +``` + +## Scope considerations + +- For a vanity URL tenant, provide `--siteslist` or `--sitesfile`. +- For a Multi-Geo tenant, run a separate assessment for each geo. Use the primary tenant host in `--tenant` and provide the geo's site collections with `--siteslist` or `--sitesfile`. +- Run a small representative scope first to validate authentication, output, audit access, and scan duration. +- The tool supports up to three parallel assessments, but parallel scans increase the risk of throttling. + +## Monitor and control the assessment + +List available assessments: + +```console +microsoft365-assessment.exe list +``` + +Show continuously refreshed status: + +```console +microsoft365-assessment.exe status +``` + +Pause and restart an assessment: + +```console +microsoft365-assessment.exe pause --id +microsoft365-assessment.exe restart --id +``` + +The assessment ID is also the name of the local data folder. Review the log in that folder if progress stops changing. + +## Generate report output + +Generate CSV files and, on Windows, the Power BI template: + +```console +microsoft365-assessment.exe report --id +``` + +Generate only CSV files in a custom location: + +```console +microsoft365-assessment.exe report --id --mode CsvOnly --path "C:\reports" +``` + +By default, output is written to the `report` subfolder under the assessment-ID folder. + +Use `--delimiter Semicolon` when a semicolon-delimited export is required. Use `--open:$false` to prevent the generated report from opening automatically in PowerShell. + +## Next steps + +- [Interpret the classic pages report](assessment-tool-classic-pages-report.md) +- [Classic pages CSV reference](assessment-tool-classic-pages-csv.md) +- [Understand publishing portal coverage](assessment-tool-publishing-coverage.md) diff --git a/docs/transform/assessment-tool-classic-pages.md b/docs/transform/assessment-tool-classic-pages.md new file mode 100644 index 0000000000..1174f31e51 --- /dev/null +++ b/docs/transform/assessment-tool-classic-pages.md @@ -0,0 +1,82 @@ +--- +title: Assess classic SharePoint pages +description: Discover classic pages, inventory their web parts, and measure page modernization readiness. +ms.date: 07/22/2026 +ms.localizationpriority: high +ms.service: sharepoint +--- + +# Assess classic SharePoint pages + +Use the Classic pages component of the Microsoft 365 Assessment Tool to discover classic wiki, web part, publishing, blog, ASPX, and Delve Blog pages in SharePoint Online. + +Wiki, Web Part, and Publishing pages receive detailed Web Part inventory, layout, home-page, and mapping-readiness enrichment. Blog, ASPX, and Delve Blog pages are discovered and recorded, but they don't receive the same Web Part mapping readiness analysis. + +The assessment can optionally collect page view/create/edit activity from the Microsoft Graph audit log. + +In the current implementation, Delve Blog pages appear in `classicpages.csv` but aren't included in the page-type counts in `classicwebsummaries.csv` or `classicsitesummaries.csv`. + +## In this guidance + +- [Requirements](assessment-tool-classic-pages-requirements.md) +- [Run the assessment](assessment-tool-classic-pages-run.md) +- [Interpret the report](assessment-tool-classic-pages-report.md) +- [CSV reference](assessment-tool-classic-pages-csv.md) +- [Publishing portal coverage](assessment-tool-publishing-coverage.md) + +## Run the assessment + +```powershell +microsoft365-assessment.exe start --mode Classic --classicinclude Pages ` + --authmode application ` + --tenant .sharepoint.com ` + --applicationid ` + --certpath "My|CurrentUser|" +``` + +Page-specific options: + +| Option | Purpose | +| --- | --- | +| `--exportwebpartproperties` | Exports Web Part properties as JSON. | +| `--skipusageinformation` | Skips audit log usage collection. | +| `--auditlogwindowdays` | Sets the audit window from 1 through 180 days. The default is 14. | +| `--skipuserinformation` | Omits user information such as Modified By. | +| `--homepageonly` | Assesses only the home page of each Web. | + +For authentication, SharePoint access, audit permissions, platform support, and sensitive-output guidance, see [Requirements for the classic pages assessment](assessment-tool-classic-pages-requirements.md). + +## Output + +| File | Content | +| --- | --- | +| `classicpages.csv` | One row per classic page, including page type, layout, home-page flags, mapping percentage, and unmapped Web Parts. | +| `classicpagewebparts.csv` | One row per Web Part found on a classic page. | +| `classicwebpartunique.csv` | One row per unique Web Part type across the assessment. | +| `classicpageauditusage.csv` | Page view/create/edit activity when audit collection runs. | +| `classicwebsummaries.csv` | Per-Web page counts and readiness rollups. | +| `classicsitesummaries.csv` | Per-site-collection page counts and readiness rollups. | +| `classicpublishingsitesummaries.csv` | Publishing Portal site-level summary. | + +The Power BI template includes a **Pages** report tab and shared summary/scan-overview tabs. + +For schemas and join keys, see [Classic pages CSV reference](assessment-tool-classic-pages-csv.md). + +## Understand mapping results + +For Wiki, Web Part, and Publishing pages, `MappingPercentage` measures whether each Web Part has a usable mapping in the embedded mapping model. It doesn't guarantee that the transformed page will preserve all visual or business behavior. + +For Blog, ASPX, and Delve Blog pages, don't interpret default or empty Web Part readiness values as a completed mapping analysis. + +For an enriched page, `WebPartCount=0` and `MappingPercentage=100` means that no Web Parts were extracted. `WebPartCount=0` and `MappingPercentage=0` can indicate that page enrichment failed; review the assessment log for that page. + +`InMappingFile` in `classicwebpartunique.csv` only indicates that a Web Part type is present in the mapping file. Use `IsMappable` in `classicpagewebparts.csv` and the per-page mapping percentage to determine whether a usable mapping was found. + +For a complete interpretation workflow, see [Interpret the classic pages assessment report](assessment-tool-classic-pages-report.md). + +## Additional open-source documentation + +- [Classic SharePoint Pages Assessment](https://pnp.github.io/pnpassessment/classic/readme.html) +- [Requirements](https://pnp.github.io/pnpassessment/classic/requirements.html) +- [Run an assessment](https://pnp.github.io/pnpassessment/classic/assess.html) +- [Power BI report](https://pnp.github.io/pnpassessment/classic/report-intro.html) diff --git a/docs/transform/assessment-tool-common-reports.md b/docs/transform/assessment-tool-common-reports.md new file mode 100644 index 0000000000..ab13a7a197 --- /dev/null +++ b/docs/transform/assessment-tool-common-reports.md @@ -0,0 +1,128 @@ +--- +title: Common Microsoft 365 Assessment CSV files +description: Understand the scans, properties, history, site collection, and web CSV files exported by every Microsoft 365 Assessment Tool report. +ms.date: 07/22/2026 +ms.localizationpriority: high +ms.service: sharepoint +--- + +# Common Microsoft 365 Assessment CSV files + +Every Microsoft 365 Assessment Tool report exports these files: + +```text +scans.csv +properties.csv +history.csv +sitecollections.csv +webs.csv +``` + +Use the common files to validate scope and coverage before interpreting a module-specific finding. + +## Join keys + +| Relationship | Keys | +| --- | --- | +| Assessment to any output | `ScanId` | +| Assessment to site collection | `ScanId`, `SiteUrl` | +| Assessment to web | `ScanId`, `SiteUrl`, `WebUrl` | + +## `scans.csv` + +This file contains one row for the assessment. + +| Column | Description | +| --- | --- | +| `ScanId` | Assessment identifier. | +| `StartDate` | First start time. | +| `EndDate` | Completion, pause, or termination time when available. | +| `Status` | `Queued`, `Running`, `Pausing`, `Paused`, `Finished`, or `Terminated`. | +| `PreScanStatus` | Status of component-specific pre-assessment work. | +| `PostScanStatus` | Status of the post-scan processing phase. | +| `Version` | Assessment Tool version. | +| `CLIMode` | Selected assessment mode. | +| `CLITenant` | SharePoint tenant host supplied to the CLI. | +| `CLITenantId` | Microsoft Entra tenant identifier when recorded. | +| `CLIEnvironment` | Selected Microsoft 365 cloud environment. | +| `CLISiteList` | Site list supplied directly to the CLI. | +| `CLISiteFile` | Site-list file path supplied to the CLI. | +| `CLIAuthMode` | Application, Interactive, or Device authentication. | +| `CLIApplicationId` | Entra application identifier. | +| `CLICertPath` | Certificate-store path supplied to the CLI. | +| `CLICertFile` | Certificate-file path supplied to the CLI. | +| `CLICertFilePassword` | Locally protected certificate password value when one was supplied. | +| `CLIThreads` | Configured parallel operation count. | + +> [!CAUTION] +> Treat `scans.csv` as sensitive operational data. It can disclose tenant identifiers, application identifiers, site scope, local paths, and protected authentication configuration. Don't publish it without review and sanitization. + +## `properties.csv` + +This file contains persisted assessment options. + +| Column | Description | +| --- | --- | +| `ScanId` | Assessment identifier. | +| `Name` | Option or property name. | +| `Type` | Stored value type. | +| `Value` | Stored option value. | + +Use this file to verify component selection and module-specific options, such as page scan flags. + +## `history.csv` + +This file contains assessment lifecycle events and messages. + +| Column | Description | +| --- | --- | +| `ScanId` | Assessment identifier. | +| `Id` | Local event identifier. | +| `Event` | Event category. | +| `EventDate` | Event time. | +| `Message` | Operational message. | + +Use `history.csv` together with the assessment log when report coverage or lifecycle state is unclear. + +## `sitecollections.csv` + +This file contains one row per site collection in scope. + +| Column | Description | +| --- | --- | +| `ScanId` | Assessment identifier. | +| `SiteUrl` | Absolute site-collection URL. | +| `StartDate` | Site-collection processing start time. | +| `EndDate` | Site-collection processing end time. | +| `ScanDuration` | Processing duration recorded by the tool. | +| `Status` | `Queued`, `Running`, `Finished`, or `Failed`. | + +The internal error and stack-trace properties aren't exported to this CSV. Use the assessment log and `history.csv` for failure details. + +## `webs.csv` + +This file contains one row per discovered web queued for processing. Use `Status` to determine whether processing started or finished. + +| Column | Description | +| --- | --- | +| `ScanId` | Assessment identifier. | +| `SiteUrl` | Absolute site-collection URL. | +| `WebUrl` | Site-collection-relative web URL. `/` represents the root web. | +| `WebUrlAbsolute` | Absolute web URL. | +| `StartDate` | Web processing start time. | +| `EndDate` | Web processing end time. | +| `ScanDuration` | Processing duration recorded by the tool. | +| `Status` | `Queued`, `Running`, `Finished`, or `Failed`. | +| `Template` | Web template. | + +The internal error and stack-trace properties aren't exported to this CSV. + +## Validate coverage + +1. Confirm the assessment row and expected mode in `scans.csv`. +1. Confirm component options in `properties.csv`. +1. Identify failed or unfinished site collections and webs. +1. Review `history.csv` and the local log for failure details. +1. Only then interpret module-specific counts and findings. + +For the complete mode-specific inventory, see [Microsoft 365 Assessment reports and CSV files](assessment-tool-reports.md). diff --git a/docs/transform/assessment-tool-extensibility-csv.md b/docs/transform/assessment-tool-extensibility-csv.md new file mode 100644 index 0000000000..83a57e88aa --- /dev/null +++ b/docs/transform/assessment-tool-extensibility-csv.md @@ -0,0 +1,86 @@ +--- +title: Extensibility assessment CSV reference +description: Understand the classic extensibility and incompatible user custom action CSV files generated by the Microsoft 365 Assessment Tool. +ms.date: 07/22/2026 +ms.localizationpriority: high +ms.service: sharepoint +--- + +# Extensibility assessment CSV reference + +The Extensibility component writes: + +```text +classicextensibilities.csv +classicusercustomactions.csv +``` + +Both files use `ScanId`, `SiteUrl`, and `WebUrl` to identify the affected web. + +## `classicextensibilities.csv` + +This file contains one row per web with a detected custom master page, alternate CSS, or incompatible user custom action. + +| Column | Description | +| --- | --- | +| `ScanId` | Assessment identifier. | +| `SiteUrl` | Absolute site-collection URL. | +| `WebUrl` | Site-collection-relative web URL. `/` represents the root web. | +| `UsesCustomMasterPage` | Indicates that `MasterPage` or `CustomMasterPage` isn't in the tool's out-of-box exclusion list. | +| `MasterPage` | Custom value from the web's system master-page property. | +| `CustomMasterPage` | Custom value from the web's site master-page property. | +| `UsesCustomCSS` | Indicates that alternate CSS is configured. | +| `AlternateCSS` | Alternate CSS URL. | +| `UsesCustomTheme` | Compatibility field. The current Extensibility component doesn't populate custom-theme findings. | +| `UsesUserCustomAction` | Indicates that at least one incompatible user custom action was stored for the web. | +| `HasSharePointAddIns` | Compatibility field. The current Extensibility component doesn't populate SharePoint Add-In findings. | +| `RemediationCode` | Comma-separated Extensibility remediation codes found for the web. | + +Out-of-box master pages are excluded. A web with no detected Extensibility finding doesn't receive a row. + +## `classicusercustomactions.csv` + +This file contains incompatible Site-, Web-, or List-scoped user custom actions. + +| Column | Description | +| --- | --- | +| `ScanId` | Assessment identifier. | +| `SiteUrl` | Absolute site-collection URL. | +| `WebUrl` | Site-collection-relative web URL. `/` represents the root web. | +| `Id` | User custom action identifier. | +| `Title` | Display title. | +| `Name` | Internal name. | +| `Location` | Custom action location. | +| `RegistrationType` | Registration type associated with `RegistrationId`. | +| `RegistrationId` | Registration target. | +| `CommandAction` | JavaScript command extracted from a command UI handler when detected. | +| `CommandUIExtension` | Command UI extension XML. | +| `Description` | Description. | +| `ScriptBlock` | Inline script captured for an incompatible location. | +| `ScriptSrc` | External script source captured for an incompatible location. | +| `Url` | Configured action URL. | +| `Problem` | Detected problem, such as `InvalidLocation` or `JavaScriptEmbedded`. | +| `ListId` | List identifier for a List-scoped action. | +| `ListUrl` | List URL for a List-scoped action. | +| `ListTitle` | List title for a List-scoped action. | +| `RemediationCode` | `CE6`, `CE8`, or `CE9`, depending on scope and detected incompatibility. | + +The row key is `ScanId`, `SiteUrl`, `WebUrl`, and `Id`. + +Only actions with a populated `Problem` are stored. Compatible actions don't appear in this file. For a List-scoped incompatible action, the current implementation assigns `CE6` after recording the detected problem. + +Site-scoped actions are evaluated when the root web is scanned. Web-scoped and List-scoped actions are evaluated in their respective web. + +## Interpret remediation codes + +| Code | Meaning in this output | +| --- | --- | +| `CE3` | Custom master page. | +| `CE4` | Alternate CSS. | +| `CE6` | List-scoped incompatible user custom action. | +| `CE8` | JavaScript embedded in a command UI handler. | +| `CE9` | Other incompatible custom-action location. | + +`CE5` exists in the model for custom themes but isn't populated by the current component. + +For execution guidance, see [Assess classic SharePoint extensibility](assessment-tool-extensibility.md). diff --git a/docs/transform/assessment-tool-extensibility.md b/docs/transform/assessment-tool-extensibility.md new file mode 100644 index 0000000000..3d2ef312af --- /dev/null +++ b/docs/transform/assessment-tool-extensibility.md @@ -0,0 +1,97 @@ +--- +title: Assess classic SharePoint extensibility +description: Find classic branding and incompatible user custom actions with the Microsoft 365 Assessment Tool. +ms.date: 07/22/2026 +ms.localizationpriority: high +ms.service: sharepoint +--- + +# Assess classic SharePoint extensibility + +Use the Extensibility component of the Microsoft 365 Assessment Tool to identify classic branding and user customizations that require remediation before adopting modern SharePoint experiences. + +## Run the assessment + +```powershell +microsoft365-assessment.exe start --mode Classic --classicinclude Extensibility ` + --skipusageinformation ` + --authmode application ` + --tenant .sharepoint.com ` + --applicationid ` + --certpath "My|CurrentUser|" +``` + +The current Classic post-scan path starts page audit collection even when Pages isn't selected. Use `--skipusageinformation` for an Extensibility-only assessment unless you intentionally want that audit query. + +## What the assessment checks + +The component identifies: + +- Custom site and system master pages. +- Alternate CSS. +- Site-scoped, Web-scoped, and List-scoped user custom actions. +- Script blocks and external script sources. +- JavaScript commands embedded in command UI extensions. +- Incompatible custom-action locations. + +Out-of-box master pages are excluded from the custom master-page result. + +## Output + +### `classicextensibilities.csv` + +One row per affected Web, including: + +- Custom master-page paths. +- Alternate CSS. +- Presence of incompatible user custom actions. +- Aggregated remediation codes. + +### `classicusercustomactions.csv` + +One row per incompatible user custom action, including: + +- Title, name, location, and registration information. +- Command action and command UI extension. +- Script block and script source. +- List ID, URL, and title for List-scoped actions. +- Detected problem and remediation code. + +The Classic Power BI template includes **Extensibility** and **Extensibility: user custom actions** tabs. + +For the exact fields and row-selection behavior, see [Extensibility assessment CSV reference](assessment-tool-extensibility-csv.md). + +## Use the Power BI report + +The **Extensibility** tab provides a per-web table for: + +- Custom master pages. +- Alternate CSS. +- Incompatible user custom actions. +- Remediation codes. + +It also includes site, web, master-page, CSS, custom-action, theme, and Add-In filters. The current Extensibility component doesn't populate custom-theme or SharePoint Add-In findings, so don't interpret the corresponding compatibility fields as a complete assessment of those scenarios. + +The **Extensibility: user custom actions** tab provides: + +- A summary table with web, location, problem, List title, and remediation code. +- A details table for script source, script block, command UI extension, and command action. +- Charts grouped by location and detected problem. + +Use the CSV files for exact identifiers, registration metadata, row selection, and automation. + +## Remediation codes + +| Code | Meaning | +| --- | --- | +| `CE3` | Custom master page. | +| `CE4` | Alternate CSS. | +| `CE6` | List Ribbon extension or user custom action. | +| `CE8` | Embedded JavaScript. | +| `CE9` | Other incompatible UI extension or location. | + +The model contains a `CE5` custom-theme code, but the current Extensibility component doesn't populate custom-theme findings. + +## Scope boundaries + +The Extensibility component doesn't replace Microsoft 365 group connection readiness. It also doesn't assess SharePoint Add-Ins or Azure ACS inside Classic mode; use the separate `AddInsACS` assessment. diff --git a/docs/transform/assessment-tool-lists.md b/docs/transform/assessment-tool-lists.md new file mode 100644 index 0000000000..1a38ca6d11 --- /dev/null +++ b/docs/transform/assessment-tool-lists.md @@ -0,0 +1,96 @@ +--- +title: Assess modern list and library readiness +description: Find lists and libraries that render in the classic experience and understand why. +ms.date: 07/22/2026 +ms.localizationpriority: high +ms.service: sharepoint +--- + +# Assess modern list and library readiness + +Use the Lists component of the Microsoft 365 Assessment Tool to find SharePoint Online lists and libraries that don't render in the modern experience. + +## Run the assessment + +```powershell +microsoft365-assessment.exe start --mode Classic --classicinclude Lists ` + --skipusageinformation ` + --authmode application ` + --tenant .sharepoint.com ` + --applicationid ` + --certpath "My|CurrentUser|" +``` + +If `--classicinclude` is omitted, the Classic assessment also runs the Pages, InfoPath, and Extensibility components. + +The current Classic post-scan path starts page audit collection even when Pages isn't selected. Use `--skipusageinformation` for a Lists-only assessment unless you intentionally want that audit query. + +## What the assessment checks + +For each list or library, the assessment reads: + +- List template and template ID. +- Configured List Experience. +- Default view page render type. +- Item count and last user modification date. +- Whether the template is classic-by-design. + +Only lists that are classic-by-design, explicitly forced to Classic, or unable to render Modern are written to `classiclists.csv`. Modern lists are counted in the Web and site-collection summaries. + +## Output + +`classiclists.csv` contains: + +| Column | Description | +| --- | --- | +| `ScanId` | Assessment identifier. | +| `SiteUrl` | Absolute site-collection URL. | +| `WebUrl` | Site-collection-relative web URL. `/` represents the root web. | +| `ListId` | List identifier. | +| `ListUrl` | Server-relative list or library URL. | +| `ListTitle` | List title. | +| `ListTemplateType` | Named List template type. | +| `ListTemplate` | Numeric List template ID. | +| `ListExperience` | Configured `Auto`, `NewExperience`, or `ClassicExperience` value. | +| `ClassicByDesign` | Indicates that the List template doesn't have a modern experience. | +| `DefaultViewRenderType` | SharePoint's reason that the default view does or doesn't render Modern. | +| `LastModifiedAt` | Last user modification time. | +| `ItemCount` | Number of items. | +| `RemediationCode` | Normalized readiness category from `CL1` through `CL6`. It can be empty for an ignored or undefined render type. | + +The row key is `ScanId`, `SiteUrl`, `WebUrl`, and `ListId`. + +The Classic Power BI template includes **Lists** and **Lists details** tabs. + +## Use the Power BI report + +The **Lists** tab provides: + +- A table with web, list title, template, modification date, item count, classic-by-design status, and remediation code. +- Site, web, modification-date, and classic-by-design filters. +- A **Classic by design** chart. + +The **Lists details** tab adds: + +- `DefaultViewRenderType`. +- `ListExperience`. +- Charts for the render reason, configured List Experience, and List template. + +Use `classiclists.csv` when you need stable join keys, exact enum strings, or automation. The Power BI template is a visualization over the same list data and doesn't make the output field-for-field compatible with the legacy Scanner. + +## Remediation codes + +| Code | Meaning | +| --- | --- | +| `CL1` | A List, Web, Site, or Tenant setting forces Classic. | +| `CL2` | JSLink, XslLink, or a code-based custom action is incompatible with Modern. | +| `CL3` | The List page or form is customized, unghosted, or contains an incompatible Web Part configuration. | +| `CL4` | The List template is classic-by-design or unsupported in Modern. | +| `CL5` | An incompatible field type prevents Modern rendering. | +| `CL6` | A special or incompatible view type prevents Modern rendering. | + +## Legacy Scanner differences + +The legacy Scanner exposed many individual Boolean and detail columns, such as the exact JSLink fields, blocking feature scope, and page-load exception. The Assessment output normalizes most of these details into `DefaultViewRenderType` and `RemediationCode`. + +Don't treat `classiclists.csv` as field-for-field compatible with `ModernizationListScanResults.csv`. diff --git a/docs/transform/assessment-tool-overview.md b/docs/transform/assessment-tool-overview.md new file mode 100644 index 0000000000..8ce1a1eab8 --- /dev/null +++ b/docs/transform/assessment-tool-overview.md @@ -0,0 +1,70 @@ +--- +title: Microsoft 365 Assessment Tool overview +description: Learn what the Microsoft 365 Assessment Tool assesses and how to get started. +ms.date: 07/22/2026 +ms.localizationpriority: high +ms.service: sharepoint +--- + +# Microsoft 365 Assessment Tool overview + +The Microsoft 365 Assessment Tool is an open-source command-line tool that collects data from Microsoft 365 and generates CSV reports. On Windows, it also generates a Power BI template. Use the reports to plan modernization, adoption, and retirement work. + +## Public assessment modules + +| Module | CLI mode | Purpose | +| --- | --- | --- | +| Classic | `Classic` | Assesses classic pages, lists, InfoPath usage, and classic extensibility components selected with `--classicinclude`. | +| InfoPath Forms Services | `InfoPath` | Inventories InfoPath usage and supports retirement planning. | +| SharePoint Add-Ins and Azure ACS | `AddInsACS` | Inventories SharePoint Add-Ins and Azure ACS principals. | +| SharePoint Alerts | `Alerts` | Inventories SharePoint Alerts for retirement planning. | + +The Workflow mode is retired. Workflow implementation and report artifacts remain in the repository for compatibility with existing assessment data, but a new Workflow assessment can't be started. + +## Get started + +1. [Download the latest release](https://github.com/pnp/pnpassessment/releases). +1. [Configure authentication](https://pnp.github.io/pnpassessment/using-the-assessment-tool/setupauth.html). +1. Review the requirements for the selected assessment module. +1. Run `microsoft365-assessment.exe --help` and `microsoft365-assessment.exe start --help`. +1. Start an assessment. +1. Monitor it with the `status` and `list` actions. +1. Generate a report with the `report` action. + +The detailed open-source project documentation remains available at [pnp.github.io/pnpassessment](https://pnp.github.io/pnpassessment/index.html). + +## Common report output + +Every assessment report exports: + +```text +scans.csv +properties.csv +history.csv +sitecollections.csv +webs.csv +``` + +The selected mode adds module-specific CSV files. On Windows, report generation also creates a Power BI template. On macOS and Linux, copy the assessment data to Windows if you need to generate the Power BI template. For the complete inventory, see [Microsoft 365 Assessment reports and CSV files](assessment-tool-reports.md). + +## Classic assessment components + +When `--mode Classic` is selected, use `--classicinclude` to choose one or more components: + +```text +InfoPath +Pages +Lists +Extensibility +``` + +If `--classicinclude` is omitted, all supported Classic components run. Workflow is retired, and Add-Ins/Azure ACS use the separate `AddInsACS` mode. + +## Related guidance + +- [Classic pages assessment](assessment-tool-classic-pages.md) +- [Classic pages requirements](assessment-tool-classic-pages-requirements.md) +- [Run a classic pages assessment](assessment-tool-classic-pages-run.md) +- [Lists and libraries assessment](assessment-tool-lists.md) +- [Extensibility assessment](assessment-tool-extensibility.md) +- [Compare assessment tools](sharepoint-modernization-assessment-comparison.md) diff --git a/docs/transform/assessment-tool-publishing-coverage.md b/docs/transform/assessment-tool-publishing-coverage.md new file mode 100644 index 0000000000..2aa7187220 --- /dev/null +++ b/docs/transform/assessment-tool-publishing-coverage.md @@ -0,0 +1,89 @@ +--- +title: Understand publishing portal assessment coverage +description: Compare Microsoft 365 Assessment Tool publishing output with the legacy SharePoint Modernization Scanner publishing reports. +ms.date: 07/22/2026 +ms.localizationpriority: high +ms.service: sharepoint +--- + +# Understand publishing portal assessment coverage + +The Microsoft 365 Assessment Tool provides page-level publishing readiness and a site-collection-level publishing portal summary. It doesn't reproduce the complete web-level publishing configuration inventory from the legacy SharePoint Modernization Scanner. + +## Run the required components + +Include both Pages and Extensibility to populate page readiness, page layouts, custom master pages, and alternate CSS: + +```powershell +microsoft365-assessment.exe start --mode Classic ` + --classicinclude Pages Extensibility ` + --authmode application ` + --tenant .sharepoint.com ` + --applicationid ` + --certpath "My|CurrentUser|" +``` + +If Extensibility isn't included, the custom master-page fields in `classicpublishingsitesummaries.csv` aren't populated. + +## Legacy report mapping + +| Legacy Scanner output | Assessment output | Coverage | +| --- | --- | --- | +| `ModernizationPublishingSiteScanResults.csv` | `classicpublishingsitesummaries.csv` | Close site-collection-level match. | +| `ModernizationPublishingWebScanResults.csv` | `classicwebsummaries.csv` plus `classicextensibilities.csv` | Partial. The complete publishing configuration isn't available. | +| `ModernizationPublishingPageScanResults.csv` | `classicpages.csv` plus `classicpagewebparts.csv` | Partial. Core page, layout, modification, and web part readiness is available, but several publishing-specific fields aren't. | +| Publishing readiness Excel dashboard | Classic Power BI template | Different model. The legacy complexity categorization isn't reproduced. | + +## Site-collection summary + +`classicpublishingsitesummaries.csv` provides the same core site-collection fields as the legacy publishing site report: + +- Publishing web count. +- Publishing page count. +- Used custom site and system master pages. +- Used page layouts. +- Latest publishing-page modification date. + +Use this file to identify large or stale publishing portals. + +## Page-level coverage + +Assessment provides: + +- Page URL, name, type, library, layout, modification time, and modifier. +- Home-page classification. +- Normalized one-row-per-web-part inventory. +- Mapping percentage and unmapped web part types. +- Optional page view/create/edit audit activity. + +Assessment doesn't provide these legacy publishing page fields: + +- Content type name and ID. +- Page layout file and whether the layout was customized. +- Global, security-group, and SharePoint-group audience values. +- The legacy fixed `WPType1` through `WPType20` and `WPTitle1` through `WPTitle20` columns. + +The normalized `classicpagewebparts.csv` file replaces the fixed web part columns and doesn't have the legacy 20-web-part limit. + +## Web-level gaps + +The current Assessment output doesn't reproduce the full `ModernizationPublishingWebScanResults.csv` contract, including: + +- Site-collection complexity and web depth categorization. +- Web language and variation labels. +- Allowed and default page-layout configuration. +- Global and current navigation settings. +- Managed navigation term-set identifiers. +- Page library scheduling, moderation, versioning, minor versions, and approval workflow configuration. +- Broken permission inheritance. +- Web administrators and owners. + +If a migration plan depends on these fields, continue to use the legacy Scanner publishing mode for that inventory and retain its report schema with the project evidence. + +## Tool choice + +Use Assessment for new SharePoint Online page discovery, web part readiness, usage, and site-level publishing summaries. + +Use the legacy Scanner only when you need its established report contract or the unsupported web-level publishing configuration. Don't assume that an empty Assessment field proves that the corresponding publishing feature isn't configured. + +For field-level Assessment output, see [Classic pages CSV reference](assessment-tool-classic-pages-csv.md). diff --git a/docs/transform/assessment-tool-reports.md b/docs/transform/assessment-tool-reports.md new file mode 100644 index 0000000000..ce53cab272 --- /dev/null +++ b/docs/transform/assessment-tool-reports.md @@ -0,0 +1,88 @@ +--- +title: Microsoft 365 Assessment reports and CSV files +description: Understand the Power BI templates, report tabs, and CSV files produced by the Microsoft 365 Assessment Tool. +ms.date: 07/22/2026 +ms.localizationpriority: high +ms.service: sharepoint +--- + +# Microsoft 365 Assessment reports and CSV files + +The Microsoft 365 Assessment Tool stores assessment data locally and generates CSV exports for the selected mode. On Windows, it also generates a Power BI template. On macOS and Linux, copy the assessment data to Windows if you need to generate the Power BI template. + +## Public report templates + +| Mode | Power BI template | Report tabs | +| --- | --- | --- | +| Classic | `ClassicAssessmentReport.pbit` | Start; Summary; Sites overview; Extensibility; Extensibility: user custom actions; InfoPath; Lists; Lists details; Pages; Workflow; Workflow details; Scan overview | +| InfoPath | `InfoPathAssessmentReport.pbit` | InfoPath; Scan overview | +| AddInsACS | `AddInsACSAssessmentReport.pbit` | SharePoint AddIns; Add-In details; ACS Principals; ACS Details; Scan overview | +| Alerts | `AlertsAssessmentReport.pbit` | Overview; Details; Scan overview | + +Workflow tabs remain in the Classic template for compatibility with existing data. Workflow is retired and isn't a supported component for new assessments. + +The current Classic Power BI model uses the basic page inventory. Enriched home-page, web part, mapping, audit, and page-readiness rollup fields are available in CSV output but aren't included in the embedded visuals. + +## Common CSV files + +Every assessment report exports: + +| File | Purpose | +| --- | --- | +| `scans.csv` | Assessment ID, dates, status, version, mode, scope, and authentication configuration. | +| `properties.csv` | Assessment properties and component options. | +| `history.csv` | Assessment lifecycle events and messages. | +| `sitecollections.csv` | Site-collection scan status and duration. | +| `webs.csv` | Web scan status, template, and duration. | + +> [!CAUTION] +> Common report files can contain tenant URLs, application identifiers, site scope, operational messages, and protected authentication configuration values. Review and sanitize these files before sharing them outside the assessment team. Never publish passwords, certificates, tokens, or unredacted tenant identifiers. + +For exact fields, status values, and join keys, see [Common Microsoft 365 Assessment CSV files](assessment-tool-common-reports.md). + +## Classic mode files + +Classic mode exports: + +```text +workflows.csv +classicextensibilities.csv +classicinfopath.csv +classiclists.csv +classicpages.csv +classicpagewebparts.csv +classicwebpartunique.csv +classicusercustomactions.csv +classicsitesummaries.csv +classicwebsummaries.csv +classicpublishingsitesummaries.csv +``` + +`classicpageauditusage.csv` is added only when audit collection produces rows. + +The `workflows.csv` compatibility output can be empty because Workflow is retired. + +For Classic page schemas, join keys, and coverage rules, see [Classic pages CSV reference](assessment-tool-classic-pages-csv.md). For an interpretation workflow, see [Interpret the classic pages assessment report](assessment-tool-classic-pages-report.md). + +## Other mode-specific files + +| Mode | Files | +| --- | --- | +| InfoPath | `classicinfopath.csv` | +| AddInsACS | `classicaddins.csv`, `classicacsprincipals.csv`, `classicacsprincipalsites.csv`, `classicacsprincipalsitescopedpermissions.csv`, `classicacsprincipaltenantcopedpermissions.csv` | +| Alerts | `alerts.csv` | + +Across current public modes, the report contract defines 23 distinct CSV file names, including the optional page audit usage file. + +## Generate reports + +```console +microsoft365-assessment.exe list +microsoft365-assessment.exe report --id +``` + +To export only CSV files: + +```console +microsoft365-assessment.exe report --id --mode CsvOnly --path "c:\reports" +``` diff --git a/docs/transform/sharepoint-modernization-assessment-comparison.md b/docs/transform/sharepoint-modernization-assessment-comparison.md new file mode 100644 index 0000000000..679f575706 --- /dev/null +++ b/docs/transform/sharepoint-modernization-assessment-comparison.md @@ -0,0 +1,32 @@ +--- +title: Compare SharePoint modernization assessment tools +description: Compare Microsoft 365 Assessment, the legacy SharePoint Modernization Scanner, and on-premises assessment tools. +ms.date: 07/22/2026 +ms.localizationpriority: high +ms.service: sharepoint +--- + +# Compare SharePoint modernization assessment tools + +Use the Microsoft 365 Assessment Tool for new SharePoint Online assessments when it supports the scenario. Continue to use the legacy SharePoint Modernization Scanner only for an established workflow or a capability that isn't yet available in Assessment. + +## Capability comparison + +| Capability | Microsoft 365 Assessment Tool | Legacy Modernization Scanner | Guidance | +| --- | --- | --- | --- | +| Classic page discovery and Web Part readiness | Available | Available | Use Assessment for new work. | +| Modern list and library readiness | Available; output is normalized and isn't field-for-field compatible | Available | Use Assessment for new work; retain Scanner documentation for existing reports. | +| Classic extensibility and user custom actions | Available | Available as part of Groupify/site reports | Use Assessment for new work. | +| InfoPath | Available | Available | Use Assessment. | +| Blog pages | Included in Classic pages | Dedicated legacy reports | Use Assessment for new discovery. | +| Publishing pages and portal-level summary | Page readiness and site-level summary available; full Web-level configuration isn't available | Available | Use Assessment where sufficient; see [publishing portal coverage](assessment-tool-publishing-coverage.md) before replacing a legacy workflow. | +| Microsoft 365 group connection readiness | Not available | Available | Use the legacy Scanner. | +| SharePoint Designer customized forms | Not available as a dedicated assessment | Available | Use the legacy Scanner. | +| Workflow 2013 | Retired | Legacy workflow reports | Follow workflow retirement guidance instead of starting a new scan. | +| SharePoint Server/on-premises | Not supported | Not supported | Use SMAT or another on-premises assessment tool. | + +## Output compatibility + +Assessment and Scanner output files don't use the same names or schemas. Before reusing an automation script built for Scanner CSV files, map each required field to the corresponding Assessment output and verify any missing detail. + +For current Assessment output, see [Microsoft 365 Assessment reports and CSV files](assessment-tool-reports.md). From 3eff006c9bc1c72d973e6a1c631b8912d4ba63dc Mon Sep 17 00:00:00 2001 From: titao Date: Thu, 23 Jul 2026 12:45:46 +0800 Subject: [PATCH 02/15] Address SharePoint documentation review feedback Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: a7db0d98-be53-48c2-9488-9a226f457144 --- docs/toc.yml | 2 +- .../assess-sharepoint-modernization.md | 23 ++++++++------- .../assessment-tool-classic-pages-csv.md | 19 +++++++----- .../assessment-tool-classic-pages-report.md | 4 +-- ...essment-tool-classic-pages-requirements.md | 17 +++++------ .../assessment-tool-classic-pages-run.md | 17 +++++++---- .../assessment-tool-classic-pages.md | 10 ++++--- .../assessment-tool-common-reports.md | 8 ++--- .../assessment-tool-extensibility-csv.md | 6 ++-- .../assessment-tool-extensibility.md | 29 ++++++++++++++----- docs/transform/assessment-tool-lists.md | 27 +++++++++++++---- docs/transform/assessment-tool-overview.md | 14 +++++---- .../assessment-tool-publishing-coverage.md | 18 +++++++++--- docs/transform/assessment-tool-reports.md | 10 +++++-- ...int-modernization-assessment-comparison.md | 8 ++--- 15 files changed, 136 insertions(+), 76 deletions(-) diff --git a/docs/toc.yml b/docs/toc.yml index e8b92833be..93e57e09d1 100644 --- a/docs/toc.yml +++ b/docs/toc.yml @@ -1836,7 +1836,7 @@ - name: Assess SharePoint modernization href: transform/assess-sharepoint-modernization.md items: - - name: Microsoft 365 Assessment Tool + - name: Microsoft 365 Assessment tool href: transform/assessment-tool-overview.md items: - name: Classic pages diff --git a/docs/transform/assess-sharepoint-modernization.md b/docs/transform/assess-sharepoint-modernization.md index 9c54e20206..40be869c2f 100644 --- a/docs/transform/assess-sharepoint-modernization.md +++ b/docs/transform/assess-sharepoint-modernization.md @@ -1,7 +1,7 @@ --- title: Assess SharePoint modernization description: Choose an assessment tool and start collecting the data needed to modernize SharePoint. -ms.date: 07/22/2026 +ms.date: 07/23/2026 ms.localizationpriority: high ms.service: sharepoint --- @@ -10,23 +10,26 @@ ms.service: sharepoint Assess your environment before you plan remediation or migration. The assessment identifies the classic features and customizations that are still in use, provides usage and readiness data, and helps you decide which sites and pages to modernize first. -For new SharePoint Online assessments, start with the [Microsoft 365 Assessment Tool](assessment-tool-overview.md). The tool is open source and produces CSV output for supported modernization, adoption, and retirement scenarios. On Windows, it can also generate a Power BI template. +For new SharePoint Online assessments, start with the [Microsoft 365 Assessment tool](assessment-tool-overview.md). The tool is open source and produces CSV output for supported modernization, adoption, and retirement scenarios. On Windows, it can also generate a Power BI template. ## Choose an assessment tool | Scenario | Recommended tool | | --- | --- | -| Assess classic SharePoint pages | [Microsoft 365 Assessment Tool - Classic pages](assessment-tool-classic-pages.md) | -| Assess modern list and library readiness | [Microsoft 365 Assessment Tool - Lists and libraries](assessment-tool-lists.md) | -| Find custom master pages, alternate CSS, and incompatible user custom actions | [Microsoft 365 Assessment Tool - Extensibility](assessment-tool-extensibility.md) | -| Assess InfoPath, SharePoint Add-Ins, Azure ACS, or SharePoint Alerts | [Microsoft 365 Assessment Tool](assessment-tool-overview.md) | -| Assess Microsoft 365 group connection readiness | Legacy SharePoint Modernization Scanner | -| Inventory SharePoint Designer customized forms | Legacy SharePoint Modernization Scanner | -| Collect the complete legacy Publishing Portal Web-level inventory | Legacy SharePoint Modernization Scanner | +| Assess classic SharePoint pages | [Microsoft 365 Assessment tool - Classic pages](assessment-tool-classic-pages.md) | +| Assess modern list and library readiness | [Microsoft 365 Assessment tool - Lists and libraries](assessment-tool-lists.md) | +| Find custom master pages, alternate CSS, and incompatible user custom actions | [Microsoft 365 Assessment tool - Extensibility](assessment-tool-extensibility.md) | +| Assess InfoPath, SharePoint Add-Ins, Microsoft Azure Access Control Service (ACS), or SharePoint Alerts | [Microsoft 365 Assessment tool](assessment-tool-overview.md) | +| Assess Microsoft 365 group connection readiness | [Legacy SharePoint Modernization Scanner](modernize-scanner.md) | +| Inventory SharePoint Designer customized forms | [Legacy Scanner customized forms report](modernize-scanner-reports-customizedforms.md) | +| Collect the complete legacy Publishing Portal Web-level inventory | [Legacy Scanner publishing reports](modernize-scanner-reports-publishingportals.md) | | Assess SharePoint Server or another on-premises source | [SharePoint Migration Assessment Tool](/sharepointmigration/overview-of-the-sharepoint-migration-assessment-tool) or another scenario-specific tool | For a detailed capability comparison, see [Compare SharePoint modernization assessment tools](sharepoint-modernization-assessment-comparison.md). +> [!NOTE] +> Existing Scanner articles remain available for established report workflows and Scanner-only capabilities. The scanner-based remediation path will be updated separately from this assessment reference. + ## Assessment workflow 1. Select the assessment tool and modules that cover your scenario. @@ -38,7 +41,7 @@ For a detailed capability comparison, see [Compare SharePoint modernization asse ## Next steps -- [Microsoft 365 Assessment Tool overview](assessment-tool-overview.md) +- [Microsoft 365 Assessment tool overview](assessment-tool-overview.md) - [Assessment reports and CSV files](assessment-tool-reports.md) - [Transform classic pages to modern pages](modernize-userinterface-site-pages.md) - [Maximize use of modern lists and libraries](modernize-userinterface-lists-and-libraries.md) diff --git a/docs/transform/assessment-tool-classic-pages-csv.md b/docs/transform/assessment-tool-classic-pages-csv.md index 2fe459b8ef..55fb3379e7 100644 --- a/docs/transform/assessment-tool-classic-pages-csv.md +++ b/docs/transform/assessment-tool-classic-pages-csv.md @@ -1,7 +1,7 @@ --- title: Classic pages assessment CSV reference -description: Understand the page, web part, usage, web, site, and publishing CSV files generated by the Microsoft 365 Assessment Tool. -ms.date: 07/22/2026 +description: Understand the page, web part, usage, web, site, and publishing CSV files generated by the Microsoft 365 Assessment tool. +ms.date: 07/23/2026 ms.localizationpriority: high ms.service: sharepoint --- @@ -97,7 +97,7 @@ This file is scan-wide. It doesn't contain `SiteUrl` or `WebUrl`. | Column | Description | | --- | --- | | `ScanId` | Assessment identifier. | -| `WebPartType` | Assembly-qualified web part type. | +| `WebPartType` | Raw mapping key. It is usually an assembly-qualified type, but wiki content can use synthetic type values. | | `InMappingFile` | Indicates whether the type has an entry in the embedded mapping file. | | `PageCount` | Number of distinct pages on which the type was found. | @@ -109,11 +109,11 @@ This file is scan-wide. It doesn't contain `SiteUrl` or `WebUrl`. | --- | --- | | `ScanId` | Assessment identifier. | | `SiteUrl` | Absolute site-collection URL. | -| `PageUrl` | Server-relative page URL. On a site-level coverage row, this is the server-relative site URL. | +| `PageUrl` | Normally a server-relative page URL. On a site-level coverage row, this is normally the server-relative site URL; an unexpected `error` row instead contains the absolute site URL. | | `AuditViewsCount` | Number of `ClassicPageViewed` events. | | `AuditCreatesCount` | Number of `ClassicPageCreated` events. | | `AuditEditsCount` | Number of `ClassicPageEdited` events. | -| `AuditUniqueUsers` | Distinct-user signal across the three operations, capped internally for highly used pages. | +| `AuditUniqueUsers` | Approximate distinct-user signal across the three operations. It saturates at 10,000; a value of 10,000 means at least 10,000 users. | | `AuditWindowStart` | Start of the queried window in UTC. | | `AuditWindowEnd` | End of the queried window in UTC. | | `QueryStatus` | `succeeded`, `partial`, `failed`, `skipped`, or `error`. | @@ -136,7 +136,7 @@ Page-related columns include: | `ScanId`, `SiteUrl`, `WebUrl` | Web identity. | | `Template` | Web template. | | `LastItemUserModifiedDate` | Last user modification time recorded for the web. | -| `ClassicPages` | Total discovered classic pages. | +| `ClassicPages` | Total discovered classic pages except `DelveBlogPage` rows. | | `ClassicWikiPages` | Wiki page count. | | `ClassicASPXPages` | ASPX page count. | | `ClassicBlogPages` | Blog page count. | @@ -154,7 +154,7 @@ Page-related columns include: | `RemediationCode` | Web-level remediation classification. | | `AggregatedRemediationCodes` | De-duplicated component remediation codes. | -The file also contains Classic Lists, Workflow compatibility, InfoPath, Extensibility, SharePoint Add-In, and Azure ACS rollup columns. +The file also contains Classic Lists, Workflow compatibility, InfoPath, Extensibility, SharePoint Add-In, and Microsoft Azure Access Control Service (ACS) rollup columns. The current page-type rollups don't include `DelveBlogPage` rows, although those rows are present in `classicpages.csv`. @@ -170,7 +170,7 @@ Page-related columns include: | `SubWebTemplates` | Templates found in subwebs. | | `SubWebCount` | Number of subwebs. | | `SubWebDepth` | Maximum subweb depth. | -| `ClassicPages` | Total discovered classic pages. | +| `ClassicPages` | Total discovered classic pages except `DelveBlogPage` rows. | | `ClassicWikiPages` | Wiki page count. | | `ClassicASPXPages` | ASPX page count. | | `ClassicBlogPages` | Blog page count. | @@ -203,4 +203,7 @@ This file contains one row per site collection that has at least one publishing | `UsedPageLayouts` | De-duplicated publishing page layouts. | | `LastPageUpdateDate` | Most recent publishing-page modification time. | +> [!CAUTION] +> In the current implementation, `UsedSiteMasterPages` and `UsedSystemMasterPages` can include values from other publishing site collections in the same assessment. For a site-specific decision, filter `classicextensibilities.csv` by `ScanId` and `SiteUrl` instead of relying only on these two rollup fields. + For legacy publishing fields that aren't represented by this file, see [Understand publishing portal coverage](assessment-tool-publishing-coverage.md). diff --git a/docs/transform/assessment-tool-classic-pages-report.md b/docs/transform/assessment-tool-classic-pages-report.md index 799a846b0e..30dd76b948 100644 --- a/docs/transform/assessment-tool-classic-pages-report.md +++ b/docs/transform/assessment-tool-classic-pages-report.md @@ -1,7 +1,7 @@ --- title: Interpret the classic pages assessment report -description: Use page, web part, usage, and rollup results from the Microsoft 365 Assessment Tool to plan SharePoint page modernization. -ms.date: 07/22/2026 +description: Use page, web part, usage, and rollup results from the Microsoft 365 Assessment tool to plan SharePoint page modernization. +ms.date: 07/23/2026 ms.localizationpriority: high ms.service: sharepoint --- diff --git a/docs/transform/assessment-tool-classic-pages-requirements.md b/docs/transform/assessment-tool-classic-pages-requirements.md index 7fde9fcd0b..3c9f5a74d4 100644 --- a/docs/transform/assessment-tool-classic-pages-requirements.md +++ b/docs/transform/assessment-tool-classic-pages-requirements.md @@ -1,7 +1,7 @@ --- title: Requirements for the classic pages assessment -description: Configure authentication, permissions, audit access, and a supported environment for the Microsoft 365 Assessment Tool classic pages component. -ms.date: 07/22/2026 +description: Configure authentication, permissions, audit access, and a supported environment for the Microsoft 365 Assessment tool classic pages component. +ms.date: 07/23/2026 ms.localizationpriority: high ms.service: sharepoint --- @@ -10,7 +10,9 @@ ms.service: sharepoint The classic pages component assesses SharePoint Online. It doesn't assess SharePoint Server or another on-premises source. -Download the latest [Microsoft 365 Assessment Tool release](https://github.com/pnp/pnpassessment/releases). Core classic page readiness analysis is available in version 1.15.0 and later. The Microsoft Graph audit usage flow, `--auditlogwindowdays`, and `classicpageauditusage.csv` contract documented in this guidance require version 1.16.0 or later. +Download the latest [Microsoft 365 Assessment tool release](https://github.com/pnp/pnpassessment/releases). Core classic page readiness analysis is available in version 1.15.0 and later. The Microsoft Graph audit usage flow, `--auditlogwindowdays`, and `classicpageauditusage.csv` contract documented in this guidance require version 1.16.0 or later. + +For GCC High, Department of Defense, China, Germany, or a tenant that uses vanity URLs, configure `appsettings.json` as described in [Assessment tool configuration](https://pnp.github.io/pnpassessment/using-the-assessment-tool/configuration.html). ## Authentication @@ -43,14 +45,9 @@ Grant admin consent for the configured permissions before starting the assessmen Unless you specify `--skipusageinformation`, the assessment queries Microsoft Graph for `ClassicPageViewed`, `ClassicPageCreated`, and `ClassicPageEdited` audit events. -Add `AuditLogsQuery-SharePoint.Read.All` in the same permission type as the authentication mode: - -| Authentication | Additional Microsoft Graph permission | -| --- | --- | -| Application | `AuditLogsQuery-SharePoint.Read.All` application permission | -| Interactive or Device | `AuditLogsQuery-SharePoint.Read.All` delegated permission | +For the currently documented Assessment flow, add the Microsoft Graph application permission `AuditLogsQuery-SharePoint.Read.All` and grant admin consent. -Admin consent is required. For delegated authentication, the signed-in account must also be authorized to search audit data in Microsoft Purview. +Microsoft Graph also exposes a delegated permission with the same name. However, delegated Audit collection hasn't been validated end to end with Assessment version 1.16.0, and the current tool guidance and permission error are application-specific. For an Interactive or Device assessment, use `--skipusageinformation` until delegated behavior and the required Microsoft Purview role are validated. If the permission is missing, page discovery and web part analysis can still finish. Audit rows are marked `failed`, and `SkipReason` explains the missing permission. diff --git a/docs/transform/assessment-tool-classic-pages-run.md b/docs/transform/assessment-tool-classic-pages-run.md index 7fde6d3201..cbd46054f9 100644 --- a/docs/transform/assessment-tool-classic-pages-run.md +++ b/docs/transform/assessment-tool-classic-pages-run.md @@ -1,7 +1,7 @@ --- title: Run a classic pages assessment -description: Start, scope, monitor, and report a Microsoft 365 Assessment Tool classic pages assessment. -ms.date: 07/22/2026 +description: Start, scope, monitor, and report a Microsoft 365 Assessment tool classic pages assessment. +ms.date: 07/23/2026 ms.localizationpriority: high ms.service: sharepoint --- @@ -12,6 +12,8 @@ Use `--mode Classic --classicinclude Pages` to run only the classic pages compon Before you start, complete the [classic pages requirements](assessment-tool-classic-pages-requirements.md). +The examples use the Windows executable name and PowerShell line continuation. On macOS or Linux, use `./microsoft365-assessment`, your shell's line-continuation syntax, and operating-system-appropriate file paths. + ## Assess the complete tenant Application authentication is recommended for a full-tenant assessment: @@ -32,6 +34,7 @@ Use `--siteslist` for a short comma-separated list: ```powershell microsoft365-assessment.exe start --mode Classic --classicinclude Pages ` + --skipusageinformation ` --authmode interactive ` --tenant .sharepoint.com ` --applicationid ` @@ -59,8 +62,8 @@ The sites file contains one absolute site-collection URL per line. Don't combine | `--skipusageinformation` | Skips Microsoft Graph audit usage collection and doesn't generate `classicpageauditusage.csv`. | | `--auditlogwindowdays <1-180>` | Sets the audit window. The default is 14 days. | | `--skipuserinformation` | Omits page modifier information. | -| `--homepageonly` | Assesses only the home page of each web. | -| `--threads ` | Changes parallelism. Start with 4 through 8 threads when throttling is a concern. | +| `--homepageonly` | Filters the page inventory to the home page of each web. It doesn't filter site-scoped Audit results. | +| `--threads ` | Changes parallelism. Start with 4 to 8 threads when throttling is a concern. | For example, assess only home pages, export web part properties, and skip audit usage: @@ -77,7 +80,7 @@ microsoft365-assessment.exe start --mode Classic --classicinclude Pages ` ## Scope considerations -- For a vanity URL tenant, provide `--siteslist` or `--sitesfile`. +- For a vanity URL tenant, configure both `AdminCenterUrl` and `MySiteHostUrl` in `appsettings.json`, and provide `--siteslist` or `--sitesfile`. See [Assessment tool configuration](https://pnp.github.io/pnpassessment/using-the-assessment-tool/configuration.html). - For a Multi-Geo tenant, run a separate assessment for each geo. Use the primary tenant host in `--tenant` and provide the geo's site collections with `--siteslist` or `--sitesfile`. - Run a small representative scope first to validate authentication, output, audit access, and scan duration. - The tool supports up to three parallel assessments, but parallel scans increase the risk of throttling. @@ -105,6 +108,8 @@ microsoft365-assessment.exe restart --id The assessment ID is also the name of the local data folder. Review the log in that folder if progress stops changing. +After site processing finishes, `status` can show `Finalizing` while post-scan work runs. Page Audit queries can remain in this phase for an extended period. Review `[AuditLog]` entries in the assessment log before treating `Finalizing` as a hang. + ## Generate report output Generate CSV files and, on Windows, the Power BI template: @@ -113,6 +118,8 @@ Generate CSV files and, on Windows, the Power BI template: microsoft365-assessment.exe report --id ``` +The assessment must be `Finished` or intentionally `Paused` before a report can be generated. The tool rejects report requests for assessments that are still running or finalizing. + Generate only CSV files in a custom location: ```console diff --git a/docs/transform/assessment-tool-classic-pages.md b/docs/transform/assessment-tool-classic-pages.md index 1174f31e51..1e7736c73b 100644 --- a/docs/transform/assessment-tool-classic-pages.md +++ b/docs/transform/assessment-tool-classic-pages.md @@ -1,20 +1,20 @@ --- title: Assess classic SharePoint pages description: Discover classic pages, inventory their web parts, and measure page modernization readiness. -ms.date: 07/22/2026 +ms.date: 07/23/2026 ms.localizationpriority: high ms.service: sharepoint --- # Assess classic SharePoint pages -Use the Classic pages component of the Microsoft 365 Assessment Tool to discover classic wiki, web part, publishing, blog, ASPX, and Delve Blog pages in SharePoint Online. +Use the Classic pages component of the Microsoft 365 Assessment tool to discover classic wiki, web part, publishing, blog, ASPX, and Delve Blog pages in SharePoint Online. Wiki, Web Part, and Publishing pages receive detailed Web Part inventory, layout, home-page, and mapping-readiness enrichment. Blog, ASPX, and Delve Blog pages are discovered and recorded, but they don't receive the same Web Part mapping readiness analysis. The assessment can optionally collect page view/create/edit activity from the Microsoft Graph audit log. -In the current implementation, Delve Blog pages appear in `classicpages.csv` but aren't included in the page-type counts in `classicwebsummaries.csv` or `classicsitesummaries.csv`. +In the current implementation, Delve Blog pages appear in `classicpages.csv` but aren't included in `ClassicPages` or the page-type counts in `classicwebsummaries.csv` and `classicsitesummaries.csv`. ## In this guidance @@ -26,6 +26,8 @@ In the current implementation, Delve Blog pages appear in `classicpages.csv` but ## Run the assessment +The example uses the Windows executable name. On macOS or Linux, use `./microsoft365-assessment`. + ```powershell microsoft365-assessment.exe start --mode Classic --classicinclude Pages ` --authmode application ` @@ -79,4 +81,4 @@ For a complete interpretation workflow, see [Interpret the classic pages assessm - [Classic SharePoint Pages Assessment](https://pnp.github.io/pnpassessment/classic/readme.html) - [Requirements](https://pnp.github.io/pnpassessment/classic/requirements.html) - [Run an assessment](https://pnp.github.io/pnpassessment/classic/assess.html) -- [Power BI report](https://pnp.github.io/pnpassessment/classic/report-intro.html) +- [Open-source Power BI report page](https://pnp.github.io/pnpassessment/classic/report-intro.html). That project page describes intended readiness visuals; use the [Learn report guide](assessment-tool-classic-pages-report.md) for the fields available in the current embedded template. diff --git a/docs/transform/assessment-tool-common-reports.md b/docs/transform/assessment-tool-common-reports.md index ab13a7a197..f19e2c8551 100644 --- a/docs/transform/assessment-tool-common-reports.md +++ b/docs/transform/assessment-tool-common-reports.md @@ -1,14 +1,14 @@ --- title: Common Microsoft 365 Assessment CSV files -description: Understand the scans, properties, history, site collection, and web CSV files exported by every Microsoft 365 Assessment Tool report. -ms.date: 07/22/2026 +description: Understand the scans, properties, history, site collection, and web CSV files exported by every Microsoft 365 Assessment tool report. +ms.date: 07/23/2026 ms.localizationpriority: high ms.service: sharepoint --- # Common Microsoft 365 Assessment CSV files -Every Microsoft 365 Assessment Tool report exports these files: +Every Microsoft 365 Assessment tool report exports these files: ```text scans.csv @@ -40,7 +40,7 @@ This file contains one row for the assessment. | `Status` | `Queued`, `Running`, `Pausing`, `Paused`, `Finished`, or `Terminated`. | | `PreScanStatus` | Status of component-specific pre-assessment work. | | `PostScanStatus` | Status of the post-scan processing phase. | -| `Version` | Assessment Tool version. | +| `Version` | Assessment tool version. | | `CLIMode` | Selected assessment mode. | | `CLITenant` | SharePoint tenant host supplied to the CLI. | | `CLITenantId` | Microsoft Entra tenant identifier when recorded. | diff --git a/docs/transform/assessment-tool-extensibility-csv.md b/docs/transform/assessment-tool-extensibility-csv.md index 83a57e88aa..f509db8ace 100644 --- a/docs/transform/assessment-tool-extensibility-csv.md +++ b/docs/transform/assessment-tool-extensibility-csv.md @@ -1,7 +1,7 @@ --- title: Extensibility assessment CSV reference -description: Understand the classic extensibility and incompatible user custom action CSV files generated by the Microsoft 365 Assessment Tool. -ms.date: 07/22/2026 +description: Understand the classic extensibility and incompatible user custom action CSV files generated by the Microsoft 365 Assessment tool. +ms.date: 07/23/2026 ms.localizationpriority: high ms.service: sharepoint --- @@ -36,7 +36,7 @@ This file contains one row per web with a detected custom master page, alternate | `HasSharePointAddIns` | Compatibility field. The current Extensibility component doesn't populate SharePoint Add-In findings. | | `RemediationCode` | Comma-separated Extensibility remediation codes found for the web. | -Out-of-box master pages are excluded. A web with no detected Extensibility finding doesn't receive a row. +Out-of-the-box master pages are excluded. A web with no detected Extensibility finding doesn't receive a row. ## `classicusercustomactions.csv` diff --git a/docs/transform/assessment-tool-extensibility.md b/docs/transform/assessment-tool-extensibility.md index 3d2ef312af..5cc5369aee 100644 --- a/docs/transform/assessment-tool-extensibility.md +++ b/docs/transform/assessment-tool-extensibility.md @@ -1,17 +1,28 @@ --- title: Assess classic SharePoint extensibility -description: Find classic branding and incompatible user custom actions with the Microsoft 365 Assessment Tool. -ms.date: 07/22/2026 +description: Find classic branding and incompatible user custom actions with the Microsoft 365 Assessment tool. +ms.date: 07/23/2026 ms.localizationpriority: high ms.service: sharepoint --- # Assess classic SharePoint extensibility -Use the Extensibility component of the Microsoft 365 Assessment Tool to identify classic branding and user customizations that require remediation before adopting modern SharePoint experiences. +Use the Extensibility component of the Microsoft 365 Assessment tool to identify classic branding and user customizations that require remediation before adopting modern SharePoint experiences. + +## Before you begin + +- Download the latest [Microsoft 365 Assessment tool release](https://github.com/pnp/pnpassessment/releases). +- [Configure an Entra application](https://pnp.github.io/pnpassessment/using-the-assessment-tool/setupauth.html). Application authentication is recommended for a full-tenant assessment. +- Use `--skipusageinformation` for an Extensibility-only assessment because the current Classic post-scan path otherwise starts the page Audit query. + +> [!IMPORTANT] +> The least-privileged permission set for an Extensibility-only run must be validated before this draft is published. Don't assume that the broader Classic Pages FullControl permissions are required when Pages isn't selected. ## Run the assessment +The example uses the Windows executable name. On macOS or Linux, use `./microsoft365-assessment`. + ```powershell microsoft365-assessment.exe start --mode Classic --classicinclude Extensibility ` --skipusageinformation ` @@ -21,8 +32,6 @@ microsoft365-assessment.exe start --mode Classic --classicinclude Extensibility --certpath "My|CurrentUser|" ``` -The current Classic post-scan path starts page audit collection even when Pages isn't selected. Use `--skipusageinformation` for an Extensibility-only assessment unless you intentionally want that audit query. - ## What the assessment checks The component identifies: @@ -34,7 +43,7 @@ The component identifies: - JavaScript commands embedded in command UI extensions. - Incompatible custom-action locations. -Out-of-box master pages are excluded from the custom master-page result. +Out-of-the-box master pages are excluded from the custom master-page result. ## Output @@ -94,4 +103,10 @@ The model contains a `CE5` custom-theme code, but the current Extensibility comp ## Scope boundaries -The Extensibility component doesn't replace Microsoft 365 group connection readiness. It also doesn't assess SharePoint Add-Ins or Azure ACS inside Classic mode; use the separate `AddInsACS` assessment. +The Extensibility component doesn't replace Microsoft 365 group connection readiness. It also doesn't assess SharePoint Add-Ins or Microsoft Azure Access Control Service (ACS) inside Classic mode; use the separate `AddInsACS` assessment. + +## Next steps + +- [Modernize customizations](modernize-customizations.md) +- [SharePoint Framework Extensions](../spfx/extensions/overview-extensions.md) +- [Compare SharePoint modernization assessment tools](sharepoint-modernization-assessment-comparison.md) diff --git a/docs/transform/assessment-tool-lists.md b/docs/transform/assessment-tool-lists.md index 1a38ca6d11..5a88834475 100644 --- a/docs/transform/assessment-tool-lists.md +++ b/docs/transform/assessment-tool-lists.md @@ -1,17 +1,28 @@ --- title: Assess modern list and library readiness description: Find lists and libraries that render in the classic experience and understand why. -ms.date: 07/22/2026 +ms.date: 07/23/2026 ms.localizationpriority: high ms.service: sharepoint --- # Assess modern list and library readiness -Use the Lists component of the Microsoft 365 Assessment Tool to find SharePoint Online lists and libraries that don't render in the modern experience. +Use the Lists component of the Microsoft 365 Assessment tool to find SharePoint Online lists and libraries that aren't confirmed to render in the modern experience. + +## Before you begin + +- Download the latest [Microsoft 365 Assessment tool release](https://github.com/pnp/pnpassessment/releases). +- [Configure an Entra application](https://pnp.github.io/pnpassessment/using-the-assessment-tool/setupauth.html). Application authentication is recommended for a full-tenant assessment. +- Use `--skipusageinformation` for a Lists-only assessment because the current Classic post-scan path otherwise starts the page Audit query. + +> [!IMPORTANT] +> The least-privileged permission set for a Lists-only run must be validated before this draft is published. Don't assume that the broader Classic Pages FullControl permissions are required when Pages isn't selected. ## Run the assessment +The example uses the Windows executable name. On macOS or Linux, use `./microsoft365-assessment`. + ```powershell microsoft365-assessment.exe start --mode Classic --classicinclude Lists ` --skipusageinformation ` @@ -23,8 +34,6 @@ microsoft365-assessment.exe start --mode Classic --classicinclude Lists ` If `--classicinclude` is omitted, the Classic assessment also runs the Pages, InfoPath, and Extensibility components. -The current Classic post-scan path starts page audit collection even when Pages isn't selected. Use `--skipusageinformation` for a Lists-only assessment unless you intentionally want that audit query. - ## What the assessment checks For each list or library, the assessment reads: @@ -35,7 +44,7 @@ For each list or library, the assessment reads: - Item count and last user modification date. - Whether the template is classic-by-design. -Only lists that are classic-by-design, explicitly forced to Classic, or unable to render Modern are written to `classiclists.csv`. Modern lists are counted in the Web and site-collection summaries. +Lists that aren't confirmed to render Modern are written to `classiclists.csv`. This includes classic-by-design lists, lists explicitly forced to Classic, incompatible lists, and rows whose render type is `Undefined`. Modern lists are counted in the Web and site-collection summaries. ## Output @@ -60,6 +69,8 @@ Only lists that are classic-by-design, explicitly forced to Classic, or unable t The row key is `ScanId`, `SiteUrl`, `WebUrl`, and `ListId`. +`DefaultViewRenderType=Undefined` means that the tool didn't have enough information to determine the render mode. Treat a row with `Undefined` and an empty `RemediationCode` as inconclusive, not as a confirmed modernization blocker. + The Classic Power BI template includes **Lists** and **Lists details** tabs. ## Use the Power BI report @@ -94,3 +105,9 @@ Use `classiclists.csv` when you need stable join keys, exact enum strings, or au The legacy Scanner exposed many individual Boolean and detail columns, such as the exact JSLink fields, blocking feature scope, and page-load exception. The Assessment output normalizes most of these details into `DefaultViewRenderType` and `RemediationCode`. Don't treat `classiclists.csv` as field-for-field compatible with `ModernizationListScanResults.csv`. + +## Next steps + +- [Maximize use of modern lists and libraries](modernize-userinterface-lists-and-libraries.md) +- [Modernize customizations](modernize-customizations.md) +- [Compare SharePoint modernization assessment tools](sharepoint-modernization-assessment-comparison.md) diff --git a/docs/transform/assessment-tool-overview.md b/docs/transform/assessment-tool-overview.md index 8ce1a1eab8..98ca798d31 100644 --- a/docs/transform/assessment-tool-overview.md +++ b/docs/transform/assessment-tool-overview.md @@ -1,14 +1,14 @@ --- -title: Microsoft 365 Assessment Tool overview -description: Learn what the Microsoft 365 Assessment Tool assesses and how to get started. -ms.date: 07/22/2026 +title: Microsoft 365 Assessment tool overview +description: Learn what the Microsoft 365 Assessment tool assesses and how to get started. +ms.date: 07/23/2026 ms.localizationpriority: high ms.service: sharepoint --- -# Microsoft 365 Assessment Tool overview +# Microsoft 365 Assessment tool overview -The Microsoft 365 Assessment Tool is an open-source command-line tool that collects data from Microsoft 365 and generates CSV reports. On Windows, it also generates a Power BI template. Use the reports to plan modernization, adoption, and retirement work. +The Microsoft 365 Assessment tool is an open-source command-line tool that collects data from Microsoft 365 and generates CSV reports. On Windows, it also generates a Power BI template. Use the reports to plan modernization, adoption, and retirement work. ## Public assessment modules @@ -16,7 +16,7 @@ The Microsoft 365 Assessment Tool is an open-source command-line tool that colle | --- | --- | --- | | Classic | `Classic` | Assesses classic pages, lists, InfoPath usage, and classic extensibility components selected with `--classicinclude`. | | InfoPath Forms Services | `InfoPath` | Inventories InfoPath usage and supports retirement planning. | -| SharePoint Add-Ins and Azure ACS | `AddInsACS` | Inventories SharePoint Add-Ins and Azure ACS principals. | +| SharePoint Add-Ins and Microsoft Azure Access Control Service (ACS) | `AddInsACS` | Inventories SharePoint Add-Ins and Azure ACS principals. | | SharePoint Alerts | `Alerts` | Inventories SharePoint Alerts for retirement planning. | The Workflow mode is retired. Workflow implementation and report artifacts remain in the repository for compatibility with existing assessment data, but a new Workflow assessment can't be started. @@ -31,6 +31,8 @@ The Workflow mode is retired. Workflow implementation and report artifacts remai 1. Monitor it with the `status` and `list` actions. 1. Generate a report with the `report` action. +Command examples in this guidance use the Windows executable name `microsoft365-assessment.exe`. On macOS or Linux, mark the downloaded binary as executable and use `./microsoft365-assessment` instead. Replace Windows file paths with paths for your operating system. + The detailed open-source project documentation remains available at [pnp.github.io/pnpassessment](https://pnp.github.io/pnpassessment/index.html). ## Common report output diff --git a/docs/transform/assessment-tool-publishing-coverage.md b/docs/transform/assessment-tool-publishing-coverage.md index 2aa7187220..ef50895a70 100644 --- a/docs/transform/assessment-tool-publishing-coverage.md +++ b/docs/transform/assessment-tool-publishing-coverage.md @@ -1,22 +1,29 @@ --- title: Understand publishing portal assessment coverage -description: Compare Microsoft 365 Assessment Tool publishing output with the legacy SharePoint Modernization Scanner publishing reports. -ms.date: 07/22/2026 +description: Compare Microsoft 365 Assessment tool publishing output with the legacy SharePoint Modernization Scanner publishing reports. +ms.date: 07/23/2026 ms.localizationpriority: high ms.service: sharepoint --- # Understand publishing portal assessment coverage -The Microsoft 365 Assessment Tool provides page-level publishing readiness and a site-collection-level publishing portal summary. It doesn't reproduce the complete web-level publishing configuration inventory from the legacy SharePoint Modernization Scanner. +The Microsoft 365 Assessment tool provides page-level publishing readiness and a site-collection-level publishing portal summary. It doesn't reproduce the complete web-level publishing configuration inventory from the legacy SharePoint Modernization Scanner. + +## Before you begin + +- Complete the [Classic Pages requirements](assessment-tool-classic-pages-requirements.md). This assessment includes Pages and requires the broader page-inventory permissions. +- Include both Pages and Extensibility to populate page readiness, page layouts, custom master pages, and alternate CSS. +- The following command skips page Audit usage. Remove `--skipusageinformation` only after configuring the documented Audit application permission. ## Run the required components -Include both Pages and Extensibility to populate page readiness, page layouts, custom master pages, and alternate CSS: +The example uses the Windows executable name. On macOS or Linux, use `./microsoft365-assessment`. ```powershell microsoft365-assessment.exe start --mode Classic ` --classicinclude Pages Extensibility ` + --skipusageinformation ` --authmode application ` --tenant .sharepoint.com ` --applicationid ` @@ -46,6 +53,9 @@ If Extensibility isn't included, the custom master-page fields in `classicpublis Use this file to identify large or stale publishing portals. +> [!CAUTION] +> The current Assessment implementation can aggregate `UsedSiteMasterPages` and `UsedSystemMasterPages` from other publishing site collections in the same assessment. For site-specific master-page analysis, filter `classicextensibilities.csv` by `ScanId` and `SiteUrl`. + ## Page-level coverage Assessment provides: diff --git a/docs/transform/assessment-tool-reports.md b/docs/transform/assessment-tool-reports.md index ce53cab272..61e7e5f54c 100644 --- a/docs/transform/assessment-tool-reports.md +++ b/docs/transform/assessment-tool-reports.md @@ -1,14 +1,14 @@ --- title: Microsoft 365 Assessment reports and CSV files -description: Understand the Power BI templates, report tabs, and CSV files produced by the Microsoft 365 Assessment Tool. -ms.date: 07/22/2026 +description: Understand the Power BI templates, report tabs, and CSV files produced by the Microsoft 365 Assessment tool. +ms.date: 07/23/2026 ms.localizationpriority: high ms.service: sharepoint --- # Microsoft 365 Assessment reports and CSV files -The Microsoft 365 Assessment Tool stores assessment data locally and generates CSV exports for the selected mode. On Windows, it also generates a Power BI template. On macOS and Linux, copy the assessment data to Windows if you need to generate the Power BI template. +The Microsoft 365 Assessment tool stores assessment data locally and generates CSV exports for the selected mode. On Windows, it also generates a Power BI template. On macOS and Linux, copy the assessment data to Windows if you need to generate the Power BI template. ## Public report templates @@ -76,6 +76,10 @@ Across current public modes, the report contract defines 23 distinct CSV file na ## Generate reports +Generate a report only after the assessment is `Finished` or intentionally `Paused`. A status of `Finalizing` means post-scan work is still running, and the report command rejects the request. + +The examples use the Windows executable name. On macOS or Linux, use `./microsoft365-assessment` and an operating-system-appropriate output path. Power BI template generation remains Windows-only. + ```console microsoft365-assessment.exe list microsoft365-assessment.exe report --id diff --git a/docs/transform/sharepoint-modernization-assessment-comparison.md b/docs/transform/sharepoint-modernization-assessment-comparison.md index 679f575706..786eeb8a0c 100644 --- a/docs/transform/sharepoint-modernization-assessment-comparison.md +++ b/docs/transform/sharepoint-modernization-assessment-comparison.md @@ -1,18 +1,18 @@ --- title: Compare SharePoint modernization assessment tools description: Compare Microsoft 365 Assessment, the legacy SharePoint Modernization Scanner, and on-premises assessment tools. -ms.date: 07/22/2026 +ms.date: 07/23/2026 ms.localizationpriority: high ms.service: sharepoint --- # Compare SharePoint modernization assessment tools -Use the Microsoft 365 Assessment Tool for new SharePoint Online assessments when it supports the scenario. Continue to use the legacy SharePoint Modernization Scanner only for an established workflow or a capability that isn't yet available in Assessment. +Use the Microsoft 365 Assessment tool for new SharePoint Online assessments when it supports the scenario. Continue to use the legacy SharePoint Modernization Scanner only for an established workflow or a capability that isn't yet available in Assessment. ## Capability comparison -| Capability | Microsoft 365 Assessment Tool | Legacy Modernization Scanner | Guidance | +| Capability | Microsoft 365 Assessment tool | Legacy Modernization Scanner | Guidance | | --- | --- | --- | --- | | Classic page discovery and Web Part readiness | Available | Available | Use Assessment for new work. | | Modern list and library readiness | Available; output is normalized and isn't field-for-field compatible | Available | Use Assessment for new work; retain Scanner documentation for existing reports. | @@ -23,7 +23,7 @@ Use the Microsoft 365 Assessment Tool for new SharePoint Online assessments when | Microsoft 365 group connection readiness | Not available | Available | Use the legacy Scanner. | | SharePoint Designer customized forms | Not available as a dedicated assessment | Available | Use the legacy Scanner. | | Workflow 2013 | Retired | Legacy workflow reports | Follow workflow retirement guidance instead of starting a new scan. | -| SharePoint Server/on-premises | Not supported | Not supported | Use SMAT or another on-premises assessment tool. | +| SharePoint Server/on-premises | Not supported | Not supported | Use the SharePoint Migration Assessment Tool (SMAT) or another on-premises assessment tool. | ## Output compatibility From 273cd745935049859a83510a681e0352c8c73065 Mon Sep 17 00:00:00 2001 From: titao Date: Thu, 23 Jul 2026 14:33:33 +0800 Subject: [PATCH 03/15] Document validated Assessment read permissions Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: a7db0d98-be53-48c2-9488-9a226f457144 --- .../assessment-tool-classic-pages-requirements.md | 6 +++--- docs/transform/assessment-tool-classic-pages.md | 2 +- docs/transform/assessment-tool-extensibility.md | 8 ++++++-- docs/transform/assessment-tool-lists.md | 8 ++++++-- docs/transform/assessment-tool-publishing-coverage.md | 2 +- 5 files changed, 17 insertions(+), 9 deletions(-) diff --git a/docs/transform/assessment-tool-classic-pages-requirements.md b/docs/transform/assessment-tool-classic-pages-requirements.md index 3c9f5a74d4..572deb6775 100644 --- a/docs/transform/assessment-tool-classic-pages-requirements.md +++ b/docs/transform/assessment-tool-classic-pages-requirements.md @@ -34,10 +34,10 @@ The current classic pages implementation requires the following permissions: | Authentication | Microsoft Graph | SharePoint | | --- | --- | --- | -| Application | `Sites.Read.All` application permission | `Sites.FullControl.All` application permission | -| Interactive or Device | `Sites.Read.All` and `User.Read` delegated permissions | `AllSites.FullControl` delegated permission | +| Application | `Sites.Read.All` application permission | `Sites.Read.All` application permission | +| Interactive or Device | `Sites.Read.All` and `User.Read` delegated permissions | `AllSites.Read` delegated permission | -The page inventory reads web part configuration through the SharePoint `LimitedWebPartManager` API. Read-only SharePoint permission isn't sufficient for this operation. +The page inventory reads web part configuration through the SharePoint `LimitedWebPartManager` API. Assessment version 1.16.0 can complete page and web part extraction with the read permissions in this table. Grant admin consent for the configured permissions before starting the assessment. diff --git a/docs/transform/assessment-tool-classic-pages.md b/docs/transform/assessment-tool-classic-pages.md index 1e7736c73b..07540fe1b8 100644 --- a/docs/transform/assessment-tool-classic-pages.md +++ b/docs/transform/assessment-tool-classic-pages.md @@ -79,6 +79,6 @@ For a complete interpretation workflow, see [Interpret the classic pages assessm ## Additional open-source documentation - [Classic SharePoint Pages Assessment](https://pnp.github.io/pnpassessment/classic/readme.html) -- [Requirements](https://pnp.github.io/pnpassessment/classic/requirements.html) +- [Open-source requirements page](https://pnp.github.io/pnpassessment/classic/requirements.html). That project page still lists FullControl; use the [Learn requirements](assessment-tool-classic-pages-requirements.md) for the read permission profile validated with Assessment 1.16.0. - [Run an assessment](https://pnp.github.io/pnpassessment/classic/assess.html) - [Open-source Power BI report page](https://pnp.github.io/pnpassessment/classic/report-intro.html). That project page describes intended readiness visuals; use the [Learn report guide](assessment-tool-classic-pages-report.md) for the fields available in the current embedded template. diff --git a/docs/transform/assessment-tool-extensibility.md b/docs/transform/assessment-tool-extensibility.md index 5cc5369aee..6c22198a2d 100644 --- a/docs/transform/assessment-tool-extensibility.md +++ b/docs/transform/assessment-tool-extensibility.md @@ -16,8 +16,12 @@ Use the Extensibility component of the Microsoft 365 Assessment tool to identify - [Configure an Entra application](https://pnp.github.io/pnpassessment/using-the-assessment-tool/setupauth.html). Application authentication is recommended for a full-tenant assessment. - Use `--skipusageinformation` for an Extensibility-only assessment because the current Classic post-scan path otherwise starts the page Audit query. -> [!IMPORTANT] -> The least-privileged permission set for an Extensibility-only run must be validated before this draft is published. Don't assume that the broader Classic Pages FullControl permissions are required when Pages isn't selected. +Use the following permissions: + +| Authentication | Microsoft Graph | SharePoint | +| --- | --- | --- | +| Application | `Sites.Read.All` application permission | `Sites.Read.All` application permission | +| Interactive or Device | `Sites.Read.All` and `User.Read` delegated permissions | `AllSites.Read` delegated permission | ## Run the assessment diff --git a/docs/transform/assessment-tool-lists.md b/docs/transform/assessment-tool-lists.md index 5a88834475..c6309f233f 100644 --- a/docs/transform/assessment-tool-lists.md +++ b/docs/transform/assessment-tool-lists.md @@ -16,8 +16,12 @@ Use the Lists component of the Microsoft 365 Assessment tool to find SharePoint - [Configure an Entra application](https://pnp.github.io/pnpassessment/using-the-assessment-tool/setupauth.html). Application authentication is recommended for a full-tenant assessment. - Use `--skipusageinformation` for a Lists-only assessment because the current Classic post-scan path otherwise starts the page Audit query. -> [!IMPORTANT] -> The least-privileged permission set for a Lists-only run must be validated before this draft is published. Don't assume that the broader Classic Pages FullControl permissions are required when Pages isn't selected. +Use the following permissions: + +| Authentication | Microsoft Graph | SharePoint | +| --- | --- | --- | +| Application | `Sites.Read.All` application permission | `Sites.Read.All` application permission | +| Interactive or Device | `Sites.Read.All` and `User.Read` delegated permissions | `AllSites.Read` delegated permission | ## Run the assessment diff --git a/docs/transform/assessment-tool-publishing-coverage.md b/docs/transform/assessment-tool-publishing-coverage.md index ef50895a70..caf40c0b9d 100644 --- a/docs/transform/assessment-tool-publishing-coverage.md +++ b/docs/transform/assessment-tool-publishing-coverage.md @@ -12,7 +12,7 @@ The Microsoft 365 Assessment tool provides page-level publishing readiness and a ## Before you begin -- Complete the [Classic Pages requirements](assessment-tool-classic-pages-requirements.md). This assessment includes Pages and requires the broader page-inventory permissions. +- Complete the [Classic Pages requirements](assessment-tool-classic-pages-requirements.md). This assessment includes Pages and uses the documented read permission profile. - Include both Pages and Extensibility to populate page readiness, page layouts, custom master pages, and alternate CSS. - The following command skips page Audit usage. Remove `--skipusageinformation` only after configuring the documented Audit application permission. From d5f4c6f86eda0f0aa6732cfc3009ffa78ed73ec0 Mon Sep 17 00:00:00 2001 From: titao Date: Thu, 23 Jul 2026 14:51:19 +0800 Subject: [PATCH 04/15] Document validated Audit permission paths Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: a7db0d98-be53-48c2-9488-9a226f457144 --- .../assessment-tool-classic-pages-requirements.md | 10 ++++++++-- docs/transform/assessment-tool-classic-pages.md | 2 +- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/docs/transform/assessment-tool-classic-pages-requirements.md b/docs/transform/assessment-tool-classic-pages-requirements.md index 572deb6775..34cc91bed3 100644 --- a/docs/transform/assessment-tool-classic-pages-requirements.md +++ b/docs/transform/assessment-tool-classic-pages-requirements.md @@ -45,15 +45,21 @@ Grant admin consent for the configured permissions before starting the assessmen Unless you specify `--skipusageinformation`, the assessment queries Microsoft Graph for `ClassicPageViewed`, `ClassicPageCreated`, and `ClassicPageEdited` audit events. -For the currently documented Assessment flow, add the Microsoft Graph application permission `AuditLogsQuery-SharePoint.Read.All` and grant admin consent. +Add `AuditLogsQuery-SharePoint.Read.All` in the permission type used by the authentication mode: -Microsoft Graph also exposes a delegated permission with the same name. However, delegated Audit collection hasn't been validated end to end with Assessment version 1.16.0, and the current tool guidance and permission error are application-specific. For an Interactive or Device assessment, use `--skipusageinformation` until delegated behavior and the required Microsoft Purview role are validated. +| Authentication | Additional Microsoft Graph permission | +| --- | --- | +| Application | `AuditLogsQuery-SharePoint.Read.All` application permission | +| Interactive or Device | `AuditLogsQuery-SharePoint.Read.All` delegated permission | + +Grant admin consent. For delegated authentication, the signed-in account must also be authorized to search Audit data in Microsoft Purview. If the permission is missing, page discovery and web part analysis can still finish. Audit rows are marked `failed`, and `SkipReason` explains the missing permission. ## Audit availability - Verify that Microsoft Purview Audit is available and recording activity for the tenant. +- Unified Audit ingestion is enabled by default for most organizations. Verify `UnifiedAuditLogIngestionEnabled`; when it is `False`, enable it before running the query. Organization customization might need to be enabled first, and the change can take up to 60 minutes to propagate. - New events can take approximately 60 to 90 minutes to become available. - `--auditlogwindowdays` accepts a value from 1 through 180. The default is 14. - The Microsoft Graph audit query API used by the tool is available only in the global service. The current tool records audit collection as `skipped` in sovereign-cloud environments. diff --git a/docs/transform/assessment-tool-classic-pages.md b/docs/transform/assessment-tool-classic-pages.md index 07540fe1b8..a32677144d 100644 --- a/docs/transform/assessment-tool-classic-pages.md +++ b/docs/transform/assessment-tool-classic-pages.md @@ -79,6 +79,6 @@ For a complete interpretation workflow, see [Interpret the classic pages assessm ## Additional open-source documentation - [Classic SharePoint Pages Assessment](https://pnp.github.io/pnpassessment/classic/readme.html) -- [Open-source requirements page](https://pnp.github.io/pnpassessment/classic/requirements.html). That project page still lists FullControl; use the [Learn requirements](assessment-tool-classic-pages-requirements.md) for the read permission profile validated with Assessment 1.16.0. +- [Open-source requirements page](https://pnp.github.io/pnpassessment/classic/requirements.html). That project page still lists FullControl and only the application Audit permission; use the [Learn requirements](assessment-tool-classic-pages-requirements.md) for the Assessment 1.16.0 permission profile. - [Run an assessment](https://pnp.github.io/pnpassessment/classic/assess.html) - [Open-source Power BI report page](https://pnp.github.io/pnpassessment/classic/report-intro.html). That project page describes intended readiness visuals; use the [Learn report guide](assessment-tool-classic-pages-report.md) for the fields available in the current embedded template. From 4a6d596850b4fa2f44cd5daab88a291b3cdaeeda Mon Sep 17 00:00:00 2001 From: titao Date: Thu, 23 Jul 2026 15:07:50 +0800 Subject: [PATCH 05/15] Document Audit backend propagation state Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: a7db0d98-be53-48c2-9488-9a226f457144 --- docs/transform/assessment-tool-classic-pages-requirements.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/transform/assessment-tool-classic-pages-requirements.md b/docs/transform/assessment-tool-classic-pages-requirements.md index 34cc91bed3..9e3316d170 100644 --- a/docs/transform/assessment-tool-classic-pages-requirements.md +++ b/docs/transform/assessment-tool-classic-pages-requirements.md @@ -60,6 +60,7 @@ If the permission is missing, page discovery and web part analysis can still fin - Verify that Microsoft Purview Audit is available and recording activity for the tenant. - Unified Audit ingestion is enabled by default for most organizations. Verify `UnifiedAuditLogIngestionEnabled`; when it is `False`, enable it before running the query. Organization customization might need to be enabled first, and the change can take up to 60 minutes to propagate. +- The administrative property can return `True` before the Graph Audit Query backend is ready. During propagation, Graph can return HTTP 400 with backend status `AuditingDisabledTenant`; this is an Audit provisioning state, not a missing app permission. - New events can take approximately 60 to 90 minutes to become available. - `--auditlogwindowdays` accepts a value from 1 through 180. The default is 14. - The Microsoft Graph audit query API used by the tool is available only in the global service. The current tool records audit collection as `skipped` in sovereign-cloud environments. From df6bc4b67b8938706e9553a6aae1e3a54ef48434 Mon Sep 17 00:00:00 2001 From: titao Date: Thu, 23 Jul 2026 15:43:32 +0800 Subject: [PATCH 06/15] Clarify Purview Audit onboarding Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: a7db0d98-be53-48c2-9488-9a226f457144 --- docs/transform/assessment-tool-classic-pages-requirements.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/docs/transform/assessment-tool-classic-pages-requirements.md b/docs/transform/assessment-tool-classic-pages-requirements.md index 9e3316d170..99d5169002 100644 --- a/docs/transform/assessment-tool-classic-pages-requirements.md +++ b/docs/transform/assessment-tool-classic-pages-requirements.md @@ -60,8 +60,9 @@ If the permission is missing, page discovery and web part analysis can still fin - Verify that Microsoft Purview Audit is available and recording activity for the tenant. - Unified Audit ingestion is enabled by default for most organizations. Verify `UnifiedAuditLogIngestionEnabled`; when it is `False`, enable it before running the query. Organization customization might need to be enabled first, and the change can take up to 60 minutes to propagate. -- The administrative property can return `True` before the Graph Audit Query backend is ready. During propagation, Graph can return HTTP 400 with backend status `AuditingDisabledTenant`; this is an Audit provisioning state, not a missing app permission. -- New events can take approximately 60 to 90 minutes to become available. +- If Audit is disabled or Microsoft Purview reports **Microsoft 365 - Not connected**, open the **Audit** solution, select **Get started**, and wait for **Setting up apps** to finish. The ingestion property can be `True` while Microsoft 365 is still being connected to the Purview Audit backend. +- The administrative property can return `True` before the Graph Audit Query backend is ready. HTTP 400 with backend status `AuditingDisabledTenant` can indicate tenant-level provisioning or propagation; verify both ingestion and the Purview connection state before treating it as a permission failure. +- New events can take approximately 60 to 90 minutes to become available. After auditing is first enabled for an organization, events can take several hours to become searchable. - `--auditlogwindowdays` accepts a value from 1 through 180. The default is 14. - The Microsoft Graph audit query API used by the tool is available only in the global service. The current tool records audit collection as `skipped` in sovereign-cloud environments. From d7efc709a54050bcd421f710d95d15d5d5565a75 Mon Sep 17 00:00:00 2001 From: titao Date: Fri, 24 Jul 2026 14:45:02 +0800 Subject: [PATCH 07/15] Document Audit query timeouts Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 6a3b9ac4-0f42-433b-bc31-3e330dc995a4 --- docs/transform/assessment-tool-classic-pages-report.md | 4 +++- docs/transform/assessment-tool-classic-pages-run.md | 4 ++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/docs/transform/assessment-tool-classic-pages-report.md b/docs/transform/assessment-tool-classic-pages-report.md index 30dd76b948..431ba9fa0d 100644 --- a/docs/transform/assessment-tool-classic-pages-report.md +++ b/docs/transform/assessment-tool-classic-pages-report.md @@ -1,7 +1,7 @@ --- title: Interpret the classic pages assessment report description: Use page, web part, usage, and rollup results from the Microsoft 365 Assessment tool to plan SharePoint page modernization. -ms.date: 07/23/2026 +ms.date: 07/24/2026 ms.localizationpriority: high ms.service: sharepoint --- @@ -69,6 +69,8 @@ Audit usage is a planning signal, not a raw web analytics counter. Always check When a site's audit query succeeded, the absence of a page row means that no matching events were returned for that page in the requested window. Treat an absent row as zero activity only after confirming successful coverage for the site. +If `SkipReason` starts with `QueryTimeout`, Microsoft Purview accepted the query but didn't complete it during Assessment's 90-minute wait. This is different from `NoPermission`, which indicates a missing Audit permission. + ## Understand page-type coverage Wiki, Web Part, and Publishing pages receive detailed web part extraction and mapping analysis. diff --git a/docs/transform/assessment-tool-classic-pages-run.md b/docs/transform/assessment-tool-classic-pages-run.md index cbd46054f9..35b288d47d 100644 --- a/docs/transform/assessment-tool-classic-pages-run.md +++ b/docs/transform/assessment-tool-classic-pages-run.md @@ -1,7 +1,7 @@ --- title: Run a classic pages assessment description: Start, scope, monitor, and report a Microsoft 365 Assessment tool classic pages assessment. -ms.date: 07/23/2026 +ms.date: 07/24/2026 ms.localizationpriority: high ms.service: sharepoint --- @@ -108,7 +108,7 @@ microsoft365-assessment.exe restart --id The assessment ID is also the name of the local data folder. Review the log in that folder if progress stops changing. -After site processing finishes, `status` can show `Finalizing` while post-scan work runs. Page Audit queries can remain in this phase for an extended period. Review `[AuditLog]` entries in the assessment log before treating `Finalizing` as a hang. +After site processing finishes, `status` can show `Finalizing` while post-scan work runs. Assessment waits up to 90 minutes for each page Audit query. A query can remain `notStarted` or `running` during that wait; when the wait expires, Assessment records `QueryTimeout`. Review `[AuditLog]` entries in the assessment log before treating `Finalizing` as a hang. ## Generate report output From afbc5d82994a4d2a1f41808637db6df5f73d1c2c Mon Sep 17 00:00:00 2001 From: titao Date: Fri, 24 Jul 2026 14:57:47 +0800 Subject: [PATCH 08/15] Clarify failed Audit coverage Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 6a3b9ac4-0f42-433b-bc31-3e330dc995a4 --- docs/transform/assessment-tool-classic-pages-report.md | 2 +- docs/transform/assessment-tool-classic-pages-run.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/transform/assessment-tool-classic-pages-report.md b/docs/transform/assessment-tool-classic-pages-report.md index 431ba9fa0d..405c711133 100644 --- a/docs/transform/assessment-tool-classic-pages-report.md +++ b/docs/transform/assessment-tool-classic-pages-report.md @@ -69,7 +69,7 @@ Audit usage is a planning signal, not a raw web analytics counter. Always check When a site's audit query succeeded, the absence of a page row means that no matching events were returned for that page in the requested window. Treat an absent row as zero activity only after confirming successful coverage for the site. -If `SkipReason` starts with `QueryTimeout`, Microsoft Purview accepted the query but didn't complete it during Assessment's 90-minute wait. This is different from `NoPermission`, which indicates a missing Audit permission. +If `SkipReason` starts with `QueryTimeout`, Microsoft Purview didn't complete the query during Assessment's 90-minute wait. When no audit chunk succeeds, the row has `QueryStatus=failed`; treat its zero counts as failed coverage, not as evidence of no activity. This is different from `NoPermission`, which indicates a missing Audit permission. ## Understand page-type coverage diff --git a/docs/transform/assessment-tool-classic-pages-run.md b/docs/transform/assessment-tool-classic-pages-run.md index 35b288d47d..bbdc4ba0d9 100644 --- a/docs/transform/assessment-tool-classic-pages-run.md +++ b/docs/transform/assessment-tool-classic-pages-run.md @@ -108,7 +108,7 @@ microsoft365-assessment.exe restart --id The assessment ID is also the name of the local data folder. Review the log in that folder if progress stops changing. -After site processing finishes, `status` can show `Finalizing` while post-scan work runs. Assessment waits up to 90 minutes for each page Audit query. A query can remain `notStarted` or `running` during that wait; when the wait expires, Assessment records `QueryTimeout`. Review `[AuditLog]` entries in the assessment log before treating `Finalizing` as a hang. +After site processing finishes, `status` can show `Finalizing` while post-scan work runs. Assessment waits up to 90 minutes for each page Audit query. A query can remain `notStarted` or `running` during that wait. If no audit chunk succeeds before the wait expires, `classicpageauditusage.csv` records `QueryStatus=failed` and a `SkipReason` that starts with `QueryTimeout`. Review `[AuditLog]` entries in the assessment log before treating `Finalizing` as a hang. ## Generate report output From a7ab8249c7fddece1e1bf856dd5b3f6e46fd9ddb Mon Sep 17 00:00:00 2001 From: titao Date: Fri, 24 Jul 2026 15:51:20 +0800 Subject: [PATCH 09/15] Narrow Stage 1 to classic page assessment Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: a7db0d98-be53-48c2-9488-9a226f457144 --- docs/toc.yml | 50 +++----- .../assess-sharepoint-modernization.md | 59 +++++---- .../assessment-tool-classic-pages-csv.md | 11 +- .../assessment-tool-classic-pages-report.md | 103 ++++++++++++--- .../assessment-tool-classic-pages-run.md | 3 +- .../assessment-tool-classic-pages.md | 12 ++ .../assessment-tool-common-reports.md | 10 +- .../assessment-tool-extensibility-csv.md | 86 ------------- .../assessment-tool-extensibility.md | 116 ----------------- docs/transform/assessment-tool-lists.md | 117 ------------------ docs/transform/assessment-tool-overview.md | 72 ----------- .../assessment-tool-publishing-coverage.md | 71 +++++------ docs/transform/assessment-tool-reports.md | 92 -------------- ...int-modernization-assessment-comparison.md | 32 ----- 14 files changed, 186 insertions(+), 648 deletions(-) delete mode 100644 docs/transform/assessment-tool-extensibility-csv.md delete mode 100644 docs/transform/assessment-tool-extensibility.md delete mode 100644 docs/transform/assessment-tool-lists.md delete mode 100644 docs/transform/assessment-tool-overview.md delete mode 100644 docs/transform/assessment-tool-reports.md delete mode 100644 docs/transform/sharepoint-modernization-assessment-comparison.md diff --git a/docs/toc.yml b/docs/toc.yml index 93e57e09d1..5fae6199c6 100644 --- a/docs/toc.yml +++ b/docs/toc.yml @@ -1833,39 +1833,29 @@ items: - name: Overview href: solution-guidance/Office-365-development-patterns-and-practices-solution-guidance.md - - name: Assess SharePoint modernization + - name: Assess and transform classic pages href: transform/assess-sharepoint-modernization.md items: - - name: Microsoft 365 Assessment tool - href: transform/assessment-tool-overview.md + - name: Assess classic pages + href: transform/assessment-tool-classic-pages.md items: - - name: Classic pages - href: transform/assessment-tool-classic-pages.md - items: - - name: Requirements - href: transform/assessment-tool-classic-pages-requirements.md - - name: Run the assessment - href: transform/assessment-tool-classic-pages-run.md - - name: Interpret the report - href: transform/assessment-tool-classic-pages-report.md - - name: CSV reference - href: transform/assessment-tool-classic-pages-csv.md - - name: Publishing portal coverage - href: transform/assessment-tool-publishing-coverage.md - - name: Lists and libraries - href: transform/assessment-tool-lists.md - - name: Extensibility and custom actions - href: transform/assessment-tool-extensibility.md - items: - - name: CSV reference - href: transform/assessment-tool-extensibility-csv.md - - name: Reports and CSV files - href: transform/assessment-tool-reports.md - items: - - name: Common CSV files - href: transform/assessment-tool-common-reports.md - - name: Compare assessment tools - href: transform/sharepoint-modernization-assessment-comparison.md + - name: Requirements + href: transform/assessment-tool-classic-pages-requirements.md + - name: Run the assessment + href: transform/assessment-tool-classic-pages-run.md + - name: Interpret and prioritize + href: transform/assessment-tool-classic-pages-report.md + - name: CSV reference + href: transform/assessment-tool-classic-pages-csv.md + - name: Common CSV files + href: transform/assessment-tool-common-reports.md + - name: Publishing portal coverage + href: transform/assessment-tool-publishing-coverage.md + - name: Transform classic pages + href: transform/modernize-userinterface-site-pages.md + items: + - name: Transform with PnP PowerShell + href: transform/modernize-userinterface-site-pages-powershell.md - name: Modernizing your classic SharePoint sites items: - name: Overview diff --git a/docs/transform/assess-sharepoint-modernization.md b/docs/transform/assess-sharepoint-modernization.md index 40be869c2f..cef03943e5 100644 --- a/docs/transform/assess-sharepoint-modernization.md +++ b/docs/transform/assess-sharepoint-modernization.md @@ -1,47 +1,46 @@ --- -title: Assess SharePoint modernization -description: Choose an assessment tool and start collecting the data needed to modernize SharePoint. -ms.date: 07/23/2026 +title: Assess and transform classic SharePoint pages +description: Assess classic SharePoint pages, prioritize remediation, and continue into page transformation with PnP PowerShell. +ms.date: 07/24/2026 ms.localizationpriority: high ms.service: sharepoint --- -# Assess SharePoint modernization +# Assess and transform classic SharePoint pages -Assess your environment before you plan remediation or migration. The assessment identifies the classic features and customizations that are still in use, provides usage and readiness data, and helps you decide which sites and pages to modernize first. +Use the Microsoft 365 Assessment tool to discover classic pages and understand their page-transformation readiness. Then use the assessment results to prioritize remediation and transform selected pages with PnP PowerShell. -For new SharePoint Online assessments, start with the [Microsoft 365 Assessment tool](assessment-tool-overview.md). The tool is open source and produces CSV output for supported modernization, adoption, and retirement scenarios. On Windows, it can also generate a Power BI template. +This guidance focuses only on classic page assessment and its handoff to page transformation. -## Choose an assessment tool +## Page modernization workflow -| Scenario | Recommended tool | -| --- | --- | -| Assess classic SharePoint pages | [Microsoft 365 Assessment tool - Classic pages](assessment-tool-classic-pages.md) | -| Assess modern list and library readiness | [Microsoft 365 Assessment tool - Lists and libraries](assessment-tool-lists.md) | -| Find custom master pages, alternate CSS, and incompatible user custom actions | [Microsoft 365 Assessment tool - Extensibility](assessment-tool-extensibility.md) | -| Assess InfoPath, SharePoint Add-Ins, Microsoft Azure Access Control Service (ACS), or SharePoint Alerts | [Microsoft 365 Assessment tool](assessment-tool-overview.md) | -| Assess Microsoft 365 group connection readiness | [Legacy SharePoint Modernization Scanner](modernize-scanner.md) | -| Inventory SharePoint Designer customized forms | [Legacy Scanner customized forms report](modernize-scanner-reports-customizedforms.md) | -| Collect the complete legacy Publishing Portal Web-level inventory | [Legacy Scanner publishing reports](modernize-scanner-reports-publishingportals.md) | -| Assess SharePoint Server or another on-premises source | [SharePoint Migration Assessment Tool](/sharepointmigration/overview-of-the-sharepoint-migration-assessment-tool) or another scenario-specific tool | +1. [Configure and run the Classic pages assessment](assessment-tool-classic-pages-run.md). +1. Validate site, web, and Audit coverage before interpreting page counts. +1. Prioritize pages by usage, modification date, home-page status, mapping percentage, and unmapped Web Parts. +1. Decide whether each blocking Web Part should be removed, replaced, or handled through a custom mapping. +1. [Transform selected pages with PnP PowerShell](modernize-userinterface-site-pages-powershell.md). +1. Validate the new pages and iterate on mappings or remediation. + +## Use assessment output for transformation -For a detailed capability comparison, see [Compare SharePoint modernization assessment tools](sharepoint-modernization-assessment-comparison.md). +| Assessment output | Transformation decision | +| --- | --- | +| `PageUrl`, `PageType`, `Layout` | Identify the source page and transformation path. | +| `HomePage`, `UncustomizedHomePage` | Select home pages and simple early migration waves. | +| `MappingPercentage`, `UnmappedWebParts` | Find pages that need Web Part remediation or mapping changes. | +| `classicpagewebparts.csv` | Review the exact Web Part type, position, visibility, and mapping result. | +| `ModifiedAt`, `classicpageauditusage.csv` | Prioritize active content and avoid transforming unused pages without a business need. | +| `classicpublishingsitesummaries.csv` | Size publishing-page work and identify used layouts. | -> [!NOTE] -> Existing Scanner articles remain available for established report workflows and Scanner-only capabilities. The scanner-based remediation path will be updated separately from this assessment reference. +Mapping readiness is an input to planning, not a guarantee that the transformed page will preserve every visual or business behavior. -## Assessment workflow +## Scope -1. Select the assessment tool and modules that cover your scenario. -1. Configure authentication and scope. -1. Run the assessment against a test scope before scanning the full tenant. -1. Generate CSV output and, on Windows, the Power BI template. -1. Validate the report coverage and any failed sites or queries. -1. Use the results to define remediation and migration waves. +This section doesn't document other Assessment modules, end-to-end classic-site modernization, or legacy Scanner operation. Page-transformation execution is covered by the existing transformation guidance. Legacy Scanner documentation remains unchanged in this stage. ## Next steps -- [Microsoft 365 Assessment tool overview](assessment-tool-overview.md) -- [Assessment reports and CSV files](assessment-tool-reports.md) +- [Assess classic SharePoint pages](assessment-tool-classic-pages.md) +- [Interpret and prioritize assessment results](assessment-tool-classic-pages-report.md) - [Transform classic pages to modern pages](modernize-userinterface-site-pages.md) -- [Maximize use of modern lists and libraries](modernize-userinterface-lists-and-libraries.md) +- [Transform classic pages with PnP PowerShell](modernize-userinterface-site-pages-powershell.md) diff --git a/docs/transform/assessment-tool-classic-pages-csv.md b/docs/transform/assessment-tool-classic-pages-csv.md index 55fb3379e7..895b0ffdd7 100644 --- a/docs/transform/assessment-tool-classic-pages-csv.md +++ b/docs/transform/assessment-tool-classic-pages-csv.md @@ -127,7 +127,7 @@ An `error` row represents an unexpected post-scan exception. It is a site-level ## `classicwebsummaries.csv` -This file is shared by the Pages, Lists, InfoPath, Workflow-compatibility, and Extensibility components. +This file is shared by Classic components. The table below documents only page-related columns. Page-related columns include: @@ -154,7 +154,7 @@ Page-related columns include: | `RemediationCode` | Web-level remediation classification. | | `AggregatedRemediationCodes` | De-duplicated component remediation codes. | -The file also contains Classic Lists, Workflow compatibility, InfoPath, Extensibility, SharePoint Add-In, and Microsoft Azure Access Control Service (ACS) rollup columns. +The file also contains columns for other Classic components. They are outside this page-assessment reference. The current page-type rollups don't include `DelveBlogPage` rows, although those rows are present in `classicpages.csv`. @@ -184,7 +184,7 @@ Page-related columns include: | `UncustomizedHomePages` | Recognized default home-page count. | | `AggregatedRemediationCodes` | De-duplicated component remediation codes. | -The file also contains site-level Lists, Workflow compatibility, InfoPath, Extensibility, SharePoint Add-In, and Azure ACS counts. +The file also contains site-level columns for other Classic components. They are outside this page-assessment reference. The current page-type rollups don't include `DelveBlogPage` rows, although those rows are present in `classicpages.csv`. @@ -198,12 +198,9 @@ This file contains one row per site collection that has at least one publishing | `SiteUrl` | Absolute publishing portal site-collection URL. | | `NumberOfWebs` | Number of publishing webs. | | `NumberOfPages` | Number of classic publishing pages. | -| `UsedSiteMasterPages` | De-duplicated custom site master pages. Populated when Extensibility is included. | -| `UsedSystemMasterPages` | De-duplicated custom system master pages. Populated when Extensibility is included. | | `UsedPageLayouts` | De-duplicated publishing page layouts. | | `LastPageUpdateDate` | Most recent publishing-page modification time. | -> [!CAUTION] -> In the current implementation, `UsedSiteMasterPages` and `UsedSystemMasterPages` can include values from other publishing site collections in the same assessment. For a site-specific decision, filter `classicextensibilities.csv` by `ScanId` and `SiteUrl` instead of relying only on these two rollup fields. +The file also contains master-page fields populated by another Classic component. They are outside this Page Assessment reference. For legacy publishing fields that aren't represented by this file, see [Understand publishing portal coverage](assessment-tool-publishing-coverage.md). diff --git a/docs/transform/assessment-tool-classic-pages-report.md b/docs/transform/assessment-tool-classic-pages-report.md index 405c711133..e8dbb79725 100644 --- a/docs/transform/assessment-tool-classic-pages-report.md +++ b/docs/transform/assessment-tool-classic-pages-report.md @@ -8,26 +8,9 @@ ms.service: sharepoint # Interpret the classic pages assessment report -A Classic assessment exports CSV files for every Classic component. On Windows, the default `report` command also creates `ClassicAssessmentReport.pbit`. - -The Power BI template contains these tabs: - -```text -Start -Summary -Sites overview -Extensibility -Extensibility: user custom actions -InfoPath -Lists -Lists details -Pages -Workflow -Workflow details -Scan overview -``` +A Classic assessment exports page-specific and shared CSV files. On Windows, the default `report` command also creates `ClassicAssessmentReport.pbit`. -Workflow is retired. Its tabs and `workflows.csv` remain for compatibility with existing assessment data. +This guidance covers the **Pages** and scan-coverage views. The shared Classic template contains other component and compatibility tabs, but they are outside this page-assessment scope. ## Validate scan coverage first @@ -115,6 +98,88 @@ Rollups are useful for sequencing, but return to the page and web part CSV files See [Understand publishing portal coverage](assessment-tool-publishing-coverage.md) before replacing an established Publishing Scanner workflow. +## Move from assessment to transformation + +Turn the report into a transformation backlog: + +1. Exclude failed or incomplete scan locations. +1. Prioritize active pages and important home pages. +1. Group pages by page type, layout, and unmapped Web Part combination. +1. Resolve common blockers before transforming a large wave. +1. Map the CSV page identity to the PnP PowerShell source connection and cmdlet parameters. +1. Transform a representative sample and validate the result before scaling out. + +### Map CSV fields to PnP PowerShell + +| CSV field | Transformation use | +| --- | --- | +| `SiteUrl` + `WebUrl` | Build the source web URL for `Connect-PnPOnline`. | +| `PageUrl` + `ListUrl` | Derive the page file name, containing library, and optional folder. | +| `PageName` | Use the page title as `-Identity` for a classic Blog page. | +| `PageType` | Route to the Wiki/Web Part, Publishing, or Blog transformation path. | +| `Layout` | Select or validate page-layout mapping for publishing pages. | + +The Assessment app is read-only. Use a separate PnP PowerShell connection with permission to create or update pages in the source or target web. + +### Transform one selected Wiki or Web Part page + +This example selects one assessed page and transforms it in place. Filter on the exact `PageUrl` that you approved for the migration wave. + +```powershell +$row = Import-Csv .\classicpages.csv | + Where-Object PageUrl -eq '/sites/source/SitePages/ApprovedPage.aspx' | + Select-Object -First 1 + +if ($row.PageType -notin @('WikiPage', 'WebPartPage')) { + throw "This example only handles WikiPage and WebPartPage rows." +} + +$sourceWebUrl = if ($row.WebUrl -eq '/') { + $row.SiteUrl +} +else { + "$($row.SiteUrl.TrimEnd('/'))$($row.WebUrl)" +} + +$source = Connect-PnPOnline ` + -Url $sourceWebUrl ` + -Interactive ` + -ClientId ` + -ReturnConnection + +$libraryPath = $row.ListUrl.TrimEnd('/') +if (-not $row.PageUrl.StartsWith("$libraryPath/", [StringComparison]::OrdinalIgnoreCase)) { + throw "PageUrl isn't under ListUrl." +} + +$pageRelativeToLibrary = $row.PageUrl.Substring($libraryPath.Length).TrimStart('/') +$pageName = [IO.Path]::GetFileName($pageRelativeToLibrary) +$folder = [IO.Path]::GetDirectoryName($pageRelativeToLibrary) -replace '\\', '/' +$libraryName = [Uri]::UnescapeDataString([IO.Path]::GetFileName($libraryPath)) + +$parameters = @{ + Identity = $pageName + Connection = $source +} + +if ($libraryName -ne 'SitePages') { + $parameters.Library = $libraryName +} +if (-not [string]::IsNullOrWhiteSpace($folder)) { + $parameters.Folder = $folder +} + +ConvertTo-PnPPage @parameters +``` + +Route other page types deliberately: + +- `PublishingPage`: use `-PublishingPage`, a target web, and the [publishing page-layout model](modernize-userinterface-site-pages-model-publishing.md). +- `BlogPage`: use `-BlogPage`, `PageName` as the blog-title identity, and a target web. Blog rows don't receive the detailed mapping-readiness enrichment described for Wiki, Web Part, and Publishing pages. +- `ASPXPage` and `DelveBlogPage`: exclude them from this automated transformation queue; the page assessment doesn't provide an equivalent readiness path for them. + +Start with [Transform classic pages with PnP PowerShell](modernize-userinterface-site-pages-powershell.md). Use the [page transformation model](modernize-userinterface-site-pages-model.md) for custom Web Part mappings and the [publishing model](modernize-userinterface-site-pages-model-publishing.md) for publishing page layouts. + ## Power BI and CSV The Power BI template is a visualization layer over the CSV output. The CSV files remain the source for: diff --git a/docs/transform/assessment-tool-classic-pages-run.md b/docs/transform/assessment-tool-classic-pages-run.md index bbdc4ba0d9..3d958388ef 100644 --- a/docs/transform/assessment-tool-classic-pages-run.md +++ b/docs/transform/assessment-tool-classic-pages-run.md @@ -8,7 +8,7 @@ ms.service: sharepoint # Run a classic pages assessment -Use `--mode Classic --classicinclude Pages` to run only the classic pages component. If you omit `--classicinclude`, the tool runs all supported Classic components: Pages, Lists, InfoPath, and Extensibility. +Use `--mode Classic --classicinclude Pages` to run only the classic pages component. Always specify `Pages`; omitting `--classicinclude` also runs additional Classic components that aren't covered in this guidance. Before you start, complete the [classic pages requirements](assessment-tool-classic-pages-requirements.md). @@ -135,3 +135,4 @@ Use `--delimiter Semicolon` when a semicolon-delimited export is required. Use ` - [Interpret the classic pages report](assessment-tool-classic-pages-report.md) - [Classic pages CSV reference](assessment-tool-classic-pages-csv.md) - [Understand publishing portal coverage](assessment-tool-publishing-coverage.md) +- [Transform classic pages with PnP PowerShell](modernize-userinterface-site-pages-powershell.md) diff --git a/docs/transform/assessment-tool-classic-pages.md b/docs/transform/assessment-tool-classic-pages.md index a32677144d..ab39409f1e 100644 --- a/docs/transform/assessment-tool-classic-pages.md +++ b/docs/transform/assessment-tool-classic-pages.md @@ -76,6 +76,18 @@ For an enriched page, `WebPartCount=0` and `MappingPercentage=100` means that no For a complete interpretation workflow, see [Interpret the classic pages assessment report](assessment-tool-classic-pages-report.md). +## Continue to page transformation + +Use the assessment output to select pages and identify Web Parts that need remediation. A high mapping percentage helps prioritize work, but it doesn't transform the page. + +1. Review `classicpages.csv` and `classicpagewebparts.csv`. +1. Remove, replace, or map blocking Web Parts. +1. Start with a small representative wave. +1. [Transform the selected pages with PnP PowerShell](modernize-userinterface-site-pages-powershell.md). +1. Validate the generated modern pages before expanding the wave. + +For the complete transformation model and advanced mapping options, see [Transform classic pages to modern pages](modernize-userinterface-site-pages.md). + ## Additional open-source documentation - [Classic SharePoint Pages Assessment](https://pnp.github.io/pnpassessment/classic/readme.html) diff --git a/docs/transform/assessment-tool-common-reports.md b/docs/transform/assessment-tool-common-reports.md index f19e2c8551..14822226b6 100644 --- a/docs/transform/assessment-tool-common-reports.md +++ b/docs/transform/assessment-tool-common-reports.md @@ -1,14 +1,14 @@ --- -title: Common Microsoft 365 Assessment CSV files -description: Understand the scans, properties, history, site collection, and web CSV files exported by every Microsoft 365 Assessment tool report. +title: Common CSV files for a classic pages assessment +description: Use the common scan, property, history, site collection, and web files to validate Classic Pages assessment coverage. ms.date: 07/23/2026 ms.localizationpriority: high ms.service: sharepoint --- -# Common Microsoft 365 Assessment CSV files +# Common CSV files for a classic pages assessment -Every Microsoft 365 Assessment tool report exports these files: +A Classic pages report also exports these common files: ```text scans.csv @@ -125,4 +125,4 @@ The internal error and stack-trace properties aren't exported to this CSV. 1. Review `history.csv` and the local log for failure details. 1. Only then interpret module-specific counts and findings. -For the complete mode-specific inventory, see [Microsoft 365 Assessment reports and CSV files](assessment-tool-reports.md). +For page-specific fields and joins, see [Classic pages assessment CSV reference](assessment-tool-classic-pages-csv.md). diff --git a/docs/transform/assessment-tool-extensibility-csv.md b/docs/transform/assessment-tool-extensibility-csv.md deleted file mode 100644 index f509db8ace..0000000000 --- a/docs/transform/assessment-tool-extensibility-csv.md +++ /dev/null @@ -1,86 +0,0 @@ ---- -title: Extensibility assessment CSV reference -description: Understand the classic extensibility and incompatible user custom action CSV files generated by the Microsoft 365 Assessment tool. -ms.date: 07/23/2026 -ms.localizationpriority: high -ms.service: sharepoint ---- - -# Extensibility assessment CSV reference - -The Extensibility component writes: - -```text -classicextensibilities.csv -classicusercustomactions.csv -``` - -Both files use `ScanId`, `SiteUrl`, and `WebUrl` to identify the affected web. - -## `classicextensibilities.csv` - -This file contains one row per web with a detected custom master page, alternate CSS, or incompatible user custom action. - -| Column | Description | -| --- | --- | -| `ScanId` | Assessment identifier. | -| `SiteUrl` | Absolute site-collection URL. | -| `WebUrl` | Site-collection-relative web URL. `/` represents the root web. | -| `UsesCustomMasterPage` | Indicates that `MasterPage` or `CustomMasterPage` isn't in the tool's out-of-box exclusion list. | -| `MasterPage` | Custom value from the web's system master-page property. | -| `CustomMasterPage` | Custom value from the web's site master-page property. | -| `UsesCustomCSS` | Indicates that alternate CSS is configured. | -| `AlternateCSS` | Alternate CSS URL. | -| `UsesCustomTheme` | Compatibility field. The current Extensibility component doesn't populate custom-theme findings. | -| `UsesUserCustomAction` | Indicates that at least one incompatible user custom action was stored for the web. | -| `HasSharePointAddIns` | Compatibility field. The current Extensibility component doesn't populate SharePoint Add-In findings. | -| `RemediationCode` | Comma-separated Extensibility remediation codes found for the web. | - -Out-of-the-box master pages are excluded. A web with no detected Extensibility finding doesn't receive a row. - -## `classicusercustomactions.csv` - -This file contains incompatible Site-, Web-, or List-scoped user custom actions. - -| Column | Description | -| --- | --- | -| `ScanId` | Assessment identifier. | -| `SiteUrl` | Absolute site-collection URL. | -| `WebUrl` | Site-collection-relative web URL. `/` represents the root web. | -| `Id` | User custom action identifier. | -| `Title` | Display title. | -| `Name` | Internal name. | -| `Location` | Custom action location. | -| `RegistrationType` | Registration type associated with `RegistrationId`. | -| `RegistrationId` | Registration target. | -| `CommandAction` | JavaScript command extracted from a command UI handler when detected. | -| `CommandUIExtension` | Command UI extension XML. | -| `Description` | Description. | -| `ScriptBlock` | Inline script captured for an incompatible location. | -| `ScriptSrc` | External script source captured for an incompatible location. | -| `Url` | Configured action URL. | -| `Problem` | Detected problem, such as `InvalidLocation` or `JavaScriptEmbedded`. | -| `ListId` | List identifier for a List-scoped action. | -| `ListUrl` | List URL for a List-scoped action. | -| `ListTitle` | List title for a List-scoped action. | -| `RemediationCode` | `CE6`, `CE8`, or `CE9`, depending on scope and detected incompatibility. | - -The row key is `ScanId`, `SiteUrl`, `WebUrl`, and `Id`. - -Only actions with a populated `Problem` are stored. Compatible actions don't appear in this file. For a List-scoped incompatible action, the current implementation assigns `CE6` after recording the detected problem. - -Site-scoped actions are evaluated when the root web is scanned. Web-scoped and List-scoped actions are evaluated in their respective web. - -## Interpret remediation codes - -| Code | Meaning in this output | -| --- | --- | -| `CE3` | Custom master page. | -| `CE4` | Alternate CSS. | -| `CE6` | List-scoped incompatible user custom action. | -| `CE8` | JavaScript embedded in a command UI handler. | -| `CE9` | Other incompatible custom-action location. | - -`CE5` exists in the model for custom themes but isn't populated by the current component. - -For execution guidance, see [Assess classic SharePoint extensibility](assessment-tool-extensibility.md). diff --git a/docs/transform/assessment-tool-extensibility.md b/docs/transform/assessment-tool-extensibility.md deleted file mode 100644 index 6c22198a2d..0000000000 --- a/docs/transform/assessment-tool-extensibility.md +++ /dev/null @@ -1,116 +0,0 @@ ---- -title: Assess classic SharePoint extensibility -description: Find classic branding and incompatible user custom actions with the Microsoft 365 Assessment tool. -ms.date: 07/23/2026 -ms.localizationpriority: high -ms.service: sharepoint ---- - -# Assess classic SharePoint extensibility - -Use the Extensibility component of the Microsoft 365 Assessment tool to identify classic branding and user customizations that require remediation before adopting modern SharePoint experiences. - -## Before you begin - -- Download the latest [Microsoft 365 Assessment tool release](https://github.com/pnp/pnpassessment/releases). -- [Configure an Entra application](https://pnp.github.io/pnpassessment/using-the-assessment-tool/setupauth.html). Application authentication is recommended for a full-tenant assessment. -- Use `--skipusageinformation` for an Extensibility-only assessment because the current Classic post-scan path otherwise starts the page Audit query. - -Use the following permissions: - -| Authentication | Microsoft Graph | SharePoint | -| --- | --- | --- | -| Application | `Sites.Read.All` application permission | `Sites.Read.All` application permission | -| Interactive or Device | `Sites.Read.All` and `User.Read` delegated permissions | `AllSites.Read` delegated permission | - -## Run the assessment - -The example uses the Windows executable name. On macOS or Linux, use `./microsoft365-assessment`. - -```powershell -microsoft365-assessment.exe start --mode Classic --classicinclude Extensibility ` - --skipusageinformation ` - --authmode application ` - --tenant .sharepoint.com ` - --applicationid ` - --certpath "My|CurrentUser|" -``` - -## What the assessment checks - -The component identifies: - -- Custom site and system master pages. -- Alternate CSS. -- Site-scoped, Web-scoped, and List-scoped user custom actions. -- Script blocks and external script sources. -- JavaScript commands embedded in command UI extensions. -- Incompatible custom-action locations. - -Out-of-the-box master pages are excluded from the custom master-page result. - -## Output - -### `classicextensibilities.csv` - -One row per affected Web, including: - -- Custom master-page paths. -- Alternate CSS. -- Presence of incompatible user custom actions. -- Aggregated remediation codes. - -### `classicusercustomactions.csv` - -One row per incompatible user custom action, including: - -- Title, name, location, and registration information. -- Command action and command UI extension. -- Script block and script source. -- List ID, URL, and title for List-scoped actions. -- Detected problem and remediation code. - -The Classic Power BI template includes **Extensibility** and **Extensibility: user custom actions** tabs. - -For the exact fields and row-selection behavior, see [Extensibility assessment CSV reference](assessment-tool-extensibility-csv.md). - -## Use the Power BI report - -The **Extensibility** tab provides a per-web table for: - -- Custom master pages. -- Alternate CSS. -- Incompatible user custom actions. -- Remediation codes. - -It also includes site, web, master-page, CSS, custom-action, theme, and Add-In filters. The current Extensibility component doesn't populate custom-theme or SharePoint Add-In findings, so don't interpret the corresponding compatibility fields as a complete assessment of those scenarios. - -The **Extensibility: user custom actions** tab provides: - -- A summary table with web, location, problem, List title, and remediation code. -- A details table for script source, script block, command UI extension, and command action. -- Charts grouped by location and detected problem. - -Use the CSV files for exact identifiers, registration metadata, row selection, and automation. - -## Remediation codes - -| Code | Meaning | -| --- | --- | -| `CE3` | Custom master page. | -| `CE4` | Alternate CSS. | -| `CE6` | List Ribbon extension or user custom action. | -| `CE8` | Embedded JavaScript. | -| `CE9` | Other incompatible UI extension or location. | - -The model contains a `CE5` custom-theme code, but the current Extensibility component doesn't populate custom-theme findings. - -## Scope boundaries - -The Extensibility component doesn't replace Microsoft 365 group connection readiness. It also doesn't assess SharePoint Add-Ins or Microsoft Azure Access Control Service (ACS) inside Classic mode; use the separate `AddInsACS` assessment. - -## Next steps - -- [Modernize customizations](modernize-customizations.md) -- [SharePoint Framework Extensions](../spfx/extensions/overview-extensions.md) -- [Compare SharePoint modernization assessment tools](sharepoint-modernization-assessment-comparison.md) diff --git a/docs/transform/assessment-tool-lists.md b/docs/transform/assessment-tool-lists.md deleted file mode 100644 index c6309f233f..0000000000 --- a/docs/transform/assessment-tool-lists.md +++ /dev/null @@ -1,117 +0,0 @@ ---- -title: Assess modern list and library readiness -description: Find lists and libraries that render in the classic experience and understand why. -ms.date: 07/23/2026 -ms.localizationpriority: high -ms.service: sharepoint ---- - -# Assess modern list and library readiness - -Use the Lists component of the Microsoft 365 Assessment tool to find SharePoint Online lists and libraries that aren't confirmed to render in the modern experience. - -## Before you begin - -- Download the latest [Microsoft 365 Assessment tool release](https://github.com/pnp/pnpassessment/releases). -- [Configure an Entra application](https://pnp.github.io/pnpassessment/using-the-assessment-tool/setupauth.html). Application authentication is recommended for a full-tenant assessment. -- Use `--skipusageinformation` for a Lists-only assessment because the current Classic post-scan path otherwise starts the page Audit query. - -Use the following permissions: - -| Authentication | Microsoft Graph | SharePoint | -| --- | --- | --- | -| Application | `Sites.Read.All` application permission | `Sites.Read.All` application permission | -| Interactive or Device | `Sites.Read.All` and `User.Read` delegated permissions | `AllSites.Read` delegated permission | - -## Run the assessment - -The example uses the Windows executable name. On macOS or Linux, use `./microsoft365-assessment`. - -```powershell -microsoft365-assessment.exe start --mode Classic --classicinclude Lists ` - --skipusageinformation ` - --authmode application ` - --tenant .sharepoint.com ` - --applicationid ` - --certpath "My|CurrentUser|" -``` - -If `--classicinclude` is omitted, the Classic assessment also runs the Pages, InfoPath, and Extensibility components. - -## What the assessment checks - -For each list or library, the assessment reads: - -- List template and template ID. -- Configured List Experience. -- Default view page render type. -- Item count and last user modification date. -- Whether the template is classic-by-design. - -Lists that aren't confirmed to render Modern are written to `classiclists.csv`. This includes classic-by-design lists, lists explicitly forced to Classic, incompatible lists, and rows whose render type is `Undefined`. Modern lists are counted in the Web and site-collection summaries. - -## Output - -`classiclists.csv` contains: - -| Column | Description | -| --- | --- | -| `ScanId` | Assessment identifier. | -| `SiteUrl` | Absolute site-collection URL. | -| `WebUrl` | Site-collection-relative web URL. `/` represents the root web. | -| `ListId` | List identifier. | -| `ListUrl` | Server-relative list or library URL. | -| `ListTitle` | List title. | -| `ListTemplateType` | Named List template type. | -| `ListTemplate` | Numeric List template ID. | -| `ListExperience` | Configured `Auto`, `NewExperience`, or `ClassicExperience` value. | -| `ClassicByDesign` | Indicates that the List template doesn't have a modern experience. | -| `DefaultViewRenderType` | SharePoint's reason that the default view does or doesn't render Modern. | -| `LastModifiedAt` | Last user modification time. | -| `ItemCount` | Number of items. | -| `RemediationCode` | Normalized readiness category from `CL1` through `CL6`. It can be empty for an ignored or undefined render type. | - -The row key is `ScanId`, `SiteUrl`, `WebUrl`, and `ListId`. - -`DefaultViewRenderType=Undefined` means that the tool didn't have enough information to determine the render mode. Treat a row with `Undefined` and an empty `RemediationCode` as inconclusive, not as a confirmed modernization blocker. - -The Classic Power BI template includes **Lists** and **Lists details** tabs. - -## Use the Power BI report - -The **Lists** tab provides: - -- A table with web, list title, template, modification date, item count, classic-by-design status, and remediation code. -- Site, web, modification-date, and classic-by-design filters. -- A **Classic by design** chart. - -The **Lists details** tab adds: - -- `DefaultViewRenderType`. -- `ListExperience`. -- Charts for the render reason, configured List Experience, and List template. - -Use `classiclists.csv` when you need stable join keys, exact enum strings, or automation. The Power BI template is a visualization over the same list data and doesn't make the output field-for-field compatible with the legacy Scanner. - -## Remediation codes - -| Code | Meaning | -| --- | --- | -| `CL1` | A List, Web, Site, or Tenant setting forces Classic. | -| `CL2` | JSLink, XslLink, or a code-based custom action is incompatible with Modern. | -| `CL3` | The List page or form is customized, unghosted, or contains an incompatible Web Part configuration. | -| `CL4` | The List template is classic-by-design or unsupported in Modern. | -| `CL5` | An incompatible field type prevents Modern rendering. | -| `CL6` | A special or incompatible view type prevents Modern rendering. | - -## Legacy Scanner differences - -The legacy Scanner exposed many individual Boolean and detail columns, such as the exact JSLink fields, blocking feature scope, and page-load exception. The Assessment output normalizes most of these details into `DefaultViewRenderType` and `RemediationCode`. - -Don't treat `classiclists.csv` as field-for-field compatible with `ModernizationListScanResults.csv`. - -## Next steps - -- [Maximize use of modern lists and libraries](modernize-userinterface-lists-and-libraries.md) -- [Modernize customizations](modernize-customizations.md) -- [Compare SharePoint modernization assessment tools](sharepoint-modernization-assessment-comparison.md) diff --git a/docs/transform/assessment-tool-overview.md b/docs/transform/assessment-tool-overview.md deleted file mode 100644 index 98ca798d31..0000000000 --- a/docs/transform/assessment-tool-overview.md +++ /dev/null @@ -1,72 +0,0 @@ ---- -title: Microsoft 365 Assessment tool overview -description: Learn what the Microsoft 365 Assessment tool assesses and how to get started. -ms.date: 07/23/2026 -ms.localizationpriority: high -ms.service: sharepoint ---- - -# Microsoft 365 Assessment tool overview - -The Microsoft 365 Assessment tool is an open-source command-line tool that collects data from Microsoft 365 and generates CSV reports. On Windows, it also generates a Power BI template. Use the reports to plan modernization, adoption, and retirement work. - -## Public assessment modules - -| Module | CLI mode | Purpose | -| --- | --- | --- | -| Classic | `Classic` | Assesses classic pages, lists, InfoPath usage, and classic extensibility components selected with `--classicinclude`. | -| InfoPath Forms Services | `InfoPath` | Inventories InfoPath usage and supports retirement planning. | -| SharePoint Add-Ins and Microsoft Azure Access Control Service (ACS) | `AddInsACS` | Inventories SharePoint Add-Ins and Azure ACS principals. | -| SharePoint Alerts | `Alerts` | Inventories SharePoint Alerts for retirement planning. | - -The Workflow mode is retired. Workflow implementation and report artifacts remain in the repository for compatibility with existing assessment data, but a new Workflow assessment can't be started. - -## Get started - -1. [Download the latest release](https://github.com/pnp/pnpassessment/releases). -1. [Configure authentication](https://pnp.github.io/pnpassessment/using-the-assessment-tool/setupauth.html). -1. Review the requirements for the selected assessment module. -1. Run `microsoft365-assessment.exe --help` and `microsoft365-assessment.exe start --help`. -1. Start an assessment. -1. Monitor it with the `status` and `list` actions. -1. Generate a report with the `report` action. - -Command examples in this guidance use the Windows executable name `microsoft365-assessment.exe`. On macOS or Linux, mark the downloaded binary as executable and use `./microsoft365-assessment` instead. Replace Windows file paths with paths for your operating system. - -The detailed open-source project documentation remains available at [pnp.github.io/pnpassessment](https://pnp.github.io/pnpassessment/index.html). - -## Common report output - -Every assessment report exports: - -```text -scans.csv -properties.csv -history.csv -sitecollections.csv -webs.csv -``` - -The selected mode adds module-specific CSV files. On Windows, report generation also creates a Power BI template. On macOS and Linux, copy the assessment data to Windows if you need to generate the Power BI template. For the complete inventory, see [Microsoft 365 Assessment reports and CSV files](assessment-tool-reports.md). - -## Classic assessment components - -When `--mode Classic` is selected, use `--classicinclude` to choose one or more components: - -```text -InfoPath -Pages -Lists -Extensibility -``` - -If `--classicinclude` is omitted, all supported Classic components run. Workflow is retired, and Add-Ins/Azure ACS use the separate `AddInsACS` mode. - -## Related guidance - -- [Classic pages assessment](assessment-tool-classic-pages.md) -- [Classic pages requirements](assessment-tool-classic-pages-requirements.md) -- [Run a classic pages assessment](assessment-tool-classic-pages-run.md) -- [Lists and libraries assessment](assessment-tool-lists.md) -- [Extensibility assessment](assessment-tool-extensibility.md) -- [Compare assessment tools](sharepoint-modernization-assessment-comparison.md) diff --git a/docs/transform/assessment-tool-publishing-coverage.md b/docs/transform/assessment-tool-publishing-coverage.md index caf40c0b9d..768defd8ee 100644 --- a/docs/transform/assessment-tool-publishing-coverage.md +++ b/docs/transform/assessment-tool-publishing-coverage.md @@ -1,19 +1,19 @@ --- -title: Understand publishing portal assessment coverage -description: Compare Microsoft 365 Assessment tool publishing output with the legacy SharePoint Modernization Scanner publishing reports. -ms.date: 07/23/2026 +title: Assess publishing pages for transformation +description: Use Microsoft 365 Assessment tool publishing-page output to plan page transformation and page-layout mapping. +ms.date: 07/24/2026 ms.localizationpriority: high ms.service: sharepoint --- -# Understand publishing portal assessment coverage +# Assess publishing pages for transformation -The Microsoft 365 Assessment tool provides page-level publishing readiness and a site-collection-level publishing portal summary. It doesn't reproduce the complete web-level publishing configuration inventory from the legacy SharePoint Modernization Scanner. +The Microsoft 365 Assessment tool provides page-level publishing readiness and a site-collection-level publishing-page summary. Use these results to size publishing transformation work and identify layouts or Web Parts that require custom mappings. ## Before you begin -- Complete the [Classic Pages requirements](assessment-tool-classic-pages-requirements.md). This assessment includes Pages and uses the documented read permission profile. -- Include both Pages and Extensibility to populate page readiness, page layouts, custom master pages, and alternate CSS. +- Complete the [Classic Pages requirements](assessment-tool-classic-pages-requirements.md). +- Run the Pages component to populate publishing-page readiness, page layouts, and Web Part inventory. - The following command skips page Audit usage. Remove `--skipusageinformation` only after configuring the documented Audit application permission. ## Run the required components @@ -22,7 +22,7 @@ The example uses the Windows executable name. On macOS or Linux, use `./microsof ```powershell microsoft365-assessment.exe start --mode Classic ` - --classicinclude Pages Extensibility ` + --classicinclude Pages ` --skipusageinformation ` --authmode application ` --tenant .sharepoint.com ` @@ -30,32 +30,17 @@ microsoft365-assessment.exe start --mode Classic ` --certpath "My|CurrentUser|" ``` -If Extensibility isn't included, the custom master-page fields in `classicpublishingsitesummaries.csv` aren't populated. - -## Legacy report mapping - -| Legacy Scanner output | Assessment output | Coverage | -| --- | --- | --- | -| `ModernizationPublishingSiteScanResults.csv` | `classicpublishingsitesummaries.csv` | Close site-collection-level match. | -| `ModernizationPublishingWebScanResults.csv` | `classicwebsummaries.csv` plus `classicextensibilities.csv` | Partial. The complete publishing configuration isn't available. | -| `ModernizationPublishingPageScanResults.csv` | `classicpages.csv` plus `classicpagewebparts.csv` | Partial. Core page, layout, modification, and web part readiness is available, but several publishing-specific fields aren't. | -| Publishing readiness Excel dashboard | Classic Power BI template | Different model. The legacy complexity categorization isn't reproduced. | - ## Site-collection summary -`classicpublishingsitesummaries.csv` provides the same core site-collection fields as the legacy publishing site report: +Use these page-related fields in `classicpublishingsitesummaries.csv`: - Publishing web count. - Publishing page count. -- Used custom site and system master pages. - Used page layouts. - Latest publishing-page modification date. Use this file to identify large or stale publishing portals. -> [!CAUTION] -> The current Assessment implementation can aggregate `UsedSiteMasterPages` and `UsedSystemMasterPages` from other publishing site collections in the same assessment. For site-specific master-page analysis, filter `classicextensibilities.csv` by `ScanId` and `SiteUrl`. - ## Page-level coverage Assessment provides: @@ -66,34 +51,38 @@ Assessment provides: - Mapping percentage and unmapped web part types. - Optional page view/create/edit audit activity. -Assessment doesn't provide these legacy publishing page fields: +The current page assessment doesn't provide these publishing transformation inputs: - Content type name and ID. - Page layout file and whether the layout was customized. - Global, security-group, and SharePoint-group audience values. -- The legacy fixed `WPType1` through `WPType20` and `WPTitle1` through `WPTitle20` columns. +- Master-page, alternate-CSS, navigation, approval, versioning, scheduling, variation, audience, and ownership configuration. -The normalized `classicpagewebparts.csv` file replaces the fixed web part columns and doesn't have the legacy 20-web-part limit. +These areas are outside the Page Assessment scope. The lifecycle of legacy Scanner reports is handled separately from this guidance. -## Web-level gaps +## Continue to publishing-page transformation -The current Assessment output doesn't reproduce the full `ModernizationPublishingWebScanResults.csv` contract, including: +1. Group publishing pages by `Layout`. +1. Review `MappingPercentage` and `UnmappedWebParts`. +1. Identify custom layouts that need a page-layout mapping. +1. Validate representative pages before processing a complete portal. -- Site-collection complexity and web depth categorization. -- Web language and variation labels. -- Allowed and default page-layout configuration. -- Global and current navigation settings. -- Managed navigation term-set identifiers. -- Page library scheduling, moderation, versioning, minor versions, and approval workflow configuration. -- Broken permission inheritance. -- Web administrators and owners. +For an out-of-the-box publishing layout, use the built-in layout mapping where possible: -If a migration plan depends on these fields, continue to use the legacy Scanner publishing mode for that inventory and retain its report schema with the project evidence. +```powershell +Connect-PnPOnline -Url https://contoso.sharepoint.com/sites/source -Interactive -ClientId -## Tool choice +ConvertTo-PnPPage ` + -PublishingPage ` + -Identity Article.aspx ` + -TargetWebUrl https://contoso.sharepoint.com/sites/target +``` -Use Assessment for new SharePoint Online page discovery, web part readiness, usage, and site-level publishing summaries. +For a custom publishing layout, generate and review a mapping before transformation: -Use the legacy Scanner only when you need its established report contract or the unsupported web-level publishing configuration. Don't assume that an empty Assessment field proves that the corresponding publishing feature isn't configured. +```powershell +Export-PnPPageMapping -CustomPageLayoutMapping -Folder C:\temp +``` For field-level Assessment output, see [Classic pages CSV reference](assessment-tool-classic-pages-csv.md). +For page-layout mapping details, see [Publishing Page transformation model](modernize-userinterface-site-pages-model-publishing.md). diff --git a/docs/transform/assessment-tool-reports.md b/docs/transform/assessment-tool-reports.md deleted file mode 100644 index 61e7e5f54c..0000000000 --- a/docs/transform/assessment-tool-reports.md +++ /dev/null @@ -1,92 +0,0 @@ ---- -title: Microsoft 365 Assessment reports and CSV files -description: Understand the Power BI templates, report tabs, and CSV files produced by the Microsoft 365 Assessment tool. -ms.date: 07/23/2026 -ms.localizationpriority: high -ms.service: sharepoint ---- - -# Microsoft 365 Assessment reports and CSV files - -The Microsoft 365 Assessment tool stores assessment data locally and generates CSV exports for the selected mode. On Windows, it also generates a Power BI template. On macOS and Linux, copy the assessment data to Windows if you need to generate the Power BI template. - -## Public report templates - -| Mode | Power BI template | Report tabs | -| --- | --- | --- | -| Classic | `ClassicAssessmentReport.pbit` | Start; Summary; Sites overview; Extensibility; Extensibility: user custom actions; InfoPath; Lists; Lists details; Pages; Workflow; Workflow details; Scan overview | -| InfoPath | `InfoPathAssessmentReport.pbit` | InfoPath; Scan overview | -| AddInsACS | `AddInsACSAssessmentReport.pbit` | SharePoint AddIns; Add-In details; ACS Principals; ACS Details; Scan overview | -| Alerts | `AlertsAssessmentReport.pbit` | Overview; Details; Scan overview | - -Workflow tabs remain in the Classic template for compatibility with existing data. Workflow is retired and isn't a supported component for new assessments. - -The current Classic Power BI model uses the basic page inventory. Enriched home-page, web part, mapping, audit, and page-readiness rollup fields are available in CSV output but aren't included in the embedded visuals. - -## Common CSV files - -Every assessment report exports: - -| File | Purpose | -| --- | --- | -| `scans.csv` | Assessment ID, dates, status, version, mode, scope, and authentication configuration. | -| `properties.csv` | Assessment properties and component options. | -| `history.csv` | Assessment lifecycle events and messages. | -| `sitecollections.csv` | Site-collection scan status and duration. | -| `webs.csv` | Web scan status, template, and duration. | - -> [!CAUTION] -> Common report files can contain tenant URLs, application identifiers, site scope, operational messages, and protected authentication configuration values. Review and sanitize these files before sharing them outside the assessment team. Never publish passwords, certificates, tokens, or unredacted tenant identifiers. - -For exact fields, status values, and join keys, see [Common Microsoft 365 Assessment CSV files](assessment-tool-common-reports.md). - -## Classic mode files - -Classic mode exports: - -```text -workflows.csv -classicextensibilities.csv -classicinfopath.csv -classiclists.csv -classicpages.csv -classicpagewebparts.csv -classicwebpartunique.csv -classicusercustomactions.csv -classicsitesummaries.csv -classicwebsummaries.csv -classicpublishingsitesummaries.csv -``` - -`classicpageauditusage.csv` is added only when audit collection produces rows. - -The `workflows.csv` compatibility output can be empty because Workflow is retired. - -For Classic page schemas, join keys, and coverage rules, see [Classic pages CSV reference](assessment-tool-classic-pages-csv.md). For an interpretation workflow, see [Interpret the classic pages assessment report](assessment-tool-classic-pages-report.md). - -## Other mode-specific files - -| Mode | Files | -| --- | --- | -| InfoPath | `classicinfopath.csv` | -| AddInsACS | `classicaddins.csv`, `classicacsprincipals.csv`, `classicacsprincipalsites.csv`, `classicacsprincipalsitescopedpermissions.csv`, `classicacsprincipaltenantcopedpermissions.csv` | -| Alerts | `alerts.csv` | - -Across current public modes, the report contract defines 23 distinct CSV file names, including the optional page audit usage file. - -## Generate reports - -Generate a report only after the assessment is `Finished` or intentionally `Paused`. A status of `Finalizing` means post-scan work is still running, and the report command rejects the request. - -The examples use the Windows executable name. On macOS or Linux, use `./microsoft365-assessment` and an operating-system-appropriate output path. Power BI template generation remains Windows-only. - -```console -microsoft365-assessment.exe list -microsoft365-assessment.exe report --id -``` - -To export only CSV files: - -```console -microsoft365-assessment.exe report --id --mode CsvOnly --path "c:\reports" -``` diff --git a/docs/transform/sharepoint-modernization-assessment-comparison.md b/docs/transform/sharepoint-modernization-assessment-comparison.md deleted file mode 100644 index 786eeb8a0c..0000000000 --- a/docs/transform/sharepoint-modernization-assessment-comparison.md +++ /dev/null @@ -1,32 +0,0 @@ ---- -title: Compare SharePoint modernization assessment tools -description: Compare Microsoft 365 Assessment, the legacy SharePoint Modernization Scanner, and on-premises assessment tools. -ms.date: 07/23/2026 -ms.localizationpriority: high -ms.service: sharepoint ---- - -# Compare SharePoint modernization assessment tools - -Use the Microsoft 365 Assessment tool for new SharePoint Online assessments when it supports the scenario. Continue to use the legacy SharePoint Modernization Scanner only for an established workflow or a capability that isn't yet available in Assessment. - -## Capability comparison - -| Capability | Microsoft 365 Assessment tool | Legacy Modernization Scanner | Guidance | -| --- | --- | --- | --- | -| Classic page discovery and Web Part readiness | Available | Available | Use Assessment for new work. | -| Modern list and library readiness | Available; output is normalized and isn't field-for-field compatible | Available | Use Assessment for new work; retain Scanner documentation for existing reports. | -| Classic extensibility and user custom actions | Available | Available as part of Groupify/site reports | Use Assessment for new work. | -| InfoPath | Available | Available | Use Assessment. | -| Blog pages | Included in Classic pages | Dedicated legacy reports | Use Assessment for new discovery. | -| Publishing pages and portal-level summary | Page readiness and site-level summary available; full Web-level configuration isn't available | Available | Use Assessment where sufficient; see [publishing portal coverage](assessment-tool-publishing-coverage.md) before replacing a legacy workflow. | -| Microsoft 365 group connection readiness | Not available | Available | Use the legacy Scanner. | -| SharePoint Designer customized forms | Not available as a dedicated assessment | Available | Use the legacy Scanner. | -| Workflow 2013 | Retired | Legacy workflow reports | Follow workflow retirement guidance instead of starting a new scan. | -| SharePoint Server/on-premises | Not supported | Not supported | Use the SharePoint Migration Assessment Tool (SMAT) or another on-premises assessment tool. | - -## Output compatibility - -Assessment and Scanner output files don't use the same names or schemas. Before reusing an automation script built for Scanner CSV files, map each required field to the corresponding Assessment output and verify any missing detail. - -For current Assessment output, see [Microsoft 365 Assessment reports and CSV files](assessment-tool-reports.md). From f27935fb14ab97b1eb0b65ecd4c4c8eb9c0f5662 Mon Sep 17 00:00:00 2001 From: titao Date: Fri, 24 Jul 2026 17:32:05 +0800 Subject: [PATCH 10/15] Address PR review comments Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: a7db0d98-be53-48c2-9488-9a226f457144 --- .../assess-sharepoint-modernization.md | 11 +------ .../assessment-tool-classic-pages-csv.md | 32 +++++++++++++++++-- .../assessment-tool-classic-pages-run.md | 12 ++++--- .../classic-page-modernization-workflow.md | 6 ++++ 4 files changed, 44 insertions(+), 17 deletions(-) create mode 100644 includes/snippets/assessment/classic-page-modernization-workflow.md diff --git a/docs/transform/assess-sharepoint-modernization.md b/docs/transform/assess-sharepoint-modernization.md index cef03943e5..9bf155a9ee 100644 --- a/docs/transform/assess-sharepoint-modernization.md +++ b/docs/transform/assess-sharepoint-modernization.md @@ -14,12 +14,7 @@ This guidance focuses only on classic page assessment and its handoff to page tr ## Page modernization workflow -1. [Configure and run the Classic pages assessment](assessment-tool-classic-pages-run.md). -1. Validate site, web, and Audit coverage before interpreting page counts. -1. Prioritize pages by usage, modification date, home-page status, mapping percentage, and unmapped Web Parts. -1. Decide whether each blocking Web Part should be removed, replaced, or handled through a custom mapping. -1. [Transform selected pages with PnP PowerShell](modernize-userinterface-site-pages-powershell.md). -1. Validate the new pages and iterate on mappings or remediation. +[!INCLUDE [classic-page-modernization-workflow](../../includes/snippets/assessment/classic-page-modernization-workflow.md)] ## Use assessment output for transformation @@ -34,10 +29,6 @@ This guidance focuses only on classic page assessment and its handoff to page tr Mapping readiness is an input to planning, not a guarantee that the transformed page will preserve every visual or business behavior. -## Scope - -This section doesn't document other Assessment modules, end-to-end classic-site modernization, or legacy Scanner operation. Page-transformation execution is covered by the existing transformation guidance. Legacy Scanner documentation remains unchanged in this stage. - ## Next steps - [Assess classic SharePoint pages](assessment-tool-classic-pages.md) diff --git a/docs/transform/assessment-tool-classic-pages-csv.md b/docs/transform/assessment-tool-classic-pages-csv.md index 895b0ffdd7..2669fcdc91 100644 --- a/docs/transform/assessment-tool-classic-pages-csv.md +++ b/docs/transform/assessment-tool-classic-pages-csv.md @@ -24,6 +24,25 @@ The page-specific output is: `classicpageauditusage.csv` is created only when audit collection writes rows. It isn't created when `--skipusageinformation` is used. +## File relationship + +```text +scans.csv +|-- properties.csv +|-- history.csv +|-- sitecollections.csv +| |-- classicsitesummaries.csv +| |-- classicpublishingsitesummaries.csv +| `-- classicpageauditusage.csv * +|-- webs.csv +| |-- classicwebsummaries.csv +| `-- classicpages.csv +| `-- classicpagewebparts.csv +`-- classicwebpartunique.csv +``` + +`classicwebpartunique.csv` is scan-wide. The `*` marks site-scoped output: `classicpageauditusage.csv` isn't a strict child of `classicpages.csv`, although individual page activity rows can optionally join to assessed pages. + ## Join keys Use these keys when combining files: @@ -31,12 +50,19 @@ Use these keys when combining files: | Relationship | Keys | | --- | --- | | Page to web part | `ScanId`, `SiteUrl`, `WebUrl`, `PageUrl` | -| Page to audit usage | Normally `ScanId`, `SiteUrl`, `PageUrl` | +| Audit page activity to an assessed page | `ScanId`, `SiteUrl`, `PageUrl` when the page exists in both files | +| Audit coverage row to a site | `ScanId`, `SiteUrl` | | Page to web summary | `ScanId`, `SiteUrl`, `WebUrl` | | Web summary to site summary | `ScanId`, `SiteUrl` | | Publishing summary to site summary | `ScanId`, `SiteUrl` | -`PageUrl` is normally a server-relative URL in both `classicpages.csv` and `classicpageauditusage.csv`. An unexpected post-scan exception creates a site-level audit row with `QueryStatus=error` and an absolute `PageUrl`; use `ScanId` and `SiteUrl` to identify that coverage row. +`classicpageauditusage.csv` has three row shapes: + +- Page activity rows use the server-relative page URL. They join to `classicpages.csv` only when that page was included in the assessment scope. +- Standard site-level coverage rows use the server-relative site URL. These rows surface failed, skipped, empty, or partial site coverage and don't represent a page. +- An unexpected post-scan exception creates a site-level row with `QueryStatus=error` and the absolute site URL in `PageUrl`. + +Use `ScanId` and `SiteUrl` for every site-level coverage row; don't join those rows to `classicpages.csv`. ## `classicpages.csv` @@ -109,7 +135,7 @@ This file is scan-wide. It doesn't contain `SiteUrl` or `WebUrl`. | --- | --- | | `ScanId` | Assessment identifier. | | `SiteUrl` | Absolute site-collection URL. | -| `PageUrl` | Normally a server-relative page URL. On a site-level coverage row, this is normally the server-relative site URL; an unexpected `error` row instead contains the absolute site URL. | +| `PageUrl` | Server-relative page URL for page rows. Site-level coverage rows use the server-relative site URL, except an unexpected `error` row, which contains the absolute site URL. | | `AuditViewsCount` | Number of `ClassicPageViewed` events. | | `AuditCreatesCount` | Number of `ClassicPageCreated` events. | | `AuditEditsCount` | Number of `ClassicPageEdited` events. | diff --git a/docs/transform/assessment-tool-classic-pages-run.md b/docs/transform/assessment-tool-classic-pages-run.md index 3d958388ef..594d46f399 100644 --- a/docs/transform/assessment-tool-classic-pages-run.md +++ b/docs/transform/assessment-tool-classic-pages-run.md @@ -14,6 +14,10 @@ Before you start, complete the [classic pages requirements](assessment-tool-clas The examples use the Windows executable name and PowerShell line continuation. On macOS or Linux, use `./microsoft365-assessment`, your shell's line-continuation syntax, and operating-system-appropriate file paths. +## Page modernization workflow + +[!INCLUDE [classic-page-modernization-workflow](../../includes/snippets/assessment/classic-page-modernization-workflow.md)] + ## Assess the complete tenant Application authentication is recommended for a full-tenant assessment: @@ -132,7 +136,7 @@ Use `--delimiter Semicolon` when a semicolon-delimited export is required. Use ` ## Next steps -- [Interpret the classic pages report](assessment-tool-classic-pages-report.md) -- [Classic pages CSV reference](assessment-tool-classic-pages-csv.md) -- [Understand publishing portal coverage](assessment-tool-publishing-coverage.md) -- [Transform classic pages with PnP PowerShell](modernize-userinterface-site-pages-powershell.md) +1. [Interpret and prioritize the classic page results](assessment-tool-classic-pages-report.md). +1. [Review page-specific CSV fields and joins](assessment-tool-classic-pages-csv.md). +1. [Review publishing-page readiness](assessment-tool-publishing-coverage.md), when applicable. +1. [Transform selected pages with PnP PowerShell](modernize-userinterface-site-pages-powershell.md). diff --git a/includes/snippets/assessment/classic-page-modernization-workflow.md b/includes/snippets/assessment/classic-page-modernization-workflow.md new file mode 100644 index 0000000000..97f062cdfc --- /dev/null +++ b/includes/snippets/assessment/classic-page-modernization-workflow.md @@ -0,0 +1,6 @@ +1. Configure and run the Classic pages assessment. +1. Validate site, web, and Audit coverage. +1. Interpret and prioritize the page results. +1. Remediate or map blocking Web Parts. +1. Transform selected pages with PnP PowerShell. +1. Validate the modern pages and expand the migration wave. From 1d92752054ebf75efd7bf8902d9d381608d4aeb8 Mon Sep 17 00:00:00 2001 From: titao Date: Fri, 24 Jul 2026 17:46:29 +0800 Subject: [PATCH 11/15] Order page modernization next steps Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: a7db0d98-be53-48c2-9488-9a226f457144 --- docs/transform/assess-sharepoint-modernization.md | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/docs/transform/assess-sharepoint-modernization.md b/docs/transform/assess-sharepoint-modernization.md index 9bf155a9ee..1c500c93aa 100644 --- a/docs/transform/assess-sharepoint-modernization.md +++ b/docs/transform/assess-sharepoint-modernization.md @@ -31,7 +31,9 @@ Mapping readiness is an input to planning, not a guarantee that the transformed ## Next steps -- [Assess classic SharePoint pages](assessment-tool-classic-pages.md) -- [Interpret and prioritize assessment results](assessment-tool-classic-pages-report.md) -- [Transform classic pages to modern pages](modernize-userinterface-site-pages.md) -- [Transform classic pages with PnP PowerShell](modernize-userinterface-site-pages-powershell.md) +1. [Configure and run the Classic pages assessment](assessment-tool-classic-pages-run.md). +1. [Interpret and prioritize the page results](assessment-tool-classic-pages-report.md). +1. [Review page-specific CSV fields and joins](assessment-tool-classic-pages-csv.md). +1. [Review publishing-page readiness](assessment-tool-publishing-coverage.md), when applicable. +1. [Transform selected pages with PnP PowerShell](modernize-userinterface-site-pages-powershell.md). +1. [Use the full page-transformation guidance](modernize-userinterface-site-pages.md) for advanced mappings and scenarios. From a4a2850322d6d62626638b48370e540cd5e181ad Mon Sep 17 00:00:00 2001 From: titao Date: Mon, 27 Jul 2026 13:52:39 +0800 Subject: [PATCH 12/15] Tighten classic pages run introduction Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: a7db0d98-be53-48c2-9488-9a226f457144 --- docs/transform/assessment-tool-classic-pages-run.md | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/docs/transform/assessment-tool-classic-pages-run.md b/docs/transform/assessment-tool-classic-pages-run.md index 594d46f399..9616c8b5f6 100644 --- a/docs/transform/assessment-tool-classic-pages-run.md +++ b/docs/transform/assessment-tool-classic-pages-run.md @@ -8,12 +8,10 @@ ms.service: sharepoint # Run a classic pages assessment -Use `--mode Classic --classicinclude Pages` to run only the classic pages component. Always specify `Pages`; omitting `--classicinclude` also runs additional Classic components that aren't covered in this guidance. +Run the classic pages assessment with `--mode Classic --classicinclude Pages`. Before you start, complete the [classic pages requirements](assessment-tool-classic-pages-requirements.md). -The examples use the Windows executable name and PowerShell line continuation. On macOS or Linux, use `./microsoft365-assessment`, your shell's line-continuation syntax, and operating-system-appropriate file paths. - ## Page modernization workflow [!INCLUDE [classic-page-modernization-workflow](../../includes/snippets/assessment/classic-page-modernization-workflow.md)] From a8a48189c3185b381765b2450d0bd1702c6f1adb Mon Sep 17 00:00:00 2001 From: titao Date: Mon, 27 Jul 2026 14:12:41 +0800 Subject: [PATCH 13/15] Align assessment cloud terminology Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: a7db0d98-be53-48c2-9488-9a226f457144 --- docs/transform/assessment-tool-classic-pages-requirements.md | 4 ++-- docs/transform/assessment-tool-classic-pages-run.md | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/transform/assessment-tool-classic-pages-requirements.md b/docs/transform/assessment-tool-classic-pages-requirements.md index 99d5169002..64b4ffa1fa 100644 --- a/docs/transform/assessment-tool-classic-pages-requirements.md +++ b/docs/transform/assessment-tool-classic-pages-requirements.md @@ -1,7 +1,7 @@ --- title: Requirements for the classic pages assessment description: Configure authentication, permissions, audit access, and a supported environment for the Microsoft 365 Assessment tool classic pages component. -ms.date: 07/23/2026 +ms.date: 07/27/2026 ms.localizationpriority: high ms.service: sharepoint --- @@ -12,7 +12,7 @@ The classic pages component assesses SharePoint Online. It doesn't assess ShareP Download the latest [Microsoft 365 Assessment tool release](https://github.com/pnp/pnpassessment/releases). Core classic page readiness analysis is available in version 1.15.0 and later. The Microsoft Graph audit usage flow, `--auditlogwindowdays`, and `classicpageauditusage.csv` contract documented in this guidance require version 1.16.0 or later. -For GCC High, Department of Defense, China, Germany, or a tenant that uses vanity URLs, configure `appsettings.json` as described in [Assessment tool configuration](https://pnp.github.io/pnpassessment/using-the-assessment-tool/configuration.html). +Configure `appsettings.json` for tenants in GCC High, DoD, or [Microsoft 365 operated by 21Vianet](/office365/servicedescriptions/office-365-platform-service-description/microsoft-365-operated-by-21vianet), and for tenants that use custom SharePoint URLs (vanity URLs). See [Assessment tool configuration](https://pnp.github.io/pnpassessment/using-the-assessment-tool/configuration.html). ## Authentication diff --git a/docs/transform/assessment-tool-classic-pages-run.md b/docs/transform/assessment-tool-classic-pages-run.md index 9616c8b5f6..18c9d7fed4 100644 --- a/docs/transform/assessment-tool-classic-pages-run.md +++ b/docs/transform/assessment-tool-classic-pages-run.md @@ -1,7 +1,7 @@ --- title: Run a classic pages assessment description: Start, scope, monitor, and report a Microsoft 365 Assessment tool classic pages assessment. -ms.date: 07/24/2026 +ms.date: 07/27/2026 ms.localizationpriority: high ms.service: sharepoint --- @@ -82,7 +82,7 @@ microsoft365-assessment.exe start --mode Classic --classicinclude Pages ` ## Scope considerations -- For a vanity URL tenant, configure both `AdminCenterUrl` and `MySiteHostUrl` in `appsettings.json`, and provide `--siteslist` or `--sitesfile`. See [Assessment tool configuration](https://pnp.github.io/pnpassessment/using-the-assessment-tool/configuration.html). +- For a tenant that uses custom SharePoint URLs (vanity URLs), configure both `AdminCenterUrl` and `MySiteHostUrl` in `appsettings.json`, and provide `--siteslist` or `--sitesfile`. See [Assessment tool configuration](https://pnp.github.io/pnpassessment/using-the-assessment-tool/configuration.html). - For a Multi-Geo tenant, run a separate assessment for each geo. Use the primary tenant host in `--tenant` and provide the geo's site collections with `--siteslist` or `--sitesfile`. - Run a small representative scope first to validate authentication, output, audit access, and scan duration. - The tool supports up to three parallel assessments, but parallel scans increase the risk of throttling. From 6c3b23d0b7bf63eb9f60574e80b074bfbdfda392 Mon Sep 17 00:00:00 2001 From: titao Date: Mon, 27 Jul 2026 14:25:12 +0800 Subject: [PATCH 14/15] Document assessment application certificate Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: a7db0d98-be53-48c2-9488-9a226f457144 --- .../assessment-tool-classic-pages-requirements.md | 12 ++++++++++++ docs/transform/assessment-tool-classic-pages-run.md | 2 ++ 2 files changed, 14 insertions(+) diff --git a/docs/transform/assessment-tool-classic-pages-requirements.md b/docs/transform/assessment-tool-classic-pages-requirements.md index 64b4ffa1fa..c73d9049eb 100644 --- a/docs/transform/assessment-tool-classic-pages-requirements.md +++ b/docs/transform/assessment-tool-classic-pages-requirements.md @@ -28,6 +28,18 @@ Application authentication is recommended for a full-tenant assessment. A delega For general application-registration steps, see [Configure authentication](https://pnp.github.io/pnpassessment/using-the-assessment-tool/setupauth.html). +### Application certificate + +Application authentication requires a certificate associated with the Microsoft Entra application. Upload the public certificate to the app registration, and make sure that the account running the assessment can access the matching private key. + +The application-authentication examples use a certificate in the current user's **Personal** certificate store: + +```console +--certpath "My|CurrentUser|" +``` + +In this value, `My` identifies the Personal certificate store, `CurrentUser` identifies the account running the assessment, and the final value is the certificate thumbprint. The [authentication setup guidance](https://pnp.github.io/pnpassessment/using-the-assessment-tool/setupauth.html) explains how to create the certificate, add it to the app registration, and find its thumbprint. + ## Permissions The current classic pages implementation requires the following permissions: diff --git a/docs/transform/assessment-tool-classic-pages-run.md b/docs/transform/assessment-tool-classic-pages-run.md index 18c9d7fed4..bc3c1ced7f 100644 --- a/docs/transform/assessment-tool-classic-pages-run.md +++ b/docs/transform/assessment-tool-classic-pages-run.md @@ -20,6 +20,8 @@ Before you start, complete the [classic pages requirements](assessment-tool-clas Application authentication is recommended for a full-tenant assessment: +Before running the command, configure the [application certificate](assessment-tool-classic-pages-requirements.md#application-certificate). + ```powershell microsoft365-assessment.exe start --mode Classic --classicinclude Pages ` --authmode application ` From 473a057588449eb6ea3ad4de68483455c3d192d4 Mon Sep 17 00:00:00 2001 From: titao Date: Mon, 27 Jul 2026 15:21:14 +0800 Subject: [PATCH 15/15] Separate assessment workflow and references Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: a7db0d98-be53-48c2-9488-9a226f457144 --- docs/toc.yml | 12 ++++++----- .../assess-sharepoint-modernization.md | 13 ++++++++---- .../assessment-tool-classic-pages-csv.md | 4 +++- .../assessment-tool-classic-pages-report.md | 9 ++++++-- ...essment-tool-classic-pages-requirements.md | 12 ++++++++--- .../assessment-tool-classic-pages-run.md | 8 +++++-- .../assessment-tool-classic-pages.md | 21 ++++++++++++------- .../assessment-tool-common-reports.md | 8 +++---- .../assessment-tool-publishing-coverage.md | 8 ++++--- 9 files changed, 64 insertions(+), 31 deletions(-) diff --git a/docs/toc.yml b/docs/toc.yml index 5fae6199c6..44ab5da5f6 100644 --- a/docs/toc.yml +++ b/docs/toc.yml @@ -1845,12 +1845,14 @@ href: transform/assessment-tool-classic-pages-run.md - name: Interpret and prioritize href: transform/assessment-tool-classic-pages-report.md - - name: CSV reference - href: transform/assessment-tool-classic-pages-csv.md - - name: Common CSV files - href: transform/assessment-tool-common-reports.md - - name: Publishing portal coverage + - name: Publishing page readiness href: transform/assessment-tool-publishing-coverage.md + - name: Reference + items: + - name: Classic pages CSV files + href: transform/assessment-tool-classic-pages-csv.md + - name: Common CSV files + href: transform/assessment-tool-common-reports.md - name: Transform classic pages href: transform/modernize-userinterface-site-pages.md items: diff --git a/docs/transform/assess-sharepoint-modernization.md b/docs/transform/assess-sharepoint-modernization.md index 1c500c93aa..5da2dd7e34 100644 --- a/docs/transform/assess-sharepoint-modernization.md +++ b/docs/transform/assess-sharepoint-modernization.md @@ -1,7 +1,7 @@ --- title: Assess and transform classic SharePoint pages description: Assess classic SharePoint pages, prioritize remediation, and continue into page transformation with PnP PowerShell. -ms.date: 07/24/2026 +ms.date: 07/27/2026 ms.localizationpriority: high ms.service: sharepoint --- @@ -31,9 +31,14 @@ Mapping readiness is an input to planning, not a guarantee that the transformed ## Next steps -1. [Configure and run the Classic pages assessment](assessment-tool-classic-pages-run.md). +1. [Review the Classic pages assessment requirements](assessment-tool-classic-pages-requirements.md). +1. [Run the Classic pages assessment](assessment-tool-classic-pages-run.md). 1. [Interpret and prioritize the page results](assessment-tool-classic-pages-report.md). -1. [Review page-specific CSV fields and joins](assessment-tool-classic-pages-csv.md). 1. [Review publishing-page readiness](assessment-tool-publishing-coverage.md), when applicable. 1. [Transform selected pages with PnP PowerShell](modernize-userinterface-site-pages-powershell.md). -1. [Use the full page-transformation guidance](modernize-userinterface-site-pages.md) for advanced mappings and scenarios. + +## Reference + +- [Classic pages assessment CSV reference](assessment-tool-classic-pages-csv.md) +- [Common assessment CSV reference](assessment-tool-common-reports.md) +- [Page transformation guidance](modernize-userinterface-site-pages.md) diff --git a/docs/transform/assessment-tool-classic-pages-csv.md b/docs/transform/assessment-tool-classic-pages-csv.md index 2669fcdc91..31f41d3ada 100644 --- a/docs/transform/assessment-tool-classic-pages-csv.md +++ b/docs/transform/assessment-tool-classic-pages-csv.md @@ -1,7 +1,7 @@ --- title: Classic pages assessment CSV reference description: Understand the page, web part, usage, web, site, and publishing CSV files generated by the Microsoft 365 Assessment tool. -ms.date: 07/23/2026 +ms.date: 07/27/2026 ms.localizationpriority: high ms.service: sharepoint --- @@ -10,6 +10,8 @@ ms.service: sharepoint A Classic report always exports the common assessment files and the Classic component files. Files for components that weren't selected can contain only headers. +For the common file schemas and join keys, see [Common assessment CSV reference](assessment-tool-common-reports.md). + The page-specific output is: | File | Granularity | diff --git a/docs/transform/assessment-tool-classic-pages-report.md b/docs/transform/assessment-tool-classic-pages-report.md index e8dbb79725..1cb876af88 100644 --- a/docs/transform/assessment-tool-classic-pages-report.md +++ b/docs/transform/assessment-tool-classic-pages-report.md @@ -1,7 +1,7 @@ --- title: Interpret the classic pages assessment report description: Use page, web part, usage, and rollup results from the Microsoft 365 Assessment tool to plan SharePoint page modernization. -ms.date: 07/24/2026 +ms.date: 07/27/2026 ms.localizationpriority: high ms.service: sharepoint --- @@ -23,6 +23,8 @@ Before interpreting page readiness, confirm that the expected scope completed: An assessment that finished can still contain site or web failures. Treat missing locations as a coverage gap, not as a finding that no classic content exists. +For the common file schemas and join keys, see [Common assessment CSV reference](assessment-tool-common-reports.md). + ## Prioritize pages The current **Pages** Power BI tab uses the basic page inventory fields, such as page type, URL, modification date, and remediation code. @@ -191,4 +193,7 @@ The Power BI template is a visualization layer over the CSV output. The CSV file Power BI template generation requires Windows. CSV generation works on Windows, macOS, and Linux. -For every field and join key, see [Classic pages CSV reference](assessment-tool-classic-pages-csv.md). +## Reference + +- [Classic pages assessment CSV reference](assessment-tool-classic-pages-csv.md) +- [Common assessment CSV reference](assessment-tool-common-reports.md) diff --git a/docs/transform/assessment-tool-classic-pages-requirements.md b/docs/transform/assessment-tool-classic-pages-requirements.md index c73d9049eb..06e33b4879 100644 --- a/docs/transform/assessment-tool-classic-pages-requirements.md +++ b/docs/transform/assessment-tool-classic-pages-requirements.md @@ -97,6 +97,12 @@ Assessment output can contain tenant and site URLs, application identifiers, use ## Next steps -- [Run a classic pages assessment](assessment-tool-classic-pages-run.md) -- [Interpret the classic pages report](assessment-tool-classic-pages-report.md) -- [Classic pages CSV reference](assessment-tool-classic-pages-csv.md) +1. [Run a classic pages assessment](assessment-tool-classic-pages-run.md). +1. [Interpret and prioritize the classic page results](assessment-tool-classic-pages-report.md). +1. [Review publishing-page readiness](assessment-tool-publishing-coverage.md), when applicable. +1. [Transform selected pages with PnP PowerShell](modernize-userinterface-site-pages-powershell.md). + +## Reference + +- [Classic pages assessment CSV reference](assessment-tool-classic-pages-csv.md) +- [Common assessment CSV reference](assessment-tool-common-reports.md) diff --git a/docs/transform/assessment-tool-classic-pages-run.md b/docs/transform/assessment-tool-classic-pages-run.md index bc3c1ced7f..c59b874314 100644 --- a/docs/transform/assessment-tool-classic-pages-run.md +++ b/docs/transform/assessment-tool-classic-pages-run.md @@ -132,11 +132,15 @@ microsoft365-assessment.exe report --id --mode CsvOnly --path "C By default, output is written to the `report` subfolder under the assessment-ID folder. -Use `--delimiter Semicolon` when a semicolon-delimited export is required. Use `--open:$false` to prevent the generated report from opening automatically in PowerShell. +Use `--delimiter Semicolon` when a semicolon-delimited export is required. Use `--open false` to prevent the generated report from opening automatically. ## Next steps 1. [Interpret and prioritize the classic page results](assessment-tool-classic-pages-report.md). -1. [Review page-specific CSV fields and joins](assessment-tool-classic-pages-csv.md). 1. [Review publishing-page readiness](assessment-tool-publishing-coverage.md), when applicable. 1. [Transform selected pages with PnP PowerShell](modernize-userinterface-site-pages-powershell.md). + +## Reference + +- [Classic pages assessment CSV reference](assessment-tool-classic-pages-csv.md) +- [Common assessment CSV reference](assessment-tool-common-reports.md) diff --git a/docs/transform/assessment-tool-classic-pages.md b/docs/transform/assessment-tool-classic-pages.md index ab39409f1e..fbfa78bc3a 100644 --- a/docs/transform/assessment-tool-classic-pages.md +++ b/docs/transform/assessment-tool-classic-pages.md @@ -1,7 +1,7 @@ --- title: Assess classic SharePoint pages description: Discover classic pages, inventory their web parts, and measure page modernization readiness. -ms.date: 07/23/2026 +ms.date: 07/27/2026 ms.localizationpriority: high ms.service: sharepoint --- @@ -18,15 +18,22 @@ In the current implementation, Delve Blog pages appear in `classicpages.csv` but ## In this guidance -- [Requirements](assessment-tool-classic-pages-requirements.md) -- [Run the assessment](assessment-tool-classic-pages-run.md) -- [Interpret the report](assessment-tool-classic-pages-report.md) -- [CSV reference](assessment-tool-classic-pages-csv.md) -- [Publishing portal coverage](assessment-tool-publishing-coverage.md) +### Workflow + +1. [Review the requirements](assessment-tool-classic-pages-requirements.md). +1. [Run the assessment](assessment-tool-classic-pages-run.md). +1. [Interpret and prioritize the results](assessment-tool-classic-pages-report.md). +1. [Review publishing-page readiness](assessment-tool-publishing-coverage.md), when applicable. +1. [Transform selected pages with PnP PowerShell](modernize-userinterface-site-pages-powershell.md). + +### Reference + +- [Classic pages assessment CSV reference](assessment-tool-classic-pages-csv.md) +- [Common assessment CSV reference](assessment-tool-common-reports.md) ## Run the assessment -The example uses the Windows executable name. On macOS or Linux, use `./microsoft365-assessment`. +Before running the application-authentication example, configure the [application certificate](assessment-tool-classic-pages-requirements.md#application-certificate). ```powershell microsoft365-assessment.exe start --mode Classic --classicinclude Pages ` diff --git a/docs/transform/assessment-tool-common-reports.md b/docs/transform/assessment-tool-common-reports.md index 14822226b6..c0b3fa0177 100644 --- a/docs/transform/assessment-tool-common-reports.md +++ b/docs/transform/assessment-tool-common-reports.md @@ -1,12 +1,12 @@ --- -title: Common CSV files for a classic pages assessment -description: Use the common scan, property, history, site collection, and web files to validate Classic Pages assessment coverage. -ms.date: 07/23/2026 +title: Common CSV reference for a classic pages assessment +description: Reference the common scan, property, history, site collection, and web files generated by a Classic Pages assessment. +ms.date: 07/27/2026 ms.localizationpriority: high ms.service: sharepoint --- -# Common CSV files for a classic pages assessment +# Common CSV reference for a classic pages assessment A Classic pages report also exports these common files: diff --git a/docs/transform/assessment-tool-publishing-coverage.md b/docs/transform/assessment-tool-publishing-coverage.md index 768defd8ee..279cdd2334 100644 --- a/docs/transform/assessment-tool-publishing-coverage.md +++ b/docs/transform/assessment-tool-publishing-coverage.md @@ -1,7 +1,7 @@ --- title: Assess publishing pages for transformation description: Use Microsoft 365 Assessment tool publishing-page output to plan page transformation and page-layout mapping. -ms.date: 07/24/2026 +ms.date: 07/27/2026 ms.localizationpriority: high ms.service: sharepoint --- @@ -84,5 +84,7 @@ For a custom publishing layout, generate and review a mapping before transformat Export-PnPPageMapping -CustomPageLayoutMapping -Folder C:\temp ``` -For field-level Assessment output, see [Classic pages CSV reference](assessment-tool-classic-pages-csv.md). -For page-layout mapping details, see [Publishing Page transformation model](modernize-userinterface-site-pages-model-publishing.md). +## Reference + +- [Classic pages assessment CSV reference](assessment-tool-classic-pages-csv.md) +- [Publishing Page transformation model](modernize-userinterface-site-pages-model-publishing.md)