Ellipse Gradient for Header
Microsoft 365 logo

Microsoft 365 Integration Guide

Integrate Microsoft 365 workloads through Microsoft Graph REST APIs, OAuth 2.0, change notifications, delta queries, and file interfaces.

Microsoft 365 integration options at a glance

Microsoft Graph is the primary integration surface for Microsoft 365, providing REST APIs for directory users and groups, Outlook messages and events, OneDrive and SharePoint files, Teams, Planner, and selected reporting resources. Graph change notifications support event-driven processing for selected resources, while delta queries support incremental synchronization where available. JSON batching, asynchronous operations, and DriveItem upload sessions support higher-volume and large-file scenarios. Microsoft Entra ID provides OAuth 2.0 delegated or application authentication. Martini can consume Graph APIs, receive notifications through an HTTPS API, schedule reconciliation workflows, map data, manage pagination and retries, and expose controlled APIs to downstream systems.

Integration pointSupported by Microsoft 365?Common use casesHow Martini supports it
Microsoft Graph REST APIsYesRead and update Users, Groups, Messages, Events, DriveItems, SharePoint Lists, Teams resources, Planner tasks, and selected reports using resource-specific permissions.Martini can consume REST APIs, follow OData pagination links, construct JSON requests, map responses, and expose reusable APIs around Graph operations.
Webhooks / change notificationsLimitedReceive HTTPS notifications for selected Outlook, DriveItem, SharePoint, Teams, user, group, and other supported resource changes.Martini can expose an HTTPS API or webhook-receiving workflow, handle validation, retrieve the changed resource, and orchestrate subscription renewal and reconciliation.
Delta queriesLimitedPerform initial synchronization and retrieve incremental changes for selected Microsoft Graph resources.Martini can persist opaque delta links, process deletions, recover from invalid links, and initiate full or partial resynchronization.
Bulk / async / batch APIsYesUse JSON batching for multiple requests and resource-specific asynchronous operations for reports, exports, long-running work, or large transfers.Martini can construct batches, separate dependent operations, poll asynchronous results where required, and apply bounded retry policies.
File / attachment APIsYesList, upload, download, move, copy, and manage OneDrive and SharePoint DriveItems plus selected Outlook attachments.Martini can transfer content, preserve metadata, coordinate upload sessions for large files, and map source IDs, eTags, and target identifiers.
AuthenticationYesAuthenticate through Microsoft Entra ID using delegated permissions, application permissions, authorization code, client credentials, certificates, client secrets, or supported managed identities.Martini can keep tenant and application configuration in protected environment settings and use OAuth 2.0 authentication for API consumption.
Reporting and usage APIsLimitedRetrieve selected Microsoft 365 reporting and usage data for analytics or operational dashboards; this is not direct database access.Martini can call reporting endpoints, transform results, and write them to approved analytics or data platforms while handling workload-specific latency and permissions.
SOAP / Exchange Web ServicesLegacySupport existing Exchange Web Services integrations where required, although EWS is a legacy interface with retirement plans for Exchange Online.Martini can consume SOAP services, but new implementations should use Microsoft Graph where the required functionality is available.

How Microsoft 365 exposes data and business events

Microsoft Graph REST APIs

Microsoft Graph provides the primary REST API surface for Microsoft 365. It uses resource-oriented URLs, JSON payloads, HTTP status codes, OData query options, pagination links, and workload-specific permissions across directory, mail, calendar, files, SharePoint, Teams, Planner, and reporting resources.

Martini implementation pattern

Martini implementation pattern: a workflow authenticates with Microsoft Entra ID, calls the required Graph endpoint, follows pagination or asynchronous results, maps the response to a canonical model, applies business rules, and writes to the target system with structured error handling.

Implementation sequence

Authenticate with Microsoft Entra ID
Call the required Microsoft Graph resource
Follow pagination or asynchronous operation results
Map the response to the target model
Apply validation and business rules
Write the result and store correlation state

Microsoft Graph change notifications

Microsoft Graph supports change notifications for selected resource types. Notifications arrive at a publicly reachable HTTPS endpoint, may contain resource data, and often require a follow-up Graph request. Subscriptions expire and require renewal.

Martini implementation pattern

