# Migrate Legacy settings.depends_on

:::warning Deprecated

`settings.depends_on` is supported only for backward compatibility. New and updated configurations must use [`dependencies.components`](/stacks/dependencies/components). Use [`dependencies.files`](/stacks/dependencies/components#file-and-folder-dependencies) and [`dependencies.folders`](/stacks/dependencies/components#file-and-folder-dependencies) for external paths.

The same map is also accepted directly on the component (without the `settings` wrapper),
also for backward compatibility only. Both forms remain fully functional — no dependency
edges are dropped — but [`atmos validate stacks`](/cli/commands/validate/stacks) prints a
non-failing warning wherever either legacy form is used, naming `dependencies.components`
as the replacement.

:::

## Migration

Replace the map under `settings.depends_on` with a list under `dependencies.components`. Change `component` to `name`, and replace the legacy context fields with an explicit `stack` value, optionally constructed with a Go template.

**File:** `Before (legacy)`

```
components:
  terraform:
    app:
      settings:
        depends_on:
          network:
            component: vpc
          database:
            component: rds
            tenant: tenant1
            environment: ue2
            stage: prod
```

**File:** `After (current)`

```
components:
  terraform:
    app:
      dependencies:
        components:
          - name: vpc
          - name: rds
            stack: tenant1-ue2-prod
```

## Field Mapping

| Legacy field | Current form |
| --- | --- |
| `component` | `name` |
| `namespace`, `tenant`, `environment`, `stage` | `stack`, optionally using a Go template |
| `file` | `dependencies.files` |
| `folder` | `dependencies.folders` |

The new format can also declare a cross-type dependency with `kind`. See [Component Dependencies](/stacks/dependencies/components) for the complete schema, merge behavior, and examples.
