How to Merge Two Zendesk Accounts: The Technical Migration Guide
A technical guide to SharePoint to Confluence migrations, covering API limits, export formats, mapping rules, internal link rewriting, and cutover strategies.
Planning a migration?
Get a free 30-min call with our engineers. We'll review your setup and map out a custom migration plan — no obligation.
Schedule a free call- 1,500+ migrations completed
- Zero downtime guaranteed
- Transparent, fixed pricing
- Project success responsibility
- Post-migration support included
There is no native "export to Confluence" button in SharePoint. If you are moving your organization's knowledge base, intranet, or document libraries from Microsoft SharePoint to Atlassian Confluence, you are looking at a complex data transformation project: extracting pages, documents, and permissions from one ecosystem and importing them into another using APIs, third-party tools, or a managed service.
This guide covers the technical methods, API constraints, data-loss risks, and preparation steps for a SharePoint-to-Confluence migration — so you can pick the approach that matches your volume, timeline, and risk tolerance.
Overview: when to choose professional migration
Most organizations attempt a manual copy-paste for small wikis, but quickly hit a wall when dealing with hundreds of pages, nested folders, and broken internal links. You should consider a professional SharePoint to Confluence migration service provider when:
- Volume and complexity: You have thousands of pages, massive document libraries, and deep folder hierarchies.
- Historical fidelity: You need to preserve version history, original author attribution, and accurate creation timestamps.
- Security and access: You have complex permission structures (Active Directory groups mapped to SharePoint groups) that must translate accurately to Confluence space permissions.
- Business continuity: You cannot afford weeks of downtime, broken internal linking, or manual cleanup.
What breaks during a SharePoint-to-Confluence migration
SharePoint and Confluence solve fundamentally different problems, and their data models reflect that. SharePoint is a document management system with web-part-based pages; Confluence is a collaborative wiki.
| Data area | What SharePoint gives you | What goes wrong in Confluence |
|---|---|---|
| Page content | HTML/ASPX or Graph API JSON | Must be strictly converted to Confluence Storage Format (XHTML); invalid tags cause import failures. |
| Attachments | Files in Document Libraries | Must be explicitly downloaded from SharePoint and re-uploaded as page attachments via the Confluence API. |
| Internal links | Absolute URLs to .aspx pages |
Break entirely unless programmatically rewritten to point to the new Confluence page IDs. |
| Permissions | Item-level inheritance | Confluence uses Space permissions and Page restrictions; exact mapping requires careful group translation. |
| Version history | Full version history via API | Requires sequential API calls to recreate versions; timestamps can be tricky to spoof without admin endpoints. |
Troubleshooting and known feature mismatches
- Web Parts vs. Macros: SharePoint web parts (like document rollups, custom lists, or hero web parts) do not have direct 1:1 equivalents in Confluence. During migration, these usually degrade to static text, tables, or are dropped entirely.
- Page Titles: Confluence requires unique page titles within a single space. SharePoint allows duplicate page names if they reside in different folders. You must append prefixes or flatten structures to avoid collision errors during import.
- Inline Images: Images embedded in SharePoint pages reference Microsoft CDNs. If not explicitly downloaded and re-hosted as Confluence attachments, they will break as soon as the SharePoint site is decommissioned.
SharePoint export options and constraints
Extracting data from SharePoint requires navigating Microsoft's API limits, authentication models, and throttling mechanisms.
- Microsoft Graph API: The modern standard for programmatic access. However, Graph API limits pagination (often 1,000 items per request) and heavily throttles bulk requests, returning
429 Too Many Requestserrors. Furthermore, ingestion or extraction scenarios relying on Graph APIs are effectively constrained by a ~250 MB upload/download limit without complex chunking logic. - PnP PowerShell: A common choice for scripting metadata extraction and file downloads. It is effective for smaller sites but can be prohibitively slow for massive document libraries.
- Export Formats: You are typically extracting HTML content, binary files, and JSON metadata. The raw HTML exported from SharePoint contains Microsoft-specific namespace tags that must be heavily sanitized.
Rate limit trap: Microsoft aggressively throttles SharePoint API requests based on tenant-level and application-level limits. Your extraction scripts must implement robust exponential backoff and retry logic, or your export will fail halfway through.
Confluence import format and limits
Writing data into Confluence Cloud requires the Confluence REST API v2.
- Confluence Storage Format: Confluence does not accept raw HTML. You must convert SharePoint content into Confluence Storage Format (an XML/XHTML derivative). If your payload contains unclosed tags or unsupported CSS inline styles, the API will reject the page creation outright.
- API Limits: Confluence Cloud REST APIs are strictly rate-limited. Depending on the endpoint, limits can range from 5 requests per minute for job creation to 6,000 requests per minute for standard operations. Exceeding this triggers 429 errors.
- Timestamps and Authors: To preserve historical
created_atdates and original authors, you must map Microsoft Entra ID (Azure AD) users to Atlassian Account IDs.
# Simplified Confluence import payload (pseudocode)
payload = {
"spaceId": target_space_id,
"status": "current",
"title": sanitized_sharepoint_title,
"parentId": mapped_parent_page_id,
"body": {
"representation": "storage",
"value": "<p>Converted XHTML content here</p><ac:image><ri:attachment ri:filename='image.png'/></ac:image>"
}
}
target_api.create_page(payload)Mapping strategy: sites → spaces, pages, attachments, metadata
Before moving a single byte, you must define the translation layer.
- Sites to Spaces: A SharePoint Site Collection or Subsite typically becomes a Confluence Space.
- Folders to Page Trees: SharePoint Document Libraries use folders. Confluence uses a nested hierarchy of parent and child pages. Folders must be converted into empty "container" pages in Confluence to maintain the hierarchy.
- Attachments: Files in SharePoint must be mapped to their corresponding Confluence page, downloaded, and uploaded via the Attachments API.
- Metadata: SharePoint custom columns (metadata) do not exist natively in Confluence. They must be appended to the page content as a table or injected using Page Properties macros.
Permissions & groups mapping
SharePoint's granular, item-level permissions are notoriously difficult to replicate. Confluence relies on Space Permissions and Page Restrictions.
- Export identities: Export all Azure AD / SharePoint groups and users.
- Provision targets: Provision matching groups in Atlassian Access / Confluence.
- Map access: Map SharePoint site permissions to Confluence Space permissions.
- Apply restrictions: Apply read/write restrictions to specific Confluence pages based on SharePoint folder/item permissions.
Inheritance mismatch: Confluence restricts visibility down the tree. If you restrict a parent page, all child pages are restricted. You cannot grant access to a child page if the user does not have access to the parent. SharePoint allows this. You may need to flatten your hierarchy to accommodate this security model.
Internal link rewriting and redirects
If Page A links to Page B in SharePoint, that link will be dead in Confluence. Cross-references need a programmatic, two-pass approach:
- Import and map: Import all pages and store a mapping table of
SharePoint_URL→Confluence_Page_ID. - Second pass: Run a second pass over the newly created Confluence pages, parsing the XHTML, finding old SharePoint URLs, and replacing them with Confluence
ac:linkmacro structures.
Testing, sample migrations, checksums and validation
Never migrate blindly. Easy pages tell you nothing.
- Sample Migration: Move a complex SharePoint site with nested folders, custom web parts, large attachments, and overlapping permissions. Compare the source vs. target record by record.
- Validation: Run automated scripts to compare page counts, attachment checksums, and broken link reports between SharePoint and Confluence.
- UAT: Have power users verify that permissions restrict access correctly and that tables and images render as expected.
Cutover strategies: background sync vs big bang
- Big Bang: You freeze SharePoint on Friday, run the migration scripts over the weekend, and agents log into Confluence on Monday. This works for small instances (<10,000 pages) but carries high risk if the import takes longer than expected.
- Background Sync (Delta): For large enterprises, a managed migration service will do an initial bulk sync, then run delta syncs to catch pages created or edited in SharePoint during the migration window. This enables zero downtime.
How ClonePartner handles SharePoint to Confluence migrations
We have handled complex data migrations for enterprise clients, navigating the exact API limits and formatting constraints detailed above. Here is what we do:
- Full fidelity conversion: We parse SharePoint HTML and convert it strictly to Atlassian Storage Format, preserving tables, text formatting, and inline images.
- Guaranteed link rewriting: We map every URL and run secondary passes to ensure internal links resolve correctly in the new Confluence spaces.
- Continuous delta sync: Our migration scripts run incremental exports on a schedule. Your team keeps working in SharePoint until the moment of cutover. Zero downtime.
- Permission mapping: We translate SharePoint groups to Atlassian groups securely, mapping item-level permissions to Confluence page restrictions.
The difference between a self-serve tool and a managed service is accountability. We do not hand you a mapping wizard and wish you luck. We assign a dedicated engineer to own the outcome.
Frequently Asked Questions
- Can I migrate directly from SharePoint to Confluence?
- There is no native migration tool provided by Microsoft or Atlassian for this direction. You must use custom API scripts, third-party tools, or a managed migration service to extract SharePoint data and convert it into Confluence's proprietary storage format.
- How do I keep internal links working after migration?
- Internal links will break unless explicitly rewritten. A robust migration requires a two-pass approach: importing all pages to generate new Confluence IDs, building a mapping table, and then running a second pass to update the links in the page content.
