← All articles
Document Management
Drupal ↔ SharePoint Document Library Connector
Enable bi-directional file sync between Drupal and SharePoint via RESTful API with custom field widgets, Views integration, and secure file permissions.
Published January 15, 2024
drupalsharepointdocument-managementmicrosoft-graphfile-synccollaboration
Overview
The Drupal SharePoint Document Library Connector provides a powerful bridge between your Drupal content management system and SharePoint Online. This integration enables content editors to access, manage, and embed SharePoint documents directly within Drupal while maintaining SharePoint’s robust permission and versioning systems.
Features
- Bi-directional file synchronization
- Custom Media field widget for SharePoint files
- Drupal Views integration for document listings
- SharePoint permission mapping to Drupal roles
- Document version control and history
- Metadata synchronization
- Search integration with SharePoint search
- Real-time webhook notifications for file changes
Technical Details
Technologies: Microsoft Graph API, SharePoint REST API, Drupal Media module, Drupal Field API, Drupal Views, OAuth 2.0
Requirements:
- Drupal 9.x or 10.x with Media module
- SharePoint Online subscription
- Azure AD app registration with Graph API permissions
- Files.ReadWrite.All and Sites.ReadWrite.All permissions
- Drupal Views and Field modules enabled
API Endpoints:
List files: GET /sites/{site-id}/drives/{drive-id}/items
Upload file: PUT /sites/{site-id}/drives/{drive-id}/items/{item-id}/content
Download file: GET /sites/{site-id}/drives/{drive-id}/items/{item-id}/content
Get permissions: GET /sites/{site-id}/drives/{drive-id}/items/{item-id}/permissions
Implementation
- Configure Azure AD app with SharePoint permissions
- Create custom Drupal module for SharePoint integration
- Implement Graph API client service
- Create custom field type for SharePoint file references
- Build field widget for file picker interface
- Implement Views plugin for SharePoint document queries
- Set up webhook endpoints for real-time sync
- Configure permission mapping between platforms
- Implement caching layer for API responses
- Add comprehensive error handling and logging
<?php
// Example: SharePoint file field formatter
namespace Drupal\sharepoint_integration\Plugin\Field\FieldFormatter;
use Drupal\Core\Field\FieldItemListInterface;
use Drupal\Core\Field\FormatterBase;
/**
* @FieldFormatter(
* id = "sharepoint_file_link",
* label = @Translation("SharePoint File Link"),
* field_types = {"sharepoint_file"}
* )
*/
class SharePointFileLinkFormatter extends FormatterBase {
public function viewElements(FieldItemListInterface $items, $langcode) {
$elements = [];
foreach ($items as $delta => $item) {
$file_id = $item->file_id;
$file_url = $this->getSharePointFileUrl($file_id);
$elements[$delta] = [
'#type' => 'link',
'#title' => $item->file_name,
'#url' => Url::fromUri($file_url),
'#attributes' => [
'target' => '_blank',
'class' => ['sharepoint-document-link'],
],
];
}
return $elements;
}
protected function getSharePointFileUrl($file_id) {
$graph_client = \Drupal::service('sharepoint_integration.graph_client');
return $graph_client->getFileWebUrl($file_id);
}
}
Use Cases
- Corporate intranets with centralized document management
- Project collaboration sites requiring document versioning
- Compliance-heavy industries needing audit trails
- Multi-team organizations with complex permission requirements
- Knowledge bases integrating multiple content sources
Benefits
- Centralized document storage in SharePoint
- Leverage SharePoint’s enterprise-grade version control
- Maintain single source of truth for documents
- Seamless user experience within Drupal interface
- Reduced storage costs on Drupal servers
- Enhanced collaboration with Office 365 users
- Automated compliance and retention policies