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 | |
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_attachmententities) — 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
orgor as a custom event type with the right relationships. - An event is not a meeting. A meeting is closer to a session.
Next steps¶
- Sessions — the sub-units of an event.
- Task patterns — how to spawn tasks from events.
- Federation — how events are shared with peer instances.