Drupal is a registered trademark of Dries Buytaert
cms 2.1.3 Update released for Drupal core (2.1.3)! drupal 10.5.11 Update released for Drupal core (10.5.11)! drupal 11.3.11 Update released for Drupal core (11.3.11)! drupal 11.2.13 Update released for Drupal core (11.2.13)! drupal 10.6.10 Update released for Drupal core (10.6.10)! cms 2.1.2 Update released for Drupal core (2.1.2)! drupal 11.1.10 Update released for Drupal core (11.1.10)! drupal 10.5.10 Update released for Drupal core (10.5.10)! drupal 10.4.10 Update released for Drupal core (10.4.10)! drupal 11.2.12 Update released for Drupal core (11.2.12)! drupal 11.3.10 Update released for Drupal core (11.3.10)! drupal 10.6.9 Update released for Drupal core (10.6.9)! drupal 10.6.8 Update released for Drupal core (10.6.8)! drupal 11.3.9 Update released for Drupal core (11.3.9)! drupal 11.3.8 Update released for Drupal core (11.3.8)! drupal 11.3.7 Update released for Drupal core (11.3.7)! drupal 11.2.11 Update released for Drupal core (11.2.11)! drupal 10.6.7 Update released for Drupal core (10.6.7)! drupal 10.5.9 Update released for Drupal core (10.5.9)! cms 2.1.1 Update released for Drupal core (2.1.1)!

upsync

No security coverage
View on drupal.org

🧩 What is Upsync?

Upsync is a developer-focused utility module designed to simplify and stabilize deployment tasks. It allows you to perform selective module installations and config syncs/deletions without relying on full config imports or UI interactions.

🔥 Why use it?

Drupal's standard config sync process can often be risky on large or long-lived sites - especially when:

  • Syncing all config can unintentionally overwrite production changes.
  • New modules are not detected during update hooks or Drush runs.
  • You want a repeatable, update-hook-safe way to apply only what's needed.

Upsync solves these problems by providing services you can call within update hooks or deploy scripts to:

  • Install specific modules safely
  • Sync or delete selected config items
  • Collect and return results for logs, reports, or testing

⚙️ How to use

1. Install the module
Enable the upsync module just like any other:
drush en upsync

2. Use it in an update hook or deployment script
Here's an example of usage inside an update hook:

function my_module_update_9001() {
  $upsync = \Drupal::service('upsync.manager');

  $result = $upsync
    ->install(['my_custom_module'])
    ->syncConfigs([
      'views.view.my_view',
      'user.role.content_editor',
    ])
    ->deleteConfigs([
      'field.storage.node.legacy_field',
    ])
    ->getResults();

  return implode(PHP_EOL, array_merge(
    $result['messages'],
    $result['errors'],
  ));
}

You can also log results or send them to a dashboard, CI runner, or error reporting system as needed.

🛣️ Roadmap

Planned improvements and additions:

✅ Core support for:
- Module installation
- Selective config sync
- Selective config deletion
- Result collection with categorized messaging

🕓 Coming soon:
- Support for applying pending entity definition updates
- Unit test coverage

Activity

Total releases
2
First release
Jun 2025
Latest release
11 months ago
Release cadence
0 days
Stability
50% stable

Releases

Version Type Release date
1.0.0 Stable Jun 23, 2025
1.0.x-dev Dev Jun 23, 2025