InRule Decisioning Version 5.9.0 Release Notes
This article contains a detailed account of the features and bug fixes that are a included in Version 5.9.0 of the InRule Decision Platform. To read the highlights of the release, see the article InRule Decisioning Version 5.9.0 Now Available.
Catalog
| Type | Case ID | Summary | Description |
|---|---|---|---|
| Story | PLAT-511 | Upgrade Catalog Service to .NET 8 | Catalog Service upgraded to .NET 8 enabling cross-platform deployment on Windows and Linux |
| Story | PLAT-527 | Upgrade Web Catalog Manager to .NET 8 | Web Catalog Manager upgraded to .NET 8 enabling cross-platform deployment on Windows and Linux |
Decision Services
| Type | Case ID | Summary | Description |
|---|---|---|---|
| Story | PLAT-451 | Dynamics RuleHelper compatibility with Decision Services | Allows the use of the Dynamics RuleHelper dll with Decision Services as compared to the fully integrated Dynamics Execution Service. Additional information is available in the upgrade considerations section for either self-hosted or SaaS. |
| Story | PLAT-457 | Salesforce RuleHelper compatibility with Decision Services | Allows the use of the Salesforce RuleHelper dll with Decision Services as compared to the fully integrated Salesforce Execution Service. Additional information is available in the upgrade considerations section for either self-hosted or SaaS. |
| Bug | PLAT-465 | Decision state serialization erroneously includes temp variables | Temp fields were unintentionally included in the serialized state for decision execution. This has been fixed to no longer show temp fields in the serialized decision state. |
| Story | PLAT-467 | Enable OAuth 2.0 for execution authentication | OAuth 2.0 is now a supported alternative to using an API key for authenticating with Decision Services. Common approaches can be leveraged to acquire and cache a JWT access token from either an Auth0 or EntraId provider using ClientId and ClientSecret. The token can then be passed to Decision Services using a standard Bearer token request header. For InRule SaaS, the ability to self-manage OAuth 2.0 authentication through the SaaS Portal is not yet available and will require additional setup from InRule CloudOps to enable on a per request basis. |
| Story | PLAT-474 | Add RequestId to runtime event logging | inrule-requestid request header added to the Decision API. When provided the request id will get threaded through to the runtime event logs to associate back to the originating request. |
| Story | PLAT-494 | Maximum Request Length default increased to 128MB and made configurable | maxRequestLength default has been increased from 30MB to 128MB and can be configured per the article - Adjusting the Maximum Request Length for ASP.NET Applications. |
| Story | PLAT-602 | Return inrule-revision in Decision API response header | inrule-revision response header was added to the Decision API. It will be populated with the RuleApp revision that was pulled from the catalog for execution. By default this is the latest revision in the catalog unless an explicit revision or label was specified in the request. |
| Story | PLAT-1061 | Return RuleAppRevision in Rule Execution API response body | RuleAppRevision response attribute was added to the Rule Execution API. It will be populated with the RuleApp revision that was pulled from the catalog for execution. By default this is the latest revision in the catalog unless an explicit revision or label was specified in the request. |
| Story | PLAT-1460 | Support for file-based ruleapps | Support for fileSystem catalog source type in Decision API app settings. When configured an additional path attribute must be set to identify the relative path for rule applications. |
| Story | PLAT-1487 | Support for Secondary API key | Support for a Secondary API key is now available in Decision Services to enable ease of key rotation. For InRule SaaS, the Secondary API key can be configured in the SaaS Portal. For self-hosted, Secondary API key is configured using: inrule:runtime:service:apiKey:secondaryKey. This has also incurred a change to the primary API key setting namespace to align the management of the API keys. WAS: inrule:runtime:service:apiKeyPrimary NOW: inrule:runtime:service:apiKey:primaryKey. The Dynamics and Salesforce execution services also use the same Primary and Secondary API keys for authentication. |
| Story | PLAT-1490 | Update Decision Services to .NET 8.0 | Decision Services upgraded to .NET 8 enabling cross-platform deployment on Windows and Linux |
Dynamics
| Type | Case ID | Summary | Description |
|---|---|---|---|
| Story | PLAT-396 | Add OAuth 2.0 support to the Dynamics Rule Configuration UI | OAuth 2.0 configuration has been added as an option to the Rule Configuration UI as an alternative to the API key. See Appendix F: Rule Configuration and Settings in the InRule for Dynamics Deployment Guide for more information. |
| Bug | PLAT-397 | RuleHelper LoadMappedChildCollection error when loading n:n collection with n:n auto-loaded child collections | Issue is resolved. A related issue for LoadMappedChildCollection to support filters on n:n child collections remains open to be addressed in a future release. |
| Bug | PLAT-1005 | Error when adding InRule admin role during solution deployment | Error “AddPrivilegesRole : Execute (AddPrivilegesRole)… Cannot insert duplicate key exception when executing non-query” is thrown in recent versions of the Dynamics package installer. |
| Bug | PLAT-1149 | Vulnerability alert - use of eval() function in Dynamics solution | All references to the eval() function have been removed from the Dynamics solution resulting in the mitigation of this alert. In addition, a secure data layer has been applied to all input fields in the Rules Configuration UI to prevent JavaScript injection. |
| Bug | PLAT-1150 | Supportability alert - use of internal function in Dynamics solution | Implemented an alternative approach to the use of the internal function to mitigate this alert |
| Story | PLAT-1477 | New Dynamics Rule Execution REST API replaces Azure WebJob/Relay | Upgraded Dynamics execution service to .NET 8.0 WebApi including authentication options for Primary/Secondary API key and OAuth 2.0. The new Dynamics Execution API is functionally identical to the Azure Relay/WebJob integration model, which should make for a seamless transition, See Appendix L: New Releases and Upgrading Versions in the InRule for Dynamics Deployment Guide for more information. |
| Story | PLAT-1478 | Add REST API configuration to Dynamics solution | REST Endpoint option is added to the Rules Configuration UI to configure the Dynamics execution URL vs the Azure Relay information. Azure Relay is still an option to help support any backward compatibility scenarios, but in most cases the switch should be made to the rule execution API. |
| Story | PLAT-1482 | Add version comparison check to Test button | Version comparison check added to the Test button in the Rule Configuration UI. This check compares the solution version against the execution API version. If different, a warning will be displayed including the respective versions. |
| Story | PLAT-1483 | Write execution log to eventlog/appinsights when execution log is configured to ON | Enabling the Rule Execution Log in the rule configuration in Dynamics will now only write to the execution service runtime event log (as well as AppInsights if configured). Previously this would return to the plugin trace log, but it required too much truncation to be useful. |
irAuthor
| Type | Case ID | Summary | Description |
|---|---|---|---|
| Story | PLAT-32 | Set default Object Bound serialization type to DataContractSerializer in irAuthor | Since Microsoft has deprecated the BinaryFormatter serializer due to security reasons, we no longer offer this as the default serialization option for Entities bound to a .NET Schema EndPoint. The default is now DataContractSerializer, which serializes public fields/properties by default to an XML format. It will serialize private fields/properties if the class is annotated with a [DataContract] attribute, and all the members required (both public + private) are annotated with a [DataMember] attribute. Existing rule applications configured to use BinaryFormatter serialization will continue to work, however we recommend switching to DataContractSerializer going forward. |
| Bug | PLAT-1461 | Using RuleHelper in irVerify outside of the Dynamics tab causes an assembly load error | Fixed an error using the Dynamics RuleHelper in irVerify with the native non-integration specific Test button. Support for this approach is needed to enable the hybrid integration model that query's Dynamics data from the flagship execution service using the Dynamics RuleHelper. |
Rules Engine
| Type | Case ID | Summary | Description |
|---|---|---|---|
| Bug | PLAT-34 | Default value is set differently for nested entities after loading json file | Fixed the issue that resulted in fields with default values not getting set correctly on nested entities |
| Story | PLAT-36 | UDF Round function only does bank rounding (closest to even) by default and does not allow AwayFromZero | The Util.Math.Round() function in UDFs uses MidpointRounding.ToEven (bank rounding) by default, and there was previously no way to change this to the alternative MidpointRounding.AwayFromZero. We added the ability to specify the MidpointRounding type in a third argument to this function - e.g. Util.Math.Round(3.14159, 3, Util.MidpointRounding.AwayFromZero). |
| Bug | PLAT-365 | Enabled background compilation incorrectly logged as false in GetRuleAppRef log entries | When enableBackgroundCompilation is configured via settings on Decision Service to ‘true’, the InRule GetRuleAppRef event log shows ‘Configured: False’ for background compilation. This can cause confusion when troubleshooting compilation scenarios and has been resolved to reflect the correct value. |
| Story | PLAT-1336 | Release .NET 8 SDK dlls on NuGet | Upgrade InRule SDK dlls to .NET 8 and release on NuGet - InRule.Runtime, InRule.Repository, and InRule.Common |
Runtime Analytics
| Type | Case ID | Summary | Description |
|---|---|---|---|
| Story | PLAT-478 | Streamline Runtime Analytics dashboard to single column layout | Updates to the Runtime Analytics dashboard to streamline the widgets in a single-column vertical layout. This change simplifies the dashboard with a more intuitive format and should help with the overall performance of loading the individual widgets. See Introduction to Runtime Analytics for more information. |
SaaS Portal
| Type | Case ID | Summary | Description |
|---|---|---|---|
| Story | PLAT-469 | Enable Primary & Secondary API keys to be self-managed in portal configuration | API key has been moved from Provisioned Resources to Configuration. Under Settings → Configuration, the Execution Server Settings section contains a new Authentication sub-section listing the Primary API key and Secondary API key. The API keys are read/write along with a “Regenerate” option to facilitate API key rotation. The API keys are used to authenticate to Decision Services, Dynamics execution service, and Salesforce execution service. |
| Story | PLAT-513 | Add Client Credentials auth type option to Salesforce Authentication portal configuration | Client Credentials auth type option added to the Salesforce section of the InRule SaaS portal in the Configuration UI. This section can now be used to configure either of the supported authentication types of Client Credentials or Username/Password Credentials. |
Salesforce
| Type | Case ID | Summary | Description |
|---|---|---|---|
| Story | PLAT-512 | Support Client Credentials Auth Flow to connect to Salesforce | Client Credentials is the new recommended authentication flow to authenticate with Salesforce. This enables a simpler configuration than User/Password Credentials (also still supported) and is more suitable for service-to-service connectivity. See section 3.3.2 Rule Execution App Service for Salesforce in the InRule for Salesforce Deployment Guide for more information. |
| Bug | PLAT-564 | Error executing rules from Schedule-Triggered Flow | Determined root cause that a schedule-triggered flow can make callouts only after executing a Wait element. Applying this approach to the Salesforce flow resolves the issue. |
| Bug | PLAT-593 | Error persisting DateTime fields in Salesforce | DateTime fields will now save back to Salesforce without issue |
| Story | PLAT-1125 | Upgrade Salesforce execution service to .NET 8 | Salesforce execution service upgraded to .NET 8 enabling cross-platform deployment on Windows and Linux |
| Bug | PLAT-1475 | Fix issue with collapsible sections in InRule app not responding to clicks | Section expand/collapse now works as expected when clicking on the container, dropdown arrow, or title |
| Story | PLAT-1476 | InRule app theme and content updates | Content and theming changes pertinent to this release have been updated in the InRule for Salesforce App |
| Bug | PLAT-1484 | Handle Salesforce expired session error in irAuthor | Expired Salesforce session is now handled meaningfully in irAuthor |
Upgrade Considerations
- Retirement of the classic irServer Rule Execution Service If you are currently using the classic irServer Rule Execution Service, you must transition to the Decision Services - Decision API or Rule Execution API. Moving to either API represents a valid upgrade path with the Decision API being simpler and modernized as compared to the Rule Execution API which is more backward compatible with the irServer request/response format. The primary consideration for this transition is if your current implementation requires XML-based requests and data payloads, which is not supported in Decision Services. If this is the case, please contact InRule Support to discuss alternative migration options. Also see Transitioning from the classic irServer Rule Execution Service to the Rule Execution API for more information.
- Primary/Secondary API key rotation
New configuration is available to leverage a Secondary API key to facilitate key rotation (PLAT-1487). For SaaS, the Primary/Secondary API key settings can now be managed in the Portal Configuration UI (PLAT-469).
For self-hosted, Secondary API key is configured using:
inrule:runtime:service:apiKey:secondaryKey. This has also incurred a change to the primary API key setting namespace to align the management of the API keys. The API keys are relevant to Decision Services, Dynamics and Salesforce Execution Services. For example:
WAS: inrule:runtime:service:apiKeyPrimary
NOW: inrule:runtime:service:apiKey:primaryKey
- Change to Environment Variables/App settings format The Environment Variable App settings deployed from the InRule Azure ARM templates will default to a double underscore (__) notation vs the previous colon ( : ) notation. The colon notation is still supported for Windows-based App Services and the ARM template can be end-user modified if that notation is desired. While this change shouldn't have any material effect for a given deployment, the double underscore notation is required for cross-platform compatibility with Windows and Linux. For example:
WAS: inrule:runtime:service:apiKey:primaryKey
NOW: inrule__runtime__service__apiKey__primaryKey
- OAuth2.0 execution authentication option Decision Services (PLAT-467) and the Dynamics Execution Service (PLAT-396) are now enabled to accept an OAuth 2.0 token for authentication. This requires additional configuration in Azure for self-hosted or by CloudOps in InRule SaaS. The procedures for this configuration are still forthcoming; in the interim please send inquiries to InRule Support for assistance.
- Using Dynamics and Salesforce RuleHelper Connectors in Decision Services Decision Services are now compatible to execute rule applications containing calls to the Dynamics and Salesforce RuleHelper connectors (PLAT-451 and PLAT-457). For self-hosted or InRule SaaS implementations, there are manual steps required to set up this integration. For self-hosted, the dlls must be manually deployed to the EndpointAssemblies folder per instructions in the Decision Services API Guide - Considerations for Self-hosting article. For InRule SaaS, the setup must be requested via InRule Support. Moving forward in a future release of InRule Decision Services, the deployment process will be automated to no longer require manual setup.
- Azure App Services ARM templates The InRule Azure ARM templates have been updated to deploy the upgraded .NET 8 component services. While the underlying services are cross-platform compatible, the ARM templates are currently setup to deploy on Windows only. This will get expanded in a future release, but in the interim it should be possible to modify the templates to deploy to Linux if desired. For questions regarding the ARM templates or alternative deployment options such as containers or local IIS, please send inquiries to InRule Support for assistance.
- InRule Windows Installer The 5.9.0 InRule Windows Installer as been updated on the InRule Downloads page. The primary use of the installer is for desktop deployment of irAuthor to users Windows machines.Currently irAuthor desktop remains on the full-framework version of .NET. The installer also contains the full-framework versions of the Catalog Service, Web Catalog Manager and classic Rule Execution Service. The installer-based version of the services should be used for local development and testing purposes only. For server-based and production scenarios, deployments should be managed using the InRule Azure ARM templates or Microsoft Marketplace. See the Installation Guide for more information.
- Transition to new Dynamics Rule Execution API The 5.9.0 release introduces a new Dynamics Rule Execution REST API to replace the Azure WebJob/Relay execution model (PLAT-1477). This transition will be relatively transparent for InRule SaaS customers, but configuration of the execution service URL and API key will be required in the InRule solution within Dynamics. The same is needed for self-hosted as well as the manual removal of the old webjob and relay from any previous deployments. See the InRule for Dynamics Deployment Guide - Appendix L: New Releases and Upgrading Versions section for more information.