Martini implementation pattern: expose a Martini API or webhook entry point, complete notification validation, accept the notification, retrieve the current resource when necessary, and process it idempotently. A separate scheduled workflow renews subscriptions and reconciles missed changes.

Implementation sequence

Receive the HTTPS validation request or notification
Validate the notification and subscription context
Retrieve the current resource when payload data is incomplete
Map and process the changed resource
Persist the source identifier and processing result
Renew subscriptions and reconcile missed notifications

Microsoft Graph delta queries

Delta queries provide incremental synchronization for selected Microsoft Graph resources after an initial load. The API returns an opaque delta link that must be persisted and can become invalid or expire.

Martini implementation pattern

Martini implementation pattern: run an initial synchronization, store the returned delta link securely, invoke the link on subsequent schedules, process additions, updates, and deletion markers, and fall back to reconciliation when the link is no longer usable.

Implementation sequence

Run the initial resource synchronization
Persist the returned delta link
Request the next incremental page
Process additions, updates, and deletions
Store the replacement delta link
Start a reconciliation sync when the link is invalid

DriveItem and attachment APIs

Microsoft Graph supports OneDrive and SharePoint DriveItems, upload and download operations, upload sessions for large files, and selected Outlook attachments. Permissions and governance policies vary by workload and tenant.

Martini implementation pattern

Martini implementation pattern: retrieve file metadata and content, map it to the target attachment model, use chunked upload sessions for large files, retry failed ranges where safe, and persist source IDs, eTags, and target IDs to prevent duplicate transfers.

Implementation sequence

Retrieve DriveItem or attachment metadata
Download content or start an upload session
Transfer content and retry safe failed ranges
Map metadata and preserve file properties
Write the attachment to the target system
Persist source and target identifiers

Common Microsoft 365 integration patterns

Pattern 1: Synchronize Microsoft 365 users with an identity or service platform

When to use this pattern

Use a scheduled or reconciliation workflow when Workday, ServiceNow, Salesforce, or another platform needs selected Microsoft Entra ID user and group data. Application permissions should be limited to the directory resources required.

Integration direction
Microsoft 365
Martini
ServiceNow
Example Mapping
Microsoft 365 FieldCanonical FieldTarget Field
idsourceUserIdexternal_id
displayNamefullNamename
mailemailAddressemail
accountEnabledactiveactive
Martini implementation pattern

A scheduler starts the workflow, Martini calls Microsoft Graph, follows @odata.nextLink values, validates and maps Users or Groups, applies create-versus-update rules, and writes results to the target. Correlation identifiers and persisted state make retries idempotent; failures are routed for bounded retry and reconciliation.

Martini capabilities used
  • workflows
  • scheduling
  • API consumption
  • data mapping
  • validation
  • business rules
  • error handling

Pattern 2: Synchronize Outlook events with Salesforce

When to use this pattern

Use change notifications where supported, supplemented by scheduled reconciliation, when Outlook calendar Events must remain aligned with CRM appointments or customer activity.

Integration direction
Microsoft 365
Martini
Salesforce
Example Mapping
Microsoft 365 FieldCanonical FieldTarget Field
idsourceEventIdExternal_Event_ID__c
subjecttitleSubject
start.dateTimestartTimeStartDateTime
attendeesparticipantsAttendees
Martini implementation pattern

Martini receives a Graph notification, retrieves the current Event, normalizes time zones and recurrence, maps attendees and organizer data, and upserts the Salesforce appointment. The workflow stores source IDs and iCalUId where useful, applies conditional updates, renews subscriptions, and reconciles missed notifications.

Martini capabilities used
  • webhook consumption
  • API consumption
  • workflows
  • data mapping
  • business rules
  • scheduling
  • error handling

Pattern 3: Transfer SharePoint files into a business application

When to use this pattern

Use a scheduled or notification-driven workflow when SharePoint or OneDrive files must be attached to cases, contracts, projects, or records in another application.

Integration direction
Microsoft 365
Martini
NetSuite
Example Mapping
Microsoft 365 FieldCanonical FieldTarget Field
idsourceFileIdexternalFileId
namefileNamefileName
eTagversionTagversion
parentReference.pathsourceLocationfolder
Martini implementation pattern

