Ability to copy records between environments

Title

An automated way to copy records and all their associated links and assets between environments.

Introduction

We have multiple Dato environments, including separate environments for production, staging, and UAT, and often need to copy data between these environments. Our process frequently involves creating new records or changing data in the staging and UAT environments for validation before setting up those records in the primary environment. While the “publish” feature allows previewing a draft before publishing, there are scenarios where this feature falls short and cannot be used.

Problem Statement

One major limitation occurs when a new record requires schema changes that haven’t yet been applied to higher environments. Using environments similarly to feature branches is an effective way to gradually roll out new features. However, this means that required fields might not be available in higher environments, or other constraints like previously required or newly deprecated required fields must be unnecessarily populated.

We validate these changes in lower environments and manually reapply them in higher environments once the features are ready to be rolled out and schema migrations have been applied. While copying and pasting blocks helps and somewhat accelerates this task, it remains a cumbersome process prone to human error. This is especially challenging since assets do not get carried over, and editors must navigate linked records in a bottom-top approach to ensure all leaves and lower nodes in the model graph are populated first.

Proposed Solution

It would be extremely beneficial to have an automated way to copy a record and all its links and assets to a different environment. This process could check if existing links and assets are present and reuse those IDs, while creating new records and copying assets for any non-existing links.

In future iterations, environments or projects could be set up with a “strictness” property for this feature. Instead of failing the process altogether, only known fields would be copied over.

Feature Requirements

To simplify implementation, this process can require that the schema for the models and blocks in question be identical for both environments as a prerequisite.

Additional Information

We believe this functionality cannot be achieved by a third-party plugin, but please let us know if we are mistaken and we will investigate further.