In Maximo calendars are used on labor and crew resources, and on locations and assets to indicate operational periods. They are used with Service Level Agreements and there are also some hidden references to a calendar which you might discover if you attempted to delete a calendar. Calendars are fundamental to the Maximo Scheduler graphical applications; without a calendar these applications simply would not work.

A calendar can have one or more shifts and when you apply a shift to the calendar, Maximo creates work periods for each day in the calendar. A calendar without an applied shift serves no purpose at all, as Maximo is always using the work periods. A work date can have multiple work periods, one for each applied shift.

The second point to bear in mind with calendars is that they are designed to be shared between the records that reference them. A person may have a calendar and shift and you might wonder how it is that two people can have the same calendar. This is because the availability of a person (or crew) is determined from its calendar/shift and a set of availability records which modify the work periods to say that a person is on holiday, sick, or will be providing extra time at the beginning or end of their shift. If you wish to use the Maximo Scheduler applications do not make a calendar specific to one labor or crew as each Scheduler project can only reference one calendar.

The third point to consider is that calendars are defined at the Organization level in Maximo, as are labor and crews. A person may have multiple calendars, but only one per organization. The availability records that modify the work periods, called Modified Availability is defined at the System level, so if a person has multiple labor records you only need to enter holiday periods once. As crews are only ever defined for an organization the Modified Crew Availability records are defined at the Organization level.

In the examples that follow we will create:

  • An OFFICE calendar working between 08:00 and 17:00, Monday to Friday
  • A 2-SHIFT calendar working between 07:00 and 15:00, and then 15:00 to 23:00 Monday to Friday with two shifts DAY, EVENING
  • A 3-SHIFT calendar working between 07:00 to 15:00, 15:00 to 23:00, and 23:00 to 07:00 Monday to Friday, with three shifts DAY, EVENING, NIGHT. This calendar will start with a NIGHT shift on the Sunday at 23:00.
  • An OPER1 calendar, that defines the operational periods of equipment between 07:00 to 23:00, Monday to Friday
  • A 21D-ROT calendar to demonstrate how to create shift rotations in Maximo.

Both a Calendar and Shift are defined with a maximum length of 8 uppercase characters, CALNUM and SHIFTNUM respectively.

The tests are performed on a system with Maximo 7.6.1.2 and Maximo Scheduler 7.6.8 installed. Some of the features of calendars are only applicable to Maximo Scheduler, I will point this out as we take our journey together.

OFFICE Calendar

We will define the OFFICE calendar working between 08:00 and 17:00, Monday to Friday. This is a total of 9 hours when office workers are expected to be available, but office workers are only contracted to 8 hours a day, 40 hours a week. In this example, we will show that we can enter a lunch break, and then modify the shift after it has already been applied to the calendar. You might think we have gone on an unnecessary journey; we have, it is deliberate as I want to show you different features of calendars in Maximo.

The Calendars application is found in the Administration module.

I’ve created a new calendar OFFICE with description “Office workers 08:00 and 17:00, Monday to Friday” and a start date and end date both of which are mandatory. Use a useful description to aid any lookup, I would typically include a purpose and a description of the shift pattern. The Start Date and End Date can be any period you like, I typically use whole years ending on the last day of the year so that when calendars do expire, they all expire at the same time. I also tend to set initially for 5 years and then extend in 3-year increments afterwards. You don’t want to go crazy and set the calendar for 100 years, because this will unnecessarily create database records that are unlikely to be used. 

Notice the calendar display is empty, it will eventually show the number of work hours. Today is Monday 28th September, it is highlighted.

Once the calendar has been saved you use the action Define/Apply Shifts. It will show existing shifts that may have been applied to other calendars, you can reuse these if one were applicable. In this case I have used the New Row button and created a shift called OFFICE with a Start Day of SUNDAY and with 7 Days in Pattern. If you can, have all shifts starting on the same day of the week, there are existing ones on Sunday because there are some shifts that start late on Sunday evening, if this were not the case, I might have chosen Monday as the Start Day. It is important that the number of Days in Pattern is a multiple of 7, a week, but Maximo does not enforce it.