Martini identifies changed DriveItems, retrieves metadata and content, applies file-type and size rules, and uploads the file to the target using its attachment API. Large files use Graph upload sessions; source IDs, eTags, and target IDs prevent duplicates, while transfer failures are retried safely.

Martini capabilities used
  • API consumption
  • file handling
  • workflows
  • data mapping
  • business rules
  • error handling
  • retry handling

Pattern 4: Orchestrate Microsoft 365 notifications from business events

When to use this pattern

Use an API-led workflow when an external business event should generate an Outlook Message, Teams notification, Planner task, or calendar Event, subject to the selected workload's permissions and supported operations.

Integration direction
ServiceNow
Martini
Microsoft 365
Example Mapping
Microsoft 365 FieldCanonical FieldTarget Field
numberbusinessReferencesubject
priorityurgencyimportance
descriptionnotificationBodybody.content
assignmentGroupaudiencerecipients
Martini implementation pattern

Martini receives or retrieves the source event, validates the audience and business condition, maps the payload to the appropriate Graph resource, and sends or creates the notification. The workflow records the source correlation ID, distinguishes safe retries from duplicate-creating operations, and reports permanent permission errors separately.

Martini capabilities used
  • API creation
  • API consumption
  • workflows
  • data mapping
  • business rules
  • validation
  • error handling

Applications commonly integrated with Microsoft 365

Microsoft 365 is frequently part of broader identity, collaboration, document, CRM, service-management, and business-process architectures. The following are practical integration scenarios rather than claims of native integrations or dedicated Martini connectors.

Application Scenario Direction Martini Pattern
Salesforce Synchronize user context, contacts, leads, calendar events, and selected email or collaboration activity with CRM processes. Microsoft 365 → Martini → Salesforce Use Microsoft Graph REST calls or change notifications to retrieve relevant Users, Messages, or Events, map them to Salesforce objects, apply ownership and duplicate rules, and route failures for retry or reconciliation.
ServiceNow Connect directory users, incident notifications, approvals, and selected Teams or Outlook activity with service-management workflows. Microsoft 365 → Martini → ServiceNow Schedule or trigger a Martini workflow from Graph notifications, retrieve the current resource, map it to ServiceNow data, apply priority and authorization rules, and persist correlation identifiers for idempotent updates.
Jira Coordinate Microsoft 365 identity context, project notifications, and collaboration activity with Jira issues and projects. Microsoft 365 → Martini → Jira Consume Graph data or notifications, transform selected messages, users, or events into Jira API payloads, and use source IDs and bounded retries to prevent duplicate issue or notification processing.
Workday Support joiner, mover, and leaver processes by synchronizing worker and organizational data with Microsoft Entra ID users and groups. Workday → Martini → Microsoft 365 Run a scheduled Martini workflow that retrieves Workday changes, validates required identity fields, maps workers to Microsoft Graph Users or Groups operations, and records provisioning outcomes for reconciliation.
DocuSign Coordinate document-signing workflows with Outlook or Teams notifications and synchronize signature status with business processes. DocuSign → Martini → Microsoft 365 Receive or poll DocuSign status, apply business rules, call Microsoft Graph to send Messages or post supported collaboration notifications, and retain correlation IDs for status updates.
NetSuite Exchange business notifications, documents, calendar activity, and operational context between Microsoft 365 and NetSuite. NetSuite → Martini → Microsoft 365 Orchestrate NetSuite and Microsoft Graph API calls in a Martini workflow, transform source records into Messages, DriveItems, or Events as appropriate, and handle transient failures independently for each system.

How to build a Microsoft 365 integration in Martini

Objective

Establish Microsoft Entra ID authentication and configure the Graph permissions required for the selected Microsoft 365 workloads.

Instructions in Martini

  • Choose delegated or application permissions based on the execution model
  • Configure tenant, client, certificate, or secret settings in protected environment configuration
  • Use the minimum required Graph scopes or app roles
  • Validate tenant policies, consent, licensing, and workload access

Objective

Select a notification, delta, schedule, or downstream API trigger that matches the resource and synchronization requirements.

Instructions in Martini

  • Use change notifications for supported resources
  • Use delta queries for supported incremental synchronization
  • Use a scheduler for reconciliation and unsupported event coverage
  • Expose a Martini API when another system starts the process

