183d034716
Reorganizing by Feature sections Capabilities folders to give an overview of each feature How-Tos folders to give guidance for advanced customizations Reorganized the Developers section as well, moving the API sub section there added some new visuals and videos to illustrate the How-Tos articles checked the typos, the links and added a section at the end of the doc.json file to redirect existing links to the new ones (SEO purpose + continuity of the user experience) What I have not updated is the "l" folder that, per my understanding, contains the translation of the User Guide - that I only edited in English <!-- CURSOR_SUMMARY --> --- > [!NOTE] > <sup>[Cursor Bugbot](https://cursor.com/dashboard?tab=bugbot) is generating a summary for commit 5301502a32856e5b45d7ef30253fa7db6dc55233. Configure [here](https://cursor.com/dashboard?tab=bugbot).</sup> <!-- /CURSOR_SUMMARY --> --------- Co-authored-by: cubic-dev-ai[bot] <191113872+cubic-dev-ai[bot]@users.noreply.github.com> Co-authored-by: github-actions <github-actions@twenty.com> Co-authored-by: Abdul Rahman <ar5438376@gmail.com> Co-authored-by: Félix Malfait <felix.malfait@gmail.com>
166 lines
5.8 KiB
Plaintext
166 lines
5.8 KiB
Plaintext
---
|
|
title: Migrating from Self-Hosted to Cloud
|
|
description: Step-by-step guide to migrate your Twenty self-hosted instance to Twenty Cloud.
|
|
---
|
|
|
|
## Overview
|
|
|
|
This guide walks you through migrating your data from a Twenty self-hosted instance to Twenty Cloud. The process involves setting up your cloud workspace, exporting your data, and re-importing it.
|
|
|
|
<Note>Views, workflows, and roles must be recreated manually after migration. Plan time for this configuration work.</Note>
|
|
|
|
## Step 1: Create Your Cloud Workspace
|
|
|
|
1. Go to [app.twenty.com](https://app.twenty.com) and create a new workspace
|
|
2. Complete the initial setup wizard
|
|
3. Note your new workspace URL
|
|
|
|
## Step 2: Recreate Your Data Model
|
|
|
|
Before importing data, recreate your custom objects and fields:
|
|
|
|
1. Go to **Settings → Data Model** in your cloud instance
|
|
2. Create custom objects that match your self-hosted setup
|
|
3. Add custom fields to standard and custom objects
|
|
4. Configure field settings (unique, required, etc.)
|
|
|
|
<Note>Take screenshots of your self-hosted data model for reference, or keep both instances open side by side.</Note>
|
|
|
|
## Step 3: Invite All Users
|
|
|
|
<Warning>
|
|
**Critical: Invite users BEFORE importing data.**
|
|
|
|
Users must accept their invitations before you import any records that reference them (like Account Owner fields). If users don't exist yet, those relations cannot be mapped.
|
|
</Warning>
|
|
|
|
1. Go to **Settings → Members** in your cloud instance
|
|
2. Invite all team members who had accounts on self-hosted
|
|
3. **Wait for everyone to accept** their invitation
|
|
4. Verify all users appear in your Members list
|
|
|
|
## Step 4: Export Data from Self-Hosted
|
|
|
|
Export each object from your self-hosted instance:
|
|
|
|
1. Navigate to each object (Companies, People, Opportunities, etc.)
|
|
2. Configure the view to show **all columns** you want to migrate
|
|
3. Click **⋮ → Export view**
|
|
4. Save each CSV file with a clear name (e.g., `companies-export.csv`)
|
|
|
|
**Export in this order** (for reference when importing):
|
|
1. Companies
|
|
2. People
|
|
3. Opportunities
|
|
4. Custom objects (following their dependencies)
|
|
5. Tasks, Notes
|
|
|
|
## Step 5: Update Workspace Member References
|
|
|
|
The exported CSVs contain user IDs from your self-hosted instance. These IDs won't match your cloud instance, so you need to replace them with emails.
|
|
|
|
**For each CSV file with user references (Owner, Assignee, etc.):**
|
|
|
|
1. Open the CSV in a spreadsheet application
|
|
2. Add a new column next to each user ID column (e.g., `accountOwnerEmail` next to `accountOwnerId`)
|
|
3. Fill in the **email address** of each user
|
|
4. You can delete the old ID column or leave it (it will be skipped during import)
|
|
|
|
**Example:**
|
|
|
|
Before:
|
|
```csv
|
|
name,domain,accountOwnerId
|
|
Acme Corp,https://acme.com,old-uuid-123
|
|
```
|
|
|
|
After:
|
|
```csv
|
|
name,domain,accountOwnerEmail
|
|
Acme Corp,https://acme.com,john@yourcompany.com
|
|
```
|
|
|
|
<Note>Use the same email addresses that users used to accept their cloud workspace invitation.</Note>
|
|
|
|
## Step 6: Plan Your Import Order
|
|
|
|
Import files in the correct order to maintain relationships:
|
|
|
|
1. **Companies** first (no dependencies)
|
|
2. **People** second (link to Companies)
|
|
3. **Opportunities** third (link to Companies and People)
|
|
4. **Custom objects** (following their dependencies)
|
|
5. **Tasks and Notes** last (link to other records)
|
|
|
|
See [How to Import Relations](/user-guide/data-migration/how-tos/import-relations-between-objects-via-csv) for details on maintaining relationships.
|
|
|
|
## Step 7: Import to Cloud
|
|
|
|
For each CSV file, in order:
|
|
|
|
1. Navigate to the object in your cloud instance
|
|
2. Click **⋮ → Import records**
|
|
3. Upload the CSV file
|
|
4. Map columns to fields:
|
|
- Map user email columns to the appropriate relation fields
|
|
- Map other columns as usual
|
|
5. Review and fix any errors
|
|
6. Confirm the import
|
|
7. Verify a few records before proceeding to the next file
|
|
|
|
## Step 8: Recreate Configuration
|
|
|
|
After importing data, manually recreate:
|
|
|
|
### Views
|
|
- Recreate saved views with filters, sorts, and column configurations
|
|
- Set up any kanban or calendar views
|
|
|
|
### Workflows
|
|
- Recreate automations in **Settings → Workflows**
|
|
- Test each workflow before relying on it
|
|
|
|
### Roles and Permissions
|
|
- Configure roles in **Settings → Roles**
|
|
- Assign users to appropriate roles
|
|
|
|
### Integrations
|
|
- Reconnect email and calendar sync for each user
|
|
- Reconfigure any API integrations with new API keys
|
|
|
|
## Post-Migration Checklist
|
|
|
|
<Check>All data imported successfully</Check>
|
|
<Check>Relations between objects working correctly</Check>
|
|
<Check>User assignments (Owner, Assignee) mapped correctly</Check>
|
|
<Check>Views recreated</Check>
|
|
<Check>Workflows recreated and tested</Check>
|
|
<Check>Roles and permissions configured</Check>
|
|
<Check>Email/calendar sync reconnected</Check>
|
|
<Check>API integrations updated with new keys</Check>
|
|
|
|
## FAQ
|
|
|
|
<AccordionGroup>
|
|
<Accordion title="Can I migrate workflows automatically?">
|
|
Not currently. Workflows must be recreated manually in your cloud instance.
|
|
</Accordion>
|
|
|
|
<Accordion title="What about file attachments and images?">
|
|
File attachments are not included in CSV exports. You'll need to re-upload any attachments manually, migrate them via API or contact our team for assistance with large migrations.
|
|
</Accordion>
|
|
|
|
<Accordion title="Can I keep both instances running during migration?">
|
|
Yes, we recommend keeping your self-hosted instance running until you've verified the cloud migration is complete. Just be careful not to create new data in both places.
|
|
</Accordion>
|
|
|
|
<Accordion title="What if a user hasn't accepted their invitation yet?">
|
|
Records referencing that user will fail to import or the relation will be empty. Ensure all users accept invitations before importing data.
|
|
</Accordion>
|
|
</AccordionGroup>
|
|
|
|
## Need Help?
|
|
|
|
For complex migrations or large datasets, contact us at [contact@twenty.com](mailto:contact@twenty.com) or explore our [Implementation Services](/user-guide/getting-started/capabilities/implementation-services).
|
|
|