After pressing OK to save the Shift record you use the action Define/Apply Shifts again, find the shift record, make sure it is highlighted (not checked) and this time use the button Define Pattern.

With the Start Day as Sunday (001), we enter the working hours for the Monday (002) with a Start Time of 08:00 AM and End Time of 5:00 PM, the Work Hours of 9 is calculated. I have entered a Pattern Day of W (Working) and Maximo entered the description of General Working. This is defined in the ALN domain called SHIFTPATDAY (Shift Pattern Day). 

After you have entered the first row use the button on the right-hand side “Fill out workdays data”. It will populate what you have entered for the remaining days to the end of the shift pattern, so now all you need to do is remove the data for Saturday (007). 

The Pattern Day symbol was a new addition in Maximo Scheduler 7.6.8 and it is used in the Graphical Resource View application, you’ll see this later.

After pressing OK to save the pattern you can see the result. We will now use the button Apply Shift(s) but this time you need to select the OFFICE shift on the left-hand check box.

A dialog opens allowing you to either apply the shifts to the Entire Calendar (the default) or to Selected Dates with a range defined by a start and end date. We’ll accept the default and apply it to the whole calendar.

The result is that the calendar now has a set of work periods, with 9 hours for each workday, Monday through Friday. The observant of you will see that I started this article a week ago, today is now 8th October.

Each of the working day cells in the calendar has a hyperlink to allow you to view the Work Periods. You can modify the start and end time or shift hours or create a new shift row using the New Row button. You need to bear in mind that whatever change you make here effects everything that uses this calendar. It modifies just one work period at a time. This dialog would be used to change the work periods of a calendar that is not being used for labor or crews. For example, to change the operational period of a set of assets, it would be quite acceptable to change that using this dialog box. To modify the working hours of a labor or crew then this is done with actions in the People or Crews applications, the Assignment Manager or the Graphical Resource View application which is part of Maximo Scheduler, and which has been designed specifically for this purpose.

Shift Breaks

In this section I want to show you how shift breaks are used in Maximo. The conclusion that I will draw at the end is that they are used to graphically display the break in the Graphical Assignment application and that they do not reduce the available hours of a resource assigned to the calendar with the break.

We will now apply a shift break to the Office calendar and shift. This feature is only available to Maximo Scheduler, it appeared a long time ago in Scheduler 7.5.1. You will find there is a license key applied to the section – licensekey=”SHIFTBREAK”. There is also a Help Grid information text at the top of the section “Shift breaks are used only in the Graphical Assignment application.” 

For the OFFICE calendar we again use the Define/Apply Shifts action and highlight the OFFICE shift. You add breaks to the Shift Pattern days, we’ll do this for 002 through 006 (Monday to Friday). If you forget to highlight the Shift Pattern day and the first row (001) was left highlighted, Sunday is a non-working day, then you will receive the error “BMXAT0468I – A shift break cannot be added because the shift pattern has not been defined for the day.”

With 002 (Monday) highlighted we can use the New Row button on the Shift Breaks table window. The Break type has a lookup with the Non-Work reason codes. This comes from a synonym domain, RSNCODE (Calendar exception reason code), which has two internal synonyms, WORK and NON-WORK and these codes are the non-work codes. I have added the LUNCH (Lunch Break) synonym to the NON-WORK internal code, which is what we will select. The Start Time and End Time have been set to 12:00 PM and 1:00 PM respectively and the Work Hours was calculated as 1:00. You can then move to Sequence Day (003) and repeat, then 004 though 006. You do not need to use the OK button in between, but after you have entered breaks for each day it is worth going back into the dialog to check that everything has been set the way you expected it to be. Going back into the dialog re-fetches the data from the database.