Objective

Call Microsoft Graph and obtain complete, current resource data rather than relying on incomplete notification payloads.

Instructions in Martini

  • Invoke the appropriate Graph REST endpoint
  • Follow @odata.nextLink values until processing is complete
  • Persist and reuse delta links where supported
  • Retrieve file content or start an upload session when required

Objective

Coordinate Microsoft Graph calls, target-system calls, state management, and conditional paths in a maintainable Martini workflow.

Instructions in Martini

  • Separate retrieval, transformation, target writes, and state updates
  • Use reusable services or APIs for shared operations
  • Handle subscription renewal and reconciliation as separate scheduled flows
  • Keep source and target correlation identifiers

Objective

Transform Microsoft 365 objects into the target model while accounting for optional properties, time zones, recurrence, file metadata, and tenant variation.

Instructions in Martini

  • Map Users, Groups, Messages, Events, DriveItems, or ListItems to canonical fields
  • Normalize date-time and recurrence semantics
  • Validate required values before writing target data
  • Apply create, update, and duplicate rules

Objective

Commit results to the target system with idempotency, concurrency controls, and safe handling of sensitive content.

Instructions in Martini

  • Use stable source IDs and eTags where appropriate
  • Apply conditional updates when supported
  • Use bounded retries for transient failures and respect Retry-After
  • Avoid exposing tokens, message content, or file data in logs

Common Microsoft 365 data objects used in integrations

ObjectTypical UseCommon target systemsMartini handling
UsersSynchronize directory profiles, lifecycle status, organizational attributes, and identity context.Workday, ServiceNow, Salesforce, identity platformsMartini retrieves Users with least-privilege permissions, follows pagination, validates fields, maps identities, and stores source-to-target identifiers.
GroupsRepresent Microsoft 365 Groups and supported directory group types for membership and access-related workflows.ServiceNow, Salesforce, identity governance platformsMartini applies membership and ownership rules, handles incremental or scheduled synchronization, and uses stable Graph IDs for idempotent updates.
MessagesRead, send, or manage Outlook email messages and selected mail-folder content.ServiceNow, Salesforce, document stores, notification systemsMartini filters and maps message metadata and content, protects sensitive payloads in logs, and avoids duplicate sends through correlation rules.
EventsSynchronize Outlook calendar events, attendees, organizers, recurrence, and meeting information.Salesforce, scheduling applications, HR and service platformsMartini normalizes time zones and recurrence data, uses event identifiers and iCalUId where appropriate, and applies conditional updates.
DriveItemsManage OneDrive and SharePoint files and folders, including metadata and content transfers.NetSuite, DocuSign, case systems, content repositoriesMartini maps metadata, transfers content, uses upload sessions for large files, and persists DriveItem IDs and eTags.
Sites and ListsRead and write SharePoint sites, lists, columns, and list items for structured collaboration data.ServiceNow, Salesforce, databases, reporting platformsMartini handles list-item pagination, field transformation, conditional updates, and reconciliation for missed notifications.

Authentication and security considerations

Microsoft Entra ID and OAuth 2.0

Microsoft Graph access is generally authenticated through Microsoft Entra ID. Martini workflows can use delegated permissions for user-context scenarios or application permissions with client credentials for backend and scheduled processing.

Least privilege

Permissions vary by workload and operation. Select the smallest delegated scopes or application roles possible, obtain administrator consent where required, and validate tenant, Exchange, SharePoint, OneDrive, and Teams policies.

Secrets and tenant controls

  • Store tenant IDs, client settings, certificates, and secrets in protected environment configuration.
  • Prefer certificates or supported managed identities over long-lived client secrets where the deployment architecture allows.
  • Restrict logs so tokens, authorization headers, message content, and sensitive file data are not exposed.
  • Account for Conditional Access, resource-specific consent, licensing, and national-cloud differences.

Operational considerations for Microsoft 365 integrations

Throttling and retries

Microsoft Graph can return HTTP 429 responses and may provide Retry-After guidance. Respect that value, use bounded exponential backoff, and distinguish transient failures from permission, validation, and resource errors.

Pagination and synchronization state

Follow @odata.nextLink values rather than assuming page sizes. Persist delta links as opaque values, handle expiration or invalidation, and retain a full or partial reconciliation path.

