Fortra
Fortra JAMS → Apache Airflow
Migrate Fortra JAMS job definitions, workflows, and agents to Apache Airflow DAGs.
Fortra JAMS (Job Access & Management System) is a cross-platform enterprise job scheduler that supports Windows, Unix, and cloud workloads. Its workflow-based job chaining and agent model translate cleanly to Airflow. BatchFoundry extracts JAMS job and workflow definitions and converts them to Airflow DAGs with full agent, dependency, and schedule fidelity.
Concept Mapping
Job definitionTask / Operator
WorkflowDAG
Workflow stepTask in DAG
Step dependencyTask dependency (>>)
Scheduleschedule_interval
JAMS variable ($$VAR)Airflow Variable / Param
AgentAirflow worker queue
Completion state (success/failure)TriggerRule
Notification actionon_failure_callback / email_on_failure
File triggerFileSensor
The Hard Parts We Handle
- JAMS PowerShell and .NET job types → PythonOperator / BashOperator
- Agent-to-worker queue mapping
- JAMS variable scoping (job vs. workflow level)
- File trigger translation → FileSensor
- JAMS calendar and holiday definitions
- Cross-workflow dependencies → ExternalTaskSensor
JAMS workflow to DAG
Before
/* JAMS Workflow (simplified XML) */
<Workflow Name="DailyETL" Schedule="Weekdays 01:00">
<Step Name="Extract" Job="ETL.Extract" />
<Step Name="Load" Job="ETL.Load">
<Dependency Step="Extract" Condition="Success" />
</Step>
</Workflow>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 Fortra JAMS?
Talk to a BatchFoundry engineer about your workload estate.
Talk to an Engineer