Change log
1.7.20
Deprecation
- The System preparation tool is now deprecated. All functionality provided by the system preparation tool is covered by the newly introduced ShareAspace administration tool.
- A new version of the full text index extension supporting Elastic 8 has been added. This deprecates the old version made for Elastic 6.
- The capability of a requirement to reference an object is deprecated. The object should reference the requirement instead.
Web
Features and usability improvements
- The favourites list on the space home page is now minimized by default.
- The "create new space" UI has been updated in order to simplify and clarify the user role assignment in different participants.
- When editing the collection information as a collection administrator, the save button will now only be activate if changes are made.
- When updating the applied template on a space - the update button will only be visible if the selected template is different from the currently applied template.
- Added support for exporting query results to Excel from within the work item module.
- Added export to file feature for queries in the DataExchange module.
- Added support for exporting the list of users in the user management module to Excel.
- Greatly improved performance when loading information filter settings UIs in a space with many identifying context instances (> 1000).
- When adding a new query clause in the query UI the operator will now default to
AND
. Before it defaulted to empty. - Columns in the containment control will now have a default width, if there is content overflow in a cell,
...
will be displayed at the end of the cell. Clicking...
will open a modal with the title of the column name and the full cell value as its content. - Greatly improved performance in the event subscription administration module.
- Updated the icon used for indicating that an object is locked.
- Improved performance in the DataExchange UI module.
- Alerts now has an overflow handler for when an alert message is longer than 17 characters.
- Increased the drop-file-support-limit to support 100 files to be dropped at one time. If more than 100 files are dropped an error message stating "Maximum files to drop is 100 each time" will appear.
- It is now possible to pass a file from the files module into a DataExchange schedule job form.
- Changed the session timeout (JWT validity timeout) logic. Removed warning 10 minutes before JWT expiration and added modal notification with a reload button that appears when the JWT expires.
- The collection administration UI for managing OAuth application settings has been removed. Since 1.7.18 this configuration is no longer in use, instead the Open ID Connect trust are in use.
Configuration improvements
- The work item management module now supports tab presentation configuration.
Bug fixes
- Spaces in file names are no longer being replaced by a
+
character when downloading a file. - Fixed an issue in the containment control that would always pick items from the first page when trying to edit items from a page other than the first page.
- Fixed issue where editing items in the containment control would be lost if the page was changed before saving the changes.
- Fixed an issue that would loose edits made in sub-forms of create and edit forms.
- SoftType instance deep links created from the object context module will now properly include the module id.
- Global ribbon actions are now correctly including the SoftType of a selected instance when evaluating the action visibility.
- Fixed an issue that would prevent ribbon actions to be loaded in the object context module.
- Having a semicolon
;
after the last email in the user invite form in the user management module no longer results in a validation error. - Configured entry views should now properly be displayed in the object viewer section of the structure module and the object context module.
- The correct information filter settings will now be applied when loading an entry read view in the object viewer field.
- The edit information filter button will no longer be displayed if all information filter options are disabled in the configuration.
- Fixed an issue in the query editor UI that would prevent the use of the
@today±n
(wheren
is a number of days) pattern. - Added loading indicator when entering the event definition edit form from a subscription definition.
- Fixed issue that could prevent action ribbon buttons to disappear in the context object module.
- Fixed an issue that would prevent the use of the NOT operator in the query editor.
- Fixed an issue that could lead to duplicated lines being shown in the tree view.
- It is now possible to request a license even when no license is applied.
- Switching between spaces now properly changes the user's role assignment settings.
- The sharing indicator will now properly show the sharing status of explicit versions for MVD-objects. Before it indicated if any version was shared even when looking at an explicit version.
- Entry views will now correctly present information from the selected entry.
- Fixed advanced query UI rendering issues that under certain conditions could lead to the query result not being rendered in the result grid.
- UI modules configured as "input dependent" (i.e. requiring an object input) will no longer show up under the module prioritization in a user's space settings.
- It is no longer possible to alter the ShareAspace web application styling from the markdown editor.
Core
Service account support
Introducing support for service accounts within ShareAspace.
Service accounts are typically intended to be used when setting up integration components between ShareAspace and other systems. By using a service account it is possible to trace what integration component interacted with and/or altered data in ShareAspace. All interactions made by a service account are logged in the same way as interactions from a normal user account are logged.
Service accounts are managed by the collection administrator and can be assigned roles in participants within spaces by a space administrator.
Read more here.
Model updates
- Capability to treat
TaskStep
,ScheduleEntry
, andPlanEntry
as SoftTypes in order to be able to reference them as such and include them in structure navigation.- Note that this is a breaking change that affects any SoftType based on
Task
,Plan
orSchedule
.
- Note that this is a breaking change that affects any SoftType based on
- A
Plan
can now have entries that invoke aTask
that is assigned to something, e.g. aPart
as well just referencing aTask
. - Planned and actual activities can now refer back to
TaskSteps
as well as theTask
that was planned or enacted. - A
Condition
can now be assigned to aTaskMethodVersionReference
to represent a trigger for when a task on a thing such as a part should be performed. - The Requirements model has changed so that the thing that is to meet that requirement can be assigned to the requirement and assertions that the requirement is met be represented.
- Note that the capability of a requirement to reference an object is to be deprecated and the object referencing the requirement to be used instead.
- Added
GeneralClass
toResourceItemSelect
so that a type of person of organization can be specified as a resource- Added optional Boolean flag
autoCreateSubscription
onPersonalSubscriptionDefinition
.
- Added optional Boolean flag
Fixup migrate-entries
To handle the data migration for the model updates of TaskStep
, ScheduleEntry
, and PlanEntry
a new fixup tool, migrate-entries
, has been added.
The process for migrating is: 0. Upgrade the system, while the system is still off.
- Setup a migrate entries configuration file.
- Run the fixup tool on the data store.
- Start the host.
- Run a space update with the updated template.
- Find all affected SoftType instances.
- Run a SoftType re-tag of affected entries.
The fixup migrate-entries
will extract specific entries from a UOI to a new UOI, and creates assignment with an external reference to the instance.
Example usage
> .\Eurostep.SAS.ServiceHost.exe fixup migrate-entries --systemPath F:\path\to\System --appSettings C:\path\to\appsettings.json --fixupConfigPath C:\tmp\migrate-tasksteps.json
Example, migrate TaskStep entries configuration file
{
"SourceType": "TaskMethod",
"SourceSoftTypeId": "Task",
"TargetType": "TaskStep",
"TargetSoftTypeId": "SubTask",
"OldAttribute": 522,
"AssignmentViewDefinitionType": "TaskMethodDefinition",
"AssignmentApplicationContext": {
"ApplicationDomain": "SUPPORT_SUPPORT",
"LifecycleStage": "DESIGN_SHARED"
},
"AssignmentsAttribute": "TaskMethodDefinition_taskStepAssignments",
"AssignmentType": "TaskStepAssignment",
"AssignmentExternalReferenceAttribute": "TaskStepAssignment_taskStep",
"AssignmentRole": "SUBTASK",
"TargetMainIdentifierRole": "DEFAULT_ID",
"TargetIdentifierRoleQualifier": "SUBTASK"
}
To re-tag SoftTypes use PLM API action completeTag
.
Example, re-tag TaskMethod and TaskStep
PUT https:/FQDN/api/space/{SpaceId}/plmAction/completeTag/TaskMethod/{ObjectId}
PUT https:/FQDN/api/space/{SpaceId}/plmAction/completeTag/TaskStep/{ObjectId}
Fixup set-blob-checksum
An incomplete blob with no checksum set can fail a space update with the BlobChecksumDoesNotMatchException
exception.
A new fixup set-blob-checksum
has been added in order to workaround the missing checksum problem.
Example usage:
.\Eurostep.SAS.ServiceHost.exe fixup set-blob-checksum --systemPath F:\System --appSettings C:\Host\appsettings.json --spaceId space1 --blobId 001261285 --checksum 02dc28700722738b0db9a5e37d412c23
Auto setup subscription for user
Personal subscriptions can now be automatically created when a SpaceProfile is created. To enable the auto create set the autoCreateSubscription
on PersonalSubscriptionDefinition
to true.
This enables the functionality of having a set of user subscriptions to be setup by default when a user is invited. If the user is not interested in the subscriptions they can opt out by removing them. Before this update a user would always have to opt in for subscriptions.
Other
- Fixed an issue that would cause the export query to Excel functionality to render empty files under certain conditions. Initially found by setting the "all versions" flag on a query.
- Added a circular references check in the structure based sharing in order to avoid infinite sharing loops.
- DataExchange queues configured with a concurrency larger than one will now properly execute jobs in parallel.
- Fixed an issue in the space update functionality that, under certain conditions, could cause the the system to end up in an exception and endless retry loop.
- Fixed an issue in the indexer that could cause an infinite retry loop when indexing a batch containing multiple Participants with role references pointing to a single SpaceProfile.
- Optimized the retry logic in the index engine.
- Internal message serialization now ignores the assembly version in validation.
- Fixed an issue that would prevent events from firing if a subscription definition aggregated the events and the number of events triggered by one change set exceeded 1000.
- Events failing due to a malformed configuration of the event payload will now be properly logged.
- Failed event signals will now only be retried for 30 minutes (before they were retried indefinitely). After 30 minutes the event will be removed from the event bus and a log entry for retry failure will be written.
- The external extensions cache now properly support concurrent read and write access.
- Personal access tokens are now included in snapshots.
- It is now possible to set
GrantUserAccess (GUA)
onExternalAccessRights (EAR)
. This allows a participant to delegate user invites to another Participant. - Removed
If-None-Match
caching support from space profiles. - Fixed an issue where an index configured with multiple terms with the same identifier could lead to duplicated index entries.
- Fixed an where instance selects in nested containment views would not show the correct values.
- It is now possible to use the collection settings API (
/collection/settings
) to update theWebApplicationRoot
setting. - It is now possible to turn off invite emails after collection bootstrap using the
/collection/settings
API. - Applicability filtering is no longer applied when getting icon and presentation for a SoftType instance.
- HAETOAS paging information for entries should now correctly be available even if the total number of entries equals the page size.
- Improved the stability of the checkpoint creator. A checkpoint operation could previously fail if run while the system was under heavy load.
- Improved the stability of the compression functionality in the HTTP response middleware.
- Fixed an issue in the space update logic that could prevent the updating of access right modifiers of role definitions.
- Improved the stability of the external extension registration cache.
- Fixed a race condition issue between the indexer and the event handler that could result in duplicated index entries.
- Exporting an Excel file using a misconfigured query (having presentation statements referring to keys not included in the select) will no longer render a corrupt Excel file. Instead a ShareAspace error log entry is created.
- Greatly improved the performance of SoftType instance reads where the instance is shared with a large amount of Participants and has a large sharing history transaction log.
- Fixed an issue that would prevent journal files marked for deletion to be deleted at runtime. Before this fix the journal files would only be cleaned up at Host restart.
Tools and extensions
3D Viewer
- The performance of the 3D viewer has been improved.
- The 3D viewer requires HOOPS Communicator 2022 U1 SP2.
- It is now possible to activate the caching of master models (monolith models) in the streaming cache service. This is controlled from the
appsettings.json
file in the streaming cache service.- Note that this is in addition to the caching of converted models.
- It is now possible to trigger a re-convert of all the cached geometry files. This is done for a space in the collection administration UI.
- There is no longer a 404 when loading the loading indication gif.
- The 3D viewer now supports 3D DWG.
ShareAspace administration tool
In ShareAspace 1.7.20 a new tool for administrating a ShareAspace installation as a server administrator is introduced.
The tool is packaged and installed together with the ShareAspace service host. The tool is an executable named sas.exe
(default at C:\Program Files\Eurostep\ShareAspace\Host\sas.exe
).
The first iteration of this tool allows for full management (read, update, create) of all collection settings thus replacing the previous System preparation tool.
Read more about the tool here.
Send multiple objects to extension module
Extension modules can now be configured to receive multiple input objects. A typical scenario could be a multi-selection in a query result followed by the "Open in" action.
To activate multi-input on an extension module add the acceptMultipleInputObjects
setting parameter and set the string value to True
.
{
"$id": "ExtensionModuleId",
"$moduleRef": "Extension",
"prioritized": false,
"settings": {
...
"acceptMultipleInputObjects": "True"
}
}
The object ids of the objects will be passed as a comma ,
separated string on the inputObject
query parameter.
File preview download using extension
The file preview control has been extended with an option of having an extension handle the file download action. By providing an extension id on parameter downloadFileExtensionId
the file preview control will no longer run the default ShareAspace file download. Instead it will do a get request against the trusted external endpoint registered on the collection matching the configured extension id.
The GET request will add the following query parameters to the registered extension URL.
Parameter | Description |
---|---|
fileOid |
The database id of the file. |
contextOid |
The database if of the object containing the file. |
spaceId |
The id of the space. |
token |
The access token issued for the trusted extension. |
Full text indexer for Elasticsearch 8
A new full text indexer supporting Elasticsearch 8 has been introduced. The new package name is FullTextIndexing-elastic8-1.7.20.xyz.msi
.
Read more here:
Other
- The
OnApprovalRequest
extension now sets the role when creating approval references and when referring to the approving person of the Approval. What role value to use can be configured on the extension. - The configuration tool no longer replaces the
structure.orderBy
$selectId
value with null when the value is unknown, instead the value is kept as is. - The
InputFilePath
web UI control can now be configured to restrict the selection type. The configuration parameterpickerType
can be set to,file
for limiting on file selection,folder
for limiting on folder selection, andall
(default) for allowing the selection of both files and folders. - The SMTP email extension now support TLS endpoints.
- Fixed an issue that could lead to the UI presenting two icons when opening a form. The priority order is
titleIconPath
,titleIconId
, no icon. - The full text indexer has been optimized to support re-indexing of a large set of documents.
- The ShareAspace dev tool now supports restoring collection and spaces buy using a single checkpoint file.
Documentation
- Added change log.
- Updated known issues.
- Updated migration log.
- The software prerequisites now links to the correct installation package for the .NET Core runtime.
- Added clarification on that SoftType instances cannot be updated using a space update. Note that trigger definitions, subscription definitions, and subscriptions all are SoftType instances.
- Updated the collection administrator user interface documentation to match the latest release of ShareAspace.
- Added 3D-viewer installation documentation.
- Fixed an issue that would prevent the search in the documentation site.
- Added clarification about tile query numbers.
- Added service account documentation.
- Added service account administration documentation.
- Added Personal access token (PAT) user guide documentation.
- Added ShareAspace administration tool documentation.
- Added Full text indexing server for Elastic 8 pre-requisites.
- Added Full test indexing for Elastic 8 installation documentation.
1.7.19
Web
- The advanced search control now supports default values in the same way as they are supported on the quick select and multi quick select controls.
- Configured global event handlers are now considered when rendering clickable object links.
- Reselecting the context object in the context object module will now show the context object in the middle pane - just like when first entering the module.
- Tab titles are now correctly set when opening an object via a link.
- Fixed styling issues with that appeared when using the advanced search control within a containment control.
- The person quick select control will now properly select instances of the Person SoftType that is configured to be used by the select control.
- Removed the JWT query string parameter from all download links. When downloading the files, the JWT is instead verified via a cookie.
- The search editor will now always minimize when performing a search - even if there are no hits.
- Filters are now properly displayed in the search editor.
- Improved the usability of the Participant module.
- Updated the styling of the approval request decision form.
- It is now possible to run full text queries within the where used modal.
- Fixed styling issues in the model browser.
- Fixed an issue that could prevent the personal subscription module to open.
- Fixed an issue that could prevent sorting in queries.
- Fixed an issue that would prevent the participant search in the create/edit message form from working.
- Compare module updated to display the correct version presentation in the dropdown lists.
- Input fields for query clauses now default to empty when adding new query clause rows to a query.
- Fixed an issue that would prevent double click actions configured via the global events from working.
- Query column filters no longer has the title as a selectable value.
- When switching between spaces, the modules of the space switched to will now be loaded correctly without requiring the user to refresh the browser.
- The context object module now supports create version with copy characteristics.
- The entry view title now has multi language support.
- Double click on a file listed in the read view will now bring up a modal preview of said file.
- Single select controls will now hide the search filed when an item is selected.
- Fixed an issue with the file upload resume functionality.
- Improved the visibility of the action bar divider in the context object module.
- The structure module and context object module now support the lock actions.
- The containment control now support reference with single cardinality.
- Updated the list of available time zones.
- The context object module data grid is now applying the selected information filter before loading references.
- The default query of the WorkItem module is no longer executed when entering the module via a deep link.
Core
- The DataExchange output path behavior when using external tasks in the job has been fixed. All folder structures and files created by an external task will now properly be placed under the defined output folder of the DataExchange job. This also solves the issue with downloading output files from the DataExchange job read view for jobs that had an external task as the last task of the job task sequence.
- UoI entries can now be added to an Approval Request.
- Fixed an issue in the host startup that would prevent the registered extension cache to load properly. This issue led to all CORS OPTION requests being denied even if an extension was properly registered.
- Corrected the
children
href in the get full structure API resource. - Fixed an issue in the SoftType exporter that made the exporter always return the latest version of a SoftType instance even if an earlier version was actually referred.
- Model update: Added
referencedObjects
toMessageThread
.referencedObjects
is an array ofMessageThreadObjectReference
,MessageThreadObjectReference
has arole
(string
) and areferencedObject
(ApplicationReferenceObjectSelect
). - Fixed a race condition in the indexer that could lead to the same item being indexed twice.
- Fixed an issue in the SoftType reference filtering that would prevent proper filtering if there were multiple target types.
- Fixed an issue that could prevent a user from logging in after the user updated the space profile.
- Fixed an issue with that would prevent one-time-tokens to be created when a user was signed on via OpenID connect trust.
- Fixed an issue that would prevent getting a message thread if a user had access to a message thread but not to one or more of its references.
- Fixed an issue that could prevent the load of an object if the requesting user only had partial access to the references on said object.
- Creating a new version using the copy characteristics option will now exclude any approval references from the previous version.
- Added support for editing the
authorization
collection setting via the API route:/collection/settings/{id}
.
Extensions
- Approvals will now be created even if there is no comment text provided on the approval request decision.
- The approval extension now ignores casing when checking the approver email.
Tools
Person quick select filtering
It is now possible to configure the person select control to pick additional query filter parameters from already selected data. e.g. say there is one selection control for searching for and selecting an organization and one selection control for searching for and selecting a person. If there is a need to limit the person search to only search for persons belonging to the selected organization the person select control can now be configured to pass information from the result of the organization picker to the query executed by the person picker.
Example Views
configuration:
{
"fields": [
{
"fields": [
{
"bindings": [
{
"targetPath": "acquiringOrganization.value"
}
],
"label": "acquiringOrganization",
"type": "singleQuickSelect",
"enableNew": false,
"softTypes": [
"Organization"
],
"query": "SAS_Organization.IDNAME"
}
]
},
{
"fields": [
{
"bindings": [
{
"targetPath": "responsiblePerson"
}
],
"softTypeId": "Person",
"label": "responsiblePerson",
"queryParameters": [
{
"key": "claims",
"value": "*@{acquiringOrganization.value.id}@*"
}
],
"type": "personQuickSelect",
"valueProperty": "value",
"enableNew": false
}
]
},
]
By default person quick select search with id and name terms, above configuration will add the claims.
?id=Participan&name=Participant&claims=*@Participant@*
Parameters in the queryParameters
array can be:
- a preconfigured static string.
- simple input values from the form.
- lookup from data being populated (like in the example above)
- resolve a SoftType, and use property value
- use property value directly if it is available
Refresh in web extension modules
Clicking the tab refresh button in ShareAspace web for a module configured with a custom extension will now send a message from ShareAspace web to the extension.
A new message type has been introduced for this:
{
"type": "refresh"
}
As for other message types, the web extension is responsible for listening for the messages (see example here).
Deprecation
MessageThread.referencedObject
will be deprecated in release 1.7.21.MessageThread.primaryMessageContext
should be used instead.
Documentation
- Updated the ShareAspace web configuration sample for the setup of the Email Authentication component.
- Added 1.7.19 changelog and known issues.
- Corrected documentation on how to disable default invite emails from being sent out.
- Updated the migration log to include a note about the reverse proxy
appsettings.json
schema update between 1.7.17 and 1.7.18.
1.7.18
Web
- Object information menus in grids will now remain fixed. Before the menu moved while scrolling the grid.
- Filenames are now supporting the
+
character. - Fixed an issue where adding a new query clause in a query would treat Date/DateTime values as strings.
- The "Save as" option on queries are now available for all users. Before a user had to have update access to the query in order to create a copy of it.
- Altering a query clause using an option list and saving should now also persist the new option selection.
- Fixed issues with query result sorting and paging.
- When using the "Save as" action on a query the Participant selection list should now show all the Participants where the user has access to store the copied query.
- Fixed issue in in query clauses that would keep the old value when switching between Date and DateTime.
- The quick select and person select controls should now be disabled if a users does not have access to edit values on the ports bound to these controls.
- Fixed an issue that prevented sorting of files in the unmanaged files component.
- Added support for paging and filtering to the unmanaged files component.
- Unmanaged files component should now only list Participants where the user has file access.
- The value history component should now use proper presentation formatting for Date/DateTime.
- Added a UI component where a user can manage saved default values.
- Fixed a set of issues related to creating a new version.
- Editing a SoftType instance in the Generic module should now properly reload the current search results.
- Added file navigation buttons to the modal file preview control.
- Added the ability open a preview of an object in a popup (modal).
- Fixed an issue that could prevent deep links from working.
- Fixed multiple minor issues in the advanced search control.
- The users module module now has paging support. The page size is set to 100.
- SoftType link lists can now be filtered. This feature requires extra configuration on the controls within the view.
- SoftType link list are now using the information filter correctly.
- Improved usability of the effectivity filtering settings in the object context and structure modules.
- Menus that have no menu items are now completely removed.
- Cell bindings in the structure tables now handles the cardinality switch from 0..1 to 0..* that can happen when loading data with effectivity filter turned off.
- Improved error handling.
- The "Make decision" form on approval request have been updated to include a summary of the full review process.
Core
ShareAspace Authorization/Identity deprecated
The ShareAspace Identity server component and the ShareAspace Authorization server component are both deprecated. This means that it will no longer be possible to use the Resource owner flow authentication/authorization for integration components. Instead Personal Access Tokens (PAT) should be used.
A third party identity provider supporting OpenID Connect should as previously be used for user interactive access to the system in a production environment.
For test and development environments there are two new extension components that can be used for a simplified authentication/authorization setup.
Reverse proxy configuration
The reverse proxy configuration file appsettings.json
schema has been updated.
Before:
{
...
"ReverseProxy": {
"Routes": [
{
"RouteId": "ShareAspaceRoute",
"ClusterId": "ShareAspaceCluster",
"Match": ...,
"Transforms": ...
}
],
...
}
...
}
After:
{
...
"ReverseProxy": {
"Routes":{
"ShareAspaceRoute": {
"ClusterId": "ShareAspaceCluster",
"Match": ...,
"Transforms": ...
}
},
...
}
...
}
Other
- All ShareAspace components have been upgraded to use .NET 6 (6.0.4).
- Getting SoftType instances via the API now provides to new system properties in the data section.
$icon
- the path where the configured icon for the SoftType can be accessed.$presentation
- the default presentation string for the SoftType instance.
- Model updates:
- Added
ProductConcept
,ProductConfiguration
,Market
, andVerification
toSharedItemSelect
in order to make it possible to add them to a SharePack. - Added
FileConverter
external extension type.
- Added
- The id-name-index is now indexing all names (including the ones on versions and definitions) before the change only names on the master level were indexed.
- Fixed an issue in the API that prevented the use of personal access tokens with some API routes.
- Fixed an issue that would prevent creating a new version if SoftType references copied from the previous version was altered at the same time.
- It should now be possible to copy a version even if the source is in a semi-frozen or frozen state.
- Fixed the internal access logic to function according to specification. The implemented rules were stricter than intended.
- Fixed security issues in the user avatar handling.
- Only image files can be uploaded.
- Image file is removed completely from the system when removed from the user profile.
- The avatar URL on the user profile can only point at uploaded avatar images.
- It is no longer possible to edit or delete history items on an approval request (WorkItem) when it is in a closed state.
- Queries should now properly support the use of the
@empty
keyword. - The definition of "Latest version" has changed. Before the "Latest version" was always the latest version in the version chain. Now "Latest version" is the latest version in the version chain that a user has access to.
- Added 3D viewer components including UI Module, model conversion, and model caching.
- Improved extension that creates approval objects when an decision is made on an approval request.
Tools
- Fixed a schema serialization issue in the Configuration tool.
- The
Eurostep.ModelFramework
nuget package now contains the testing libraryEurostep.ModelFramework.Mapping.Testing.dll
.
Documentation
- Updated the installation documentation to reflect the deprecation of the Authorization server and Identity server components.
- Added installation documentation for:
- Added change log.
- Updated to the latest ShareAspace theme.
1.7.17
Web
User defined default values
ShareAspace web now supports user defined default values. If activated in the configuration a user can save a SoftType instance per SoftType as a default value for that type. If the configuration has activated the default value link a user will not have to keep searching for the same instance over and over.
In the following example, the user adds the Eurostep AB
organization id context as a default value. When asked about this value again, ShareAspace web populates the form with the user defined default value.
Other
- The compare module now support comparison over paged references.
- The file preview control now also support application files, i.e. files on application objects like work item.
- Fixed an issue that would prevent read views from rendering if the read view contained an extension control while being used in an extension module.
- Object links generated from within the WorkItem module (when clicking the copy-link button on a work item instance) are now working correctly.
Core
Compare paged references
The ShareAspace REST API has been extended to support comparing references over multiple pages between two SoftType instances. The new API resource is called softTypeCompare
.
GET
api/space/{space-id}/softTypeCompare/{leftDefinitionId}/{leftOId}/{rightDefinitionId}/{rightOId}/{portPath}/{pageNumber}
Parameters | Description |
---|---|
space-id |
Id of the space for the Space API route. |
leftDefinitionId |
Id of the SoftType definition of the first SoftType instance in the compare. |
leftOId |
Database id of the first SoftType instance in the compare. |
rightDefinitionId |
Id of the SoftType definition of the second SoftType instance in the compare. |
rightOId |
Database id of the second SoftType instance in the compare. |
portPath |
The port path to the reference to compare. |
pageNumber |
(Optional) the page to load, starting at 0. |
The resource link is provided as a HAETOAS link in the SoftType instance GET response and is named softTypeCompareReferences
.
When using the compare resource
- the
data
array is an array of wrapping objects, containing achangeType
and the actual entrydata
. - and there are more than one page in the compare result, a
next
HAETOAS link is provided.
Change type | Description |
---|---|
Removed |
The item exists on the first SoftType instance but not in the second SoftType instance. |
Added |
The item exists on the second SoftType instance but not on the first SoftType instance. |
None |
The item exists on both SoftType instances. |
Next link property | Description |
---|---|
pages |
The number of pages, using current pageSize (default is 10). |
totalNumber |
The total number of compared items. |
pageSize |
The current pageSize. Default is 10. |
remaining |
The remaining items using current pageSize. |
differences |
The number of differences among the remaining items. |
Example response:
{
"href": "https://scenario.test/space/space001/softtypeCompare/Part/0100000000000000120105000000/Part/0200000000000000120105000000/NextAssemblyUsages.value",
"data": [
{
"changeType": "Removed",
"data": {
"$version": 1,
"$oid": "1f00000000000000120107000000",
"$softType": "Part",
...
}
},
...
],
"links": [
{
"rel": "next",
"href": "https://scenario.test/space/Space1/softtypeCompare/Part/0100000000000000120105000000/Part/0200000000000000120105000000/NextAssemblyUsages.value/1",
"method": "GET",
"pages": 9,
"totalNumber": 88,
"pageSize": 10,
"remaining": 78,
"differences": 50
}
]
}
User based default values
Introducing a new way of configuring default values in the SoftType data section. As a configurator it is possible to define user based default values in the SoftType data section.
- For simple types:
string
- "Internal id counter", this will provide the next id from the ShareAspace id counter.string
-@me
will provide the email address of the current user as the value.date
/date-time
-@today
will provide thedate
/date-time
representing today's date/time.
- For references:
- "Instance reference" - will allow for the configuration of an instance known at configuration time to be set as the default value.
- "Information filter lookup" - will pick the user runtime defined instance matching the type for the reference. (See the web section for example).
How values are set
The process for a client to retrieve the default values makes use of a "scaffolding" resource in the ShareAspace API. When creating a SoftType instance, a client can ask the ShareAspace API for a pre-populated payload for the instance to create.
Example:
A Document
SoftType has been configured to use the id-generator for the id of the document use a user defined instance for the "id owner".
By requesting a "scaffolding payload" from the ShareAspace API, ShareAspace will pre-populate the portions that have default values defined.
PUT api/space/space001/definition/specificSofttype/Document/generate/defaultIn
Response:
{
"href": ...,
"data": {
"documentId": {
"value": "0040",
"idOwner": {
"$softType": "IdentifyingContext",
"$oid": "0200000000000000f40101000000"
}
}
},
"version": ...,
"links": [ ... ]
}
Using this prepared payload the client can now
- display the default values.
- override the default values.
- populate the rest of the payload.
API
Get a scaffolding payload.
PUT api/space/{spaceId}/definition/specificSofttype/{softTypeId}/generate/{inputSchemaId}
Parameters | Description |
---|---|
spaceId |
Id of the space for the Space API route. |
softTypeId |
Id for the SoftType to request default values for. |
inputSchemaId |
Id of the input schema intended for the create operation. |
Get user default values.
GET api/space/{spaceId}/defaultValues
Example get default values response:
{
"href":"https://FQDN/api/space/ref1/defaultValues",
"data": {
"instances": {
"OrganizationIdContext": "0300000000000000f40101000000",
"IdentifyingContext": "0100000000000000f40101000000",
"Person": "0100000000000000e40101000000"
}
},
"version":6,
"links": [
{
"rel": "addDefaultValue",
"href": "https://FQDN/api/space/ref1/defaultValues/{softTypeId}/{objectId}","method":"PUT"
},
{
"rel": "removeDefaultValue",
"href": "https://FQDN/api/space/ref1/defaultValues/{softTypeId}/{objectId}","method":"DELETE"
},
{
"rel": "removeAllDefaultValues",
"href": "https://FQDN/api/space/ref1/defaultValues/",
"method": "DELETE"
}
]
}
Add default value.
PUT api/space/{spaceId}/defaultValues/{softTypeId}/{objectId}
Remove default value.
DELETE /api/space/{spaceId}/defaultValues/{softTypeId}/{objectId}
Remove all default values.
DELETE api/space/ref1/defaultValues/
Other
- Fixed an issue that could prevent files contained within SoftType instances from being exported when using the SoftType exporter.
- Fixed an issue that prevented DataExchange jobs from being rescheduled if the rescheduled job used information filter settings.
Tools
Default value configuration
The ShareAspace configuration tool has been updated with the ability to configure default values in the SoftType data section.
Default value for references:
- For references there are two options for default values:
- Instance reference to instance known at configuration time.
- Information filter lookup (for user defined default values).
Default value for string:
- For
string
values there are two options for default values:- "Next internal id" - will default to the next available id from the ShareAspace internal id counter.
@me
- will default to the email address of the current user.
Default value for date/date-time:
- For
date
/date-time
there is one option for default value:@today
- will default to the date/date-time representing the date/date-time when the scaffolding is requested.
Preview - ShareAspace development tool
The first preview of the ShareAspace development tool is included in ShareAspace 1.7.17.
The ShareAspace development tool serves two main purposes.
- To run an "offline" version of ShareAspace where the tool can load in ShareAspace data store backups and allow for script execution against said data stores.
- Note that the normal ShareAspace access controls are not applied when scripting against a ShareAspace store running in "offline" mode.
- To provide ShareAspace software development kits and help developers setting up project stubs for different types of ShareAspace based development projects.
- e.g. see offline-export.
Note
The ShareAspace development tool and the offline export capability are provided as a preview releases - this mean that breaking changes are likely to be introduced in future releases.
Preview - ShareAspace UI extension framework
The first preview of the ShareAspace UI extension framework is included in ShareAspace 1.7.17.
The purpose of the ShareAspace UI extension framework is to:
- provide a consistent ShareAspace styling and user experience for custom ShareAspace UI extension modules.
- enable component reuse in order to reduce development time.
- provide a ShareAspace REST API client that promotes proper use of the ShareAspace REST APIs and to reduce the implementation time of custom ShareAspace UI extension modules.
- provide a typed development experience based on a ShareAspace space template.
- provide a framework for testing custom UI extension modules.
The ShareAspace UI extension framework is provided as a ZIP package with each release of ShareAspace named Eurostep.SAS.TypeScript.Library_<version>.zip
, e.g. Eurostep.SAS.TypeScript.Library_1.7.17.123.zip
.
Current pre-requisites:
- Node.js - minimum version:
14.x
. - yarn.
- Local development TLS certificate for hosting module with
HTTPS
.
Setup at root:
- Install all dependencies and setup the multi-package repository (monorepo).
yarn
- Build all packages in the correct order.
yarn bootstrap
Setup for extension module:
- Setup new folder for module under
./packages
(copy existing package). - In package sub folder, e.g.
./packages/my-module
.- Install all dependencies.
yarn
- Build package.
yarn build
- Host module locally.
yarn dev
- Install all dependencies.
The ShareAspace UI extension framework includes:
- ShareAspace REST API client SDK.
- ShareAspace custom web extension module interface providers.
- ShareAspace styles.
- ShareAspace web component library based on the ShareAspace styles.
The long term goals of the UI extension framework are:
- Full documentation coverage of:
- the full development environment setup process.
- an end to end implementation scenario.
- the included ShareAspace UI components.
- the extension module client handlers.
- the ShareAspace styles.
- the ShareAspace REST API client library.
- Full development tool kit experience using the ShareAspace development tool for setting up a UI extension project stub.
Note
The ShareAspace ShareAspace UI extension framework is provided as a preview release - this mean that breaking changes are likely to be introduced in future releases.
Other
- It is now possible to configure external dialog actions in ShareAspace web to hide the submit button.
- The file preview web control has been extended so that it is possible to configure title, icon, submit button text, and cancel button text for the view extension and download extension configurations.
- The external form configuration has been extended to support configuration of title, submit button text, and cancel button text.
Documentation
- Added documentation for the ShareAspace development tool.
- Added documentation for the offline export capability.
1.7.16
Web
Download from file preview
It is now possible to download files from the file preview window.
Other
- Fixed an issue in the advanced search control that would prevent the selection of references if the parent and child of said reference were of different types (e.g. selecting the document assignment between a Part and a Document).
- Users can now remove and edit their comments on WorkItems as long as the WorkItem is not closed.
- Introduced new web UI controls for displaying and managing (create/edit) files on WorkItems.
- Improved the way that ShareAspace web handles long comments on WorkItems.
- It is now possible to configure global actions for when clicking links and/or double clicking SoftType instances. A typical action could be opening a SoftType instance in a view.
- It is now possible to configure global ribbon buttons for SoftType instances.
- Fixed issue that would build faulty folder paths for Participant folders when scheduling DataExchange jobs.
- The object viewer should now always update when selecting items in a query result grid.
Core
Bulk uploader
The bulk upload API now requires the ShareAspace Host to be configured with allowed paths for the bulk upload.
appsettings.json
{
// new
"BulkFileUploadAPI": {
"AllowedSourceDirectories": [ "C:\\example\\path" ] // will allow subfolders too
}
}
Warning
Any scripts and or components using the bulk upload API will be affected by this change. The ShareAspace Host configuration must be updated with these settings for the bulk upload API to work.
WorkItem system trigger
A new system trigger for WorkItems has been introduced. The new trigger WorkItemNotification
will trigger at the time when the calculation of dueDate
(DateTime) - dueDateReminder
(integer, seconds) equals "now".
An event will not trigger if the WorkItem:
state
isClosed
.dueDateReminder
is not set (or has been removed).- is deleted.
An example configuration using the new trigger:
{
"$id": "ApprovalRequestNotification",
"data": {
"action": "WorkItemNotification",
"category": "ApprovalRequestEvent",
"contract": {
"softTypes": [
{
"id": "ApprovalRequest"
}
]
},
"description": "",
"id": "ApprovalRequestNotification",
"name": "Approval request notification"
}
}
New system data in GET response payload
A new system object has been added to the SoftType GET response payloads. The new object is $targetEntry
and it has two properties:
entryId
- the Entry id of the requested entry objectId.path
- the JSON path to the entry.
The object is returned on all references between two SoftTypes. For a reference directly to a non-mvd (master, version, definition) object or a reference to a version or definitions the path
value will be empty.
e.g. WorkItem.referencedObjects pointing directly at a Part (master, version, or definition)
"$softTypeId": "WorkItem",
...
"referencedObjects": [
{
"$entryId": 2,
"value": {
"$oid": "0100000000000000120105000000",
"$softTypeId": "Part",
"$version": 1,
"$targetEntry": {
"entryId": 5,
"path": ""
}
}
}
]
If instead the WorkItem.referencedObjects referred to a specific entry within the Part SoftType, like referring to a document assignment within the Part the path
property of the $targetEntry
object would be populated with the JSON path to that specific entry.
"$softTypeId": "WorkItem",
...
"referencedObjects": [
{
"$entryId": 2,
"value": {
"$oid": "0100000000000000120108000000",
"$softTypeId": "Part",
"$version": 1,
"$targetEntry": {
"entryId": 8,
"path": "documents"
}
}
}
]
The reason for the introduction of this feature is to help a consumer of the API to know where on the target SoftType that the referenced entry can be found. Typically for supporting the use case of navigating to the reference to then edit it.
Other
- Awareness access (AWA) must now be set explicitly between Participants to follow the external access design intent. It is no longer inherited over external access setups. In the the setup
Participant1 -granting AWA to-> Participant2 -granting AWA to-> Participant3
Participant3
will not have an inherited AWA access toParticpant1
viaParticipant2
. IfParticipant3
needs AWA toParticipant1
,Participant1
must explicitly grant this toParticipant3
. - Fixed an issue that would prevent updating the request rate policy via the administration API of migrated installations.
- Fixed an access control in the user search making sure that you can only find users of Participants where you have the aware access.
- Fixed an issue in the applicability cache that could prevent the Host startup.
- Updated the
MaxRequestBodySize
of the "space template upload" API route to 100MB in order to support larger templates without requiring compression of said template. - Model update: Extended the
ApplicationReferenceObjectSelect
to includeConnectionObject
. This means that WorkItem can now references to entries within a SoftType, allowing for the WorkItem to be configured to represent an approval request that can approve references between SoftTypes, like approving a document assignment on a part. - Unmanaged files can now be attached to WorkItem and WorkItem history entries.
Tools
Global presentation updates
Two new configuration capabilities has been added to the global presentation section of the configuration tool. These are Event handlers
and Ribbon actions
.
The event handler configuration allows for configuring what should happen when double clicking and/or clicking a link of a SoftType instance. The configuration is global for the whole user interface. i.e. whenever a SoftType instance is displayed it will apply this configuration.
Some example use cases:
- Allowing a user to double click an object in the favourite list and having ShareAspace opening a module with this object as input.
- Allowing a user to click on a document that is presented in a documents list in a read view and having ShareAspace opening a module with this object as input.
Example configuration:
Parameter | Description |
---|---|
Type |
The type of action, openIn for opening an object in a module sendToForm for passing the object into a form. |
Event Types |
dblClick for triggering the action when a SoftType instance is double clicked. link for triggering the action when a SoftType instance link is clicked. |
Module Id |
The id of the module that should be opened when triggering the event. |
Target SoftType id |
The SoftType to be created with the selected object as input. (Only when using the sendToForm type). |
View id |
The id of the create view to use when creating the Target SoftType . (Only when using the sendToForm type). |
Property path |
The schema path to the port that will hold the reference to the input object. (Only when using the sendToForm type). |
SoftTypes |
List of SoftTypes (or all) for which the event handler should be active. |
The ribbon actions configuration allows for configuring actions that should show up in the action ribbon for a selected SoftType instance. These settings are also globally applied to the whole user interface, i.e. cross all modules.
This new feature should help reduce the number of replicated configurations that were required before this change. As an example, if you wanted to have the Edit
action for a selected document in all modules that allowed for editing a document you would have had to configure the Edit
action in all those modules. With this change the configuration only need to be done once.
Another feature of this is the ability to configure "send to" actions. That is, it is possible to create a configuration where clicking an action for a SoftType instance, that instance can be sent to another module, it can even be configured to open a form within said module and have the instance mapped to one of the reference controls within that form.
Supported modules:
- Generic object viewer
- Generic module
- Generic structure module
- Context object module
- WorkItem module
Example configuration:
Parameter | Description |
---|---|
Type |
The type of action, for the ribbon actions only sendToForm is available. |
Ribbon label |
The text string to be used for the ribbon action button. |
Multi select |
Controls if the action should be available for multiple selection of SoftType instances or only available for single selection. |
Module Id |
The id of the module that should be opened when clicking the action. |
Target SoftType id |
The SoftType to be created with the selected object as input. |
View id |
The id of the create view to use when creating the Target SoftType . |
Property path |
The schema path to the port that will hold the reference to the input object. |
SoftTypes |
List of SoftTypes (or all) for which the ribbon action should be active. |
Note
It is still possible to have the configuration setup per module.
Other
- Added configuration support for the two new web UI controls introduced.
- Displaying and managing (create/edit) files on WorkItems.
Documentation
- Updated the ShareAspace Host configuration documentation with information on the
BulkFileUploadAPI/AllowedSourceDirectories
configuration parameters. - Updated documentation generator to DocFX 2.58.9.
1.7.15
Web
Read views for entries
ShareAspace web can now present information about entries within a SoftType. This is done by enabling the configuration capability of defining read views for the entries themselves. Prior to this update is has only been possible to have read views configured per SoftType. The configuration is made available in the structure module and the object context module.
In the example below, the reference object (Next assembly usage), between a part and one of its child parts is shown. From a configuration perspective any information contained on the reference can be displayed.
In addition to being able to display information about the entries it is now also possible to send entries to the structure and object context modules via the "Open in" action. When opening an entry, ShareAspace web will display the parent, the entry, and the child just as when navigating to the instance like in the example above.
Other
- The compare module has been changed so that by default when opening an object in the compare module the "compare with" object will be the same that was sent to the module. For versionable objects this allows for quick comparison between versions of the same object. It is still possible to replace the "compare with" object with one found via the search functionality.
- The collection administrator user interface used for rebuilding indexes of a space has been updated with action names that should clarify the difference between managing the full text indexes vs. managing the SoftType indexes.
- When closing a module tab the tab to the left of the closed tab (if there is one) will become the active tab.
- Added icons for the approval states (ConditionalItemState within the WorkItem configuration).
Core
Migration
Important
When upgrading to 1.7.15 any space using a template that has one or more SoftType configurations for the TaskMethod
model entity must be migrated. The migration tool is included within the ShareAspace service host.
Migration steps
- Update the template configuration.
- In the data section of SoftTypes based on
TaskMethod
change the attribute id:AttributeId.TaskMethodVersion_taskMethodDefinitions
toAttributeId.AbstractVersion_viewDefinitions
.
- In the data section of SoftTypes based on
- Uninstall the previous version.
- Install 1.7.15.
- Run the
.\Eurostep.SAS.ServiceHost.exe fixup migrate-task-methods
tool (see example below). - Start ShareAspace.
- Upload new template (if there are other changes made).
- Update spaces with the new template.
Migration tool
.\Eurostep.SAS.ServiceHost.exe fixup migrate-task-methods --appSettings "C:\path\to\appsettings.json" --systemPath "C:\path\to\System\" --spaceDefinitionVersion "1.7.15.620" --spaceDefinitionId "ReferenceTemplate" --spaceDefinitionPath "C:\path\to\reference-template-fix.json" --softTypeId "Task"
Parameter | Description |
---|---|
appSettings |
Path to the application settings file of the ShareAspace service host. |
systemPath |
Path to the system folder configured for the ShareAspace service host. |
spaceDefinitionVersion |
The version of the currently deployed space template that uses the old attribute id. |
spaceDefinitionId |
The id of the currently deployed space template that uses the old attribute id. |
spaceDefinitionPath |
The path to the updated space template that uses the new attribute id. |
softTypeId |
The id of the SoftType based on the model entity TaskMethod . If there are multiple SoftType configurations run the tool once per configuration. |
Note
That the tool will update all spaces based on the template identified via the input parameters.
Model updates
- Added new select
OptionalApplicationFileSelect
. - Added new entry object
ApplicationFile
. Unique onname
,role
, andqualifier
. - Added both
WorkItem
andWorkItemHistory
toOptionalApplicationFileSelect
. - Created a shared property from
OptionalApplicationFileSelect
toApplicationFile
calledfiles
with a multiplicity of[0..*]
. - Added an optional
role: string [0..1]
property toWorkItemHistory
. - Added a literal called
ConditionalYes
to theConditionalItemState
enumeration. - Added a new property to
WorkItem
,dueDateReminder: Integer [0..1]
representing the number of seconds before the reminder notification is sent. - Added a new property to relationship
WorkItemObjectReference
,role: string [0..1]
.- Added
role
to uniqueness criteria forWorkItemObjectReference
- Added
- Added
ConnectionObject
toApplicationReferenceObjectSelect
. RequirementReference
is no longer obsolete.- Moved association called
requirementReferences
contained inRequirementDefinition
to be contained inRequirementMasterViewSelect
and rename it asrequirementAssignments
. - Renamed
RequirementReference
toRequirementAssignment
. - Removed association from
RequirementSatisfiedBy
toRequirementMasterViewReference
calledrelatedMasterViewAssignment
. - Removed association from
RequirementReferenceSelect
toRequirementMasterViewReference
calledrequirementMasterViewReferences
. - Removed relationship
RequirementMasterViewReference
. - Moved the target of the association called
requiredResourceAssignments
contained inRequiredResourceItemSelect
toRequiredResource
. - Move the target of the association called
resourceAsRealizedAssignments
contained inResourceAsRealizedItemSelect
toResourceAsRealized
. - Removed relationship
RequiredResourceAssignment
. - Removed relationship
ResourceAsRealizedAssignment
. - Added
RequiredResource
to the selectActivityElementReferenceSelect
. - Changed the name of the association between
TaskMethodVersion
andTaskMethodDefinition
.- Renamed
taskMethodDefinitions
toviewDefinitions
, redefinesviewDefinitions
fromAbstractVersion
. - Rename
definitionOf
toviewDefinitionOf
, redefinesviewDefinitionOf
fromAbstractDefinition
.
- Renamed
Other
- Fixed issues that could prevent the deletion of SoftType instances if there was a trigger definition configured for said SoftType.
- It is now possible to configure the OpenID Connect discovery refresh interval.
refreshInterval
has been added to the trusted identity provider configuration. The value is an integer that represents the number of hours between the refresh requests. The default value is 24h. - Fixed an issue that could stop the ShareAspace service host from running when sharing a large data set using a SharePackage.
- Fixed an issue that could cause files being overwritten after restart of the service host.
Tools
Read views for entries
The entry view is configured as all other views except from two aspects.
- The entry view must be configured with the port id of the array that stores the entries to present. In the example below the array with entries can be found at the root and is called
NextAssemblyUsages
. - The bindings within the view only supports binding to ports on entries within the specified array. In the example below a set of labels are configured. All binding to ports on the entry, e.g.
NextAssemblyUsages.instanceId
.
To use an entry view within the tree structure (either in the structure module and/or the object context module), the entry view must be activated. This is done on the child-links within the structure configuration where the view id is specified and the feature activated via the Show view
option.
Both the structure module and the object context module have been extended with additional "Open-in" support. In addition to opening those modules with a SoftType instance as input it is now also possible to open the module passing an entry object. Opening an entry object will display the parent, the entry view (if configured) and the child object.
acceptEntries
have been added to the acceptTypes
configuration. The entries that should have the "Open in" support must be specified in the context of a structure configuration. In the example below the entries in the NextAssemblyUsages
array of the Part
SoftType can be sent to the module. The structure with id GeneralStructure
will be used for displaying the entry relationship. For nested structure configurations (structures with groups) the full path to the correct structure must be configured. See the Document
configuration sample below.
{
...
"acceptTypes": [
{
"order": 0,
"acceptType": "Part",
"acceptEntries": [
{
"structurePath": "GeneralStructure",
"linkChildIds": [ "NextAssemblyUsages" ]
}
]
},
{
"order": 1,
"acceptType": "Document",
"acceptEntries": [
{
"structurePath": "groupStuctureId.subGroupStuctureId",
"linkChildIds": [ "documents", "subdocuments" ]
}
]
}
]
...
}
Other
- The configuration tool will now properly report an error if a containment rule in the data section of a SoftType has a state set, but there is no applicable maturity system with that state on said SoftType.
- The person quick select control has been updated so that it is possible to specify what SoftType of the PLM Person object it should filter on. Before the change one could configure the control to pick either SpaceProfile or "All Person SoftTypes". Now the selector will list SpaceProfile followed by one option for each SoftType based on Person in the configuration.
Documentation
- Updated OpenID Connect documentation to describe the
refreshInterval
configuration property. - Model documentation updated with latest model changes.
1.7.14
Web
Other
- An icon and a text is added to search results, informing the user that using the "all versions" search option could be be helpful.
- The JavaScript files
vendor.js
andcallback.js
are now minified. - It is now possible to set the message thread audience when creating message threads from an object.
- Fixed an issue in the parameterized link control that would prevent rendering the view if a parameter binding had no value.
- Fixed text overflow issue in the SoftType link list web control.
- Configurations of Containments within Containments is now working as expected.
- The person quick select control can now be configured to filter the results for a specific SoftType of the PLM object Person. Before the search would search for all Person instances, no matter their SoftType.
Core
Elastic indexing configuration
It is now possible to configure the number of characters that the full text indexer will index per file. The default value is 100 000
characters.
Configuration is done in the appsettings.json
file of the full text indexing component (default path %ProgramFiles%\Eurostep\ShareAspace\FullTextIndexing\appsettings.json
).
{
...
"IndexedCharacters": 100000
}
If the value is set to -1
the indexer will index all characters.
Warning
Indexing all characters could severely impact the performance and memory requirements of the indexing server.
Origin
The Origin capability has been extended with extra functionality. A SoftType can now be configured to expose the Origin SoftType reference ports and still keep the ShareAspace origin as a default value.
While using the API the Origin ports cannot be used, that is, the SoftType instances will be created using their default defined origin (typically ShareAspace).
One big advantage with this update is that one SoftType definition could have data instantiated mastered by different systems. e.g. some instances of the Document SoftType might be created during a collaboration process within ShareAspace. These documents would then be mastered by ShareAspace while Document instances imported from an external system could be considered mastered by that system and thus not editable by anyone from within ShareAspace.
Another difference lies within the ShareAspace importer and data mappers. A mapper component using the SoftType schemas can now better control the origin use. There are three scenarios:
- The mapper does not set any origin value - the default origin as defined in the configuration will be used when importing the data.
- The mapper uses a "keyword origin instance", there are two:
Context/origin:context
- the import will use the context origin defined on the import DataExchange job. e.g. a Job is configured to import data from SystemX, the mapper mapping information from SystemX has defined that data mastered in SystemX has the "Context" origin. The Job will replace the "Context" with the SystemX origin before importing. Because of the "Context" construct the same mapper could be used when integrating with SystemY (provided the mapping schemas are the same).Unknown/origin:unknown
- the import will make sure that any data tagged with the Origin "Unknown" already exists within the database before committing an import. e.g. When integrating with a SystemX that masters Parts, these Parts could have references to Documents mastered in SystemY. When importing data from SystemX the import could contain Parts with Document references. If in the mapper, the Documents are tagged with the "Unknown" Origin, the importer will make sure to only allow the import of there document references if the referenced documents are already in the database (loaded from SystemY).
Other
- When registering external extensions it is now possible to have them be inactive after the registration. Before the change the extensions would always be activated when registered.
- The software pre-requirements for the full text indexer components have been updated.
- Elasticsearch: Changed from
6.6.0
to6.8.16
. - Ingest attachment Plugin: Changed from
6.6.0
to6.8.16
.
- Elasticsearch: Changed from
- Fixed a race condition issue where sending multiple delete folder/file requests could cause issues with the folder/file reads in the unmanaged file area.
- Fixed an issue that would prevent the use of the SharePack share/unshare tasks from being executable after upgrading to a new service pack.
Documentation
- Updated software pre-requisites for the Full text index component.
- Updated the Full text indexing installation documentation.
- Added documentation on the system preparation tool.
- Updated the Origin configuration documentation.
1.7.13
Web
Approval request
The work item feature has been updated with functionality to invite a set of approvers to take part of a vote on a work item. The approvers can be invited by the requestor if the new work item has no recipient. If a recipient is set, the recipient can also add approvers to the work item. Approvers can comment and vote but but only the requestor/recipient can manage the over all state of the work item.
This new capability would typically be used for a work item configured as an "Approval request". This type of request, combined with an event handler listening to "Approval requests" being finalized, could be setup to create and manage approvals of PLM data.
Displaying history
It is now possible to quick-peak the history of all effectivity controlled relationships in ShareAspace web. This was previously only possible values displayed as text labels.
Other
- Changed the column header from
Name
toFile name
in the full text search result table. This in order to better indicate that it is actually the file name being displayed (i.e. not the name of the object where the file is stored). - Error messages are now displayed as a modal popup that must be closed by a user in order for the user to continue using the web application. Before the change, error messages just appeared as toast messages that could be ignored making them stack and eventually be out of context when read at a later stage.
- Added ribbon menu separator to the context object module. The separator should help separate actions applicable to the context object from actions applicable to the current selected object.
- The presentation of items in the structure under a query in the structure/context object modules is now correctly using the configured default presentation.
- Improved error handling of structure resources.
- The subject field of email signal configurations on subscription definitions is no longer limited to 50 characters.
- Added email formatter for read views. Email addresses are formatted to use a "mail to" link.
- Improved the performance of the ShareAspace web application.
- Fixed parameter binding issue for queries in the structure views.
- Fixed an issue in the query editor where adding additional terms as sort columns would prevent the UI from presenting the query result.
- Fixed an issue where configured actions for WorkItems in the WorkItem module would only appear for WorkItems of type "Approval request".
- The text block view control can now be configured to display icons. A regex is applied to the bound text value in order to evaluate what icon to display (one icon for a regex match and one for a mismatch).
- A malformed file will no longer block the preview navigation carousel. (e.g. in "ok file, not ok file, ok file" it was not possible to get to the third preview). Malformed (and unsupported file types) will be presented with the "No preview" text.
- Fixed an issue that prevented participants with the id "Participant" to be displayed correctly.
Core
History of links
It is now possible to request the history of any effectivity controlled reference. History can be read using the effectivityHistory
resource on the SoftType API.
GET /space/{spaceId}/softtype/effectivityHistory/{softTypeId}/{uuid}/{portId}?pageSize=10
Model updates
- Added
fileSize
property toDigitalFile
.fileSize
is read only and is automatically set by the system when a file is added. - Added
ConditionalItem
. - Added enumeration
ConditionalItemState
. - Added
readOn
attribute toWorkItem
andConditionalItem
. - Added optional
conditionalState
attribute (ConditionalItemState
enumeration) toWorkItem
. - Removed
IPivotSelect
fromManagedObject
, and added it toRootObject
instead. This allows application objects to use sharing/locking. MovedIPivotSelect
from the PLM namespace to the Application namespace. - Extended
PositionReferenceSelect
withProject
andContract
. - Added the following PLM objects to
ApprovalReferenceSelect
:Organization
,Person
,Position
,ViewDefinitionHierarchyReference
,CaseHierarchy
,ConditionHierarchy
,ContractHierarchy
,GeneralClassHierarchy
,ManagedResourceHierarchy
,ObservationHierarchy
,PlanDefinitionHierarchy
,ProductConceptHierarchicalRelationship
,ProductConfigurationHierarchicalRelationship
,ProjectHierarchy
,ResourceItemHierarchy
,ScheduleDefinitionHierarchy
,StateDefinitionHierarchy
,TaskMethodDefinitionHierarchicalRelationship
,VerificationHierarchy
,ActivityHappeningReference
,AllowedUnit
,AnalysisReference
,BreakdownContext
,BreakdownOf
,CaseTrigger
,CaseConsequence
,CollectionReference
,ConditionParameter
,ManagedResourceRelationship
,ObservationConsequence
,PerformedActivityReference
,PlanEntryItemReference
,PlanSubjectReference
,PositionReference
,ReferenceDataSourceReference
,ReferencedProductConfigurationOfConcept
,ReferencedTargetMarket
,RequiredResourceRelationship
,RequirementSatisfiedBy
,ResourceItemRealization
,ScheduleEntryItemReference
,ScheduleSubjectReference
,SpecifiedUsageOccurrence
,StateDefinitionRelationship
,TaskInvocation
,TaskObjectiveReference
,TracingRelationship
,ValidatedItemReference
,VerificationReference
.
Other
- The configured token expiration time for configured trusted extensions is now properly applied when tokens are issued.
TaskMethodVersion
/TaskMethodDefinition
can now be shared in the same way as other MVD objects are shared.- Applicability filtering now correctly excludes applicability on version entries and definition entries. Before this change the applicability filter would not only apply to a SoftType reference but also to the end item of the reference (definition/version).
- Fixed an issue that would limit the maximum number of allowed DataExchange jobs at ~30000. There is no longer an upper limit on the number of scheduled/executed jobs.
- Improved performance of the file vault chunk merger tool introduced in 1.7.12.
- Fixed an issue in the structure navigation that could prevent children from being returned even if the structure configuration was correct.
- Updated the TrustedIdentityProvider API to support all attributes as introduced in 1.7.10.
- Attribute
audience
is now optional. jwksUri
andoverrideIssuer
added as optional attributes.
- Attribute
Tools
History of links
It is now possible to activate the history quick access functionality on the "SoftType link" control and the "SoftType link list" control.
See example in the web section.
Criteria configurations
Criteria configurations are now supporting the combination of AND
/OR
operators where previously all criteria configuration was AND
operated.
Affected criteria configurations:
- Global presentation icon criteria.
- Module action criteria configurations:
- External criteria.
- Selected object criteria.
- Context object criteria.
Other
- Space templates are now normalized on save in the configuration tool.
Documentation
- Added 1.7.13 changelog.
- Added 1.7.13 known issues list.
- Model documentation regenerated to include model updates.
- Updated query configuration documentation to include NOT-inner-group documentation.
- Fixed schema documentation for TrustedIdentityProvider,
audience
is optional.
1.7.12
Web
SoftType instance specific icons
ShareAspace Web can now evaluate SoftType instance specific criteria or instance specific paths for displaying instance specific icons. Some examples:
- An "Organization" SoftType could now be configured with a logotype attribute. This attribute could store the path to the logotype image file within the Space. When ShareAspace Web presents instances of the Organization SoftType each instance could be uniquely presented with the Organization's logotype rather than the default Organization icon.
- A criteria could be defined so that instances of the "Document" SoftType that are in a "Frozen state" are presented with a specific "Frozen document" icon instead of the default configured document icon.
Removed hardcoded documentation links
Some documentation links on the collection administration pages in the ShareAspace web application used to be hardcoded. The hardcoded links have been replaced with configuration values in the ShareAspace web configuration file config.json
.
config.json
{
...
"documentationLinks": {
"about": "https://docs.shareaspace.com/v1-7/sas/administration.html#about",
"alert": "https://docs.shareaspace.com/v1-7/sas/administration.html#alerts",
"application": "https://docs.shareaspace.com/v1-7/sas/administration.html#applications",
"extensions": "https://docs.shareaspace.com/v1-7/features/external-extensions/user-interface.html",
"langauges": "https://docs.shareaspace.com/v1-7/sas/administration.html#languages",
"license": "https://docs.shareaspace.com/v1-7/sas/administration.html#licence",
"monitoring": "https://docs.shareaspace.com/v1-7/sas/administration.html#monitoring",
"news": "https://docs.shareaspace.com/v1-7/sas/administration.html#news",
"spaces": "https://docs.shareaspace.com/v1-7/sas/administration.html#spaces",
"templates": "https://docs.shareaspace.com/v1-7/sas/administration.html#templates",
"files": "https://docs.shareaspace.com/v1-7/features/file-management/user-interface.html"
}
...
}
Other
- Index terms used when defining queries can now be configured with user friendly labels.
- A user's role information is now correctly presented when following a deep link into ShareAspace web.
- The activation toggle for personal subscriptions within the personal subscription module is now properly styled based on the active/inactive status.
- Configured double-click actions within configured instances of the generic module are now working as expected. Before the fix, double-clicking an item in a search result would not trigger the double-click action.
- The presentation of the context object in the context object module will no longer get cut.
- Improved the performance of the model browser module.
- Fixed issue that would prevent the copy action when creating a new version of an object if the version being copied from was locked.
- Improved performance of textbox input.
Core
Listing items that have been soft-deleted
When soft-deleting a Unit of Information (UoI) that UoI will no longer appear in any of the configured SoftType indexes or in the id-name-index. In order to list items that are soft-deleted a new system index SoftDeletedObjectIndex
has been introduced. When a UoI is soft-deleted it will automatically be added to this new index.
The index is similar to the id-name-index, containing the following terms.
Term | Term type | Description |
---|---|---|
masterOId |
ObjectId |
Database id of the root UoI. |
softType |
String |
Id of the SoftType definitions that the UoI was tagged as. |
type |
Int32 |
The internal model type for the UoI root. |
deletionDate |
DateTime |
Date and time of the delete transaction. |
owningParticipantId |
String |
Id of the participant that owned the UoI before deletion. |
id |
String[] |
All identifier text values. |
idContext |
String[] |
All id context ids for the identifiers. |
name |
String[] |
All name text values. |
nameContext |
String[] |
All id context ids for the names. |
versionId |
String[] |
All version id text values. |
versionContext |
String[] |
All version id context ids for the version identifiers. |
Queries can be configured to use the system index in the same way queries can be defined for the system id-name-index.
Automatic malware scanning of files in file vault
Starting from 1.7.12, files in the ShareAspace file vault will be stored as a single chunks instead of the previous multi chunk approach. The single chunk file can automatically be scanned by any anti virus software. Any infected files can be handled by removal or quarantining.
Warning
After upgrading an existing installation to 1.7.12, chunked files in the ShareAspace file vault must be merged to single chunks before starting the ShareAspace service host.
This is done by running the new fixup
option on the service host executable.
.\Eurostep.SAS.ServiceHost.exe fixup merge-chunks
Once run the ShareAspace host can be started as normal.
Other
- Performance enhancements made on the PLM API:
- The PLM API will no longer resolve references automatically.
- HTTP caching enabled.
- Added new route for resolving entries.
GET: /plm/All/{objectId}/{resolveDept}
- Added new PLM route for resolving entries including default presentation of resolves.
GET: plm/All/{objectId}/{resolveDept}/{resolveExternalPresentation}
- Fixed a validation rule that would prevent the creation of spaces if a SoftType reference port had multiple implicit references configured. Multiple implicit references are allowed as long as they are referring to separate SoftTypes. Two implicit references to the same SoftType is not allowed.
- Fixed an issue in the indexer that would prevent proper build of indexes when indexing ports that had an id starting with
created
. - Improved performance of the GET information filter route.
- The Event logger extension is now working correctly again. A security update introduced in 1.7.11 prevented the extension from properly register.
- The full text search will now return the exact version of an object where the file matching the search result was found. Before the latest version would always be returned, even if the search only matched a text in a file of a previous version.
- Creating a new version will now properly update the file preview and the full text index.
- Searching for space profiles now properly applies the awareness access check. Users from one Participant can only see users from another Participant if aware access is setup between the Participants.
- The Excel output from a query result will now wrap the content of cells if the content is wider than the max width of a column.
- When executing a SoftType read with the effectivity filtering turned off ShareAspace will now always return effectivity controlled data as arrays even if they are configured with
0...1
/1...1
cardinality. Before this change the0...1
/1...1
cardinality would be kept if there was only one value in the array. - CoOwner on Work items is now only set if the recipient belongs to a different Participant than the requestor. Before the CoOwner was always set, forcing the requestor to always have the
GrantDetailedAccess
access modifier. - DateTime queries now support the
>=
,<=
, and=
operators. Note: since the introduction ofDateTime
query support in 1.7.10, the behavior has changed.Date
andDateTime
queries are separated. If the time portion is provided as input it will be used as part of the query, before the time portion was just ignored.
Tools
Configurable target module
The target module for object links created using the markdown editor in ShareAspace web can now be configured in the space template.
SoftType instance specific icons
Introduced in 1.7.12 is the ability to configure SoftType icons for SoftType instances by defining rules for different icons to be used.
Configuring icons can be done using the "Global presentation" section of the configuration tool.
There are three types of icon configurations:
Type | Description |
---|---|
overwrite |
The overwrite option will overwrite the icon configuration specified for a SoftType in the SoftType/Settings/Icon section. The "Relative Path" describes where in the Space file vault the icon can be found. |
criteria |
The criteria option will evaluate a defined criteria per SoftType instance. In the example above, if instances of type "Document" has a value "Frozen" on port path status.value use the icon found at "Relative Path". |
portBinding |
The port binding option will read the relative path for the icon to be used from a port path on the SoftType instance. In the example above, instances of the "Organization" SoftType can have an image path stored on the instance itself. |
Index term presentation
It is now possible to configure labels for index terms. These labels will be used for presenting the index terms in the query expression user interface. They will also be used as default values for query column headers. If no label is set, ShareAspace web will use the term id for presentation as before this change.
Index term labels can be configured for multiple languages.
Other
- Having multiple select with the same id in a structure configuration will no longer be reported as an error by the configuration tool.
- Fixed an issue in the configuration tool that would prevent the use of a custom namespace when generating a SoftType toolbox.
Documentation
- Updated installation and backup scripts.
- Removed references to In-series components.
- Added TLS port for SMTP extension.
- Updated documentation on the reverse proxy
appsettings.json
config file.
1.7.11
Web
Personal access token UI
ShareAspace web has been updated with functionality for generating personal access tokens. See the core section for more information on personal access tokens.
Lock indicator and lock history
An object lock indicator has been added to the read views in ShareAspace web. If an object is locked the icon will show up. Clicking the lock icon will display information on who holds the current lock together with the full lock history.
Information filter settings update
The "global information settings" accessible via "Space settings" in the user menu has been updated. From now it is only possible to set the latest version filtering as a global setting.
The following settings are removed:
- Effectivity filter
- Application context filter
- Identifier context filter
- Favourites role
- Applicability filter
Application context filter and identifier filter are now only available in the model browser. Favourites role filter is no longer applicable (favourites are no longer filtered based on role).
Effectivity filter, Latest version filter, and Applicability filter are all available (if activated in configuration) in the structure module and the object context module.
In addition to this a new filtering feature has been introduced in the read views. This allow for "local" filtering of said read view (e.g. making it possible to view historical data).
Other
- After initializing a space create/update operation users will be returned to the space list. From the space list the progress of the space create/update will be displayed. The space status will update automatically.
- Custom labels for create forms are now displayed. Before the title would always be "New".
- Fixed styling of headers in object context module.
- Error messages for files containing
_
are now displayed correctly. - Job queue prioritization form is now properly displaying scheduled jobs.
Core
Request limits
The ShareAspace REST API has been updated to include a configurable user based request limiter. The request limiter is using the Sliding window algorithm and is by default configured to 2000
requests over 5min
per user.
If a user hits this limit either by requests executed directly by the user or indirectly by an extension acting on behalf of the user the ShareAspace API will respond with the status code 429
, Too Many Requests
.
The request limit is optionally configurable.
It can be set in the collection bootstrap file collection_bootstrap.json
.
"requestRatePolicy": {
"samplingWindowSize": 5,
"requestLimit": 2000
}
The request limit can also be changed via the administration API.
GET /admin/reqeustRatePolicy HTTP/1.1
Accept: application/json
Authorization: Basic bX...
PUT /admin/reqeustRatePolicy HTTP/1.1
Content-Type: application/json
Accept: application/json
Authorization: Basic bX...
SAs-UOIVersion: 3
Note
The ShareAspace Host Service must be restarted for an updated configuration to take effect.
Personal access tokens
It is now possible for users to generate personal access tokens (PAT). These tokens can be used for accessing the ShareAspace REST APIs, impersonating the users that created the token. These tokens can be used instead of using the JWT access tokens retrieved via OAuth 2.0 flows.
Typically the personal access tokens would be used for integration scenarios or when connecting to ShareAspace with external tools that do not allow for user interactive OAuth 2.0 authorization/authentication.
- A personal access token has a set time limit. Once the time limit is passed the token can no longer be used. An email will be sent out to the user that created the token when the token is 2 days away from expiring.
- An issued personal access token can be revoked at any time by the user that created it.
- An issued personal access token can have its time limit modified.
- When a personal access token is created an email notification will be sent to the user creating the token.
- The personal access token is passed as a
Basic
Authorization header when used with the API.- The value of the Authorization header is "Basic {base64 encoded string}. The base 64 encoded string should be the encoding of: ":{pat}" (e.g. ":xyzWEa...").
- When bootstrapping a collection a PAT will be created for the collection administrator. The PAT will be provided by the collection bootstrap tool.
Note
ShareAspace will only provide the PAT value when it is first created. The PAT is not stored in ShareAspace so there is no way of getting the value for a specific PAT at a later time.
Important
The PAT should be kept secret and handled with care.
PowerShell example, PAT used for getting the default information filter settings via the API
$pat = "xyzWEa..."
$authHeader = @{
"Authorization" = ("Basic", [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(("", $pat -join ":"))) -join " ")
}
$requestUri = "https://xyz.eurostep.com/api/space/myspace/informationFilter"
$response = Invoke-RestMethod -Method Get -Uri $requestUri -ContentType "application/json" -Headers $authHeader
From email address for token about to expire
The from email address used for emails that are sent from the system regarding Personal Access Tokens can be added in the collection bootstrap file.
For systems that are upgrading, and where performing a new collection bootstrap is not an option, two new Collection API routes for creating and editing the configuration parameter are added.
Personal Access Token collection setting
{
...
"personalAccessToken": {
"fromAddress": "_FROM_ADDRESS_"
}
...
}
Create the Personal Access Token collection setting
HTTP POST /collection/setting/{id}
where {id}
in this case is "personalAccessToken".
Request body:
{
"fromAddress": "_FROM_ADDRESS_"
}
Update the Personal Access Token collection setting
HTTP PUT /collection/setting/{id}
where {id}
in this case is "personalAccessToken".
Request body:
{
"fromAddress": "_FROM_ADDRESS_"
}
Lock history
A new API route has been added for getting the lock status and lock history for a SoftType instance.
GET api/space/{spaceId}/lockInformation/{objectId}
Parameter | Description |
---|---|
spaceId |
The id of the space. |
objectId |
The database id of the SoftType instance |
Example response:
{
isLocked: true, //true/false
lockBy: {
$oid: "123" //database id of the space profile holding the lock
},
lockedHistory: [
{
start: "2021-01-01",
end: "2021-01-01",
lockedBy: {
$oid: "123" //database id of the space profile that held the lock
}
}
]
}
Asynchronous space create/update
The creation and update of spaces has been changed from a synchronous operation to an asynchronous operation. This means that the API will respond directly on a space create/update request. The actual creation/update will be scheduled as a background work in the system. It is possible to check the status of a space.
Status | Description |
---|---|
NoLicense |
There is no license for the space. |
Active |
The space is active and can be used. |
InvalidLicense |
The license for the space is invalid. |
GracePeriod |
The space has exceeded the current license and has entered the grace period. Once the grace period is over (and no action has been taken) the space status is changed to InvalidLicense . |
CreateInProgress |
The space is being created and is not accessible. If the creation is successful the space status will change to Active . If the space creation fails the space status will change to CreateFailed . |
UpdateInProgress |
The space is being updated and is not accessible. If the update is successful the space status will change to Active . If the space update fails the space status will change to UpdateFailed . |
CreateFailed |
The space creation has failed. |
UpdateFailed |
The space update has failed. |
The space create/update resources will return:
- the HTTP response code
202
(Accepted) on success. - a status endpoint URL in
location
response header. - a response body containing the hyperlink to the space being created.
Response header:
Location: https://{FQDN}/api/collection/backgroundWork/c1d23a89800145ef86dcbeef451819b9
Response body:
{
"href": "https://{FQDN}/api/space/space1"
}
The location header can be used for checking the status of the background work (space create/update).
Status endpoint request:
GET https://{FQDN}/api/collection/backgroundWork/c1d23a89800145ef86dcbeef451819b9
{
"id": "c1d23a89800145ef86dcbeef451819b9",
"status": "Running"
}
Note
That the status of the space is different from the background work status. The space status can be retrieved by requesting a list of all spaces at:
GET /api/collection/space
Multiple connection port support in SoftType references
The SoftType reference configuration is extended with support for allowing one reference to use multiple connection ports within a referenced SoftType.
Before this change one SoftType reference could only be configured to reference one connection port within a referenced SoftType.
Example, old approach
To configure a "Change Notice" to reference Part information as "Items affected by the change" a SoftType reference port on the "Change Notice" would be configured to reference a "Part" SoftType. For the reference a configurator would pick where the reference should point at (master connection, version connection, or any of the definition connections).
If there was a need to also refer to entries within a Part for "Items affected by the change" a new port with separate uniqueness had to be configured in order to have the SoftType reference port to the Part use the connection port on the entry within a part (e.g. NextAssemblyUsage).
Example, new approach
With the new functionality the "Change Notice" would only need one port for "Items affected by the change". The Part can be configured as a reference twice, once for the master/version/definition connection, and once for the entry connection.
Limitations
- A reference to a master/version/definition connection is called "implicit reference". One SoftType reference can only be configured with one implicit reference per target SoftType.
- A reference to an entry within a SoftType is called "explicit reference". One SoftType reference can have multiple explicit references per target SoftType.
Implicit vs. explicit
- When instantiating an "implicit references" reference any databased id for master, version, or definition can be passed for the target object. The system will pick the correct connection based on the configuration.
- When instantiating an "explicit reference" reference the database id of the specific entry within the referenced SoftType must be provided.
Batch sharing
It is now possible to share and un-share multiple SharePackages within one changeset the newly introduced batch resource on the sharePackDxAction
API.
PUT api/space/{spaceId}/sharePackDxAction/batch/{action}?sharePackOids={oid1},{oid2}
where the action can be share
or revoke
.
Warning
When upgrading to 1.7.11, spaces must be updated with a new version of the space template where the out-of-the-box DataExchange jobs used for share/un-share (SharePackShareJob
and SharePackRevokeJob
) are reconfigured.
Other
- The
Access-Control-Expose-Headers
is now returned in CORS requests. This allows for cross domain requests do retrieve ShareAspace specific response headers (likeSAs-UOIVersion
). - Fixed HAETOAS links to always use
https
. SpaceDefinition
now has HAETOAS linkgetLicenses
.- The
SpaceDefinition
URL returned in thelocation
header now properly includes the template version in the URL. - Updating a UoI that contains files will now properly re-index the files when using the full text index extension.
- Added support for an already shared SharePack to be shared again. If an already shared SharePack is shared again, any additions to the content of the package (including structure crawl) since the previous share will be shared. This in order to avoid having to do an un-share followed by a share request when data should be "re-shared".
- Fixed issue that would prevent shutdown of the ShareAspace host if multiple DataExchange jobs were queued. Read more about the shutdown/startup process here.
- Added automatic sharing of Work items. When a recipient is set on a Work item the Work item will automatically be shared (including edit access) with the Participant that the recipient user belongs to. The edit access is achieved by adding the Participant to the "coOwner" list of the Work item.
- Using the
DeleteOnSuccess
digital file retention policy on a DataExchange job will now correctly remove the affected files from the source folder (like user folder, participant folder, or space folder in the unmanaged file areas). - Introduced a new permission based system used in order for external extensions to request ShareAspace API keys. These keys are rotated every 24 hours. Read more about these updates following links from the documentation section.
Tools
Block/Allow list for file types
It is now possible to configure a list of file extensions that should be either allowed or blocked. The configuration is done within a space template. Only one mode (allowed/blocked) can be used.
File extensions are added using a comma ,
separated string.
- Allowed - The space will only allow for upload of files with a file extension matching the configured string.
- Blocked - The space will block the upload of files with a file extension found in the configured string.
Work item read views
It is now possible to control the configuration of read views for Work items.
Warning
When upgrading to 1.7.11, spaces must be updated with a space template that has read views configured for all Work items. Also, Work item modules must have those read views activated.
Client group configuration
It is now possible to group the module configurations within the defined groups (1). To add a module to a group press the "manage groups" button (2). Pick modules to be placed in the group from the list (3).
Note
Placing a module within a group as described above will override the group defined on the module configuration itself. For backwards compatibility the group defined on modules will still work as before as long as the module is not placed within a group.
Other
- Removed incorrect error reporting in the configuration tool. Using groupBy in an index configuration was reported as an error.
- Fixed issue in configuration tool that would allow multiple languages set as the default language. Only one language can be default.
- When generating a SoftType toolbox, references that can reference multiple SoftTypes will now have an interface generated to reflect this. Before this had to be added manually.
- The markdown control used for configured SoftType views have been extended with a read-only mode.
Documentation
- Updated software pre-requirements. Now using ASP.NET Core 5.0 Runtime for components hosted in Microsoft IIS.
- Corrected the recommended elastic version in software pre-requirements and in Full text indexing installation.
- Updated Batch API documentation to include SharePack actions as supported batch operations.
- Updated event logger installation documentation. Admin API key is no longer required in the configuration file. The event logger extension will instead get the admin API key from ShareAspace.
- Updated administration user guide for external extensions to include information about API key permissions.
- Updated developer documentation on external extensions to include information about API key permissions.
- Added clarification on ShareAspace Host shutdown/startup process.
- Changed the effectivity documentation to reflect that it is possible to provide effectivity dates when running in live mode.
- Added documentation on the new ShareAspace host file logger.
1.7.10
Web
Advanced select control
A new advanced search control for reference selection has been added to ShareAspace web. It extends the current capability for the quick select of objects by enabling:
- Quick access to objects marked as favourites.
- An advanced option that allows for running a set of predefined queries. This advanced option also allows for:
- The user to alter the query at runtime from within the form.
- Navigate from a search result according to a defined structure configuration.
- Selection of either "end items" or the selection and presentation of entry objects within a structure. (e.g. the selection of Part definitions or the selection of "NextAssemblyUsage" references. )
Note
In 1.7.10
the ShareAspace SoftType configuration only allows for the selection of either child objects or the selection of the references themselves for one specified SoftType reference port. i.e. the new control cannot be run in the combined mode of child object selection and reference selection. In a coming release the SoftType engine will have support for both child object selection and reference selection on the same reference port. This additional feature will allow the new "advanced search control" to run in the combined mode.
Other
- Fixed styling issue in the licence administration page.
- Full text search is now supported as an advanced search option.
- Fixed issue in paging of query results that would prevent navigating to all query result pages using ShareAspace web.
- Added date/time picker support in query configuration.
- Fixed issue that could prevent the upload of a file if that file had already been uploaded and then deleted in the unmanaged file vault.
- Fixed issue that would trigger a non-valid warning message when going from multi selection to single selection in a query result and at the same time having external validators configured for ribbon actions.
- Fixed issue in multi edit forms. If one of the objects had an existing value for a reference that was multi-editable and the other objects did not have a value the update operation would fail due to an invalid patch-request.
Core
Added support for Date/Time query expressions
Up until now the query engine in ShareAspace has only allowed operations on full days. Hence, it has been possible to configure queries like "All documents created on this day", "All documents created in the last 5 days" etc. With the addition of Date/Time support it is now also possible to configure queries like "All documents created before 13:00 today" etc.
Supported operators
Precision | > | >= | < | <= | = | != |
---|---|---|---|---|---|---|
Date | ⚫ | ⚫ | ⚫ | ⚫ | ⚫ | ⚫ |
Date/Time | ⚫ | ⚫ |
Space participant
The concept of a "Space" participant is introduced in ShareAspace 1.7.10. The Space participant is intended to store reference data, such as units and properties, that is accessible by everyone within the space. The Space participant will always have the id Space. Any participant created in the space, at space creation or at runtime, will automatically be given read access to the Space participant.
Type filtering in full text search
The full text search now allows for filtering according to SoftType in addition to the phrase search string. This feature is introduced since many SoftTypes could have files contained within them (e.g. both documents and parts might have files). With this update it is now possible for searches like: "Find all Parts
that contains a file with the phrase lorem ipsum
".
Note
To leverage this new feature, a full rebuild of the full text indexing after installing the 1.7.10 service pack is required.
Improved error in DataExchange summary logs
The verbosity of the DataExchange error summary logs has been significantly improved. Previously the verbose error messages could only be found in the detailed log files.
Prior to this update, a uniqueness collision would in the summary be reported as:
Global uniqueness collision for Document
With the updated approach, a uniqueness collision will be reported with details on the affected object like:
Global uniqueness collision between ([(DesignPart) (ID: Partner-ID01 CONTEXT: Partner) (ID: Supplier-ID01 CONTEXT: Supplier)]) and existing ([(DesignPart) (ID: OEM-ID01 CONTEXT: OEM) (ID: Partner-ID01 CONTEXT: Partner) (ID: Supplier-ID01 CONTEXT: Supplier)])
OpenIdConnect updates
- Added Boolean configuration parameter
ignoreIdTokenToAccessToken
to ShareAspace webweb.config
. If set to true, theaccess_token
issued by the identity provider will be used as the ShareAspaceaccess_token
. - Added
jwksUri
andoverrideIssuer
configuration parameters to thetrustedIdentityProvider
configuration.
{
"trustedIdentityProviders": [
{
"id": "myid",
"issuerUrl": "https://myid.abc.com/",
"jwksUri": "https://myid.abc/ext/oauth/jwks",
"overrideIssuer": "https://myid.abc/"
}
]
}
jwksUri
(optional) is used for configuring an additional source of public keys for validating an issued access_token
. This source will be used together with the key source provided in the metadata exchange.
overrideIssuer
(optional) is used for providing an override value on what issuer the access_token
should be validated against.
Other
- ShareAspace components updated to use .NET 5. This has no impact on any pre-requisites since the .NET version is bundled with the ShareAspace installation packages.
- Updated Libre Office version to 7.1.0 for the file preview extension.
- Importing data with the Space as the owner revoked. Reference data should instead be owned by the newly introduced Space Participant.
- Fixed issue that could start the next DX job in queue before a canceled job had been completely removed from the queue.
- Added administration API route for downloading ShareAspace log files.
- New route:
GET admin/logging/download
. Returns a zip package with the log files. Note that this route requires the use of an admin API key.
- New route:
Tools
Advanced select control
The configuration tool has been updated to allow for the configuration of the newly introduced "Advanced search control".
Setting | Required | Description |
---|---|---|
Label | Yes | Binding for the label setting used when presenting the control. |
Description | No | Binding for the control description. |
Binding | Yes | The array or object that holds the reference(s) selected by the control. |
Structures | No | A list of references to structure configurations. If a query result items has children according to a defined structure configuration, it will be possible to navigate that structure for a result item. |
Advanced queries | Yes | A selection of queries that should be enabled to the end user within the control. "Searchable query id" configured in the right hand side pane controls the query for the quick select feature of the control. |
Value property | Yes | The schema property on the "Binding" that is the external reference. |
Disabled | No | Set to true when control is used in a read view (or when editing should no longer be allowed). |
Read linking | No | Required if entry selection is used. For entry selection "Read linking" is required for being able to render a presentation of the entry selection. For the actual entry selection configuration this is controlled in the structure configuration. |
Favourites
By default all favourites will be shown in the selection list, this might however not be ideal since a reference could be limited to a specific SoftType (or a set of defined SoftTypes). To filter on the types of the favourties the "Searchable SoftTypes Ids" configuration is used. e.g. a reference only support the "Document" SoftType, setting "Document" in "Searchable SoftType Ids" will filter the favourites list to only show SoftTypes of type "Document".
Structures
If one structure has been configured for the control, any query result item matching that structure (that also has children according to that structure definition) will enable a "Sub-items" navigation button. Clicking this button will switch from the query result into the structure breakdown. If more than one structure is configured and a query result item matches more than one structure, clicking the "sub-items" button will allow the end user to select what structure to break down into.
With entry selection:
Once in a structure breakdown, it is possible to have the configuration allowing the end user to pick a "structure reference", e.g. instead of using the "Add item" button to select the actual child item, using the "Add reference" button will allow the end user to select the reference entry (like a NextAssemblyUsage or a DocumentReference).
In the sample below the instance (NextAssemblyUsage with id 10
, parent 99373-9378
, and child 34553-004
has been selected).
In order to enable this type of entry selection, the structure configuration must be updated with a description on how to present the entry and a configuration that tells ShareAspace where to find the database id for that reference.
This is done by clicking the cog wheel button for the structure navigation port configuration. In the example above. The children
array on SoftType Part
in the PartStructure
is configured. For presentation the id of the reference is used. This could have been combined to include additional information like quantity etc. (Id: {id}, Qty: {quantity.value}
). Note that the port references in the presentation string configuration starts the navigation from the entry in question (i.e. not the SoftType instance).
For the "Oid Port" childOid
is selected. In this example, this is the port that exposes the database id of the entry.
Advanced queries
One or more advanced queries can be configured for the control. The queries configured will show up as options for the user using the advanced search control. In this example, two queries are defined, Part advanced search
and Document advanced search
.
Read linking
The read linking configuration is similar to the entry configuration on the structures but this configuration is required in order for the result presentation of the advanced search.
Each SoftType that can have entries selected from within that SoftType must be configured. This is done by clicking the "add link" button. Then the SoftType, the SoftType output schema, child value port, entry database id (Reference Oid Port), and entry presentation format (Format) is configured. Once configured click "add child".
Documentation
- Added changelog.
- Updated relevant areas with updates described in changelog.
1.7.9
Web
Easier access to query configuration
Introduced in 1.7.9 is a quicker access to changing queries on the fly. It should now also be easier to manage different queries.
The new support includes:
- Changing the query definition directly from within the modules using queries.
- Changes to query expressions can be executed without having to save the query.
- Direct access to saving or copying (Save as) directly from within the module.
- Direct access to the advanced configuration where it is possible to, amongst other things, directly changing the columns of a query.
Other
- Default queries in modules will now automatically be executed even if the query is requiring input parameters.
- Updates to ShareAspace web translation files. Adding in missing translation keys.
- Titles in create and edit views are now using sentence case.
- File preview of encrypted and password protected files will no longer be stuck at the
In progress
status. Instead an error toast will be displayed stating that previewing is not possible. - Fixed issue that prevented the download of DataExchange job output via the DataExchange module.
- Fixed issue that prevented assigning a recipient to a promotion requests created via the maturity system module.
- When the total number of hits in a query exceed 1000 hits the user interface will now correctly state "1000+" hits (for the first page). For following pages it will say "{1000+page#*pageSize}+".
- Fixed issue that prevented scrolling of the favourites list on the space homepage.
- Fixed issue preventing finding users when creating a request approval work item via the maturity system module.
- Search now also support finding users missing first name and last name.
- Fixed caching issue in the file preview. If a file was replaced (same filename) the file preview would display the preview of the old file until next logon.
Core
Failover
The failover/redundancy for ShareAspace has been changed to use a "transfer of log" approach. The new pattern requires a minimum of two ShareAspace host nodes, one primary node and one secondary node. Multiple secondary nodes are supported. This new failover pattern is now the recommended approach for failover, replacing the previous RAFT cluster approach.
Other
- A new contract has been added to the ShareAspace extensions. This new contract allows for a common pattern for having an external service providing name/value lists. Initially this is used for defining value lists for query input parameters, but the contract is intended to replace other external name/value lookups in the future.
- DataExchange jobs on a queue will now properly stay in the queued status if the queue is stopped due to a DataExchange job with
ReactiveStop
set to true fails. - Applicability is no longer part of the uniqueness for objects based on
ManagedObject
,AbstractVersion
, andAbstractDefinition
. - Imports configured to run in live mode are now properly using the live date/time for when the job is executed. Before it used the date/time for when the job was scheduled. This issue prevented triggers configured to compare previous and current values to fire events.
- Total number of hits in queries will now return
-1
if the total number of hits exceed 1000. - Reactivated the logging of index operations to the Windows event logger.
Documentation
- The documentation structure has been reworked.
- ShareAspace model moved to its own section.
- Features section introduced that groups together concept documentation, configuration documentation, examples, and limitations under each feature.
- Introduction section introduced containing the core concepts of the ShareAspace platform.
- Added documentation on the new failover support, including:
- Overview architecture.
- Updated installation instructions for ReverseProxy and ShareAspace Host.
- Updated host bootstrap and collection bootstrap instructions.
- Updated query user interface documentation to describe the new user experience for managing, configuring, and executing queries.
- Documented the new name/value ShareAspace Extension contract.
1.7.8
Web
New personal subscription module
Introducing a more user friendly way of managing your personal subscriptions. In this new module end users can quickly activate subscriptions, configure filtering for the subscriptions as well as copying existing configurations.
The more in depth event and subscription configuration module is still available but it is intended for space administrators only.
Extended favourites functionality
It is now possible to do a multi-select within modules and mark all of the selected objects as favourites. It is now also possible to pin favourites in the favourites list. Pinning a favourite makes it stick at the top of the list when doing filtering of the other favourites.
OAuth 2.0
ShareAspace web has dropped the support for the implicit OAuth 2.0 flow. ShareAspace web now only supports code flow with "Proof Key for Code Exchange" (PKCE).
Warning
This change require updates to the config.json
file for ShareAspace web. See the documentation section below.
Dropped browser support
In ShareAspace 1.7.8, Microsoft Internet Explorer 11 is no longer supported. This is due to the security update of switching from OAuth 2.0 implicit flow to code flow with PKCE.
Other
- Fixed issue where labels were not showing when using the optional (
?
) parameter in structure filter expressions. - Pressing enter after typing a value in the query column filter will no longer clear out the filter value.
- Fixed issues with the file preview control using third party preview extension. Before the navigation buttons and presentation labels were not working as expected.
- The placeholder
_WEBCLIENTTOKENURL_
inweb.config
has been replaced with_TOKENENDPOINT_
since these values are the same. - Added support for
.svg
files to be used as space logotypes. - Introduced new content security policy in ShareAspace web.
- Labels and text in ShareAspace web has been updated to use sentence case.
Core
Stricter CORS
The CORS implementation in the ShareAspace API has been further restricted.
Cross domain calls are only allowed for:
- The following registered extensions:
- Nova extension - ExternalAction
- Nova extension - ExternalView
- Trusted external endpoint
- ShareAspace Web when deployed on separate server from the ShareAspace reverse proxy (ShareAspace API).
Warning
To allow ShareAspace web to do cross domain calls to the ShareAspace API. The ShareAspace web URL must be registered on the Endpoint
of the OAuth 2.0 application configuration.
Example:
Enabling the personal subscription module
To activate the personal subscription module on an existing installation the modules
section of the collection bootstrap must be updated with the new module.
{
"moduleType": "Ordinary",
"id": "PersonalSubscriptions",
"name": "PersonalSubscriptions"
},
Other
- Improved performance when sharing a SharePack configured to use a structure definition for crawling data to be shared.
- It is now possible to use a sub entry
TypeId
while using the PLM API. Before it was only possible to use the root UOITypeId
resulting in attributes on sub entries being inaccessible using the PLM API. - Added "Proof Key for Code Exchange" (PKCE) support for OAuth 2.0 code flow using the ShareAspace Authorization server (see documentation section below).
- The API will now return a deprecation response header (
Deprecation: true
) when using API routes marked as obsolete (i.e. routes that will be removed in the next major release). - Validating allowed origins is now case insensitive.
- Fixed issue that would throw
UnableToValidateDataAgainstSchemaException
when using the information filter settings configured on a DataExchange job. - The copy version feature is now working correctly again. Before no version was created if an up versioning operation was combined with a SoftType reference update in the same patch request.
- When configuring a SoftType data section there is no longer a dependency on the ordering of configuration sections.
- Additional routes has been added to the SoftType definition resource in the API. These new routes allows for loading sections of the SoftType definition.
- The resource route for loading the full SoftType definition is deprecated.
- ShareAspace web has been updated to load segments of the SoftType definitions based on need rather than always loading the full definitions.
- The
updated
metadata field of entries within a "unit of information" (UoI) is no longer updated when updating a space with a new template. Theupdated
property will only update when the actual entry has been updated with new data.
Tools
- The configuration tool will now verify that only allowed operators (based on the type) are usable when configuring structure filters.
- The configuration tool will now validate the ports used in the select configuration.
- The model framework nuget package is now correctly including
Eurostep.SAS.Startup.dll
. - The migration tool has been updated to regenerate MD5 hashes for blob files missing the hash in the migration source.
- Added support for configuring the new personal subscription module.
Documentation
- Added documentation on the new personal subscription module.
- Added documentation on the OAuth 2.0 code flow with PCKE.
- Updated OpenId Connect documentation, including step by step guides for configuring:
- Microsoft Azure AD.
- Microsoft Azure B2C.
- Microsoft Server 2016/2019 AD FS.
- Corrected documentation on ShareAspace delete concepts.
- Updated installation documentation to reflect required changes for ShareAspace web configuration in relation to the newly introduced code flow with PKCE.
- Spelling and grammar corrections throughout the documentation.
- Updated structure of REST API reference.
1.7.7
Web
News
For a user with the "Manage space definition" access modifier it is now possible to edit the space news directly on the space home page.
Access to the space new edit is also available from the user menu.
Favourites
The favourites pane on the space start page has been reworked. The list will now show all of a users favourites, i.e. they are no longer grouped per role. A user can have a maximum of 100 favourites. It is now also possible to filter the list of favourties.
Close all tabs
By right-clicking on a tab it is now possible to close all open tabs or to close all but the selected tab.
File preview
The file preview control now supports previewing files from multiple sources. Before, one preview control per source was required.
Send objects to module form
It is now possible to configure actions that makes it possible to send a selected object to the create form of another object. The selected object will automatically be populated in the new create form.
Other
- Fixed issue where it was not possible to use the breadcrumb to navigate folders in files module.
- Improved error message when using a deep-link to an object that does not exist or where the current user has no access.
- If a consent screen is configured for a space, this consent will now always show up when a user access a space.
- Fixed issue where it was not possible to download files from the preview window.
Core
SharePack sharing updates
The sharing and un-sharing of SharePackages has been changed to run on a background worker instead of being executed synchronously on the share/un-share API calls. This will allow for better visibility of the share/unshare status of larger data sets. SharePackages are queued and executed as DataExchange jobs. This means that shares can be handled in a queued manner and that an ongoing share/un-share can be aborted while the sharing/un-sharing is running.
To show the sharing progress the SharePacks have been extended with an additional status, "Sharing status" (in addition to the existing "Share status").
Share status:
- Shared / Not shared
Sharing status:
- Queued - waiting to be shared/un-shared
- Running - sharing/un-sharing
- Committing - sharing/un-sharing
- Completed - share/un-share information committed to database. The new access rules are active.
- Canceled - Running state has been canceled. No changes to the database access rules.
- Failed - Sharing failed. No changes to the database access rules.
Warning
When moving to 1.7.7 the space template must be updated to include the two DataExchange job SoftTypes SharePackRevokeJob
and SharePackShareJob
.
Optional support in reference filters
A SoftType can reference one or multiple other SoftTypes from the same reference. If a SoftType port path would span a reference port with multiple SoftTypes there was a rule stating that the path must be common for all referenced SoftTypes.
This rule was too limiting e.g. a master object and a version object might have different port ids for the representation of ObjectId
but both the version and the master might be valid for the reference. On the master the correct path could be child.value.oid
while on the version object the path could be child.value.versionOId
.
To solve this issue, there is now support for an optional operator ?
when defining filtering paths.
The ?
is introduced to make it possible to describe part of a path (child.value?.versionOId
) or the entire path (?child.value.versionOId
) as
optional.
The new operator can be used in all places where port paths are defined. The operator must be placed either in the beginning of the path
(?child.value.versionOId
) or before the path separator .
starting the path that should be optional (child.value?.versionOId
).
Other
- Sharing history end dates are now correctly set for items that are unshared.
- Updated logging for retagging SoftTypes during a snapshot installation.
- Fixed Int32 overflow error that was reported by the schema validator when using Double values without decimals.
- The full text indexer will now trigger not only for the latest version but also for changes to previous versions.
- Optimized the full text indexer to only re-index if a digital file was altered.
- Fixed issue where the full text indexer would not remove a record when a digital file was deleted.
- Fixed issues in the PLM API. It was not possible to use the resource pattern for sub-entries within a unit of information.
- Model: Added
CollectionMember
toApprovalReferenceSelect
. - Model: Added
CollectionMember
toCollectionMemberSelect
.
Tools
Multi sourced file preview
The file preview control has been extended with support for configuring multiple file sources. Each source can have its own presentation label. Below is an example where two sources are configured.
Extension module startup
An additional setting, inputDependent
, has been added to the extension module configuration. Before this change an extension module would always show up as module in the user menu. In many cases the extension modules have been built to always require an input object and are therefore expected to be started from the "Open in" action from a selected object. This new setting makes it possible to configure the module to only be accessible from the "Open in" action. i.e. not showing up as a module that can be started without input from the user menu.
Send objects to module form
The "accept type" configuration of modules supporting configurable actions has been extended with additional functionality. It is now possible to setup an accept type configuration to define an "Open in" action to populate a create form within the module with the objects passed in to the module.
In the example below, the "Part / Document" module allows for one or more documents selected anywhere within the UI to be sent to the "Part / Document" module using an action "Create part". Using the "Create part" action, the module will open the Part create form and use the selected document(s) to be populated to the control managing document references on the Part (documents.value
).
Configure the Close / Add buttons in the external form
When configuring an external form to be used with the "external static action" configuration it is now possible to configure the text of the "Close" buttons of that form. There are two types of forms, Submit
, and Read
. The Submit
type has two buttons, "Submit button" and "Cancel button". The Read
type has a "Cancel button".
Other
- Fixed issue in the configuration tool where the tool was not able to load templates with output schemas containing undefined SoftType references.
Documentation
- Spelling and grammar updates.
- Removed product section and removed references to in-series products.
- Model documentation regenerated.
1.7.6
Web
Other
- Space home should now display custom logo if configured.
- Custom space logo is now keeping the aspect ratio of the logo in presentation.
- The way bread crumb paths are displayed and navigated has been aligned throughout the web application. The same behavior is now applied everywhere.
- The logic for selecting and opening folders in the files module and the files picker has been updated to be aligned better with how this is done in common tools/systems.
- Collection and space news can now handle the upload of images. Before it was only possible to link images based on URLs. Images added to the collection news editor will be stored in the collection file vault. Images added to the space news editor will be stored in the space file vault.
- Fixed issue where the visibility evaluation criteria of ribbon menu actions where not reevaluated after triggering a configured external action.
- Fixed issue where modules opened by an extension module would always display a
uuid
in the tab presentation. - Double click on an item that has a double click action defined will now only work for single actions. Before a configured multi action could be triggered.
Core
Extract ZIP
The extraction of ZIP files in the unmanaged file vault is now scheduled on a background worker. This means that it is now possible to check the extraction status using two newly introduced API routes.
When using the extract route on both collection file vault and space file vault a HAETOAS link for checking the status is returned in the response message.
Collection:
{
...
"links": [
...
{
"rel": "getStatus",
"href": "https://server.machine.net/api/collection/backgroundWork/{work id}",
"method": "GET"
},
...
]
}
Space:
{
...
"links": [
...
{
"rel": "getStatus",
"href": "https://server.machine.net/api/space/backgroundWork/{work id}",
"method": "GET"
},
...
]
}
New routes for checking status on background task
GET /collection/backgroundWork/{work id}
GET /space/backgroundWork/{work id}
Returns
{
"id": 1,
"status": "Running"
}
Where the statuses are:
- Enqueued
- Running
- Completed
- Failed
Other
- When requesting a SoftType instance using a specified schema, the
href
part of the HAETOAS response message will now reflect the route used. Before thehref
always used the default request route (the one without a specified schema). - The Excel query export job has been updated to use the columns defined in the query presentation rather than generating columns based on the query terms.
- Configuring an export job using a query with the
all versions
options is now working properly. Before theall versions
option was ignored. - Checking for invalid characters in filenames have now been centralized. This should help with earlier error signaling when trying to used files with invalid characters.
- Logic for rebuilding the full text index has been move to a background worker. This will greatly reduce the load on the system when triggering a rebuild. It will also prevent memory allocation spikes.
- Improved system shutdown process.
- Improved "PLM Person"/SpaceProfile/CollectionProfile indexer.
- Fixed issue in API where a "file not found" sometimes was returned with status code
500
instead of the correct404
status code. - Model:
Location
added toLocationReferenceSelect
. - Model:
ActivityReference
added toActivityReferenceSelect
. - Model:
Item
,ItemVersion
, andItemViewDefinition
added toActivityReferenceSelect
. - Model:
Property
andUnit
added toPersonOrganizationReferenceSelect
. - Model: Added new select
ProductConfigurationReferenceSelect
that includesProductAsIndividualVersion
andIndividualDefinition
. - Model: Added new reference assignment
ProductConfigurationReference
that relates theProductConfigurationReferenceSelect
to theProductConfiguration
. - Model: Added
ProductConcept
,ProductConfiguration
, andProductConfigurationReference
toActivityElementReferenceSelect
. - Uniqueness: Added reference assignment entry uniqueness for
ProductConfigurationReference
. - Uniqueness: Added entry uniqueness for
DigitalFile
andDocumentFile
to include the optionalrole
andqualifier
onDocumentFile
.
Tools
Context object module criteria
When defining criteria for actions in the object context module it is now possible to filter based on selections of groups in the tree view.
Two new criteria are added:
- Query group criteria - e.g. action is only available if the user has selected a query group in the tree. Can be configured for multiple query groups with the "OR" operator.
- Structure group criteria - e.g. action is only available if the user has selected a structure group in the tree. Can be configured for multiple structure groups with the "OR" operator.
New options for the extension module
The external module has been extended with additional configuration options. Before this change a web extension would be responsible for the whole module canvas. With these new configuration capabilities it is possible to activate the ShareAspace OOTB ribbon menu and/or the ShareAspace OOTB object viewer. This allows the extension developer to focus the development of specific views not part of the OOTB offering rather than having to reinvent the wheel.
Configuration options:
- Active ribbon only.
- Active output view only.
- Active both ribbon and output view.
- Active nothing (works as before).
To tell ShareAspace about an object selection change in the custom part of the module an interface for the notifications has been added. The selection changed supports multi selection of objects in the custom view.
window.parent.postMessage(JSON.stringify(
{
type: 'selection-changed',
data: {
selectedObjects: [
{ $oid: "UUID_OF_OBJECT1" }
],
frameId: frameId
}
}), sasBaseUrl)
});
Sending this message will update the ribbon and object view to operate on the object referred to in the message.
Other
- It is now possible to configure custom icons and labels for both structure groups and query groups. This is applicable to both the structure module as well as the object context module.
- External criteria can now be configured for all actions and output views in all modules with this type of configuration support.
- Fixed issue where configuring the use of the
childSelect
mode on a "single quick select control" did not work. - Fixed issue where configuring a default page size in a structure configuration would not pass the validation test when uploading the template to a collection.
- Fixed issue where configured "object criteria" would not work when used with "external action" and "external multi action".
Documentation
- Model documentation updated to reflect model updates.
- Updated web module extension docs with description of new configuration capabilities.
1.7.5
Web
Collapsible tile groups
It is now possible to configure the categories on the space start page to be collapsible. It is also possible to control the order in which the categories appear.
Custom space logo
Each space now supports a custom logo image to be used instead of the default ShareAspace logos.
Expand view for text areas
Text areas can now be expanded into a window. This should make it easier to read larger portions of text.
Create SoftType from file
It is now possible to bring up a create form directly from a selected file in the files module. The selected file will automatically be populated into the form.
Other
- The request timeout for external form actions is now reset when closing a form.
- Message threads now properly display the correct messages.
- The instance select control now works properly from within a form contained within another form.
- Columns in a contained form are now properly displaying information.
- Newly created objects are now displayed in the object viewer even if they do not show up on the first page in the default query result.
- The Maturity module is now properly scaling the icon for the selected object.
- Trying to drag and drop a folder from the local OS into the files module will now display a warning message stating that folder upload is not supported (only files can be dragged and dropped).
- When configuring logging on a subscription definition. The logging configuration now shows up under "Logging" and not under "Externals".
Core
SharePack expiration
The SharePack has been updated with an expiration date property. The system will automatically un-share SharePack instances when the expiration date is reached.
Temporary folders for DataExchange jobs
All DataExchange jobs will now have a temporary working directory. The selected input will be copied to the temporary folder while the DataExchange job is executing.
- External tasks can leverage the temporary folder to download input and to upload results.
- ShareAspace will automatically copy log files and result files to where they were specified on the job instance once the job has completed its work. Once a job finish executing the temporary folder will be deleted.
- The temporary folder is accessible at
dx://<DxJob ObjectId/
DigitalFile retention policy
The digitalFileRetentionPolicy
is a StringAttribute
setting that can be configured on DataExchange jobs. It is configured on the attributes list of the job. Possible values are:
Keep
- will leave the input files as is. Will delete temporary files in the DX job folder.DeleteOnSuccess
- will delete input files, output files, and files that during an import was copied to the managed file vault.- Note that jobs with this setting cannot be rescheduled.
Default values in input schemas
The input schemas now supports the configuration of default values. This includes default values for references as well (i.e. defaulting to configured instances).
Default values for DateTimes supports the keyword @today
and @today+x
, @today-x
(where x
represents the number of days to add or subtract).
Other
- DataExchange job configuration now supports the configuration of folders as input. Before only single files where supported as input.
- ZIP packages can now be extracted in the files area again.
- Server side paging for references can now be configured with a default page size. Before the default page size was set to 10.
- The id-name-search will no longer return duplicated results.
- The space profile index is now properly updated when editing a collection profile.
- Solved system versioning check issue that could prevent DataExchange jobs from changing status.
- The newly introduced system triggers will now properly work with subscription definitions and subscriptions created at runtime.
- Added support for configuring the request timeout of ExternalExtensions. The default timeout is 100s.
- Requesting a SoftType instance using a database id for one of the entries in an array on that SoftType instance will now only load that specific entry and not its siblings.
- The number of hits reported back for a query result should now properly reflect the number of items that the user actually has access too.
- Minor fixes to the allowed roles configuration.
Tools
Collapsible/Sortable tile groups
To manage the tile groups, select any module and click the "manage groups" button (1). This brings up the group management window. From here it is possible to:
- Order the groups (2).
- Add new groups (3).
- Control the activation of making the group collapsible (4).
- Control if the group should be collapsed by default or not (5).
Customize space logo
While it is possible to change the icon of a space at runtime as a collection administrator using the space edit functionality, it is also possible to configure a custom space logo to be used as default for spaces created using a specific template.
This configuration is controlled at the "Template" tab in the configuration tool. Set the value "Logo relative path" to a path matching a logo images stored on the collection file vault.
Hide or show empty values configuration
By default, ShareAspace will hide "read view" controls that have not had values assigned to them. It is now possible to force a view to always show all presentation controls even if no values has been set. This is done by ticking the "Show empty value" option in the ouput view configuration within a client configuration.
Default values in input schemas
The config tool has been updated to allow for default values to be configured on ports.
Default values on controls
The following controls has been extended with default value configurations:
- Single quick select.
- Person select.
- Instance select.
- DatePicker (working with keyword
@today
,@today+x
,@today-x
wherex
represents the number of days to add or subtract).
Double click open in actions
The Generic
module has had two configuration parameters added, onDoubleClickOpenInModuleId
and onDoubleClick
.
Setting | Value description | Action |
---|---|---|
onDoubleClickOpenInModuleId |
Lists all modules that accepts and object to be sent to the module. | Double clicking an item in a query result within this module will pass the object to the configured module. Works like the "Open-in" ribbon actions. |
onDoubleClick |
Lists all forms in the module that can be opened in context of an object. | Double clicking an item in a query result within this module will open the configured form. |
Create document from unmanaged file
The Files
module has been extended with a staticActions
section. This allows for the configuration of action buttons in the ribbon to appear when selecting a file. The selected file can be sent into a create form within another module. If the form is configured with a file picker, the sent file will automatically be added as input to that control.
In the example below, selecting a file in the files module will activate the "Create document" action in the ribbon. Clicking on "Create document" will open the create document form in the documents module. The selected file will be populated in the files selector control mapping to the "files" port in the input schema.
Added support for configuring page size for server side paging
The structure configuration now has a page size configuration available. If no value is set, ShareAspace will default to a page size of 10.
A default page size can also be configured for arrays in the output schemas. If no value is set, ShareAspace will default to a page size of 10.
Other
- GenericModule now supports query categories with spaces.
- Fixed typing issue where the config tool would change the string type to a number if the default value of a string was set to a number.
- Improved rendering of library markdown documentation.
- Added validation for date default value in views.
Documentation
- Added documentation on new consolidation rules
1.7.4
Web
Person select control
ShareAspace web now has a new control that lets you find a PLM Person
via a search for a Collection profile. This only works if there is a PLM Person object that has an email address as its identifier and that there is a Collection profile with that email.
In the example below, John Doe has a Collection profile, his email is oem.pa@eurostep.com
. There is also a Person SoftType instance with that email as the identifier. The Person object is what will be referenced to the Part in this example. However the search is done via the Collection profile values for first name and last name. The presentation of the Person object will display the name and avatar for the matching Collection profile.
Note
See Tools section on how to configure this control.
Deep link to message thread
The message module in ShareAspace web now supports deep links. To create a deep link. Just pass the message thread database id as the query parameter uuid
.
GET https://my.server.net/sasweb/#/space/my-space/My.Messages?uuid=01000000000000001c0001000000
Other
- Fixed layout issue where the
Export to file
button at the bottom of a query result ended up on top of the result itself. - The where used view will now update the "title icon" to match the current type. Before, if you started your navigation on one type and then ended up on a different type while navigating the where used hierarchy the icon would always be for the first type that opened the window.
- Minor UI improvements in the context object module.
- Fixed styling of user avatar upload.
Core
Index grouping
With the release of ShareAspace 1.7.4 the index grouping capability is introduced. This allows for grouping values that belong together in an index. This in turn allows for more advanced queries being defined.
To explain this in more detail, lets use a simple example.
Say we have a Part that has an array of identifiers. Each identifier has a text value for the id itself. Each identifier also has a context reference stating what organization it is that is using a particular id value. E.g. different organizations might identify the same part with different identifiers.
id | context |
---|---|
123 | Organization-A |
ABC | Organization-B |
Previously when indexing these values the values of each identifier was always indexed separately. See the index example below.
ids | contexts | Name |
---|---|---|
123, ABC | Organization-A, Organization-B | Part 1 |
This meant that there was no way to query for a part using the combination of id value and context since the grouping of the values was lost in the index.
A search ids = 123
would give a hit on the part as expected but a search ids = 123 AND contexts = Organization-B
would also get a hit, since the query would be translated to "find a part with an id value 123 and that has an id context for Organization-B". So with this approach it is not possible to query "find a part that has an id value 123 FOR Organization-A".
With the index grouping the value pairs can be kept together, which makes it possible to do the more specific query operations.
If you would just search for all parts (lets say there is only one in the system) you can via configuration define if you want one hit for each possible combination, or if you want to concatenate the row as before.
All parts:
ids.id | ids.contexts | Name |
---|---|---|
123 | Organization-A | Part 1 |
ABC | Organization-B | Part 1 |
Note
That both hits refer to the same part. It is also possible to still index using the "old way" where arrays are concatenated on one row.
If you were to search using "ids.id" = 123 you would get the matching result: |ids.id |ids.contexts |Name | |-------|---------------|-------| |123 |Organization-A |Part 1 |
And if you are more explicit, like ids.id = 123 AND ids.context = Organization-B you would get no hits since the id value of 123 belongs to Organization-A.
History support
Up till ShareAspace 1.7.4 the index engine has always only indexed the latest active value for references with effectivity. Introduced in 1.7.4 it is now possible to index the full history of a reference. All effectivity controlled references like property values can be indexed.
E.g. before you could query for "all parts with a price of 10 USD", with the history support functionality you can query "all parts that ever had the price of 10 USD".
Other
- Fixed an issue where trying to access a deleted UoI multiple times in a row could take down the host.
- An input file selection is no longer required in order to run an external task. Typically this would be the case when running an export followed by an external mapper task.
Issuer
is no longer required on the logging messages sent to the OOTB external event logger component.- Fixed consolidation issue where the consolidator would fail to consolidate additions to an existing array.
- Fixed issue in the new API PATCH operation where trying to patch a specific entry in an array would always try to patch the first item in the array. Thus ignoring the specified entry.
- Fixed issue in API HAETOAS response where permissions information was not added for attributes on the root level of a SoftType instance. This caused the UI to lock input fields that should not be locked.
- Fixed issue in the
ForceOnlyOneEntry
consolidation rule. The rule will now properly use the start date of the new reference as the end date of the previous one. Before this fix UTC now was always used as the end date.
Tools
Person quick select
The Person quick select control options have been added to the configuration tool. This control can be used in both Create/Edit views as well as in Read views.
The control can find and select either a Space profile or a SoftType based on the PLM Person object. This is configured via the SoftType
setting.
Index grouping
Added support for configuring
- Index history
- Index grouping
Index history
To enable index history tick the "History" check box for all SoftTypes in an index where you want to activate history. This will index all historical values of all effectivity controlled terms selected for the index.
Index grouping
Index grouping works for objects and arrays of objects in the SoftType schema.
In the example below the children (array) of a Part is indexed as a group. The child reference is grouped together with the position and the effectivity start/end dates.
Note
That it is possible to group on multiple levels.
When defining a query for an index group not that the terms describes the grouping using a .
annotation. With the sample query below it is possible to run a where used query for a part, like "show me where this child part is being used at a given position".
Expanding columns
There is a new option available in the column presentation settings. This allows you to "expand" the values for a column. This means that if you have indexed an array, say an array of strings, these strings will by default be presented as comma separated values. If you choose to expand a column you will get one new row for each of the values in the array.
Other
- Updating an index term in the configuration tool will now update all queries using that term.
- External Criteria can now only be configured for external actions in Configuration tool (as intended).
- Added a role rename option to the VersionSequenceRepairTool in the migration tools set.
- It can be used the remap old tag/role values to new ones.
- The configuration tool no longer reports type errors incorrectly.
- It is now possible to set date-time formatter when configuring queries in configuration tool.
- The configuration tool will now report errors if
.
is used in an index id. - Added missing binaries to the
Eurostep.Modelframework
nuget package- Eurostep.SAS.Awareness.Abstractions
- Eurostep.SAS.SoftTypes.Runtime.Access
- Eurostep.SAS.Time
- Eurostep.SAS.Time.Abstractions
- The configuration tool will now use the correct schema type (string) for ports exposing an originating system.
Documentation
- Added index grouping and index history concepts.
1.7.3
Web
Messages on object
It is now possible to list all message threads referring to an object directly from that object. It is also possible to create new message threads from any object. The system will automatically link the thread to the selected object.
Structure filtering
It is now possible to enable column header filters via the structure configuration. This allows end users to filter the structure columns in the same way as they can filter query results.
Other
- User invite form now shows a warning if no role is selected for the invited user.
- Fixed issue where the PATCH payload was wrong when using the Single Quick Select control for values below the 2nd level in input schemas.
- Context object module will now show up in object context menus.
- Added progress indicator and disabled save button when processing external form save operation.
Tools
Structure filtering
A new filter configuration capability has been added to the structure configuration. This new feature allows the configurator to set filter expressions on the structure table columns.
By leaving the Value blank in the configuration, end users will be able to provide the filtering argument at runtime.
Allowed roles on SoftTypes
The SoftType configuration section within the configuration tool has been extended with the allowed roles configuration. This configuration allows you to further restrict the access to SoftType instances (on top of the existing access rights).
In the example configuration below the configuration is setup so that it is only possible for users with the role "ProjectAdministrator@OEM" to schedule (create instances of) the AP242 import job.
Other
- Many minor bugfixes to configuration tool.
- Object criteria keywords, the following keywords are supported:
@me
- the user email, read from Access Token.@today
- todays date.@canUpdate
- Boolean indicator if current user has update rights on a specific port.
- Fixed issue in the SoftType toolbox generator where enumerations where not generated correctly.
- Fixed issue where the UI would not refresh object views after an object was updated.
Core
SharePack information filters
It is now possible to configure information filter settings on instances of SharePack. This allows filtering settings like effectivity or applicability context to be applied when crawling structures for sharing information.
DataExchange Job access update
Previously it has been required to have a role with the Create
access modifier in order to schedule DataExchange
jobs. This has prevented users with "Read" access to schedule exports. The Create
access modifier is no longer required,
ExecuteOperations
is now the only required modifier. If a "Read" user schedules an import job, that job will however fail
because of insufficient access.
Turn of invite emails
It is now possible to turn of the out of the box invite emails that are sent by the system. This would typically be turned of when when custom invite emails based on events are configured in order to avoid duplicated invite emails being sent out.
The out of the box invite emails are turned of by setting the enabled
to false
in the invite section of the collection bootstrap configuration.
"invite": {
"fromAddress": "admin@eurostep.com",
"authorizationServer": "https://authorizationserver.machine.net/AuthorizationServer",
"identityServer": "https://identityserver.machine.net/IdentityServer",
"enabled": false
}
Role based SoftType operations
The ShareAspace access engine is now supporting additional access control for SoftType operations, like creating/updating/reading instances of SoftTypes.
See the tools section for information on how to configure the allowed roles.
Highlights
- AllowedRoles restrictions on
any
SoftType - Filter API routes for update/delete on SoftType definition level.
- Possible to set AllowedRoles on a specific DataExchange job, define which role@particpant should be able to schedule it.
AccessRights calculation for links in API
- No AllowedRoles section in SoftTypeDefinition, return current role@participant rights
- Match the whole role@participant, return allowed rights
- Match combination of role and participant, return intersection (bitwise and) of allowed rights
- Match only role, return role allowed rights
- Match only participant, return participant allowed rights
- No match, return current role@participant rights
AccessRights check for commit validation
- Retrieve current user access for specific UoI
- If no allowed roles section, return user access
- Check AllowedRoles for
all
user roles and combine them. - If no restriction found, return user access
- If restriction found, return the intersection of user access and allowed roles.
Other
- Updated file preview events to trigger for both thumbnail and large preview.
- Added
_HOSTURI_
placeholder to Collection bootstrap configuration file. - Fixed host issue in SysPrep tool.
- Fixed issue in PLM API that would give a null ref error if the user did not have Awareness access to a Participant on the coOwner/coReader properties.
- Model regenerated with correct enumerations.
- Multi selection is now supported by external actions.
- Fixed issue where SoftType instances with "hardcoded" and non exposed instance references would not get the instance reference created.
Documentation
- Added documentation on external actions and external views.
- Updated collection bootstrap documentation with the changes to invite emails.
- Updated the concept documentation for Share package with the information filter settings concepts.
- Update access rights documentation with the role based SoftType operations.
1.7.2
Web
Images in messages
It is now possible to upload images to messages within a message thread. Before this change it was possible to add images to a message, however it was only possible to reference images using a URL. In 1.7.2 you can upload images directly to the message.
Tip
You can also use your clipboard to paste an image into the message using Ctrl + V
(provided that you have an image in the clipboard).
Other
- Updated file download to use one time tokens. This is not visible to end users. See "Core" section for technical details.
- Fixed issue where the alerts on space start page tiles would not refresh when navigating back to the start page.
- Fixed issue where link in messages could only be posted after adding a character after the markdown link.
- Added support for GrantExternalAccess in Participants module. Added to Create/Edit form and in participant info box.
- Fixed issue where after editing settings of an external extension as collection administrator, the presentation of that extension would not be refreshed.
- Solved issue where ids in "where used" sometimes were displayed as "Undefined".
- Styling updates to the object context module.
- Updated to hide pagination control for lists that only has one page.
Core
One time token
A new API route has been added for requesting a scoped "one time use" access token. The intended use for these tokens is for file download operations. When downloading a file the access token is passed as a query parameter, in the previous implementation the full access token was the only available token to use.
File download:
- Find URL for file to download.
- Request a one time token for the specific file using the full access token.
- Use the one time token as the query parameter when downloading the file in question.
Warning
For backward compatibility, using the fully scoped access token as a query parameter for a file download is still possible. This is however not recommended. In the next major release of the ShareAspace platform fully scoped access tokens will not be allowed for file download.
Read more about the one time token in the API documentation.
Event logging
In 1.7.1 we introduced a new extension type as well as configuration capabilities for logging based on events. With these features we also released a new out of the box extension that can be used for these scenarios. In 1.7.1 this extension would write the configured log messages to the Windows event log.
Introduced in 1.7.2 there is now a log area for each space on a ShareAspace collection and the logging extension component will now upload logs to these areas. The logs will be uploaded on a configurable time interval (set default to 10 minutes).
Once the logs are stored in ShareAspace, these logs can be downloaded via the REST API by users that has a role with the
ManageSpaceDefinition
access modifier. The log download is a ZIP package containing a set of JSON files containing the
log events.
GET https://{fqdn}/api/space/{spaceId}/eventlogFile/download
Content-Type: application/json
Authorization: Bearer eyQWE...
Communication between ReverseProxy and Host
Prior to 1.7.2 the communication between the ReverseProxy and the ShareAspace Host has been using HTTP. This communication has always been for internal communication between these two components and the deployment idea was that this communication should never be over a public network.
There has been several requests for allowing for this communication over public networks. To support this, the communication has been changed to be using HTTPS. To avoid any configuration mistakes we are now only allowing HTTPS communication between these components.
This change requires a certificate for the ShareAspace Host. This certificate must also be trusted by the hosting environment of the ReverseProxy.
The installation documentation has been updated to reflect this change.
Caution
This is a breaking change for the deployment of ShareAspace. Switching over to HTTPS for the communication between the ReverseProxy and the ShareAspace Host is required.
Extended deletion of objects
The concept of a "soft delete" has now been implemented in ShareAspace. Prior to this update, only the "tombstone delete" was supported.
Using the "soft delete" when deleting a Unit of Information (UoI), all the information on that UoI (except files).
Area | Delete | Soft Delete |
---|---|---|
SoftType Data | Delete metadata completely | Preserve metadata |
Digital Files | Removes files | Removes files |
Search | Removed from indexes | Removed from indexes |
Uniqueness | Identifiers can be reused | Identifiers can be reused |
Navigation | Links appears as deleted | Links appears as deleted (*) |
Batch deletion | Supported | Supported |
Note
(*) using the Model Browser (and PLM API) it is still possible to view the "soft deleted" objects.
Configuration
When configuring delete actions for modules in ShareAspace Web, a new configuration option has been added. This option allows a configurator to define what type of delete should be used.
API
In the HAETOAS links the soft delete link has the rel
value softDeletePlmObject
. The soft delete uses
the DELETE
verb with the SoftType resource.
DELETE https://{fqdn}/api/space/{spaceId}/softtype/{definitionId}/{objectId}
Content-Type: application/json
Authorization: Bearer eyQWE...
Compared with "tombstone" delete (HAETOAS rel
: deletePlmObject
):
DELETE https://{fqdn}/api/space/{spaceId}/plm/{typeId}/{objectId}
Content-Type: application/json
Authorization: Bearer eyQWE...
When retrieving a soft deleted object via a reference navigation using the API, the $availability
will be SofttDeleted
.
{
"$softType": "Part",
"$type": "Part",
"$oid": "0200000000000000120101000000",
"$availability": "SoftDeleted",
"$version": 1
}
Compared to a tombstone object that would have the $availability
value Deleted
.
Deep copy
The deep copy feature, for copying objects or creating new versions of versionable objects has been updated.
- Level state history is excluded from copy/new version.
- Sharing history is excluded from new version (was already excluded on copy).
- Sharing history on the master level or on previous versions are not affected when a new version is created.
- Sharing values, i.e. co-owners / co-readers are excluded from copy/new version.
Identity API routes
The identity API resource has been updated to not use query parameters.
Path | Method | Request Body | Response Status |
---|---|---|---|
/identity/user/validate | POST | { "email": "USERNAME", "password": "PASSWORD" } | 204 No Content or 500 Internal Server Error |
/identity/user/create | POST | { "email": "USERNAME", "password": "PASSWORD" } | 204 No Content |
/identity/user/updatePassword | PUT | { "email": "USERNAME", "password": "PASSWORD" } | 204 No Content |
/identity/user/resetPassword | PUT | { "email": "USERNAME" } | 200 OK |
/identity/user/exists | POST | { "email": "USERNAME" } | 200 OK or 404 Not Found |
Warning
If there are custom components using these routes this will be a breaking change for them. Internal ShareAspace components have been updated to reflect this change.
Action routes for managing roles
Two new action routes has been added for managing a users role assignments.
/spaceProfileAction/addAppliedRoles/test@eurostep.com
: This route allows for adding roles for all participants that the editing user (typically an administrator) has the access to manage users for./spaceProfileAction/removeAppliedRoles/test@eurostep.com
: This route allows for removing roles for all participants that the editing user (typically an administrator) has the access to manage users for.
The current action route stays the same.
/spaceProfileAction/replaceAppliedRoles/test@eurostep.com
: This route ONLY allows replace (add/remove) of roles for the participant that is matching the current role of the user (typically an administrator) that is applying the update.
Other
- Updated access levels for Participant creation. It is now possible to setup the access levels so that you can have a role that can create a Participant but not being able to invite users to it.
- GrantUserAccess is no longer required for creating Participants.
- Only GrantParticipantAccess is required in order to share awareness with other Participants. For other external access rights GrantExternalAccess is still required.
- Fixed issue where it was not possible to configure attributes to be required on optional objects.
- A typical case would be an optional DigitalFile which normally has a mandatory name. Even though the DigitalFile is optional and no digital file is added, the validation for a mandatory name would trigger a "missing mandatory attribute" error.
- Model updates
- Added DocumentReference to StateDefinitionOfItemSelect and StateOfItemSelect.
- Added new "historical Text" concept - Adds a new effectivity controlled assignment, called
Text
. It can typically be found on the same entries that has the "Names" construct.qualifier
, is an optional attribute, toText
assignment. The qualifier is included in the entry uniqueness forText
.
- Added support for referencing existing data with
$instanceRef
pattern in SoftType multi create.
Documentation
- Updated the delete Unit of Information documentation to reflect the addition of the "soft delete" capability.
- Added documentation on the request "one time token" API.
- Updated installation documentation.
- All documentation now describes the requirement of HTTPS between ReverseProxy and Host.
- Updated with security note certificate validation checks on Authorization Server configuration.
- Updated documentation for the out of the box event logger component with new configuration parameters.
- Fixed copyright year issue.
1.7.1
Upgrading
- After upgrading from 1.7.0 to 1.7.1 a re-indexing of all indexes is required.
Web
Indication of sharing
For objects that are currently shared, ShareAspace web will now present an sharing indication icon for those objects. Clicking the icon displays a list of Participants that the object is shared with.
It is also possible to use a generic formatter for query columns to display if an object is shared.
More information on how this can be configured in the Tools section.
Consent
It is now possible to manage the consent form for a Space from the Collection Admin menu.
Other
- Fixed issue in structure module where it would sometimes show a child multiple times (without there being multiple references). This happened when rapidly clicking the refresh button multiple times.
- Fixed issue where it was not possible to add applicability references within an entry using the containment control.
- Fixed issue where it was only possible to add one entry at the time using the containment control.
- Added missing loading icon in id counter and tree view controls.
- Fixed CSS issue on Cancel Job box.
- Fixed presentation issue of null values for DateTime. These were presented as 1/1/1.
- Added local information filter settings support to the object context module. This now works in the same way as within the structure module.
- Added UI presentation for logging configurations on subscription definitions.
- The Context object module is now automatically refreshing after an action has been triggered.
Core
- Model updates
- Name and description can now be added to definitions.
- Extended observation capabilities.
- Fixed inconsistency in ViewDefinitionUsage inheritance.
- Extended AttributableSelect with Participant to enable for generic values on Participant.
- Added SoftTypeTriggerContract to SystemTriggerDefinition.
- Added metadata to SoftType definitions for managing versioning and updates of SoftType definitions.
- This is a JArray that currently has no validation of its content.
- The new batch operations will now properly evaluate port rules (like min and max values).
- Added support to Excel-mapper to support the newly introduced Excel-template settings.
- Fixed issue where restoring a migrated snapshot could fail on the SoftType tagging. The fix verifies that a SoftType instances is not tagged multiple times.
- Added support for storing the JSON output from the Excel mapper task. This makes it possible to use the JSON data in an External Task.
- Fixed an issue where patch request having update and remove operations targeting same entry and its child entries did not give expected results.
- PLM Person objects connected to a SpaceProfile and PLM Organization objects connected to a Participant will now be shared with other Participants if the awareness (AWA) access modifier is active in the external access rights. Before only the SpaceProfiles and Participants would be readable.
- The Export Control space template has been removed from the InReach installer (InReachTemplates-x.y.z.build.msi). Export Control will be its own packaged product.
- Fixed issues to AP242 export mapper that were caused when the user scheduling the export did not have access to referenced data.
- Removed all Export Control specific features from the ShareAspace platform. These are migrated in to the Export Control packaging extensions.
- DataExchange jobs that hit an out of memory exception does no longer take down the ShareAspace host.
- JWT token validation is updated to validate issuer and not the client id (since the client id is optional).
- It is now possible to index Co-owner and Co-reader on SoftTypes.
- Updating the ShareAspace Nova Extension manifest will now properly remove resources if they are no longer in the manifest.
- Added support for SoftType multi create via the API.
- This allows for creating multiple SoftType instances in a single REST API call, and inside this request allows referencing other instances created in the same request.
- This is not the same as a Batch API call. This is for creating SoftType instances only. However it can be used inside a Batch API call.
- The event engine has been extended.
- Support for system events to be configured in triggers.
- User login.
- User invited to space.
- User removed from space.
- Unmanaged / Managed file download.
- Unmanaged / Managed file preview.
- Unmanaged / Managed file delete.
- User clicked OK on consent.
- User clicked cancel on consent.
- Added support for setting up logging actions on a Subscription definition.
- Added an OOTB ShareAspace Nova extension to be used with logging actions. This component allows for logging of configured events to the Windows Event log. The component is delivered as its own installation package.
- Support for system events to be configured in triggers.
- Fixed issue where some of the external access right configurations could be removed when updating a Participant.
- Solved issue with AWA rights and queries.
- Fixed issue with resolving AppliedRoleReferences when creating Participants at runtime.
- Fixed issue where loading children in a structure would not use the defined output schema for a given type.
- When copying an object or creating a new version for an object the following things are now properly excluded in the deep copy.
- LevelState history.
- Sharing history.
- CoOwner and CoReader.
Tools
Excel template updates
Introduced in ShareAspace 1.7.1 there are new capabilities for generating excel templates to be used for SoftType imports. Previously it was only possible to generate a template that would contain all SoftTypes and all their schemas as configured in the Space template.
With the new capabilities it is possible to setup multiple configuration files for the template generator.
The configuration files can specify what SoftTypes, what schemas for those SoftTypes should be included in the template. It is also possible to opt out from optional ports in the schemas.
In addition to controlling what should be included in the template it is also possible to configure instructions for the template as a whole as well as for specific columns within the template.
The generated templates are now also helping out with lookups for references.
Configuration of query sharing indication
Starting in 1.7.1 it is now possible to configure and index the coReaders
and coOwners
for SoftTypes. In order to get the sharing indication in a query result:
- Configure
coReaders
orcoOwners
(depending on the use case) in the data section for the SoftType in question.
- Add the port to the appropriate output schema.
- Index the port.
- Configure a query column for the indexed value.
- Use the generic icon formatter.
- Use the regex pattern
^(?=\s*\S).*$
, this will return true if there is any data. - Set an icon to use for the matching (and non matching if needed). i.e. in the sample below, a check mark will be displayed for SoftTypes that are shared with read access.
Other
- Added config tool support for managing Excel template configuration files.
- Added config tool support for managing system event triggers and logging configurations on subscription definitions.
- Added config tool feature that allows for adding all available ports when creating a schema (instead of adding them one by one).
- Added config tool support for managing Excel template configuration.
- Added config tool support for looking up AppliedRoleReferences (this only applies to the data section configuration of SharePackDefinition).
- Fixed issue in Config Tool that could cause exceptions to be thrown if there was no systemEvent contract.
- Fixed issue in Config Tool that would close the Config Tool if a schema was deleted and then added.
Documentation
- Fixes to links within the docs.
- Added documentation for the file retention policy import setting.
- Removed all notions of custom DataExchange tasks using the ITask interface.
- Added documentation of the multi SoftType create API route.
- Model documentation regenerated to include model updates.
- Documentation of Excel template settings added.
- Documentation on event engine updates
- Documented the system trigger definition and its actions.
- Documented the configuration of logging actions.
- Documented action liquid methods.
- Installation documentation added for new event logger extension component.
Preview features
For the first time we are releasing preview features in a ShareAspace release. Since these features are marked as "Preview" we allow for breaking changes to them within 1.7 till they get the release status. Note that these features will not be documented or supported until they are actually released.
- Added Nova extension for using an external renderer for a SoftType form.
- Added support for a modal window to show before a download starts. This modal window can render its content using the external view renderer.
- Also supported on the preview control.
- Added support for external extensions for two new actions:
- Extension action configured for a ribbon menu button. This will pass a selected object (and the context object if configured within the Context object module) to an external extension handler when a user clicks the ribbon button. This allows for custom business logic to be executed based on the button being clicked.
- Extension action for a SoftType form "complete", i.e. Create or Update of a SoftType. Instead of ShareAspace Web calling a normal SoftType REST API route for POST/PUT/PATCH an extension API route is called (on the ShareAspace REST API). ShareAspace will then route this message to the configured extension - thus handing over the responsibility of the POST/PUT/PATCH request to a custom component. This allows for custom business logic to be executed for these operations.
- Added support for external criteria for showing or not showing a ribbon button.
- Multi action (batch) is supported in Configuration tool but is not yet supported by the extension implementation.
1.7.0
Please refer to the ShareAspace 1.7 Release notes.