Release Notes
Version 10 "Vanillekipferl"
2024-12-03
The “Vanillekipferl” is a real legend among Austrian Christmas pastries. We are a Viennese company and love sweets – that’s why our release names are named after Viennese sweets. Discover new Cloudomation Engine functions such as the visual display of object templates, new git actions and numerous UX optimizations.
If you have an active DevStack subscription, you can add our Cloud Development Environments product Cloudomation DevStack to Engine. DevStack now includes new features such as the display of the total used CDE hours in the self-service portal and enhanced CLI functionality.
You can find all the details in the release notes.
Breaking Changes
- To align ssl configuration parameters, vault config’s parameter “cacert” was renamed to “server_ca”, and a “verify_ssl” option was added.
Ref: #86byh1xte - The Cloudomation Engine frontend does not implicitly pass the `interactive: true` value to flows which are run interactively.
Please use `this.get_identity_created_by()` to check if the execution was started by a user.
Ref: #86bzp0x9a - The plugin action type “LIST” was removed
Ref: #86c082jpr - Importing a record which contains a field which is not known to the backend will now succeed
A warning is emitted informing about which field was ignored, and the import continues.
Ref: #86c04gkrz - The legacy oauth implementation for bullhorn and magento was removed
Ref: #86c0adw5b - A limit to recursion was introduced
Data-type coercion, default value application, and secrets expansion are only performed for containers which contain less than RECURSE_MAX_SIZE elements, which defaults to 100 and can be set in the workspace settings.
Ref: #86c0hm630 - The git repository name can now only contain upper- and lowercase letters, digits and Dot (.), Dash (-), Underscore (_)
After updating, rename repositories with invalid names (e.g. the repository name for the Default project contains a space) and re-synchronize the remote.
Ref: #86c17198c - Some connector types have a different output schemata
The SQLMSSQL connector has a different output schema for query results. The REST connector returns headers in a different format in the output schema.
Ref: #862ke6fg6
Deprecations
- Overhaul of all connector input schemas
The input schemas of all connector types were aligned for consistency and to make use of new schema functionality. The old schemas will be supported in Cloudomation version 10. When used, a deprecation log will be created. There is an automatic migration procedure implemented in the Cloudomation Engine UI.
Ref: #26pxnhm, 86byh1xte, 862ke6fg6, 86c0e6mcw - Connectors which create Cloudomation Engine files now have to specify the target project/location.
Connectors that don’t specify the target project/location will be supported in version 10 and fully deprecated in version 11.
Ref: #86bya01ta
New Features
- Cloudomation-git actions were extended
Branch-switching, branch creation, repository rename and resetting to status in git are now possible via the Engine UI. Added Flow-API methods `record.commit()` and `container.bulk_commit()`. Introduced a workspace configuration parameter to choose if a change should automatically be committed to git.
Ref: #86bxfgjyr, #86bxehq49, #86bzhx1xz, #86bzt1g2t, #86c069z32
- An object template canvas was added
Object templates and their relationships with each other can now be shown, created and edited in a visual canvas.
Ref: #86bx9ch1b, #86bz414jn, #862kp5tw4
- Introduced a before-create flow for object templates
Which can be used to prefill default values of new custom objects
Ref: #86bzvtgk9 - Custom objects now show a coloured dot representing their provisioning state
Ref: #86bxfqpdy, #86bxfqppw
- Added a button to re-run the on-create provisioning execution of a custom object if the previous on-create execution failed.
Ref: #86bxz37ez - Custom object operations are now shown in logs
Ref: #86by9ztmj - Custom object data can now be accessed via attributes on ‘system.object_data’
Ref: #86byc251f - Introduced automatic migration of deprecations
Records that have deprecations now show a “has deprecation” badge. A “migrate deprecations” button was introduced. A workspace configuration parameter to choose if deprecations should automatically migrated on save was introduced.
Ref: #86c0e6mcw
- Captcha errors are now indicated by a warning icon in the top-bar
Instead of many recurring toast messages
Ref: #86bzxguz4, 86bzxguz4 - Catcha score is now only fetched if the Cloudomation tab is active
Ref: #86c03hc1y - It is now possible to specify an input_value for an execution in the “Run with options” dialog
Ref: #86bxktx23 - It is now possible to add static wrappers directly to connectors
Ref: #86bxa4r82 - Introduced an execution priority field
Ref: #86bxrtkbn, 86bzfpudn - Wrappers which send emails can now make use of an existing SMTP connector to send email to arbitrary recipients.
Previously it was only possible to send emails to registered Cloudomation Engine user’s email addresses.
Ref: #86by29q3p - Flow-API user.send_mail() now accepts html_template and html_data inputs to securely create HTML emails containing user data.
Ref: #295n96g - The email integration of Cloudomation workspaces now support the XOAUTH2 authentication mechanism
Ref: #86bzmr2wf, 86c04eh4x - Extended functionality for forms
Introduced “reset to default” as well as “clear” action buttons for form fields, introduced optional form elements which can be set to `null`.
Ref: #86by9b50g, #86byrgzt4, #86by9b50g - Introduce a schema form builder for flow input/output schema and wrapper input schema
Ref: #86bywz850 - Schedule executions will be recreated once a month to phase out old logs & savepoints
Ref: #86byfh6m7 - Enabling and disabling of schedule now creates corresponding log entries
Ref: #86bx92jyy - It is now possible to choose the project of executions created by
- Webhooks, ref: #86byw21hc
- Plugin_actions, ref: #86by6gpzm
- Wrappers, ref: #86bxzu8q7
- Flow scripts, ref: #86bycy6vy
- Introduced arbitrary metadata storage to all records
Ref: #86bzw5nbn - The AWS connector can now also use session tokens for authentication
Ref: #86bxd6yjv - The Cloudomation Engine login screen now shows the frontend version number on hover of the Cloudomation Engine logo
Ref: #86bxtn4xc - If multiple workspace processes are running, one of them will not process connections.
This is to ensure script logic is executed on time even when multiple connections to slow third-party systems are also running.
Ref: #86bxz4d06 - Improved error message when sending a Cloudomation file in a multipart post request and the file is not found.
Ref: #25xvh3d - Added a dedicated “Search for record type” button to the quick search when entering a record type
Ref: #86by2daa1 - Added a “Latest executions” panel to wrapper screen
Ref: #86by77c3r - Improved error message when trying to delete a record which is still in use by a custom object
Ref: #86by6904q - Added a button to the flow screen to open associated webhooks.
Ref: #86bx9wkb2 - Added username & password authentication method to vault integration
Ref: #2fyz9vd - Added username & password authentication method to vault connector
Ref: #86byubdq9 - It is now possible to add a role to a user from the role screen
Ref: #86byxe3kp - The git connector now allows for patterns to limit the scope of the files being fetched
Ref: #86by2y6nz, 86bxpdehn - The “create” menu in the Cloudomation Engine frontend now only lists types which the user has permissions to create
Ref: #86by8xnq9, 86bzeu7kt - Set read-only and remove read-only are now available as bulk actions in resource lists
Ref: #86by29j3y - The following third-party libraries are now available for use in flow scripts:
- xlswriter, ref: #86bz9v0xp
- jinja2, ref: #86by1xna8
- Added an option to unset the savepoint retention mode of a flow to use the workspace-wide default value
Ref: #86bzceegm - The log “data” column now is collapsed per default if content is large
Ref: #861m4efeq - Record logs now show links to all related records
Ref: #86by0qmxe - The name of the used connector is now shown on the connection execution screen
Ref: #86bzu8kab - The name of the used flow/wrapper/schedule is now shown in the details panel of the execution screen
Ref: #86c095q6q - Added “Devolutions server” as a secret backend
Ref: #86bzz1p77, 86c07rxc0 - The header in the Cloudomation Engine frontend now collapses when scrolling
Ref: #86byrja76 - It is now possible to use more record types in bundles
Ref: #862kgbp10 - It is now possible to re-install a modified bundle even when the latest version is already installed
Ref: #86c012te2 - The bundle manager now locks bundles while a bundle operation is running
Ref: #86bzzgav2 - The dependency visualization now includes execution type icons
Ref: #86c07u67a
- The execution script now automatically scrolls to the currently executing line
Ref: #86c0ay3n3, 86c0fd7xe
- The “standard error” output of a powershell connection now extracts human-readable text from powershell error structures
Ref: #86c072faa - Introduce a connect timeout and query timeout to the MSSQL connector
Ref: #86c0cqxxv - The vault connector now accepts any JSON-compatible type as secret
Previously only strings were accepted.
Ref: #86c07wbny - Add a “syntax error” badge to scripts
Which is automatically set if parsing of the script fails
Ref: #86c0g3qxy
- Workspace sync config now outputs the sync_url which can be used in the remote workspace
Ref: #86bzexym4 - Added functionality to the Cloudomation Installer to upgrade the postgresql version and a “restore from backup” mode
Ref: #86bz18kg4, #86bzrrwjm
Bug Fixes
- The timeout of an execution waiting for a message response is now cleared when the message gets deleted.
Ref: #26py2y6 - Fixed an “InternalError” when trying to acquire a lock without sufficient permissions.
Now a “PermissionDeniedError” is raised.
Ref: #861mxurrq - Fix potential memory issues with large import packages files by importing individual records in order of dependencies.
Ref: #86bxcr8kb - Fixed an issue where it was impossible to move a record to trash if another user has the same record open.
Ref: #86by2me74 - Fixed an issue where it was impossible to delete a sync_config record which still has sync executions associated with it.
Ref: #862ke87gv - Fixed a bug where it was possible for an import to overwrite a resource which is marked as read-only.
Ref: #86by2em7n - Fixed a bug where an error which occurs during bundle import would not be shown in the bundle manager logs
Ref: #86by0q5yd - Fixed a bug where object templates would initially always be created in the “default project”, instead of the currently selected project
Ref: #86byncetg - Fixed a bug where a workspace would fail to send the initial invitation email for the bootstrap user if interrupted in a specific moment.
Ref: #86byge8e7 - Fixed a bug where it would be possible to overwrite a resource with a newly created resource having the same name
Ref: #86bynr2gx - Fixed a bug where the output_value of an execution does not update live while the execution is running
Ref: #86bzb1jua, 86bz5bmgp - Fixed a bug where it would not be possible to permanently delete a remotely-executed execution
Ref: #86bxtbfdn - Fixed a bug where it would not be possible to permanently delete a schedule which still has schedule executions associated with it.
Ref: #86bzgqanw - Fixed a bug in the notify wrapper where the wrapper would succeed even if the referenced user to be notified does not exist
Ref: #861mxyrur - Fixed a bug where it would not be possible to run a flow with a static wrapper without any input_schema
Ref: #86bzu941n - Fixed a deadlock which could happen when a schedule becomes active just while it is being validated
Ref: #86bz5c16m - Fixed a bug where it would not be possible to rename an object template which is referred to by another object template
Ref: #86bynjufr - Fixed a bug where internal git operations could fail due to internal locking when the same repository is used by multiple processes simultaneously
Ref: #86bzz0jxj - Fixed a loop in the “create-schedule-flow” helper when there is a name conflict
Ref: #86c01cyrw - Fixed a bug where it would not be possible to create an execution of a flow which has an input_schema but no input_value
Ref #86c0kyn3g - Fixed a bug where an activation mail to the bootstrap user could be sent multiple times
Ref: #86c0kbtz4
DevStack
The following new features are only available to customers who have licensed the DevStack bundle in addition to Cloudomation Engine.
- Cloudomation Engine dashboard now shows total used CDE hours in the current month if he DevStack bundle is installed
Ref: #86bz9qyyk - SSP dashboard now shows total used CDE hours in the current month
Ref: #861mt9re3
- Added links to provisioning execution to SSP
Ref: #86bxy9a4t - Added example content to DevStack to handle internal certificate authorities and create fresh HTTPS certificates for CDEs on the fly
Ref: #86bxn084f - Devstack-cli now restarts port forwarding and file sync after a network disconnect
Ref: #86by0n4dp - devstack-cli now supports custom “remote source directories”
Ref: #86by56ge2 - devstack-cli now includes a shortcut to quickly open a terminal on the remote host
Ref: #86bxjzuxw - devstack-cli now fetches data directly from the workspace
Ref: #86byfbkj3 - Added user feedback functionality to SSP
Ref: #86bxffq5v 86bzbzjx3 - devstack-cli now dynamically adjusts the rows/column available in a remote terminal
Ref: #86bzj57zp - devstack-cli now forwards a keyboard interrupt (CTRL+C) to the process running remotely when within a remote terminal
Ref: #86c036k2p
Version 9 "Germknödel"
2024-04-30
The “Germknödel” is an undisputed star in the world of Austrian desserts. We are a Viennese company and love sweets – that’s why our release names are named after Viennese sweets. Discover new functions such as custom objects, a new debug mode and log levels. Also brand new is the posibility to add Cloudomation DevStack to Cloudomation Engine. If you have an active DevStack subscription, it enables you to deploy Cloud Development Environments in self-service. You can find all the details in the release notes.
Breaking Changes
- The legacy git integration was removed
Git integration using the `git_config` record type was deprecated in Cloudomation version 8 and removed with Cloudomation version 9.
Ref: #86bxcd868 - The `default role` has now non-administrator access to all projects
Previously the `default role` would only grant access to the `Default project`.
Ref: #86bxrbr9w - GET requests to the API which send a body payload are now rejected with `BadRequest`
Previously the body payload of a GET request would be silently ignored.
Ref: #86bxr1jn1 - The `is_archived` flag was deprecated in Cloudomation version 8 and removed with Cloudomation version 9
Ref: #2w9vabu - The `Dev-Mode` does not use breakpoints any more
To use breakpoints use the new `Debug-Mode`.
Ref: #86bx39wkd - The scheduler now creates orphaned child executions
In order for child executions to show up in the execution live monitor as “top level executions” they do not contain a `parent execution` reference to the scheduler any more. Because of this change, it is recommended to pause all schedules before updating a workspace to version 9. Schedules can be reactivated after the update. Schedules that are not paused during the update will fail for their next run but will recover afterwards, meaning that one scheduled run would fail.
Ref: #862ked65h - Importing a record which references a non-existent record now fails
Previously it would implicitly create an empty referenced record.
Ref: #861meqbkb - SMTP connector input `use_tls` must be specified as a boolean value
Previously the strings “true” and “false” were also accepted.
Ref: #86bxzu7yp - LDAP connector doesn’t accept unencrypted ldap:// connections anymore if the use_ssl parameter is set to ‘true’
Previously, the LDAP connector accepted unencrypted ldap:// connections even if the use_ssl parameter was set to ‘true’ (which is the default value).
Ref: #86bzh6ty2
Deprecations
- The Flow-API method `Execution.message()` changed its purpose
Previously it would create a new message. Starting from Cloudomation version 10 it returns the message the execution is currently waiting for. To create a new message use `System.message()` instead.
Ref: #86bxmp8ez - The `timeout_sec` argument of the `retry` wrapper is deprecated and will be removed with Cloudomation version 10
Please use the `timeout` wrapper to specify a timeout.
Ref: #862kd6a6c - AWS connector inputs `service`, `waiter`, and `parameters` inputs are deprecated and will be removed with Cloudomation version 10
The inputs are replaced by `mode.service`, `mode.waiter`, and `mode.parameters` respectively. - FTP connector inputs `action`, `src`, `dst`, `path`, and `recursive` inputs are deprecated and will be removed with Cloudomation version 10
The inputs are replaced by `mode.mode_name`, `mode.src`, `mode.dst`, `mode.path`, and `mode.recursive` respectively. - GOOGLE connector input `params` is deprecated and will be removed with Cloudomation version 10
The input is replaced by `kwargs`. - IMAP connector inputs `command`, `folder`, `target_folder`, `criteria`, `message_set`, `store_attachments`, and `flags` are deprecated and will be removed with Cloudomation version 10
The inputs are replaced by `mode.mode_name`, `mode.folder`, `mode.target_folder`, `mode.criteria`, `mode.message_set`, `mode.store_attachments`, and `mode.flags` respectively. - K8S connector input `parameters` is deprecated and will be removed with Cloudomation version 10
The input is replaced by `kwargs`. - MYSQL connector input `cmd` specified as a tuple containing `cmd` and `params` is deprecated and will be removed with Cloudomation version 10
Please specify params in the dedicated `params` input. - REST connector inputs `text`, `json`, `data`, `multipart`, `urlencoded`, `authentication_method`, `username`, `password`, and `grant` are deprecated and will be removed with Cloudomation version 10
The inputs are replaced by `body.text`, `body.json`, `body.json`, `body.multipart`, `body.urlencoded`, `authentication.authentication_method_name`, `authentication.username`, `authentication.password`, and `authentication.grant` respectively. - SMTP connector input `from` is deprecated and will be removed with Cloudomation version 10
The input is replaced by `from_`. - SQLPG connector input `cmd` specified as a tuple containing `cmd` and `params` is deprecated and will be removed with Cloudomation version 10
Please specify params in the dedicated `params` input. - VAULT connector inputs `mode`, `secret_path`, `data`, `version`, and `versions` are deprecated and will be removed with Cloudomation version 10
The inputs are replaced by `mode.mode_name`, `mode.secret_path`, `mode.data`, `mode.version`, and `mode.versions` respectively. - The Flow-API methods `Identity.add_role`, `Identity.get_roles`, and `Identity.remove_role` are deprecated and will be removed with Cloudomation version 10
The methods are replaced with `Identity.add_identity_role`, `Identity.identity_role_list`, and `IdentityRole.delete` respectively. - The Flow-API methods `Record.get_identity_created_by`, `Record.get_identity_modified_by`, and `Record.get_identity_deleted_by` are deprecated and will be removed with Cloudomation version 10
The methods are replaced with `Record.created_by_identity`, `Record.modified_by_identity`, and `Record.deleted_by_identity` respectively. - The Flow-API methods `Record.add_tag`, `Record.get_tags`, and `Record.remove_tag` are deprecated and will be removed with Cloudomation version 10
The methods are replaced with `Record.add_record_tag`, `Record.record_tag_list`, and `RecordTag.delete` respectively. - The Flow-API method `Record.get_logs` is deprecated and will be removed with Cloudomation version 10
The method is replaced with `Record.record_log_list`. - The Flow-API methods `Role.add_permission`, `Role.get_permissions`, and `Role.remove_permission` are deprecated and will be removed with Cloudomation version 10
The methods are replaced with `Role.add_role_permission`, `Role.role_permission_list`, and `RolePermission.delete` respectively. - The Flow-API methods `Role.add_identity`, `Role.get_identities`, and `Role.remove_identity` are deprecated and will be removed with Cloudomation version 10
The Methods are replaced with `Role.add_identity_role`, `Role.identity_role_list`, and `IdentityRole.delete` respectively. - The Flow-API method `User.get_public_keys` is deprecated and will be removed with Cloudomation version 10
The method is replaced with `User.user_git_public_key_list`. - Uploading python files directly to the `Flow` resource or importing yaml files directly to the `Setting` resource is deprecated and will be removed with Cloudomation version 10
Please use the import functionality instead. - The API routes `/auth/webhook_is_enabled`, `/auth/webhook_key`, and `/auth/webhook_require_login` are deprecated and will be removed with Cloudomation version 10
The routes are replaced by `/auth/webhook_security`
Ref: #861n0q0t2
New Features
- Added “object template” and “custom object” record types
Object templates allow users to template custom objects. Once an object template has been defined, users can create custom objects based on that template from the create menu in the Cloudomation Engine UI. Lifecycle hooks are associated with each object template which specify what should happen when a custom object is created, updated or deleted.
For example, you can define an object template for a “server”. When a new custom object “server” is created, the “create” process is started, which can, for example, deploy a virtual machine and install software on it – i.e. create a server.
As another example, a “customer” object template can be created which defines which data are associated with a customer. When a new custom object of type “customer” is created (e.g. by calling a webhook when a new customer is created in a webshop or any other platform), the “create” process for the “customer” object is called, which can, for example, propagate the data for this customer into different other systems and trigger other processing steps required for customer onboarding.
Custom objects allow users to think about automation in an object-oriented way. Custom objects are shown in the UI with all their associated data as well as their current status, making it easier to understand and keep an overview of entities that are associated with automations that run in Cloudomation Engine.
Object templates allow the creation of interconnected data models that can become full ontologies to describe entities in your organisation that are associated with automations which run in Cloudomation Engine.
Ref: #861mt5uew
- Cloudomation DevStack can now be added to Cloudomation Engine
DevStack enables the automatic deployment of Cloud Development Environments (CDEs) in self-service. It consists of three major components:
- A command-line interface for DevStack
Ref: #862kpmzgd
- A command-line interface for DevStack
- A DevStack bundle which can be imported in Cloudomation Engine to enable the DevStack functionality for a Cloudomation Engine workspace
Learn more about Cloudomation DevStack
- Added a debug mode
Which allows you to pause at breakpoints and step through executions line-by-line. Previously, the debug mode was part of the dev mode. Now, users can choose between dev mode, debug mode and debug mode with fixed breakpoints.
Ref: #86bxderhd - Added a debug mode with fixed breakpoints
In order to reduce the performance penalty introduced by breakpoint handling. The debug mode with fixed breakpoints doesn’t allow to change breakpoints after starting an execution.
Ref: #86bxd6h30 - Step debugging of executions is now inherited to child executions too
Ref: #862kg92fk - The advanced search was extended to support arbitrary nested filter expressions
Ref: #86bx1t7aj, #26pxnu4 - Filter expressions in the execution live monitor and advanced search can be built by choosing values being displayed in the list
Right-click on any value in the list will show the option to add this value as a filter.
Ref: #26py722 - Add a hotkey CTRL+M to jump to the execution live monitor
Ref: #862kjambk - Added “pause”, “resume”, and “cancel” as bulk actions in the execution live monitor
Ref: #862kdrufa - The `notify` wrapper can be configured to react to status changes of the wrapped type
In addition to supporting notifications on each success or error, the `notify` wrapper can now also notify when the wrapped resource fails or succeeds for the first time.
Ref: #2zgxked - Bundles are marked as “changed” when they were modified after install
Ref: #862kdex5x - The Engine UI now checks for name conflicts before save
Ref: #862kha5zr - Added an “access list” to projects and bundles to show which roles grant permissions on that project or bundle
Ref: #862kfgg9d - Added a bulk action to move execution processes to the trash
Previously, only single executions could be moved to the trash from the execution live monitor.
Ref: #86bx48m6r - Added a `Move` action to all records, replacing the `Project` and `Bundle` dropdowns.
Previously records contained separate `Project` and `Bundle` drawdowns while only one of them could be set at a given time. Now there is a dedicated `Move` action which lists all projects/bundles.
Ref: #86bxpatgp - The location is now shown in the details panel for all resources
Ref: #86bxnuy9d - The Engine frontend now shows the size in bytes of files in Cloudomation.
Ref: #86bxx0xx7 - Cloudomation logs now include a log level
Each log is classified as INFO, WARNING, or ERROR and displayed colour-coded.
Ref: #862kjug0u, #862kjgkrw - Workspace logs can now be filtered by log level
Ref: #86bxcae44 - It is now possible to choose a highlight colour for the top-bar in the Cloudomation engine UI to quickly visually distinguish multiple workspaces
Ref: #862kj51wa - Improved methods to access referenced records in Flow-API
The Flow-API allows access to all referenced records natively. It is possible to access a record which is referenced by the current record as well as access a list of records which dare referencing the current record.
Ref: #2vrtugv - Improved signature of Flow-API `save` method
The `save` method signature explicitly lists all allowed fields, their types, and descriptions.
Ref: #2vrtugv - The Flow-API now features several method aliases for commonly used calls and uses intuitive method names
Ref: #862knjccd - Support for the `jinja2` templating engine was added to the Flow-API
In addition to the existing `mustache` template engine `jinja2` was also added to the Flow-API.
Ref: #86by1xna8 - The Flow-API now supports accessing all types and meta-types
Ref: #2hy36vk - The “default roles” bundle was reduced in scope to only provide an example role with minimum permissions required to use the Cloudomation Engine frontend
Ref: #86bxn8wd9 - The Engine Installer now allows to choose how many Coudomation Engine processes are deployed
This allows for horizontal scaling. Previously the value was hardcoded to 4 processes.
Ref: #86bx3jkm1 - Add a `save-logs` option to the Engine Installer
To conveniently collect and compress all logs of the workspace.
Ref: #86bx60wrq - Add an option to the Cloudomation Installer to remove a workspace configuration option from the database
Ref: #861mzmtct - The bootstrap user does not receive multiple activation emails as long as the activation code remains valid
Ref: #86bxqr3kk - Git commits created by Cloudomation are now associated with the Cloudomation user
Ref: #86bxx41cz - Added user flags to enable/disable access to the Cloudomation Engine UI and the DevStack Self-Service Portal
For each user, it can now be specified if that user should have access to the Engine UI or the DevStack Self-Service Portal. DevStack options are only available in workspaces that have DevStack enabled.
Ref: #86bwy7qfb - Added binary file upload capability to the REST connector
Ref: #86bxab2h6 - All database transactions are now constrained by a global timeout
Ref: #86bxag9uw - Added documentation for previously undocumented fields of various record types
Ref: #862knaf00 - Added configuration parameters for the maximum size of Cloudomation files which are displayed in the Engine UI
Files larger than this value can still be displayed, but the user has to choose so explicitly. This improves performance when inspecting files in the Engine UI.
Ref: #861mca3uy - Added a configuration parameter to disable the processing of all executions in a workspace
Ref: #26py8gh - More record types can now be part of a bundle
The types `bundle_repository`, `ldap_config`, `schedule`, `sync_config`, `vault_config`, and `webhook` can now also be associated with a bundle.
Ref: #86by5jgf3
Bug Fixes
- Fixed a bug where the workspace would loop when a user creates a wrapper loop
Previously it was possible to create wrapper loops, for example wrapping the wrapper with itself. The workspace now prevents such loops to be created or executed.
Ref: #86bxagb9n - Fixed a bug where no default values were applied if one required field did not have a default value
Now as many default values as possible are applied, even if it fails for some fields.
Ref: #86bxz1etf - Fixed a bug in the Cloudomation Installer where it would generate an invalid `docker-compose.yml` file
When using the `selfsigned` certificate option the Cloudomation Installer used to add the certificate to the `docker-compose.yml` file regardless if it already existed there.
Ref: #86bx2n2ph - Fixed a bug where the frontend would only display the first 50 permissions of a role
Ref: #86bxze0p0 - Fixed a bug where the frontend would not display an error if a weak password is rejected by the backend
Ref: #86bxywwec - Fixed a bug where the sandbox process might get stuck after the workspace process gets terminated ungracefully
Ref: #86bxv4w23 - Fixed a bug where a flow gets saved after it is executed when using `Run with options`
Ref: #86bxd7gwz - Fixed a bug where the Cloudomation Installer would not use non-standard ports for the websocket URL
Ref: #86bxtpgj6 - Fixed a bug where the `transaction` action of the PostgreSQL connector would fail
Ref: #86bxtrhj2 - Fixed a bug where breakpoints of a new flow are not saved with the initial save
Ref: #86bxg1p7q - Fixed a bug which made it impossible to duplicate a connector record
Ref: #86bx3zpzq - Fixed a bug where records restored from trash would not be shown in the quick access menu
Ref: #86by0pace - Fixed a bug where the link to the execution live monitor from a dashboard widget would set a wrong filter
Ref: #86by08r4b - Fixed a bug where orphaned execution records would not be cleaned up from the trash
Ref: #86bxgw3gx - Fixed a bug in the `validate` wrapper where it would create a schema record without a name
Ref: #862kjnhgc - Fixed a bug where the workspace failed to replace secrets of multiple vault configurations within one string
Ref: #862kfnc03 - Fixed a bug where the LDAP connector failed to fetch a search result when using non-paged search
Ref: #86bxhce7d - Fixed a bug where the OPENAI connector used an old version of the library with deprecated endpoints
Ref: #86bxbmny4 - Fixed a bug where the `max delay` parameter of the scheduler would not be used
Ref: #86bx92n7t - Fixed a bug where a change in a subrecord would not immediately be committed to Cloudomation git
Ref: #862kp39t2 - Fixed a bug where the default values of Flow-API calls are not displayed in the intellisense
Ref: #86bx6zyg8 - Fixed a racing condition between lock acquire and lock delete
Ref: #862kk7xgq - Fixed a bug where it would be possible to set the login token validity to 0 hours, preventing any successful login
Ref: #862kmvxyt - Fixed a bug in the SMB connector where the connector fails when using the list action without a file pattern
Ref: #86bx2nwv5 - Fixed a bug in the AWS connector where it would be impossible to upload a file to a S3 bucket when using deprecated arguments
Ref: #86bx30f5x - Fixed a bug in the LDAP connector where it would be impossible to specify additional filters for the search action
Ref: #86bx2rkb7 - Fixed a bug where it would be impossible to ignore a dependency when the execution is statically wrapped
Ref: #862kjf85f - Fixed a bug where it would be impossible to import a record which references another pre-existing record which is marked as read-only
Ref: #862kmw373 - Fixed a bug where it would be impossible to use fields of metatables in indirect filter conditions
Ref: #862kkznm8 - Fixed a bug in the scheduler where a recurring execution would not respect the max_iterations` parameter
Ref: #862kn61hz
Version 8 "Apfelstrudel"
2023-11-22
The “apple strudel” has a vibrant history. In Vienna, the Studel established itself as a tasty and salon-worthy pastry and has been something of an Austrian national dish ever since. We are a Viennese company and love sweets – which is why our release names are named after Viennese sweets. The apple strudel is versatile and can be served both hot and cold. For an extra sweet touch, you can sprinkle it with powdered sugar or refine it with vanilla sauce. Cloudomation version 8 emulates the flexibility of the apple strudel: Discover new features such as the configuration of connectors via form, Intellisense support for Flow API modules in the online editor, native Git integration and new connectors. You can find all the details in the release notes.
Breaking Changes
- Removed deprecations from flow API
- The following flow API methods were removed:
- execution.task is now fully deprecated. Use execution.connect instead.
- record.set is now fully deprecated. Use record.save instead.
- record.load is now fully deprecated. Use record.get instead.
- identity.roles is now fully deprecated. Use identity.get_roles instead.
- file.save is now fully deprecated. Use file.save_text_content, file.save_bytes_content, file.save_base64_content, file.save_json_content, and file.save_yaml.content instead.
- The following flow API arguments were removed:
- execution.run_async(wait_for) is now fully deprecated. Use execution.run_async(*args) instead.
- setting.acquire(timeout) is now fully deprecated. Use setting.acquire(wait_timeout) instead.
- Ref: #861mwgmek
- Removed request retry logic from REST connector
The retry logic within the REST connector was removed in favour of the more flexible retry wrapper.
Ref: #26pxnmd - REST connector returns headers as list Previously headers were returned as a dictionary. This did not support multiple headers sharing the same name. Now, headers are returned as a list of lists.Example previous:
Content-Type: application/json Set-Cookie: foobar
Now:
- - Content-Type - application/json - - Set-Cookie - foobar - - Set-Cookie - another cookie
Ref: #30ykz00
- Flow API call record.export returns a base64 encoded zip file
Previously record.export returned a dictionary. Now the export might be split up into several files and is returned as a base64 encoded zip file.
Ref: #861mcc3ex - Reduced logging of flow API save and get calls
The flow API methods record.save and record.get will now only log the content when the debug flag is set to True.
Ref: #861n63bv6 - Removed deprecated execution fields
The fields “protect_inputs” and “protect_outputs” were removed. It is possible to hide sensitive information in inputs and outputs via the input/output schema.
Ref: #861mc7pf4
Deprecations
- Some fields of Cloudomation exports were deprecated
- project.version is now ignored on import
- record.extension_id is renamed to record.bundle_id on import
- record.repository_path is ignored on import
- Update existing exports to avoid using deprecated fields. Use of deprecated fields might fail an import in a future version.
- Ref: #861mjr0a7
New Features
- New Name, new Logo, new Favicon
Cloudomation is now called Cloudomation Engine to more clearly distinguish the different products available under the Cloudomation umbrella brand.
- Generated forms from schema
Connector inputs and wrappers can now be configured using a form. Custom schema forms can be attached to flows.
Ref: #861mc7pf4
- Intellisense
The online-editor now supports intellisense of flow API modules as well as supported third-party modules.
Ref: #26pyam4
- Optimised native git integration
Cloudomation projects and bundles can be configured to be backed by a git repository. You can pull and push changes directly from and to Cloudomation.
Ref: #26pxtc5 - Debugger
It is now possible to debug flows using breakpoints.
Ref: #26pxp7b
Horizontal Scalability for on-premise workspaces
It is not possible to choose how many background processes which process automations should run. This ensures optimum performance at higher loads. As a result, the recommended system requirements have changed:Minimum
Recommended
CPU
4 Cores
Number of background processes x 2
Memory
8 GiB
Number of background processes x 4
Disk space
50 GiB
Aligned with size of data to be processed
Ref: #86bx3jkm1
- New connector type OPENAI
Access openai APIs.
Ref: #863fw04fb - New connector type AZURE
Access Microsoft Azure APIs.
Ref: #862kdtp5j - New connector type AZUREAI
Access Microsoft Azure AI APIs.
Ref: #862kf4gx7 - Add support for pdf2image and pillow third-party libraries
Manipulate pdf files and images in flows.
Ref: #862kf22nk - Add autocommit parameter to MSSQL connector
It is now possible to disable autocommit to execute queries which cannot run in a transaction, for example “CREATE DATABASE”.
Ref: #861n22nbx - Execution message field is now rendered as markdown
Executions can use markdown in their status message.
Ref: #861mf7h17 - Deleted is renamed to “Trash”
To better fit user expectations the deleted section is now called “Trash”.
Ref: #861n539rc
Bug Fixes
- Number of parallel running executions in one process are now limited
To avoid overloading the database with too many concurrent connections it is now possible to limit the number of parallel running executions. The default value is 20 and can be increased or decreased according to your database.
Ref: #861mukm68 - REST connector can send and receive multiple headers with the same name
Previously the REST connector was unable to send multiple headers with the same name. Also if multiple headers with the same name were received, only the last one would be returned.
Ref: #30ykz00 - Database keepalive uses a dedicated connection
The periodic database keepalive now uses a dedicated connection in order to avoid side-effects when the database pool is exhausted.
Ref: #861n74v2t - Fixed handling of execution options of statically wrapped resources
Previously several execution options were improperly applied:- run
- roles
- is_productive
- Ref: #861n8z2mr, #861n2kz30, #862kgzpyh
- Hide SMTP credentials in workspace configuration
The SMTP password value is now not shown any more in the workspace configuration screen.
Ref: #862kdntud - Removed limit to only display the first 20 users
Previously there was a hardcoded limit to only show the first 20 users. Now the user list features a pagination.
Ref: #861n8p669 - Fix block comment shortcut in Firefox
The keyboard shortcut Ctrl + # to apply a block comment now also works in Firefox.
Ref: #865bb7qvp - Fix logging out of user when entering wrong password when enabling a webhook
The user is now not logged out any more.
Ref: #862kdfery - Fix workspace shutdown
In some cases the workspace could get stuck while shutting down.
Ref: #861n74mvq - Fix connection may be executed multiple times
In some cases a connection would execute again if it is interrupted during execution.
Ref: #861narthb
Version 7 "Gugelhupf"
2023-03-30
The “Gugelhupf” is a cake and is known and loved far beyond the borders of Austria. In the past, a Gugelhupf was served at major events.
We are a Viennese company and we like sweets – therefore we name our releases after Viennese sweets. The “Gugelhupf” can be prepared with a wide variety of ingredients. Cloudomation Version 7 shows, manages and tracks your “software-ingredients”: with the new dependency visualisation, the bundle manager and a new logging feature. But that’s not all. Check out the release notes for more!
Breaking Changes
- Filter indirection format change
To list Cloudomation records using a filter for attributes in related records a more verbose format must be used. Existing filter queries to the Cloudomation API which use indirection must be migrated to the new schema.
Ref: #2vy9pbt - Modifying authentication-related fields of webhooks require re-authentication of the user
A user needs to re-authenticate when enabling/disabling a webhook, changing the key of a webhook or configuring the webhook to require/not-require a Cloudomation login. There are dedicated REST-API endpoints to modify the `is_enabled`, `key`, and `require_login` fields. These fields cannot be changed directly by mutating the webhook record.
Ref: #2x0m3gn - Flow-API command `log` writes to execution log
Previously the `log` command was writing to the execution output_value. To write to the output_value please use `set_output` or `save(output_value=…)` instead.
Ref: #861m4cud1 - Connection execution logging moved from execution outputs to execution log
Previously the output of connection executions would contain a “log” field. Now the logs are written to the execution logs.
Ref: #861m4dmdk - Simpler input_value for webhook executions
Executions which are created as a result of a webhook call will not receive the deprecated inputs `data_json`, `data_query` and `data_cookies` any more. They were replaced by `json`, `query` and `cookies` respectively.
Ref: #26py0xj - Frontend routes specify the lookup field
Links to Cloudomation records use the format `<Cloudomation host>/<record type>?id=<record id>`. Deprecated routes in the form `<Cloudomation host>/<record type>/<record id>` work until version 8.
Ref: #2z5bwbv - Executions started by webhooks will always inherit roles from the webhook itself
Previously, webhooks which were configured to require a Cloudomation login would create executions which inherit roles from the user who called the webhook.
Ref: #861m867pu - Executions only keep the latest savepoint per default
Added a new workspace configuration option `SAVEPOINT_RETENTION` to configure when savepoints are removed. Per default only the last savepoint will be kept.
Ref: #85zrgj6tw
New Features
- Dependency visualisation
The execution screen now features a live-updating visualisation of dependencies
Ref: #2ajerh6
- Bundle manager
We’ve made it easier to load example content in the form of bundles into your Cloudomation workspace
Ref: #2517y0k
- Central logging
Logging of various components were unified into a central Workspace logging feature
Ref: #237t78t
- New example wrapper: timeout
The timeout wrapper starts a child execution and waits for it to end within a timeout. If the timeout is exceeded, the child execution and all descendants are cancelled.
Ref: #2vrrk47 - New example wrapper: rollback
The rollback wrapper monitors a child execution and triggers a rollback if an error occurs.
Ref: #2hr8kj5 - New example wrapper: validate
The validate wrapper checks if the inputs or outputs of an execution match a defined schema. The validate wrapper can also dynamically learn from inputs and outputs and adapt the schema accordingly.
Ref: #2g4v31m - Default roles bundle
As an example of various roles and permission sets we provide a “Default roles” bundle.
Ref: #275xk18 - Allow to specify encoding of SSH connector outputs
The SSH connector can be configured to parse output in encodings other than utf-8.
Ref: #2zb2zex - New connector type MSTEAMS
Create connector cards in MS teams.
Ref: #2y8vb90 - New connector type WEBDAV
Access WebDAV services.
Ref: #2yzkcmh - Helper to run batch scripts for PS connector
Run a batch script specified as a string.
Ref: #31ng5tt - Webhook calls redirect to login page when `require_login` is used and no valid session exists
If a webhook is configured to require a Cloudomation login session and none exists, the webhook will return a redirect to the login screen. After successful authentication the user will be redirected back to the webhook.
Ref: #861m8j4wm
- Possibility to specify non-standard port for REST connector in individual mode
Previously only in URL mode a non-standard port could be specified.
Ref: #2u591p4 - Method to import resources via Flow-API
Add a method to the Flow-API to allow the import of exported Cloudomation resources.
Ref: #2u55j9h - Example web app based on Cloudomation
Added an example to the documentation on how to create a small web application using Cloudomation as a backend.
Ref: #26pxunv - Implement method for webhook executions to return binary data
Cloudomation webhooks can now return binary responses by using `webhook_bytes_response` or `webhook_base64_response`
Ref: #861m9581g - Notify about problems when an invalid value is entered in a YAML field
When a YAML field contains a value which is not valid YAML, a warning and an error description is shown.
Ref: #32qwjk7 - Workspace Configuration in the Workspace
There’s now a UI screen for editing workspace settings easily.
Ref: #28z2qbc
Bug Fixes
- 2FA configuration uses the same “subject” when using the same email address in multiple Cloudomation workspaces.
In order to avoid 2FA authenticator applications overwriting existing entries, the 2FA subject will be appended with an unique ID.
Ref: #29wjfbw - Deleted resources are shown in the quick access menu
Resources in the trash will now be shown only in the “Deleted” section of the quick access menu.
Ref: #2vrm9q7 - Error when using the term “execution” or “message” in the quick search
It was impossible to use only the terms “execution” or “message” in the quick search.
Ref: #2ngdx10 - Resources of project were not deleted when project was deleted
Only the first 1000 resources of a project were deleted when the project was deleted.
Ref: #2tzjb2n - Using an underscore symbol in the advanced search mangles the search term
When using the underscore symbol in the advanced search term the first letter of the search term was cut off.
Ref: #2vk0g68 - Using space in advanced search shown as percent symbol
When using a space in the advanced search the search term was changed and spaces were shown as percent symbols.
Ref: #867728mcy - Flow-script visualisation failed to load when using a bare-except in the script
The parsing of the script did not properly handle bare-except statements.
Ref: #2vk0g68 - Cannot run flow with an incomplete static wrapper configuration attached
It was not possible to run a flow which has an incomplete wrapper configuration attached. Now incomplete wrapper configurations are ignored.
Ref: #861m964uf - Misconfigured schedules might prevent workspace from starting
Certain misconfigurations of schedules might cause a workspace unable to start. Processing of schedules is now deferred to a background task and log any misconfigurations.
Ref: #2zb86z6 - Improper handling of multiple vault secrets in the same line
Using more than one vault secret in the same line causes the first secret value to be used for all subsequent secrets too.
Ref: #32j4jxp - Unable to disable the use of TLS for the SMTP connection of the workspace
Setting `SMTP_USE_STARTTLS` to `false` resulted in the default value of the library to be used: using TLS
Ref: #32j46rc - Failed to access vault secret which contains a dot symbol in the path
The parsing of the secret path incorrectly handled dots.
Ref: #32qumj0 - Interactive wrapper aborts if email cannot be sent
If any email cannot be sent due to an error response from the SMTP server, the interactive wrapper used to abort. Now it will log the failing attempt and try to continue sending email to other recipients.
Ref: #3338em5 - Racing condition in frontend when trying to save a message form
Occasionally it was impossible to save a message form.
Ref: #85zrgb6t0 - Cleanup of deleted executions uses the wrong configuration value
Cleanup of deleted executions used the retention time configuration of deleted resources.
Ref: #861m4kkje - Cannot send email with non us-ascii characters in message body
The workspace email integration expected only us-ascii encoded messages. A new configuration parameter `SMTP_CHARSET` was added to specify any character encoding for the message body.
Ref: #861m9jg51 - Webhook cannot start execution if associated flow uses a static wrapper
The handling of static wrappers prohibited the creation of executions for webhooks.
Ref: #863fxnd0a - Flow-API methods to maintain wrappers were missing
It was not possible to create/update/delete wrappers using the Flow-API.
Ref: #861menjgy
Version 6 "Palatschinke"
2022-10-20
To the surprise of some non-Viennese, “Palatschinken” are a warm sweet dish – completely unrelated to savory “Schinken”. Flat and prepared in a pan, Palatschinken can be enjoyed with jam, ice cream or chocolate.
We are a Viennese company and we like sweets – therefore we name our releases after Viennese sweets. “Palatschinken” are a versatile dish that can be prepared in many variants. It is this scrumptious flexibility that Palaschinken and Cloudomation have in common: a delicious concept that can be adapted to your taste just as you like it.
Breaking Changes
- Executions are automatically deleted after a fixed expiry time
Per default, all executions will automatically be deleted (i.e. moved to the “deleted” section) after two weeks. From the “deleted” section, all records are automatically deleted permanently after another two weeks. These expiry times can be configured in the workspace settings. For cloud workspaces, this is currently only possible via the REST API. For self-managed on-premise workspaces, this is also possible via environment variables. Please reach out to support@cloudomation.com if you need help adjusting these settings.
Ref: #2884nj3 - Delete operation moves records to “deleted”
Per default all delete operations will move the deleted record to a “deleted” section (equivalent to a trash bin). Deleted records are read-only. Deleted records can be restored or deleted permanently. Deleted records will automatically be deleted permanently after a defined time. The default expiry time for deleted records is 2 weeks. This can be changed in the workspace configuration. In addition, per default executions and messages will automatically be moved to the deleted section after 2 weeks. This can also be changed in the workspace configuration.
Ref: #2884nj3 - Resource names must be unique across all types
Names of resources now have to be unique across all resource types. Any existing name duplication will have to be cleaned up manually before upgrading to this version or the upgrade will fail.
Ref: #2h72zy6
The following flow returns all duplicate resource names in your workspace. Please rename or remove any duplicates before upgrading:
import flow_api def handler(system: flow_api.System, this: flow_api.Execution): counts = {} for resource in system.resources(include_archived=True): resource_name, resource_type = resource.get('name', 'resource_type') counts[resource_name] = counts.get(resource_name, 0) + 1 counts = { k: v for k, v in counts.items() if v > 1 } this.log(counts=counts) return this.success('all done')
- Incoming webhook calls are counted as a connection
A call from a third-party application to a Cloudomation webhook will use a connection from the monthly quota.
Ref: #2d9ahge - Simplified usage of vault secrets in connectors
Usage of vault secrets was simplified. There is no need to explicitly link a secret to a connector. References to secrets can be specified inline. Existing connectors using vault secrets need to be migrated after the upgrade to version 6.
Ref: #2515wpq
- Workspace logging configuration moved to workspace_configuration
Several workspace configuration options – including the logging configuration – were moved to the workspace_configuration resource.
Ref: #2rhhyt7 - API responses will include metadata per default
The “plain” flag for REST API requests now defaults to “False”. Responses will per default contain metadata of the type and for list queries also the total number of records found.
Ref: #26udqc2
New Features
- Role-based access control (RBAC)
Access to Cloudomation records can be controlled by assigning roles and permissions to identities.
Ref: #1znfpa1
- Deleted Records
Per default all delete operations will move the deleted record to a “deleted” section (equivalent to a trash bin). Deleted records are read-only. Deleted records can be restored or deleted permanently. Deleted records will automatically be deleted permanently after a defined time. The default expiry time for deleted records is 2 weeks. This can be changed in the workspace configuration. In addition, per default executions and messages will automatically be moved to the deleted section after 2 weeks. This can also be changed in the workspace configuration.
Ref: #26py7ce
- Advanced search
The advanced search screen provides a unified search view for resources, executions and messages with the possibility to filter the results.
Ref: #25cphdy
- Flow script visualization
Cloudomation generates a visual representation of the control-flow implemented in your automation scripts.
Ref: #2fe02kg
- Setup and update script for on-premise workspaces
On-premise workspace installations can quickly and easily be installed and updated using the Cloudomation installer.
Ref: #1znfng5 - Mock wrapper
For testing it can be useful to simulate a third-party system. The mock wrapper will return a response without actually calling a third-party system.
Ref: #26pxvg5 - Cache wrapper
The cache wrapper will return previously fetched responses from third-party systems for a defined amount of time. This can be used to increase performance of automation scripts and to reduce load on third-party systems.
Ref: #2hcy8by - Timeout wrapper
The timeout wrapper starts a child execution and waits for it to end within a timeout. If the timeout is exceeded, the child execution and all descendants are cancelled.
Ref: #2vrrk47 - Bundles
Cloudomation provides bundles of commonly used functionality.
Ref: #2hcynfh - Unified info field for execution live monitor
The “info” column in the execution live monitor provides a rich set of relevant information combined in one view. - Improved tables
Table views now support column selection and sorting.
Ref: #2fkgjp3 - Renamed “Try” to “Run in dev mode”
Better alignment of wording.
Ref: #2hjhj2w - Live-updates of existing projects and messages
The list of projects, opened records and messages is now pushed by the backend and will update live when there are changes.
Ref: #26pxpkd - Improved documentation
Migrated to a new documentation library.
Ref: #26pxvax - Read-only resources and projects
Individual resources as well as projects can be set to read-only. Read-only resources can be used, but not modified.
Ref: #26py048 - DependencyFailedError makes failed execution available in execution object
A commonly used pattern is to query the outputs of a failed execution. The execution attribute of a DependencyFailedError provides a quick and intuitive way to access the execution which failed.
Ref: #26pxtnn - ISO3166 country-codes library available in flow api
Flows can use the library to generate country names from ISO abbreviations and the other way around.
Ref: #29ah2yv - Powershell (WinRM) connector support for Kerberos
Kerberos authentication can be used to authenticate to a WinRM service.
Ref: #2ajh619 - AWS connector can upload files
Text files, binary files or base64 strings can be uploaded to AWS APIs.
Ref: #28zuuq5
Bug Fixes
- Git integration now correctly handles empty files
Ref: #2ebgjb6 - REST connector now correctly handles binary responses
Binary responses to REST requests can now be returned as base64 encoded or stored as a Cloudomation file.
Ref: #2837hdj
Version 5 "Topfengolatsche"
2022-03-17
Topfengolatschen are a typical Viennes pastry with a moist, sweet curd filling wrapped in fine and crunchy puff pastry. A staple of Viennes coffee houses as well as bakeries, it is one of Vienna’s most common pastries.
We are a Viennese company and we like sweets – therefore we name our releases after Viennese sweets. Topfengolatschen get their special taste through the combination of moist filling constrasting with the crunchy exterior. The Cloudomation Version Topfengolatsche comes with the powerful new “wrapper” feature, which allows you to do the same with your automations: add a layer of crunchy deliciousness to your tasty flow scripts by wrapping them in retry, notification, iteractive use or custom wrappers.
Breaking Changes
- Webhook: Immediately return when idle in dev-mode.
Development-mode webhooks will now immediately return with HTTP 402 when users are idle. Previously such webhooks would block until the execution is manually resumed or switched to productive-mode.
Ref: #1znd3v2 - Flow-API: The default timeout for executions waiting for a message response is to wait forever.
Previously, if not specified, the default timeout was 60 seconds.
Ref: #26pxp5p - Connector REST: The ‘URL’ input takes precedence over the ‘hostname’ input.
Previously, if `hostname` was specified, the URL was constructed using `scheme`, `hostname`, `base_path`, and `path`. The `url` input was ignored.
Ref: #1yru5mw
New Features
- Wrappers
Wrappers can be used to “wrap” an executable resource (eg. a Flow) with a script. This can be used for notifications, retries, interactive processes, and much more.
Ref: #26pxuvt - Schema Validation
The resource type “Schema” can be used to validate and coerce data.
Ref: #26pxvg2 - UI: Filters for the execution live monitor.
To make it easier to navigate your list of past executions, search and filter options have been added to the execution live monitor.
Ref: #26pxr8m
- “Task” was renamed to “Connection”
And „Task Types“ to „Connector Types“. Usage of „task“ in flows is backwards compatible but may be removed in a future release. We recommend using „this.connect“ instead of the now deprecated „this.task“.
Ref: #26py75c - Vault Integration: It is now possible to use AppRole credentials to access secrets from the Vault.
Ref: #26pxu28 - Flow-API: New methods to skip dependencies of executions.
New methods include ignore_scheduled, ignore_dependency, ignore_lock, and ignore_response.
Ref: #26pxr21 - Flow-API: Child executions can now be created by selecting a flow by ID as well as name.
Previously, only selection by name was possible.
Ref: #26pxrha - API: The ‘/api/alive’ endpoint now also returns the version of the backend.
Ref: #26pxu30 - Connector REST: Cookies of all responses, including redirections are returned.
Ref: #26pxt51 - Connector REST: Username and password can now be specified for basic-auth.
Ref: #26pxuuc - Connector REST: Allow sending a resource body when using the ‘DELETE’ method.
Ref: #26py2wq - Connector REST: Add web-proxy support.
Ref: #23dnt1w - Workspace sync: Add web-proxy support.
Ref: #23yxyzq - Flow-API: Provide ‘save_json_content’ and ‘get_json_content’ helpers for Cloudomation files.
Ref: #23djrgv - Security: Workspaces can be configured to require all users to use two-factor authentication.
Ref: #23dnry8 - Security: A user account is locked after five unsuccessful login attempts.
Ref: #26py3nt - Security: Cloudomation sends notifications to users when security relevant changes to their accounts are made.
Notifications are sent for: change of email address, change of password, enable/disable 2FA, account recovery, account activation.
Ref: #26py3nk
Bug Fixes
- Scheduling: Deleting a schedule now also cancels all active executions of the schedule.
Ref: #26py34q - Import: The keys of existing webhooks are kept when importing them again.
Previously, importing a webhook which already existed overwrote the key with a randomly-generated key even when the import file did not contain a key.
Ref: #26py39m - An execution which waits for a message response is now notified immediately when the message is deleted.
Previously the execution waited for the message until the timeout.
Ref: #26py3y1 - UI: Bulk operation “Archive” will archive all un-archived records and leave archived records unmodified.
Previously, the archive status of all selected records was toggled.
Ref: #26py2yp - Webhook: Content-type is now not validated when the request does not contain a body.
Previously, if a request specified an unsupported content-type, the request failed even when the request did not contain a body.
Ref: #26py2ww - Security: Added strict character whitelisting to multipart request headers.
Ref: #26py3kn - Security: Improved security by explicitly whitelisting allowed calls for connector types.
Connector types now perform a strict check of allowed method calls for connector types which use `getattr`.
Ref: #26py321
Version 4 "Punschkrapferl"
2021-08-12
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.
Breaking Changes
- 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.
Ref: CLOUD-6478 - Messages and Forms disallow special characters in field names
Names of all fields in messages and forms must only contain alphanumeric characters or underscores.
Ref: CLOUD-6197 - 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.
Ref: CLOUD-6196 - 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.
Ref: CLOUD-5665 - 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.
Ref: CLOUD-5402
New Features
- New User Interface
Clearer, cleaner, easier: the new user interface lets you focus on getting things done, instead of searching for buttons.
Ref: CLOUD-5841
- 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.
Ref: CLOUD-5845 - 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.
Ref: CLOUD-5736 - Webhooks can now return any HTTP response
A flow can set the HTTP status, headers and body of the response.
Ref: CLOUD-5402 - Simple internal mail method
A simple Flow-API method send_mail to send mail to a Cloudomation user was added.
Ref: CLOUD-1192 - Scheduling feature
Powerful and flexible scheduling was added as a native feature of Cloudomation.
Ref: CLOUD-5838 - Vault integration allows to write key-value secrets
A Cloudomation execution can write secrets to a key-value secrets engine of Vault.
Ref: CLOUD-5852 - Connection Analysis Plugin
Cloudomation provides a plugin which can be used to collect diagnostic information about a remote system with one click.
Ref: CLOUD-3430 - Plugins
Plugins extend the functionality of Cloudomation by providing content and additional actions in the user interface.
Ref: CLOUD-5716 - New connector type: SMB
Cloudomation can now access Samba/CIFS/UNC file shares.
Ref: CLOUD-5723 - New connector type: SOAP
Cloudomation can now access SOAP services.
Ref: CLOUD-5642 - 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
Bug Fixes
- 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.
Ref: CLOUD-5663 - 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.
Ref: CLOUD-5485 - 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.
Ref: CLOUD-7198 - 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.
Ref: CLOUD-7141 - 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.
Ref: CLOUD-7039 - 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.
Ref: CLOUD-6994 - 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.
Ref: CLOUD-6612 - 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.
Ref: CLOUD-6921 - 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.
Ref: CLOUD-6920 - 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.
Ref: CLOUD-6792 - 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.
Ref: CLOUD-6754 - 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.
Ref: CLOUD-6445 - LDAP connector fails with encodings other than UTF-8
New connector: LDAPThe 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.
Ref: CLOUD-6260 - 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.
Ref: CLOUD-6186 - Cannot upload files bigger than 16 MiB
“Maximum request body size exceeded”
Solution: The maximum upload size was increased to 64 MiB per file.
Ref: CLOUD-5747 - 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.
Ref: CLOUD-2958 - 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.
Ref: CLOUD-2656
Version 3
2021-01-20
Breaking Changes
- New resource: webhook
Webhooks are now configured using a dedicated “Webhook” resource type. Webhooks which are currently configured in a Setting must be migrated manually.
Ref: CLOUD-3366 - New input schema for Google connector
the project ID should now be specified in the “params” input
Ref: CLOUD-5292
New Features
- Visual representation of dependencies
The dependencies between executions can be visually represented in the Cloudomation UI.
Ref: CLOUD-3636
- Visual representation of flow logic
The control-structure logic of a flow can be visually represented in the Cloudomation UI.
Ref: CLOUD-3635
- Cloudomation workspace linking
It is now possible to link several active Cloudomation workspaces and synchronize executions between them.
Ref: CLOUD-3297 - Execution savepoints & restore functionality
Executions can revert to a previous state and continue running from there. This enables savepoints and restarts.
Ref: CLOUD-22 - Native git integration
Git integration is now configured using a dedicated “Git config” resource type. All Cloudomation resources can be synchronized from git.
Ref: CLOUD-69 - 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.
Ref: CLOUD-827 - New resource type: connection
It is possible to preconfigure connections to third-party systems and re-use them in flows.
Ref: CLOUD-2465 - New connector: MSSQL
It is now possible to connect to MSSQL databases.
Ref: CLOUD-3205 - On-premise support
Cloudomation can be deployed on-premise with or without Kubernetes.
Ref: CLOUD-105 - 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.
Ref: CLOUD-3430 - New connector: VAULT
It is now possible to connect to a HashiCorp Vault using the VAULT connector.
Ref: CLOUD-3964 - New connector: XMLRPC
It is now possible to connect to any XML-RPC service.
Ref: CLOUD-4498 - Support for running Cloudomation on Windows
Cloudomation can be deployed on Windows.
Ref: CLOUD-4530 - New connector: IMAP
It is now possible to connect to IMAP servers to search and fetch emails.
Ref: CLOUD-4581 - New connector: LDAP
It is now possible to connect to LDAP servers for authentication and to query data about a domain.
Ref: CLOUD-4586 - Support OAuth2 for bullhorn
The Oauth resource now supports authenticating against a Bullhorn installation.
Ref: CLOUD-4677
Bug Fixes
- 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.
Ref: CLOUD-1956
Version 2
2020-03-26
Breaking Changes
- 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.
Ref: CLOUD-2145 - 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.
Ref: CLOUD-1622
New Features
- Development mode
Tasks can be executed in development and productive mode. Task executions (connections) in development mode are free of charge.
Ref: CLOUD-2059 - User Interface redesign
The user interface was overhauled with a new color scheme and a cleaner design.
Ref: CLOUD-2991
- Editable files
Text files in the “files” resource can now be edited in the Cloudomation UI.
Ref: CLOUD-1480 - 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.
Ref: CLOUD-2027 - Advanced search in list views & REST API
All list views in the UI and the Cloudomation REST API now support filter expressions.
Ref: CLOUD-11 - Filter expressions in flow API
All flow-API list calls now support filter expressions.
Ref: CLOUD-1646 - 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.
Ref: CLOUD-2044 - Display of recent executions in flow record
The flow record view now shows the last 3 executions of that flow.
Ref: CLOUD-601 - Two-factor authentication
Users can now activate two-factor authentication for logging into Cloudomation.
Ref: CLOUD-2558 - Parse pdf in flow script
Users can now parse the contents of pdf files directly in flow scripts.
Ref: CLOUD-2525 - REST multipart POST upload
The REST task type now supports multipart post uploads.
Ref: CLOUD-2524 - Powershell task type
Users can now access Windows machines via Windows Remote Management and execute Powershell scripts.
Ref: CLOUD-1851 - 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.
Ref: CLOUD-1620 - Google API task type with Oauth2
Users can now use all Google APIs, and authenticate against Google APIs with oauth2.
Ref: CLOUD-392 - Email attachments
Users can now send emails with attachments directly from flow scripts.
Ref: CLOUD-1082 - Created/modified timestamps for all records
All resources now provide created at/created by and modified at/modified by fields.
Ref: CLOUD-815 - Protect API against denial-of-service
The load-balancer now enforces rate-limits.
Ref: CLOUD-699 - 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.
Ref: CLOUD-733 - Changed database backend
Improved scalability by migrating to PostgreSQL as a database backend.
Ref: CLOUD-2016
Bug Fixes
- 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)
Version 1
2019-03-01