Skip to main content
Drupal is a registered trademark of Dries Buytaert
Release: Opensolr Search 4.5.0 Minor update available for module opensolr_search (4.5.0). Release: Block Layout Accordion 1.0.2 Minor update available for module block_layout_accordion (1.0.2). Release: Canvas interactive toggle 1.0.2 Minor update available for module canvas_interactive_toggle (1.0.2). Release: Views HTTP Client 1.0.2 Minor update available for module views_http_client (1.0.2). Release: Block Layout Accordion 1.0.1 Minor update available for module block_layout_accordion (1.0.1). Release: Canvas interactive toggle 1.0.1 Minor update available for module canvas_interactive_toggle (1.0.1). Release: Video.js (HTML5 Video Player) 10.0.0-alpha1 First alpha version released for module videojs (10.0.0-alpha1). Usage Milestone: Simplify Module simplify crossed 10,000 active installs. Release: Audit Trail 1.0.0-alpha7 New alpha version released for module audit_trail (1.0.0-alpha7). Module Revived: Entityqueue Buttons 1.1.2 Module entityqueue_buttons updated after 8 months of inactivity (1.1.2).

Change Requests

14 sites Security covered Drupal 9–11
View on drupal.org

This module allows users to propose changes to content without directly editing it, similar to how code is managed in Git. Proposed edits are stored separately and can be reviewed, merged, and potentially have conflicts resolved before being applied to the main content.

Change Requests is a community tool that allows to work together on Drupal content (nodes) without edit-wars (see Wikipedia - Edit-Warring) similar to open source code developers working together on a code. All (authorized) users can use the form to edit content, but their changes wouldn’t be stored in the node but in a separate entity: a so-called „patch entity“. This patch can be evaluated in a variety of ways (i.e. by the user-community) and taken over to the node at a later date.

The approach is inspired by the Git workflow called „pull request“. The most important difference is that the basis of change requests are Drupal nodes instead of code files.

The changes are stored field-by-field completely independent of the contents revision history. The changes are not saved as full content, but as programmatically change statements. I.e. "In field_tag remove item with target_id 23 and add target_id 45; In the field_body find the words "Peter and Mary" and replace it with "Peter or Mary". The patch results are always visible in a diff view, with the changes proposed by the patch author highlighted (similar representation diff modules).

When accepting change requests, so-called "merge conflicts" can occur because the contents may have changed in the meantime between creation and acceptance of the change request. Therefore, the user who performs the merge is offered an interface in which the diff view is displayed on the left and the result of the automated merge process as an editable form element on the right. If there were any conflicts in taking over the changes, they can be fixed in this view before saving.

If a change request has been accepted, a new revision of the node is created in each case and the name of the patch author, creation date, link and title of the patch are entered as the log message. Thus, any changes to the node (using the Diff module) remain transparent at all times.

Almost all field types from the Drupal core are supported. For custom field types, a documented plugin interface is available to retrofit support for change requests for these fields.

Dependencies

The module uses the Changed Field API
Text changes will use Google's 3rd-party-lib „diff match patch“, ported to PHP by
yetanotherape.

Depends on

Dependencies of the latest stable release

Required by

Tracked projects that depend on this one

No tracked projects depend on this one yet.

Activity

Tracked releases
8
Tracked since
Feb 2026
Latest release
1 day ago
Releases (12 mo)
8 ▲ from 0
Maintenance
Active

Release Timeline

Releases

Version Type Core Release date
2.1.9 Stable 9–11 Aug 31, 2026
2.1.8 Stable 9–11 Aug 18, 2026
2.1.7 Stable 9–11 Aug 13, 2026
2.1.6 Stable 9–11 May 25, 2026
2.1.5 Stable 9–11 Apr 26, 2026
2.1.4 Stable 9–11 Mar 20, 2026
2.1.3 Stable 9–11 Feb 14, 2026
2.1.2 Stable 9–11 Feb 9, 2026