Case studyWork/Structure

A field services firm gives every project one home.

Over 2 TB of client folders on one file server, and a project system that didn't know where any of it was. Now the live work sits in SharePoint by division and project, a register stays in step with the project system, and a new project gets its folders and Teams channel in one step.

Company
Field services firm, around 100 people
Service
Structure · Build
Delivery
Remote, in two phases, then monthly support
We used
SharePoint, Teams, Power Automate, OneDrive, a custom SharePoint web part, a migration tool, a read-only feed from the project system, data from the finance system
2 TB+scanned on the file server and checked against the project system before anything moved
730 GBabout that much active and on-hold project work moved to SharePoint
700about that many projects in the register on day one, kept in step with the project system
Minutesfrom a change in the project system to the register. Each run reads every project and writes only what changed.
1 stepfrom a new project to its folders and Teams channel, built from the division's own template
Counts from the engagement. Client not named. Screens below are mock-ups with sample data.
The story

Every project lived in two places that never met.

  1. Before

    One file server, every client's history.

    Over 2 TB and more than two million files, organized by client and then however each team liked. About two thirds of it was completed or inactive work. The project system held the project list, about 600 projects active or on hold across dozens of clients, but nothing tied a project in that system to its folder.

  2. The ask

    Move the live work, not the attic.

    Get active project files into SharePoint, give every project one place its files live, and set up new projects without anyone building folders by hand.

  3. What we built

    Numbers first, then the structure, then the tools.

    A full scan checked against the project system, a SharePoint site for each division with a folder per project, a register that the project system keeps current, and a console that builds a new project's folders and Teams channel. For one practice area, billing from the finance system now sits next to project progress.

01 · Structure · Scan and migration

Scan everything. Move what's live.

We measured the whole server and matched it against the project system before planning the move. Active and on-hold work went to SharePoint, one site per division and one folder per project. The archive stayed where it was.

Scan

The whole server

Every client folder measured by size, file count and age, then checked against the project list.

Match

Each project to its folder

Live projects matched to their source folders by project number. Doubtful matches listed, not guessed.

Review

The divisions check it

Division leads and project managers reviewed the mapping before anything moved.

Move

Division by division

One migration load sheet per division, and one for client reference material.

Mock-up with a fictional client and sample folders. The real sites follow the same pattern.

1The archive stayed put. Completed and inactive work, about two thirds of the total, stayed on the file server.
2Copies get a person. Nested copies, stray folders and doubtful matches were listed for review before the move.
3One folder per project, named by its project number, in its division's site.
4An archive in every division. When a project closes, its folder moves to the division's archive library with one click.
5Reference material has its own place. Folders that belonged to a client rather than one project went to a single clients site.
What changed

A project's files are where its number says they are.

02 · Register · Power Automate and a custom web part

One project list, kept current by the project system.

A flow reads a read-only feed from the project system every few minutes, compares it with the register, and writes only what changed. The PMO works from a console on top of it, inside SharePoint.

Mock-up with fictional projects, clients and people.

  • The project system stays the source of truth. Number, name, client, division, manager and status come from it. Nobody retypes them in SharePoint.
  • Read everything, write only changes. Reading every project on each run catches manager changes and closures. The first version rewrote every row on every run; now only real changes are written.
  • Closed there, closed here. A project that drops out of the project system's feed is closed. One closed here but still open in the project system reopens on the next run, without a duplicate.
  • Links that repair themselves. If someone renames or moves a project folder, the console finds it again by project number and fixes the link.
  • The weak point, named. The feed from the project system sometimes stalls. Quiet hours overnight and a watchdog that cancels stuck runs limit the damage, and moving that read off the live path is in progress.
1New projects from the project system wait here for a project manager to set them up.
2Five links per project: its documents, the client folder, the project system record, the Teams channel, and a copyable OneDrive path.
3Invoicing status as plain words, so managers can filter to what's ready to bill.
4Folders renamed outside the console, or sitting in the wrong division, are listed for owners to fix.
What changed

