Transfer Existing Hasura Cloud Project to a New Project
Introduction
To transfer a project you will have to create a new Hasura Project and configure it with the same Hasura Metadata and other configuration as in the previous project.
The following is a guide to achieve this.
Step 1: Export Metadata from existing project
See exporting metadata to get a copy of the current Hasura Metadata on your project.
Do ensure no further changes are made to the Hasura Metadata post this.
Step 2: Create a new Cloud project with the same configuration
See Step 1
of creating projects to create a new Hasura Cloud project.
After project creation, update the Hasura Cloud configuration of the new project with the same configuration as the earlier project. i.e. add the same ENV vars, custom domains, collaborators, billing, etc.
Step 3: Apply the exported Metadata to the new project
See applying metadata to apply the earlier exported Metadata to the new project.
The new project should now be generating the same GraphQL API as the earlier project.
Step 4: Delete the earlier project
See deleting projects to delete the earlier project.
Optional steps
If you are using Hasura Migrations on your project, please mark all existing Migrations as applied on the new project using the following Hasura CLI command:
hasura migrate apply --skip-execution --endpoint <new-project-endpoint> --admin-secret <new-project-admin-secret> --all-databases
You can rename your new project to the same name as the earlier project if you wish.
If you haven't renamed your new project or set up a custom domain for your project, you might want to update any clients consuming the GraphQL API to point to the new project's GraphQL endpoint.
Zero-downtime transfer
To achieve a zero-downtime transfer, you will need to have a custom domain attached to your Cloud project. Once the new project is set up identically as the old one, you can update the DNS entries for your custom domain to the new project to have a seamless transfer of traffic to the new project.
If you simply want to avoid updating your clients with the new project's API endpoint, you can simply rename your new project with the same name as the earlier project. This will cause a short downtime of your API after you delete your old project until you rename the new one.
Caveats
You will lose the following data from your earlier project in the process:
- all existing scheduled events
- all existing async actions
- past invocation logs of cron triggers
If you would like these to be transferred to the new project as well please get in touch with support regarding this before deleting the old project.