Skip to main content
Drupal is a registered trademark of Dries Buytaert
Release: Drupal 11.4.6 Update released for Drupal core (11.4.6)! Release: Drupal 10.6.16 Update released for Drupal core (10.6.16)! Release: Drupal 12.0.0-alpha1 First alpha version released for Drupal core (12.0.0-alpha1). Release: AI (Artificial Intelligence) 1.5.0-rc3 New release candidate for module ai (1.5.0-rc3). Release: User Registration Link Pop Up 1.2.5 Minor update available for module url_popup (1.2.5). Release: User Registration Link Pop Up 1.2.4 Minor update available for module url_popup (1.2.4). Release: Smart Image Optimizer 1.0.1 Minor update available for module smart_image_optimizer (1.0.1). Release: Content Freshness Report 1.0.3 Minor update available for module content_freshness_report (1.0.3). Usage Milestone: Menu Condition Module menu_condition crossed 1,000 active installs. Module Revived: EzContent API - Enhanced De-coupled CMS Experience 2.3.9 Module ezcontent_api updated after 15 months of inactivity (2.3.9).

SM Entity Scheduler

1 sites Security covered Drupal 11 · not 10

Part of the SM ecosystem · 9 projects

View on drupal.org

This module automatically unpublishes, reveals, or deletes content entities when a specified date field on them has passed. It is configurable, works with any content entity type, and utilizes Symfony Messenger for efficient scheduling.

SM Entity Scheduler hides (unpublishes), reveals, or deletes content entities once a date field on them has passed — driven by configuration and run on the Symfony Messenger Scheduler engine (sm + sm_scheduler).

Unlike form-driven schedulers, it triggers off an existing date field already on the entity (for example one populated by an import), re-evaluated on every run, and works with any content entity type — including Commerce product variations.

Features

  • Config-driven "schedule" entities: target entity type and bundles, the date field to watch, semantics, enforcement strategy, cron expression and batch size.
  • Pluggable enforcement strategies: status (unpublish via the core published flag), visibility_field (a dedicated boolean plus an entity-access veto) and delete — add your own.
  • A shared, reusable expiry-rule service (date-granular, UTC) so imports and other code apply identical "is it past?" semantics.
  • Messenger-native runner: a recurring scan fans expired entities out as batched messages to a consumer, so it scales to large catalogs without cron timeouts.

Post-Installation

Enable the module, add (or reuse) a date field on the target entity bundle, then create a schedule config entity pointing at that field and choosing an enforcement strategy. Run a Symfony Messenger consumer (for example bin/sm messenger:consume) so the recurring scan and batches are processed.

Additional Requirements

  • Drupal 11.3+ (uses plugin constructor autowiring).
  • Symfony Messenger + Drupal (sm) and Message Scheduler (sm_scheduler).
  • A running Messenger consumer.

Similar projects

Unlike Scheduler (editor-set publish/unpublish dates per node) or Scheduled Transitions (content-moderation revisions), this module triggers off an existing arbitrary date field on any entity type, re-evaluates it every run, and runs on Symfony Messenger rather than hook_cron.

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
7
Tracked since
Jun 2026
Latest release
2 months ago
Releases (12 mo)
7 ▲ from 0
Maintenance
Active

Release Timeline

Releases

Version Type Core Release date
1.0.1 Stable 11 Jun 25, 2026
1.0.0 Stable 11 Jun 23, 2026
1.0.0-alpha6 Pre-release 11 Jun 8, 2026
1.0.0-alpha4 Pre-release 11 Jun 8, 2026
1.0.0-alpha3 Pre-release 11 Jun 8, 2026
1.0.0-alpha2 Pre-release 11 Jun 8, 2026
1.0.0-alpha1 Pre-release 11 Jun 5, 2026