Skip to content

Migrating from JP1/AJS3 ​

There is no automatic converter. Because Dagu's definitions are plain YAML, a migration is a script you write and can rerun: export the unit definitions as text, generate DAG files, and validate them. Move one job group at a time, and run it in parallel with JP1/AJS3 before cutting over.

JP1 is a suite. Dagu replaces only the job scheduling part. Monitoring, asset management, and other JP1 products need their own replacements.

How the concepts map ​

JP1/AJS3Dagu
JobnetDAG, one YAML file
JobStep
Predecessor linkdepends
Nested jobnetdag.run step
Recovery jobhandler_on.failure
Rerundagu retry for the same run, dagu restart for a new one
Schedule ruleschedule
CalendarBusiness calendar
File-wait start conditionwait.file step
Agent hostSSH, or a worker selected by worker_selector
Concurrency limitmax_active_steps within a run, or a named queue across runs
Manager host databaseFiles in the data directory

Example ​

A nightly jobnet that waits for a file, runs three jobs in order, and calls a recovery job on failure:

yaml
type: graph
schedule: "CRON_TZ=Asia/Tokyo 30 22 * * *"
calendar: weekdays

steps:
  - id: wait_for_sales_file
    action: wait.file
    with:
      path: /data/inbound/sales.csv
      poll_interval: 30s
    timeout_sec: 3600

  - id: load_sales
    run: /opt/batch/load_sales.sh
    depends: wait_for_sales_file

  - id: aggregate
    run: /opt/batch/aggregate.sh
    depends: load_sales

  - id: export_report
    run: /opt/batch/export_report.sh
    depends: aggregate

handler_on:
  failure:
    run: /opt/batch/recover_sales.sh

For Japanese holidays, replace weekdays with a calendar file.

What to plan for ​

  • Availability. Only one scheduler is active at a time. A standby on shared storage takes over if it fails, and the storage is yours to provide. Runs on a failed host are marked failed and are not resumed.
  • Support. Team and Pro licenses do not include support. Enterprise agreements add response targets. See the support policy.
  • Operator access. SSO, roles, and audit logs need a self-host license. Roles apply to a whole server or a workspace, not to a single job.
  • Deadline alerts. Alerts for missed deadlines and late starts come from Dagu Console. A closed network needs a private control plane, available on request under an Enterprise agreement, or its own checks.

Steps ​

  1. Export the unit definitions of one job group as text.
  2. Map them with a script: unit to step, predecessor link to depends, recovery unit to handler_on.failure.
  3. Run dagu validate on every generated file.
  4. Recreate calendars, and compare the next fire times with dagu calendar fires.
  5. Run the group in parallel with JP1/AJS3, on test data or with side effects turned off, and compare results.
  6. Stop the group in JP1/AJS3 and enable its schedules in Dagu.
  7. Set up backups and alerts before you move the next group.

Dagu is open source under the GNU General Public License v3.0.