Release Notes For Version 8.3
Table Of Contents
- Upgrading to 8.3
- New Features
- Updates
- 8.3.1 February 22nd, 2018
- 8.3.2 March 1st, 2018
- 8.3.3 March 5th, 2018
- 8.3.4 March 6th, 2018
- 8.3.5 March 13th, 2018
- 8.3.6 March 14th, 2018
- 8.3.7 March 16th, 2018
- 8.3.8 March 22nd, 2018
- 8.3.9 March 28th, 2018
- 8.3.10 March 29th, 2018
- 8.3.11 April 6th, 2018
- 8.3.12 April 12th, 2018
- 8.3.13 April 15th, 2018
- 8.3.14 April 17th, 2018
- 8.3.15 May 8th, 2018
- 8.3.16 May 9th, 2018
- 8.3.17 May 10th, 2018
- 8.3.18 May 10th, 2018
- 8.3.19 May 11th, 2018
- 8.3.20 May 15th, 2018
- 8.3.21 May 16th, 2018
- 8.3.22 May 19th, 2018
- 8.3.23 May 22nd, 2018
- 8.3.24 May 24th, 2018
- 8.3.25 June 11th, 2018
- 8.3.26 June 12th, 2018
- 8.3.27 June 18th, 2018
- 8.3.28 July 2nd, 2018
- 8.3.29 July 5th, 2018
- 8.3.30 July 17th, 2018
- 8.3.31 August 12th, 2018
- 8.3.32 August 20th, 2018
- 8.3.33 August 22nd, 2018
- 8.3.34 September 5th, 2018
- 8.3.35 September 7th, 2018
- 8.3.36 September 19th, 2018
- 8.3.37 September 20th, 2018
- 8.3.38 October 4th, 2018
- 8.3.39 October 31st, 2018
- 8.3.40 November 6th, 2018
- 8.3.41 November 12th, 2018
- 8.3.42 November 29th, 2018
- 8.3.43 December 7th, 2018
- 8.3.44 December 9th, 2018
Upgrading to 8.3
Upgrading to 8.3.x from something before 8.3 is considered a large upgrade.
It can take up to 2 hours to complete, although this varies significantly
depending on your data and your hardware (solid state disks help to make
things go faster).
There is also more scope for database upgrade errors when 8.3 is first booted.
Consequently, the first time you boot with 8.3.0 or later:
- You should make sure you've already tested the upgrade on a copy of your
database. This means you should load a copy of your production data into a
separate database, and configure a Calpendo to point at that new database
and boot with 8.3 or later. Verify that everything worked by logging in to
this Calpendo. If anything went wrong, the login will either fail, or you
will be given a message on login to tell you there was a problem.
- Note that you can also watch the log file Calpendo generates during the
initial boot, where messages will be displayed giving information about the
progress of the database upgrade. This may be in /var/log/tomcat/calpendo.log
depending on your operating system, how you've configered tomcat, and the
name you chose for the path to the log file in the log4j.properties file.
- It is important not to interrupt the upgrade once it's started, unless
you have already decided to abandon the upgrade and roll back.
If you upgrade (or partially upgrade) to 8.3, and want to downgrade back to
8.2, then the procedure is:
- Stop tomcat
- Drop your calpendo database
- Create an empty database
- Load your backup into the empty database
- Configure 8.2.x (or whatever you previous version was) to be in tomcat's
webapps directory. Be certain that you do not have multiple Calpendo
versions in your webapps directory whose hibernate.cfg.xml points to the
same database. Starting tomcat while you have multiple Calpendos pointing
to the same database will cause problems.
- Restart tomcat
You should also make sure you have ample disk space available for the upgrade
as the database grows during the upgrade, but then ends up smaller than it
started.
Once you have taken the above into account, then upgrading to 8.3 or later
applying any bugfix updates should be done with the standard update procedure
as follows:
Stop tomcat
For major upgrades, you must create a backup of your database before
proceeding. For minor upgrades, it is recommended to create a backup, but
it is less important. After having stopped tomcat, the typical command
required is:
mysqldump -u USERNAME -p calpendo > calpendo.sql
or, depending on your system:
sudo mysqldump calpendo > calpendo.sql
Save the hibernate.cfg.xml and log4j.properties files from your existing
webapps/Calpendo/WEB-INF/classes directory
Take the Calpendo directory from the tar.gz download, and replace your
existing webapps/Calpendo with it.
Put the saved hibernate.cfg.xml and log4j.properties files into the new
directory.
Make sure you do not have both old and new versions in the webapps
directory at the same time, unless they point to a different database.
Booting multiple versions of Calpendo that point to the same database will
cause problems and is best avoided.
Restart tomcat
New Features
Bookings Calendar
Changed the way you select the resources to display on the bookings calendar
- The "bookmarks" section has been removed, and its functionality merged
into the "Resources" section of the calendar.
- There are now icons to perform the various actions
- Select a previously-saved bookmark of resources to display
- Edit the current list of resources to add/remove as required
- Save the current bookmark changes (if permissions allow)
- Save the current selection as a new bookmark (if permissions allow)
- Sort the resources by name
- Display settings pop-up to configure the "click mode" and whether to
allow drag-and-drop reordering of resources.
- You can reorder resources directly in the calendar by dragging the handles
next to each resource name.
- Clicking on a resource will (by default) display bookings only for that
resource. You can use CTRL-Click or COMMAND-Click to toggle the resource
you click on. You can also change the "click mode" in the settings
drop-down so that clicking on a resource will toggle it instead of making
it the sole selected resource.
- When editing the resources using the edit pop-up, it now uses a pop-up
that has been completely redesigned. There were quite a few design
problems with the old pop-up, and this is intended to make things much
better for users.
Speed Improvements
Version 8.3 feels much faster than 8.2, particularly on systems that have a
large number of projects.
Some further speed improvements originally intended for 8.3 have been postponed
to the next major release, which will be 9.0. That will produce another step
change in performance.
Creating New Projects
When you select the "Create Project" page from the menu, there was a
Cancel button which was always disabled. It now functions as a browser back
action. This means it takes you to the previous page you were on, whatever
that was.
LDAP
We now have native support for LDAP authentication. We also have workflow
actions for querying an LDAP server, and this can be used as a part of
synronising data with a remote LDAP server.
Nick Names
Added a nick name to user identifier
- Some single-sign-on authentication methods can automatically provide
us with a user's login identifier.
- The identifier we are given will uniquely identify the user, but may
not be the identifier the user types in. In such cases, we can be
given a very long and unwieldy identifier.
- Since we display the login name in some places, it doesn't work well
if its very long.
- So when configuring each authentication method, you can now specify
whether users authenticated with that authentication method should be
allowed to provide a shorter identifier as a nick name.
- Nick names must be unique.
- We will display the nick name instead of the real identifier.
- The "Identity" tab seen when viewing or editing a user has changed to
accommodate this.
- The user registration page has also changed; when registering with an
authentication method that supports nick names, a user will be asked
to enter a nick name, which will default to their real identifier when
we are given one.
Audit Log and System Events
Audit log and system event recording changed quite a lot behind the scenes.
They are both now stored in a new format which uses much less space, and they
are both faster to record (in the majority of cases) and faster to view.
Audit logs now record everything about a change, where previously some
information would be left out. For example, Calpendo projects store a set of
resource settings related to the project. Any list or set property would
previously not be recorded in audit logs, and so changes to resource settings
could not be tracked via the audit log.
The audit log record is now complete.
For those interested in the new storage format - the audit_log_properties
table has been replaced by the new table audit_log_chunks. This stores the
detail of the changes in a JSON snippet which is compressed and then split into
chunks so that no one chunk is too big. For system events,
exprodo_event_properties has been replaced by exprodo_event_chunks in exactly
the same way.
System events now record millisecond timing for their events. This degrades
gracefully to per-second timing if run on MySQL older than 5.7 or MariaDB older
than 5.3.
The system events page can now also search by the affected type and/or id of
the affected biskit.
Templates in the Past
We now support creating and displaying historical templates, but only for
resources that supports "any changes" to old bookings, which means it will
allow bookings in the past to be created.
Under these conditions:
- The bookings calendar displays the templates in the background for
the period in which you can create bookings.
- You can create and edit templates that are entirely within the
period during which you can create bookings.
New Workflow Functions
if - this is particularly useful in expression actions
addUserToProject and removeUserFromProject
subtractBusinessDays
timeDiffBusinessDays
New overloaded versions of add and remove that add an item to or
remove it from a list.
- assertActiveUser - assert who the currently active user is
- This gets used in audit log and for creator/updater automated
properties.
- You can only set it in a workflow if there isn't already a known
user in the event. For example, if a workflow is triggered by a
database event, then there would normally already be a known user.
- Useful when you can determine the user from the context of the event
but Exprodo can't do it automatically. For example, a user identifies
themselves through an anonymous http event.
format to format numbers and dates as strings
- createCalendarInvite
- This will generate an ICS file for a particular booking, and the
resulting Attachment can then be used as an email attachment to
provide a calendar invite.
createDate and createDateTime to generate a date or date time given
the year, month, day of month, hour, minute and second.
- OSFileInfo functions
- There's a new category of workflow functions that operate on files
that exist at the operating system level.
- These are under the moniker "File", and are as follows:
- createOSFile to create a temporary file that lives for the duration
of the workflow that creates it, possibly in a directory you choose.
- createTemporaryDirectory
- getOSFileInfo for finding out information like the size and type of
a file.
- listOSFiles for listing the files in a particular directory.
- loadOSFile for converting the contents of a file to a string.
- formEncode to encode a biskit as an HTTP form
- This can be used as the body of a network request that you send to an
HTTP server.
- This is useful as a part of integrating Calpendo with a third party
service.
Add overloaded version of timeDiffDays workflow function that returns a double
Add version of createAttachment workflow function to let you specify
attachment name rather than just taking the name from the source file.
createTemporaryFile to create a new temporary file from either an
attachment or an operating system file.
logSystemEvent for logging system events
- Add extra version of toJson function that does not emit null valued properties
- Normally, when converting a biskit to JSON, any properties on the biskit
that are null get written to the output JSON so that it specifies the
value of the property to be null.
- However, some APIs (such as HL7/FHIR) specify that when a value is null,
the property should be omitted from the JSON.
- There's now a version of the toJson function that lets you choose
whether to emit or omit null-valued properties.
- substring for extracting a part of a string.
- You could already achieve this using a FindTextWorkflowAction, but
that would require regular expressions and was more complex than it
needed to be.
- Adding a substring function makes things simpler when it matches your
use case, and one might also expect such a function to exist.
- Add union workflow function that works with non-biskit lists
- There was already a union function that would merge two lists of biskits,
but we now can merge lists of almost anything.
New Workflow Features
Instrument Activity Recording
Version 8.3 adds a new method for recording the activity on PCs that drive
an instrument. This gives another tool for calculating who has used which
instrument and for how long, and also for controlling who can use which
instrument.
The new method is known as CAR (Calpendo Activity Recorder) and is a
stand-alone Windows native program that runs both as a service and also an
instance in each user session.
CAR records all activity in the Calpendo database, and it:
- authenticates the user, using your choice of authentication method
such as relying on the local Windows authentication, LDAP,
Active Directory or sending a username/password to Calpendo.
- Keeps track of particular processes that are running.
- Asks Calpendo for authorisation for the user to run those processes.
- When CAR finds one of its target processes running, and the user
has not been authorised, then CAR will can kill or close the process,
or warn the user they shouldn't be using it, or do nothing.
The other methods for recording activity are:
- pGina - this replaces the Windows login process, and communicates directly
to Calpendo. This also provides for multiple authentication methods and
tracks usage of particular processes.
- It is different from CAR because it can prevent people from logging on
to the PC when Calpendo says they should not be able to use it.
This approach is suitable when you don't require your existing login
methodology to remain, and when you are happy to prevent people from
using the PC when they are not authorised to use the instrument attached
to it. In particular, this means it is inappropriate if you want to
allow people to use an instrument's PC for reasons other than using
the instrument (such as surfing the web or checking email).
- Just like CAR, it can track usage of particular processes, so you can
record the time the instrument's software was actually running.
- Unlike CAR, pGina has no means of stopping processes from running that
are not authorised.
- PowerShell - we have scripts that can be run by Windows Scheduler that will
detect what processes are running and who is logged in.
All methods can detect:
- who is using the instrument and for how long.
- whether the PC is up or down, and for how long.
Miscellaneous
- Add time-of-day markers to the calendar
- A red line shows in the calendar in the position for the current time
- A blue line shows in the calendar that moves depending on the current
mouse position, to help you see what time of day your mouse is over.
- There's a global preference and a user setting that can override the
global preference.
- This displays on the regular calendar and also the anaonymous read-only
non-interactive calendar.
You can now send HTML emails, both when sending manually and from a workflow.
Add support for somebody to request an automatic reset of password when
they're forgotten it. This relies on their email address already being set
correctly.
- Store decoded licence information to the database at each boot and licence
change
- This allows the ability to see how licences have changed over time
and query for the current licence.
- Go to the general search page and search for Calpendo Licence or
Exprodo Licence
Add mouse position highlight in the week and timeline calendar panels' time
display
Booking Popup displays "Booker" instead of "Booking Booker" in reminders
- "Edit" button with an arrow pointing to check boxes has been relabelled
"Edit checked"
- This is to reduce confusion with multiple buttons labelled "Edit".
- An "Edit" button edits one whole biskit
- An "Edit checked" button edits multiple checked items all at once
Default user project auto-selected in booking popup
Add support for Resource.colourGroupID that holds a default resource colour
Add support for a default project for pre-selection in new booking popup
Add support for users to change their own email address in their settings page
- Cancelled, denied and tentative bookings now display with stripes in the
booking calendar to indicate their status.
- Tentative displays with green stripes
- Cancelled displays with dark stripes
- Denied displays with red stripes
- Workflow property selection uses names instead of labels when ambiguous
- When selecting a property in a biskit update workflow action (for example)
you will see a list of labels. But sometimes multiple properties can have
the same label, and then you don't know what you're selecting.
- Labels are generally nicer, so this change sticks with the use of labels
unless the labels are ambiguous. That is, there are multiple properties
with the same label.
Calpendo rules that need to search for additional bookings (total time
booked, number of bookings, interval and double booking) can now place custom
conditions that directly compare the bookings you're searching for with the
booking the rule is being applied to.
Make limited email recipients case insensitive (issue 2115)
- Unhide and rename the facility to directly compare the booking a rule is
being run on and bookings that are searched-for as a part of the rule.
- This applies to total time booked, number of bookings, interval and
double booking rules.
- A new feature in 8.3 is that the conditions panels under the Rule tab
would show an extra type of condition when you tick the advanced checkbox.
- This would show "Booking under test" and let you directly compare the
booking the rule is checking ("the booking under test") against the
booking being searched for as a part of the rule.
- The text "Booking under test" has changed to "Booking to match" since
the word "match" is used elsewhere.
- Also, you no longer need to tick the advanced check box in order to see
this option.
Add a template's ID to the template pop-up when editing a template
Display the page token that each report belongs to in the report manager
- Assign a resource a random colour when you create a new one
- It was receiving the same colour all the time (red).
Greyed-out buttons display a no-entry sign for the mouse when you hover
over them
- Add support for forcing users to re-login after they change their password
- There's a new global preferences option in the Security tab for this,
and the security tab has been simplified by moving multiple sections
within a single caption.
- Redirect to new user registration if unregistered external user tries login
- When using an external authentication method (eg Shibboleth), and a
person who is not registered as a user in Calpendo tries to log in,
we used to tell them that they need to register as a user first.
- Instead of doing that, we now automatically take them to the new user
registration page.
- It means that for an external authentication method (such as Shibboleth)
an unregistered user can either click the "Register new user"
button or click the button for their authentication method directly
from the login page.
- This should make the process easier for those who haven't registered
with Calpendo before.
Updates
8.3.1 February 22nd, 2018
Changes
Make limited email recipients case insensitive (issue 2115)
- Limit length of AddOn and User columns for utf8mb4 unique indexes
- Our newer servers use utf8mb4 as the default for new databases, which
means columns taking up more space.
- So where we have unique indexes, which have a limit of 767 bytes for the
row, we have to limit the size of the columns involved in the index.
- Change "Booking booker" user settings label to "Booker"
- This matches what's now done in the booking pop-up
Add overloaded version of timeDiffDays workflow function that returns a double
Add support for DateRange variables in a CreateVariables workflow action
Bug Fixes
Back to Top
8.3.2 March 1st, 2018
Changes
- Add a template's ID to the template pop-up when editing a template
- Display the page token that each report belongs to in the report manager
Bug Fixes
- BUGFIX: NetworkMetrics overload if set to send every 1 or fewer messages
- If you set network messages to be sent every 1 time a network message is
sent, then the browser goes into an infinite loop sending network messages
to the server.
BUGFIX: ical feed occasional exception
BUGFIX: Creating new resources failed with a formulaic numeric property
- BUGFIX: booking/template ending at midnight could display with zero length
- This didn't always happen, but was observed happening in a day view and
not a week view.
- BUGFIX: Update a repeating booking/template this item and it can go wrong
- If a template goes from 6pm to midnight and repeats daily, and you modify
a template at a particular day (say a Monday) and choose to modify it
"THIS ITEM", then the Monday entry is modified as you expect, but the
repeat following it starts on the Wednesday and not the Tuesday.
- This was confusion over the date, since the Monday repeat ran into the
Tuesday, so it thought the Tuesday was already covered and didn't need
the repeat to start then.
BUGFIX: Exception updating a repeating template "THIS ITEM"
- BUGFIX: Exception on open a report from report manager with no menu entry
- If you have a search that is tied to a custom search page, and that
custom search page does not exist for the current user, then trying to
open that report from the report manager would give an exception.
- We now give a proper error message instead of a nasty exception.
- BUGFIX: Identity conditions render incorrectly in writeable mode
- Identity conditions can appear in custom search pages. Whenever editing
such conditions, you should only be able to remove them or ignore them.
- However, they were rendering very strangely which was quite confusing,
and on save, they wouldn't then do the right thing.
- BUGFIX: old booking search page reports display with unexpected conditions
- There was a bug fixed in 8.3.0 for search pages that include a date range
selector. The conditions they used to generate were not quite right, and
so they were fixed.
- That fix caused the date range conditions to be generated as slightly
different from before. However, it did not address the situation where
an old report (with the slightly wrong conditions) would be loaded into
a fixed page.
- What happens is that the old conditions were not recognised as being
compatible with the date range widget, and so the whole conditions
were displayed oddly as a result.
- This change now supports recognising both the old and new format
conditions.
Back to Top
8.3.3 March 5th, 2018
Changes
- Changed the way you select the resources to display on the bookings calendar
- The "bookmarks" section has been removed, and its functionality merged
into the "Resources" section of the calendar.
- There are now icons to perform the various actions
- Select a previously-saved bookmark of resources to display
- Edit the current list of resources to add/remove as required
- Save the current bookmark changes (if permissions allow)
- Save the current selection as a new bookmark (if permissions allow)
- Sort the resources by name
- Display settings pop-up to configure the "click mode" and whether to
allow drag-and-drop reordering of resources.
- You can reorder resources directly in the calendar by dragging the handles
next to each resource name.
- Clicking on a resource will (by default) display bookings only for that
resource. You can use CTRL-Click or COMMAND-Click to toggle the resource
you click on. You can also change the "click mode" in the settings
drop-down so that clicking on a resource will toggle it instead of making
it the sole selected resource.
- When editing the resources using the edit pop-up, it now uses a pop-up
that has been completely redesigned. There were quite a few design
problems with the old pop-up, and this is intended to make things much
better for users.
- Enable Cancel button in "Create Project" page as a browser back action
- When you use the menu item to take you to a new page that creates a
project, there was always a Cancel button that was disabled.
- This button is now enabled and will take you back to the previous page
you were on, whatever that was.
- Add workflow function "formEncode" to encode a biskit as an HTTP form
- This can be used as the body of a network request that you send to an
HTTP server.
- This is useful as a part of integrating Calpendo with a third party
service.
Bug Fixes
BUGFIX: Cannot export RelativeTimeWorkflowEvent
- BUGFIX: Could be save audit log entry for biskit with both a dynamic and
indirect property of the same name
- You should not normally find yourself in this situation, but you can do
so by adding an indirect property (say to Booking), then creating a
Booking, then changing the property from indirect to dynamic and edit the
booking again to set a value for the property. It would then have both
a dynamic and indirect property of the same name.
- From that point, modify the booking and it would fail when writing out
the audit log entry.
BUGFIX: iCal feed wasn't working (error message saying resource not found)
BUGFIX: Workflow function "copy" had typo in its help text
- BUGFIX: NetworkMetrics overload if set to send every 1 or fewer messages
- If you set network messages to be sent every 1 time a network message is
sent, then the browser goes into an infinite loop sending network messages
to the server.
- BUGFIX: ical feed occasional exception
- Only observed in 8.3, but it could have affected 8.2 too
BUGFIX: Creating new resources failed with a formulaic numeric property
- BUGFIX: booking/template ending at midnight could display with zero length
- This didn't always happen, but was observed happening in a day view and
not a week view.
- BUGFIX: Update a repeating booking/template this item and it can go wrong
- If a template goes from 6pm to midnight and repeats daily, and you modify
a template at a particular day (say a Monday) and choose to modify it
"THIS ITEM", then the Monday entry is modified as you expect, but the
repeat following it starts on the Wednesday and not the Tuesday.
- This was confusion over the date, since the Monday repeat ran into the
Tuesday, so it thought the Tuesday was already covered and didn't need
the repeat to start then.
Back to Top
8.3.4 March 6th, 2018
Changes
- Add new mapped int called "Http Response Code" which is now used to generate
a drop-down when specifying a return code for an anonymous HTTP event
response.
- This just makes it a bit easier for people writing workflows to choose
an appropriate response code by choosing from a drop-down instead of
having to look up the appropriate code.
- Existing workflows will now display both the number and the name instead
of just the number.
Bug Fixes
- BUGFIX: Some database had no null value label for "PatternFlags" mapped int
- This applies to any database that was created initially at 8.0 or later.
- Older databases were already correct.
- BUGFIX: Changes to the CSS (both system-generated and custom CSS entered in
global preferences) could be ignored by browsers that continue to use a
cached version.
- This fix involves sending a header in response to a request for the CSS
that tells it to always ask the server for the CSS.
- The server will still check whether it's actually changed and may only
send a response to say it's not been modified, if appropriate.
- This change will take a while to take effect as browsers that cache
the CSS will have to either decide to check with the server or be forced
to do so (via a user emptying their cache or doing a shift-refresh)
before the browser will see the new header.
Back to Top
8.3.5 March 13th, 2018
Security Bug Fixes
- SECURITY BUGFIX: Permissions controlling system commands could be modified
- There are permissions to control who can execute what command-line
utilities from a workflow, and there are permissions to prevent those
permissions from being modified by anybody apart from a root user.
- However, the permissions preventing the permissions from being changed
weren't quite complete.
Changes
Bug Fixes
- BUGFIX: Upgrade to 8.3 fails on systems with utf8mb4 as default charset
- BUGFIX: createOSFile(...) function fails when give file name & attachment
- If you specify the full name (rather than give a prefix and suffix), and
an attachment to create the file from, then you get an exception.
- BUGFIX: Empty attachments attached to an email kill the whole email
- BUGFIX: Multiple unsaved attachments added to an email overwrite each other
- If you use a workflow to create attachments that aren't saved to the
database, then adding them as attachments to an email results in only the
last one being attached to the email.
- BUGFIX: ExecuteSystemCommand actions forgot the order of the arguments
Back to Top
8.3.6 March 14th, 2018
Changes
- Assign a resource a random colour when you create a new one
- It was receiving the same colour all the time (red).
Bug Fixes
- BUGFIX: Property definition validation can give exception on saving a
misconfigured property when it shouldn't.
- BUGFIX: Emails with attachments and text were not showing the attachment
- We were setting the content type to multipart/alternative instead of
multipart/mixed, so mail clients were free to ignore the attachment.
- BUGFIX: System Event search page can generate exception depending on
biskit definitions.
Back to Top
8.3.7 March 16th, 2018
Security Bug Fixes
- SECURITY BUGFIX: Private data stored in bookings displayed unfiltered
- A problem was introduced in 8.3.0 which caused bookings information not
to have information removed according to the permissions settings.
- This means you could see all details in the calendar - even things that
should have been hidden.
- Anybody using 8.3 should upgrade to 8.3.7 immediately because of this bug
Bug Fixes
- BUGFIX: Function action with no function selected gives boot exception
- Upgrading fails at boot time with an exception.
- BUGFIX: Executing system commands doesn't set default working directory
- If you leave the working directory set to null when running an
Execute System Command workflow action, it should set the working directory
to a default for the workflow. But this doesn't happen.
- Newly created files where you don't specify a directory were already
getting created in the workflow-specific temporary directory.
Back to Top
8.3.8 March 22nd, 2018
Changes
Bug Fixes
- BUGFIX I2137: TotalTimeBooked rule displayed time limits badly
- BUGFIX: Displaying history of a BiskitDef caused an exception
Back to Top
8.3.9 March 28th, 2018
Changes
- Downgraded database driver (mariadb-java-client) from version 1.7.3 to 1.1.10
- We are still seeing some production problems with 8.3 whereby the server
loses its ability to talk to the database.
- This switches the driver back to the version used in 8.2 where we had
no problems.
- Add extra version of toJson function that does not emit null valued properties
- Normally, when converting a biskit to JSON, any properties on the biskit
that are null get written to the output JSON so that it specifies the
value of the property to be null.
- However, some APIs (such as HL7/FHIR) specify that when a value is null,
the property should be omitted from the JSON.
- There's now a version of the toJson function that lets you choose
whether to emit or omit null-valued properties.
- Add new Custom Function Workflow Event
- This lets you define a function name along with a set of inputs and
outputs, and it creates a workflow function for it.
- That function then calls the event which should use the inputs and
write to the outputs.
- This means you can directly call one workflow from another, and can be
used to avoid duplicating actions when you need to perform identical
work in multiple places.
Add version of createAttachment workflow function to let you specify
attachment name rather than just taking the name from the source file.
Add workflow function logSystemEvent for logging system events
- Add stdout/stderr naming to ExecuteSystemCommand
- By default, when you run an ExecuteSystemCommand action, it generates a
random name for the files that capture the command's standard output and
standard error.
- You can now optionally choose a name for these.
Bug Fixes
- BUGFIX: Exception on typing a period as biskit type in bakery
- Biskit types can have a single period in them.
- But if you type a name like "foo.bar" as the type of a new biskit you're
defining, then when you type the period, it gives an exception
Back to Top
8.3.10 March 29th, 2018
Changes
Bug Fixes
Back to Top
8.3.11 April 6th, 2018
Changes
- Reduce verbosity of API so much less information gets logged during calls
- This should make the API slightly faster, and the logs less noisy
Bug Fixes
Back to Top
8.3.12 April 12th, 2018
Changes
Bug Fixes
- BUGFIX: Workflow event with conditions on weekOfYear or dayOfWeek failed
- There was an exception on running workflows when checking an event to
see if it should be triggered whenever the event had a condition on
the meta property date.weekOfYear or date.dayOfWeek.
Back to Top
8.3.13 April 15th, 2018
Changes
- Add current time/date marker to day, week, vertical and timeline calendars
- This shows a red line to indicate when the current date and time is.
- Improve checks on login name/identifier when creating or updating users
- We not support the notion of authentication methods that let you provide
a nick name as well as a login identifier.
- This is intended for those authentication methods (typically some
flavours of single sign on) that are configured such that the unique
login identifier we receive is extremely long. This can happen with some
configurations of Shibboleth.
- So as well as the (potentially long) login identifier, there's a separate
login nick name.
- When creating or updating a user through a workflow, rather than through
the user interface, we weren't checking the login name and identifier
properly. We now ensure they are set up correctly.
- In all situations, on creating a user, you must provide a login
identifier. This was not previously checked.
- When an authentication method is not configured to allow customisable
nick names, then the nick name is now forced to be the same as the
login identifier.
- When an authentication method is configured to allow customisable
nick names, and a user is created from a workflow without a
nick name, then the nick name is set to be the same as the login
identifier.
- Customise "Create" button label for workflow & workflow biskit type button
- This has been done because it was confusing in the workflow manager
whether the "Create" button was going to create a workflow or the new
UserWorkflowBiskitTypeButton.
- Remote PC actual usage methods updated to handle a brand new method.
- The new method is called CAR (Calpendo Activity Recorder) and is a
stand-alone Windows native program that runs both as a service and also
an instance in each user session.
- CAR:
- authenticates the user, using your choice of authentication method
such as relying on the local Windows authentication, LDAP,
Active Directory or sending a username/password to Calpendo.
- Keeps track of particular processes that are running.
- Asks Calpendo for authorisation for the user to run those processes.
- When CAR finds one of its target processes running, and the user
has not been authorised, then CAR will can kill or close the process,
or warn the user they shouldn't be using it, or do nothing.
- All activity is recorded in the Calpendo database.
- The format of the data sent over the network has changed, which means
that if you have installed either the pGina or PowerShell methods of
gathering remote actual usage information, then you will need to
upgrade to the latest versions to remain compatible.
- The data recorded in the Calpendo database has also changed slightly.
Security Bug Fixes
- SECURITY BUGFIX: Conditions checking group membership can give wrong result
- This was observed in a workflow rather than in permissions, but it is
conceivable that the same bug could affect permissions as well.
- This means it is possible a permissions check that relies on checking
membership of a user group, project group or resource group could give
the wrong result.
Bug Fixes
- BUGFIX: Occasional error displaying bookings calendar background templates
Back to Top
8.3.14 April 17th, 2018
Changes
- Add support for remote activity recording when Calpendo not on same network
as the instrument being monitored
- When you have a PC that has an instrument attached, there are four
different methods available for recording who is using the instrument,
and possibly preventing unauthorised people from using it.
- All the information is sent to the Calpendo server for collation.
- We used to rely on the apparent IP address of the PC, as seen from
Calpendo, to identify the instrument. However, when the Calpendo server
is on a different network (for example instruments on a university
network and the Calpendo server on an Exprodo Software server), then
the IP address would normally get mutated so that Calpendo would think
all instruments are on the same IP address.
- Whether this happens depends entirely on the way each university sets
up their networking, but it would be normal for us not to see the
instrument's IP address.
- We have now modified the data being sent to Calpendo so that the
PC will put its IP addresses into the body of the message, allowing us
to identify the instrument even when we are on a different network.
Bug Fixes
- BUGFIX: Some users can't log in when add custom property of user to UserType
- BUGFIX: The new time-of-day-marker appears on top of the create booking pop-up
Back to Top
8.3.15 May 8th, 2018
Security Bug Fixes
- SECURITY BUGFIX: Permissions relying on UserGroup can fail in reports
- When running a report on biskits that contain user groups (such as a
Calpendo Resource, which has a reference to its manager user group), if
you have permissions that rely on the content of that user group to
control access to the original biskit (eg the Calpendo resource), then
that permission will likely fail.
- This is because the server didn't load all the data from the user group,
and so the result is that checking whether a user is a member of the user
group could give a false negative.
- The most likely impact of this bug is that people won't see data they
should have access to, since that's what would normally happen with a
Calpendo resource and its manager user group. But there could be other
situations in which this could give a false positive, and so this is
marked as a security bug.
- This problem could be demonstrated by adding a custom property onto a
Calpendo resource to store a user group, and then having resources
EXISTS permission that requires you to be a member of the user group
referenced on the resource.
- From the resource editor page, you would then see a tree of resources
correctly, but if you run a search for resources, it would find none
because of this bug.
- SECURITY BUGFIX: Brute force login checking not enforcing temp blocking
- When you have too many failed login attempts in too short a time, we
would send an email back to Exprodo Software so we knew when it happened.
- However, it was supposed to temporarily prevent logging in, even with the
correct password, if there had been too many failures.
- This temporary blocking of an account was not happening.
- It used to happen, but a change made quite some time ago broke it.
Changes
Make time-of-day marker less obtrusive by being transparent
Add support for disabling time-of-day markers, with both a global and user
setting.
Add tooltip to the time offset displayed in a RelativeTime workflow event
to help people see when they need a positive or negative offset.
- Add recording of version numbers from remote activity recorders
- This applies when using one of our methods for gathering actual usage
information from PCs with instruments attached.
- Add permissions check before allowing user to execeute a UserWorkflowEvent
- You can now add buttons that will execute a UserWorkflowEvent from a
workflow.
- So we now add a security check to make sure this is okay.
- In support of this, there is now a new standard permission that lets
anybody execute any UserWorkflowEvent. Just change the permissions to
change who can run which event via the new workflow buttons.
- Add new workflow function createTemporaryFile
- This creates a new temporary file from either an attachment or an
operating system file.
- Add support for user workflow buttons to download a file to the browser
- UserWorkflowEvent's response now has another property you can set, called
downloadableFile, that you can set.
- Just create a TemporaryFile with the contents you want the user to
download.
- Mark unloaded properties as such
- When data is searched for (either in reports or elsewhere), we sometimes
load a subset of the available data because we only need that subset.
- However, the other data that hasn't been loaded looked like it was
loaded, but was null.
- We now mark all unloaded properties so that we can't accidentally use
such values.
- Throttle the rate at which exception reports can be emailed home
- Errors often generate a report that is emailed back to Exprodo Software.
- Some errors can occur with a high frequency causing an email flood.
- These are now grouped into fewer messages.
- Add RPC request info to system events relating to workflow errors & events
- This means system events will now carry information about what initiated
a workflow on those system events that relate to either an error or to
the start or completion of a workflow event.
Greyed-out buttons display a no-entry sign for the mouse when you hover over
them.
- Optimise method for obtaining a sample of a particular biskit type
- Reports and other parts of the system need to obtain a sample biskit of
various biskit types.
- Constructing these samples takes time.
- Samples are now cached, which makes it much faster to obtain a sample.
- This means reports run a little faster (about 10% in the cases measured)
and the other affected parts of the system will be faster too.
- Optimise reports when a query references a single-path reflexive reference
- Some biskits have a special property that refers back to themselves.
- For example, User and Resource both have a "self" property referring
back to the owning user and resource.
- When running a report, some columns must be loaded beyond those that
a user specifically asks for. This can happen so that we can check
permissions and a few other reasons.
- When trying to load a property like User.self or Resource.self, it used
to handle that inefficiently because the reporting system did not
recognise it as a reference back to the original user/resource.
- It now correctly handles this which means affected reports run a little
faster.
- Add new workflow function substring for extracting a part of a string.
- You could already achieve this using a FindTextWorkflowAction, but
that would require regular expressions and was more complex than it
needed to be.
- Adding a substring function makes things simpler when it matches your
use case, and one might also expect such a function to exist.
- Add Workflow Manager button to open all children of selected trigger
- Sometimes, you have a workflow with many events, and want to open up
all the action below a particular event.
- There's now a new button labelled "Open Selected" to do just that.
- This avoids having to open things manually, or else click "Open All"
which would open up all events and actions, which may be more than
you would like.
Bug Fixes
- BUGFIX: BiskitDef stored inside workflow events can be wrong version
- When running a workflow, if an event that is triggered holds a reference
to a BiskitDef, it could have been looking at an old version of the
BiskitDef, and so done the wrong thing.
- BUGFIX: RelativeTime events were being run regardless of their conditions
- If you added conditions to a Relative Time event that meant the event
should not run, it still would run.
- BUGFIX: Custom Function events displayed with the wrong name
- They displayed with a name like "Variables #1 - Name" instead of
"Custom Function #1 - Name"
- BUGFIX: Time-of-day marker in wrong place when server in other timezone
- If the server and browser are in different time zones, then the
time-of-day marker was showing in the wrong place.
- BUGFIX: Could not delete repeating template THIS_ITEM (gives exception)
- This got the exception "could not initialize proxy - no Session"
- BUGFIX: Button to create workflow button fails when no user workflow events
- A workflow button is a button that exists to execute a user workflow event.
- If there are no user workflow events, then there can be no (useful)
buttons to run one.
- However, the UI shouldn't fail in this situation, which is what it did.
- BUGFIX: Some rules fetch data they didn't need to, giving an exception now.
we mark as unloaded those properties that aren't loaded from the database.
- There wasn't a problem here in earlier released.
- However, the change to mark unloaded properties means this would have
been a bug in 8.3.15.
- BUGFIX: Add custom hidden props to UserSettings crashes settings editor
- BUGFIX: Some 8.3 databases have wrong JavaEnum for RemoteUserLog.type
- This was fixed in 8.2.51, but any 8.3 database created before 8.2.51
would have the wrong JavaEnum for RemoteUserLog.type.
- BUGFIX: Asking for history of a BiskitDef stopped Calpendo from working
- The main BiskitDefStore would become corrupted; some of the properties
were enshallowed by BiskitReader. This prevented anybody from getting to
the login page.
- BUGFIX: Exporting complex workflow takes long time and then fails
- BUGFIX: Searches for bookings in workflow lose some search parameters
- When you have a search within a workflow, and you're comparing a value on
the biskit being searched for with a value from the output of an earlier
action, then the output from the earlier action is treated as if it were
null.
- This applies to anything that repeats, such as bookings and templates in
Calpendo and Event in Exprodo SDM.
- BUGFIX: Workflow function bitwiseNot was accidentally named bitwiseAnd
- This means the function bitwiseAnd had two versions - one doing the
right thing, and one doing the work of bitwiseNot.
- BUGFIX: Windows XP version of pGina plugin for recording actual usage didn't
work
- The problem was that it was linked with the .Net 4.5 version of the
Newtonsoft Json DLL, and it required the .Net 4.0 version, since
WindowsXP cannot have .Net 4.5, but it can have .Net 4.0.
- BUGFIX I2134: Horizontal view not set resource on click except top resource
- When you click in a horizontal view and you see the booking pop-up, it
should automatically fill in the resource according to where you clicked
in the view.
- But it only did this when you clicked in the area for the resource
displayed at the top; for other resources, it would leave the selected
resource unset in the booking pop-up.
- BUGFIX I2150: Template calendar doesn't show new resource when select it
- Clicking on a resource in the template calendar's resource selector
would not change the displayed resources.
- Ctrl-click or shift-click would change it, however.
- BUGFIX I2149: Old templates could not be edited - even when can create them
- You can now create bookings in the past, so long as you do so during a
period in which the resource indicates it supports any changes to old
bookings.
- However, you were not allowed to edit old templates, even in the region
during which any changes were allowed to old bookings.
Back to Top
8.3.16 May 9th, 2018
Bug Fixes
Back to Top
8.3.17 May 10th, 2018
Bug Fixes
- BUGFIX: UserGroup member test fail in DoubleBookingRule bookings to ignore
- If a double booking rule includes a condition in the "bookings to ignore"
tab that ignores bookings not in the manager's user group, then
the rule will fail in a way that prevents bookings being made.
Back to Top
8.3.18 May 10th, 2018
Changes
Bug Fixes
- BUGFIX: bitwiseOr and bitwiseXor functions had wrong names
- They were both called bitwiseAnd, so it was overloaded with the wrong
things.
- BUGFIX: Custom functions forgot the underlying details its outputs
- If you created a CustomFunctionWorkflowEvent, and added an output that
was a Biskit, and maybe another that is a MappedInt, then when you call
the function this generates, the output of that function would forget the
particular type of biskit that it outputs, and the particular type of
MappedInt it outputs too.
Back to Top
8.3.19 May 11th, 2018
Changes
- Add system event when a reminder is scheduled or descheduled
- This makes it clearer to somebody looking at the system events when and
why a booking or something else generated a reminder, by seeing the context
within which the reminder was added.
- Prevent reminders from triggering on items that no longer exist
- If you try to create a booking, and it passes the rules and templates,
then a reminder will be scheduled if it asks for one. If that reminder
is due in the next 24 hours, then the reminder manager will cache it and
be prepared to send a reminder.
- However, if a workflow examines the new booking and vetoes its creation,
all the above still happens, but the database transaction is rolled back.
- This means a reminder is added for a booking that never got commited to
the database, although it did get past the first stage of checks and got
as far as being assigned a unique database ID.
Bug Fixes
- BUGFIX: Read-only bookings calendar view for TV screen style display broken
- We can display a read-only non-interactive view of the bookings calendar
that is accessible by anybody without logging in.
- This is particularly good for displaying in a building entrance or
perhaps on a tablet outside a meeting room, but can also be used to
provide read-only access to people who don't need to create or change
bookings.
- For people that need a read-only view of the bookings calendar, this is a
simple way to view bookings and they don't count towards your licensed
number of users.
- However, a change in 8.3 caused this to break.
- BUGFIX: Workflow function copy(list,list) fails when source list is null
- There was already an error given when the destination list is null, but a
NullPointerException if you give null for the source list.
- This has now been changed so that provide a null value for the source list
is treated identically to providing a non-null, but empty source list. That
means the destination list would end up empty.
- I2154: Bad RepeatableHandler system event msg when no biskits of some type
- When RepeatableHandler generated a system event with a table showing its
currently cached items, it did so with some partly broken HTML that
displayed okay on some browsers and badly in others.
Back to Top
8.3.20 May 15th, 2018
Changes
- Reduce number of emails when multiple exceptions occur
- We recently changed the way automated exception report emails are sent
back to Exprodo Software so that there would be fewer of them.
- When a batch of exceptions happened in quick succession, there would
typically be two emails - one with the first exception, and then another
email with the rest.
- This change now means these would be batched up in a single email.
- If you add yourself as a bcc on all outgoing emails, then you will be
able to see the exception report emails, and so see the difference.
Otherwise, you won't notice.
- Add button to validate function calls in workflow manager page
- Add union workflow function that works with non-biskit lists
- There was already a union function that would merge two lists of biskits,
but we now can merge lists of anything.
Bug Fixes
- BUGFIX: Read-only bookings calendar view for TV screen style display broken
- This is another fix for a related problem that was fixed in 8.3.19.
- Diffreent customers were affected differently, so the 8.3.19 fix worked
for some, but not all.
- This should fix the problems for everybody.
- BUGFIX: Saving new dynamic BiskitDef sent false positive error email home
- When saving a new dynamic BiskitDef, the system would think there was a
problem, and send an error report back to Exprodo Software.
- There wasn't actually a problem, and it handled it correctly apart from
sending the email.
- BUGFIX: Some users cannot log in with shallow error from menu
- This is highly dependant upon your configuration, and so was only seen
with one user across our whole user base.
- This problem prevented a user from logging in because it wasn't handling
an interaction between menus, reports and permissions properly.
Back to Top
8.3.21 May 16th, 2018
Changes
- Add time of day marker to read-only anonymous bookings calendars
Bug Fixes
Back to Top
8.3.22 May 19th, 2018
Changes
- Add protection against a ResourceUsage being created without a resource set
- Send the reason for a user not getting authorised for a remote activity
recorder to the remote activity recorder.
- This is for when you are monitoring remote activity on a PC driving an
instrument, and want the user to know why Calpendo has decided not to
authorise them to use the instrument.
Bug Fixes
- BUGFIX: New user registration broken for external authentication methods
- For example, those using Shibboleth could not register as a new user
because their identifier was discarded.
BUGFIX: Exporting workflows could generate illegal SQL
BUGFIX: API fails to display list of rules
BUGFIX: Some requests sent in duplicate from the browser to the server
Back to Top
8.3.23 May 22nd, 2018
Bug Fixes
- BUGFIX: New user registration was broken for local users
Back to Top
8.3.24 May 24th, 2018
Changes
- Redirect to new user registration if unregistered external user tries login
- When using an external authentication method (eg Shibboleth), and a
person who is not registered as a user in Calpendo tries to log in,
we used to tell them that they need to register as a user first.
- Instead of doing that, we now automatically take them to the new user
registration page.
- It means that for an external authentication method (such as Shibboleth)
an unregistered user can either click the "Register new user"
button or click the button for their authentication method directly
from the login page.
- This should make the process easier for those who haven't registered
with Calpendo before.
- Change the label in LDAP-related drop-downs that ask whether to blindly
trust the "email" server.
- It's not an email server, so a drop-down value of
"Blindly trust email server" was confusing.
- It now says "Blindly trust server" and a tooltip explains in detail
what it means.
- Add support for forcing users to re-login after they change their password
- There's a new global preferences option in the Security tab for this,
and the security tab has been simplified by moving multiple sections
within a single caption.
Bug Fixes
Back to Top
8.3.25 June 11th, 2018
Changes
Change import progress report percentage display from 0 to 1 decimal place
Add estimated total import time to display of import progress
Add workflow function strlen to calculate the length of a string
- Add better error message when trying to order a service without order def
- If you create a service definition without telling it what order definition
to use, then creating an order for that service cannot work.
- This change makes the error message much better.
- Make PropertyDefSelector tooltip show the title of the selected PropertyDef
- For example, when selecting properties to update in a workflow's
Biskit Update Workflow Action, it will now tell you about the selected
properties.
- Extend UserWorkflowEvent to support dynamic workflow-driven pages
- A UserWorkflowEvent's response now has two extra properties you can set:
- pageContent - this is text or html to be displayed in the browser
- nextUserWorkflowEvent - this is the UserWorkflowEvent to be executed if
and when a form is submitted from the HTML content specified by
pageContent.
- A UserWorkflowEvent itself now one extra property:
- formContent - this is a biskit that contains information about a form
from a previous pageContent call that has just been submitted.
- The formContent biskit has properties:
- Add support for customised messages when a user tries to log in but can't
- In particular, if a user has registered a new account, but it hasn't yet
been approved.
- In that case, it is better to tell them they need to wait for their
account to be approved than to just tell them they can't log in.
- The messages are set in Global Preferences and then on the Users tab.
Moved session timeout and minimum number of characters in user's login name
from the Global Preferences "Users" tab to the "Security" tab.
- Provide good message to externally authorised user when cannot log in
- When a user registers, their status is requested and they can't log in
until their request has been approved.
- If they use an external authentication method, then on trying to log
in while their status is requested, they would get a horrible browser
error message instead of a nicely presented one with appropriate text.
- Add workflow process ID to more system events
- This makes it easier to follow the flow of a workflow when reading the
statem events because everything from a single execution of a workflow
event should now show a process ID.
- Add automatic memory monitoring storage in the database
- This records a new "System Status" biskit that captures memory usage
information.
- This is likely to be augmented over time with further information.
Default RunUserWorkflowEvent page's "waitForEvent" to true in menu editor
Remove workflow buttons and disable menu items whose user workflow event is
disabled
- Allow getAsX workflow functions (eg getAsString etc) to handle null biskit
- These are functions that extract a property of a given name from a biskit.
- They now simply return a null value for the property if the biskit
supplied is null.
Add button label to information given back to user workflow event
- Use custom UserWorkflowEvent selector when editing workflow
- A workflow that calls a BiskitUpdate to set the next UserWorkflowEvent
to some specific, fixed value used to get the default biskit selector.
- This isn't as nice as the custom one used when editing biskit type buttons
in the workflow manager. This change makes this nice selector be used here
as well.
- Add support for osVersion, hostname & json storage on RemoteUserLog
- This is the Calpendo half of an up-coming change to out remote actual
usage recorders.
Bug Fixes
- BUGFIX: Rendering a biskit with a hierarchy property could give exception
- This could only apply when a biskit-valued property used a biskit that
was configured as a hierarchy.
BUGFIX: System events page was showing user numbers instead of user names
BUGFIX: Import preview generated exception
BUGFIX: Send manual email with only HTML msg filled in & it says msg empty
- BUGFIX: User Workflow BiskitTypeButton produces exception on double click
- In the workflow manager, the first time you click on the definition of a
workflow button after refreshing the browser, if you double-click it,
then the second click generates an exception.
- BUGFIX: Exception on fetching templates if a displayed resource is deleted
- If you delete a resource, and somebody has a Calpendo open viewing that
resource, then looking at bookings/templates gives an exception.
- Avoid benign error raised about MetaProperties when run DelayAction
- Whenever a DelayAction is run, you get an error saying it can't create an
instance of MetaProperties. This state doesn't cause any problems, it
just sends an email home to Exprodo Software unnecessarily.
- This fix avoids the error being raised in the first place.
- BUGFIX: Delay actions corrupt some data from before delay
- When you have a delay action, and after the delay the workflow accesses
some values calculated before the delay, some values are not set correctly.
- This happens because the properties on some of the objects are not loaded
eagerly, but only when required. However, the objects were marked as if
the data were already present, so it didn't behave properly.
- This fix requires that a new method BiskitReader.close() is called after
you've finished using a BiskitReader whenever you use methods that pass
in a JsonObject or JsonArray.
- Methods that pass in the JSON as a string do not need to be changed
because the biskits are "closed" automatically.
BUGFIX: Buttons without a user workflow set on them caused an exception
- BUGFIX: Double booking rule doesn't notice clashes with all repeat bookings
- When you create a booking that clashes with the time of anything other
than the first instance of a repeat booking, the double booking rule
doesn't notice that they collide.
- This bug was introduced in 8.3.15.
- BUGFIX: automated properties shown while creating bookings from the calendar
- It is standard practice that, when creating a new biskit, the user is not
shown any property that is marked as being automated during the creation
process.
- However, when creating a booking from the calendar, this general practice
was not adhere to.
- This fixes it so that any custom booking properties marked as automated
when creating a booking will not be shown in the booking pop-up.
Back to Top
8.3.26 June 12th, 2018
Changes
- Add tooltip to the Validation Function Calls button in workflow manager
- Add tooltips to buttons displayed on viewing biskits
Bug Fixes
- BUGFIX: Cannot veto creation or deletion of biskits in a workflow
Back to Top
8.3.27 June 18th, 2018
Changes
- Sort user groups by name (by default) when editing user
Bug Fixes
Back to Top
8.3.28 July 2nd, 2018
Changes
- Improve handling of function actions that don't specify function to call
- When a function action doesn't specify which function to call, it
generated a null pointer exception. It no longer does that, and instead
will generate a system event that records the problem, while the
function behaves as if the action did not run.
- This means no child actions will execute when a function action is
defined with no function.
Bug Fixes
- BUGFIX: Exporting Custom function workflow events produced bad SQL
- The generated SQL did not know whether each item on the custom function
was an input or an output.
- BUGFIX: Custom function references generate incorrect error at boot time
- If you have a reference to a custom function, then an error is logged at
boot time which should not be. There was nothing wrong.
- BUGFIX: Export of custom functions did not persist the order of items
- This means that function signatures could not match when you exported and
re-imported.
- BUGFIX: A relative time event could fire twice
- If the actions attached to a relative time event modify the biskit that
triggered the event, then it would be possible for the relative time event
to trigger again immediately.
- This was due to the way the timer manager has its own notion of the
current time, which can be different from the wall-clock time. That's
done so that if the system reboots, any events that should have happened
while it was down would not be missed.
- However, it had a flaw which meant it could sometimes rerun an event.
Back to Top
8.3.29 July 5th, 2018
Changes
- Display custom collection properties added to Resource in a tab
- If you create a new oneToMany property on a resource, then it is
consistent with the rest of Calpendo for it to appear in a tab. It was
displayed in the table with most of the regular resource properties.
Bug Fixes
Back to Top
8.3.30 July 17th, 2018
Bug Fixes
- BUGFIX: Cannot write date into and then read from variables daterange prop
- If you run a CreateVariables workflow action, and specify you want a
DateRange property, and then you use a BiskitUpdate action to set the
start or finish of that DateRange, then it will trash the value of the
DateRange, replacing it with a DateTime.
- If you then later read from the DateRange, you will get an exception
as it then notices the value is of the wrong type.
- This error is specific to CreateVariables when using DateRange properties.
- BUGFIX: Logout & log back in without refresh could show wrong layouts
- When different users are supposed to see different layouts, logging out
and back in as a different user would mean you would always see the same
layout as the previous user.
- This was caching layouts and not destroying the cache on logout.
Back to Top
8.3.31 August 12th, 2018
Bug Fixes
Back to Top
8.3.32 August 20th, 2018
Bug Fixes
- BUGFIX: Read-only calendar BookingsWeekView function fails when no bookings
- If no bookings exist (in the desired time frame) then the read-only
calendar does not work.
- BUGFIX: create booking ending at midnight using mouse drag and it shows the
end time as 23.59 instead of 24.00
- BUGFIX: A time slot ending at midnight causes Calpendo to try to create a
booking with the end time before the start time
- BUGFIX: Only last change in addToGroup/removeFromGroup took effect
- If you call addToGroup or removeFromGroup multiple times in response
to one workflow event, then only the last call would take effect.
Back to Top
8.3.33 August 22nd, 2018
Security Bug Fixes
- SECURITY BUGFIX: Remote activity recorder passwords stored clear text
- If you are using CAR or pGina to record activity on a remote system, and
using Calpendo as an authentication method, then the password the user
enters was being stored in the data when we keep a record of the JSON
being sent to the server.
- We don't know of any customers this affects, but this update fixes it
by removing the passwords before saving, and also removes all JSON
records already in the database for messages of type AUTHENTICATION.
Bug Fixes
- BUGFIX: MappedInt with spaces in the name causes custom function problem
- A custom function event in the workflow manager that has an input or
output with an integer that is a mapped int, where the mapped int's name
has a space in it, causes the workflow to fail and the UI to show
exceptions when you view it.
Back to Top
8.3.34 September 5th, 2018
Bug Fixes
- BUGFIX: NPE (in development only, not production) on create report
- Create a report from the resource usage search page, then go to that
report in the report manager, and then click the Create button.
That gives an exception, but only in development mode.
- The semantics are slightly different in production because the compiler has
done optimisations to work out which virtual method to call, so it
doesn't notice when calling a method on a null object.
BUGFIX: Refining a previous search applied no limit nor set first/last
BUGFIX: Create a copy of a BiskitDef in bakery and the group is not copied
- BUGFIX: System events don't show correct CRUD for workflow events
- Instead of the system event showing the value for the CRUD property as
something like "Create" or "Update", it would show "UnknownType#0"
BUGFIX: Sort workflow action randomly and it shows weight path et al
- BUGFIX: Remote activity recorder logout triggered user identification event
- There should be no need to trigger a RemoteUserIdentificationEvent when
somebody logs out; we are given their primary key, or not, and should just
rely on that instead.
- BUGFIX: Workflow func getBookingTemplates misses repeats ending same day
- The function getBookingTemplates is given a booking, and returns the
templates that apply to it.
- However, if a template repeats and the last repeat is on the same day as
the booking, then that template is not returned by the function.
- BUGFIX: Cancel a middle repeat booking this-and-later left extra booking
If you have a repeating sequence of bookings, and you cancel one of the
repeats (but not one of the first two) and choose "This and later" as the
option for which to change, then you would end up with:
- A repeating sequence for everything from before the instance you
asked to be cancelled (this part is correct).
- A non-repeating booking at the date/time of the instance you asked
to be cancelled. This is clearly wrong, and this booking should not
have been retained.
Back to Top
8.3.35 September 7th, 2018
Changes
- Log system events when authenticating via LDAP gives an error
- This should help to dignose issues in which the LDAP authentication
method is not configured consistently with the LDAP server.
Bug Fixes
- BUGFIX I2196: updating a report with checked editing gives an exception
- BUGFIX I2197: Error showing list of biskits with no props visible in list
- If you define a biskit to have no properties visible in a biskit list,
then by default, we can't show a list of them.
- This wasn't handled very well, and now shows a good error message.
Back to Top
8.3.36 September 19th, 2018
Changes
- Change mouse cursor over calendar to indicate you can click
Bug Fixes
Back to Top
8.3.37 September 20th, 2018
Bug Fixes
Back to Top
8.3.38 October 4th, 2018
Bug Fixes
- BUGFIX: Renumbering workflow did not renumber veto actions
- This also means that when copying and pasting actions, if there's a
veto action that references a variable value, then the variable value is
not renumbered to reference the appropriate new source but is left as
it was.
- Consequently, a renumber or copy/paste would leave a veto action
in a broken state is the veto uses a variable value for its message.
- BUGFIX: Cannot add or remove property definitions in MariaDB 10.2.4 or later
- If you host your own Calpendo, and use MariaDB 10.2.4 or later, then
the bakery wouldn't work as normal.
- This is due to MariaDB introducing a new keyword called "rows" which
clashes with a column on the property_defs table.
- This fix renames the column to avoid the clash.
Back to Top
8.3.39 October 31st, 2018
Changes
- When action succeeds but won't run its children, mark system event as such
- This makes it easier when looking at system events to see whether a
TypeCastAction matched or not.
- Display good properties for CreateVariablesAction in system event
- Add collection size to ForEachWorkflowAction output
- When you run a for each and loop through its contents, the output of the
foreach now shows the number of items in that collection as well as the
current index.
- Add function name and signature to output of function workflow action
- Display details of output from evaluate expression in system event
Bug Fixes
- BUGFIX: Multiple threads not stopped when server shuts down
- This generated warnings from tomcat about memory leaks, although
tomcat was able to handle it and prevent a leak.
- BUGFIX: Occasional exception on trying to log in
- BUGFIX: Exception if expression workflow action output is (correctly) null
- If the output from an expression workflow action evaluates to null, then
there was an exception rather than simply letting the result be null.
- BUGFIX: intersect function did not return consistent results
- BUGFIX: Non-notifiable exceptions during workflow still sent email home
- For example, when a booking rule is contravened by a workflow, the rule
exception is marked as a non-notifiable exception. When a user triggers
a booking rule, there's no email back to Exprodo.
- However, when it's a workflow that triggers a booking rule, it did
generate an email.
- BUGFIX I2211: References to user not showing SystemUsage biskits
- This was because SystemUsage was marked abstract.
- BUGFIX I2210: Time drop-down in 12 hour mode in BookingPopup showed
12:00PM twice
- BUGFIX: Time entry box interprets "12am" as noon and "12pm" as midnight
Back to Top
8.3.40 November 6th, 2018
Bug Fixes
- BUGFIX: No message shown to user after new external user reg with redirect
- If you have an external authentication method set up and it is configured
to use a redirect after authentication to get back to Calpendo, then
the new user registration process does not show the message to the user
asking them to wait for the administrator before trying to log in.
- BUGFIX: Login after external redirect new user registration fails
- If you have an external authentication method configured with a redirect,
and then register a new user, then immediately logging in with a local
user goes to the new user registration page.
- Also, if you try a new user registration but cancel it, then a
subsequent login would fail if the new user registration was for an
external auth with redirect.
- BUGFIX: Discontiguous sibling_order in BookmarkElement prevents login
- If you have a bookmark whose elements are not contiguously numbered from
zero upwards, then after login the server generates a null pointer
exception preventing the browser from downloading all the data it needs
at boot time.
- This made the system is unusable for users whose bookmarks were broken
in that way.
Changes
Back to Top
8.3.41 November 12th, 2018
Bug Fixes
- BUGFIX: Login was unnecessarily slow due to handling bookmarks badly
8.3.42 November 29th, 2018
Changes
- iCal feed was only updating every 48 hours (changed to 1 hour)
- Title for bookings in iCal feed changed to display the owner instead of the
booker.
- Disable ical by default in new systems
- This is so that you won't be caught out by having a public feed that you
knew nothing about.
Security Bug Fixes
- SECURITY BUGFIX: Existing iCal feeds continued to work after disabling
- If you disabled iCal feeds in the global preferences, it prevented users
from using the tool on the calendar from generating a new feed URL, but
did not disable the feeds themselves.
Bug Fixes
- BUGFIX: If you set a permission to hide userIdentity from special user
nobody, it breaks the ical feed
Back to Top
8.3.43 December 7th, 2018
Changes
- Require a user to be logged in to download a single booking as an ics file
- This applies when you click on a booking in the calendar and select
Download from the menu.
- Previously, the link used to perform the download was available to
people without logging in, but it now requires you to be logged in
for it to work.
- Add support for option to disable webdav API
- This is a precaution in case the webDAV API is found to have a security
issue in future, so it can be turned off.
Security Bug Fixes
- SECURITY BUGFIX: Exception with ical if hide resource name
- An ical feed includes the name of the resource it applies to, when the
feed includes only one resource's bookings.
- If you set permissions so that the resource name cannot be read in an
ical feed, then this caused an exception that prevented the ical feed
from working.
- SECURITY BUGFIX: Server IP address was embedded in ical feed
- This was used as a part of a globally unique identifier for each booking,
as required for ical.
- This has been changed so that instead of using the server's IP address,
it now uses the hostname from the public-facing web address of the server.
- This is configured in the global preferences.
Bug Fixes
- BUGFIX: Special user 'nobody' not protected from having status changed
- The user called "nobody" is a special user that is used for checking
permissions of variaous things. For example, data can go into an email
only if user "nobody" can read it.
- This user should never log in.
- Now regular users can't edit other users according to the default
permissions. Admins normally can.
- However, no user (not even root) should be able to change the status of
user "nobody" because it never makes sense to allow this user to log in.
- This fix now enforces this on all users, even root.
Back to Top
8.3.44 December 9th, 2018
Bug Fixes
- BUGFIX: The change in 8.3.43 to add the option to disable webdav produced
a database upgrade error.
Back to Top