Product Updates in 2020 Q4

Product Updates Archive for 2020 Q4 period.

2020-12-17 - v20.51

Feature fields in developer mode

With this release we introduce feature fields for the mapper Developer mode. You can open and examine the component input metadata and add needed objects by clicking on it. You can also add the path to property if using function or expression.

Developer mode feature fields

Animation above shows an example of these fields while configuring the email component.

Flow step logging level setup

As an integrator or component developer we need to dive into the troubleshooting and debugging sessions to identify and iron out some problems in our projects. For this purposes, the detailed logs are invaluable. On the other hand, detailed logs are sometimes unnecessary during the normal operation runs if you tend to exchange sensitive data through your integration projects.

To control the logging level for each of your flow-step we introduce a new setup called Log Level, accessible from the Advanced Setting part of flow-step Summary. With this setup you can increase or decrease the output logging level of your component from the default Info using the drop-down control shown below.

Choose the logging level

Please Note: To change the logging level of any flow-step, you must create a new draft for your flow, save it and start again.

The available logging levels are Trace, Debug, Info, Warning and Error where the Trace will output everything your component can show. On the other end of this spectrum, the Error level would output only the flow-step errors.

You can set or change the logging level directly using our REST API call. For this purposes we extended the flow step configuration by adding the log_level parameter:

"attributes": {
  "nodes_config": {
    "step_1": {
      "log_level":"info"
    }
  }
}

Please Note: You can only change the logging level for run-time executions. This setup would not work on one-time executions like retrieve sample and verify credentials.

Retry-all flow errors

During some exceptional circumstances, you might get too many errors in your flow execution step to retry it one-by-one. To help process these errors in one go we introduce a new option Retry All Errors which will appear if more than one error happens in this step during an execution.

Retry all button

When clicked, our system will ask you to confirm your action by displaying you the following popup message:

Note: the error messages will be deleted from this Runlog Record. Retry results will arrive to this Runlog record.

Retry all confirmation

You can cancel and return to your screen with errors or confirm and retry all errors, in which case our system will retry all retriable errors. This feature has a limitation: you can’t edit messages before retrying while using retry all errors.

Please Note: Only messages in the single step of particular executions will be retried. It is not possible to retry errors from all steps or from all executions of the flow. For that you still need to open each step in particular execution separately and press retry all button.

Improvements and Updates

Old mapping experience end-of-life

With this final release of the year 2020 we announce the end-of-life for our old mapping experience which was with us for several years and served us well.

From this release the new mapping experience will be the default and it is no longer possible to switch-back and forward between them.

Please Note: If you still need to use the old mapping experience and you are one of the OEM customers get in touch with us - we can enable it for your tenant.

Node.js Sailor updates

With this release we introduce next sets of improvements to the Node.js Sailor, the base library used to compile any Node.js based component code during the platform deployments.

Component Developers Note: Use Sailor version 2.6.21 along with the Node version 12.20.0 or higher for these improvements. Details follow.

AMQP connection problems

Starting from the Node.js Sailor version 2.6.19+, we improved the mechanism used in the connection to and from the RabbitMQ queues and the pods running your component code.

  • Introducing a separate connections for consuming and publishing the messages.
  • The consuming is done with polling instead of pushing.
  • The re-connects on connection errors.
  • It handles the consumer cancel notifications.
  • Decreased the logging levels for certain cases to help troubleshoot problems.
  • We introduce new environment variables you can use in your components to control connection to and from queues engine:
    • AMQP_RECONNECT_ATTEMPTS - number of retries on connection close.
    • AMQP_RECONNECT_TIMEOUT - delay between connection retries.
    • WAIT_MESSAGES_TIMEOUT - delay between next poll when queue is empty.

Rebound Headers

Starting from the Node.js Sailor 2.6.21+, the rebound message headers and the rebound message expiry time inconsistencies are fixed.

Configure timeouts for one-time executions

You can now configure how long it would take the one-time execution to timeout and severe the connection with the third party resource. We introduced a new variable FORCE_DESTROY_ONE_TIME_EXEC_SEC to control the timeout.

To use this functionality add/change force_destroy_one_time_exec_sec ksonnet parameter in the config.json file and write your desired time. The default is 120 seconds.

Enabling old mapping experience

We introduced tenant setup parameter flag tenant.feature_flags.old_mapper_enabled to control visibility of the switcher between old/new mapper. With this release the flag is set to false by default.

As an OEM customer you can still enable and use the old mapping experience. Use the tenant setup parameter flag tenant.feature_flags.old_mapper_enabled with true value. Check our API documentation for /v2/tenants endpoint parameter flags.

