Shifty Event Driver

Information

Used to create events that describe your different teams and the shift structure they follow. This allows for simple crew and shift-based reporting and analytics.

Driver InfoDetail
Driver Type:Event
Platforms:All

Driver Settings

OptionDescription
File NameThe JSON file containing the configuration data. Must be accessible from the ARDI server.

Configuration Format

The driver takes a JSON file that describes each of your crews/teams and the shifts they work.

It has the following sections…

Active From

The activefrom parameter specifies the date you want to use as the base of the shift rotation. If your roster begins on a Monday and has a 2-week rotation, you'd enter the date of any Monday that is the start of a rotation.

Note that this file can actually have multiple different shift structures that change over time (ie. if your shift structure changes in the future, the event source will use this date to make sure that reports on old data include the earlier shift structures).

If you're building your first shift structure, we usually suggest that you choose a date that is significantly in the past.

"activefrom": "2023-02-02 09:00:00"
Time Zone

The timezone parameter is name of the timezone you're entering your times in. This should be in the form of Country followed by Capital (for example, Australia/Sydney.

"timezone": "Australia/Sydney"
Shift Types

Here, you'll specify a set of different shift types that your people might work. These often include terms like Day Shift, Night Shift or Evening Shift.

"shifttypes": [
   {"name": "Night", "start": "22:00", "end": "8:00"},
   {"name": "Day", "start": "8:00", "end": "18:00"},
   {"name": "Evening", "start": "18:00", "end": "22:00"}
],

Notes on Overlapping Shifts:

If your shifts overlap with one-another, you might want to consider having two different types of shift event source - one that shows when your people are actually working (which have overlaps), and another that shows when your teams are responsible for outcomes (which do not have overlaps).

Using overlapping time-frames in analytics results in double-counting - causing averages and KPI values to be skewed and totals to be incorrect.

Crews

These are your crews or teams. Each crew has a pattern of shifts that they work across your rotation.

The pattern should be the same length for every crew - the total length (in days) of your rotation. For example, a fortnightly roster has 14 days, so each pattern should contain 14 items.

The pattern begins on the activefrom date - if it's set to a Monday, the first day of the rotation will be a Monday.

Each item in the pattern is a single value - either the name of the shift type (specified in the section above) that begins on that day of the rotation, or null if the crew doesn't work that day.

"crews": [
   {
	"name": "A", 
	"pattern": ["Day","Day","Day","Day",null,null,null,"Evening","Evening","Evening","Evening",null,null,null,"Night","Night","Night","Night",null,null,null]
   }
]

Example

In the example below, the company has three different shifts - Day (8:00AM to 6:00PM), Evening (6:00PM to 10:00PM) and Night (10:00PM to 8:00AM).

The roster has a three-week rotation, with each crew taking turns at night, evening and day shift.

The roster begins on a Monday.

Crews A, B and C work Monday-Thursday each week, with Crew C taking the first night shift.

Crews D, E and F work Friday-Sunday each week, with Crew F taking the first night shift.

[
	{
		"activefrom": "2023-01-02",
		"timezone": "Australia/Sydney",		
		"shifttypes": [
			{"name": "Night", "start": "22:00", "end": "8:00"},
			{"name": "Day", "start": "8:00", "end": "18:00"},
			{"name": "Evening", "start": "18:00", "end": "22:00"}
		],
		"crews": [
			{
				"name": "A", 
				"pattern": ["Day","Day","Day","Day",null,null,null,"Evening","Evening","Evening","Evening",null,null,null,"Night","Night","Night","Night",null,null,null]
			},
			{
				"name": "B", 
				"pattern": ["Evening","Evening","Evening","Evening",null,null,null,"Night","Night","Night","Night",null,null,null,"Day","Day","Day","Day",null,null,null]
			},
			{
				"name": "C", 
				"pattern": ["Night","Night","Night","Night",null,null,null,"Day","Day","Day","Day",null,null,null,"Evening","Evening","Evening","Evening",null,null,null]
			},
			{
				"name": "D", 
				"pattern": [null,null,null,null,"Day","Day","Day",null,null,null,null,"Evening","Evening","Evening",null,null,null,null,"Night","Night","Night"]
			},
			{
				"name": "E", 
				"pattern": [null,null,null,null,"Evening","Evening","Evening",null,null,null,null,"Night","Night","Night",null,null,null,null,"Day","Day","Day"]
			},
			{
				"name": "F", 
				"pattern": [null,null,null,null,"Night","Night","Night",null,null,null,null,"Day","Day","Day",null,null,null,null,"Evening","Evening","Evening"]
			}
		]		
	}
]