Release notes

We are always thinking of new ways to help our clients. Here is an outline of what we’ve changed in our latest releases. For a full list of changes, go to the help section in your Rulecube environment.

Version 2.1 – Q1 2024

New features

Ockto support

Ockto can now be configured on a per-tenant basis. Workflows can now be created that integrate with Ockto. A how-to guide for creating a workflow is available in the Rulecube documentation environment.

Note: this is a Premium feature and may not be available in your plan.

Improvements

Rulesets

  •  
  • Layout now makes more optimal use of the screen width
  • The used-by banner is only shown on the general settings page, so there is no need to scroll on each item
    page anymore
  • Ruleset search now also searches in Workflows
  • Search results display proper icons (types, alert types, included in output, etc.)
  • On upload/paste, entities can be put in a folder
  • Only simple constants can be encrypted now
  • Code check after cloning a Ruleset item
  • Encrypted constants now use a different encryption algorithm
  • Functions no longer require a return for single-statement multi-line expressions
  • Folders now show a warning if they have no name or if they are duplicate when they’re included in the
    output
  • Non-library rulesets can no longer be published to the Hub
    Entities may now have circular references
  • Errors/hints/code issues in alerts and multi-lingual alerts now show their proper location
  • Test cases now have a Description field
  • Deleting an item from the output also updates all test cases where it is used
  • Warning is shown when user enters a Rule’s output name that is identical to its name

Workflow

  • Workflows are now fully event-driven. Events can be handled using an internal event bus (single Rulecube
    instance) or RabbitMQ (single and multiple Rulecube instances). Locking mechanism used can also be
    configured: in memory, or distributed via database (MongoDB only) or Azure blob storage
  • Workflows with an incorrect state Input or state Entity show an error now
  • Join steps in a Workflow now set the state to Suspended if they are incomplete
  • Diagnostics generated in a step (console.log, etc.) are now saved to the Workflow instance if a step fails
  • Workflow instances overview now only displays non-completed ones by default
  • A workflow ruleset’s swagger definition now contains the workflow/start endpoint
  • Workflow Tasks can now be released by admins
  • Workflow Tasks can now be extended with a checklist, which can optionally be required to be completed
    before the task can be fully completed

Misc. changes

  • Toast notification location
    • You can now set the location of toast notifications in your user settings (Click on your name in the
      top right corner > Settings)
  • Organization profile page has been overhauled: Settings, Users, Contact info, and API keys are now in
    separate tabs
  • Counter badges have been added to all pages that deal with lists and tables of data
  • When external data can not be fetched, the admins of that organization will be sent an email
  • Added GMT hint in the edit dialog for Triggers with a schedule
  • Improved styling of the History page’s Rollback button
  • Analysis Log has been limited to 10,000 entries
  • When calling console.log() with a base-64 data URI image, the image is now displayed in the Sandbox.

Code

  • Finance.An() – Calculate the present value of a lumpsum
  • Finance.Sn() – Calculate the future value of a lumpsum
  • Workflow.stop() – Gracefully stop a workflow
  • The entire Ockto library and its methods.
  • A Constant Table’s name can now be accessed programmatically with YourTable.name

Quality & Performance

  • Rulecube now performs a self-diagnosis on startup to detect potential problems with the
    deployment/environment.
  • Code coverage of the engine code base increased to 100%
  • Code coverage of the entire code base increased to 95%
  • Analytics page is many times faster and no longer hangs the browser
  • Test cases are now at least 2x smaller in network size and no longer slow down the opening of a Ruleset
  • Converted our application to Vue 3
  • Application bundle size has been decreased from 2.3MB to 181kb, making the app load much faster over
    a network
