Migrate from Dashboards

If you're currently using OpenSearch Dashboards directly on a managed domain, you can migrate your saved objects — dashboards, visualizations, index patterns, and more — into an OpenSearch UI application. This gives you multi-source support, workspaces, and centralized access management.

Why migrate?

FeatureOpenSearch Dashboards (standalone)OpenSearch UI Application
Data sourcesSingle domain onlyMultiple domains + serverless + direct query
Access managementDomain-level IAM or fine-grainedApplication-level IAM or SAML SSO
WorkspacesNot availableTeam-based workspaces with scoped data
AI assistantLimitedAmazon Q integration, natural language queries
Cross-account dataManual setupBuilt-in cross-account association
Centralized URLOne URL per domainSingle URL for all data sources

What migrates

The export/import process transfers saved objects from your existing Dashboards instance into an OpenSearch UI workspace. Saved objects include:

  • Index patterns
  • Dashboards
  • Visualizations (area, bar, line, pie, data table, metric, markdown, etc.)
  • Saved searches (Discover saved queries)
  • TSVB visualizations
  • Vega visualizations

What does NOT migrate

  • Alerting monitors and destinations
  • Anomaly detection configurations
  • ISM (Index State Management) policies
  • Security configurations (roles, role mappings, tenants)
  • Notebooks
  • Application-level settings

Alerting, anomaly detection, and other plugin configurations live on the domain itself and are accessible through the OpenSearch UI once the domain is associated as a data source. You don't need to migrate them — they're already there.

Step-by-step migration guide

Step 1: Export saved objects from your existing Dashboards

  1. Open your existing OpenSearch Dashboards URL (the one on your domain)
  2. Navigate to Stack ManagementSaved Objects
  3. Click Export all to download all saved objects as an NDJSON file
  4. Alternatively, select specific objects and click Export

Using the API:

# Export all saved objects
curl -X POST "https://your-domain-endpoint/_dashboards/api/saved_objects/_export" \
  -H "osd-xsrf: true" \
  -H "Content-Type: application/json" \
  -d '{
    "type": ["index-pattern", "dashboard", "visualization", "search"],
    "includeReferencesDeep": true
  }' \
  --output saved-objects.ndjson

Always use includeReferencesDeep: true to ensure that visualizations referenced by dashboards are included in the export.

Step 2: Create your OpenSearch UI application

If you haven't already, create an OpenSearch UI application and associate the same domain as a data source. See Create First App for the walkthrough.

Step 3: Create a workspace

  1. Launch your OpenSearch UI application
  2. Create a workspace that matches your use case (Observability, Analytics, etc.)
  3. Associate the domain as a data source for this workspace

Step 4: Import saved objects into the workspace

  1. Inside your workspace, navigate to Dashboards ManagementSaved Objects
  2. Click Import
  3. Select the NDJSON file you exported in Step 1
  4. Choose how to handle conflicts:
    • Automatically overwrite — replaces existing objects with the same ID
    • Request action — prompts you for each conflict
  5. Click Import

Using the API:

curl -X POST "https://your-app-url/_dashboards/api/saved_objects/_import?overwrite=true" \
  -H "osd-xsrf: true" \
  -F "file=@saved-objects.ndjson"

Step 5: Verify the import

  1. Navigate to Dashboards in the workspace
  2. Open each dashboard and confirm visualizations render correctly
  3. Check Discover to verify saved searches work
  4. Verify index patterns point to the correct indices

Handling index pattern conflicts

If your exported index patterns reference indices that exist on the domain, they should work automatically since the domain is associated as a data source. However, if index names differ:

  1. During import, you'll see a conflict resolution dialog
  2. Map the old index pattern to the correct index on the associated data source
  3. Select the appropriate data source from the dropdown

Migrating across multiple domains

If you have saved objects spread across several Dashboards instances (one per domain), you can consolidate them:

  1. Export saved objects from each domain separately
  2. Associate all domains with a single OpenSearch UI application
  3. Create workspaces as needed (one per team or use case)
  4. Import each export file into the appropriate workspace
  5. Update index patterns to point to the correct data source

Limitations

  • Saved object IDs must be unique within a workspace. If two exports contain objects with the same ID, the second import will overwrite the first (or prompt for conflict resolution).
  • Visualization types must be supported. Most standard visualization types are supported. Custom plugins or third-party visualization types may not import correctly.
  • Tenant-based objects. If you used OpenSearch Dashboards multi-tenancy (Global, Private, custom tenants), each tenant's objects need to be exported separately. Workspaces in OpenSearch UI replace the tenant model.
  • Version compatibility. The source Dashboards version should be compatible with the OpenSearch UI version. Objects from significantly older versions may require manual adjustment.

Post-migration checklist

  • All dashboards render correctly in the new workspace
  • Index patterns resolve to the correct indices
  • Saved searches return expected results
  • Time-based index patterns use the correct time field
  • Visualizations that use scripted fields still work
  • Team members can access the workspace with appropriate permissions

Troubleshooting

Import fails with "conflict" errors

  • Use the overwrite=true parameter to replace existing objects
  • Or choose Request action during import to handle each conflict individually

Visualizations show "No data" after import

  • The index pattern may not be connected to the correct data source
  • Open the index pattern in Dashboards ManagementIndex Patterns and verify the data source assignment
  • Check that the time range in the date picker covers your data

"Index pattern not found" errors on dashboards

  • The index pattern was not included in the export — re-export with includeReferencesDeep: true
  • The index doesn't exist on the associated data source — verify index names

TSVB or Vega visualizations don't render

  • These visualization types may reference specific index names or Elasticsearch query syntax
  • Open the visualization editor and update any hardcoded index names or queries
  • Vega specs that use direct Elasticsearch API calls may need path adjustments