Profitbase InVision 3.0 Released!

After a long wait, we’re happy to announce the release of InVision 3.0! As you can see below, we’ve been busy adding new features to the platform and improving what’s already there. Creating the new Designer has been a major effort, but the new platform opens up new possibilities that we plan to take full advantage of in the future. Please read the entire blog post to discover the new and enhanced capabilities of the platform, and make sure to read the upgrade instructions carefully. Hope you like what we’ve done!

Installing 3.0

  1. Make sure .NET 4.8 is installed on the application server and on your local machine. 
  2. Set up RabbitMQ or an Azure Service Bus subscription. InVision requires these services for service communication. If the application server has internet access, we recommend using Azure Service Bus, since that does not require anything to be installed.
    NOTE! Ensure that port 443, 5671 and 5672 is on the server(s) where the Dispatcher and Worker services are installed.
  3. Install or upgrade Profitbase Installation Manager to 1.8.x.x. If it does not already exist on the app server, you can download it from here.
  4. Run the installer to install the software and database. During the installation, you need to provide the Azure Service Bus connection string and topic.
  5. Install the Designer by navigating to http(s)://<web app address>/designer.
  6. Follow the instructions to download, install and connect to the application service

Upgrading to 3.0 from a previous version

  1. Make sure .NET 4.8 is installed on the application server and on your local machine. 
  2. Set up RabbitMQ or an Azure Service Bus subscription. InVision requires these services for service communication. If the application server has internet access, we recommend using Azure Service Bus, since that does not require anything to be installed.
    NOTE! Ensure that port 443, 5671 and 5672 is on the server(s) where the Dispatcher and Worker services are installed.
  3. Install or upgrade Profitbase Installation Manager to 1.8.x.x. If it does not already exist on the app server, you can download it from here.
  4. Run the installer to upgrade the software and database. During the installation, you need to provide the Azure Service Bus connection string and topic.

When the installer has completed, do the following:

  1. If your deployment is set up to use Azure Active Directory for authentication, you need to log on to the application server and edit [Install Folder]/Client/IdentityConfig/identityConfig.json (Install Folder is usually C:Program Files(x86)Profitbase Installation ManagerInVision[Instance Name])
      1. Edit the “claimTypesFilter” setting, so that it includes “oid” and “unique_name”. It should look like this:
        "claimTypesFilter": ["name","unqiue_name","oid"],
      2. Edit the “claimTypeMappings” to that it maps “unique_name” to “sub”. It should look like this:
        "claimTypeMappings": [{"fromType": "unique_name","toType": "sub"}] 

Install the Desktop Designer

  1. Navigate to http(s)://<web app address>/designer.
  2. Follow the instructions to download, install and connect to the application service

Start the Desktop Designer

  1. Open your Solution(s) and do the following
    1. Find all Web Functions and recompile them
    2. In the Solution Explorer, right click the Solution node (the root) and run Update Dependency Registry. Note! If this fails, it means that your Solution configuration has errors. Fix the errors and try again until you succeed. This step is very important!!
  2. If your deployment is set up to use Azure Active Directory for authentication, do the following
    1. From the main menu, open Users and Permissions
    2. Remove all users, then add them back in using the new user management interface. Microsoft has changed the Azure AD API, so the user accounts needs to be registered again with the updated ids.
  3. If your Solution(s) are using the Profitbase Financial or Loan Portfolio calculation libraries, OR any custom built extension libraries (.dll’s executed in Data Flows) you need to do the following:
    1. Log on to the the application server and navigate to [Install Folder]/Services/Worker
    2. Copy Profitbase.Invision.Financial.Functions.dll, Profitbase.Invision.LoanMC.Functions.dll, and / or any custom .dlls you have built to a folder that you can access from the Desktop Designer.
    3. Switch to the Desktop Designer
      1. From the main menu go to Data Flow -> Executables -> Assembly Packages
      2. For each of the .dlls in the previous step, create a new package (name it whatever you want), add the .dll and Deploy Package

NEW Designer

We have finished porting the designer from Silverlight to a Windows Desktop App, which will the primary development tool for building Profitbase InVision solutions in the coming years. In addition to porting the functionality from the old to the new designer, we also added many new features that you will hopefully find useful!


