Tidal
Tidal Workload Automation → Apache Airflow
Migrate Tidal Workload Automation job groups, dependencies, and calendars to Apache Airflow.
Tidal Workload Automation (formerly Cisco Tidal) is a distributed enterprise scheduler with a rich UI-driven job definition model. Its job groups, dependency conditions, and business calendars map naturally to Airflow DAGs. BatchFoundry extracts Tidal job definitions via the Tidal API or database export and generates idiomatic Airflow DAGs with full dependency and schedule fidelity.
Concept Mapping
JobTask / Operator
Job groupTaskGroup
Job streamDAG
Dependency (predecessor)Upstream task dependency (>>)
CalendarAirflow timetable / schedule_interval
VariableAirflow Variable / Param
Agent / connectionAirflow worker queue / Connection
Condition (complete/failed)TriggerRule
Alert actionon_failure_callback
Max run timeexecution_timeout
The Hard Parts We Handle
- Tidal calendar and holiday schedule translation
- Job group hierarchy → nested TaskGroups
- Cross-job-stream dependencies → ExternalTaskSensor
- Agent and connection mapping
- Variable inheritance within job groups
- Tidal API extraction for large job catalogs
Tidal job stream to DAG
Before
/* Tidal job stream (simplified) */
JobStream: DAILY_ETL
Schedule: MON-FRI 01:00
Job: EXTRACT
Agent: UNIX-AGENT-01
Command: /opt/etl/extract.sh
Job: LOAD
Agent: UNIX-AGENT-01
Command: /opt/etl/load.sh
Predecessor: EXTRACT (Complete)After (Airflow)
# Apache Airflow DAG
from airflow.decorators import dag
from airflow.operators.bash import BashOperator
from pendulum import datetime
@dag(schedule="0 1 * * 1-5", start_date=datetime(2025,1,1), catchup=False)
def daily_etl():
extract = BashOperator(task_id="extract", bash_command="/opt/etl/extract.sh")
load = BashOperator(task_id="load", bash_command="/opt/etl/load.sh")
extract >> load
daily_etl()Ready to migrate from Tidal Workload Automation?
Talk to a BatchFoundry engineer about your workload estate.
Talk to an Engineer