Problem/Motivation

Customers cannot express interest when an opening is full or receive a fair opportunity to claim capacity that becomes available.

Proposed resolution

Add opt-in per-calendar waitlists with party size, queued notifications, expiring capacity holds, private single-use offer links, and leave/decline actions. Claims on priced calendars must continue through Commerce checkout. Expired offers release capacity for another eligible entry.

Remaining tasks

Implement for the next minor release, add automated coverage, and verify the workflow on a local Drupal site.

Test coverage

Cover duplicate joins, invalid input, capacity and party-size eligibility, ordering, concurrent processing, offer expiry, invalid and reused tokens, decline, disabled calendars, anonymous claims, and Commerce payment holds.

Comments

josh.fabean created an issue. See original summary.

josh.fabean’s picture

Version: 3.1.x-dev » 3.2.x-dev
josh.fabean’s picture

Status: Active » Fixed

Implemented and pushed to 3.2.x; available in 3.2.x-dev.

  • 18f42f04: Waitlist signup, expiring capacity offers, private single-use claim and decline links, and Commerce checkout.
  • 69e8fb20: Shared workflow fields, storage, and capacity primitives.
  • b5fec2a6: Automated regression coverage and documentation.
  • a9b5b910: Show offer duration only when waitlists are enabled; preserve expiry and decline cleanup when customer cancellation is disabled.

Verification: full module suite passes with 91 tests and 1,984 assertions, including waitlist ordering, duplicate requests, anonymous access, invalid/reused tokens, capacity locking, expiry, decline, and paid claims. Drupal coding standards and static analysis pass. Run database updates and rebuild caches after updating.

Adding explicit commit links because the initial branch push did not appear in this issue. Marking fixed.

Now that this issue is closed, review the contribution record.

As a contributor, attribute any organization that helped you, or if you volunteered your own time.

Maintainers, credit people who helped resolve this issue.

  • josh.fabean committed 44d3d97e on 3.2.x
    Issue #3620985: Fix CI checks and enforce 85% test coverage
    
    Document...

  • josh.fabean committed 43026965 on 3.2.x
    Issue #3620985: Clarify private waitlist route access
    
    Describe the...