# uip maestro bpmn update-metadata

> Syntax and options for the deprecated `uip maestro bpmn update-metadata` command — use `uip maestro bpmn refresh` instead.

:::warning
**Deprecated.** Use [`uip maestro bpmn refresh`](./uip-maestro-bpmn-refresh.md) instead. The command still works and is documented below for existing scripts, but every invocation prints a `[WARN]` deprecation notice to stderr.
:::

`uip maestro bpmn update-metadata` writes (or checks) `project.uiproj`, `operate.json`, `entry-points.json`, `bindings_v2.json`, and `package-descriptor.json` from a `.bpmn` file. Unlike `refresh`, it does **not** materialize Integration Service connection bindings — a package produced this way is not guaranteed runnable. It's registered under the `bpmn` branch.

## Synopsis

```
uip maestro bpmn update-metadata <bpmn> [--output-dir <dir>] [--dry-run]
```

Honors [global options](./global-options.md). Exit codes follow the [standard contract](./exit-codes.md).

## Arguments

- `<bpmn>` *(required)* — path to the `.bpmn` file.

## Options

| Option | Default | Description |
|---|---|---|
| `--output-dir <dir>` | directory of `<bpmn>` | Directory for the metadata JSON files. In `--dry-run` mode, this is the directory whose existing files are checked for drift instead. |
| `--dry-run` | off | Report drift against the `.bpmn` file without writing anything. |

## Examples

```bash
# Write metadata files next to the .bpmn
uip maestro bpmn update-metadata process.bpmn

# Check for drift without writing
uip maestro bpmn update-metadata process.bpmn --dry-run
```

## Data shape (--output json)

Write mode:

```json
{
  "Code": "MaestroBpmnUpdateMetadata",
  "Data": {
    "DryRun": false,
    "ProjectName": "process",
    "OutDir": "/workspace/my-project",
    "FilesWritten": [
      "project.uiproj",
      "operate.json",
      "entry-points.json",
      "bindings_v2.json",
      "package-descriptor.json"
    ],
    "EntryPointCount": 1
  }
}
```

`--dry-run` mode:

```json
{
  "Code": "MaestroBpmnUpdateMetadata",
  "Data": {
    "DryRun": true,
    "Status": "OK",
    "Drifts": []
  }
}
```

## See also

- [`uip maestro bpmn refresh`](./uip-maestro-bpmn-refresh.md) — current replacement, also materializes Integration Service connection bindings
- [`uip maestro bpmn init`](./uip-maestro-bpmn-init.md) — scaffold a new project instead of hand-assembling metadata
- [Maestro overview](./uip-maestro-bpmn.md)
