Change Tracking
Strata tracks every edit to your content architecture like a version control system. Changes flow through a shared draft, get committed with messages, and can be reviewed through an approval workflow.
Change events
Each individual edit is recorded as a change event within the draft changeset. A change event captures:
- Change type — what kind of modification was made
- Diff — the before/after state of the entry data, stored as a JSON diff
- Summary — an optional human-readable description of the change
- User — who made the change
- Timestamp — when the change was made
Change types
| Type | Description |
|---|---|
created | A new entry was added |
updated | An existing entry was modified |
deleted | An entry was soft-deleted |
restored | A previously deleted entry was restored |
reordered | The sort order of entries was changed |
rolled_back | A change was rolled back to a previous state |
Committing changes
When the team is satisfied with the accumulated changes in the draft, a member with the changeset:commit permission (Member role or higher) can commit the changeset.
A commit requires a message describing what changed — similar to a Git commit message. You can optionally attach links (e.g. to a Jira ticket or design document) to provide context.
When committed, the changeset's status moves from draft to committed, the committer and timestamp are recorded, and a new empty draft is created for subsequent changes.
Changelog & history
The Change Log page shows the complete history of committed changesets for a project. Each entry displays:
- The commit message and any attached links
- Who committed and when
- The number and types of changes included
- The current review status
Click on any changeset to see its individual change events with full diffs showing the before and after state of each modified entry.
Diff views
Every change event includes a JSON diff showing exactly what changed. Diffs are stored as structured data (not text patches), making them precise and queryable. For each modified entry, you can see:
- Which fields were added, removed, or modified
- The old and new values for each changed field
- The tab and entry context (which bundle and entity was changed)
Approval workflow
Committed changesets enter an optional approval workflow. Admins and Owners can review changesets and provide their decision.
Approval decisions
| Decision | Required permission | Description |
|---|---|---|
| Approved | changeset:review | The reviewer accepts the changes |
| Rejected | changeset:reject | The reviewer rejects the changes with comments |
| Revoked | changeset:review | A previous approval is withdrawn |
Each approval includes the reviewer's identity, timestamp, and an optional comment explaining their decision. One reviewer per changeset — the unique constraint ensures a user can only have one active decision per changeset.
Review status
Beyond the approval decision, each committed changeset carries a review status that tracks the implementation lifecycle. The reviewer (or the team) can mark each changeset to indicate its current state:
| Status | Meaning |
|---|---|
pending | Not yet reviewed or acted upon (default) |
implemented | The changes have been built in Drupal |
deferred | The changes are intentionally postponed to a later phase |
superseded | The changes have been replaced by a newer changeset |
not_applicable | The changes don't require implementation |
rejected | The changes were rejected during review |
rolled_back | The changes were reverted |
A reviewer can also attach review notes explaining their decision, and link a changeset to a related changeset (e.g. pointing a superseded changeset to the one that replaces it).
Rollback
Admins and Owners with the changeset:rollback permission can roll back a committed changeset. A rollback reverses the changes and marks the changeset status as reverted. The individual entries are restored to their prior state, and the rollback itself is recorded as change events with the rolled_back change type.
Permission summary
| Action | Permission | Minimum role |
|---|---|---|
| Create/edit/delete entries | entry:create, entry:update, entry:soft_delete | Member |
| Commit draft | changeset:commit | Member |
| Approve changes | changeset:review | Admin |
| Reject changes | changeset:reject | Admin |
| Rollback changes | changeset:rollback | Admin |