Users Can't Add or View Events and Team Calendars Throws 'datetime zone id is not recognised' Error
Platform Notice: Server, Data Center, and Cloud By Request - This article was written for the Atlassian server and data center platforms but may also be useful for Atlassian Cloud customers. If completing instructions in this article would help you, please contact Atlassian Support and mention it.
Users can't view events or add events on calendars that are using an unrecognized time zone. This issue can happen after updating Confluence and or Team Calendars and one or more of the calendars is using a time zone that is no longer recognized.
Users will not be able to add or view events, and an error like this will be present in the application logs:
2021-06-26 00:45:00,889 ERROR [team-calendars-worker-1] [extra.calendar3.util.DefaultAsynchronousTaskExecutor] lambda$wrap$1 Exception happens on task execution: java.lang.IllegalArgumentException: The datetime zone id 'US/Pacific-New' is not recognised at org.joda.time.DateTimeZone.forID(DateTimeZone.java:247)
The configured timezone is no longer valid, although it may have been in previous versions.
You can update the timezone to one of the timezones in the list of supported timezones via the UI, or by updating the database. If there are only a few calendars with the issue we would recommend updating via the UI, however if there are a lot of calendars that are impacted you may prefer to update the database.
You can just go to a page with one of the calendars on it in Confluence. If you look underneath the calendar there you should see ellipsis next to the calendar name which you can click and from there choose edit from the drop down menu. From there, just go to general tab and update the time zone. This should update the time zone in the UI and database.
You can update the team time zone for the remaining calendars with the following SQL query:
UPDATE AO_950DC3_TC_SUBCALS SET TIME_ZONE_ID = REPLACE(TIME_ZONE_ID, '<old time zone>', '<new time zone>') WHERE TIME_ZONE_ID = '<old time zone>';
You will want to replace <old time zone> with the time zone from the error, and <new time zone> with the time zone you want to use.