EMS + LiveWhale Calendar

So, you’re using EMS…

But you want a front-end calendar that looks beautiful and works well. Fear not, we’ve got you covered. Here are the nuts-and-bolts of how LiveWhale Calendar (LWC) integrates with EMS.

The Basics

You provide us with credentials for your EMS API (we support their SOAP and REST API) and we get events flowing on a group-by-group basis from EMS into LWC. You can choose to have editors log in to LWC to finesse their group’s events—adding images, additional tags, etc.—or you may prefer to stick with just the info that’s coming from EMS.

Configuration Options
  • Matching up your EMS Event Types with LWC Event Types (doesn’t need to be a 1-to-1 association)
  • Select which status(es) from EMS do you want to import (e.g., “Confirmed”)
  • Restrict which event type(s) from EMS will be imported (optional)
  • Restrict which group type(s) from EMS will be imported (optional)
  • Matching up your EMS Groups with LWC Groups
  • Choosing if you want all EMS events to be imported as Live (recommended) or Hidden

We’ll be with you each step of the way and can help advise on these configuration options to make sure your EMS integration fits your optimal workflow.

Wondering if there’s something our EMS integration can do that’s not listed here? Ask!


Let’s get into the details.

Day-to-day Usage

In general, the LWC-EMS integration should be “set it and forget it.” You’ve already setup your groups and feeds and every hour LWC checks EMS for new and updated events. 

Once events have been imported, you can customize them on a per-event basis:

Edit Event EMS Example

This allows you to add an image/tags/RSVP/description or customize (override) the location, event type, or contact info that was imported from EMS. Some schools prefer to disable one or more of these options so that only the location from EMS is used, for instance. That’s easy to do.

 

Adding a new EMS group is a two step process

First, you create a LWC group (Toolbox > Groups and users > Add a new group) and associate it with the appropriate EMS group using the provided drop-down:

EMS Group Setup Example

Then, you switch into that group and add a new linked calendar (Toolbox > Linked calendars > Add a new calendar feed). On that page, you’ll see a panel that provides the precise URL for this group’s EMS events:

EMS Feed Setup Example

You can also use this page to set defaults for this feed (default image, contact info, etc.) if you want to save the work of editing the individual events. Save the linked calendar and that’s it! Your events will start importing and re-sync every hour. (We don’t automatically provision LWC groups based on EMS groups, but during your initial setup we can help you do this group creation+association in bulk, so you’re not doing it 1-by-1.)

 

How Does it Work?

Behind the scenes, our custom module connects to the EMS API, pulls event data by group, and then reassembles the info into an extended iCal format that can be consumed just like any other events feed (That’s the /live/ems/events/etc… URL you see in the above example.)

 

The Nitty-Gritty 

In your configuration file (global.client.php) we’ll help get you started with these configuration options, but here’s a glimpse at how they work:

Connecting EMS Event Types to LWC Event Types

$_LW->REGISTERED_APPS['ems']['custom']['event_types_map']=array(
// maps EMS event types to LiveWhale event types -- use format: EMS event type ID => LiveWhale event type title
1=>'Performance',
11=>'Lecture and Discussion',
19=>'Conference',
21=>'Exhibition',
22=>'Film',
23=>'Concert',
76=>'Athletic Competition'
);

Selecting Default Status(es) for your Event Queries

$_LW->REGISTERED_APPS['ems']['custom']['default_statuses']=array( // default statuses (if none specified)
1 // Confirmed
);

You can also choose to query for other statuses on a one-off basis, if desired.

Selecting Default Group Types for your Event Queries

$_LW->REGISTERED_APPS['ems']['custom']['default_group_types']=''; // default group types – if none specified, we are not restricting by group type

Use this if you’d like to restrict which types of EMS groups are available within LWC. Regardless, as part of the setup we’ll still help you connect EMS groups to LWC groups.

Selecting Default Event Types for your Event Queries

$_LW->REGISTERED_APPS['ems']['custom']['default_event_types']=array_keys($_LW->REGISTERED_APPS['ems']['custom']['event_types_map']); // default event types (if none specified) -- for this value we are using all mapped EMS event type IDs above, because that list also serves as the EMS event types that we allow

We generally use all the mapped event types in our default EMS event queries; that’s why you’ll notice the configuration just re-uses those same array values. But, if you wanted to map event types and not include all types in the default query, that’s possible using this option.

Imported Event Status (Live/Hidden)

$_LW->REGISTERED_APPS['ems']['custom']['hidden_by_default']=true; // set to true to import new events as hidden by default

By default, all linked calendar events are imported as Live and appear immediately. This is our recommendation; we tend to think life’s too short to be individually approving events from your EMS feed when you could just be hiding a few bad ones that slip through. But, if you’d prefer to individually approve and publish each EMS event, use this setting to import them all as Hidden.