# Create individual event topics for recurring events

**URL:** https://meta.discourse.org/t/create-individual-event-topics-for-recurring-events/370600
**Category:** Feature
**Tags:** events
**Created:** [June 18, 2025, 12:33am UTC](https://meta.discourse.org/t/create-individual-event-topics-for-recurring-events/370600 "2025-06-18T00:33:54Z")
**Posts on this page:** 1
**Showing post:** 13

<div class="post-metadata">

### Author: ![Ethsim2](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/ethsim2/32/522255_2.png) [@Ethsim2](https://meta.discourse.org/u/Ethsim2)
#### Post date: [September 3, 2026, 5:37pm UTC](https://meta.discourse.org/t/create-individual-event-topics-for-recurring-events/370600/13 "2026-09-03T17:37:54Z")

</div>

> [@nathank](#):
>
> I’d like recurrence to preserve the current Event topic intact, but once it is completed the plugin would create a **new** Topic for the next Event.

I’ve opened a PR implementing this as an opt-in recurring Event mode:

> <https://github.com/discourse/discourse/pull/43187>
>
> \## Summary
> 
> Adds an opt-in mode for recurring Events where each completed occu…rrence is preserved in its own Topic and the next occurrence is created in a successor Topic.
> 
> The new \`discourse\_post\_event\_recurring\_topic\_mode\` enum site setting has two values:
> 
> \- \`reuse\_topic\` — existing behavior and the default
> \- \`create\_next\_topic\` — archive the completed occurrence Topic and create a successor Topic for the next occurrence
> 
> \## Details
> 
> When \`create\_next\_topic\` is enabled, the scheduled event-date monitor:
> 
> \- preserves the completed Topic by converting its Event to a one-off occurrence
> \- appends the occurrence date to the archived Topic title, handling title-length and duplicate-title constraints
> \- creates the successor Topic from the original post content while advancing only the Event start/end dates
> \- preserves category, tags, original author and recurring Event metadata
> \- carries forward only recurring \`going\` invitees; one-off attendance remains on the completed occurrence
> \- performs the rollover transactionally so a failed successor creation leaves the occurrence pending for retry
> \- still emits the event-ended workflow trigger with the completed occurrence's recurring-series metadata
> 
> If the recurrence has no next occurrence, the completed Topic is preserved as a one-off Event and no successor Topic is created.
> 
> The existing \`reuse\_topic\` path is unchanged.
> 
> \## UI smoke test
> 
> With \`discourse\_post\_event\_recurring\_topic\_mode\` set to \`create\_next\_topic\`:
> 
> \*\*Site setting\*\*
> 
> \<img width="678" height="142" alt="01-admin-setting-create-next-topic" src="https://github.com/user-attachments/assets/78dc6698-6886-4c10-81d4-22d991f0f452" /\>
> 
> \*\*Before rollover — recurring occurrence on September 3\*\*
> 
> \<img width="1512" height="958" alt="02-before-rollover-sep-3-every-thursday" src="https://github.com/user-attachments/assets/3150b843-1264-4990-8dd8-2e931e28b9dc" /\>
> 
> \*\*Completed occurrence preserved in the dated Topic\*\*
> 
> \<img width="2048" height="1076" alt="03-archived-topic-2026-09-03" src="https://github.com/user-attachments/assets/d6d28341-f684-4ba8-9b54-2fec0c537bb7" /\>
> 
> \*\*Successor Topic created for the next weekly occurrence\*\*
> 
> \<img width="2048" height="1073" alt="04-successor-topic-sep-10-every-thursday" src="https://github.com/user-attachments/assets/0ff611b4-f316-4130-bb75-7948d36e61e9" /\>
> 
> \## Tests
> 
> Focused specs after rebasing onto current \`main\`:
> 
> \> 22 examples, 0 failures
> 
> Coverage includes the existing reuse-topic behavior, normal successor rollover, final recurrence, all-day timezone handling, fenced-code Event markup, title collisions/truncation, restricted original authors, transactional retry behavior, recurring RSVP inheritance, and workflow event-ended payloads.
> 
> The UI and scheduled-job smoke tests confirmed that the completed Topic was preserved with a dated title and that a successor Topic was created for the following weekly occurrence, including through the normal supervised Sidekiq scheduler.

It adds a `discourse_post_event_recurring_topic_mode` site setting with two choices:

- `reuse_topic` — the existing behaviour and the default
- `create_next_topic` — preserve the completed occurrence Topic and create a new Topic for the next occurrence

With `create_next_topic`, when an occurrence ends the completed Topic is retained with its Event pinned to that completed occurrence and recurrence removed. A successor Topic is then created for the next recurrence, preserving the original title/body, category, tags and author, while advancing the Event dates.

The automated tests also cover RSVP rollover semantics: recurring `going` attendance is carried into the successor, while one-off attendance remains with the completed occurrence.

The rollover is also transactional, so if creating the successor fails the occurrence remains pending and can be retried rather than being left half-completed.

This specifically implements the “create the next Topic when the current occurrence ends” model. It doesn’t yet generate individual Topics for all future occurrences in advance, which is the alternative model @opcourdis mentioned above.

The existing behaviour remains the default, so this is opt-in for sites which want the completed Event Topic to act as the archive.

---

_[View the full topic](https://meta.discourse.org/t/create-individual-event-topics-for-recurring-events/370600)._
