Back to All Cheatsheet Libraries cheatsheets

Microsoft SharePoint

Site structure, permissions, and document-library reference for Microsoft SharePoint.

SharePoint is the storage layer under most of Microsoft 365

Every Teams channel, every Microsoft 365 Group, and every OneDrive is a SharePoint site underneath. People who "don't use SharePoint" are usually using it constantly without realising. Understanding the site model makes Teams file behaviour, permissions, and retention obvious instead of mysterious.

Showing results
Area Concept What it is Notes
SitesTeam siteA collaboration site backed by a Microsoft 365 Group. Created automatically with every Team.Membership is the Group's membership — manage it in Teams or Entra, not in SharePoint.
SitesCommunication siteA publishing site for broadcasting to a wide audience — no Group behind it.Few authors, many readers. The right choice for an intranet or policy hub.
SitesHub siteA site others associate with, sharing navigation, branding, and rolled-up search.Replaces the old subsite hierarchy. Use hubs, not subsites — see Gotchas.
SitesOneDriveA personal SharePoint site collection, one per user.Which is why a leaver's OneDrive files vanish with their account unless transferred.
ContentDocument libraryA container for files with versioning, metadata columns, and permissions.Not a folder. A library has schema; a folder is just nesting inside one.
ContentListStructured rows and typed columns — tasks, issues, assets, contacts.Effectively a lightweight database with a UI, and the basis for most Power Automate flows.
ContentMetadata columnA typed field on a library — status, owner, department, review date.The alternative to deep folders. Filter and group by these instead of nesting.
ContentViewA saved filter/sort/group configuration over a library or list."My documents", "Pending review", "Expiring this month" — same content, different lenses.
ContentContent typeA reusable bundle of columns and a template — a "Contract" or "Invoice" definition.Powerful in large deployments, overkill for a small team. Don't reach for it early.
ContentVersioningEvery save creates a version, restorable individually.On by default for document libraries. Check it's on for lists — it often isn't.
ContentCheck-outLocks a file so only you can edit it until checked back in.Largely obsoleted by co-authoring. A forgotten check-out blocks everyone — see Gotchas.
AutomationPower AutomateFlows triggered by list/library events — item created, file modified, column changed.Turns a document library into an approval workflow with no code.
AutomationAlertsPer-user email notifications on changes, immediate or as a digest.Simpler than a flow when you just want to know something changed.
AutomationSync / Add shortcut to OneDriveTwo ways to surface a library in File Explorer or Finder.Prefer "Add shortcut" — it's more reliable and counts against the library's quota, not the user's.

Broken inheritance is how permissions become unmanageable

Permissions flow down: site → library → folder → item. The moment you grant someone access to a single folder, that folder stops inheriting and becomes independently managed forever. Do this a few dozen times and nobody can answer "who can see this?" any more. It's the single most common SharePoint failure mode.

Level Can do Typical use
Full ControlEverything, including permissions and site settings.Site owners only. Keep this list very short.
EditAdd, edit, delete items and lists themselves.Broader than people expect — Edit can delete an entire library.
ContributeAdd, edit, delete items — but not lists or libraries.Usually the right level for regular members, not Edit.
ReadView and download.Consumers of published content.
View OnlyView in browser without downloading.Sensitive material where you want to reduce casual copying.
Permission rules worth following
  • Grant to groups, never individuals. Access then follows membership rather than needing a manual edit per person.
  • Keep inheritance intact wherever possible. If a subset needs different access, that's a signal it should be a different site or library.
  • Never break inheritance at item level. It's technically possible and operationally miserable.
  • Use Contribute rather than Edit for members — Edit includes deleting libraries.
  • Check "Site settings → Site permissions → Check Permissions" to answer "what can this person actually see?" definitively.
  • Watch the "Everyone except external users" group — it's genuinely everyone in the tenant, and it's easy to grant accidentally.
Sharing links — the part users actually touch
  • Anyone — works without sign-in, forwardable, and untrackable. Disable this tenant-wide unless you have a specific need.
  • People in your organisation — the sensible default for internal sharing.
  • People with existing access — generates a link that grants nothing new. Safest option for "here's where that file is".
  • Specific people — grants named individuals, and the link is useless to anyone else.
  • Set link expiry and disable download for external sharing where the content warrants it.
  • The tenant-level setting caps what site-level settings can allow — you cannot be more permissive than the tenant.

Metadata and views beat folder trees

Deep folder nesting is the instinct people bring from file servers, and it scales badly: one file can only live in one place, paths hit length limits, and finding anything requires knowing where someone else decided to put it. Flat libraries with metadata columns let the same content be filtered many ways.

1

Add columns that describe the content

Library settings → Create column. Typical set: Status (choice), Owner (person), Department (choice), Review date (date). Choice columns beat free text — they stay consistent and filter cleanly.

2

Build views instead of folders

Create a view per way people actually look at the content: "My documents", "Awaiting approval", "Expiring in 30 days". Same files, filtered — no duplication, no deciding which folder something belongs in.

3

Make metadata required at upload

Set columns to required and users are prompted on upload. Optional metadata is empty metadata — this is the difference between a system that works and one that quietly degrades.

4

Use column formatting for visible status