Fixed Bugs

  • Addressed the problems with deleting symbols in the text-fields for OAuth2 credentials.
  • Fixed the manual sample creation UX.
  • Fixed the missing scrolling in the developer mode for components with metadata exceeding the visible area of the browser window at the bottom edge.
  • Addressed the problem of lost focus during the new-credential creation after pressing the button “Add New Credential”.
  • Addressed the case with the null result of the component select-model. Now it shows the error. Please reload the select model.
  • Fixed the problem when the configuration field were missing in the recipe activation screen for the steps which use secrets.

Components

Batch Component

  • FIXED connection bug preventing authentication with the MongoDB.

Filter Component

  • FIXED bug when the produced body had an excessive meta structure containing the actual meta information of all processing steps. Now the produced body is exactly the same as sample produced by the REST API component.

PostgreSQL Component

  • FIXED the problem when the component could not connect PostgreSQL databases hosted on Heroku.

Salesforce Component

  • FIXED the bug when the Lookup by field configuration field depended on Object field in the component action.

Utility Component

  • IMPROVED the attachment to string functionality. Now you can use either the attachment ID or the URL.
  • IMPROVED the string to attachment functionality. Now the component recognises the URL and the size. Both of them are written to the message body.

REST-API Component

  • IMPROVED the functionality of component to encounter for network failures. Now the component will start automatic retries in cases of errors like ETIMEDOUT, ECONNRESET etc.
  • UPDATED - Dependencies and the Node.js Sailor version to 2.6.21.

Appdirect Component

  • UPDATED - Dependencies and the Node.js Sailor version to 2.6.19
  • NEW action Finalize Opportunity is added.
  • NEW action Request Opportunity Review is added.
  • NEW object types were added to the Create Objects action. In particular Opportunity. Opportunity Item and Lead.
  • NEW object types were added to Update Object action: Opportunity, Opportunity Item, Company amd Lead.
  • UPDATED the following metadata for the Update Object (Company object type) and Lookup Objects (Company object type).

Sailor version update in bulk

As a part of the annual component code audit for a possibility of sensitive data exposing we checked and updated the following component codes and the dependencies:

2020-11-19 - v20.47

Debug and one-time execution logs

We introduce a new possibility to obtain the debug and one-time executions logs straight from the logs window. You can choose to Download the logs directly to your computer and the system will give you a time-stamped *.log file or you can choose Copy to clipboard to paste the logs where you need. The small animation below shows these options.

Logs Window

Improvements and Updates

With this release we spent considerable time to streamline and improve the platform UI pages. For example the executions page is now more responsive and the new executions show much faster than before. By our initial estimate it loads 20 to 30% faster. We also load next and previous executions pages asynchronously to improve the first page loading speed.

The mapper UI received a particular attention where we improved the usability of multiple features explained in the following subsections.

Empty dynamic-select model

While using the dynamically selectable fields from third party sources you might encounter situations when no metadata is returned. In this cases we will show the following warning text to text:

Unfortunately the service behind the component did not provide any options for the given credentials. This is not necessarily an error. Please check whether there are data for the given credential and retrieve the options again by clicking on the Reload icon on the right side of the drop-down element.

Re-sizable text-input fields

All text-input fields now grow with the content. When the you have an input longer than 4 to 5 lines, a new vertical resize selector in the right bottom corner of the field appears. You can use it to extend the field for your viewing convenience.

Scrolling of mapped fields

You can scroll to see all the content of mapped fields in any saved flow versions. The scroll-bars show not only the input fields but besides the mapping results too.

Object types in mapping fields

You can now switch between Integrator and Developer modes and edit without a problem while using any object type in your mapping.

Node.js and Java Sailor updates

We are constantly improving Sailor versions for Node.js and Java programming languages. In this round we addressed edge cases when trigger and action functions might output sensitive data while processing error stacks. Here are the most recent versions:

  • Node.js Sailor version 2.6.18
  • Java Sailor version 3.3.1

Auth-clients without expiration

To address certain 3rd party OAuth2 provider unique setups we introduced default token_expires_in parameter with 1 hour interval. The background of the problem came from the cases when the external systems (e.g. Salesforce) would not return token_expires_in for the auth-client calls.

Now any authentication client without expieres_in parameter receives a default token_expires_in parameter with 1 hour value. This value will propagate to the connected secrets as well. The API documentation was updated accordingly.

Configure timeouts for debug tasks