NEW Features

Dimension Builder

Starting with 3.0, you can now build dimensions directly in the InVision Designer, meaning you no longer need Profitbase Studio. You use the Dimension Builder to create the table schema, attributes, hierarchies and edit data. A (web based) dimension editor for business users is planned for a later release.

Concurrency Control (check in / check out)

Force Check Out
You can now force check out solution objects from the Solution Explorer if they are checked out by someone else. This is useful if someone has forgotten to check in an object they were finished working on, and you need to edit that object.

Check In All Items
From the Solution Explorer toolbar, you can now check in all items currently checked out by you. W00t!

Copy / Paste in Solution Explorer

You can now copy and paste any item (except Folders) in the Solution Explorer. This will make an exact copy of the object, but it will not include any descendants. 

Dependency / Reference Management

You can now easily discover all dependencies between objects in the Solution by right clicking objects in the Solution Explorer.
Show Dependencies will show dependencies of the right clicked object.
Show Dependents will show all objects that has a dependency on the right clicked object.

From there, you can continue drilling into dependencies to discover the entire dependency structure from the initially right clicked node.

The Reference Management system will also prevent you from accidentally deleting an object that someone else is dependent upon.


The Workbook Designer has a few changes, and may feel a bit different to work with compared to the previous version. You should read about these changes in the CHANGED and ENHANCED Features section below.

This section describes new features added to the Workbook Designer.

Sub Screen
You can now create sub screens, which lets you compose more complex page layouts and use Tab Controls. You build sub screens the same way that you build pages by adding components, setting up events and actions, connecting filters, and so on. You can then use your sub screens as regular page components, or show then in tabs in Tab Controls. Note that a sub screen can only be used once pr Workbook, so you cannot have multiple instances of it in different pages or tabs.

Tab Control
Tab Controls lets you define multiple screens for the same area of a Workbook Page, so that you can more easily group screens that logically belong together.

Copy actions between components
You can now copy actions between components. For example, if you create a new Button, and you want to perform actions similar to some other button in the Workbook when an event is raised, you can now copy all the actions from the other button to the Tapped event of the new button.

Remap Actions
Remapping Actions are particularly useful when you have copied actions from one event to another, you want to keep all the instructions, but the business logic should apply to other components. For example if you copy a Save Button from one page to another, you may want keep some of the business logic, but need it to apply to a different Worksheet. 

(Workflow) Work Unit raises State Change event
Work Unit objects (previously called Workflow Control Objects) now raise a State Changed event when a new state is set. You can get the name and id of the new state through the @Event.Data.NewValue.Name and @Event.Data.NewValue.StateId event arguments.

Execute Expression – SetAppTitle
You can now call the SetAppTitle(…) function from an Execute Expression action, which will change the title displayed in the browser tab.

Form Schema

Tab Control
You now have the option to create Form Schemas with tabs. This enables you to create richer forms based screens, and more easily group features that belongs together.

Create custom observable objects using createModel(…)
In order for change notification (DataChangeEventHandler) to work, objects must be observable. By default, JavaScript objects are not observable, so you will not get notified when they are updated. You can now create custom observable objects in Form Schemas using the createModel(…) function. This enables you to dynamically create bindable helper objects for your Forms, without loading them using a SQL query.

Data Flow

InVision now comes with its own built-in scheduler, which allows you to schedule execution of Data Flows.

Execution API
Data Flows can now be executed by 3rd party apps through a standard HTTP API. To use the HTTP API to execute a Data Flow, you will need the Id of the Data Flow, the API address and an API Key. Using the API you can both run a Data Flows and monitor its status. 
Please refer to the documentation for details and examples on how to use this feature.

Assembly Package Management
Up until 3.0, if you wanted to create assemblies containing custom business logic and use them in Data Flows, you had to manually log on the the virtual machine / server where InVision was installed, register them in a configuration file and copy them into two different system folders before they could be used. With InVision 3.0, you can now manage custom assemblies (Data Flow extensions) directly from the Designer, without having to do any manual steps for deploying and updating them. 