For the OFFICE shift and Shift Pattern 006 (Friday) selected you can see the LUNCH break between 12:00 and 13:00. When entering times, I just use a 24-hour clock, and so I just typed a Start Time of 12 and an End Time of 13. 

In the Graphical Assignment Manager application when the calendar and shift (OFFICE/OFFICE) are referenced on a Work List, then on the Assignment View the break period between 12:00 and 13:00 appears as a grey non-work period. The breaks are not displayed on the Gantt chart of the Work View tab. The Break Test work order and assignment is 2 hours long. 

If you make the assignment during working hours, between the period 08:00 and 12:00 the assignment will be coloured green.

If you make the assignment to a time that overlaps with the break period, then the assignment bar and the description of the assigned resource will be coloured yellow.

The breaks are not displayed with the Graphical Work Week application. The assignment was made for 9th October 2020, you can see that it is positioned in the center of the day in the Work Assignment window, that window has not been split in the middle to show the break. The requirement for 2 hours of an Electrician – First Class has reduced the availability by 2 hours to show available hours of 7:00. The Craft row shows 2:00 hours used out of a possible 9:00 hours (2:00/9:00). Incidentally there is a meeting for 1 hour on Monday 05th October and Vacation was being taken for the whole of Wednesday 07th October.

The conclusions to draw about shift breaks are:

  • They are only used in the Graphical Assignment application and Assignment View tab.
  • They do not reduce the available hours of a resource assigned to the calendar. You can see from the above screen shot that the available working hours is 9:00 and not 8:00 which is what it would have been if the 1-hour break had been taken into account. You will have found exactly the same work hour values for AJE in the Labor List of the Assignment Manager application. 

Modifying a Shift Pattern

When we defined the OFFICE calendar and shift the intention was to end-up with an 8-hour working day of availability over the core hours between 08:00 and 17:00 (9 hours), Monday through Friday. The Shift Break does not handle this, but the Shift Pattern can be defined with fewer hours than those between the Start and End times.

I have returned to the Calendar application and selected the OFFICE calendar, used the Define/Apply Shifts action and highlighted the OFFICE shift. Using the Define Pattern dialog you can modify the Work Hours to 8:00 hours for each workday, maintaining the same Start and End times.

You then select the OFFICE shift and use the Apply Shift(s) button to apply the shift across the whole range of the calendar.

The result is an 8-hour workday between 08:00 and 17:00 Monday to Friday.

Define/Apply Non-Working Time

The action Define/Apply Non-Working Time is used for defining whole workdays that will become non-working days when applied to a calendar. 

I have entered three non-working days for Christmas (25-Dec-20), Boxing Day, which in the UK is the day after Christmas day, but the public holiday is the first non-weekend date, which this year falls on Monday 28th December 2020. The third non-working day is New Year’s Day, Friday 1st January 2021. Notice the Start Date and End Date are defined as Date fields and not Date/Time. The selected type is HOLIDAY. These come from the NONWORK synonym domain which has values for Holiday, Other, Personal, Sick, Vacation as standard. You can change these, for example we use the term Holiday instead of Vacation, and Public Holiday instead of Holiday, but it is better to just change the description rather than the value itself.

The non-working days are entered at the System level in Maximo and are then applied to the required calendar by using the check boxes on the left-hand column and using the Apply button. These three dates have now been applied to the OFFICE calendar.

The result is that the working days appear with zero work hours and the name you gave is entered into the calendar cell. “Christmas 2020” and “Boxing Day (2020) – Deferred”, for the 25th and 28th December 2020 respectively.

While the NONWORK synonym domain has Personal, Sick and Vacation as options, do not think that these should be used for defining the non-working days on a personal calendar. Calendars are designed to be shared and are not designed to be used one to one with a Labor or Crew. By doing so, you will effectively make Maximo Scheduler unusable, as its applications can only use one calendar at a time, and not multiple calendars. Unavailability of labor and crews are entered elsewhere in Maximo and not in calendars.

2-Shift Calendar