Format a Status column with colour so "Overdue" is red at a glance. Library settings → the column → Format this column. No code needed for the built-in options.

5

Turn on versioning properly

Libraries version by default; lists often don't. Check both. Set a sensible version limit (500 is the default for libraries) so a heavily-edited file doesn't consume disproportionate storage.

6

Add approval only where it's genuinely needed

Power Automate → a "when a file is created" trigger with an Approval action turns a library into a review workflow. Worth it for policy documents; overkill for a working folder.

PnP PowerShell is the practical admin tool

The official Microsoft.Online.SharePoint.PowerShell module handles tenant-level administration. PnP.PowerShell — community-maintained and far more capable — handles everything inside a site. Most real SharePoint automation uses PnP.

Module Command What it does
SetupInstall-Module PnP.PowerShell -Scope CurrentUserInstall the PnP module.
SetupConnect-PnPOnline -Url https://contoso.sharepoint.com/sites/X -InteractiveConnect to a site. -Interactive handles MFA properly.
TenantConnect-SPOService -Url https://contoso-admin.sharepoint.comConnect the official module for tenant-level work.
TenantGet-SPOSite -Limit All | Select Url,StorageUsageCurrent,LastContentModifiedDateEvery site with storage and last-modified — the basis of any cleanup audit.
TenantGet-SPOTenantTenant-wide settings including external sharing policy.
SitesGet-PnPWebCurrent site details.
SitesGet-PnPListEvery list and library on the site, with item counts.
ContentGet-PnPListItem -List "Documents" -PageSize 500Enumerate items. Always page — large libraries will otherwise throttle.
ContentGet-PnPFile -Url "/sites/X/Shared Documents/f.docx" -AsFile -Path .Download a file.
ContentAdd-PnPFile -Path .\f.docx -Folder "Shared Documents"Upload a file, optionally setting metadata in the same call.
PermsGet-PnPGroupSharePoint groups on the site.
PermsGet-PnPListItem -List X | Get-PnPProperty -Property HasUniqueRoleAssignmentsFinds broken inheritance — the audit that matters most.
PermsSet-PnPListItemPermission -List X -Identity 1 -InheritPermissionsRestore inheritance on an item.
AuditGet-PnPTenantSite | Where-Object {$_.SharingCapability -ne "Disabled"}Every site permitting external sharing.
AuditGet-PnPRecycleBinItemRecycle bin contents — first stop when something "disappeared".

Gotchas

URL length and character limits are real
  • The full decoded path (site + library + folders + filename) has a limit around 400 characters. Deep nesting plus long filenames hits it.
  • The symptom is confusing: sync fails, or a file can't be opened, with an error that doesn't mention path length.
  • Certain characters are still problematic in names — " * : < > ? / \ | — and leading/trailing spaces get stripped.
  • Another argument for flat libraries with metadata rather than folder trees.
The 5,000-item list view threshold
  • A library can hold millions of items, but a view that tries to return more than 5,000 at once fails.
  • The fix is indexed columns plus views filtered to return fewer than the threshold — not splitting content into folders.
  • Index a column before the library grows past the threshold; indexing afterwards is harder and sometimes needs a maintenance window.
  • Modern SharePoint auto-indexes some columns, but don't rely on it for a library you know will grow large.
Don't build subsites
  • Subsites are legacy. They inherit permissions in ways that become tangled, can't be moved, and complicate every migration.
  • Use flat sites associated to a hub instead. Hubs give shared navigation and rolled-up search without the structural rigidity.
  • A site can be re-associated to a different hub; a subsite cannot be promoted without a migration.
  • If you inherit subsites, plan to flatten them rather than building more.
Forgotten check-outs block everyone
  • A file checked out by someone on holiday is read-only to everyone else, with no obvious indication why.
  • A site owner can force check-in: the file's ⋮ menu → More → Discard check-out. Unsaved changes in that check-out are lost.
  • Co-authoring makes check-out unnecessary for most Office documents. Only require it where genuinely serialised editing matters.
Two recycle bins, then it's gone
  • Deleted items go to the site recycle bin (typically 93 days), then to the second-stage bin, then are permanently removed.
  • The second-stage bin is only visible to site collection administrators — users often report data as unrecoverable when it isn't.
  • A deleted site also sits recoverable for a period, retrievable from the SharePoint admin centre.
  • Retention policies in Purview override deletion — content under a hold is preserved even when users delete it.

Tips

Add shortcut beats Sync

"Add shortcut to OneDrive" is more reliable than the legacy Sync button, works across devices, and doesn't consume the user's OneDrive quota.

Version history on any file type

Not just Office documents. Right-click → Version history works on PDFs, images, and archives — restore or download any previous version.

Alerts instead of checking

Any list or library → ⋮ → Alert me. Immediate, daily, or weekly digest. Cheaper than a Power Automate flow when you only need to know something changed.

Edit in grid view

Turns a library into a spreadsheet for bulk metadata editing. Vastly faster than opening each file's properties pane.

Search by property

SharePoint search supports KQL: filetype:pdf, author:"Jane", LastModifiedTime>2026-01-01. Far more precise than browsing.

Restore a whole library

Library settings → Restore this library rolls the entire library back to a point in time. The recovery path after a mass accidental delete or a ransomware event.

Resources