The PMO stopped hunting for folders. Every project in the register links to its files, and the link works.

03 · Provisioning · Console and Power Automate

A new project opens. Its home follows in one step.

A new project from the project system lands in the register as In Review. A project manager picks the division's template, confirms the folder name and asks for a Teams channel. The console copies the folders, and a flow creates the channel and writes its link back.

Open

Created in the project system

Staff open the project there, as they always have.

Arrive

In Review

Within minutes it appears in the register, waiting for setup.

Decide

A manager sets it up

Template, folder name, and a Teams channel if the project needs one.

Build

Folders and a channel

Folders copied into the division site. The channel and its link follow.

1Templates the divisions own. Each division keeps its templates in a library. A new template folder shows up in the picker by itself.
2Names that fit both systems. The folder name is checked against SharePoint and Teams rules as it's typed, and locks once a channel exists.
3One name, one place. Folder and channel share a name, so Teams opens this folder as the channel's files.
4Links on day one. As soon as setup finishes, the project's links work from the register.
What changed

Nobody builds project folders by hand, and a project's Teams files live in its project folder.

Mock-up with a fictional project.

04 · Finance · Billing report

Billed against done, project by project.

For one practice area, we joined contract and billing figures from the finance system to project milestones kept in SharePoint. Each project's share complete sits next to its share billed, and the ones drifting apart are flagged.

Mock-up with sample projects and figures, shown in Floor 16 chart fills.

1Progress from the work. Share complete comes from weighted milestones the team marks off in SharePoint.
2Money from the books. Contract value and billing come from the finance system, matched to SharePoint by project number.
3Gaps are flagged. A project billed well ahead of its work, or well behind it, is marked for a look.
4Portfolio to project. Views run from all projects down to one project's milestones and billing.
  • Each project row links to its record in the finance system and to its folder in SharePoint.
  • Burn rate for the rest of the firm, from project system hours and billing, was set aside for a later phase.
What changed

Progress and billing on one page, matched by project number.

The rule

The project system owns the project. SharePoint owns its home.

Two systems, two sets of fields. The sync writes only what the project system owns, and project managers set only what SharePoint owns, so neither overwrites the other. Every change the sync makes, and every Teams channel created, goes into an audit list that the flows write and owners read.

FieldProject systemThe syncManagersLogged
Number, name, client, division
Manager and status
New, closed and reopened
Template and folder name
Teams channel
Invoicing status
AutomaticA person decidesNo
The project systemStaff open, change and close projects there
The syncReads every project, writes only changes
A project managerPicks the template, name and channel
The project's homeFolders, channel and links, in its division
The rollout

Numbers first, then the move, then the tools.

The scan and a pilot with one client's projects came before any bulk move. The register and the set-up console came once the division sites existed to point at.

Scan and structureOver 2 TB scanned, sites and permissions agreed, one client piloted
Done
Burn-rate reportOne practice area: billing from the finance system next to milestones
Done
Division sites and the moveA site per division, load sheets by division, about 730 GB moved
Done
Register and set-up consoleSynced from the project system, folders and channels in one step
Done
One division's second driveScanned, moving now
Now
Project system read off the live pathSo a slow feed can't hold up the sync
Now
Platform supportSync monitoring and changes, monthly
Next
Quarter 1Quarter 2Quarter 3Quarter 4Quarter 5
01 Done13 In progress, and it matters18 Planned
What changed

Three ways to measure it.

For the PMO
One list

of every live project, each with working links to its files, client folder, project record and Teams channel.

For project managers
One step

to set up a new project's folders and Teams channel from the division's own template.

For leadership
Minutes

from a change in the project system to the register, with each change the sync makes on record.

Projects in one system, files in another?

Thirty minutes on what's on your file server, what your project system already knows, and what it would take to join them.