The 2-SHIFT calendar will combine the DAY and EVENING shift on the same calendar, providing a total of 16 working hours between 07:00 and 15:00, and 15:00 to 23:00 Monday to Friday. This demonstrates that you can reuse the same shift definition on multiple calendars, the DAY shift is already used on the DAY calendar.

I’ve created a new calendar 2-SHIFT with description “DAY and EVENING Shift 07:00 to 23:00 M-F” and a start date of 1-Jan-20 and an end date of 31-Dec-24.

In the dialog for Define/Apply Shifts I have selected both the DAY and EVENING shift which are both shifts operating between Monday and Friday of each week. The DAY shift is 07:00 to 15:00 and EVENING shift is 15:00 to 23:00.

After using Apply Shift(s) button and applying both shifts across the whole duration of the calendar, every workday Monday through Friday shows with 16:00 work hours and examining any work period will show the two applied shifts for DAY and EVENING.

I’ve also applied the three non-working days for the 25th, 28th December and 1st January to the same calendar.

3-Shift Calendar

The 3-SHIFT calendar will combine the DAY, EVENING and NIGHT shifts on the same calendar, providing a total of 24 working hours between them:

  • NIGHT – 23:00 and 07:00 the following day, then 
  • DAY – 07:00 to 15:00, and finally
  • EVENING – 15:00 to 23:00, Monday to Friday. 

This demonstrates that a shift can be used across midnight. It will start with a NIGHT shift on the Sunday at 23:00.

I’ve created a new calendar 3-SHIFT with description “DAY, EVENING, NIGHT Shifts 24 hour starting 23:00 Sun, M-F” and a start date of 1-Jan-20 and an end date of 31-Dec-24.

In the dialog for Define/Apply Shifts I have selected the DAY, EVENING and NIGHT shift. The NIGHT shift which starts at 23:00 has its first shift pattern of the week starting on the Sunday and its last one on the Thursday. This means that shifts will be available from 23:00 on a Sunday, starting with the NIGHT shift, through to 23:00 of the Friday and finishing with the EVENING shift.

After using Apply Shift(s) button and applying all three shifts across the whole duration of the calendar, every Sunday shows 8 work hours, this is the NIGHT shift, Monday through Thursday show 24:00 work hours as all three shifts are applied, and on Friday’s there are 16 work hours for the DAY and EVENING shifts. This is not a shift rotation, these are separate DAY, EVENING and NIGHT shifts on the same calendar.

I have changed the calendar of Labor AJE to 3-SHIFT and his Shift to DAY, then on Graphical Resource View application I have also changed the calendar to 3-SHIFT and included DAY, EVENING and NIGHT shifts. With the Graphical Resource View restricted to only show Labor AJE (Andrew Jeffery), you can see that the partial availability on Monday 5th of 7 hours and the vacation on Wednesday 7th October have been maintained, although AJE’s calendar has changed. The Shift Pattern Day of ‘D’ shows for all working days, AJE is only on a Day shift and not a shift rotation.

I’ve also applied the three non-working days for the 25th, 28th December and 1st January to the same calendar.

OPER1 Calendar

The OPER1 calendar is to be used for locations and equipment (and not labor or crews) to show the operational hours of the production equipment. 

I’ve created a new calendar OPER1 with description “Loc/Ass 07:00 to 23:00, Monday to Friday” and a start date of 1-Jan-20 and an end date of 31-Dec-24. I’ve also created a shift called OPER1 with description “07:00 to 23:00, Monday to Friday”, a Start Day of SUNDAY and with 7 Days in Pattern.

In the action Define/Apply Shifts the OPER1 shift was highlighted and the Define Pattern button used. The Shift Pattern has been defined from 07:00 to 23:00 (11:00 PM) with 16 Work Hours, the Pattern Day of W (General Working) has been used.

Shift OPER1 was then selected and applied to the whole of the OPER1 calendar using the action Apply Shift(s).

The result is a calendar with 16 work hours per day, Monday through Friday from 07:00 to 23:00. The three non-working holiday dates around Christmas and New Year have also been applied.

