FIELD NOTES / ARTICLES
Practical notes from complex systems.
Guides and reflections on Microsoft 365 migrations, Power Platform architecture, governance, automation, reporting, and delivery.
FILTER ARTICLES
All Articles
Migration Nightmares
Building This Website
Microsoft 365 Migration
August 28, 2026
Migration Nightmares
Large migrations are rarely blocked by moving content. They are blocked by uncertainty: what exists, who owns it, what depends on it, and how to turn it into manageable migration waves.
After wrapping up my latest engagement with KBR, I’ve been thinking about how much large Microsoft 365 migrations have changed.
Moving the content is often the easy part.
The hard part is figuring out what you actually have, who owns it, what depends on it, and how you turn thousands of assets into manageable migration waves.
As part of a large Microsoft 365 migration initiative, I developed a reporting solution that consolidated inventories from SharePoint, Teams, Power Platform, Nintex, and Microsoft Graph into Power BI.
I used Microsoft Graph reporting endpoints to collect Microsoft 365 usage, activity, ownership, file-count, and site data and reconciled that information against the source inventories to improve the accuracy of the migration data.
One of the biggest technical milestones was solving dynamic migration-wave exports directly from Power BI.
I built a Power Automate flow that was launched from the Power BI report and used DAX queries against the semantic model to respect the filters selected by the user.
From there, the flow dynamically created an Excel workbook and used Microsoft Graph API calls to write the filtered migration data directly into the newly created workbook.
I implemented the Graph integration using a service principal rather than relying on an individual user’s credentials, providing a more secure and supportable authentication model for the automation.
When the export was complete, the flow emailed the person who initiated it with the finished workbook along with a detailed index and summary of everything that had been exported.
The result was more than an Export button.
Stakeholders could use Power BI to identify exactly the sites, Teams, applications, workflows, or other assets they wanted to target, apply their filters, and generate a purpose-built workbook representing that selection.
That became a practical way to build migration waves from the reporting data itself for a very large migration.
I also tackled another challenge I see in almost every large Power Platform tenant: the Default Environment.
I built a Power App to organize and track the cleanup effort, along with a Power BI report that gave leadership centralized visibility into the environment and helped identify assets requiring governance or remediation.
These are the projects I enjoy most, taking complicated Microsoft 365 and Power Platform environments and building the architecture and automation that turns their data into something people can actually use.
I’ve wrapped up my KBR engagement and am available for my next Power Platform / Microsoft 365 architecture, administration, development, or migration project.
If your organization is dealing with Power Platform governance, tenant migration, SharePoint modernization, Power BI, or Microsoft 365 sprawl, I’d be interested in connecting.
Process / Framer
August 28, 2026
Building This Website with Framer, My CV, LinkedIn, and ChatGPT
A practical look at turning a working resume, a LinkedIn profile, and an AI-assisted process into a living portfolio in Framer.
This portfolio started with a simple question: how do I turn a resume into something people can explore?
The first sources of truth were my CV and LinkedIn profile. They gave me the raw material: the platforms I work with, the projects I have delivered, the outcomes behind them, and the kind of problems I want to keep solving.
Framer became the place to turn that raw material into an experience. Instead of treating the resume as a document, I organized it into pages for performance, project examples, career history, skills, and articles so each part could carry its own context.
I kept the implementation native to the canvas wherever possible: reusable navigation and metric components, a shared layout template, responsive breakpoints, consistent text styles, color tokens, and links that remain editable in the design tool.
The structured content lives in CMS collections. Career history, project examples, skills, and articles can grow independently from the page layout, which means adding the next project or guide does not require rebuilding the site.
ChatGPT worked as a writing and implementation partner throughout the process. I supplied the source material and decisions, then used it to organize the narrative, sharpen descriptions, create repeatable structures, and catch layout problems during each review.
The important part was the iteration. We checked desktop, tablet, and phone breakpoints, compared screenshots, corrected overflow and wrapping, and kept the shared pieces consistent as new pages and content were added.
The result is a living portfolio rather than a static resume: a place where the evidence of the work, the systems behind it, and the thinking that comes from each engagement can keep evolving.