Guest Executables
Guest Executables are a powerful new addition to the platform which, as the name suggests, enables you to run custom executables (.exe, powershell, python, etc) from Data Flows. There two major differences between Guest Executables and custom assemblies.

  1. Custom assemblies gets loaded into the application domain of the host process, so if your custom assembly has dependencies on 3rd party libraries, they may conflict with assemblies deployed as part of InVision. Guest Executables, on the other hand, are executed in a separate processes, so they have no restrictions or limitations regarding use of 3rd party libraries.
  2. While assembly packages are standalone .dll’s, Guest Executables are packages that can have their own folder structures containing any configuration, resource files or executables. This means that while custom assemblies are useful as “utility libraries”, Guest Executables can be entire programs with much more flexibility and complexity

Users and Permissions

Users vs User Groups
In previous versions, users were not a concept of it own – users were an implicit part of User Groups, and you had no user management capabilities. With 3.0, we added a user management screen which lets you view, add and edit users AND set their User Group memberships in a single screen. With the new Users Management screen, it’s now easy to see which User Group(s) a user belongs to, and change its permissions. Another major benefit of the Users Management screen, is that you can now edit the properties of a user. In previous versions, if you had made a typo or they changed their email or name, you had to delete and add the user to fix the issue.

Azure Active Directory Integration
We now have full integration with Azure Active Directory, meaning we can add, create, invite, edit and delete members of Azure AD directly from InVision – there’s no need to use the Azure portal, and there’s no need to use the old JSON import format to register Azure AD users into InVision. The Azure AD feature is enabled when the InVision instance is set up to use Azure AD as its authentication provider. Note that some features, like creation, deletion and editing of Azure AD members may (most likely) be disabled if we’re connected to the customers’ Azure Active Directory, in which case the IT department of the customer controls Azure AD. 

Custom Image Library

InVision now has its own Image Library (available from the Designer), which enables you to manage custom image files that you want to use in Workbooks. In previous version, when you wanted to use a custom image (such as a customer logo), you had to log on the the virtual machine / server and copy images into a folder of the web site. If you wanted to copy your solution to a different customer, you also had to remember to copy all your custom images as well as the database. In addition to that, if you wanted to use custom images in components such as buttons, you had to use the relative address of the image (including the image folder name).
With InVision 3.0, we’re introducing a Custom Image Library where you can store and manage all your custom images for an InVision instance. The images are stored in the InVision database and automatically deployed to the web server if you move your database or web site to a different server. 
Your custom images can also easily be used from themes and Workbook components by addressing them using @Images/Image.png.

Translations Management

Translations can now be managed directly from the Designer, so there’s no need to do manual editing in the database. Any changes you make will take effect immediately, so there’s no need to “Reset Cache” like in previous versions.

Css Class property editor

When setting the Css Class property on objects, you no longer need to remember the available css classes you have defined in the Themes and Styling screen. The Css Class property editor displays the list of css classes you have defined, and lets you choose which ones to apply.

Style / Theming

Theme Images (Landing Page and Customer logos)
We have made it super easy to change the Landing Page background and logos. You can now change these properties from the App Theme editor in the Themes and Styles screen by simply choosing background and logo files from disk (no need to manually copy files into a folder on the web server and write css). 

InFront embedded

You can now embed InFront dashboards and reports directly into InVision, and integrate them with InVision filters, so that they display data for the filter context set by the user. 


The Data API lets you fetch data from InVision database objects (tables and views) using a HTTP web service. The data is returned as an array of JSON objects. The main advantage of using the Data API instead of the OData API, is better performance for large data sets and use of API Key authentication which may be easier for some clients. Note that there is no row level access control associated with an API Key, meaning once you have a valid API Key, you basically have read access to all the data in the database.

API Key Management

As mentioned earlier in this post, InVision now supports two new public APIs – Data Flow Execution API and the Data API. Both of these requires API Key authentication, and you can manage (create, edit, delete) these API Keys from the Designer.

Business Module

A Business Module is a collection of solution objects that can be packaged and deployed as a single unit to other solutions. Business Modules are an evolution of templates, and makes it easier to package and deploy solutions or parts of solutions.

