Table of Contents
Last updated: 12/12/2025

ShareAspace 1.9


Platform


.NET 10

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 GrantDetailedAccess as an external access right to another Participant.
    • If Participant A grants GrantDetailedAccess to a Participant B, a user with a role assignment in Participant B, where the role has the GrantDetailedAccess access modifier, will be able to change ownership of data owned by Participant A.
  • 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 changeOwner and plm/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 .log is configured as a restricted file type for a space ShareAspace will no longer append the .log extension to to the logFilePath of DataExchange jobs. Instead, if .log is 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 UserInvitedToSpace combined 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.
    • Read more about he liquid updates here.
    • See examples of invite email liquid templates here.

Reverse proxy transform

  • A new custom transformation ResponseBodyReplaceDomainWithHost has 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.domain and the ShareAspace body contains internal.domain, the transformation will replace all instances of internal.domain of the response body with external.domain.
  • 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 trustedIdentityProvider will 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.2 to get this feature support. Note that ExternalCollection behaves like a Set in JavaScript.
    • The data maintenance project template has been updated with a new example script: delete-cancelled-dx-jobs.ts.

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 newVersion action 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, and hideVersionFilter. 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 SoftTypeFileWriter task 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


  • Unit is now an optional identifiable object.
  • Unit is added to StateDefinitionOfItemSelect and StateOfItemSelect.
  • Support for more information on history entries on work item.
    • a new property alias is added to the WorkItemHistory object in the Application model.
  • The ExternalAccessRights value type has been with GrantDetailedAccess.
  • A change in the Requirement model 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 requirements
    • RequirementSatisfactionAssertion : 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 an EnvironmentObserved to and EnvironmentDefinition, as well as referring to them from items.
  • StateDefinition model 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 a StateDefinition (1.8.2 only had the capability to link items to StateDefinition).
  • 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 Condition in the PLM model. For the purpose of not adding an unnecessary subtype of Condition, a time series entry is mapped to a TextBaseCondition in 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 to Contract).
  • Added to Contract to RequirementReferenceSelect
  • A new relationship is introduced to be able to link item from a Project (1.8.2 had the capability to link items to Project).
  • 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). CapabilityGroup can be organized in hierarchy and possibility to relate CapabilityGroup to and from items is created as well as the possibility to indicate the context in which the capabilityGroup is valid for.
  • A complete new model for representing the ASD-series concept of product usage phase has been introduced as a managed object Phase. Phase can be organized in hierarchy and possibility to relate Phase to and from items is added.
  • Adding support for referencing SpaceProfile from any objects (application Notificaton).
    • New Relationship ProfileReference introduced with a property reference to SpaceProfile
    • New select ProfileReferenceSelect introduced with a property references to ProfileReference
  • Added TaskMethodDefinition to TaskMasterVersionSelect
  • Unused legacy DetailedAccessRights removed
  • Added UserReceivedRole to SystemTriggerAction enumeration 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
      • --outputSplittedTemplatePath or -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)
      • --clean or -c: Clean intermediate folders and files created for building the template
    • one for injecting the version string inside the resulting template
      • --templateVersion or -v: Version string for the assembled template.

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 Requirement and Verification fragments
  • Task management:
    • removed TaskInvocation on SubTask at library level
    • added fragment TaskMethodVersionReference
    • added support Task
    • added support Task characteristics (from S-series)
  • 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
  • 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
  • DX Job
    • added schema validation set to false for StepImportJob and SoftTypeExcelImportJob
  • 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

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:

  1. matching an existing ShareAspace unit, in this case they should be declared as aliases on existing instances
  2. 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 by UNIT_TYPE_STANDARD_IMPERIAL, UNIT_TYPE_STANDARD_US_CUSTOMARY
  • UNIT_TYPE_METRIC: Replaced by UNIT_TYPE_STANDARD_SI
  • UNIT_TYPE_NON_SI: Replaced by UNIT_TYPE_STANDARD_SI_BASED
  • UNIT_TYPE_SI: Replaced by UNIT_TYPE_STANDARD_SI

Configuration: Deprecated Unit instances

The following unit instances are deprecated and should not be used anymore:

  • ReciprocalMetre
  • DegreeOfArc (deg)
  • MinuteOfArc (arcmin): This is a duplication of UNIT_ARCMINUTE
  • SecondAngle ("): This is a duplication of UNIT_ARCSECOND
  • WattSecond (Ws joule): This is a duplication of Joule

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


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_.msi
  • InReachExtensions-_version_.msi
  • InReachTemplates-_version_.msi
  • NewOrganization-_version_.msi
  • NewPhysicalItem-_version_.msi
  • NewProductConcept-_version_.msi
  • NewProductConfig-_version_.msi
  • NewUser-_version_.msi
  • UpdateProductConcept-_version_.msi
  • UpdateProductConfig-_version_.msi
  • Utilities-_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_TO is removed and replaced with instance with id INTELLECTUAL_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:referencedata and the owner is Space
    • Therefore can only be updated via imports
  • External reference data are getting an hardcoded origin sas:origin:$space and a the owner is set to Space
    • therefore can only be updated by a Space user that has rights to do so (i.e. an external reference data manager).

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,

  1. Split files should now be having the extension .SplitFile.json and 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
  }
}
  1. Patch files should now be having the extension .PatchFile.json and 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:

  1. having a single source for split and patch files and softType declaration artifacts
  2. 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:

  1. call CA package command to package the fragments
  • sas-ca.exe package configuration.caproj
  1. call CA build command to build the template
  • sas-ca.exe build project.v1.8.2.caproj
  1. call CA split command to split, normalize and reassemble the resulting template into a temp folder
  • sas-ca.exe split -s -y
  • sas-ca.exe split -n
  • sas-ca.exe split -a -y
  1. call a script to inject the version in the template

in 1.9.0, the workflow is:

  1. call CA package command to package the fragments
  • sas-ca.exe package configuration.caproj
  1. 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