A Shift Rotation Calendar

The 21D-ROT calendar will demonstrate how to create a Shift Rotation. There are three teams, and hence three shifts, SHIFT-A, SHIFT-B, SHIFT-C.

TeamWeek 1Week 2Week 3
SHIFT-ANIGHTDAYEVENING
SHIFT-BDAYEVENINGNIGHT
SHIFT-CEVENINGNIGHTDAY

The whole rotation will take 21 days. The period of time for NIGHT, DAY, and EVENING will be as we saw before for the 3-SHIFT calendar:

  • NIGHT – 23:00 and 07:00 the following day, then 
  • DAY – 07:00 to 15:00, and finally 
  • EVENING – 15:00 to 23:00, Monday to Friday. 

We cannot use the shifts DAY, EVENING and NIGHT as the pattern will be very different. 

I’ve created a new calendar 21D-ROT with description “21 day shift rotation” and a start date of 1-Jan-20 and an end date of 31-Dec-24.

You can create all three Shifts at the same time. The Days in Pattern is 21 and they are all set to start on Sunday.

You then need to use the Define Pattern button. The SHIFT-A team will start on Nights starting on a Sunday at 23:00 for 5 days. You probably do not want to use the Fill Out Work Days button as it will fill out the same pattern for all 21 days, which is not what you want in this case.

Moving to the second week SHIFT-A will be on Days starting on the Monday through Friday.

And in the third week SHIFT-A will be on the Evening shift, Monday through Friday.

I have completed the shift patterns for SHIFT-B and SHIFT C. Drawing the shift pattern in a table really helps, and if you have a night shift make sure you know what day of the week it starts on, Sunday in this case. Typing the Start and End times using a 24-hour clock, for example for Day Pattern, then 7 and 15, and waiting for Maximo to calculate the Work Hours will help to avoid issues.

Once you have entered the Shift Patterns you can select all three shifts and use the Apply Shift(s) button and use the default to apply the shifts over the whole calendar. 

The result looks the same as it did for the 3-SHIFT calendar with 8 work hours on a Sunday, 24 work hours, Monday through Thursday, and 16 hours on Fridays finishing at 23:00, but if you opened the work period you would of course find different shifts, SHIFT-A, SHIFT-B and SHIFT-C rather than NIGHT, DAY, EVENING.

This sort of shift rotation was difficult to visualise in Maximo before Maximo Scheduler 7.6.8 and the introduction of the Graphical Resource View application. The Resource List has a calendar of 21D-ROT and all three shifts were selected SHIFT-A, SHIFT-B and SHIFT-C. I have changed Labor AJE – Andrew Jeffery to be working on calendar 21D-ROT and shift SHIFT-A, which starts a shift pattern with Nights ‘N’. The 4th October is a Sunday, 9-11th is Friday-Sunday, then Andrew is working Days, and then in the third week of the rotation Evenings. You can see the importance of the Pattern Day (N,D,E) so that the rotation can be visualised. Saturday 24th is a non-working day, then Andrew starts the rotation again at 23:00 on Sunday 25th October with the Night shift.

Although the Calendar was changed for AJE – Andrew Jeffery, the unavailability periods on 5th and 7th were not affected. In this series of blogs on Maximo Scheduler, this is where we are heading next, how to enter unavailability for Labor.

Hidden Calendar Fields

There is a hidden CALENDAR field on the Job Plans, Preventive Maintenance and Work Order Tracking applications that indicates the calendar on which the work order is to be performed. For example, you could indicate that a Preventive Maintenance work order must only be performed during the day creating a calendar specifically for the period of time and days of the week when the job can be performed. There is no specific shift associated with this calendar.

There is a hidden Calculation Calendar and Shift (CALCCALENDAR, CALCSHIFT) that is used to determine the business hours used to calculate target dates on a Service Request or a Work Order.

There is a hidden Calendar (CALNUM) on the downtime history table (ASSETSTATUS).