Skip to content

Events

An event is the primary unit of work in FedMS. A workshop, a training program, a conference, a series of coaching calls — all of these are modelled as events.

Two entities, one event

As explained in Concepts, an event in FedMS exists as two linked entities:

Entity Type Purpose
Event group group (bundle event) Structure, members, sub-groups (sessions), permissions, federation.
Event content fedms_event (bundle = the event type) Editorial body — title, description paragraphs, embedded media and views.

When someone says "an event", they usually mean both at once.

The event group

The event group is a Drupal group entity with bundle event. It always lives as a sub-group of an org. Its fields include:

Field Purpose
label The display name of the event.
field_date Smart-date window — start and end timestamps.
field_venue Venue information (free-form or referenced).
field_accommodations Accommodation logistics.
field_description Short description (paragraphs).
field_event_profile Reference to a reusable event profile (planned).
field_flag_start_processed Cron-driven flag: has the event-start hook fired yet?
field_flag_end_processed Cron-driven flag: has the event-end hook fired yet?
field_sync Federation sync marker (intended).
subgroup_* Subgroup-tree metadata.

The event group owns the membership list, the sub-sessions, and the attached content for that event.

The fedms_event content entity

The fedms_event content entity carries the editorial content of the event. It is:

  • Revisionable — every edit creates a revision.
  • Translatable — fully supports multilingual content.
  • Bundle-driven — every event content entity has a bundle (a fedms_event_type) that decides which fields and which paragraphs are available.

Out of the box, FedMS ships one event bundle: in. Customers typically create their own bundles to model their event types.

The default description field on a fedms_event is an entity_reference_revisions paragraph field that supports four built-in paragraph types:

  • media — embed a media entity (image, video, document, …).
  • text — a rich-text body.
  • view — embed a view (e.g. "all sessions of this event").
  • webform — embed a webform (e.g. a registration form).

Customers can add more paragraph types in their custom modules.

Event types

An event type is a fedms_event_type config entity. It corresponds to one bundle of the fedms_event content entity. Defining event types lets a customer model different kinds of engagement:

  • "One-day workshop"
  • "Multi-day program"
  • "Coaching series"
  • "Conference track"

Each type can have its own fields (e.g. a "workshop" might have field_target_audience, a "conference track" might have field_chair), its own view modes, and its own task patterns.

Event types are managed at /admin/structure/fedms_event_types by users with the Content Manager site role.

The lifecycle

Each event has a clear lifecycle:

1
2
3
4
5
6
7
8
   created ─► open ─► start window passes ─► running ─► end window passes ─► closed
                          │                                 │
                          ▼                                 ▼
                   field_flag_start_processed   field_flag_end_processed
                          │                                 │
                          ▼                                 ▼
                    cron-driven tasks                cron-driven tasks
                       spawn / fire                    spawn / fire

The field_flag_*_processed fields are managed by the task_api ECA model together with the views.view.groups_unprocessed view, which cron walks regularly to trigger lifecycle-bound task spawning.

Members of an event

Event memberships are independent of org memberships. A person may be a member of an org without being a member of every event in that org, and vice versa.

Each event member has a group role within that event — Host, Manager, Speaker / Tutor, Moderator, Attendee / Delegate, Service Provider, Observer. See Members and roles.

Content attached to an event

Beyond the fedms_event content entity itself, an event group can have many other pieces of content attached as group relationships:

  • Book pages and pages (Drupal nodes) — typically pre-event and post-event content.
  • Media items — slides, photos, videos.
  • Attachments (fedms_attachment entities) — wrappers around media or webforms that can carry their own task patterns.
  • Sub-groups (sessions) — see Sessions.

Cloning an event

The event_groups ECA model implements an Event Clone flow that copies an event (with its configurable parts — type, defaults, attached content) into another org. This is the foundation for the "event templates" feature tracked at fedms/components/content#5 and fedms/support#15.

What an event is not

  • An event is not a calendar entry. It is a workflow container.
  • An event is not a course (in the LMS sense). A course typically groups multiple events; if you need that, model it as an org or as a custom event type with the right relationships.
  • An event is not a meeting. A meeting is closer to a session.

Next steps