Fixes
These are the bug fixes that have been made in this release.

  • Input/rule output name clash is detected after cloning
  • Bug related to SSO with Azure AD overwriting your username
  • DB stats negative size overflow bug
  • Ruleset > Tools > Delete all tests now works properly
  • Authorization HTTP header checks were case-sensitive
  • Fixed an issue in HTTP headers and case sensitivity
  • Fixed role assignment/invitation issue
  • Fixed a security issue related to JWT
  • Added System-ExecutionOnly API key to all tenants
  • Fixed visibility of API keys to tenant users
  • Fixed an issue in SQL where a Metric Alert was sometimes not saved
  • Removed a permission of TenantUser so they can no longer edit the Organization profile / API keys
  • Fixed an issue in Mail.send() for use in Ruleset code.
  • Fixed an issue in Database updater scripts when the connection to the DB fails
  • Fixed an issue in SQL instances of Rulecube where long numerical values caused an error
  • Fixed an error in api/alert/list in SQL instances if no tags were specified
  • Fixed an issue where not all tests were deleted if this was done from the Tools page
  • Fixed a bug where the parameters of a parent Function could be changed in a child ruleset
  • 2FA can no longer be enabled for AD users, as it will use the AD settings
  • Fixed a bug where environment variables used in a library were not available when Test cases were run
  • Environment variables in a shared ruleset default to the source tenant’s environment variable value
  • When a rule’s output name is the same as its name, an error is no longer generated during execution
  • Fixed a bug where when a ruleset item’s name is cleared, the user got redirected to the General settings page
  • Fixed a bug where a Join step in Workflow would not work properly if the previous step is a Wait or Switch
  • API: Admins can no longer delete themselves
  • API: Tenant admins can no longer delete or downgrade themselves
  • Old refresh tokens are now deleted on refresh
  • Fixed a bug in the Output list of a ruleset for rules with the type of an Entity
  • Fixed a bug where an invalid redirect could lead to the user being stuck on the Login page
  • Workflow steps with code are now also refactored when an item is renamed
  • Workflow signals are now handled after the current step has been completed
  • Workflow Switch steps with a return value that doesn’t match one of its branches no longer set the state
    to ‘Completed’, but to ‘Failed’
  • Fixed issues for libraries that were several levels deep (Library that uses a library that also uses a library,
    etc.)
  • Fixed line numbers bunching up in Workflow step code editors
  • Fixed statistics errors when workflow steps are executed
  • Password can no longer be changed for Azure AD users through Rulecube
  • Fixed intellisense for Constant Table’s intersect() method
  • Fixed intellisense for MongoDB’s aggregate() and bulkWrite() methods
  • Alerts for programmatically instantiated entities now generate alerts if any are defined
  • New metrics without alerts now correctly remove any previously linked alerts
  • Fixed an issue in Http.delete() where it would not perform a DELETE call correctly
  • Fixed an issue where changing a Ruleset’s parent interface would lock it for other users
  • Fixed Add/Edit Trigger modal so that it can not save if there’s no Ruleset selected
  • Tasks are now properly filtered according to their stakeholder groups
  • Fixed metric filters when used in cases where a numeric field is actually internally a string
  • Disabled forgot password functionality for Azure AD users
  • If saving of metric fails, the execution call will not fail entirely

Version 2.0 – Q3 2023

New features

Workflow

Rulecube now supports workflows. A workflow is a special type of ruleset that is interactive and responsive. In a regular ruleset, you provide input and start the ruleset, then it processes the input and returns the requested output. A request and  return process through the ruleset’s API without interaction. In a workflow, on the other hand, you have a sequence of steps, and you can affect the step execution and interact with a step during processing. For instance, a workflow can choose which steps to execute. Or wait until it receives an answer or response to proceed.

Note: this is a Premium feature and may not be available in your plan.

Mini apps

Mini apps are small, single-purpose HTML web apps. They can be used to create a  custom UI for a ruleset, a workflow or any other APIs available on the web. For example, you can create a mini app that acts as a dashboard for a ruleset. It can display the ruleset’s output in a custom way, or it can provide a custom input form for the ruleset.

Note: this is a Premium feature and may not be available in your plan.

Triggers/Scheduling

Rulecube now supports scheduling rulesets and workflows. You can schedule a ruleset to run at a specific time, or at a specific interval. In the future, we will add more types of triggers, such as Webhooks, RabbitMQ, Kafka, etc.

Two Factor Authentication

Users can now enable Two Factor Authentication (2FA) on their account. This adds an extra layer of security to your account.

Documentation

Rulecube 2.0 also goes live with a new documentation website: docs.rulecube.com. This documentation contains all the information you need to get started with Rulecube, tutorials, as well as detailed information about all the features and functions.

Improvements

Rulesets

    • A ruleset can be changed to a workflow ruleset under Version Settings. This will:

– Convert the ruleset to a workflow ruleset and add a default workflow
– This will add a State entity
– This will add a State input with type State
– Enable use of the Workflow visual editor

  • Functions and Constants now support folders
  • Folders can now be added in child rulesets
  • Constants can now be easily upgraded to an Environment Variable
  • Constants and Environment Variables can now be used in External constant mapping
  • More input constraints:
    Minimum length for array and string
    Strict flag: if the input does not meet the constraints, halt the execution
  • Alerts can now have custom messages besides the default one
  • Multilingual alerts select organization’s default culture and displays all set cultures
  • Many improvements to XSD and JSON Schema imports such as enums, min and max lengths of strings
  • Dates are now detected in strings in JSON, JSON Schema, XSD, XML and automatically set to date.
  • Duplicate constant table keys and headers are now detected and shown
  • Duplicate HTTP headers in external constants are now detected and shown
  • Library methods that use Input or Rules now display a warning as this is unsafe
  • Intellisense in code editor related to Libraries has been improved greatly
  • Warning on Input with type ‘any’
  • Sandbox data can now be omitted when exporting a ruleset
  • Settings > Tools now has a JSON Schema / JSON / XSD / XML upload form to support browsers that don’t
    allow drag & drop or copy & paste.

