Skip to content

Client files inside every CRM record

Each client record gets its own SharePoint folder, with AI search across all folders, expiry reminders and e-signature, right where client data lives.

Example project

Based on a project our team built. Client details are left out or changed, and the demo uses invented data.

Sector
Industrial and distribution companies
Typical duration
8 to 14 weeks
Client files library with an assistant panel that answers a question about a signed price agreement, quotes two clauses and lists sources

Typical client situation

An industrial and distribution company keeps agreements, offers, test certificates and technical sheets in CRM attachments, network drives and email. Several teams work with the same clients, and each team has its own idea of where a file belongs.

Challenge

Sales cannot find the signed contract, quality cannot find the certificate for a delivered batch, and the same quote exists in four versions. Files sit in CRM notes, on shared drives and in mailboxes, so nobody trusts any single copy.

Giving everyone direct SharePoint rights is not an option. Permissions would drift from the CRM security model, customers and partners need controlled access to some folders, and the old drives still have to move to team sites without losing their structure.

Solution

We build a Documents tab on any CRM record as a file manager. Each record gets one SharePoint folder, created from a template, with chunked upload and download, rename, copy from templates, preview, and Word to PDF conversion. A Teams channel per key account stays synced with the folder. The tab shows only what the user may do: read, write or no access, following the CRM security roles.

Everything runs server-side through custom APIs written in C# that call Microsoft Graph, so users never need direct SharePoint rights. The same layer updates metadata, invites external users and sends agreements for e-signature, with the status of each signer shown on the client record. An auto-tag command fills document metadata from the ERP, and a migration moves the old shares to dozens of team sites using an access matrix.

The solution also reads the contents of every client folder. People ask in their own words, for example for the latest signed price agreement, and get the matching document with a confidence score and the quoted clauses. It extracts expiry dates from certificates and agreements, and reminds the owner 90, 60 and 30 days ahead, with an expiry dashboard for compliance.

  • One SharePoint folder per CRM record, created from a template

  • Semantic search across all client folders, with quoted clauses and a confidence score

  • Expiry dates read from certificates and agreements, with reminders at 90, 60 and 30 days

  • E-signature for outgoing agreements, with the status of every signer

  • Access follows CRM roles through server-side custom APIs

Plan of the solution

Stack

  • Dynamics 365 / Dataverse
  • SharePoint Online
  • Microsoft Graph
  • C# custom APIs
  • SPFx
  • TypeScript

Screens from the demo

We rebuilt this solution as a demo with invented data, so you can see how it works without exposing any client system. Click through it yourself.

Open the interactive demo
Client form in a CRM with a Documents tab showing the client folder, the user's access level, expiry watch and signature requests
Fig. 1The Documents tab on the client record shows the folder, the access the user gets from the CRM, the Teams channel, the next expiry and the open signature requests.
Expiry dashboard with counts of documents expiring in 30, 60 and 90 days, a chart by document type and a table of the next documents to expire
Fig. 2The expiry tracker counts certificates and agreements that end within 30, 60 and 90 days and lists the next ones with their owners.

What it is built to deliver

per client record, in the place people already work
One folder
the signed agreement, with the clause quoted
Asked, found
every certificate and agreement is tracked to its expiry
No lapses

Recognize the situation?

Tell us where your process is stuck. We will tell you honestly whether we can help.