Environments and migrations > Introduction

    Introduction

    Traditional CMSs often treat content as a one-off effort, which makes content management difficult to fit into existing development lifecycles.

    Content environments make it easier for your development team to manage and maintain the content structure once your content has been published. You can think of environments as being like code branches: they're great for testing, development and pre-production.

    In short, environments ensure quick turnaround times and flexibility for developers — without interrupting the editorial workflow.

    What's an environment?

    By default, every project has one environment, called the primary environment, which is meant to be used for the regular editorial workflow. Additionally, developers can create multiple sandbox environments to safely test and experiment with changes in the content.

    Sandbox environments start out as exact copies of one of the existing environments (i.e., the primary one). The process of creating a new sandbox starting from an existing environment is called forking.

    Each environment is identified by a name (i.e., master) and stores the following information:

    • Models

    • Records

    • Uploads

    • Plugins

    • The content navigation bar

    • Configuration (locales, timezone settings, appearance, SEO preferences)

    When making changes to any of the aforementioned entities in any environment, including the primary environment, the data in all other environments isn’t affected and stays the same.

    Creating a new sandbox environment

    Inside the Settings > Environments section you can manage all your project's environments. To create a new sandbox starting from an existing environment, just click on the contextual menu > Fork, and choose a name for the new environment.

    DatoCMS will perform a deep copy of all the information contained inside the source and transfer it to the new sandbox.

    Once there's at least one sandbox environment, developers will be able to switch environments using the top bar panel.

    Editors will never see this panel thanks to a reduced set of permissions, and will continue their editorial workflow on the primary environment as usual.

    Promotion of sandbox environments

    At any time you can promote a sandbox environment to become the new primary environment. The old primary environment will be demoted to a sandbox environment, and content editors will immediately see the interface refresh. From that moment, they will only be able to see and make changes to the new primary environment.

    To be updated when a sandbox gets promoted, you can setup a webhook listening to the "Environment Promote" event.

    Renaming environments

    At any time you can change the name of an existing environment. This change won't impact those working on the CMS:

    To be updated when a sandbox gets renamed, you can setup a webhook listening to the "Environment Update" event.

    Forcing use of sandbox environments

    Changes to the primary environments can be potentially disruptive, so we give you the ability to block any user from editing the primary schema or configuration.

    You can do that by going to Project settings > Global properties and enabling "Force the use of sandbox environments". If enabled, no user can edit the primary environment and make changes to its Schema and Configuration, regardless of their role.