You can now configure how long it would take the debug tasks to timeout and severe the connection with the third party resource. We introduced a new variable FORCE_DESTROY_DEBUG_TASK_TIMEOUT_SEC which can be defined in platform deployment config.json file to control this behaviour. If this parameter is not defined the default behaviour is the following:

  • Frontend timeout after 60 seconds.
  • Back-end timeout in 180 seconds.

Removing default favicon for tenants

If the favicon is not defined for your tenant the platform will return 404 on /favicon.ico address. Please make sure to define it as a tenant parameter for your tenant. To define the favicon you would need to define the parameter favicon_url as it is explained in the API documentation. Contact support if you require need help in setting this up.

Recipes permissions per tenant

As an OEM manager you can control which role holder can create recipes from the flows. We introduced a new permission workspaces.flow.exportToRecipe which you can grant to Admin, Integrator or any newly created role to manage recipe creation.

Please Note: The workspace Owner role can not receive this permission since the role is restricted and any changes to the role is against the security policies defined by the law. You can, however, add an additional role to the workspace Owner which has the permission to create recipes.

In addition, the Tenant Administrator role can export a flow to a recipe if he/she has access to the flow. These changes are also applied in the API documentation.

To benefit from these changes a migration process must be done which is handled by the gendry.

New permissions added

We introduce new sets of permissions including /v2/permissions and all error messages to extend the existing sets to global access for multi-tenant installation of the platform. The following permission were replaced with their global counterparts:

contracts.auth_clients.create, contracts.auth_clients.delete, contracts.auth_clients.edit, contracts.auth_clients.get, workspaces.auth_clients.create, workspaces.auth_clients.delete, workspaces.auth_clients.edit, workspaces.auth_clients.get, tenants.auth_clients.get, tenants.auth_clients.edit, tenants.auth_clients.create and tenants.auth_clients.delete.

Replacements:

global.auth_clients.get, global.auth_clients.edit, global.auth_clients.create and global.auth_clients.delete.

Fixed Bugs

  • Fixed the bug when the mapped data would disappear after component version change.
  • Addresses issue when a JSONata expression would disappear from the mapped fields.
  • Fixed the issue when the system would not save dynamic-select model in cache.
  • Fixed the problem when select-model stops executing while opening the log window in the flow-designer.
  • Addressed the behaviour when data from previous steps would disappear after some manipulations.
  • Fixed the inconsistency when duplicate logs were shown during the flow-designer.
  • Addressed the “Allowed Values” limitation of the new mapping experience to handle large number of values.
  • Fixed the bug in case of REST API component when the user entries would disappear.
  • Addressed the problem when the metadata would disappear in case of identical value entry in the drop-down list (select model).
  • Fixed a strange behaviour in the new mapping experience with changed select-model lists.
  • Addressed the problem with Splitter component when component would constantly “blink” between configured and non-configured modes during flow design.
  • Fixed the problem when the Browser window would crash during editing a flow with large number of steps.

Components

Batch Component

  • FIXED - Credentials verify minor issue.
  • FIXED - MongoError: Authentication failed by authSource.
  • IMPROVEMENT - Annual audit of the component code to check if it exposes a sensitive data in the logs.
  • UPDATED - Dependencies and the Node.js Sailor version to 2.6.18.
  • UPDATED - batching-library version.

Google Spreadsheets

  • IMPROVEMENT - Annual audit of the component code to check if it exposes a sensitive data in the logs.
  • UPDATED - Dependencies and the Node.js Sailor version to 2.6.18.
  • UPDATED - Removed the deprecated functions.

REST API Component

  • IMPROVEMENT - Automatically retry 5 times on network failure.
  • IMPROVEMENT - All network failures trigger rebounds in case of enable rebound option set.
  • UPDATED - Dependencies and the Node.js Sailor version to 2.6.18.
  • UPDATED - The deprecated V1 component icon to gray-scale.

Salesforce Component

  • FIXED - Field dependencies from object field in component.json which caused en error in drop-down.
  • UPDATED - Dependencies and the Node.js Sailor version to 2.6.18.
  • UPDATED - The deprecated V1 component icon to gray-scale.

SugarCRM Component

  • FIXED - an exception when emitwas called without await.
  • FIXED - an issue when Verify credentials button would not verify credentials.
  • IMPROVEMENT - Annual audit of the component code to check if it exposes a sensitive data in the logs.
  • UPDATED - Dependencies and the Node.js Sailor version to 2.6.18.

Sailor version update in bulk

As a part of the annual component code audit for a possibility of sensitive data exposing we checked and updated the following component codes and the dependencies:

2020-10-26 - v20.43

Secrets Feature

