Profitbase InVision 2022.2 released!

This release of InVision mainly focuses on improvements to deploying and upgrading packages, and improvements to working with dimensions. It also contains a number of other fixes and improvements to existing features.

New Features

Packages

Upgrade packages in multiple (versioned) Solutions
We now support upgrading Packages in one or more versioned Solutions. Previously, only Packages in non-versioned Solutions were upgraded, but administrators are now given the option to upgrade Packages in versioned Solutions if the version status is either Deployed or Open. This means you can patch a version while it’s in production, without having to create a new version to get the fix.

Support for floating dependency resolution
Support for floating dependency resolution of package dependencies means that package authors have greater control over which dependencies of a Package are installed or updated. All Packages have a major.minor.patch version, for example 2.0.1. Floating dependency resolution means that the dependency version can be defined as 2.*.*, which means “install the latest v2 release of the dependency”. Likewise, *.*.*, means “install the latest version of the dependency”. As a package author, it means that you can publish updates to dependencies without having to republish the main package, but still have the latest dependencies installed when the main package is installed.

Choose a dependency resolution rule to specify which version of the dependency is installed with the Package

Backups of Solutions are automatically deleted
Backups of Solutions taken during Package upgrades are now automatically deleted if the upgrade is successful. This automatically frees up disk space without any intervention from system administrators.

Support for running post-upgrade Dataflow
This feature enables running a Dataflow after a Package has been upgraded.

Dimension editor

  • Support for deleting all contents in a dimension. This is often useful when you import data to a dimension for the first time, and you realize that your source data is incorrect, so you need to do a complete re-import.
  • We added an extra “+” button to each dimension member, making it quicker to add multiple child members without having to use the context menu.
  • Fixed issue #517. Create dimension member, change id and move a sub-hierarchy to its child collection.
  • Fixed issue #519. Issue with drag/dropping to node while the node is being auto expanded by the system.

Dimension configuration

  • Added support for running a Dataflow after a dimension has been published
  • Added support for running a Dataflow after a dimension has been published to

Work Process

  • During version deployment, dependencies between packages in the same Solution is used to determine the order of package deployment and enables custom packages / extensions to reference objects in Profitbase packages (such as Planner)

Workbook

  • Fixed issue #442 Copy / paste issue from spreadsheets in popups
  • Fixed dialog window resizing issue when an iframe is displayed

Forms

  • Support for async DataChangedEventHandlers. This enables async code, such as network calls, to run when a data bound property is updated by the user.

Homepage

  • Fixed tile image max size so that oversized custom images align with the standard design

Macros

We added an API for access control so that Access Group membership of the currently active user can be obtained when running macros.
The MacroExpansionProvier.AccessControlService provides an API against a small subset of the InVision access control system.

Methods
Task<bool> IsMemberOfAccessGroupAsync(string identityId, string accessGroupName)

Example
This example shows how to check whether the current user is member of the “Admins” Access Group. Note that we’re using Context.GetUserUniqueId() to get the id of the current user.

namespace Local;
    
using System.Threading.Tasks;
using Profitbase.Invision.Scripting.Dynamic;

public class MyMacros : MacroExpansionProvider
{            
    public async Task<string> GetQuery(string input)
    {
        var userIsAdmin = await this.AccessControlService.IsMemberOfAccessGroupAsync(this.Context.GetUserUniqueId(), "Admins");
        if(userIsAdmin)
        {
            return "IPAddress, CertificateRevocationDate, MachineName";
        }
        else
        {
            return "MachineName";
        }             
    }
}

Accessibility

  • High contrast theme image picker is now working as expected, so you can easily pick images for your high contrast theme

Misc

  • Fix issue #542 Spreadsheet dropdown column object references were not dependency resolved the @Object[…] directive was used
  • Platform version, Build number and Package info (if applicable) is displayed in the Workbook Options dialog
  • Platform version, Server and Desktop Build number is displayed in the Desktop Application Status Bar
  • Build and platform version is displayed in error dialogs
View the Platform, Build and optionally the Package version of the Workbook in the Options dialog

Platform

  • InVision 2022.2 runs on .NET 6
  • All communication between application services is now using Azure Service Bus or RabbitMQ
  • Added support for SYS_AccessGroups SYS view. Read more here.

Breaking changes

  • Linked Fact and Dimensions (from Studio) is entirely removed from the platform. (metadata and data is removed during the platform upgrade)
  • OData feature is removed from the platform
  • The table pbSimSolutionLangText has been removed.

Installing InVision 2022.2

To install InVision 2022.2 or upgrade to 2022.2, you need to use version 5.3 of the installation manager.

Upgrading to InVision 2022.2

  1. To upgrade to 2022.2, you need to use version 5.3 of the installation manager.
  2. Run the UpgradeDatastore.ps1 script.
    1. Download the UpgradeDatastore file below.
    2. Rename it to .zip and extract the content. (The blog platform does not allow uploading .ps1 of .zip files directly)
    3. Edit the UpgradeDatastore1.ps1 file
    4. Change $instanceToUpgrade to the name of the InVision instance you want to upgrade.
    5. Change $pathToDatastoreJson to the path where Datastore.json is located. This is usually “C:\Program Files (x86)\Profitbase Installation Manager\Scripts\DataStore.json”
    6. Change $pathToInstanceTemplate to the path where instancetemplate.json is located. This is usually “C:\Program Files (x86)\Profitbase Installation Manager\Scripts\instancetemplate.json”.
    7. Run UpgradeDatastore.ps1

Enjoy!