Sandbox

The sandbox is the environment where you can test your rulesets. It has been improved in some ways:

  • Added support for workflow execution
  • Added copy buttons for each result value
  • When a data URI is output by a rule, it will be displayed as a download link
    – For example, data:text/plain;base64,SGVsbG8sIFdvcmxkIQ== will be displayed as a download
    link to a text file containing Hello, World!

Execution

These changes relate to the execution of rulesets. E.g. via the integration in your own application, Swagger or Postman. 

  • Invalid XML is detected for ruleset executions
  • Diagnostics are no longer returned by default when executing a ruleset. The option logLevel needs to be
    set to ‘info’, ‘warning’ or ‘error’.
    – From the Sandbox, this is ‘info’ by default.
    – ‘info’ returns all diagnostics.
    – ‘warning’ only returns diagnostics from console.warn() and console.error()
    – ‘error’ only returns diagnostics from console.error()

Metrics

  • Metrics emitted by library rulesets are now added to the calling ruleset’s metrics
  • More metric filters have been added (tags, rule ID, ruleset ID)
  • The total amount metrics is displayed on the metric screen

Organization

  • API keys can now be limited to specific Rulesets
  • Updated password policies
  • FormsUser role has been deleted

Admin

  • Config error detection
  • Log view
  • Culture can be set on organization creation

Analytics

  • Statistics per ruleset
  • Improved readability of values; muted 0-values and formatting

Misc. changes

  • Upgrade to .NET 7
  • Internal refactoring
  • Webpack to Vite conversion
  • Microsoft Marketplace integration

Code

Please check the Manual for more information about these changes.

  • Date: startOfQuarter() – get the first day of the quarter
  • Date: endOfQuarter() – get the last day of the quarter
  • Date: addQuarters() – add quarters to a date
  • XML2JSON(xml) – convert XML to JS objects
  • JSON2XML(obj) – convert JS objects to XML
  • ROUND, CEIL and FLOOR now support a negative number-of-decimals parameter to round up to tens,
  • hundreds, etc. (ROUND(1948, -1) -> 1950, ROUND(1948, -2) -> 1900)
  • ROUND and its variants now also work like they do in Excel.
    PDF.create(html) – create a PDF from HTML

  • The entire Workflow library and its methods.

Performance

  • Refresh token cleanup
  • Huge SQL query optimization
  • Improved performance of ruleset execution
Fixes
These are the bug fixes that have been made in this release.

  • Explain now works in combination with sensitive constants
  • Multidimensional arrays now work correctly in code completion
  • Sandbox data is no longer is duplicated when importing a ruleset
  • Fixed Dark mode detection on tab focus
  • Docs: return type for GUID() was number, but is now correct (string)
  • Fixed a bug with fetching external constants that are not saved in the ruleset yet.
  • When profiling in the Sandbox, alerts were not triggered.
  • Changing Environment Variables no longer creates a revision or set last modified name to ‘System’ on a ruleset.
  • When deleting a ruleset, its dependencies are now displayed properly
  • Fixed a bug causing Ruleset History to not load when a revision is made by a user that has been deleted
  • Fixed a bug when saving a new Ruleset version that ended with a non-numeric part
  • Fixed a bug in testcases where it would not allow empty expected output and would check out the ruleset automatically.
  • Auth token is no longer usable after logout
  • Inviting new users no longer gives a cryptic ‘apiKey is null’ error when e-mail is not properly configured

Version 1.9 – Q1 2023

New features

Email from within Rulesets

It’s now possible to send emails from from Rules and Functions. This is done via the Mail.send() function. This function supports features like CC, BCC, attachments, HTML emails, inline images (e.g. for logos in signatures), and more. More information is available in the Rulecube Manual.

SQL and MongoDB

Rules and Functions can now read and write data from MongoDB and SQL databases. This is done via the MongoDB and SQL classes respectively. More information is available in the Rulecube Manual.

Execution statistics

A new section has been added to the top menu: “Analytics”. This section shows statistics about execution of Rulesets. This is rudimentary at the moment, but will be expanded in the future.

Environment variables encryption

