FrancodesystemsFran<code>systems
WorkspaceCustom integration

Holded Microsoft 365 integration

M365 contacts, calendars, emails and documents synced with Holded.

HoldedHolded
Microsoft 365Microsoft 365

Implementation time · 6-10 días laborables

Diagnosis

The problem

Your team lives in Outlook, Teams and SharePoint. Holded ends up as just another tab nobody opens except finance. The result: sales reps don't see Holded opportunities in their personal Outlook CRM, quotes sit stuck in email with no traceability, critical documents (contracts, signed invoices) live duplicated across each person's inbox, personal OneDrive and the team's SharePoint, and nobody knows which is the valid version. For a company of 20+ employees with M365 as its backbone, this is daily operational friction.

Proposal

The solution

Your Outlook, Teams, SharePoint and OneDrive connected to Holded's lightweight CRM and documentation. Holded contacts show up in Outlook, calendar events reflect meetings with prospects, and generated documents (quotes, invoices) are automatically filed in SharePoint with the right permissions. For teams on M365 Business or Enterprise, with single-tenant or multi-tenant support.

Scope

What we automate

  • Holded contacts and Outlook synced, with folder/category assignment
  • Calendar events with Holded clients flagged as 'active client'
  • Holded quotes and invoices filed in SharePoint with per-team permissions
  • Teams notifications: quote signed, invoice paid, due date approaching
  • Outlook emails tagged with a Holded client, logged in the CRM
  • Sent attachments (contracts, NDAs) filed in the client's SharePoint
  • Multi-tenant: each company in the group with its own Holded and M365
  • Rep's personal OneDrive synced with their opportunities
Who uses it

Real use cases

These are the profiles that most ask us for the HoldedMicrosoft 365 integration and what they get in the end.

Case 01

B2B company, 50 employees, M365 Enterprise plus Holded

Before: Sales reps never opened Holded. Quotes in email with no traceability.

After: Outlook as the front-end CRM. Quotes in SharePoint with a Teams notification on signature.

Case 02

Group with 3 companies, 3 Holded accounts, 1 M365 tenant

Before: Each company with its own Holded but documents mixed together in SharePoint.

After: SharePoint folders segregated by company, each Holded with its own folder and permissions.

Case 03

Consultancy with frequent NDA contracts

Before: Signed contracts stayed in the rep's inbox. Impossible to audit.

After: Signed NDA goes automatically to the client's SharePoint plus a record in Holded as an attachment.

Before / After

What changes exactly

Without the integration

  • Sales reps don't open Holded
  • Quotes in email with no traceability
  • Documents duplicated across OneDrive, SharePoint and email
  • Multi-tenant with no clear separation

With the integration

  • Outlook as the daily CRM interface
  • Quotes filed with an audit trail
  • Single source of truth in SharePoint per client
  • Multi-tenant with proper segregation
Architecture

How we build it

Microsoft Graph API with OAuth2 authentication over your M365 tenant plus Holded's REST API. The app is registered in Azure AD with delegated permissions (user-level access) or application permissions (tenant-level access) depending on the case. Events are processed in near real-time via Graph webhooks. Files flow through SharePoint with permissions inherited from your team structure.

flow.ts
webhook microsoft 365.event
queue.enqueue(jobId)
worker.handle() // idempotent
holded.api.call() // retries with backoff
log.emit({ status: 'ok' })
FAQ

Frequently asked questions

Does it work with personal accounts (outlook.com)?

No. It's designed for Microsoft 365 Business or Enterprise tenants. Personal accounts don't support the Graph API with the required permissions.

Do we have to grant tenant admin permissions?

Only during the app registration phase in Azure AD. After that, permissions are delegated based on usage (user or application). We document exactly which permissions are requested and why.

Does it support SharePoint with permissions inherited from Teams?

Yes. If your structure is 'a Team per client with an associated SharePoint', we file into the corresponding Team's folder with its inherited permissions, without reconfiguring anything.

Does it work with Power Automate / Flow?

Compatible. If you already have Power Automate flows, we can replace specific logic or complement it. We recommend keeping critical flows in versioned code for stability, but coexistence works fine.

What about task syncing with Microsoft To Do / Planner?

Supportable. Usually, live Holded tasks are reflected in the relevant team's Planner rather than personal To Do (which is more private). We decide this during discovery.

How long does it take?

Between 6 and 10 business days for a standard integration. Multi-tenant setups or complex permission configurations can add 3 to 5 days.

Shall we talk about your Microsoft 365 integration?

A 30-minute call, no strings. You leave with scope and a price.