The Assure system follows a best-practice model for managing a global workforce across multiple time zones. The principles are:
- Store in UTC (Coordinated Universal Time) for consistency
- Convert to local time for usability
There are three time zone settings which can be used in Assure:
- UTC (Coordinated Universal Time) which is what Assure (and other SaaS product) uses as their default standard because it provides a single, consistent, and unambiguous reference point for global data, bypassing the complexities of local time zones and daylight saving time (DST).
- User specific time zone setting. This can be set by individual users to set their local time zone using their “My Preferences”.
- Site wide, customer time zone setting. This is typically set up as part of the implementation, in the System Settings of Assure, where it is possible to set the default time zone for the whole customer site. The setting is called “User specific timezone” and is the default time zone applied if a user doesn’t set My Preferences. If this is not changed through System Settings, the default is UTC.
Note: As a user is created their time zone is defaulted to the site wide timezone but can be changed to reflect their local time zone.
How this looks in practice for users:
- User enters a date / time in a record in Assure or AssureGo+
- As the record is saved, it hits the Assure database and the datetime is converted into UTC and stored in the database in this universal format. This is also true for records that pass through the portal queue.
- Assure also records and stores the offset between the timezone of the user who entered the original data and UTC, so that we can accurately know the real datetime that the user intended.
When looking at records in Assure, in most cases the Assure User Interface (UI) converts the UTC from the database to the local time, using the user’s My Preferences to determine that local time for display. If the user hasn’t set My Preferences, it will display according to the site wide time.
When looking at data in Insights+ it is possible to configure to show date time in different ways.
- If using the date table, the data will always display the UTC values, because it extracts from the database directly where Assure has converted the original entry to UTC and stored this.
- If using the time zone table, the data will display in the user’s timezone (set in My Preferences). If the user has a different time zone to the site wide customer default time zone, the user will be able to flip between the time zones.
When extracting data using Quick Reports, the data is converted to the timezone of the user who is running the quick report, as they system knows who the user is and applies the timezone conversion.
When extracting data using the Data extract APIs, the data is extracted directly from the database, in UTC. There is no conversion to original, user timezones. In cases where date and time are separate fields, they are combined in the extract.
Additional notes:
In cases where the date field and time field are separate from each other in the Assure database, Assure has no context of the time in relation to the date.
- In practice, this means that as a user completes an Incident report, they record the Date, which is converted to UTC and stored in the database as datetime.
- However, the time entered is a simple String, so once stored in the database it has no concept of the date it was associated with.
- This can create issues if the date or time are edited after the record is created.
Most parts of the Assure User Interface will adjust accordingly to show the user times and dates according to their My Preference settings. However, there are edge cases where this behaviour is not consistent, due to the current architecture and the way Assure has been developed. These are not bugs, as the code is operating correctly. There is not a full list of inconsistencies documented. In such edge cases, Evotix will attempt to clarify time zone behaviour. Please raise a support ticket for investigation.