Snapshots specify what combination of component versions you deploy together. They are models you create before deploying the application. A snapshot specifies the exact version for each component in the application. When a snapshot is created, Serena Release Automation gathers together information about the application, including the component versions, for a given environment. Typically, the snapshot is generated in an environment that has no approval gates – called an uncontrolled environment. For most users, the snapshot is pushed through the pipeline. Typically, one of the environment will always remain uncontrolled to allow for snapshots. When a successful deployment has been run in the uncontrolled environment, a snapshot is created based on the application's state within the environment: thus capturing the different versions of the components at that time. As the application moves through various testing environments, for example, Serena Release Automation ensures that the exact versions (bit for bit) are used in every environment. Once all the appropriate stages and approvals for a snapshot are complete, the snapshot is pushed to production.