Ometa Framework Release v6.1.0
Before Upgrade
- Uninstall all versions from .NET 6.
- Install the ASP.NET Core Runtime 8.x Hosting Bundle.
After Upgrade
Set the Load User Profile to true on the IIS application pools of our Ometa services. Double-check the other performance settings on the IIS application pools and sites:
If you're still using the legacy Document ADM on the SharePoint REST API, make sure to update the 2 profiles for the certificate authentication.
Version 6.1.0 of the Ometa Framework has been released with the following new features.
Features
Document ADM (Beta)
- "On Behalf Of" Document Uploads: Documents are now uploaded reflecting the current user's identity.
- Installation Procedure: Refer to the Installation procedure for details on configuring the Document ADM.
- Current limitations (Non-Exhaustive List):
- Maximum of 5,000 items per list.
- SharePoint Online support only (SharePoint Server not supported).
- The Move and Copy functionality will be revised in a future update.
- No out-of-the-box support for context-driven sites and folders.
- Beta Notice: Please be aware that the Document ADM feature is currently in Beta. Functionality is still under development and may change in future releases.

Configurable Cards in Ometa Nexus (Beta)
- Simplified Card Configuration: You can now configure cards – a frequently used UI component – directly within Ometa Nexus. This significantly reduces the need for custom coding that previously required the custom renderer.
- Beta Notice: Please note that this card configuration feature is currently in Beta. While fully functional, you might encounter minor visual or rendering imperfections. We are actively working to refine and enhance this feature for upcoming releases. Your feedback during this beta phase is highly valued!
- Current limitations (Non-Exhaustive List):
- No selection model in the multi record view.
- No paging in the multi record view.

