Lesson 1 of 1 in A CRM and project system inside Microsoft 365

Two systems and what I threw away

The video loads from YouTube when you press play.

This is the first episode of the series on how Allan built a CRM and a project system on Microsoft 365, one decision at a time. It is the map: what was built, and the big idea that was thrown away after two days. After it, you should be able to draw the whole system from memory.

The idea it started with

The first plan was one system for one firm, with everything inside: sales, projects, invoices, and the bookkeeping too, with the ledger and payroll from the start. It rests on a common belief: a real business system needs its own bookkeeping.

A ledger has one hard rule: a posted entry can never change. In Dataverse, Microsoft’s business database, an admin can edit anything, so the plan reached for Azure SQL ledger tables instead.

What the law asks

Then came the research into what Danish law asks of a home-made bookkeeping system:

  1. Locked postings. No changing, backdating or deleting an entry.
  2. A weekly backup. A full copy every week, kept by an unrelated party on a server in the EU.
  3. E-invoices. Sending and receiving them in two standard formats.
  4. An export file. A standard file of all the bookkeeping.

None of that is about sales or projects. It is the price of doing your own bookkeeping.

Cutting the bookkeeping

So two days in, the bookkeeping was cut out. It now lives in a registered standard system, an ERP, and payroll went with it. This system stops at an invoice draft: when a draft is approved, it waits for the ERP.

That is the reward. Without the bookkeeping, the system does not have to meet those rules, so it can live in SharePoint. The same day, the one system became two.

The map

  • The CRM (customer relationship management) handles selling: the lead, the deal, the quote and the contract.

  • The PMS (project management system) handles delivery: projects, tasks, time and expenses, ending in an invoice draft.

Each system has its own SharePoint site, its own lists and its own app. All the data lives in those lists and libraries. There is no Dataverse: it would need a premium licence of 20 US dollars per person per month.

Lists have one weakness: they cannot guard their own rules. They cannot promise that a number is never used twice. So the work is split three ways:

  • Plain edits go straight from the screen to the list.
  • Steps with a lock, a number or a document go to a small Azure Function, code that runs on a server. Each system has one, and numbers come from one shared counter that both ask.
  • Power Automate flows do the jobs that need Microsoft 365 itself: mail, approvals and Teams.

Outside both systems, the ERP does the bookkeeping.

Drawing of the system. Two boxes at the top: the CRM with leads and deals, quotes, contracts and customers, and the PMS with projects, tasks, time and expenses, and invoice drafts. Below them three hand-overs: customers and contacts go from the CRM to the PMS as a read-only copy, a signed contract goes from the CRM to the PMS and opens a head project, and hours, status and amounts go from the PMS back to the CRM. Then the four parts each system is built from: app screens on SharePoint pages, SharePoint lists and libraries, an Azure Function, and Power Automate flows. At the bottom a dashed box: the ERP, whose link is planned, not built.
Drawing: the two systems, the three hand-overs that matter most, and what each system is built from.

The hand-overs

Each system owns its own data, and each works alone: the PMS can even run projects that never came from the CRM. When both are in use, they meet at hand-overs. Three matter most:

  1. Customers. The CRM owns customers and contacts. The PMS keeps a read-only copy, and a flow keeps it up to date.
  2. A signed contract. It makes a head project in the PMS.
  3. Figures coming back. Project status and hours flow back to the customer in the CRM.

The real thing

The CRM’s pipeline shows the deals by stage, with sums in Danish kroner, euros and dollars.

The Pipeline page with four columns: New, Meeting held, Quote sent and Won this month. Each column header shows its number of deals and its totals per currency, for example 2 deals, DKK 120,000 and EUR 42,000. One deal card is marked 20 days, gone quiet.Demo data
The pipeline: one column per stage, with sums in DKK, EUR and USD.

At the end of the work in the PMS is an approved invoice draft. It says what it is waiting for: the ERP. Sending it there is the next step to build; today, Mark invoiced is pressed by hand.

An invoice draft, D-2026-0005, marked Approved. Its path shows Draft and Awaiting approval done, Approved current and Invoiced still to come. The line on the right reads: Approved by Anders Dahl on 12 Oct. Waiting to be invoiced in the ERP.
Demo data
An approved draft, waiting for the ERP.

Back in the CRM, the firm overview follows the whole road from lead to invoice. Its project figures came across from the PMS.

The From lead to invoice band on the firm overview: six steps in a row, Leads 4, Open pipeline 5 deals, Signed 1 contract, In work 3 sub-projects at 125 of 184 hours, Not yet invoiced 3 sub-projects, and Invoiced 2 sub-projects. A note says the last three come from the PMS.
Demo data
The firm overview’s band. The first three steps are CRM figures; In work, Not yet invoiced and Invoiced come from the PMS.

Three things to keep

  1. The bookkeeping lives in a registered ERP, so the system does not have to meet the bookkeeping law’s rules.
  2. There are two systems, each with its own site, lists, app and Function.
  3. They meet at hand-overs: customers, signed contracts, and project figures coming back.

Pause and predict. A customer moves to a new address. Where do you fix it, and what happens in the PMS?

You fix it in the CRM, because the CRM owns customers. A flow updates the copy in the PMS.

Next episode: how all this was planned, one level at a time, so AI agents could build it.

Try it yourself

The public demo runs both apps in your browser, with no sign-in. A role switcher lets you see the system as a salesperson, an approver, a project lead or a consultant. For a guided tour, open the demo with ?guide=on at the end of the address. The project system is behind the Projects button at the top.