We are happy to announce the public release of Secrets feature - a service which independently keeps access tokens up-to-date so any integration step would get a valid and working access credentials to the third party resources. The service updates tokens behind the scene using the token expiration information.

Secrets addresses the race-condition and other contention-on-shared-data problems of OAuth2 authorisation process frequently happening due to concurrent and asynchronous work of steps in different integration flows. With this service in place, components are not required to update the access tokens. The Secrets takes over this process and supplies the Components up-to-date access tokens directly.

For more details visit the dedicated Secrets feature documentation page.

New components working with Secrets

Along with the public release of Secrets we are releasing two new generation components, REST API v2 and Salesforce v2, which use the Secrets Management Service.

These fully refurbished components are not strictly backwards compatible due to architectural differences between Secrets and the ordinary Credentials systems.

The old versions of these components are still available for a foreseeable future, however, they will be marked as deprecated. We will only make security updates if required, but further development of these versions will not be done.

We encourage our customers to try the new generation components and give us your feedback.

Visibility Authentication Clients

With this release we completed the authentication clients (auth-client) visibility levels. The auth-client can now have workspace, contract, tenant and global access levels. This means you can create auth-client for any access level, be that only for one workspace or for the entire cluster of tenants.

Check our API documentation for more information on auth-client creation.

Improvements and Updates

Execution and Logs pages

From this release, all execution threads on Executions page will show the times in absolute format AM/PM or 24h depending on your local setup.

Absolute time format in executions

We are introducing Clear all filters enhancement for Executions and Logs pages for clearing all selected filters in one go. Here is an example of usage on Logs page:

Clear all filters

This feature is hidden by CSS by default so that the look & feel of OEM tenants is not disrupted. Feel free to adjust the CSS to introduce this functionality in your tenant.

Mapper UI

We continue our efforts to streamline and improve the new mapping experience based on your feedback. In this release we concentrated on loading time improvements, JSONata previews, dynamic drop-downs and manual sample creation.

When using JSONata expression for input fields, the preview is rendered with “pretty print” instead of one single line of code which ehances the mapping experience and helps to spot any errors while building an integration flows.

When using the dynamic drop-downs fields the search appears only if there are more than 7 items to choose. In addition, all dynamic drop-downs have reload buttons to refresh the list.

Dynamic drop-down menu

While designing an integration flow you can just use an automatic sample regenerated the platform and already populated based on the metadata.

Auto-generated Sample

Authentication Secrets with Agents

Now you can choose to add Authentication credentials for the steps running on Local Agents. It works for old and new VPN Agents.

Authentication Credentials on LA steps

Node.js Sailor update to 2.6.17

We release a latest update of Node.js Sailor version 2.6.17 which disables message header logging at info level.

Fixed Bugs

  • Addresses the issue with Rendering Large Amount of Input Fields in the Browser.
  • Fixes the bug when unexpected and out of order execution results appear in thread list.
  • Addresses the UI bug when the Logs window in the flow-designer overlays the Continue button.
  • Fixes the restriction of Recipe activation with Secrets.
  • Addresses the UI bug when an invalid JSONata expression in the new mapper would not case error.
  • Fixes the problem with passing the value to text-field-view.
  • Addresses the problem when the dynamic metadata generation while toggling between actions that have dynamic metadata but no configuration fields.

Components

Salesforce Component

A new version 2 component is introduced. While technically it is similar to the old one, this component uses the new service to manage Secrets. We have also removed the deprecated functions from the new Salesforce v2.

  • NEW - Component uses Secrets Management Service for OAuth.
  • NEW - Component uses the latest (v2.6.17) Node.js Sailor.

REST API Component

A new version 2 component is introduced. While technically it is similar to the old one, this component uses the new service to manage Secrets.

  • NEW - Component uses Secrets Management Service for OAuth.
  • NEW - Component now includes attachment information in outbound message.
  • NEW - Includes status code, HTTP headers along with body in produced message.
  • IMPROVEMENT - Annual audit of the component code to check if it exposes a sensitive data in the logs.

Oracle EBS Component

Introducing a new component for working with the Oracle E-Business Suite services.

  • NEW - Introducing new Execute Method action.

Microsoft Dynamics CRM Component

  • FIXED - emit called without await cases in the code.
  • UPDATED - dependencies for all used packages.
  • IMPROVEMENT - Annual audit of the component code to check if it exposes a sensitive data in the logs.

SugarCRM Component

  • IMPROVEMENT - Annual audit of the component code to check if it exposes a sensitive data in the logs.
  • UPDATED - dependencies for all used packages.

Sailor version update in bulk

Following the Node.js Sailor version 2.6.17 release, we updated the following integration components dependencies: