Deployments are what we used to call Migrations. They automate the process of moving files from server to server or from a prebuilt set of files to a server. They will often involve migrating data from a previous version of a file into a new version of a file, but they don't have to.
Deployments can be used to migrate data onto a new version of your schema, to install new files, to replace existing files with new versions.
The destination server will then run the deployment immediately or at a scheduled time (configured in the deployment payload).
Deployments have a source and a destination. The source is the server or location where the source files are located. The destination is the server where the files will be deployed to. The destination will be the server where OttoFMS runs the deployment, and the files will be fetched from the source.
The source and the destination can be the same server. For example, you can migrate a file from file A to file B on the same server. If using the same server, ensure that you are not trying to migrate a file onto itself. This will cause the deployment to fail.
The source can also be a prebuilt set of files from a URL. This can be used to run a deployment from a public build.
A backup is made of all files in the deployment. If any part of the deployment fails, the backups are restored, and the deployment is aborted. This ensures that the server is always in a consistent state where either all the files deployed successfully or none of them did.
OttoFMS leverages the FileMaker Server's built-in scheduling to run deployments at a scheduled time. When you configure a deployment to run via schedule, OttoFMS will create a FileMaker Server schedule that triggers OttoFMS on the server to run the deployment. This technique does not require the OttoDeploy file to be hosted on the server that is running the deployment.
All deployments use a Build as the source of the files that are being moved onto a destination server. For simple deployments, a build is created for you automatically. For advanced use cases, read on in the next section to learn more about builds.