Environment variables can now be encrypted. If an environment variable is encrypted, it will be hidden from the user and can only be decrypted by the engine. This is useful for storing sensitive data like passwords and API keys.

Additionally, when Rulecube detects that an encrypted variable is in the output of a Ruleset execution, and an error will be thrown. This is to prevent sensitive data from leaking.

API: Alert endpoint

A new API endpoint has been added: api/alert. This endpoint can be used aggregate and manipulate Metric Alerts. A Swagger definition with more information is available.

Improvements
  • Ruleset

    • Entities can now be added in child rulesets.
    • Entities are now detected in code and Type usage.
    • Entities will now be marked as unused if they are not used as a Type and nowhere in a Rule or Function’s code.
    • External constants with fetch errors now display an error icon in the menu.

    Sandbox

    • Improved profiling visualization.
    • Benchmark and Batched benchmarks can now be canceled.
    • The name of the ruleset is now visible in the browser window/tab.
    • Max amount of diagnostics in advanced settings.
    • HTML is detected in the output and gives the user an option to render it normally.
    • Testcase mode can be enabled in advanced settings. This will simulate the ruleset being ran from a testcase, meaning System.isTest() will return true in a Rule.

    Execution

    • Entities can now be profiled.
    • Max amount of diagnostics can now be set by the user in the execution options (default is 100).

    Misc. changes

    • Upgraded to Node 18 and all its JS features in the engine.
    • Support for MSSQL databases as Rulecube’s underlying database engine.
    • Environment variable values are no longer shown in a ruleset.
    • Environment variables can be encrypted now.
    • Environment variables show where they are used and can’t be renamed or deleted when in use.
    • Encrypted data is now prevented from ending up in the output of a ruleset execution.
    • User permissions are now checked instead of roles.
    • Added support for email-less User registration (needs to be enabled in environment).
    • Metric Alerts can now be dismissed with an optional reason.
    • External constant data can now be plain text instead of JSON.
    • Added error banners on the service page when there are issues with External constants or Environment variables.
    • When a user is part of multiple organizations and is working in multiple organizations in different browser tabs, a dialog is no longer shown. Instead, the user is automatically switched.
    • Ruleset examples in docs
      • Added copy button for examples.
      • Added fetch example.
      • Added error handling to all examples.

    Code

    Check the Manual for more information on each item.

    • Mail.send() – send email with given SMTP settings
    • Http – new class containing HTTP methods like Http.get() and Http.request()
    • SQL – new class containing SQL methods like SQL.execute()
    • MongoDB – new class containing MongoDB methods like MongoDB.find() and MongoDB.insert()
    • PICK(arr) – picks and returns a random item from a given array
    • PLUCK(arr) – similar to PICK but removes the item from the array(!)
    • RANGE(start, end) – create an array of numbers
    • FOR(start, end, fn) – iterate over a range of numbers
    • REPEAT(times, fn) – call a function a number of times
    • CSV2JSON(csv, opts) – transform a CSV input into JavaScript objects

    Performance

    • Http requests are now executed at least 300% faster.
    • Database indices were added to improve overall application performance. Saving a ruleset should be faster now, for instance.
Fixes
  • Rules no longer receive an implicit return statement if it results in a syntax error.
  • Functions that reference rules no longer trigger them if they are in a code branch that is not executed. This caused Rule alerts to be triggered when they shouldn’t have been.
  • Large external constant fetch errors are no longer page-breaking.
  • Fixed bug when renaming a Ruleset’s item to an existing item’s name.
  • Importing entities via JSON now correctly sets the include-in-output values.
  • Export ruleset dialog no longer causes multiple downloads when pressing the OK button multiple times.
  • Magic numbers that are used as an array index ([x]) are no longer reported.
  • Folder settings are now disabled when a ruleset is locked.
  • Fixed bug related to adding entities from a file when there are folders that have not been saved yet.
  • Fixed bug where multi-organization users could accidentally move rulesets between organization when working in two or more organization and the same time in different browser tabs.
  • Libraries with libraries now correctly work with environment variables.
  • Browser tab only shows environment name on specific environments.
  • Deprecated API endpoint api/execute/ruleset/{ruleset name}/{version}: version is now optional – if not specified, will execute the active version
  • Improved error message when a ruleset is executed without specifying a version and there’s no active version.
  • Pressing ‘Save and run’ in a testcase no longer locks the ruleset for others.
  • Save as new version button is enabled when the ruleset is locked.
  • Renaming entities now changes their references in rule and function expressions too.
  • Function parameter names no longer randomly jump back to their old values sometimes

