ShareAspace 1.9
Platform
.NET 10
- The ShareAspace platform and all its .NET based components are updated to use .NET 10.
- .NET 10 has "Long Term Support" where the end of support is November 14, 2028.
OpenTelemetry
ShareAspace now offers an OpenTelemetry (OTel) logging capability. It allows the Service Host and out of the box extensions to stream logs, traces, and metrics (collectively referred to as signals) to a compatible system. Three main options are offered:
ShareAspace OpenTelemetry collector see extensions. Used for streaming signals to files.
Azure Monitor (also known as Azure Application Insights). The signals are collected and sent to Azure using Azure Monitor OpenTelemetry Distro.
Any conformant system supporting OpenTelemetry protocol (OTLP) over gRPC or HTTP/Protobuf.
See documentation.
Core
- Fixed an issue in the circular reference checker that would consider having multiple references to the same end item a violation of the non circular reference rule.
- When inviting a new user, the user will now always have a default role set. If the user is invited to have many assigned roles, the first role will be set as the default role. A user can change their default role as before.
- It is now possible for a Participant to grant
GrantDetailedAccessas an external access right to another Participant.- If Participant A grants
GrantDetailedAccessto a Participant B, a user with a role assignment in Participant B, where the role has theGrantDetailedAccessaccess modifier, will be able to change ownership of data owned by Participant A.
- If Participant A grants
- Solved an issue that would prevent starting the ShareAspace Host in restore mode.
Space create/update
- A space update will now correctly handle updates to the role and participant filtering of ShareAspace web client section configurations.
- The space bootstrap logic is updated so that OriginatingSystem instances are created before any other SoftType instances. This is due to the fact that all other instances might reference an OriginatingSystem.
Index
- Indexes are now correctly updated if an indexed object is deleted from the database. Before if an index definition used groups items that were deleted could remain as entries within the index.
API
- Fixed an issue in the patch operation builder that could lead to a PATCH request failing when updating an entry and entries on the entry at the same time.
- The ShareAspace batch API now supports batch requests for
changeOwnerandplm/getLinks. - The API resource
/api/space/{space}no longer returns an HAETOAS link for the resource/api/{space}/informationFilter/{roleId}/{participantId}(this resource has not existed for some time). /space/{spaceId}/externalExtension/validate/{id}will no longer return an extension address for an extension that is deactivated. If multiple extensions are registered with the same id the first active extension matching the id will be returned.
DataExchange
- Improved performance in the SoftType Excel mapper.
- Updated the error handling for when a SoftType excel import job would fail due to reaching a memory limitation. Instead of just failing the failure will now report the message
Cannnot create SoftType {SoftType ID} instance with id {instance ID} due to insufficient stack space. Consider splitting import file into smaller chunks.. - If
.logis configured as a restricted file type for a space ShareAspace will no longer append the.logextension to to thelogFilePathof DataExchange jobs. Instead, if.logis restricted ShareAspace will use the user provided extension. If the user provided extension is also on the restricted list the job will fail.
User invite email
- The out-of-the-box "hard coded" default invitation email that could be activated to send out a default email to a newly invited user has been removed.
- This functionality is instead achieved via configuration in a space definition by using the system event trigger
UserInvitedToSpacecombined with a subscription definition and an active subscription. - In order to achieve the same level of detail in the configured email as in the previous hard coded email the liquid templating language has been extended with additional system specific objects and properties.
Reverse proxy transform
- A new custom transformation
ResponseBodyReplaceDomainWithHosthas been added to the ShareAspace reverse proxy. - The transformation will rewrite ShareAspace response bodies by searching for a configured domain name and replacing it with the domain name of the request host.
- e.g. incoming request has host
external.domainand the ShareAspace body containsinternal.domain, the transformation will replace all instances ofinternal.domainof the response body withexternal.domain.
- e.g. incoming request has host
- This functionality would typically be used when ShareAspace is hosted using both an internal and external domain.
- Read more here.
New space template format
Starting from ShareAspace 1.9 a new template format using the file extension .csas is introduced. The format is based on System.IO.Packaging that is, in turn, based on ECMA-376 Part 2 “Open Packaging Conventions”, 5th edition, December 2021. The old JSON format is still supported in 1.9 but the configuration for the new web application will require the new format.
The ShareAspace APIs have been updated to support:
- Upload and download of the new format.
- Creating a space using the new format (this includes the Collection API and the Administration API).
Administration tool
\sas.exe read trustedIdentityProviderwill now list all registered trusted identity providers.- Maintenance scripts now supports alteration of external collections (
ExternalCollection<T>in the PLM API).- The following functions can now be used to manipulate external collections:
delete(oid: ObjectId)add(oid: ObjectId).
- Scripts must import
sas.core@0.2.2to get this feature support. Note thatExternalCollectionbehaves like aSetin JavaScript. - The data maintenance project template has been updated with a new example script:
delete-cancelled-dx-jobs.ts.
- The following functions can now be used to manipulate external collections:
SoftType export settings
A new setting is now available for the SoftType exporter. The setting allows a configurator to control the behavior of how files referenced by SoftTypes are extracted by the exporter. The old behaviour where each file is placed in a folder with the file location name remains. The new configuration option allows files to instead all be placed in the root folder for the export. If there are two or more files with the same file name the files will be made unique using a number sequence, e.g. file.txt, file (1).txt, file (2).txt. The original file name is kept in the metadata of the SoftType JSON / SoftType Excel.
The ShareAspace internal SoftTypeExport task will look for an optional attribute FileExportMode.
Allowed values:
FolderStructure- (classic export style folder structure, default mode)FlatList- All files in one folder
Classic User Interface
Forms and read views
- SoftType validation rules are now executed at start up in the SoftType edit forms. Before the update the validation logic would only execute on a form input change.
- The paging between files in the file preview control now works properly even if a user lacks access to one or more of the files.
- The file preview component will now differentiate the error message between not being able to generate a preview because of an unsupported format and because of the document management feature not being part of the active license.
- Multi edit now allows for removing existing values, previously it was only possible to add or change values.
- Binding multiple values to an input control will now validate correctly. Before the fix validation messages would not be displayed correctly and a validation issue would never clear even when the input was corrected.
Extensions
- The web application will no longer load a registered web extension if the web extension is set to deactivated.
- Extension modules will no longer fail to load when the action ribbon is set to active while no base type or SoftType is specified.
- The action ribbon will be activated by default if a documentation link is specified for an extension module even if no actions are specified.
- The
newVersionaction is now available as an external action. i.e. The new version form can be replaced with an external view and the new version endpoint can be replaced by a custom extension endpoint. - Fixed an issue that prevented the external content control from being used multiple times within a form or within a read view.
- The external content control can now be bound to anything at any level in the input/output schema of a SoftType. Before this improvement it could only be bound single value leaf ports.
- This includes binding to arrays of both simple types as well as object arrays.
Files
- The files module now supports deep links. Folder links can be copied from the address field in the browser and file links can be copied from both the address field as well as from a copy link button in the read view.
- When opening the file picker when rescheduling a DataExchange job the file picker will now start in the folder where the previous file was selected from (instead of defaulting to always show the user root folder).
Structure
- Sorting on a column in the structure grid will now stick while navigating over pages.
- Fixed an issue in the structure view that could prevent the view from loading correctly if an id context other than the default one was used.
- Fixed an issue in the pagination logic of the structure grid. By clicking fast a user could get the presented page number out of sync with the actual page or even going out of bounds of the total number of pages.
- Column binding configurations for the structure module can now bind and present arrays similar to how arrays are handled in the query result grids.
Containment control
- The show row content modal now correctly formats date-time values.
- Fixed multiple issues that prevented the containment control from being nested within itself.
- Including but not limited to:
- Including fixing paging issue...
- Fixed an issue that would prevent the usage of default values in containment form views.
- Fixed an issue in the display containment row feature that could prevent values from being presented correctly.
- The display containment row will now format values according to their underlying column formatter configuration.
Information filter
- Closing and reopening the information filter settings form in the structure view no longer resets the selected id context.
- Nested applicability context selections made in the information filter control are now correctly displayed.
- The information filter control will now correctly adhere to the configuration parameters
hideEffectivity,hideApplicationContext,hideIdentifierContext,hideApplicability, andhideVersionFilter. Also, if all options are set to hide, the information filter settings button will no be visible.
Work item / approval request
- The reviewers list in the work item module (used for approval request) now use paging and is no longer limited to showing only the first 10 reviewers.
Event administration
- Improved the performance of the Event subscription administration module. Running a space with many (200+) participants would before the fix severely impact the load times in the module.
Model browser
- The model browser now allows for editing of numerical values.
Other
- Solved a script load dependency issue that would cause intermittent errors in ShareAspace web due to the wrong load order. Typically this issue would appear when loading ShareAspace web over a slow network connection.
- Presentation of applicability instances now uses the default presentation configuration as is default for all other SoftTypes.
- The personal access token grid now using date sorting logic rather than string sorting logic when sorting a date value column.
- Introduced a new file size formatter that can be used for column configurations across the application.
- The last space in the space selection list will no longer "fall of the screen" when running a ShareAspace collection with many spaces.
- My profile
- Fixed an issue that prevented client side validation of values in the "My profile" form.
- Canceling the "My profile" will now reset the avatar picker control. Before an uploaded file would remain in the picker even if the avatar was not saved.
- The advanced query configuration form will now always use term presentation configurations if available rather than just displaying term identifiers.
- Filtering on date-time values now renders a date-time-picker so that users no longer need to input ISO date-time strings when filtering.
- Including when the term id does not match the mapped port id of what is indexed.
- Fixed an issue that prevented using the "open in" action when having multiple items selected.
Extensions
OpenTelemetry file collector
The open telemetry file collector is a new extension introduced in 1.9. It is offered as a single MSI and will write OpenTelemetry signals into text files following the OpenTelemetry Protocol File format.
3D Viewer
- Reloading a 2D CAD file in the 3D viewer will no longer lead to the 3D viewer loading the toolbar for 3D files, instead the 2D toolbar will remain.
- The 3D viewer no longer displays two arrows for the structure item action dropdown list.
- The 3D viewer and CAD converter are updated to use HOOPS Visualize
2025.8.0.
Warning
- There is still one open CVE with a high base score in HOOPS Visualize
2025.8.0. - See CVE-2024-6119.
Full-text-index
- Improved error handling in the full text indexer. Before this fix an index failure of one file in a batch would prevent the rest of the files from being indexed.
- The full text indexer now supports indexing of files using non-ASCII characters in their filename.
- The full text indexer is updated to use Elastic search
9.1.3.
File preview
- The file preview extension is updated to use LibreOffice
25.8.3.
Other
- It is now possible to chain an external task after the OOTB
SoftTypeFileWritertask when defining task sequences for a DataExchange job. - The EventLogging extension has been updated to use a back-of-strategy when failing to upload log information. Before this change the extension would spam retry attempts using up valuable system resources.
- ShareAspace will now validate the URL of external extensions to prevent the entry of malformed URLs. Existing malformed URLs will not be added to the allowed origin list in the CORS policy service, instead malformed URLs will be logged as
Invalid URI {uri} encountered while building CORS policy. The URL is not added to allowed origins.- Before this fix registering an extension with a malformed URL would prevent the ShareAspace host from starting.
- The Excel to SoftType mapper is updated to ignore empty cell values. Before this change the mapper could be seen creating spurious Id contexts.
Model updates
Unitis now an optional identifiable object.Unitis added toStateDefinitionOfItemSelectandStateOfItemSelect.- Support for more information on history entries on work item.
- a new property
aliasis added to theWorkItemHistoryobject in the Application model.
- a new property
- The
ExternalAccessRightsvalue type has been withGrantDetailedAccess. - A change in the
Requirementmodel has been introduced in 1.8.2 in order to remove the possibility to refer item from requirements and 2 new relationship were introduced in order to be able to link items to requirements instead:RequirementReference: indicating that the item has a list of requirementsRequirementSatisfactionAssertion: indicating that the item satisfies requirements.- By doing so and following the PLCS PSM constructs, an ambiguity has been introduced regarding the assertion relationship. This one was pointing from an item to a requirement (mandatory) in order to indicate the item satisfies the requirement but had also the possibility to point (optionally) to a requirement reference. We have removed that ambiguity by removing the fact that both associations were possible at the same time so an item can now satisfy a requirement OR a requirement reference. (see breaking changes below)
- A complete new model for representing environment definition (
EnvironmentDefinition) and observed environment reporting (EnvironmentObserved) is introduced as Master-Version-Definition object following the constructs found in the PLCS PSM model. Both can be organized in hierarchy. It is possible to relate anEnvironmentObservedto andEnvironmentDefinition, as well as referring to them from items. StateDefinitionmodel has been improved to better support ASD S-series concepts (Failure mode, damage definition, failure mode signature, failure mode cause, ...). A new relationship is introduced to be able to link item from aStateDefinition(1.8.2 only had the capability to link items toStateDefinition).- A complete new model for representing "TimeLimit Series" is introduced as an Master-Version-Definition object following the pattern we have on Plan and Schedule (since the concepts are very close). An entry in a time series is describes the condition when something is triggered. Therefore it is represented as a
Conditionin the PLM model. For the purpose of not adding an unnecessary subtype ofCondition, a time series entry is mapped to aTextBaseConditionin the PLM model. This is to support the concepts of "Thresholds & Triggers" found in ASD S-series. - A new relationship is introduced to be able to link item from a
Contract(1.8.2 only had the capability to link items toContract). - Added to
ContracttoRequirementReferenceSelect - A new relationship is introduced to be able to link item from a
Project(1.8.2 had the capability to link items toProject). - A complete new model for representing group of maintenance capability definition as a managed object
CapabilityGroup(ASD series concept of Operating location type and maintenance level).CapabilityGroupcan be organized in hierarchy and possibility to relateCapabilityGroupto and from items is created as well as the possibility to indicate the context in which thecapabilityGroupis valid for. - A complete new model for representing the ASD-series concept of product usage phase has been introduced as a managed object
Phase.Phasecan be organized in hierarchy and possibility to relatePhaseto and from items is added. - Adding support for referencing
SpaceProfilefrom any objects (application Notificaton).- New Relationship
ProfileReferenceintroduced with a propertyreferencetoSpaceProfile - New select
ProfileReferenceSelectintroduced with a propertyreferencestoProfileReference
- New Relationship
- Added
TaskMethodDefinitiontoTaskMasterVersionSelect - Unused legacy
DetailedAccessRightsremoved - Added
UserReceivedRoletoSystemTriggerActionenumeration to allow configuring invite emails
Capability assembler (CA)
- Now support a modular approach for building templates with several sources for project, split and patch files
- Split and Patch files are now proper artifact of the CA
- SoftTypes, split and patch files are merged from the different sources into a temp folder before assembling the final template
- The CA command line has now 3 new options:
- one for splitting the resulting template into a temp folder for debugging purpose
--outputSplittedTemplatePathor-os: The folder where to split the resulting template.
- one for cleaning the temp folders after the template is created (at the end of the build command logic)
--cleanor-c: Clean intermediate folders and files created for building the template
- one for injecting the version string inside the resulting template
--templateVersionor-v: Version string for the assembled template.
- one for splitting the resulting template into a temp folder for debugging purpose
ShareAspace library updates
- Organization
- added regex validation on CAGE code
- RFI management
- added RFI management fragments
- added new instance for type of
InformationSet:INFORMATION_SET_TYPE_RFA(request for approval) - added fragment project on InformationSet
- added fragment documents on InformationSet
- added acquirer acceptance on InformationSet.items
- Requirement management added:
- includes
RequirementandVerificationfragments
- includes
- Task management:
- removed
TaskInvocationonSubTaskat library level - added fragment TaskMethodVersionReference
- added support Task
- added support Task characteristics (from S-series)
- removed
- Part management:
- added fragment
PartReferenceOnPartAtomic - added fragment
PartViewReferenceAtomic - added support for FailureModeAnalysis on Part
- added support KPIs on Part / repairabilities / Repairability strategies
- added support reference data
- added fragment
- Contract management:
- added fragment
ContractItemReferenceAtomic - added fragment
ContractItemReferenceSet - added new instance for type of
Contract:CONTRACT_TYPE_SUPPORT - added fragment contracted items on contract
- added fragment contract requirements on contract
- added fragment
- DX Job
- added schema validation set to
falseforStepImportJobandSoftTypeExcelImportJob
- added schema validation set to
- Competence management
- added fragment PersonDefinition
- added fragment type on Person and Organization
- added fragment qualification and required qualification on Person/Organization
- added fragment security clearance and required security clearance on Person/Organization definition
- added fragment required nationality on Person/Organization definition
- FMEA
- added fragment for Analysis and FailureModeAnalysis
- added fragment FailureMode
- added fragment failure mode on FailureModelAnalysis
- added fragment FailureModeReferenceSet
- added fragment failure rate on FailureMode
- added reference data
- Breakdown
- added support for FailureModelAnalysis on BreakdownElement
- Location
- added fragment Country
- added Country reference data according to ISO 3166-1
- Project
- added fragment procedure documents on Project
- Resource management
- added fragment approval on ResourceOrder
- added fragment contract on DeliveryRecord
- added fragment document on ResourceOrder
- added fragment document on DeliveryRecord
- added fragment project on ResourceOrder
- State
- added fragment StateDefinitionRefenceSet
- Work
- added fragment Acknowledgement on TechnicalDataPackage
- added fragment Approval on TechnicalDataPackage
- added fragment Contract on TechnicalDataPackage
- added fragment Project on TechnicalDataPackage
- added fragment Project on WorkPackageOrder
- NATOStockItem
- removed property managingOrganization (see breaking changes)
- added regex validation on NIIN and NSC
- Reference data
- added S-series SX000i units
- complete rearchitecture for reference data modules (see breaking changes)
- change to an excel approach for creating/mastering instances which can be used for both import and artefact generator
- packaging reference data excels together with capability assembler and products
- added jobs for reference data import
- added new originating system instance for reference data
- added new role instance for StaticReferenceDataManager
- turning the following fragments as Static reference data
- Language
- Country
- Property
- Unit
- ExternalLibrary
- GeneralClass
- Status
- Aligning exposed properties for all reference data fragments (aliases, codes, alternativeNames, alternativeDescriptions, ....)
- External reference data support:
- Added new event configuration and extension logic for supporting External reference data process
- Added external reference data status on:
- Organization
- NATOStockItem
- Added indexes and queries
ShareAspace capability modules
New configuration features: Information and business capabilities as library modules
- each modules comes with predefined ready to use
- complete SoftTypes fragments
- Schemas, labels, views, indexes, structures, web clients
- Capability assembler changed to support:
- patches and split files are configuration artifacts
- modular approach for building templates (see breaking change)
- List of available capability ready to use modules:
- Information capability modules:
- ShareAspace.IC.ApprovalManagement
- ShareAspace.IC.Base
- ShareAspace.IC.ChangeManagement
- ShareAspace.IC.CompetenceManagement
- ShareAspace.IC.ConfigurationManagement
- ShareAspace.IC.Defense
- ShareAspace.IC.DocumentManagement
- ShareAspace.IC.ExportControl
- ShareAspace.IC.FailureModeManagement
- ShareAspace.IC.Function.Applicability
- ShareAspace.IC.IndividualManagement
- ShareAspace.IC.IssueManagement
- ShareAspace.IC.PartManagement
- ShareAspace.IC.ProductConfigurationManagement
- ShareAspace.IC.ProjectManagement
- ShareAspace.IC.RequirementManagement
- ShareAspace.IC.RFIManagement
- ShareAspace.IC.RFIManagement.DeliveryValidation
- ShareAspace.IC.SupplyChainManagement
- ShareAspace.IC.SupportManagement
- ShareAspace.IC.TaskManagement
- ShareAspace.IC.WorkManagement
- Business capability modules
- ShareAspace.BC.ContractingForInformation
- ShareAspace.BC.ControlledDataSharing
- ShareAspace.D2M
- ShareAspace.IPS
- ShareAspace.IPSCFI
- Other capability modules
- ShareAspace.DX.S3000L
- ShareAspace.DX.Step
- ShareAspace.CADViewer.HOOPS
- Information capability modules:
Migration
Referencing reference data in imports
The concept of reference data has been introduced in 1.9.0.
When referencing instances of GeneralClass, Unit, Property, Status, Countries, Language in import not executed by a reference data manager, the origin must be set to origin:unknown.
Unit instances
Unit instances should be now populated with acronym AND a default identifier id considered as the ShareAspace identifier.
Non ShareAspace unit instances introduced in project servers should be considered as either:
- matching an existing ShareAspace unit, in this case they should be declared as aliases on existing instances
- not matching an existing ShareAspace unit, in this case a new request/process for getting an official ShareAspace unit id should be triggered or a project specific id should be given (with project prefix)
Deprecation
Configuration: Deprecated Unit type instances
The following types for unit are deprecated and should not be used anymore:
UNIT_TYPE_IMPERIAL: Replaced byUNIT_TYPE_STANDARD_IMPERIAL,UNIT_TYPE_STANDARD_US_CUSTOMARYUNIT_TYPE_METRIC: Replaced byUNIT_TYPE_STANDARD_SIUNIT_TYPE_NON_SI: Replaced byUNIT_TYPE_STANDARD_SI_BASEDUNIT_TYPE_SI: Replaced byUNIT_TYPE_STANDARD_SI
Configuration: Deprecated Unit instances
The following unit instances are deprecated and should not be used anymore:
ReciprocalMetreDegreeOfArc(deg)MinuteOfArc(arcmin): This is a duplication ofUNIT_ARCMINUTESecondAngle("): This is a duplication ofUNIT_ARCSECONDWattSecond(Ws joule): This is a duplication ofJoule
Configuration: Snippets
The snippets artifacts introduced in 1.8.2 was an intermediate solution to a more general issue. Now that a modular approach has been adopted for the configuration, the snippets artifacts are not being used anymore in 1.9.0 and are deprecated.
Developer tooling
- The naming schema of the development kits is updated.
- New development kits has been added.
| Dev kit | Description |
|---|---|
Eurostep.ModelFramework.DevKit.Mapping.1.9.0.xyz.nupkg |
Development kit for the ShareAspace mapping framework (see Mapping framework) |
Eurostep.ModelFramework.DevKit.Mapping.Testing.1.9.0.xyz.nupkg |
Development kit for building unit tests against mapping implemented using the ShareAspace mapping framework. |
Eurostep.ModelFramework.DevKit.Toolbox.1.9.0.xyz.nupkg |
Development kit for the ShareAspace SoftType toolbox. |
Eurostep.SAS.DevKit.External.Extension.1.9.0.xyz.nupkg |
Development kit with convenience libraries for using the ShareAspace REST APIs. |
Eurostep.SAS.DevKit.External.Extension.ExternalEvent.1.9.0.xyz.nupkg |
Development kit for implementing external event handlers (see External extensions) |
Eurostep.SAS.DevKit.External.Extension.ExternalTask.1.9.0.xyz.nupkg |
Development kit for implementing external tasks (see External extensions) |
Eurostep.SAS.DevKit.External.Extension.ExternalValidation.1.9.0.xyz.nupkg |
Development kit for implementing external event validators (see External extensions) |
Eurostep.SAS.DevKit.External.Extension.FileConverter.1.9.0.xyz.nupkg |
Development kit for implementing CAD conversion. |
Eurostep.SAS.DevKit.External.Extension.FilePreview.1.9.0.xyz.nupkg |
Development kit for implementing custom file preview generators (see External extensions) |
Eurostep.SAS.DevKit.External.Extension.FullTextIndexing.1.9.0.xyz.nupkg |
Development kit for implementing custom full text indexing (see External extensions) |
Eurostep.SAS.DevKit.External.Extension.FullTextSearch.1.9.0.xyz.nupkg |
Development kit for implementing custom full text search (see External extensions) |
Eurostep.SAS.DevKit.External.Extension.Mail.1.9.0.xyz.nupkg |
Development kit for implementing custom email handling (see External extensions) |
Eurostep.SAS.DevKit.External.Logging.ShareAspace.1.9.0.xyz.nupkg |
Development kit for for reporting extension log information back to ShareAspace. (see External extensions) |
Documentation
- Updated model documentation.
- Updated installation documentation.
- Updated capability assembler documentation.
- Added Open telemetry documentation.
- Added documentation on multi zone deployment.
- Added documentation on best practices on how to manage reference data in ShareAspace.
- Added clarification on how share levels in a share package definition works.
- Added 1.9 change log, known issues, breaking changes, and migration needs.
Breaking changes
ShareAspace host configuration
The configuration of the ShareAspace host is changed in order to streamline the ShareAspace installation processes. Settings for the ShareAspace host are consolidated into the service host configuration file. This includes all path configurations. The ShareAspace host bootstrap is no longer needed and has therefor been removed.
ShareAspace host logging
The ShareAspace host logging has been replaced with the new Open telemetry logging.
Unit of information toolbox
- The ShareAspace Unit of information toolbox that provides the functionality of being able to create mappers directly to the ShareAspace core data model is removed.
- All mappings to and from ShareAspace should be built as mappers against SoftType toolboxes.
Installation packages
MSI installation packages are removed:
EventLogQueryToJson-_version_.msiInReachExtensions-_version_.msiInReachTemplates-_version_.msiNewOrganization-_version_.msiNewPhysicalItem-_version_.msiNewProductConcept-_version_.msiNewProductConfig-_version_.msiNewUser-_version_.msiUpdateProductConcept-_version_.msiUpdateProductConfig-_version_.msiUtilities-_version_.msi
Invite email
The email that invites a user to a space within ShareAspace is now fully configurable by the system configurator. The hard coded email that was sent without any trigger and subscription configurations has been removed.
Schema validation for imports
Schema validation now happens by default (same as setting validation parameter to true) in SoftType binary imports.
Note
Migration notes. If the validation parameter was not set in 1.8, it now needs to be explicitly set to false in 1.9 to keep the same behaviour as before.
Model changes, library changes, and Migration
Model: Requirement
The Requirement model was unusable therefore the RequirementStatisfactionAssertion properties requirementReference and requirement replaced with the new property satisfiedRequirement.
Note
Migration notes.
If RequirementStatisfactionAssertion was used in 1.8.2, what was pointed by the properties requirementReference and requirement should be now pointed by the property satisfiedRequirement. If both properties were populated a human decision is required.
Library: GeneralClass property code
The GeneralClass property is moved from being mapped to Text to be mapped as property Name as we need a context for it.
Note
Migration notes. In existing ShareAspace deployments the value set in the body of the Text reference code on GeneralClass instances needs to be moved the value of Name instead (default code).
Library: GeneralClass instance
Inconsistency in 1.8.2 :
- The instance with id
INTELLECTUAL_PROPERTY_RIGHT_CONSTRAINT_NOT_SUBJECT_TOis removed and replaced with instance with idINTELLECTUAL_PROPERTY_RIGHTS_CONSTRAINT_NOT_SUBJECT_TO.
Note
Migration notes.
In existing ShareAspace deployments the id of the GeneralClass instance with id
INTELLECTUAL_PROPERTY_RIGHT_CONSTRAINT_NOT_SUBJECT_TO
needs to be changed to
INTELLECTUAL_PROPERTY_RIGHTS_CONSTRAINT_NOT_SUBJECT_TO
Library: Usage of reference data
The concept of reference data has been introduced in 1.9.0.
- Static reference data have now a hardcoded origin at configuration:
sas:origin:referencedataand the owner isSpace- Therefore can only be updated via imports
- External reference data are getting an hardcoded origin
sas:origin:$spaceand a the owner is set toSpace- therefore can only be updated by a
Spaceuser that has rights to do so (i.e. an external reference data manager).
- therefore can only be updated by a
Library: NATOStockItem property managingOrganization
The property managingOrganization on NATOSTockItem has been removed
Note
Migration notes. in existing configuration if this is needed, it will be needed to be handled at specific configuration level
Library: Unit reference data modules have been reorganized
Unit reference data modules namespaces and instances have been moved and reorganized to better fit future extension capability.
In 1.8.2, instances of units are defined in:
- ShareAspace.ReferenceData.Unit.BaseSi
- ShareAspace.ReferenceData.Unit.Currency
- ShareAspace.ReferenceData.Unit.MultipleOfBaseSiUnit
- ShareAspace.ReferenceData.Unit.NamedDerivedUnit
- ShareAspace.ReferenceData.Unit.NonSIUnit
- ShareAspace.ReferenceData.Unit.UnNamedDerivedSIUnit
In 1.9.0, instances of units are defined in:
- ShareAspace.ReferenceData.Unit.Count
- ShareAspace.ReferenceData.Unit.Count.ImperialUS
- ShareAspace.ReferenceData.Unit.Count.SIBased
- ShareAspace.ReferenceData.Unit.Currency
- ShareAspace.ReferenceData.Unit.Digital
- ShareAspace.ReferenceData.Unit.Imperial
- ShareAspace.ReferenceData.Unit.ImperialUS
- ShareAspace.ReferenceData.Unit.IPS
- ShareAspace.ReferenceData.Unit.Nautical
- ShareAspace.ReferenceData.Unit.Other
- ShareAspace.ReferenceData.Unit.RateCount
- ShareAspace.ReferenceData.Unit.RateDigital
- ShareAspace.ReferenceData.Unit.RateImperial
- ShareAspace.ReferenceData.Unit.RateImpUs
- ShareAspace.ReferenceData.Unit.RateIPS
- ShareAspace.ReferenceData.Unit.RateNautical
- ShareAspace.ReferenceData.Unit.RateOther
- ShareAspace.ReferenceData.Unit.RateSIBased
- ShareAspace.ReferenceData.Unit.RateTime
- ShareAspace.ReferenceData.Unit.RateUS
- ShareAspace.ReferenceData.Unit.SIBased.Base
- ShareAspace.ReferenceData.Unit.SIBased.MultipleOfBase
- ShareAspace.ReferenceData.Unit.SIBased.NamedDerived
- ShareAspace.ReferenceData.Unit.SIBased.Other
- ShareAspace.ReferenceData.Unit.SIBased.UnNamedDerived
- ShareAspace.ReferenceData.Unit.Time
- ShareAspace.ReferenceData.Unit.USCustomary
- ShareAspace.ReferenceData.S-Series.SX000i.Unit.Count
- ShareAspace.ReferenceData.S-Series.SX000i.Unit.Count.ImperialUS
- ShareAspace.ReferenceData.S-Series.SX000i.Unit.Count.SIBased
- ShareAspace.ReferenceData.S-Series.SX000i.Unit.Digital
- ShareAspace.ReferenceData.S-Series.SX000i.Unit.Imperial
- ShareAspace.ReferenceData.S-Series.SX000i.Unit.ImperialUS
- ShareAspace.ReferenceData.S-Series.SX000i.Unit.Nautical
- ShareAspace.ReferenceData.S-Series.SX000i.Unit.Other
- ShareAspace.ReferenceData.S-Series.SX000i.Unit.Quantities
- ShareAspace.ReferenceData.S-Series.SX000i.Unit.RateCount
- ShareAspace.ReferenceData.S-Series.SX000i.Unit.RateDigital
- ShareAspace.ReferenceData.S-Series.SX000i.Unit.RateImperial
- ShareAspace.ReferenceData.S-Series.SX000i.Unit.RateImpUs
- ShareAspace.ReferenceData.S-Series.SX000i.Unit.RateNautical
- ShareAspace.ReferenceData.S-Series.SX000i.Unit.RateOther
- ShareAspace.ReferenceData.S-Series.SX000i.Unit.RateQuantities
- ShareAspace.ReferenceData.S-Series.SX000i.Unit.RateSIBased
- ShareAspace.ReferenceData.S-Series.SX000i.Unit.RateTime
- ShareAspace.ReferenceData.S-Series.SX000i.Unit.RateUS
- ShareAspace.ReferenceData.S-Series.SX000i.Unit.SIBased.Base
- ShareAspace.ReferenceData.S-Series.SX000i.Unit.SIBased.MultipleOfBase
- ShareAspace.ReferenceData.S-Series.SX000i.Unit.SIBased.NamedDerived
- ShareAspace.ReferenceData.S-Series.SX000i.Unit.SIBased.Other
- ShareAspace.ReferenceData.S-Series.SX000i.Unit.SIBased.UnNamedDerived
- ShareAspace.ReferenceData.S-Series.SX000i.Unit.Time
- ShareAspace.ReferenceData.S-Series.SX000i.Unit.USCustomary
Note
Migration notes. in existing configuration for each unit instance reference there will be a need to change to the appropriate namespace
Library: Working with the ShareAspace capabilities
Content of CA package
The CA tool package does not contain anymore:
- snippets (deprecated)
- splitFiles from D2M and from the former legacy Reference space template
Instead it contains the new capability modules:
- SoftTypes
- SplitFiles
- PatchFiles
- ShareAspace Reference data excels
Patch and split files are now CA artifacts
All split and patch files are now recognized by the capability assembler as proper artifacts. Their content needs to be adapted decorated by the CA artifact metadata.
for instance,
- Split files should now be having the extension
.SplitFile.jsonand the content should start with
{
"$version": "1.0.0",
"kind": "SplitFile",
"id": "ASplitFileArtefact",
"namespace": {
"kind": "Namespace",
"id": "XXXX"
},
"data": {
// <-- the content of the 1.8.2 split file
}
}
- Patch files should now be having the extension
.PatchFile.jsonand the content should start with
{
"$version": "1.0.0",
"kind": "PathFile",
"id": "APatchFileArtefact",
"namespace": {
"kind": "Namespace",
"id": "YYYY"
},
"data": {
// <-- the content of the 1.8.2 patch file
}
}
Modules
The modular approach for configuration comes with changes on how to build a template with the capability assembler tool.
in 1.8.2, the capability assembler tool was:
- having a single source for split and patch files and softType declaration artifacts
- using Snippets
for instance the CA project file for building D2M template in 1.8.2:
{
"outputPath": "../../../artifacts/D2M/Templates",
"templateFileName": "D2M.json",
"packages": [
"StandardLibrary",
"D2M"
],
"splitFilesPath": "./SplitFiles", //<-- SINGLE SOURCE FOR SPLIT FILES
"snippetPaths": ["./Snippets"],
"packagePaths": [
"../../../artifacts/Packages/"
],
"patchFilesPath": "./PatchFiles", //<-- SINGLE SOURCE FOR PATCH FILES
"modules":[
{
"directory": "./Fragments",
"includes": [
"D2M.Demo" //<-- ALL SOFTTYPEs (RE)DECLARATION to include in the final template IN A SIGLE FOLDER
]
}
]
}
In 1.9.0, the capability assembler (CA) is assembling the template from a list of modules (one of them must be the main project).
- The CA takes all the softTypes from the bottom of the list of modules up; if a declaration of the same softType is found going up it will overwrite the previous declaration
- merge all splitFiles found in all modules
- merge all patchFiles found in all modules and apply them in alphabetical order (hence the presence of a prefix for patches which can be used to control the alphabetical order in which the patchFiles are applied)
Note
All those artifacts sources are optional
The CA project file for building D2M template in 1.9.0 is:
{
"outputPath":"../../../../artifacts/D2M/Templates",
"templateFileName": "D2M.json",
"packages": [
"ShareAspaceLibrary",
"ShareAspaceCapabilities"
],
"packagePaths": [
"../../../../artifacts/Packages/"
],
"modules":[ // The set of modules the template is assembled from
{
"isMainProject": true, // <--- The MAIN module (one and only one should be tagged as a main project)
"directory": "../../../../ShareAspace/CapabilityAssembler/ShareAspaceCapabilities/src/ShareAspace.D2M",
"includes": [
"Project", // <-- this module SoftTypes
"PatchFiles", // <-- this module PatchFiles
"SplitFiles" // <-- this module SplitFiles
],
},
{
// another module used for assembling the template
"directory": "../../../../ShareAspace/CapabilityAssembler/ShareAspaceCapabilities/src/ShareAspace.DX.Step",
"includes": [
"Project", // <-- this module SoftTypes
"PatchFiles", // <-- this module PatchFiles
"SplitFiles" // <-- this module SplitFiles
],
"prefixForPatches": "02"
},
{
// yet another another module used for assembling the template
"directory": "../../../../ShareAspace/CapabilityAssembler/ShareAspaceCapabilities/src/ShareAspace.BC.ContractingForInformation",
"includes": [
"Project",
"PatchFiles",
"SplitFiles"
],
"prefixForPatches": "02"
},
{
"directory": "../../../../ShareAspace/CapabilityAssembler/ShareAspaceCapabilities/src/ShareAspace.BC.ControlledDataSharing",
"includes": [
"Project",
"PatchFiles",
"SplitFiles"
],
"prefixForPatches": "01"
},
{
"directory": "../../../../ShareAspace/CapabilityAssembler/ShareAspaceCapabilities/src/ShareAspace.IC.RFIManagement",
"includes": [
"Project",
"PatchFiles",
"SplitFiles"
],
"prefixForPatches": "00"
},
// ....
]
}
CA and other tools command line
Since the CA is now recognizing Split and Patch files there is no need to call the splitter and the patcher explicitly in the workflow for building a template.
in 1.8.2, the workflow was:
- call CA package command to package the fragments
sas-ca.exe package configuration.caproj
- call CA build command to build the template
sas-ca.exe build project.v1.8.2.caproj
- call CA split command to split, normalize and reassemble the resulting template into a temp folder
sas-ca.exe split -s -ysas-ca.exe split -nsas-ca.exe split -a -y
- call a script to inject the version in the template
in 1.9.0, the workflow is:
- call CA package command to package the fragments
sas-ca.exe package configuration.caproj
- call CA build command to build the template with new options for cleaning temp folder, splitting the resulting template and passing the version to the template
sas-ca.exe build project.v1.9.0.caproj ---outputSplittedTemplatePath="./Temp" --clean --templateVersion $version