Bulk migration partial failure
When you migrate legacy machine learning anomaly detection jobs to cross-project search in Kibana, the Migrate all legacy jobs action updates each job's datafeeds in turn. Some jobs may succeed while others fail — for example, because validate-before-mint rejected a search probe or a job owner account is invalid.
If you can't find your issue here, explore the other troubleshooting topics or contact us.
Symptoms
- The bulk migration summary reports a mix of succeeded and failed jobs.
- Some jobs show an API key error indicator in the anomaly detection jobs list; others show as migrated.
- Failed jobs still use legacy credentials or lack
project_routingwhile succeeded neighbors were updated.
Identify failed jobs
Note every job_id listed as failed in the migration summary. For each failed job:
- Open the job in Machine Learning → Anomaly Detection and review Messages for the API error text.
- Check
GET _ml/datafeeds/{datafeed_id}for missingauthorization.cloud_api_key.idon jobs that should have migrated.
For mint-time errors on individual jobs, see Cloud token mint failure. For routing or project-reference failures, see Routing matches no project and Stale project reference.
Record failed job ids
Keep the list of failed job_id values from the summary. Bulk migration does not automatically retry failed jobs.
Retry each job individually
For each failed job:
- Fix the underlying error (project link,
project_routing, ownership, or permissions). - Migrate that job alone from the jobs list flyout or run a single-job update:
POST _ml/datafeeds/{datafeed_id}/_update
{
"project_routing": "_origin"
}
Adjust project_routing to the scope you selected during bulk migration (bulk migration defaults to _origin unless you chose another scope).
Use the single-job migration path
The per-job migration flyout lets you confirm search scope before retrying. Prefer this over re-running bulk migration for the entire list.
Verify recovery
After individual retries, confirm the API key error indicator clears and that GET _ml/datafeeds/{datafeed_id} shows the expected project_routing and cloud API key id for every previously failed job.