# Make and undo a change

> Add a DNS record, read its diff, apply it, find it in the history and revert it, from the dashboard or the CLI.

This walkthrough adds a TXT record to `example.com`, then undoes it. It touches nothing that serves traffic, so you can try it on a live zone. You need a member role of **Tech** or higher on the zone.

1. **Simulate the change.**

**Dashboard**

   Open the domain, go to **DNS → Records** and select **Add record**. Choose `TXT`, name `_changecontrol-test`, any content, and write a reason such as `Try change control`. The dialog shows the **Preview**: the version the domain is at, the version the change would create and the exact diff.
**CLI**

   ```sh
   openwaf-cloud ctl records add example.com type=TXT name=_changecontrol-test \
     content="hello" --reason "Try change control" --dry-run
   ```
   `--dry-run` asks the API to simulate the change and prints the plan, for example `versión 7 → 8` and one `+ records[id=…]` line. Nothing is applied.


2. **Apply it.**

**Dashboard**

   Select **Apply change**. The dialog confirms `Applied · version 8`.
**CLI**

   Run the same command without `--dry-run`. The CLI simulates again, shows the diff and asks for confirmation (`¿Aplicar? [s/N]`); answer `y`. Add `--wait` to wait until every edge node has applied the new version.


   The write carries the version you simulated against. If someone else changed the zone in the meantime, it is refused and nothing is applied: see [Simulate, then confirm](https://developers.openwaf.dev/change-control/simulate-and-confirm/).

3. **Find it in the history.**

**Dashboard**

   Go to **Changes → History**. The new version is at the top with your name, the action `Record added` and your reason. **Changes** compares it with the version before it.
**CLI**

   ```sh
   openwaf-cloud ctl zones history example.com --limit 5
   openwaf-cloud ctl zones diff example.com 7 8
   ```


4. **Revert it.**

**Dashboard**

   In **Changes → History**, select **Revert** on the version before yours (version 7), keep or edit the reason and confirm.
**CLI**

   ```sh
   openwaf-cloud ctl zones revert example.com 7 --reason "Undo the change control test"
   ```


   The revert does not delete version 8. It creates version 9, whose configuration is the one saved in version 7, with action `zone.revert` and a note of where it was restored from.


## Next steps

- [Configuration versions](https://developers.openwaf.dev/change-control/versions/) explains what each version holds.
- [Propagation to the edge](https://developers.openwaf.dev/change-control/propagation/) shows how to check that every edge node has the new version.
- [Audit log](https://developers.openwaf.dev/change-control/audit-log/) covers changes that are not zone configuration, such as members, tokens or cache purges.