Introducing Context-Driven Cases
We're introducing a more flexible and efficient approach to integrating Case Management with SharePoint, alongside the existing Site-Driven model:
- Site-Driven (Existing): The default behavior where each case can provision its own dedicated SharePoint Site Collection.
- Context-Driven (New): Cases no longer necessarily require a dedicated site collection. Instead, the case context (all its properties) is passed within the URL using the
Context-CaseId={case.id}parameter. This allows components within a shared "Dashboard Case" site to dynamically access and display information relevant to the specific case being viewed. - Dashboard Case (New): A single SharePoint site that hosts all the necessary components (lists, libraries, web parts, etc.) that were previously distributed across individual Site-Driven cases. Context-Driven cases then leverage the context passed in the URL to interact with these shared components, displaying case-specific data.
- Accessing Parent Case Context: Within a Context-Driven scenario, you can still access properties of the originating case using the
originatingcase.syntax.
This new Context-Driven approach offers significant advantages in terms of resource utilization and provisioning speed, especially in scenarios with a high volume of cases.
More information about when to choose what in the docs
Control over Storage and Context for State Actions
We've introduced more control and flexibility in how state actions (Building Blocks) interact with storage and context within Case Management, particularly for context-driven lifecycles:
- Storage URL Configuration: For context-driven cases (which don't have a directly linked site), you can now explicitly configure a Storage URL at the lifecycle level. This allows you to designate a specific SharePoint location where state actions like "Ensure List" and "Ensure Folder" will be executed. Configuring a dedicated Storage URL is recommended for scenarios with a high volume of cases to avoid potential storage limitations on the default dashboard site.

More information about storage URLs
- Case-Managed State Actions and Context: The "Ensure List", "Ensure Folder" and "Ensure Generic Document Library" state actions can now be managed by the case. When enabled, this provides automatic permission management for the created list or folder and introduces new case.content.{Context Name}.location and case.content.{Context Name}.displayname context properties, providing easy access to the list/folder URL and a configurable display name.
More information about the Managed by Case setting
Responsibility Matrix in Case Management
- Define clear roles and responsibilities directly within the Case Management module using a configurable matrix (defaulting to RASCI: Responsible, Accountable, Supported, Consulted, Informed).
- Customize labels or implement different frameworks (e.g., PARIS, DACI) to match your processes.
- Key responsibilities can be displayed on cases for clarity.

For more detailed information, please refer to the Responsibility Matrix documentation
Timeline Component Configuration in Ometa Nexus
- Timeline component configuration has been moved to Ometa Nexus for centralized management.
- Structure timeline data more effectively with support for up to three levels of grouping.
- Utilize new visual grouping options designed to highlight specific periods like holidays, work shifts, or maintenance windows.

System Method to Trigger Method Jobs/Synchronizations
- A new system method
DCS.System > Trigger Method Jobis available. - Use this method to programmatically trigger method jobs or synchronizations from other processes or configurations.
Copy/Paste for Object Configurations
We've introduced new copy-to-clipboard and paste-from-clipboard options directly within the configuration environment, significantly accelerating your setup process.
You can now easily copy and paste the following configurations:
- Objects (including their fields)
- Methods (including their fields)
- Views (including their fields and functions)
- Context Managers (including their fields and functions)
- Charts
To use this feature, simply open the specific configuration item you want to duplicate in its editor (for example, a particular function within a view) and click the corresponding button in the ribbon. This intuitive, interactive approach offers a much simpler alternative to the Transfer Tool for many common configuration tasks.
Changed Functionality
CaseProperty. Context Access
The way you access case property values in action context has been updated for clarity and control.
- Deprecated: Avoid using context fields prefixed with
CaseProperty.. - Recommended: Use the exact case property name (e.g.,
Product ID) or thecase.propertiesprefix (e.g.,case.properties.product id). Thecase.propertiesprefix is preferred for better readability and clearly indicating that the context originates from a case property. - Direct Field Name Behavior: Using the exact field name (e.g.,
Product ID) will retrieve the case property value, unless the "Force System Context" flag is disabled on the corresponding object field, potentially allowing context values from for example a form or context manager to override. - Disable Legacy Fields: You can disable the automatic inclusion of CaseProperty. prefixed fields using the "Enable Legacy Case Property Fields" flag. This flag is enabled for existing lifecycles for backward compatibility and will be disabled for new lifecycles.

- Important Note: While the
CaseProperty.prefix is deprecated, this behavior will not be changed without an automatic upgrade procedure in a future release. There is no immediate need to rush the update of older configurations, as we understand manual updates can be challenging.
Case Properties and Context
Previously, all case properties added on the lifecycle were automatically treated as context fields when executing actions within the Ometa Framework. This meant that even properties solely intended for storing and visualizing extra information on a case were included in the action context.
With this update, we've introduced a more granular approach. When creating new case properties, you now have explicit control over whether they should be included as context fields for actions. A checkbox will be available during the creation process, allowing you to designate a property as a context field only when necessary.
Key Benefit: This change optimizes action execution by reducing unnecessary context data, potentially improving performance and simplifying action logic. It also provides greater clarity regarding the intended use of case properties.
Backward Compatibility: To ensure a seamless transition, existing case property configurations will be automatically updated to include this new checkbox. This means your current setup will remain functionally the same.

Method Settings Context Prioritization
We're changing the prioritization of context values in case of multiple input values: values set in the context fields in configuration will now overrule any other context. Previously, it was considered a default that was overruled by page context (context manager, url, ...) or case context.
This will apply to all context fields configuration where a method or view can be selected: views, functions, state actions, grouped actions, jobs ...
To prevent issues with previous configurations that relied on the automatically filled case properties in state actions: we will patch empty context fields to contain {$case.properties.contextfieldname} if a lifecycle property with the same name can be found.
See the table below for the new behavior:
| Field Name | Case Property | Static Configuration Context | Input Fields Default Value | Enforce System Context | Url / ADM Context | Old Result | New Result |
|---|---|---|---|---|---|---|---|
| List | Apples | Peaches | Pears | Bananas | Apples | Peaches | |
| List | Apples | Peaches | Pears | Bananas | Bananas | Peaches | |
| List | Apples | {$case.properties.List} | Pears | Bananas | Apples | Apples | |
| List | Apples | {$case.properties.List} | Pears | Bananas | Bananas | Apples | |
| List | Peaches | Pears | Bananas | Bananas | Peaches | ||
| List | Peaches | Pears | Peaches | Peaches | |||
| List | Peaches | Pears | Peaches | Peaches | |||
| List | Pears | Pears | Pears |
See Context Prioritization for an overview of context prioritization.
Warning
In older versions, empty static context fields on views were necessary in workarounds for context-related issues, with this change, these empty values will now take priority.
To prevent any regressions, check that the static context field value on views is still accurate and final with the new prioritization. Synchronization jobs in particular are prone to this issue.
Use this query on the Ometa Framework database to list all static context fields and their usage in synchronization jobs:
SELECT [o].[Name] AS 'Object Name', [v].[Name] AS 'View Name', [mscf].[Name] AS 'Static Context Field Name', [mscf].[Value] AS 'Static Context Field Value', [jd].[Name] as 'Used in Synchronization Job'
FROM [rep].[Views] AS [v]
INNER JOIN [rep].[Objects] AS [o] ON [o].[Id] = [v].[ObjectId]
INNER JOIN [master].[MethodSettings] AS [ms] ON [ms].[Id] = [v].[MainMethodSettingsId]
INNER JOIN [master].[MethodSettingContextFields] AS [mscf] ON [mscf].[MethodSettingId] = [ms].[Id]
LEFT JOIN [master].[ViewConnectionSettings] AS [vcsSource] ON [vcsSource].[ViewId] = [v].Id
LEFT JOIN [jobs].[JobDefinitions] AS [jd] ON [jd].[SourceViewConnectionSettingsId] = [vcsSource].[Id] OR [jd].[DestinationViewConnectionSettingsId] = [vcsSource].[Id]
WHERE [o].[Name] != 'DCS.System' AND [o].[Name] != 'DCS.Archive.Log' AND [o].[Name] != 'DCS.Case Management Dashboard' AND [o].[Name] != 'Ometa DCS - Membership'
ORDER BY [jd].[Name] DESC, [o].[Name]
Enforce Case Context on Security Policies
A new global setting was introduced to better manage the 'Enforce Case Context' setting for security policies. The 'Enforce Case Context' setting requires requests to be linked and authorized to a case, through either the originating url or Case Id header. In the framework settings (Business Connector > application menu top left > Settings > Framework), it can now be enabled for the default security policy.
When enabled: all objects, views (etc ... ) using the default policy will use 'Enforce Case Context'. Newly created policies will also have 'Enforce Case Context' enabled by default.
When disabled: the default policy does not use 'Enforce Case Context', it can still be enabled in custom policies.
We recommend using it to better integrate the case security into dashboards, but also recognize that not all requests can be linked to a case:
- ADM's hosted on pages unknown to case management
- Method executions originating from (CSL) scripts
- Method executions originating from OData Service endpoints
For these scenario's, the 'Enforce Case Context' can be turned off or would otherwise require configuration changes. To prevent breaking configuration, the global setting will be toggled off for upgrades and enabled for new installations.
Soft Removal for Role and Persons
The framework will now use a 'soft remove' principle for Role and Person (and Employee): the Role or Person will remain in the database with the Removed flag. When removed, they are no longer accessible by regular framework functionality:
- A removed
RoleorPersonwill not show up in database views or OData endpoints. - Memberships to cases will be removed.
- They can't be used in new memberships, casemessages or tasks.
Soft removal is used automatically when using system methods, or OData controllers:
- DCS.Membership
- DCS.System
Employee synchronizations can remain as is when using the system methods above:
Delete Employeewill mark person as removed, omitting it from query results and removing all memberships.- Specify
Validate Tasks:falseas context to check for assigned tasks before removal, or to leave the tasks assigned to a removed employee.
- Specify
Create Employeecan be used to restore 'removed' employees by username.
Enhancements
Improved Date Filtering (Ignore Time)
- New
IgnoreTimesetting available for distinct value lookups and filters on date fields. - When enabled (especially useful if 'Show Time' is disabled on the viewfield), comparisons and filtering will disregard the time portion of datetime values, ensuring accurate results when only the date is relevant. The underlying time data is not modified.
Direct Access to Usage Info from Case Management
- When configuring Building Blocks within the Case Management module, you can now directly open the "Usage Info" screen.
- This works on every place where the "Main Method Settings" component is used.

Enable/Disable View Functions
- View functions can now be temporarily disabled without deleting them entirely.
- A simple toggle allows you to deactivate a function, making it easier to manage features, test configurations, or phase out functionality without losing the setup.
- This is especially handy in the new Document ADM where you can toggle specific functionality.

OData Interface: Enhanced Flexibility with Faulty Metadata
Previously, the BCS_OData interface strictly adhered to OData metadata specifications. This could lead to parsing failures and prevent any methods from running when encountering even minor deviations, such as Unicode="false" attributes on date fields.
To improve integration with a wider range of OData services, we've introduced an option to ignore unexpected metadata attributes and elements.
While we strongly recommend that external metadata documents adhere to the official OData specifications for optimal reliability, enabling this new option will allow you to proceed with integrations even when faced with services that have slightly non-compliant metadata. Instead of failing entirely, the interface will now attempt to parse the metadata and function, ignoring the unexpected elements.
Refer to the docs for more information
Smart Tiles: Multi-Language Label Support
- Labels on Smart Tiles now support multiple languages, enhancing the user experience for diverse language requirements.
Improved BAM Search for Synchronizations
- Finding specific synchronization job executions in Business Activity Monitoring (BAM) is now easier.
- You can search and filter using new context fields:
Bcjs.Job.Name(Job Name),Bcjs.Job.Owner.Name(Job Owner Name), andBcjs.Job.Owner.Type(Job Owner Type).
Platform Updates
Support for .NET 8
- The platform now runs on the latest Microsoft .NET 8 framework, benefiting from its performance, security, and feature improvements.
- Existing installations of the .NET 6 runtime are no longer required for the platform and can be removed from servers if no other applications depend on it.