Business Modules can be installed from the Profitbase Store (using the Desktop Designer) or from file. Business Modules can be exported to files, which makes it easy to deploy the same configuration to different customers.

The Finance Reference Solution is now deployed as a Business Module.



  • Popup and Page have different icons in the UI
  • The Button component have a new property, Button Type, which specifies the default style of the button. The types are Default, Primary, Secondary and Confirm. Setting the Button Type property only changes the style of a button, but does not in any way affect the functionality of a button. We recommend using the Button Style property as a way to follow the design guidelines for screens.
  • Inputs are separated by type in the Toolbox, so instead of having a single “Input” type, you now have specific types such as Checkbox, Textbox, Numeric Input, Date Editor, etc.
  • Binding filters to targets have changed. Instead of enabling the filter mapping mode where you connect the filters to its targets using drag and drop, you now open a filter property of each component and map each filter using drop downs. The primary reason for this change is that with the drag and drop approach, you could not hook up filters to components that were on different pages or not in a shared section (side or top bar). As a consequence, this limitation made it impossible to hook up filters to components in Sub Screens.

Data Store

  • Create columns from clipboard
  • You can create Time Frame columns without adding a Time Dimension if the calendar is set to Natural.
  • Fixed issue with performing a Rollover when the Data Store contained multiple Time Frame columns representing the same date ranges.

Tables (formerly known as Settings)

  • Settings has been renamed to Tables. The reason for this is that “Settings” is a left-over term from the old days of Sim and is confusing to new users not familiar with the Profitbase terminology from the old days. Also, “Settings” are actually just tables, so naming them something else doesn’t make sense. (You can still call their contents “settings” if you like… 🙂 )

Linked Dimensions vs Dimensions

  • What was previously called Dimensions are now called Linked Dimensions
  • Starting with 3.0, Dimensions can be built in InVision. You can still connect to Studio to import Linked Dimensions.
  • Linked Dimensions can be converted to Dimensions. This process will remove the connection to Profitbase Studio, and cannot be undone.


  • You can now remap a filter to use a different source. You do this by switching to Markup mode and change the ReferencedContentId property.

Spreadsheets (Tables and Worksheets)

  • You can now pass arguments from the Workbook and use them in your custom save logic.
  • Drop Down Columns now supports static item lists ( drop down items that are not loaded from a table or view)
    • If you have a Drop Down column that should have a fixed list of items that will never change (for example the operators used in the Distributer Rule Set tables), you can now specify the list of available drop down options directly in the Drop Down Column configuration without having to create a separate table / view containing these items.

Form Element

  • Fixed issue with Dropdown Form Element which did not clear the selectable items when a data reload was executed.

File Download

  • Fixed issue with file names containing non-ascii charachters

Business Module Deployment

  • You no longer have to install any calculation engines (for example the Financal simulation engines) using the Installation Manager. All metadata and dependencies are installed as part of the Business Module deployment process.

Data Flow

Data Flows will now by default terminate if an activity fails, and will not continue to execute subsequent activities unless the Terminate Run on Error property (of the failing activity) is set to false.


dfcmdutil.exe is used for running Data Flows from the command line, and can now be installed on any machine which can communicate over the HTTP protocol with the InVision Web API (the Web Site). dfcmdutil.exe now use the new, public Data Flow Execution API,which means you have to specify two more command line arguments – the API url and an API key (check out the docs for details).

dfcmdutil new syntax
-run <data Flow Id> -url <api base url> -apikey <api key>


dfcmdutil -run d5d7bf89-5a14-4746-a41a-ab2aa6ffa14b -url -apikey d63a1ad-60eb-4066-8d71-1721007437b4

Auto Deployment of managed resources

In versions prior to 3.0, if you wanted to move or duplicate an InVision instance (for example a specific customer solution), you had to remember to perform manual steps for objects such as JavaScripts, Data Flow Custom Assemblies, custom images, (re)generate custom themes and deploy Workbook Plugins. In 3.0, this is automatically taken care of for you because everything is now stored in the Solution database and automatically deployed when an instance is moved or duplicated. Note that you need to restart the Web Site App Pool and Worker Service(s) of the instance after you have replaced / restored the original Solution database.

– The Platform Team