Here is the list of changes that you can explore right now by activating the BRIX trial version.
After October 14, 2024, all changes will become available to our clients in their active companies. Please note, the list may be expanded after the release.
To enhance the update process and increase your awareness about significant changes, we are introducing the new #BreakingChangeAlert tag. This tag will be used to mark critical changes that could impact the operation of your system. Please pay special attention to any updates marked with this tag, as they may require additional actions on your part to adapt or adjust your current configuration.
API and SDK
- TEAM-18222 Implemented a new
__item
search parameter to search for instances of processes and tasks associated with an app item. This parameter allows you to quickly retrieve all running or pending workflows and tasks associated with a specific app item without having to manually track process IDs. #BreakingChangeAlert
Example:
// instances search
const instances = await System.processes._searchInstances()
.where(i => i.__item.eq(Context.data.app)).all();
// tasks search
const tasks = await System.processes._searchTasks()
.where(i => i.__item.eq(Context.data.app)).all();
- TEAM-29961 It is now possible to return multiple cookies in a single response in API methods.
let resp = new HttpResponse(200);
resp = resp.cookie("userId", userId).cookie("userLang", "en");
return resp;
- TEAM-30189 Added a description of the ability to use EQL (BRIX Query Language) to filter data to the Web API Help. The article about filtering https://api.brix365.com/en/public-api/guides/Filter/ also provides an example of using EQL to perform data sampling in the Web API.
- TEAM-29212 A new filter operation
like_format
has been added to PublicAPI to allow searching by partial string matches using templates. Unlike thelike
operation,like_format
uses the % and _ control characters to specify search rules:
- % means any number of any character.
- _ means one character of any kind.
The search condition is case insensitive, which allows you to filter case-insensitive characters.
Example of search by word occurrence in the title:
{
"filter": {
"like_format": [
{"field": "__name,
{"const": "%city%"}
]
}
}
Example of registration number search by filling template:
{
"filter": {
"like_format": [
{"field": "regNumber,
{"const": "М86_А_ 777"}
]
}
}
- TEAM-15832 Added
getReserved()
method to the TS SDK to retrieve the reserved document number.
Report type app
- TEAM-27926 Added the ability to copy a report through the settings menu. Copying retains the report structure, including data sources, added columns (except deleted columns), and linked document templates. This feature allows you to quickly create similar reports with minimal changes. #BreakingChangeAlert
- TEAM-29244 Added functions to delete and restore a report. #BreakingChangeAlert
- TEAM-30231 The widget and form context implements subtype mapping for reports, similar to how app subtypes are mapped. This simplifies working with reports and improves the understanding of the context structure.
Portable services
- TEAM-29170 Implemented port forwarding for portable services inside Kubernetes, which allows to organize communication between services. Now you can set up to 10 ports for port forwarding in the settings of portable services. This feature is closed with the
allowBabysitterOptionalPorts
feature flag and is disabled by default. - TEAM-29447 Added ability to use secrets in portable services that are set via templates from module settings. Now instead of openly sending secrets, you can use variables from the settings, which increases security.
Mobile app
TEAM-18156 On the Administration > Company Settings page, the Disable app installation notification setting has been added. When this option is activated, users will not see notifications offering to download the BRIX mobile or desktop app, including banners in their profile and at login. This solution is relevant for companies that don't plan to use the mobile app for security reasons or have their own app build.
Widgets
- TEAM-25759 The Destroy function has been added to the Settings > System Functions tab in the widget builder. It is activated when a widget is removed and is useful when it is necessary to free resources created during widget operation. For example, clearing of taken intervals and timeouts:
declare const window: {
setInterval: (fn: () => void, interval: number) => number;
clearInterval: (clearInterval: number) => void;
};
async function onInit(): Promise<void> {
Context.data.counter = 0;
intervalID = window.setInterval(() => {
Context.data.counter!++;
}, 1000);
}
async function destroy(): Promise<void> {
window.clearInterval(intervalID);
}
In this case, destroy
must be bound to the Destroy function.
Performance report widget
The Widgets tab has been added to the Administration > Developer Tools > Performance Report workspace. It displays summary statistics on widget usage in the system. It can be useful to understand the most problematic points in the configuration (for example, if a widget is frequently displayed, but the display speed is slow). After identifying such widgets, you can go to the builder and optimize them.
To enable the collection of statistics on widgets, you should go to Administration > Developer Tools and fill in the From whom to collect information about widget performance setting: you can specify users, groups, elements of the organizational structure.
The following columns are displayed in the report:
- Service. The value is always widget.
- Entry point. Workspace and code of the widget.
- Quantity. How many times the widget was displayed during the period of statistics collection.
- Rendering time (average, minimum, maximum). Time from the beginning of displaying (including OnInit execution time) to the end of rendering of the widget template.
- OnInit execution time (average, minimum, maximum). Time of execution of the widget initialization function. It is often this indicator that affects the overall rendering time, and is the place to optimize.
- Script scheme preparation time (average, minimum, maximum). The field is a system field, i.e. it cannot be influenced, but the results may be required for performance analysis by BRIX system developers.
- Number of elements for the scripts scheme (average). This field is a system field.
EQL
- TEAM-29214 A new
LIKEF
operation (short forLIKE FORMAT
) has been added to the EQL query language to allow more flexible searching for property values using templates.
Differences from the LIKE operation:
- LIKE searches for a partial occurrence of a substring anywhere in the property value. For example, a query
[__name] like 'app'
will find items namedapp1
,some_app
,app_some
. - LIKEF allows you to specify precise search rules using the % and _ special characters, providing more controllable search.
Rules of using LIKEF:
- Full Match: If no special characters % or _ are specified in the pattern, a full match search will be performed (similar to EQ operation).
- % character: Indicates any number of characters (including zero). Can be used an unlimited number of times anywhere in the template.
- Example:
[__name] likef 'app%'
will find items whose names start with app, e.g. app, app1, appsome. It will not find 1app, someapp.
- _: Indicates a single character of any kind. Can be used an unlimited number of times.
- Example:
[__name] likef 'app_'
will find items named app1, app2, but not app, app11, 1app.
- Character combination: The % and _ characters can be combined to create complex patterns.
- Example:
[__name] likef 'app%some%45'
will allow you to find specific name options.
- Special character escaping: To search for % or _ characters as part of a value, they must be escaped with a backslash \.
- Example:
[__name] likef '%app\%'
will find items whose names end in app%.
- Equivalence with LIKE: The
[__name] likef '%app\%'
query is equivalent to[__name] like 'app'
.
The LIKEF
operation can be used for the following data types:
- Line, text.
- Link.
- Category.
- Email.
- Phone number.
- Full name.
- Account.
- TEAM-29801 Added EQL search widget. It allows you to display an EQL expression input component in the widget for further use of this expression in the app item filtering function.
- TEAM-29887 Added the ability to search by Arbitrary App type fields in EQL. For example:
[workLogObject] IN (FROM [_clients._leads] SELECT [__id] WHERE [__name]='My Company')
Where workLogObject is an Arbitrary app type field.
Document management
- TEAM-4865 In the standard Document categorization workspace, the names for the search fields have been improved:
- The file name is now correctly displayed as Document Name, since the search is performed by document name and not by file.
- Start Date has been replaced with Registration Date, since the search is based on the date of document registration.
- Added the ability to search by the Document Flow field to simplify filtering of documents by this criteria.
- TEAM-19294 Added the +File button when sending a file and package for approval or information. Now users can attach files for both approval and information. Attached files are saved in the system/docflow/files folder with correct access rights.
- TEAM-21532 Now when you change the document template in the Generate by Template workspace, the fields mapped on the Field Values tab are preserved. Also, when the Convert to PDF option is enabled, the platform automatically adds the .docx prefix to the file name, which simplifies document generation.
- TEAM-29702 In the connector settings in business process activities, there is a new option for Sign. Now the user can sign the app item directly on the task execution form by clicking the transition button. There is no need to add a separate box for signing. In addition, the comment left when signing is saved in the business process context variable.
- TEAM-30179 Fixed operation of access rights for folder hierarchies. Now, when the All users have access to the App and all its items option is enabled, full access to all directory folders is automatically granted. Previously, permissions were granted manually, and users could only see the All items folder.
Projects
TEAM-29751 Implemented registration and display of actual dates of start and completion of project tasks with the Process type. Actual dates are set according to when a business process actually started and ended. They are displayed on the form of viewing the process task and affect the display of the calendar plan in the Actual mode.
Activity stream, channels, chats
- TEAM-3600 The ability to upload multiple files has been implemented in the Activity stream, Object activity stream, the Object activity stream widget, channels, private and group chats.
- TEAM-26440 It is now possible to add chats to Favorites via the chat context menu. Added chats are displayed in the Favorites tab for quick access. Channel messages and feeds previously added to favorites have been moved to Favorites > Messages.
- TEAM-28094 Users can now add the activity stream objects to Favorites using the object's context menu. Added objects are displayed in the Favorites tab below favorite chats, providing quick access to important items.
- TEAM-28244 Users can now customize the list of objects in the activity stream by excluding items from certain apps or processes that they do not work with.
Suppose a user receives messages in the Payment Requests app activity stream, but does not work with items from that app directly and does not want to see them in their object list. Then:
- The user finds the Payment Requests app item in the list of objects in the activity stream.
- Right-clicks on that item.
- Selects the Do not show the app in the list anymore option.
- All items from the App for Payment app will be hidden from the list of activity stream objects.
- Messages from the feeds of these items will still be available in the #Activity stream workspace.
Import and export structures
TEAM-15864 Implemented the ability to import data from Excel/CSV files for Table type fields in apps. Now exported data can be correctly imported back into the system. This simplifies the transfer of large amounts of information and eliminates data entry errors.
When exporting data with system information enabled, the format that supports the reverse import is preserved. When system information is disabled, the number of elements is displayed in the Elements: number format.
Bugs fixed
- TEAM-26639 The Execute on behalf setting is implemented for the Business Process activity and Process Start elements, similar to the Task field. #BreakingChangeAlert
- TEAM-29726 On the exported business process diagram, the names of connectors from tasks and gateways are now displayed correctly.
- TEAM-28785 To optimize the selection of portal user profiles, the
__user
field from the_system_catalogs:_user_profiles
table has a search feature. - TEAM-29772 Fixed the operation of event-based search.
- TEAM-30246 Fixed an issue where worker would send an acknowledgment of receipt of messages from RabbitMQ immediately after receiving them, without waiting for the corresponding script to complete. This could lead to the script not being executed or executed incorrectly.
- TEAM-30895 Fixed an issue where a user could not view an app item even if added to a group configured for access via a nested property.
- TEAM-30993 Fixed an issue where a
Namespace
object could not be accessed in scripts, causing execution to fail. Also, the ability to addNamespace
in available items in widget settings was missing. - TEAM-3821 Fixed an issue where a deleted file continued to appear in search results in the Files workspace.
- TEAM-15124 Fixed an issue where unnecessary File Signature settings appeared in the standard app, even if the file itself is not provided.
- TEAM-28459 Fixed an issue where contract sources were detached and marked red. The issue occurred when binding sources, especially if previously bound apps were deleted. In some cases, sources that should be bound remained in the Creating state and were not saved.
- TEAM-28925 Fixed an issue related to
PasteImage()
with customizable dimensions not working correctly. Previously, the image was not inserted into the document when dimensions were specified, and only the function without parameters worked correctly. Now the image is inserted with customized dimensions as specified in the template. - TEAM-29431 Fixed an issue of incorrect operation of the
validFrom
method. Previously, this method returned the signature date instead of the certificate issue date. The method now correctly returns the certificate issue date as expected. - TEAM-29438 Fixed an issue that caused the template designer to display the collection path instead of the name of the custom e-signature provider. Now the template designer correctly displays the name or code of the custom provider when outputting information in the template.
- TEAM-29879 Fixed an issue that caused project plan generation by template not to work. Now project plan generation works correctly for new companies and newly created project types. For old customers who still have this problem, you need to check the setting of the link to the Project field in the Save button on the project creation form.
- TEAM-29919 Fixed an issue that caused project participants to be granted all permissions to project folders and files, except for the Assign permissions right. Now project participants (except for the curator and supervisor) are assigned only the View, Upload, Create, and Edit permissions, according to the documentation.
- TEAM-30203 Fixed an issue where the
getDraft()
andcreateDraft()
methods in the project object did not work for added project types. When trying to use them, the script crashed with the “is not a function” error. Now these methods work correctly when working with project types. - TEAM-30283 Fixed an issue where the system allowed projects to be created without a plan through scripts, which caused scripts to fail in further operation.
- TEAM-30322 Fixed an issue where signing tasks in business processes were not closed after execution when using the Kontur module. As a result, the business process did not continue despite successful confirmation of signing. The problem occurred in bulk for different users and was fixed only after several attempts. Signing via CryptoPro worked correctly.
- TEAM-30414 Fixed an issue where contract sources with unmatched fields behaved illogically. Previously, the system allowed such sources to be saved, but this caused items to be displayed incorrectly. Now items will not be added to the contract until all source fields are correctly configured.
- TEAM-12689 Fixed an issue in the company structure display where the same user assigned to multiple positions was only displayed under one of the positions.
- TEAM-24113 Fixed an issue where the Item Name field in the app settings was not updated when the solution was updated.
- TEAM-25286 Fixed an issue where when updating a workspace, the order of the left menu content did not change.
- TEAM-26478 Fixed an issue when the solution was updated, but the field display settings in the table view of items were not applied.
- TEAM-28616 Fixed and issue where when setting permissions in an app, it was not possible to select user groups from another app in the same workspace. Now when assigning permissions, the full group tree is loaded in the selection window, including groups within workspaces and apps.
- TEAM-29429 Fixed an issue that caused the mobile app to display workspaces related to solutions for which licenses are not activated.
- TEAM-29474 Fixed an issue where authorization via a QR code in the mobile app did not always work correctly. When scanning a QR code, users could face the situation when after displaying the authorization form with login and password they were either redirected back to the page of choosing authorization methods or the app crashed.
- TEAM-30321 Fixed an issue that caused role or group settings to not be saved if a previously assigned user was deleted.