An extensive description of the improvements, features and fixes can be found in the Rulecube Help environment. The extensive release notes include a list of changes that may require attention when you have legacy rulesets.

Version 1.8 – Q4 2022

New features
  • Rulesets can now be locked
  • Enhanced export files that include revisions, referenced rulesets and more
  • Rulesets can now be favorited on the Services page with a ⭐button
  • External data schedule: an overview of allexternal constant data of all rulesets in the organization.
  • The ruleset edit screen now offers a ‘Tools’ section.
  • API key management
  • From the organization profile page it is now possible to create API keys with specific roles, just like with users.
  • Enhanced Multilingual Alerts – allows you to render all defined languages of a multilingual alert.
  • A sticky execute box in the Sandbox
Improvements
  • Various improvements to the ease of defining a Ruleset
  • The sandbox functionality has been improved to offer more oversight en clarity
  • Better diagnostics are available on either failed or successful ruleset execution
  • Miscellaneous changes were made to improve the overall Rulecube experience.
  • Various Code commands were added or improved
  • Performance of External constants and startup is improved.
Fixes
We fixed several bugs, covering

  • some styling and (dark-mode) display issues, impractical popups or confusing notification texts
  • some under-the-hood code refactoring, and legacy code removal
  • some settings that are now correctly honored and displayed, including name changes that only involve letter casing.
  • multiple issues in user creation and activation
  • an issue when an external constant was incorrectly cloned
  • an issue where environment variables in combination with referenced rulesets (libraries) did not work properly
  • an issue where the ‘Show fixes’ on errors in code editors triggered a ruleset check-out
  • the library counter in rulesets, which now counts rulesets from other organizations.

An extensive description of the improvements, features and fixes can be found in the Rulecube Help environment. The extensive release notes include a list of changes that may require attention when you have legacy rulesets.

Version 1.7 – Q3 2022

New features
  • You can now search all of your rulesets with the bar at the top of the service page.
  • We now support Azure Active Directory (Azure AD) to provide a single-sign on experience.
  • We now allow for a more granular control of user permissions.
  • Besides Ruleset-specific Swagger / OpenAPI documentation we now provide this for all of our public end-points.
  • You can now use context-aware and smart cut, copy and paste shortkeys within a Ruleset.
Improvements
This release contains many improvements. A complete list and description can be found in the Rulecube help section.

  • Horizontal scaling and caching is now supported when using multiple instances of Rulecube
  • We added endpoints for getting and setting Environment Variables used by a Ruleset.
  • We added Group and Priority fields to Rule Alerts
  • Installed libraries are shown at the top of the list
  • DATESTR() – format date to locale
  • Added Remember save comment checkbox
  • Added button to undo “Don’t ask me again” in user settings
  • Added Entity to parent entity navigation link
  • We implemented deep duplicate output name detection (in folders too)
  • We enabled faster code checking by caching static code
  • Smarter circular reference detection in the engine
  • Sandbox now shows the number of alerts and diagnostics with clickable links to scroll directly to them
  • It’s now possible to insert tabs in the XML editor (Sandbox, Testcases)
  • History / revision compare now has difference navigation (arrows) and automatically shows the first difference.
  • Docs: more details are shown for external constants (URL, Headers, etc.)
  • Entities from Libraries are now selectable in more ways and can be organized in folders.
  • Hints now include Magic number detection, name based hints with encouragement of Boolean terms and specific error messages.
  • Search now groups per item and displays exact matches at the top of the results
  • Extensive improvements were made to constants detection and hierarchy and naming
  • Several improvements to the code editor were made to improve the user experience, e.g. code is validated as the user types
  • Several adjustments were made to improve usability
Fixes
We fixed several bugs, including

  • Rules are now automatically sorted
  • JSON files (or pasted data) that have an array [ ] as their root are now correctly imported/pasted
  • Enum values can no longer be modified in child rulesets
  • Enums with the same values, but different names are now compatible
  • Fixed incorrect “child of” message in on Services page
  • External constant mapper and enum values are now searched
  • Testable Rules are now marked as unused and remain in testcases after save, even when not in output
  • Library alias is now left the same when installing a newer version
  • Library Ruleset’s Constants and Functions are not marked as unused anymore
  • Ruleset changes during save are now detected
  • Renaming an item in a Ruleset now correctly changes the URL
  • Fixed bug in auto incrementing non-numeric version names
  • Optional single parameter in a Function no longer gives a warning
  • CUR now has a second parameter to control the number of decimals

An extensive description of the improvements, features and fixes can be found in the Rulecube Help environment. The extensive release notes include a list of changes that may require attention when you have legacy rulesets.

Go ahead, ask us anything.