#havecode
What we learn moving organisations onto the Microsoft cloud. Method, not opinion.

Migrating SharePoint 2016 and 2019 to Subscription Edition: the scripts
SharePoint 2016 goes straight to Subscription Edition. There is no hop through 2019, the method is database attach and nothing else, and the order of the service applications is not a preference. The whole sequence in PowerShell, from the inventory you take before touching anything to the crawl you run at the end.

SharePoint 2016, 2019, Subscription Edition and Online: what actually changes
2016 and 2019 both end support on 14 July 2026. Subscription Edition has no end date and cannot be bought outright. Online has features the others will never get, and Subscription Edition has two that are usually listed as impossible. A practical comparison, with the licensing that decides it.

Developing for SharePoint Server Subscription Edition: the practices that hold up
Subscription Edition is supported until at least 2035 and its SharePoint Framework ceiling has not moved since 2023. That combination is the whole job: a long runway on an older stack. This is how to build on it well, with code that runs on the version your farm actually accepts.

A Copilot agent manifest is a security boundary. Here is the linter for it.
Every scoping property in a Microsoft 365 Copilot agent manifest is optional, and in six places omitting one grants the widest scope instead of the narrowest. A JSON Schema validator approves those manifests, because nothing in them is invalid: something optional is missing. So we wrote the check that does catch it. It finds six problems in a manifest that passes every other test.

SPFx before version 1.0: our web parts in the official Microsoft samples
The SharePoint Framework developer preview came out in August 2016. Version 1.0 arrived in February 2017. Our first contribution to the official Microsoft 365 samples repository is dated October 2016, five months before there was a 1.0 to build against. Four of our web parts are in that repository today, and this is what each of them is for.

Windows 10 has ended: Windows 11 is the minimum, not the plan
Support ended in October 2025. Whether a fleet is already on Windows 11, paying for Extended Security Updates, or simply exposed, the decision underneath is the same: swap the PCs, or use the forced move to modernise the workplace behind them. This is the how, with the Intune, Autopilot and Azure commands, and the reason the same Windows 10 is free to keep alive in the cloud.

SPFx 1.23.2: upgrading is not changing a number
The previous version was pulled from npm for regressions, and that is the warning: the risk of upgrading the SharePoint Framework is almost never in the SharePoint runtime, it is in the build. What changed in Heft, in Sass and in npm audit, with the code showing how it was, how it is, and how it will be.

Can your AI assistant read documents the user cannot see?
A badly built RAG searches with the application's identity, not the asker's, and the assistant answers with what the person should not see. The fix is not a filter someone can forget to write: it is passing the user's token and letting Azure AI Search enforce permissions inside the engine.

A cookie banner you can prove, with Azure Tables and Functions
The banner you copy from a vendor can itself be a tracker. Build your own instead, with no third parties, and the hard part turns out not to be the banner: it is keeping the proof that the person consented. Here is all of it, from the browser to the Azure Table, step by step.

Sending email from an application, without a single password
Microsoft turned off SMTP with a password. The answer is not to store a better secret: it is to store no secret at all. Managed identity, Microsoft Graph, and Mail.Send tied to a group of mailboxes. Here is the whole configuration, mistakes included.
Nothing matches your search.
