New in Softadmin® 8.11.0

September 2026

.NET Hosting Changes

ASP Hosting Bundle 10 Required

The ASP.NET Core 10.0 Windows Hosting Bundle must be installed on the web server.

Web Snippets Migrated to ASP.NET Core

Projects using Web Snippets require a dedicated application pool that supports ASP.NET Core.

Update the IIS application physical path from:

<project root>\WebSnippets

to:

<project root>\WebSnippets\bin

Web Service Publishing Requires Updated Physical Path

Projects using Web Service Publishing Raw Mode must update the IIS application physical path from:

<project root>\WS

to:

<project root>\WS\bin

UX Changes

Split Buttons

A split button is a button with a default action and alternative actions. They can be used to group links when users commonly use the default action and the alternative actions are closely related to the default action.

Top links and component links can be turned into split buttons.

A split button

Markdown Support in Dialogs

Some messages can be improved by formatting the text. All dialogs defined in metadata (Admin -> Dialogs) now support Markdown. You can also use columns like ADMIN_ErrorMessageMarkdown to return formatted messages from stored procedures.

The Lightbox feature now also applies to the Picture control type when used in the Grid component.

Output Formatting in Box Tables

The Output formatting setting for field information can turn addresses and phone numbers into clickable links. It was already supported in the Grid component and in normal InfoSQL boxes. It is now also supported in InfoSQL box tables.

Redesigned User Impersonator

The control now separates the current user and the user filter into two distinct controls.

impersonator.png

AI Features

Streaming Support in Chat

When combining the GenAI component with the Chat component, by default users need to wait until the model has generated its full response before they can start reading it.

The GenAI component can now run in Streaming mode, receiving the response in chunks as it is being communicated, and then use Client Sync to make the Chat component show the partially generated response.

Tool Support in GenAI

In previous versions, tool support in the GenAI component had to be improvised by giving tool descriptions in the system prompt.

This version introduces a dedicated result set for tool descriptions and tool calls. Using them should make model tool use more reliable.

The version introduces semantic search using HNSW vector indexes with optional SQL Server full-text search. Documents are indexed as text chunks and can be searched by meaning as well as exact matches.

Read more

Progress Thinking Messages in Chat

If the Chat component runs another component in the background, instead of a progress bar the chat's generic thinking message will be replaced by the background component's progress text.

alt text

Advanced OAuth Settings for MCP

Resource URL and Audience can now have different values. Most IdPs will use the same for both settings, but Entra prefers different values.

You can now configure a suggested Scope in the protected resource metadata. This is used when the IdP requires a scope to issue tokens.

InfoSQL Features

OnReadyJavaScript

The existing JavaScript column is useful for declaring functions and running scripts that can execute independently of page content.

The new OnReadyJavaScript column allows you to declare scripts that run only after the page has finished rendering. This is useful for scripts that depend on page elements being available.

The new LinkIcon column lets you assign a system icon to a top/component link dynamically.

Improved Column Names

IsPrimary is a new alias for IsPrimaryTopLink and IsPrimaryComponentContentLink, and can be used for both link types.

DisabledReason is a new alias for BoxLinkDisabledReason, ComponentContentLinkDisabledReason and TopLinkDisabledReason, and can be used for all three link types.

For link labels, LinkLabel is the new preferred column name and should be used instead of NavigatorLinkText.

The column PassingField_<xxx> defines a passing field named <xxx> that is shared by all links in the same table. For example:

PassingField_DocumentId
123

In some cases, different cells require different passing field values. Previously, this was achieved using the legacy column <colname>_PassingFields, which in turn required concatenation and did not support link aliases.

The new column <colname>_PassingField_<xxx> defines a passing field named <xxx> that applies only to a specific cell. For example:

Contract_CellLink Contract_PassingField_DocumentId Invoice_CellLink Invoice_PassingField_DocumentId
ShowDocument 1 ShowDocument 2

Database designer

Rename table

Tables can now be renamed from Database Designer. This affects the tables related objects like column names, constraint names etc. Some advanced cases that require drop/create are not yet supported.

Fixed lookup values

Fixed lookup values now need to be applied to improve the workflow for developers using local databases.

Other Features

Parallel Event Listeners

Normally, each event listener processes events serially on a first-come, first-served basis. This model is easy to reason about, but it can lead to delays when many events are queued at the same time.

Menu item listeners now support the Execute in parallel setting. When parallel execution is enabled, the listener can be configured with 2, 4, or 10 threads. Events are still processed in queue order, with the oldest events dequeued first, but each thread can dequeue and process events independently of the others.

To use parallel listeners safely, the menu item's stored procedure should be written to avoid deadlocks.

Easier Credential Mapping for Web Service Headers

Web Service Call already supports inserting credentials into arbitrary HTTP headers or the raw request body. To reduce the risk of injection attacks, this is a cumbersome process.

You can now export credential values directly to HTTP headers by returning a table that maps credential names to header names.

External Development Tools

Any tool that responds to an URL can now be registered and invoked from the admin toolbar.

For example,

codex://threads/new?prompt=letsworkonmenuitemid{p_MenuItemId}

external_tools.png