Skip to content

Migration Log

Every export, push, and PR creation writes a row to /app/migration-log. Row names follow the format MIG-0001.

Readable by System Manager, Hydra Admin, and Hydra User. Only System Manager can delete rows. Manual edits through the form are rejected — the app updates rows itself as a push progresses.

Action

ValueTriggered when
ExportCustomisation files written to the target app's working tree (the Export Only path, or as a sub-step of Push)
PushA branch pushed to the remote
PR CreatedA pull request opened on GitHub

Status

ValueMeans
SuccessOperation completed
FailedOperation aborted. See error_message for the PAT-scrubbed cause
In ProgressCurrently running, or abandoned (sweeper marks rows older than 30 min as Failed)

Fields on each row

Fields are conditionally shown based on the row's action — empty fields don't render on the form.

FieldShows forWhat it carries
action / statusAllList-view filters
user / timestampAllWho triggered it, when
target_appAllThe app whose repo was touched
summaryAllOne-line human-readable result (shown in list view)
branchPush, PR CreatedGit branch name
commit_hashPush (success only)Short commit SHA
tag_name (Tag)PushTag name if Release Tag was set in the dialog
related_logPR CreatedCross-link back to the Push row that triggered the PR
pr_url (PR URL)PR CreatedDirect GitHub PR link
items_countExport, PushItem count for quick scope
doctypesExport, PushJSON list of doctypes involved
detailsExport, PushPer-doctype new/updated breakdown
error_messageFailed onlyPAT-scrubbed error text
files_changedExport, PushJSON list of file paths touched
items (child table)Export, PushPer-item rows — see below

Items child table

Each Migration Log Item row:

ColumnLabelValue
item_doctypeDocTypeThe source DocType of the customisation (e.g. Custom Field, Property Setter)
item_nameItem NameThe customisation's name (e.g. Customer-vat_id)
item_actionActionNew / Updated / Failed / Skipped
target_doctypeTarget DocTypeThe parent DocType the customisation applies to (e.g. Customer)
file_pathThe custom/<dt>.json or fixtures/<dt>.json it was written to
error_detailPer-item error if item_action=Failed

Reading partial outcomes

When a Push commits 47 of 50 selected items, the per-item child table tells you exactly which 3 fell through and why. Each row's Action shows what happened, and error_detail carries the message for Failed rows.

Stuck-job recovery

A Push sitting at In Progress for more than 30 minutes gets auto-marked Failed by the hourly sweeper. To recover: re-select your items in the migrator and push again.

Troubleshooting →