Notifications and idempotency

Change notification subscriptions require validation, renewal, expiration handling, and recovery for missed notifications. Use Graph IDs, iCalUId where appropriate, message IDs, DriveItem IDs, eTags, and target identifiers to prevent duplicate processing.

Files, concurrency, and schema changes

  • Use upload sessions for large DriveItems and retry safe ranges.
  • Use eTags and conditional requests where supported to avoid overwriting newer changes.
  • Handle optional properties, time zones, recurrence, deletion markers, and tenant-specific behavior.
  • Test documented v1.0 behavior separately from beta APIs and monitor Microsoft Graph changes.

Why use Martini instead of scripts or point-to-point integrations?

Coordinate more than API calls

Scripts often combine authentication, paging, mapping, retries, state, and target writes in code that becomes difficult to operate. Martini represents this behavior as maintainable workflows and reusable APIs.

Support multiple Microsoft 365 workloads

A single integration may involve Users, Events, Messages, DriveItems, SharePoint Lists, and Teams resources. Martini can orchestrate these Graph operations with explicit mappings, validation, and business rules.

Operate reliably

  • Use scheduled reconciliation alongside change notifications and delta queries.
  • Centralize error handling, retry behavior, correlation state, and monitoring.
  • Expose controlled APIs so downstream applications do not need direct Microsoft Graph permissions.
  • Extend workflows with custom logic when resource-specific processing requires it.

Frequently asked questions

How can Microsoft 365 be integrated with enterprise systems?

Most integrations use Microsoft Graph REST APIs with Microsoft Entra ID OAuth 2.0 authentication. Microsoft Graph exposes Users, Groups, Messages, Events, DriveItems, SharePoint resources, Teams, Planner, and selected reporting APIs. Selected resources also support change notifications or delta queries, while scheduled workflows can cover reconciliation and unsupported event scenarios.

Can Martini integrate with Microsoft 365?

Yes. Martini can consume Microsoft Graph REST APIs, authenticate through Microsoft Entra ID, receive selected Graph change notifications through an HTTPS API, orchestrate pagination and delta synchronization, transfer files, transform data, and expose controlled APIs for downstream systems.

Do I need a connector to integrate Microsoft 365 with Martini?

No. A dedicated Microsoft 365 connector is not required. Martini can use Microsoft 365's native Microsoft Graph REST APIs, OAuth 2.0 authentication, change notifications, delta queries, file APIs, and other confirmed endpoints through standards-based workflows and APIs.

Is there any extra Lonti cost to integrate Microsoft 365 with Martini?

Lonti does not charge an additional per-connector or per-vendor fee to integrate Microsoft 365. The integration is subject to the provisioned capacity of the Martini environment. Separate costs may apply from Microsoft, cloud infrastructure, or other third-party systems based on licensing, usage, and deployment model.

Which Microsoft 365 integration methods should new implementations use?

Microsoft Graph REST APIs should generally be the starting point for new integrations. Change notifications and delta queries are useful for selected resources, JSON batching supports multiple requests, and DriveItem upload sessions support large files. Exchange Web Services is legacy and should generally be avoided for new work where Graph provides the required functionality. Microsoft 365 is not confirmed as a general-purpose GraphQL API.

Are Microsoft 365 events or webhooks available?

Microsoft Graph provides change notifications for selected resources, including certain Outlook, DriveItem, SharePoint, Teams, user, and group resources. They require a reachable HTTPS endpoint, validation, renewal, and sometimes a follow-up Graph request. They are not a universal event stream, so scheduled reconciliation may still be necessary.

How does Martini synchronize Microsoft 365 data reliably?

Martini can combine initial loads, Graph delta queries, change notifications, scheduled polling, and reconciliation. Workflows follow pagination links, persist opaque delta links, process deletion markers where available, map data into target models, and use source IDs, eTags, correlation IDs, and bounded retries to manage duplicates and transient failures.

Can Martini expose an API façade for Microsoft 365 data?

Yes. Martini can expose a controlled REST API that retrieves or transforms Microsoft Graph data for downstream applications. The façade can centralize authentication, authorization, field mapping, validation, business rules, throttling-aware orchestration, and consistent error handling without exposing Graph permissions directly to every consumer.