Introduction
To make our lives easier migrating Qlik Replicate tasks from one environment to another; I am looking how to migrate Qlik Replicate schedules.
So far by GitLab pipelines we can migrate tasks and endpoint; but schedules we must do manually. Quite often we forget to manually create the schedules as they are not as obvious component compared to tasks and endpoints. If you move to a new environment and your task is not there, well that is a no brainer. If your endpoint is not there; your task will not migrate.
But schedules are something that lurks in the background; inconsistently created when we rush to put them in when we realise the Qlik task did not run when it was meant to.
Plan
Using the python API, we can export all the items from a Qlik Replicate server with the export_all method. In the returned Json file will be the schedule details like this:
{
"name": "DEV_S004_GCS_DLA",
"command_id": 25,
"schedule": "0 1 * * * *",
"command_requests": {
"cleanlogs_req": {
"server": {},
"task": {},
"fts": {}
},
"logfilerollover_req": {},
"execute_req": {
"task": "",
"operation": "EXECUTE_OPERATIONS_BOTH",
"flags": "FRESH"
},
"stoptask_req": {
"task": ""
}
},
"task": "DEV_T222_DL_LENDING_DLA",
"is_local_time": true
}
The idea is to modify the Json for the schedule to match the environment we are migrating to; put the schedule into a blank server Json template and use the import_all
method to upload the new schedules to the destination server.
The Cron does not look right…
Looking over the exported Json; the cron syntax did not look right. It had six fields instead of the expected five.
"schedule": "0 1 * * * *"
This confused me for a while as I haven’t come across a cron like this before.
After coming up with no results searching Qlik’s documentation; I created some test schedules to try and determine what the sixth field is used for.
Ahh. After a short while I found the answer.
If the schedule is a “Once off” run; the sixth field is used for “Year”.
Here is an example below:

{
"name": "Test",
"command_id": 25,
"schedule": "30 15 7 1 * 2026",
"command_requests": {
"cleanlogs_req": {
"server": {
},
"task": {
},
"fts": {
}
},
"logfilerollover_req": {
},
"execute_req": {
"task": "",
"operation": "EXECUTE_OPERATIONS_BOTH",
"flags": "FRESH"
},
"stoptask_req": {
"task": ""
}
},
"task": "EIT_T002_OB_RFSB_ACCT_02",
"enabled": false
}