Some checks failed
App Prod-Parity E2E Dispatch / dispatch (push) Failing after 10s
CD Storybook UI / build (push) Failing after 3m25s
CD Storybook UI / dispatch (push) Has been skipped
CD deploy main / website-changed-files (push) Successful in 18m8s
CI Agent Skills / changed-files-check (push) Successful in 18m9s
CI Create App E2E minimal / changed-files-check (push) Successful in 24s
CI Create App / changed-files-check (push) Successful in 26s
CI Docs / changed-files-check (push) Successful in 26s
CI Emails / changed-files-check (push) Successful in 28s
CI Example App Hello World / changed-files-check (push) Successful in 23s
CI Front / changed-files-check (push) Has been skipped
CI Example App Postcard / changed-files-check (push) Successful in 27s
CI UI / changed-files-check (push) Has been skipped
CI Utils Test / changed-files-check (push) Successful in 45s
CI Twenty Apps / discover (push) Successful in 1m3s
CD deploy main / deploy-main (push) Failing after 3s
CI Agent Skills / agent-skills-validate (push) Has been skipped
CI Create App / create-app-test (lint) (push) Has been skipped
CI Emails / emails-test (push) Has been skipped
CI Front / front-task (lingui:compile) (push) Has been skipped
CI Front / front-task (lint) (push) Has been skipped
CI Example App Postcard / example-app-postcard (push) Has been skipped
CI UI / ui-task (lint) (push) Has been skipped
CI UI / ui-task (pack-size) (push) Has been skipped
CI UI / ui-task (size) (push) Has been skipped
CI UI / ui-task (test) (push) Has been skipped
CI UI / ui-task (typecheck) (push) Has been skipped
CI Utils Test / utils-test (push) Has been skipped
CI Twenty Apps / ${{ matrix.app.name }} (push) Has been skipped
CI Emails / ci-emails-status-check (push) Successful in 2s
CI Example App Hello World / ci-example-app-hello-world-status-check (push) Successful in 2s
CI Example App Postcard / ci-example-app-postcard-status-check (push) Successful in 3s
CI UI / ui-sb-test (push) Has been skipped
CI Utils Test / ci-utils-test-status-check (push) Successful in 2s
CI Twenty Apps / ci-twenty-apps-status-check (push) Successful in 2s
CI UI / ci-ui-status-check (push) Successful in 2s
CI Desktop / desktop (push) Failing after 1m8s
Push docs to Crowdin / Push documentation to Crowdin (push) Failing after 55s
Push translations to Crowdin / Extract and upload translations (push) Failing after 5s
Push website translations to Crowdin / Extract and upload website translations (push) Failing after 5s
CI Create App / create-app-test (test) (push) Has been skipped
CI Create App / create-app-test (typecheck) (push) Has been skipped
CI Docs / docs-lint (push) Has been skipped
CI Example App Hello World / example-app-hello-world (push) Has been skipped
CI Front / front-task (lingui:extract) (push) Has been skipped
CI Front / front-task (test) (push) Has been skipped
CI Front / front-task (typecheck) (push) Has been skipped
CI UI / ui-sb-build (push) Failing after 1m32s
CI Twenty Apps / ${{ matrix.app.name }} (${{ matrix.server-source }}) (push) Has been skipped
CI Agent Skills / agent-skills-publish (push) Has been skipped
CI Create App / ci-create-app-status-check (push) Successful in 2s
CI Agent Skills / agent-skills-remote-source (push) Has been skipped
CI Create App E2E minimal / create-app-e2e-minimal (push) Has been cancelled
CI E2E Main / e2e-test (push) Has been cancelled
CI Front / front-sb-build (push) Has been cancelled
CI Front / front-build (push) Has been cancelled
CI Create App E2E minimal / ci-create-app-e2e-minimal-status-check (push) Has been cancelled
CI E2E Main / ci-e2e-main-status-check (push) Has been cancelled
CI E2E Main / notify-main-ci-failure (push) Has been cancelled
CI E2E Main / qa-scout-comment (push) Has been cancelled
CI Front / front-sb-test (push) Has been cancelled
CI Front / front-sb-screenshots (push) Has been cancelled
CI Front / ci-front-status-check (push) Has been cancelled
DPA Sub-Processor Sync / sync-subprocessors (push) Failing after 3s
AI Catalog Sync / sync-catalog (push) Failing after 2s
174 lines
6.9 KiB
Plaintext
174 lines
6.9 KiB
Plaintext
---
|
||
title: Migrazione da Soluzioni Self-Hosted a Cloud
|
||
description: Guida passo-passo per migrare la tua istanza Twenty self-hosted verso Twenty Cloud.
|
||
---
|
||
|
||
## Panoramica
|
||
|
||
Questa guida ti accompagna nella migrazione dei tuoi dati da un'istanza Twenty self-hosted a Twenty Cloud. Il processo prevede la configurazione dello spazio di lavoro cloud, l'esportazione dei dati e la loro reimportazione.
|
||
|
||
<Note>Le viste, i flussi di lavoro e i ruoli devono essere ricreati manualmente dopo la migrazione. Pianifica il tempo per questo lavoro di configurazione.</Note>
|
||
|
||
## Passaggio 1: Crea il tuo spazio di lavoro cloud
|
||
|
||
1. Vai su [app.twenty.com](https://app.twenty.com) e crea un nuovo spazio di lavoro
|
||
2. Completa la procedura guidata iniziale
|
||
3. Annota l'URL del tuo nuovo spazio di lavoro
|
||
|
||
## Passaggio 2: Ricrea il tuo modello dati
|
||
|
||
Prima di importare i dati, ricrea i tuoi oggetti e campi personalizzati:
|
||
|
||
1. Vai a **Impostazioni → Modello dati** nella tua istanza cloud
|
||
2. Crea oggetti personalizzati che corrispondano alla tua configurazione self-hosted
|
||
3. Aggiungi campi personalizzati agli oggetti standard e personalizzati
|
||
4. Configura le impostazioni dei campi (univoche, obbligatorie, ecc.)
|
||
|
||
<Note>Fai degli screenshot del tuo modello dati self-hosted come riferimento oppure tieni entrambe le istanze aperte affiancate.</Note>
|
||
|
||
## Passaggio 3: Invita tutti gli utenti
|
||
|
||
<Warning>
|
||
**Critico: invita gli utenti PRIMA di importare i dati.**
|
||
|
||
Gli utenti devono accettare i loro inviti prima di importare qualsiasi record che faccia riferimento a loro (come i campi Account Owner). Se gli utenti non esistono ancora, tali relazioni non possono essere mappate.
|
||
</Warning>
|
||
|
||
1. Vai a **Impostazioni → Membri** nella tua istanza cloud
|
||
2. Invita tutti i membri del team che avevano account sull'istanza self-hosted
|
||
3. **Attendi che tutti accettino** il loro invito
|
||
4. Verifica che tutti gli utenti compaiano nell'elenco Membri
|
||
|
||
## Passaggio 4: Esporta i dati dall'istanza self-hosted
|
||
|
||
Esporta ogni oggetto dalla tua istanza self-hosted:
|
||
|
||
1. Vai a ciascun oggetto (Aziende, Persone, Opportunità, ecc.)
|
||
2. Configura la vista per mostrare **tutte le colonne** che vuoi migrare
|
||
3. Fai clic su **⋮ → Esporta vista**
|
||
4. Salva ogni file CSV con un nome chiaro (ad es., `companies-export.csv`)
|
||
|
||
**Esporta in questo ordine** (come riferimento durante l'importazione):
|
||
|
||
1. Aziende
|
||
2. Persone
|
||
3. Opportunità
|
||
4. Oggetti personalizzati (seguendo le loro dipendenze)
|
||
5. Attività, Note
|
||
|
||
## Passaggio 5: Aggiorna i riferimenti ai membri dello spazio di lavoro
|
||
|
||
I CSV esportati contengono gli ID utente della tua istanza self-hosted. Questi ID non corrisponderanno alla tua istanza cloud, quindi devi sostituirli con le email.
|
||
|
||
**Per ogni file CSV con riferimenti utente (Owner, Assignee, ecc.):**
|
||
|
||
1. Apri il CSV in un'applicazione per fogli di calcolo
|
||
2. Aggiungi una nuova colonna accanto a ciascuna colonna di ID utente (ad es., `accountOwnerEmail` accanto a `accountOwnerId`)
|
||
3. Compila l'**indirizzo email** di ciascun utente
|
||
4. Puoi eliminare la vecchia colonna ID oppure lasciarla (verrà ignorata durante l'importazione)
|
||
|
||
**Esempio:**
|
||
|
||
Prima:
|
||
|
||
```csv
|
||
name,domain,accountOwnerId
|
||
Acme Corp,https://acme.com,old-uuid-123
|
||
```
|
||
|
||
Dopo:
|
||
|
||
```csv
|
||
name,domain,accountOwnerEmail
|
||
Acme Corp,https://acme.com,john@yourcompany.com
|
||
```
|
||
|
||
<Note>Usa gli stessi indirizzi email che gli utenti hanno usato per accettare l'invito allo spazio di lavoro cloud.</Note>
|
||
|
||
## Passaggio 6: Pianifica l'ordine di importazione
|
||
|
||
Importa i file nel giusto ordine per mantenere le relazioni:
|
||
|
||
1. **Aziende** per prime (nessuna dipendenza)
|
||
2. **Persone** dopo (collegate alle Aziende)
|
||
3. **Opportunità** al terzo posto (collegate ad Aziende e Persone)
|
||
4. **Oggetti personalizzati** (seguendo le loro dipendenze)
|
||
5. **Attività e Note** per ultime (collegate ad altri record)
|
||
|
||
Consulta [Come importare le relazioni](/l/it/user-guide/data-migration/how-tos/import-relations-between-objects-via-csv) per i dettagli su come mantenere le relazioni.
|
||
|
||
## Passaggio 7: Importa nel cloud
|
||
|
||
Per ogni file CSV, in ordine:
|
||
|
||
1. Vai all'oggetto nella tua istanza cloud
|
||
2. Fai clic su **⋮ → Importa record**
|
||
3. Carica il file CSV
|
||
4. Mappa le colonne ai campi:
|
||
* Mappa le colonne delle email degli utenti ai campi relazione appropriati
|
||
* Mappa le altre colonne come al solito
|
||
5. Controlla e correggi eventuali errori
|
||
6. Conferma l'importazione
|
||
7. Verifica alcuni record prima di passare al file successivo
|
||
|
||
## Passaggio 8: Ricrea la configurazione
|
||
|
||
Dopo aver importato i dati, ricrea manualmente:
|
||
|
||
### Viste
|
||
|
||
* Ricrea le viste salvate con filtri, ordinamenti e configurazioni delle colonne
|
||
* Configura eventuali viste kanban o calendario
|
||
|
||
### Flussi di Lavoro
|
||
|
||
* Ricrea le automazioni in **Impostazioni → Flussi di lavoro**
|
||
* Testa ogni flusso di lavoro prima di farci affidamento
|
||
|
||
### Ruoli e permessi
|
||
|
||
* Configura i ruoli in **Impostazioni → Membri → Ruoli**
|
||
* Assegna gli utenti ai ruoli appropriati
|
||
|
||
### Integrazioni
|
||
|
||
* Riconnetti la sincronizzazione di email e calendario per ogni utente
|
||
* Riconfigura eventuali integrazioni API con nuove chiavi API
|
||
|
||
## Lista di Verifica Post-Migrazione
|
||
|
||
<Check>Tutti i dati importati correttamente</Check>
|
||
<Check>Relazioni tra oggetti funzionanti correttamente</Check>
|
||
<Check>Assegnazioni utente (Owner, Assignee) mappate correttamente</Check>
|
||
<Check>Viste ricreate</Check>
|
||
<Check>Flussi di lavoro ricreati e testati</Check>
|
||
<Check>Ruoli e permessi configurati</Check>
|
||
<Check>Sincronizzazione email/calendario riconnessa</Check>
|
||
<Check>Integrazioni API aggiornate con nuove chiavi</Check>
|
||
|
||
## FAQ
|
||
|
||
<AccordionGroup>
|
||
<Accordion title="Posso migrare i flussi di lavoro automaticamente?">
|
||
Al momento no. I flussi di lavoro devono essere ricreati manualmente nella tua istanza cloud.
|
||
</Accordion>
|
||
|
||
<Accordion title="Che cosa succede agli allegati e alle immagini?">
|
||
Gli allegati non sono inclusi nelle esportazioni CSV. Dovrai ricaricare manualmente gli allegati, migrarli tramite API oppure contattare il nostro team per assistenza con migrazioni di grandi dimensioni.
|
||
</Accordion>
|
||
|
||
<Accordion title="Posso mantenere entrambe le istanze operative durante la migrazione?">
|
||
Sì, consigliamo di mantenere attiva la tua istanza self-hosted finché non avrai verificato che la migrazione al cloud sia completa. Fai solo attenzione a non creare nuovi dati in entrambi gli ambienti.
|
||
</Accordion>
|
||
|
||
<Accordion title="Cosa succede se un utente non ha ancora accettato l'invito?">
|
||
I record che fanno riferimento a quell'utente non verranno importati oppure la relazione risulterà vuota. Assicurati che tutti gli utenti accettino gli inviti prima di importare i dati.
|
||
</Accordion>
|
||
</AccordionGroup>
|
||
|
||
## Hai Bisogno di Aiuto?
|
||
|
||
<Tip>
|
||
Stai eseguendo la migrazione di uno spazio di lavoro grande o complesso? [Trova un partner Twenty certificato](https://twenty.com/partners/list?categories=HOSTING\&ref=docs-migrate-cloud) per gestire l’intera migrazione end-to-end. *(Oppure coinvolgi il nostro team: [contact@twenty.com](mailto:contact@twenty.com).)*
|
||
</Tip>
|