3.15.0 Platform Release

v3.15.0 release date is April 25, 2019.

Version 3.15.0 is full of new stuff. Let’s see what we added for you in the following sections:

New Features

Check out the improvements in the following subsections:

Full and Limited Workspaces

Now there are two types of workspaces: full and limited. Full workspaces are well-known to you, so limited type is the new thing. Basically, in limited workspaces the workflows are set to stop automatically after a certain time period.

Limited workspaces are mainly meant for trial periods. Check out more info about them here. By default, your workspaces will be full. Here are some more technical details for those interested.

Contracts and Workspaces

There will be no more “stray” contracts, meaning that any contract will always have an Owner. The first member of a contract will automatically be assigned the role of Owner. Also, you cannot just leave the contract without “administration”. If you’re the last member, you can either delete the contract or terminate your account from the platform. As a general rule, if the last member is removed from the contract, the contract is deleted automatically. Check out the technical details.

You can now rename workspaces in the UI. That is, if you have the right permission, of course.

As a casual improvement, you can now enjoy optimized internal resource management in contracts.


All in all, we’ve made a few minor additions to improve performance. For example, we removed an entire tier of overhead by using pods instead of jobs for flows. While performance gain is not huge, all actions (retrieve sample, start/stop flow, etc.) are now faster, and this effect is cumulative.

Also, now user registration process is optimized. It works via API calls instead of directly via Database, which is generally better and more secure.

You can find details here.

Fixed Bugs

  • We updated JSONata versions used in the platform to 1.6.3, so all associated processes will go smoothly. Don’t forget to update mapper, router and JSONata-transform.

Technical Stuff

WARNING! Boring technical stuff ahead. Read only if you have to.

Full and Limited Workspaces Stuff

To define full type as default, set tenant.defaultWorkspaceType to full.

There is a new Wiper script that handles limited workspaces. It is a job stop-limited-flows that periodically stops flows in limited workspaces. Also, we implemented a new API endpoint for Wiper to get flows that have to be stopped in limited workspaces. The response consists of an array of IDs of flows that require stopping. You can modify the TTL (Time to Live) of the limited flows by using the environment variable LIMITED_WORKSPACE_FLOW_TTL_IN_MINUTES. The default value is 10 minutes.

The Wiper job suspend-tasks-with-failing-containers will stop failed flows in limited workspaces, instead of suspending them, as it does in the full workspaces.

Contracts and Workspaces Stuff

A user without owner role will not be added to empty contract via POST /v2/:contract_id/invites or POST /v2/:contract_id/members by default. POST /v2/contracts/:contract_id/members will return 409 if contract has no members and payload.role doesn’t contain owner. POST /v2/contracts/:contract_id/invites will return 409 if contract has no members and payload.role doesn’t contain owner.

To disable this effect you need to set environment variable DISABLE_CONTRACT_MUST_HAVE_OWNER to "true" into secret. After that it is possible to add member without owner role to empty contract.



Note: because of environment variables processing, the value false is being converted into a string ("false") and considered as truthy value. In order to set the behavior back to defaults, it is better to remove this environment variable from the secret at all.

To not create the default workspace

The default Workspace won’t be created in the following cases:

1. POST new member into the Contract.

2. Redeeming an invite.

3. New user registration.

The page with Create New Workspace button will appear instead.

Other Stuff

Added/changed environment variables that control CPU and memory requests/limits. Make sure the following environment variables are set:


All new pods in k8s are started with ImagePullPolicy: IfNotPresent.

Reset snapshot function is disabled while the flow is running. You can reset snapshot only when the flow is stopped.