.png)

SharePoint Integration Guide
Connect SharePoint Online with enterprise applications through Microsoft Graph, SharePoint REST APIs, resource-specific notifications, and scheduled workflows.
SharePoint integration options at a glance
SharePoint Online integrations primarily use Microsoft Graph REST APIs, with SharePoint REST APIs available for SharePoint-specific operations. Martini can authenticate through Microsoft Entra ID OAuth 2.0 using delegated or application permissions, then orchestrate workflows for Sites, Lists, List items, Drives, Drive items, and Pages. Supported SharePoint list webhooks and Microsoft Graph change notifications can initiate API workflows for selected resources, while scheduled workflows support reconciliation, subscription renewal, pagination, and delta synchronization where available. Graph JSON batching and file APIs help process larger workloads, with retry and throttling controls for Microsoft 365 service limits.
| Integration point | Supported by SharePoint? | Common use cases | How Martini supports it |
|---|---|---|---|
| Microsoft Graph REST APIs | Yes | Access Sites, Lists, List items, Drives, Drive items, permissions, and selected SharePoint resources using OData queries and resource-specific endpoints. | Martini can consume the Graph REST API through authenticated HTTP workflows, paginate responses, map JSON, and apply business rules. |
| SharePoint REST APIs | Yes | Handle SharePoint-specific list, field, content type, page, file, folder, and configuration operations that may not have equivalent Graph coverage. | Martini can call site-scoped REST endpoints and transform their responses within reusable workflows. |
| Webhooks and change notifications | Limited | Receive notifications for supported SharePoint list scenarios and selected Microsoft Graph SharePoint resources. Notifications indicate that a change occurred and may not contain the full object. | Martini can expose an API for notifications, retrieve the current resource, deduplicate events, and schedule subscription renewal and reconciliation. |
| Delta synchronization | Limited | Use Graph delta queries for selected resources, particularly Drive items, to identify additions, updates, and deletions since a stored state token. | Martini can persist delta links or tokens, process pages, and initiate controlled resynchronization if state becomes invalid. |
| Bulk and JSON batching | Yes | Submit multiple Graph requests in one HTTP request to reduce network overhead for list, item, or file processing. | Martini can construct batch requests and independently handle operation-level failures and throttling responses. |
| File and attachment APIs | Yes | List, download, upload, move, copy, and update files in SharePoint document libraries through Drives and Drive items; list attachments may require separate operations. | Martini can stream or transform file content, manage metadata, and orchestrate resumable upload workflows where required. |
| Authentication | Yes | Use Microsoft Entra ID OAuth 2.0 with delegated or application permissions, including restricted selected-site access where configured. | Martini can store credentials securely and use OAuth-based configuration for scheduled, API-led, and notification workflows. |
| SOAP APIs | Legacy | Use legacy SharePoint web services only when a specific historical SharePoint operation requires them; SOAP is not recommended for new SharePoint Online integrations. | Martini can consume SOAP services when necessary, but Graph or SharePoint REST should be evaluated first. |
| Database access | No | SharePoint Online does not expose a supported relational database interface for application integrations. | Martini should use Graph, SharePoint REST, notifications, or exported files rather than direct SharePoint database access. |
How SharePoint exposes data and business events
SharePoint REST APIs
SharePoint REST APIs use site-scoped endpoints under the `/_api` path for lists, list items, fields, content types, pages, files, folders, and other SharePoint-specific functionality. They remain relevant where Microsoft Graph does not provide sufficient coverage.
Martini implementation pattern
Martini implementation pattern: Configure OAuth 2.0 credentials, call the appropriate site-scoped REST endpoint from a workflow, normalize the response, and route the result to a target application or reusable service. Use Graph first for new integrations unless a SharePoint-specific operation requires REST.
Implementation sequence
Microsoft Graph REST APIs
Microsoft Graph is the principal modern integration surface for SharePoint Online. It provides REST resources for Sites, Lists, List items, Drives, Drive items, permissions, and selected SharePoint capabilities, with OData query options where supported.
Martini implementation pattern
Martini implementation pattern: Consume Graph endpoints through HTTP-based workflows, persist identifiers and synchronization state, and separate retrieval, transformation, target writes, and error handling so the integration remains maintainable as resources grow.
Implementation sequence
SharePoint notifications
SharePoint list webhooks and Microsoft Graph change notifications provide partial, resource-specific notification coverage. A notification usually signals that a resource changed rather than providing the complete changed object, and subscriptions expire.
Martini implementation pattern
Martini implementation pattern: Expose a Martini API for supported notifications, validate and deduplicate the message, retrieve the current List item or Drive item through Graph or SharePoint REST, and combine event processing with renewal and periodic reconciliation workflows.
Implementation sequence
Drive item synchronization
SharePoint document libraries are exposed as Drives and Drive items. Graph delta queries can support incremental processing for selected file and folder resources, while larger files may require upload sessions.
Martini implementation pattern
Martini implementation pattern: Run an initial scheduled scan, persist the returned delta state, process additions, updates, and deletions on subsequent runs, and use bounded concurrency, content metadata, and retry controls for file transfers.
Implementation sequence
Graph JSON batching
Microsoft Graph JSON batching allows multiple requests to be submitted in a single HTTP request. Batching reduces network overhead, but each operation can succeed or fail independently and throttling still applies.
Martini implementation pattern
Martini implementation pattern: Build bounded batches from eligible operations, inspect each operation result, retry only transient failures, and preserve individual correlation identifiers for audit and replay.
Implementation sequence
Common SharePoint integration patterns
Pattern 1: Synchronize SharePoint lists with a CRM
When to use this pattern
Use this pattern when structured SharePoint Lists contain customer, account, case, or project information that must be synchronized with a CRM. It supports scheduled polling, supported notifications, or a controlled bidirectional workflow.
Integration direction
Example Mapping
| SharePoint Field | Canonical Field | Target Field |
|---|---|---|
| List item ID | externalId | SharePoint_Item_ID__c |
| Title | name | Name |
| Choice field | status | Status__c |
| Modified | updatedAt | Last_SharePoint_Update__c |
Martini implementation pattern
Martini retrieves paginated List items or responds to a supported notification, then fetches the current item, normalizes choice, lookup, person, date, and null values, and applies create-versus-update rules using the List item ID or an agreed business key. Conditional updates and conflict rules prevent overwriting newer changes; transient failures are retried and rejected mappings are routed for review.
Martini capabilities used
- workflows
- API consumption
- data mapping
- business rules
- error handling
- scheduled synchronization
Pattern 2: Archive SharePoint documents in an enterprise repository
When to use this pattern
Use this pattern to copy new or modified documents from a SharePoint document library into an enterprise content archive while preserving business metadata and preventing duplicate files.
Integration direction
Example Mapping
| SharePoint Field | Canonical Field | Target Field |
|---|---|---|
| Drive item ID | sourceDocumentId | External document ID |
| Name | fileName | Document name |
| File content | content | Binary content |
| Created or modified date | sourceTimestamp | Archive source timestamp |
Martini implementation pattern
A scheduled Martini workflow uses Drive item delta synchronization where supported, retrieves file content and metadata, validates the archive key, and uploads the document. Stable IDs, hashes, or business keys prevent duplicates; large files use the target and SharePoint upload behavior appropriate to the transfer, while throttling and interrupted-transfer retries protect the process.
Martini capabilities used
- scheduled workflows
- API consumption
- file handling
- data mapping
- idempotency
- retry handling
Pattern 3: Provision SharePoint folders from business records
When to use this pattern
Use this pattern when a business application creates a customer, contract, case, or project and its supporting documents should be organized in a SharePoint document library.
Integration direction
Example Mapping
| SharePoint Field | Canonical Field | Target Field |
|---|---|---|
| Business record ID | businessKey | Folder metadata business key |
| Customer name | displayName | Folder name |
| Contract or case number | referenceNumber | DriveItem custom field |
| Document URL | repositoryLink | External record document link |
Martini implementation pattern
Martini receives a source event or scheduled extract, normalizes and validates the folder name, checks for an existing folder by business key, and creates the folder or Drive items only when absent. It uploads related files, maps metadata, and returns SharePoint links to the source application. Conflicts, invalid names, authorization failures, and partial uploads are recorded for retry or remediation.
Martini capabilities used
- API-led workflows
- data transformation
- business rules
- file handling
- error handling
Pattern 4: Process SharePoint change notifications
When to use this pattern
Use this pattern for near-real-time downstream processing of supported list or drive-related changes without treating notifications as a complete universal SharePoint event stream.
Integration direction
Example Mapping
| SharePoint Field | Canonical Field | Target Field |
|---|---|---|
| Subscription ID | notificationSource | Integration source |
| Resource path | resourceReference | SharePoint resource |
| List item ID | objectId | External reference |
| Change timestamp | eventTime | Received time |
Martini implementation pattern
A Martini API receives the notification, validates its subscription context, deduplicates the message, and retrieves the current object from Graph or SharePoint REST. The workflow maps the resulting List item or Drive item to ServiceNow, records processing state, and uses scheduled subscription renewal and reconciliation to recover from expiry, missed events, or out-of-order delivery.
Martini capabilities used
- API exposure
- webhook consumption
- workflow orchestration
- data mapping
- deduplication
- scheduled workflows
Applications commonly integrated with SharePoint
SharePoint is commonly used as a document, collaboration, and structured-content repository alongside business applications. Martini can coordinate these integrations through vendor APIs, notifications, scheduled synchronization, and reusable transformation logic; the patterns below do not imply a native SharePoint connector.
| Application | Scenario | Direction | Martini Pattern |
|---|---|---|---|
| Microsoft Teams | Coordinate team collaboration content and SharePoint-backed documents across Microsoft 365 workloads. | Microsoft Teams → Martini → SharePoint | Use Microsoft Graph APIs to coordinate document metadata, links, or file-related workflows, with validation and duplicate checks before updating SharePoint resources. |
| OneDrive | Synchronize personal or shared Microsoft 365 files with organizational SharePoint libraries where the repository model permits it. | OneDrive → Martini → SharePoint | Use Graph drive and drive-item APIs, persist stable identifiers and delta state where supported, and apply file metadata and conflict rules during synchronization. |
| Salesforce | Associate customer, account, opportunity, or case documents with SharePoint folders and document metadata. | Salesforce → Martini → SharePoint | Receive or schedule Salesforce extracts, provision or locate SharePoint folders, upload documents, and return SharePoint URLs or identifiers to Salesforce with idempotent business keys. |
| ServiceNow | Store case, incident, request, or knowledge attachments in SharePoint while retaining document references in ServiceNow. | ServiceNow → Martini → SharePoint | Orchestrate ServiceNow API calls with Graph file operations, normalize filenames and metadata, and write back document links after successful uploads. |
| Dynamics 365 | Associate customer, opportunity, case, or project records with SharePoint documents and folders. | Dynamics 365 → Martini → SharePoint | Map Dynamics 365 business identifiers to SharePoint folder and DriveItem metadata, use existence checks for repeat events, and synchronize links or status changes in both directions. |
| SAP S/4HANA | Archive or manage documents associated with suppliers, customers, orders, and finance processes. | SAP S/4HANA → Martini → SharePoint | Consume SAP APIs or extracts, transform document and business-key data, upload content through Graph, and persist SharePoint references for downstream SAP updates. |
| Jira | Link project, issue, and release documentation stored in SharePoint to Jira work items. | Jira → Martini → SharePoint | Use Jira events or scheduled retrieval to organize SharePoint content by issue or project key, then return validated SharePoint links to Jira. |
| DocuSign | Exchange agreement documents and signature-status metadata between SharePoint processes and DocuSign envelopes. | SharePoint → Martini → DocuSign | Retrieve eligible DriveItems, create DocuSign envelopes through its API, process status callbacks, and store completed documents and signature metadata back in SharePoint. |
How to build a SharePoint integration in Martini
Objective
Establish Microsoft Entra ID OAuth 2.0 access using the least-privilege delegated or application permissions required by the SharePoint workflow.
Instructions in Martini
- Configure the Graph or SharePoint REST base URL and resource scope
- Store client credentials and tokens through secure environment configuration
- Use Sites.Selected or narrower permissions where appropriate
- Confirm whether the workflow is user-authorized or server-to-server
Objective
Select a scheduled, API-led, or supported notification trigger based on the resource and synchronization requirements.
Instructions in Martini
- Use a Martini API for supported SharePoint or Graph notifications
- Use a scheduler for polling, reconciliation, delta processing, and subscription renewal
- Treat notifications as change signals requiring follow-up retrieval
- Define an initial-load and recovery path
Objective
Read the current SharePoint object through Graph or SharePoint REST and handle collection, file, and resource-specific behavior.
Instructions in Martini
- Resolve Site, List, Drive, List item, or Drive item identifiers
- Follow @odata.nextLink until collection processing is complete
- Persist delta links or tokens where the resource supports delta queries
- Use upload sessions or appropriate file behavior for large documents
Objective
Separate retrieval, validation, transformation, target writes, state management, and error handling into maintainable Martini workflow stages.
Instructions in Martini
- Create reusable workflow logic for common SharePoint resources
- Add correlation identifiers and processing checkpoints
- Use bounded concurrency and batch requests only where appropriate
- Route permanent failures for review without losing retryable work
Objective
Convert SharePoint fields and file metadata into a canonical or target-system model while accounting for SharePoint-specific types.
Instructions in Martini
- Map choice, lookup, person, managed metadata, date, hyperlink, and multi-value fields
- Normalize time zones, null values, filenames, and content types
- Preserve stable SharePoint identifiers and source URLs
- Validate required fields before writing to the target
Objective
Use business keys, conflict policies, permissions, and document rules to determine whether to create, update, skip, archive, or reject data.
Instructions in Martini
- Define create-versus-update behavior using stable IDs or external keys
- Use ETags or conditional updates where concurrent edits matter
- Apply folder naming and duplicate prevention rules
- Define deletion, archival, and missing-resource behavior
Common SharePoint data objects used in integrations
| Object | Typical Use | Common target systems | Martini handling |
|---|---|---|---|
| Sites | Identify SharePoint sites and site collections that contain lists, libraries, pages, and permissions. | Microsoft Teams, Dynamics 365, Salesforce, ServiceNow | Martini retrieves site identifiers and metadata through Graph or SharePoint REST, then uses stable site IDs to scope downstream workflows. |
| Lists | Represent structured SharePoint collections, including custom lists and document libraries. | Salesforce, ServiceNow, Dynamics 365, databases | Martini discovers list schemas, maps columns and content types, and applies validation for choice, lookup, person, and multi-value fields. |
| List items | Represent rows or entries in SharePoint lists, including document-library metadata. | CRM, service platforms, databases, reporting systems | Martini reads paginated items, maps field values to canonical models, and uses item IDs, ETags, and business keys for idempotent writes. |
| Drives | Expose SharePoint document libraries through Microsoft Graph. | Enterprise archives, OneDrive, DocuSign, SAP S/4HANA | Martini resolves drives by site, coordinates file traversal, and persists synchronization state for each library. |
| Drive items | Represent files and folders stored in SharePoint document libraries. | Enterprise content archives, Salesforce, ServiceNow, DocuSign | Martini downloads or uploads content, maps metadata, handles large-file upload behavior, and uses delta queries where supported. |
| Pages | Represent SharePoint site pages and their content. | Microsoft Teams, knowledge applications, publishing systems | Martini uses Graph or SharePoint REST where coverage permits, transforms page-related data, and applies cautious handling for SharePoint-specific features. |
Authentication and security considerations
Microsoft Entra ID and OAuth 2.0
SharePoint Online API access is generally authenticated through Microsoft Entra ID. Martini can use delegated permissions for user-authorized workflows or application permissions for background and server-to-server processing.
Least privilege
Use only the Microsoft Graph and SharePoint permissions required by the workflow. Sites.Selected can restrict application access to explicitly authorized sites, while read-only synchronization should not request write permissions.
Credential protection
Store client credentials, tokens, and configuration through secure Martini environment configuration and secrets management. Separate credentials by environment and limit access to integration operators.
Operational considerations for SharePoint integrations
Throttling and pagination
Microsoft Graph and SharePoint Online can throttle requests. Handle HTTP 429 responses, honor Retry-After, use bounded exponential backoff, limit concurrency, and follow @odata.nextLink for collection responses.
State and idempotency
Persist Site, List, Drive, List item, and Drive item identifiers together with delta links or tokens where supported. Use ETags, stable business keys, and integration state to prevent duplicate writes and manage concurrent updates.
Notifications and reconciliation
SharePoint notifications are resource-specific and subscriptions expire. Include renewal workflows, duplicate handling, follow-up retrieval, and periodic reconciliation so missed or out-of-order notifications do not silently lose changes.
Files and schema changes
Large files may require upload sessions. Account for SharePoint column types, lookup and person values, time zones, nulls, unknown JSON properties, API changes, and differences between SharePoint Online and SharePoint Server.
Why use Martini instead of scripts or point-to-point integrations?
Orchestrate more than API calls
Scripts often combine authentication, pagination, transformation, retries, and target writes in code that is difficult to govern. Martini separates these concerns into workflows, reusable services, APIs, mappings, and secure configuration.
Coordinate multiple synchronization modes
Martini can combine Graph or SharePoint REST consumption with scheduled polling, delta synchronization, supported notifications, file processing, and reconciliation rather than relying on a single fragile trigger.
Maintain operational control
Centralized validation, error handling, retry logic, checkpoints, logging, and deployment configuration make SharePoint integrations easier to troubleshoot and evolve than isolated point-to-point scripts.
Frequently asked questions
SharePoint Online can be integrated through Microsoft Graph REST APIs, SharePoint REST APIs, supported list webhooks and Microsoft Graph change notifications, file and Drive item APIs, delta queries where available, and scheduled synchronization. Microsoft Entra ID OAuth 2.0 provides delegated or application authentication.
Yes. Martini can integrate with SharePoint through Microsoft Graph REST APIs and SharePoint REST APIs, using OAuth 2.0 credentials, workflows, mapping, and business rules. It can also expose an API for supported SharePoint or Microsoft Graph notifications and process SharePoint files through Drive and Drive item APIs.
No. A dedicated SharePoint connector is not required. Martini can consume SharePoint's confirmed Microsoft Graph and SharePoint REST APIs, use supported notification mechanisms, and authenticate through Microsoft Entra ID OAuth 2.0.
Lonti does not charge an additional per-connector or per-vendor fee to integrate SharePoint. The integration is subject to the provisioned capacity of the Martini environment. Separate costs may apply from Microsoft, cloud infrastructure, storage, or other third-party systems based on licensing, usage, and deployment model.
Microsoft Graph REST APIs should generally be evaluated first for new SharePoint Online integrations because they cover Sites, Lists, List items, Drives, and Drive items. SharePoint REST remains useful for SharePoint-specific features or operations with insufficient Graph coverage. Legacy SOAP services should be reserved for specific historical requirements.
Yes, but coverage is partial and resource-specific. SharePoint list webhooks and Microsoft Graph change notifications support selected scenarios. Notifications may not include the full changed object, subscriptions expire, and robust integrations should retrieve the current resource and use renewal and reconciliation workflows.
Martini can use scheduled polling, supported notifications, pagination, and Graph delta queries for selected resources such as Drive items. It persists identifiers, delta state, and checkpoints, then maps SharePoint fields and files into target-system models while applying idempotency, conflict, and deletion rules.
A Martini workflow can handle 401, 403, 404, 409, 412, 429, and transient 5xx responses with validation, bounded retries, exponential backoff, and Retry-After processing. Stable IDs, ETags, business keys, and persisted state support duplicate prevention and concurrency control. Partial batch failures are handled per operation.
Related Martini documentation
APIs
Workflows
Build a maintainable SharePoint integration with Martini
Use Martini to connect SharePoint Online with enterprise applications through Microsoft Graph, SharePoint REST APIs, workflows, notifications, files, and secure OAuth 2.0 configuration.