Recurring Deployments

Is it possible to schedule a recurring deployment (e.g., weekly)?

Hello Dave,

Currently this is not possible, however it is a feature we are planning on adding to the system.

Do you mind me asking what you’re planning on running as a recurring deployment? We’re still working through the use cases for this feature.


I also like the functionality to have recurring deployments. Our use case is a client where every Monday night at 9:15pm they have a scheduled outage. We push the latest version of the system we’ve been working on at that time. We know we have to have all changes ready to go by then so we develop accordingly. With Ottov3, a scheduled deployment would create a scheduled script that referenced Migration ID and that script would remain after the migration. We just set the scheduled deployment script Otto created in the FM Admin Console to kick off every Monday night. If for some reason we had to skip a week we would just adjust the schedule to not run till the next week. That system worked very well for us.

In Otto4, it looks like it still creates a scheduled script but that script is calling a system script and then the scheduled script is deleted after the migration is complete so we lose that workaround we had in v3.

Thanks for all the feedback. It is very helpful.

We will be adding this in the near future. We are pretty sure we can improve on what was available in version 3.

Stay tuned


1 Like

We do also use/need recurring deployments.
First of all during a development process (Dev → Staging), where we migrate every night into a staging/testing version.
For that purpose we created a deployment and duplicated the created server script on the FMS Admin console (so it creates a new job with a new ID that will not be deleted after the job has been running). Additionally we changed the time schedule (every night at 3am) and saved the job.
Manual start of that job works well and the migration is done.
But when the job starts in the scheduled time slot, it dies right away.
Event.Log excerpt:

|2024-03-28 03:00:00.360 +0100|Informationen|148| Zeitplan OTTO_mig (daily) wird ausgeführt.|
|2024-03-28 03:00:02.046 +0100|Informationen|688| Zeitplan OTTO_mig (daily) hat das Systemscript otto-cli.exe mit Prozess-ID 1160 gestartet.|
|2024-03-28 03:00:03.155 +0100|Informationen|152| Zeitplan OTTO_mig (daily) abgebrochen; Abbruch durch Benutzer.|
|2024-03-28 03:00:03.155 +0100|Informationen|126| Zeitplan OTTO_mig (daily) für 29.03.2024 03:00 eingeplant.|

Although it says “cancelled by user”, it must have another reason.

Single not changed scheduled jobs run as expected.

Does anyone have an explanation for this, maybe a solution to the problem?


Hi Martin,

Welcome to the community.

Sorry but right now, what you are trying to do won’t work. This is a known limitation. It isn’t as simple as just changing the script recurring. There is a bit more that we need to do. This will get addressed very very soon.

As a work-a-round… If you wanted to use the Develop API, you could create a little FileMaker File with a Script that sends the same deployment via an Insert From Url script step. And run that every night.

OttoDeploy will give you the JSON payload you need to send.
TG2024-03-28 at 06.00.45


Hi Todd

Thanks a lot.
I will try your suggestion.
Will let you know.

Hi Todd
Sorry to bother you again about this, but maybe you can lead me in the right direction.
I created a script with an InsertFromURL-script step.
Endpoint: myserver.tld/otto/api/deployment
In the Curl option I set the authentication and added the json from OttoDeploy.
The callback says: HTTP Error 411. The request must be chunked or have a content length.
I added “Content-Length” to the Curl Header but still get the same error.

Do you happen to have a working example at hand?

Happy Easter :slight_smile:

Hey Martin

I don’t have a working script at hand but I have something the might make it easier for to send HTTP Scripts

Check out this file.

mfm-HTTP.fmp12 (836 KB)

It has a script called HTTP in it. You can use it to make HTTP requests using JSON instead of trying to construct curl commands which can be difficult.

This what we use always. We almost never use the Insert From Url Script step. It has been in widespread use for maybe 8 years. It has probably been called over a billion times by now.

Here is an old blog post about it

Let us know if that helps