The Engineering Numbering System (ENS) provides automated object identification, which allows project-specific identification formats to be configured as templates. These templates guide the user when creating new objects.
The ENS definition is composed of various components called ENS items that can extract data from constants and from other properties on the object or related objects. These components are configured in sequence with additional delimiter characters to define the required format.
If a class definition is configured to use ENS in the target system database, then the object name is set by the ENS definition instead of using the actual name of the object provided in the CSV file during export.
If the ENS definition is related to a property definition, such as Name, and this property definition is referred to in a UID or unique key, then Data Validator fails to identify the object and leads to export failures. This is because the relationships are processed as the UIDs or unique keys and these get changed according to the ENS definition.
It is not recommended to run jobs in parallel when using ENS because it might lead to data corruption and unexpected results.
Configuration for a tag object
To map a tag object available in the CSV file with the tag object in the target system database, do the following:
-
Ensure the DevTag class definition optionally realizes the ISPFENSRefDetails interface. This interface exposes the ENSRefName property to store the tag name from the CSV file.
<Rel>
<IObject UID="DEVTag.Realizes.ISPFENSRefDetails" />
<ISchemaObj />
<IRel UID1="DEVTag" DefUID="Realizes" UID2="ISPFENSRefDetails" />
</Rel>
-
Create an import mapping with a computed column, as shown in the example below.
-
Map the tag name from the CSV file to the ENSRefName property of the tag object.
-
Get the actual tag name from the target system, and map it to the Name property.
-
The ENSRefName property definition is used to store the original name of the tag object from the CSV file and helps Data Validator identify the tag object within the target system during the update, delete, and terminate object actions.
For example, if ENS is configured on the Name property of a tag, such as [Current Config][-][TG][-][Sequence], and TAG1 is exported to the target system where the configuration is PlantA and 'TG' is a constant, then the name of the tag in the target system is set to PlantA-TG-00001 and the ENSRefName property to TAG1.
Example CSV file
Object mapping example
Column header |
Column type |
Object mappings |
Object name |
---|---|---|---|
TAG NAME |
Physical |
DevTag |
DevTag |
CLASS |
Physical |
SPFEquipmentClass |
SDVEquipmentClass |
AREA |
Physical |
SPFFunctionalArea |
SDVFunctionalArea |
SYSTEM |
Physical |
SPFSystem |
SDVSystem |
CONTRACT |
Physical |
SPFContract |
SDVContract |
Property mapping example
Column header |
Column type |
Property mappings |
Parent objects |
---|---|---|---|
COMP_Actual_TS_Tag_Name |
Computed |
Name (Create Update action) |
TAG NAME |
COMP_Tag_Ref_Name |
Computed |
ENSRefName (Create Update action) |
TAG NAME |
Computed column for COMP_Actual_TS_Tag_Name
func.GetTargetSystemValueIfEmptyReturnDefault("true", [TAGNAME], "#DEVTag,.ENSRefName=[TAGNAME]", ".Name")
Computed column for COMP_Tag_Ref_Name
func.Concat({[TAG NAME]})
Configuration for a document object
If you have configured ENS for a document master, revision, and/or version, the SPFDesignDocMaster and the SPFDesignDocRevision class definitions must optionally realize the ISPFENSRefDetails interface definition, which exposes the ENSRefName property. The document number value must be set on the master object’s ENSRefName property. The document number, major revision, and minor revision must be set on the ENSRefName property of the revision object.
To map a document object available in the CSV file with the document object in the target system database, do the following:
-
Ensure the ISPFENSRefDetails interface is optionally realized by the SPFDesignDocMaster and SPFDesignDocRevision class definitions. This interface exposes the ENSRefName property to store the document name and revision code from the CSV file.
<Rel>
<IObject UID="SPFDesignDocMaster.Realizes.ISPFENSRefDetails" />
<ISchemaObj />
<IRel UID1="SPFDesignDocMaster" DefUID="Realizes" UID2="ISPFENSRefDetails" />
</Rel>
<Rel>
<IObject UID="SPFDesignDocRevision.Realizes.ISPFENSRefDetails" />
<ISchemaObj />
<IRel UID1="SPFDesignDocRevision" DefUID="Realizes" UID2="ISPFENSRefDetails"/>
</Rel>
-
Create an import mapping with a computed column, as shown in the example below.
-
Map the document name from the CSV file to the ENSRefName property of the document master object.
-
Map the document name and the revision code to the ENSRefName property of the document revision object.
-
Get the actual document name from the target system, and map it to the Name property of the document master and revision object.
The files attached to the document can be identified using the query definition, +SPFFileComposition.ENSRefName,.Name. This query definition needs to be modified, for your staging schema.
-
Example CSV file
Object mapping example
Column header |
Column type |
Object mappings |
Property mappings |
Object name |
---|---|---|---|---|
DOCUMENT_NUMBER |
Physical |
SPFDesignDocMaster |
SDVSPFDesignDocMaster |
|
REVISION_CODE |
Physical |
SPFExternalRevision |
SDVSPFExternalRevision |
|
ISSUE_DATE |
Physical |
|||
DOCUMENT_TYPE |
Physical |
SPFDocumentClass |
SDVSPFDocumentClass |
|
DOCUMENT_TITLE |
Physical |
|||
REVISION_SCHEME |
Constant |
SPFRevisionScheme |
SDVSPFRevisionScheme |
|
OWNING_GROUP |
Constant |
SPFDataAccessGroup |
SDVSPFDataAccessGroup |
|
ISSUE_DATE_CONV |
Computed |
SPFRevIssueDate |
SDVRevIssueDate |
|
COMP_DOC_REVISION |
Computed |
SPFDesignDocRevision |
SDVSPFDesignDocRevision |
|
MAJORREVISION |
Computed |
SPFMajorRevision |
SDVSPFDesignDocRevision |
|
MINORREVISION |
Computed |
SPFMinorRevision |
SDVSPFDesignDocRevision |
Property mapping example
Column header |
Column type |
Property mappings |
Parent objects |
---|---|---|---|
COMP_Master_Actual_TS_Name |
Computed |
Name (Create Update action) |
COMP_DOC_REVISION and DOCUMENT_NUMBER |
COMP_Master_Ref_Name |
Computed |
ENSRefName (Create Update action) |
DOCUMENT_NUMBER |
COMP_Revision_Ref_Name |
Computed |
ENSRefName (Create Update action) |
COMP_DOC_REVISION |
Computed column for COMP_Master_Actual_TS_Name
func.GetTargetSystemValueIfEmptyReturnDefault("true", [DOCUMENT_NUMBER],"#SPFDocumentMaster,.ENSRefName=[DOCUMENT_NUMBER]", ".Name")
Computed column for COMP_Master_Ref_Name
func.Concat({[DOCUMENT_NUMBER]})
Computed column for COMP_Revision_Ref_Name
func.Concat({[DOCUMENT_NUMBER], "_", [MAJOR_REVISION],"_", [MINOR_REVISION]})