Multimapping
- Last UpdatedJun 17, 2026
- 4 minute read
The Gateway’s Transformation component allows you to configure multiple Base Mapping extensions. This is useful when you need to perform transformations on extracted data that a single Base Mapping extension cannot accomplish.
The following are typical use cases for multiple Base Mapping extensions:
Use case 1—Ensure correct ObjectID values in multiple mappings
The Gateway supports using ObjectID directly as an attribute. In most cases, this works well to retrieve values for conditions, set ObjectID, create new attributes or associations, and perform similar operations.
However, if you need to apply transformations to ObjectID and then use ObjectID again in another mapping within the same object node, the execution may not produce the expected outcome. This occurs because ObjectID is modified in one section and referenced again in a different section of the same object node, which may still refer to the previous value.
In such situations, it is recommended that you do the following:
-
In the first mapping, create a new attribute that stores the intended value of ObjectID.
-
In subsequent mappings, use ObjectID only for element identification where required, and use the newly created attribute (as the ObjectID node value) to apply the necessary transformations.
-
After all transformations have been applied to the attribute, then update ObjectID to the same value.
-
If you do not want the additional attribute to appear in the EIWM output, use an extra mapping file to remove it.
Transform configuration:
<extensions>
<extension name="BaseMapping">
<mapping locator="..\Mappings\<<First Mapping File>>" />
<annotations level="Basic" />
</extension>
<extension name="BaseMapping">
<mapping locator="..\Mappings\<<Second Mapping File>>" />
<annotations level="Basic" />
</extension>
<extension name="BaseMapping">
<mapping locator="..\Mappings\<<Third Mapping File>>" />
<annotations level="Basic" />
</extension>
</extensions>
First base mapping extension:
<Object>
<Conditions>
<Attribute name="ObjectID" pattern=".*" />
</Conditions>
<Attributes>
<Attribute>
<Name value="Label" />
<Value value="[ObjectID]" />
</Attribute>
</Attributes>
</Object>
Second base mapping extension:
<Object>
<Conditions>
<Attribute name="Label" pattern="[A-Z]{1}\d{4}[A-Z]{1}\d{2}[A-Z\d]{1,2}" />
</Conditions>
<ObjectID value="[Label]">
<Transforms>
<Keep pattern="[A-Z]{1}\d{4}[A-Z]{1}\d{2}[A-Z\d]{1,2}" />
</Transforms>
</ObjectID>
<ClassID value="unknown" />
<Attributes keepUnmappedAttributes="false" />
<Associations>
<Conditions>
<Attribute name="ObjectID" pattern="[A-Z]{1}\d{4}[A-Z]{1}\d{2}[A-Z\d]{1,2}" />
</Conditions>
<TargetID value="Destination-200" />
<TargetClassID value="Destination" />
</Associations>
</Object>
Third base mapping extension: To remove label attribute
<Object>
<Conditions>
<Attribute name="ObjectID" pattern=".*" />
</Conditions>
<Attributes>
<Attribute name="Label">
<Remove />
</Attribute>
</Attributes>
</Object>
Use case 2—Create a new object from an Attribute of an existing object, without retaining the association in the final EIWM
-
In the first Base Mapping file, create an association that generates the new object using attributes of the parent object. This step also creates the new object.
-
In the second Base Mapping file, remove the association from the parent object.
Transform configuration:
<extension name="BaseMapping">
<mapping locator="..\Mappings\DefaultBaseMapping-CreateObjectsWithAssociation.xml" />
<annotations level="Basic" />
</extension>
<extension name="BaseMapping">
<mapping locator="..\Mappings\DefaultBaseMapping-Remove Association.xml" />
<annotations level="Basic" />
</extension>
First base mapping extension:
<Object>
<Conditions>
<Attribute name="ID" />
</Conditions>
<ObjectID value="[ID]" />
<ClassID value="PipingSystem" />
<Associations keepUnmappedAssociations="true">
<Association>
<Type value="is related to" />
<Conditions>
<Attribute name="PersistentIDIdentifier" />
</Conditions>
<TargetID value="[PersistentIDIdentifier]" />
<TargetClassID value="PersistentObject" />
</Association>
</Associations>
</Object>
Second base mapping extension:
<Object>
<Conditions>
<Attribute name="ID" />
</Conditions>
<ObjectID value="[ID]" />
<ClassID value="PipingSystem" />
<Associations keepUnmappedAssociations="true">
<Association relationship="is related to">
<Remove />
</Association>
</Associations>
</Object>
Use case 3—Retain the object attributes in a dataset, while using those attributes to perform transformations in different sections
-
Perform all required transformations using the attributes in the first and subsequent mapping files.
-
In the final mapping file, move all required attributes into the relevant datasets.
Transform configuration:
<extension name="BaseMapping">
<mapping locator="..\Mappings\DefaultBaseMapping-AttributeTransform.xml" />
<annotations level="Basic" />
</extension>
<extension name="BaseMapping">
<mapping locator="..\Mappings\DefaultBaseMapping-MovetoDataset.xml" />
<annotations level="Basic" />
</extension>
First base mapping extension:
<Object>
<ObjectID value="[Handle]" />
<ClassID value="Equipment" />
<Attributes>
<Attribute name="Handle" pattern=".*">
<Value value="Handle:[Handle]" />
</Attribute>
</Attributes>
</Object>
Second base mapping extension:
<Datasets>
<Dataset id="Dataset2">
<DatasetID>
<Transforms>
<InsertAfter pattern="^.*$" value=" - Related Element Dataset" />
</Transforms>
</DatasetID>
<ClassID value="DATASET" />
</Dataset>
</Datasets>
<ObjectMappings regExTimeoutSecs="10">
<Object>
<Conditions>
<Attribute name="#TYPE#" pattern="^manifests$" />
</Conditions>
<ObjectID value="[MODEL_NAME#]" />
<ClassID value="P&ID" />
</Object>
<Object>
<ObjectID value="[ObjectID]" />
<ClassID value="Equipment" />
<Attributes>
<Attribute name="*" pattern=".*">
<Dataset id="Dataset2" />
<Remove />
</Attribute>
</Attributes>
</Object>
</ObjectMappings>
Use case 4—Store object attributes in a dataset first before applying transformations to the dataset objects
-
In the first mapping file, move all required attributes into the datasets.
-
In subsequent mapping files, perform the required transformations on the newly created dataset objects.
Transform configuration:
<extension name="BaseMapping">
<mapping locator="..\Mappings\DefaultBaseMapping-MovetoDataset.xml" />
<annotations level="Basic" />
</extension>
<extension name="BaseMapping">
<mapping locator="..\Mappings\DefaultBaseMapping-AttributeTransform.xml" />
<annotations level="Basic" />
</extension>
First base mapping extension:
<Datasets>
<Dataset id="Dataset2">
<DatasetID>
<Transforms>
<InsertAfter pattern="^.*$" value=" - Related Element Dataset" />
</Transforms>
</DatasetID>
<ClassID value="DATASET" />
</Dataset>
</Datasets>
<ObjectMappings regExTimeoutSecs="10">
<Object>
<Conditions>
<Attribute name="#TYPE#" pattern="^manifests$" />
</Conditions>
<ObjectID value="[#MODEL_NAME#]" />
<ClassID value="P&ID" />
</Object>
<Object>
<ObjectID value="[Handle]" />
<ClassID value="Equipment" />
<Attributes>
<Attribute name="*" pattern=".*">
<Dataset id="Dataset2" />
<Remove />
</Attribute>
</Attributes>
</Object>
</ObjectMappings>
Second base mapping extension:
<Object>
<Conditions>
<Attribute name="ObjectID" pattern=".*Related Element Dataset" />
</Conditions>
<ObjectID value="[ObjectID]" />
<ClassID value="Dataset" />
<Attributes>
<Attribute name="Handle" pattern=".*">
<Value value="Handle:[Handle]" />
</Attribute>
</Attributes>
</Object>