This is part 1 of 2 blog posts on the EventX application and provides an overview of application features as well as installation / configuration instructions.
The upcoming part 2 post will deal with the project and the source code in little more detail.
A brief overview
EventX is an EPiServer module built to ease the administrative tasks when dealing with user registrations for events such as fairs, seminars et.c.
It was initially built for our own intern use at the EPiServer Day 2009 event, but as we have received some requests on such functionality, we have decided to share the project under open source.
You can find the complete project over at CodeResort: https://www.coderesort.com/p/epicode/wiki/EventX
For more installation options, please see the section Installation below.
The module is built around a bunch of Web Controls used in a few Page Templates, some Custom PropertyTypes and Dynamic Content providers.
Web editors interact with application by creating pages of EventX pagetypes, create registration forms using XForms, insert EventX Dynamic Content controls and querying / extracting data using Edit mode tools.
Features and functions
Registration codes
Every registration gets its unique registration code consisting of 10 randomly selected characters. (The code contains no vowels to minimize the risk of accidentally forming any offending words).
This registration code is used to change existing registrations and when “scanning” the users when they show up at the event
The Registration process
The registration is built as a Wizard consisting of 2..N steps with N being
dependent on the number of “unique session dates” (more on this under Sessions below).
The initial wizard step asks the user to enter his/her email address and also any existing registration code.
The next step is gathering registration details, such as “Name”, “Company”, any dietary restrictions et.c.
In order for this form to be as flexible as possible EventX uses XForms to provide the form layout. Every single event may have its own unique registration details form.
Fig. XForms is used to define registration forms
Sessions
An event may contain zero or more sessions created using the EventX Session Page Type and pointed out by the Sessions Container property on the Event Page Type. Example of sessions may be:
09:00 – 10:00 “Keynote speech by our chairman”
10:00 – 12:00 “Introduction for the beginner”
10:00 – 12:00 “Advanced track for the experienced”
12:00 – 13:00 “Lunch”
If sessions exists for an Event, all dates for the sessions are extracted and then one wizard step is added to the registration wizard for each unique date.
If the three sessions in the sample above all defined the same start date, the registration wizard would contain one added wizard step.
Registration states
A registration is always “having” one of the below states. Transitions between some of the states results in emails being sent out as outlined in more details under each state description below:
- Submitted
A new registration is always assigned the submitted state upon first save.
The standard workflow sends the “submitted” email when processing registrations with this state.
- Confirmed
The registration has been confirmed with a seat at the event.
The standard workflow sends the “confirmed” email when processing registrations with this state
- Standby
The registration is on the standby list. This list is handled manually by the Event administrator and is not assigned automatically.
- Participated
The state is set when the user has been “scanned” at the Event’s reception, preferably using a bar code reader
- Cancelled
The user has manually and intentionally cancelled the registration.
The standard workflow sends the “cancelled” email when processing registrations with this state.
- Deleted
The registration has been deleted by the Event administrator using the administration tools found in EPiServer Edit mode.
Processing registrations
The task of “processing” submitted/changed registrations is handled by a workflow. This workflow takes care of sending out emails when registration states changes, automatically assign states when certain conditions are met et.c.
Which workflow to use is specified individually for every single event.
Emails
The emails sent out from the application is personalized using email templates with placeholders being substituted with contextual data at runtime.
Below is an example of such an email template with placeholder:
Hello [CurrentRegistration.FirstName]!
We are pleased to confirm your registration to [CurrentPage.PageName].
Kind regards,
Marketing
Event “badge” PDF’s
EventX lets each (confirmed) registered users print out “their” own event badge containing both standard event details as well as individual information such as registration code, personal session agenda et.c.
The fields used to provide the contextual data is in the same form as the placeholders in the email templates.
Installation
Installing EventX requires you to take a few manual steps:
Getting the files
Either way, when you're done you should have a subdirectory named EPiServer.EventX in your EPiServer’s web root folder containing a bunch of aspx/ascx files as well as few other resource files.
Preparing the database
- Connect to your EPiServer database using SQL Server Management Studio (or its like) and open a new Query window.
- Open and execute the SQL queries found in the DbScript.sql
This creates the needed custom tables and procedures, all of which are prefixed with the name ‘EventX’
Making sure the binaries are installed
- If you have chosen to download the prebuilt package (binaries only), make sure that the files:
EPiServer.EventX.dll
EPiServer.EventX.Data.dll
EPiServer.EventX.WF.dll
all exists in your EPiServers /bin folder.
- If you downloaded the complete project, open the projects and rebuild everything. (The project layout will be covered a little more in depth in part II of this blog).
Configuring the default Workflow
Configuring Dynamic Content
- Open up web.config for editing and add the below control definitions to the section episerver / workflow / definitions
<episerver>
<dynamiContent>
<controls>
<add description="Displays a property from current registration"
name="[EventX] CurrentRegistration" type="EPiServer.EventX.PlugIns.CurrentRegistrationDynamicContent, EPiServer.EventX" />
<add description="Displays a property from current sessionstep"
name="[EventX] CurrentSession" type="EPiServer.EventX.PlugIns.CurrentSessionDayDynamicContent, EPiServer.EventX" />
<add description="Displays statistics for an EventX event"
name="[EventX] Statistics" type="EPiServer.EventX.PlugIns.StatisticsDynamicContent, EPiServer.EventX" />
Installing the Page Templates
- In EPiServer Admin mode, go to Tools / Import Data and select the file EPiServer.EventX.PageTemplates.episerverdata which should be in your EPiServer.EventX folder.
- [Optional]
You may also install a sample event demonstrating most of the features by importing the EPiServer.EventX.Sample.episerverdata package found in the same folder as above.
Note: If you do import the sample event, which is strongly encouraged, you must go into Edit mode of the event page (named The Big Event) and set the Process Registration Workflow property as this is not retained during import. If you don’t, an error will be thrown when you try to submit the last step in the registrations wizard.
Fig. Setting the Process Registration Workflow property