Want to see it in action?
Version 4.0 "Punschkrapferl"
Punschkrapfen or Punschkrapferl (punch cake) is a classic Austrian confection of pastry with a fine rum flavor. It is a cake filled with cake crumbs, nougat chocolate, apricot jam and then soaked with rum.
We are a Viennese company and we like sweets – therefore we name our releases after Viennese sweets. “Punchkrapferl” with their pink, glossy glazing are exceptionally pretty – just like release 4.0, which comes with a shiny new user interface.
- Vault integration: reference to secrets changed
To support different vault engines, secrets now have to be specified using separate engine_path and secret_path.
Ref: CLOUD-6735, CLOUD-7031
- Flow API: system.get_own_user only returns a value when started by a user
The method system.get_own_user is deprecated and returns None if the execution was not directly started by a user. Use get_identity_created_by and get_identity_modified_by instead.
- Messages and Forms disallow special characters in field names
Names of all fields in messages and forms must only contain alphanumeric characters or underscores.
- Simple request form always returns data in the key string
The simple request form only allows string inputs and returns the entered value in a key named string.
- Flow API: File.get(‘content’) always returns a Base64 string
And File.save(content=data) always expects a Base64 string
New convenience methods are available:get_text_content, save_text_content, get_bytes_content, save_bytes_content, get_base64_content, and save_base64_content.
- Default data returned by webhooks changed
Unauthenticated webhook calls will return less data. New Flow-API methods webhook_response, webhook_html_response, and webhook_json_response are available to return any custom response.
- New User Interface
Clearer, cleaner, easier: the new user interface lets you focus on getting things done, instead of searching for buttons.
- Vault integration can now access all Vault engines
It is now possible to fetch secrets from any Vault engine using the Vault integration.
Ref: CLOUD-6735, CLOUD-7031
- Identity management
Cloudomation entities which access Cloudomation internally now carry their own identity. Their identity is recorded in the fields created_by and modified_by.
- REST connector now accepts hostname, base_path and path
It is now possible to specify hostname, base_path and path separately. Optionally the url input is still available.
- Webhooks can now return any HTTP response
A flow can set the HTTP status, headers and body of the response.
- Simple internal mail method
A simple Flow-API method send_mail to send mail to a Cloudomation user was added.
- Scheduling feature
Powerful and flexible scheduling was added as a native feature of Cloudomation.
- Vault integration allows to write key-value secrets
A Cloudomation execution can write secrets to a key-value secrets engine of Vault.
- Connection Analysis Plugin
Cloudomation provides a plugin which can be used to collect diagnostic information about a remote system with one click.
Plugins extend the functionality of Cloudomation by providing content and additional actions in the user interface.
- New connector type: SMB
Cloudomation can now access Samba/CIFS/UNC file shares.
- New connector type: SOAP
Cloudomation can now access SOAP services.
- Users will be locked out of Cloudomation when the log-in fails too many times
The user will immediately receive an email informing about the locked account and a link to recover the account by setting a new password.
Ref: CLOUD-6914, CLOUD-6861
- Catching a LifecycleSignal exceptions makes execution uncancellable
Using a broad except or except Exception clause rendered an execution uncancellable.
Solution: It is now impossible for an execution to catch LifecycleSignal exceptions.
- Flow-API resource listing commands unreliable
When resources are created or deleted while an execution iterates over the items of the resource the results might be inconsistent.
Solution: It is now guaranteed that all items which exist when the listing started are returned exactly once.
- Importing a plugin might create orphaned plugin action records
Some import structures might create duplicate and orphaned plugin action records.
Solution: The importing process was improved to avoid this.
- Flow-API: rename a resource using save(name=’new-name’) does not work
The resource is not renamed.
Solution: Renaming resources using save now works.
- On-premise git integration does not work with remotes using the ssh protocol
It is not possible to synchronize with a git remote using the ssh protocol.
Solution: A bug was fixed, it is now possible to use the ssh protocol in on-premise installations.
Ref: CLOUD-7040, CLOUD-6778
- Git integration does not properly encode username and password
When using the https protocol and basic authentication username and password are not properly encoded.
Solution: username and password are now properly encoded.
- Cannot delete a flow which already was used in an execution
A ForeignKeyViolation error is shown.
Solution: Flows can be deleted after they are used. The execution loses the reference to the flow.
- Cannot delete a connection which already was used in an execution
A ForeignKeyViolation error is shown.
Solution: Connections can be deleted after they are used. The execution loses the reference to the connection.
- Security fixes
During our recurring external security audit several issues were encountered.
Solution: Security issues were fixed.
Ref: CLOUD-6934, CLOUD-6933, CLOUD-6932, CLOUD-6931, CLOUD-6860, CLOUD-6859
- Using a parameter of invalid type results in a stuck execution
Parameters of invalid type might create an execution which cannot be cancelled or deleted.
Solution: Internal error handling was improved to ensure executions are not stuck and provide a meaningful error message.
- Unexpected effect of “waiting for an empty list of dependencies”
When waiting for an empty list of dependencies with a timeout, the execution is set to the status SCHEDULED.
Solution: When waiting for an empty list of dependencies, the execution now resumes immediately.
- Git integration does not clear cache when changing the remote URL
The previously cached repository is still used after changing the URL.
Solution: when the URL is changed the cache is cleared.
- Racing condition: Operation sometimes lost when workspace processes scale down
A “resume” operation can get lost when the workspace process ends during processing the operation.
Solution: Pending operations are now processed when an execution in state PAUSED is restored.
Ref: CLOUD-6764, CLOUD-6710
- It is not possible to select a column of type TIME with the Postgres connector type
The datatype is not properly converted for JSON.
Solution: conversion for TIME was added.
- An execution waiting for a message to be responded is not resumed when the message form is deleted
The execution continues to wait for the message until a) a timeout occurs or b) the execution is paused and resumed.
Solution: Deleting a message will immediately notify executions waiting for it.
- LDAP connector fails with encodings other than UTF-8
The LDAP connector assumes UTF-8 encoding and does not have an input to choose a different one.
Solution: An encoding input was added to the LDAP connector.
- Restoring to a savepoint of an execution which currently has a timeout set does not clear the timeout
When the state which it is restored to does not expect a timeout, the execution enters a sleeping state.
Solution: Any timeout is cleared when restoring to a savepoint.
- Cannot upload files bigger than 16 MiB
“Maximum request body size exceeded”
Solution: The maximum upload size was increased to 64 MiB per file.
- REST API list filter on datetime field does not work
Using a filter expression on a datetime field does not produce any results.
Solution: The REST API now properly converts filter values for datetime fields.
- REST API filter operator “like” does not work on non-string fields
Cannot partially match against non-string fields.
Solution: The REST API now converts non-string fields when using the “like” operator.
- Visual representation of dependencies
The dependencies between executions can be visually represented in the Cloudomation UI.
- Visual representation of flow logic
The control-structure logic of a flow can be visually represented in the Cloudomation UI.
- Cloudomation workspace linking
It is now possible to link several active Cloudomation workspaces and synchronize executions between them.
- Execution savepoints & restore functionality
Executions can revert to a previous state and continue running from there. This enables savepoints and restarts.
- Native git integration
Git integration is now configured using a dedicated “Git config” resource type. All Cloudomation resources can be synchronized from git.
- Native HashiCorp Vault integration
Vault integration is now configured using a dedicated “Vault config” resource type. Connections and Executions can refer to a secret path in a Vault installation. The secret is fetched at runtime and not stored in Cloudomation.
- New resource type: connection
It is possible to preconfigure connections to third-party systems and re-use them in flows.
- New connector: MSSQL
It is now possible to connect to MSSQL databases.
- On-premise support
Cloudomation can be deployed on-premise with or without Kubernetes.
- REST connector can auto-retry on certain HTTP codes
The REST connector will retry on HTTP 502, 503 and 504 per default. Custom codes and retry backoff and timeouts can be specified.
- New connector: VAULT
It is now possible to connect to a HashiCorp Vault using the VAULT connector.
- New connector: XMLRPC
It is now possible to connect to any XML-RPC service.
- Support for running Cloudomation on Windows
Cloudomation can be deployed on Windows.
- New connector: IMAP
It is now possible to connect to IMAP servers to search and fetch emails.
- New connector: LDAP
It is now possible to connect to LDAP servers for authentication and to query data about a domain.
- Support OAuth2 for bullhorn
The Oauth resource now supports authenticating against a Bullhorn installation.
- Code in finally block of flow is not executed when using `this.end()` in the try block
The python try…catch…finally control structure can now be used by flows to run logic after an error occurs, when the flow aborts, is cancelled, or when the flow ends normally. This can be used to ensure the cleanup of dynamically created resources.
- Changes in pricing
Pricing based on productive executions of tasks replaced the token-based pricing model. Productive task executions are called “connections”. The “Token Report” section was removed from the UI.
- Removed “inputs” resource
The “messages” and “inputs” resources were merged into a combined resource called “messages”. The new messages resource provides additional functionality to design message forms to request a response from Cloudomation users.
- Development mode
Tasks can be executed in development and productive mode. Task executions (connections) in development mode are free of charge.
- User Interface redesign
The user interface was overhauled with a new color scheme and a cleaner design.
- Editable files
Text files in the “files” resource can now be edited in the Cloudomation UI.
- Extended upload and download functionality
Users can now upload and download flow scripts, settings, and files through the UI directly in the respective views.
Ref: CLOUD-1306, CLOUD-2330
- Standard API documentation
Cloudomation API now provides OpenAPI schema and SwaggerUI.
- Advanced search in list views & REST API
All list views in the UI and the Cloudomation REST API now support filter expressions.
- Filter expressions in flow API
All flow-API list calls now support filter expressions.
- Improved dependency overview
Users can now see live which dependencies a flow script is currently waiting for, as well as which dependencies it waited for in the past.
- Display of recent executions in flow record
The flow record view now shows the last 3 executions of that flow.
- Two-factor authentication
Users can now activate two-factor authentication for logging into Cloudomation.
- Parse pdf in flow script
Users can now parse the contents of pdf files directly in flow scripts.
- REST multipart POST upload
The REST task type now supports multipart post uploads.
- Powershell task type
Users can now access Windows machines via Windows Remote Management and execute Powershell scripts.
- Kubernetes task type
Users can now manage Kubernetes directly in flow scripts.
- PostgreSQL task type
Users can now access PostgreSQL databases directly from flow scripts.
- Google API task type with Oauth2
Users can now use all Google APIs, and authenticate against Google APIs with oauth2.
- Email attachments
Users can now send emails with attachments directly from flow scripts.
- Created/modified timestamps for all records
All resources now provide created at/created by and modified at/modified by fields.
- Protect API against denial-of-service
The load-balancer now enforces rate-limits.
- Improved pagination display for long lists
The pagination control will skip pages when there are more than 9 pages. The pagination will always show buttons for the first two pages, last two pages, two before the current page, and two after the current page.
- Changed database backend
Improved scalability by migrating to PostgreSQL as a database backend.
- Files resource now refreshes when modified
In contrast to all other resources, the files resource did not push updates to the UI. This is now fixed.
Ref: CLOUD-1086 Files resource does not refresh when modified
- Order of opened records fixed on page refresh
Previously, page refreshes changed the order of opened records. Opened records now stay sorted when the page is refreshed.
Ref: CLOUD-1085 page refresh reorders open flows
- Files resource can now handle several executions requesting the same file
Previously, only one execution could request a file at any one time.
Ref: CLOUD-2612 file_futures cannot handle two executions requesting the same file at the same time
- Cancelling paused executions now cancels them immediately
Previously, paused executions could only be cancelled after resuming them.
Ref: CLOUD-1429 cancel paused execution is done only after execution “resume”
- Fixed sorting of numerical columns
Sorting of columns of various types was fixed (numbers, timestamp, duration, filesize).
Ref: CLOUD-136 sort number column as number (not string)