Please ensure Javascript is enabled for purposes of website accessibility
Powered by Zoomin Software. For more details please contactZoomin

AVEVA NET Gatekeeper and AVEVA Change Manager

Upgrading an Existing Class Library

  • Last UpdatedApr 29, 2026
  • 7 minute read

Additional features can be enabled through the Class Library in 4.9 and 5.0. Familiarise yourself with the change detailed in this section and plan any upgrade accordingly.

Document Storage Attribute

By default, most attributes have a single value. There are, however, a limited number of attributes that can be configured to have multiple values.

The attribute with the aspect "Attributes.DocumentStorage" is one of these. The values for this attribute represent the different formats of the physical document that are available, from the predefined list in AVEVA WorkMate EAM.

In order to turn the corresponding attribute into the attribute storing multiple values "maxOccurs" should have a value greater than 1 specified in the XML Class Library attribute definition. The Max Occurs value represents the maximum number of values that can be stored for the attribute. You might want to assign the number of all the available formats if you do not want to limit it.

This is not a problem if:

  • You do not have integration with AVEVA WorkMate EAM enabled and/or you do not use such an attribute.

  • You want to allow the attribute with the aspect "Attributes.DocumentStorage" to have just a single value.

    IS_EXCLUSIVELY_OWNED_BY Association on Class PLANT

A greenfield data bulk upload validation rule is available for use. The system validates whether the Asset, for which code is provided in the Facility node of the input file, is owned by the Project, the name of which is specified in the Envelope node's attribute projectOwnerName of the same file. The rule requires the Class Library to be configured. Therefore, use the following instructions to update the Class Library:

  1. Find PLANT:

    ...
    <anet:Classes>
    ...
    <anet:PLANT ... />
    ...
    </anet:Classes>
    ...

  2. Add the following association into PLANT:

    ...
    <anet:Associations>
    ...
    <anet:is_exclusively_owned_by type="{the name of the type of the association should be specified here}" classId="{the id of the class anet:DATA_OWNER should be specified here}" />
    ...
    </anet:Associations>
    ...

Change in Behaviour of Read-Only Attribute

You cannot modify the value of an Attribute either through the user interface or during the bulk upload process if in the Class Library, the attribute extension tim:Gui readonly is set to true. It is recommended that you set this value to false for those attributes that you wish to have modified.

For example, to change the behaviour of the Document Status attribute, the tim:GUI readonly extension in the Class Library file is set as false:

<Attribute id="ATTR200060" externalId="221" obsolete="false" aspect="Attributes.DocumentStatus" name="Document status" description="Document status" presence="Optional" uomRequired="false" groupId="Document Specific" concept="Document" dataType="String">
<Extension>
<tim:Gui readonly="false" />
</Extension>
</Attribute>

Adding Installed Tag Status to Class Library

If the enumeration list of statuses is assigned to the Aspects for Attributes.TagStatus, the Installed status needs to be added to the list. To add Installed to the list of statuses, use the following command:

<List id="TAG-STATUS" name="Tag Status" description="List of values describing Tag Status.">
<Items>
<Item id="{null}" name="Unspecified" />
<Item id="Active" name="Active" />
...
<Item id="Installed" name="Installed" />
...
</Items>
</List>

After you have added the Installed status, reload the Class Library into AVEVA NET Gatekeeper or AVEVA Change Manager.

PlatformCode Attribute Support

If an attribute of a functional class is marked with the aspect Attributes.PlatformCode, the value of this attribute is used as a filtering value for the Parent Tag query used for selection and validation. In other words, a Parent Tag must belong to the same Platform that the current Tag belongs to.

EXCLUSIVELY_OWNS Association on Class DATA OWNER

The Available Project Owners list is available for use by Allocator in AVEVA NET Gatekeeper. The list is meant for showing the Project Owners owning the Asset selected on the previous step of the Working Set creation wizard. To display such Project Owners, a proper filter must be configured via the Class Library; otherwise, all existing Project Owners will be displayed. Therefore, use the following instructions to update the Class Library:

  1. Find DATA OWNER:

    ...
    <anet:Classes>
    ...
    <anet:DATA_OWNER... />
    ...
    </anet:Classes>
    ...

  2. Add the following association into DATA OWNER:

    ...
    <anet:Associations>
    ...
    <anet:exclusively_owns type="{the name of the type of the association should be specified here}" classId="{the id of the class anet:PLANT should be specified here}" />
    ...
    </anet:Associations>
    ...

    Functional Hierarchic Taxonomy Support

    Asset breakdown structure can be represented as a Functional Hierarchic Taxonomy in the Class Library and linked to one or more Assets as shown below:

    ...
    <Enumerations>
    ...
    <List id="Assets" aspect="Enumerations.Assets">
    ...
    <Item id="{asset_id}" ...>
    <Extension ... tim:functionalHierarchicTaxonomy="{functional_hierarchic_taxonomy_id}">
    ...
    </Extension>
    ...
    </Item>
    ...
    </List>
    ...
    </Enumerations>
    ...
    <Taxonomies>
    ...
    <Taxonomy id="{functional_hierarchic_taxonomy_id}" asset="{asset_id}" concept="Functional" ...>
    ...
    </Taxonomy>
    ...
    </Taxonomies>
    ...

    Functional Hierarchic Taxonomies can be set up and configured for a specific Asset using AVEVA Information Standards Manager™.

    ModProjectCode Attribute Support

    If an attribute of a class is marked with the aspect Attributes.ModProjectCode, the value of this attribute in a Tag or Document is automatically set to the value of the Modification Project with which the Working Set is associated. Although the attribute can be editable, its value is always reset to the code of the Modification Project, which the Working Set refers to by the system. So, this value is recommended to be read-only in the Class Library.

    Note: The attribute can be set to a value from the input file in AVEVA NET Gatekeeper as Modification Projects are not used in Greenfield.

    If you intend to use the attribute, you must update the new or checked out Tags or Documents using the following SQL-script after the updated Class Library containing this attribute has been successfully uploaded to the application. Replace the keyword {ModProjectCode_attribute_GEICL_id} with the Class Library ID of the attribute and execute the script.

    Note: If the configuration setting NonCheckedOutActivePhysicalFileUpdate is set to true, you must update the non-checked out Documents. So you must uncomment the lines that are commented out in the SQL-script listed below.

    Back up the existing database before running the SQL-script to restore it later if some errors occur. Be aware that the SQL-script must be run only once and should throw no exceptions.

    DECLARE @UPDATED_DATASET_IDS TABLE(ID INT NULL)
    INSERT INTO TIM_DATASET_ATTRIBUTE
    ( TIM_DATASET_ATTRIBUTE_GUID
    , TIM_DATASET_ATTRIBUTE_VALUE
    , TIM_EICL_CLASS_ATTRIBUTE_ID
    , TIM_DATASET_ATTRIBUTE_CREATEDDATE
    , TIM_DATASET_ATTRIBUTE_CREATEDBYID
    , TIM_DATASET_ATTRIBUTE_UPDATEDDATE
    , TIM_DATASET_ATTRIBUTE_UPDATEDBYID
    , TIM_DATASET_ID)
    OUTPUT inserted.TIM_DATASET_ID INTO @UPDATED_DATASET_IDS
    SELECT
    NEWID()
    , WS.TIM_WORKINGSET_MODPROJCODE
    , CA.TIM_EICL_CLASS_ATTRIBUTE_ID
    , GETDATE()
    , 1
    , GETDATE()
    , 1
    , DS.TIM_DATASET_ID
    FROM TIM_TAG TAG
    INNER JOIN TIM_WORKINGSET WS ON TAG.TIM_WORKINGSET_ID = WS.TIM_WORKINGSET_ID
    INNER JOIN TIM_DATASET DS ON TAG.TIM_DATASET_ID = DS.TIM_DATASET_ID
    INNER JOIN TIM_EICL_CLASS_ATTRIBUTE CA ON DS.TIM_EICL_CLASS_ID = CA.TIM_EICL_CLASS_ID
    INNER JOIN TIM_EICL_ATTRIBUTE A ON CA.TIM_EICL_ATTRIBUTE_ID = A.TIM_EICL_ATTRIBUTE_ID
    WHERE WS.TIM_WORKINGSET_NEXTVERSION_ID IS NULL
    AND TAG.TIM_TAG_STATE IN (0,1)
    AND A.TIM_EICL_ATTRIBUTE_GEICL_ID = '{ModProjectCode_attribute_GEICL_id}'
    UPDATE TIM_TAG
    SET TIM_TAG_ISVALIDATED = 0
    FROM TIM_TAG
    WHERE TIM_DATASET_ID IN (SELECT ID FROM @UPDATED_DATASET_IDS)
    INSERT INTO TIM_DATASET_ATTRIBUTE
    ( TIM_DATASET_ATTRIBUTE_GUID
    , TIM_DATASET_ATTRIBUTE_VALUE
    , TIM_EICL_CLASS_ATTRIBUTE_ID
    , TIM_DATASET_ATTRIBUTE_CREATEDDATE
    , TIM_DATASET_ATTRIBUTE_CREATEDBYID
    , TIM_DATASET_ATTRIBUTE_UPDATEDDATE
    , TIM_DATASET_ATTRIBUTE_UPDATEDBYID
    , TIM_DATASET_ID)
    OUTPUT inserted.TIM_DATASET_ID INTO @UPDATED_DATASET_IDS
    SELECT
    NEWID()
    , WS.TIM_WORKINGSET_MODPROJCODE
    , CA.TIM_EICL_CLASS_ATTRIBUTE_ID
    , GETDATE()
    , 1
    , GETDATE()
    , 1
    , DS.TIM_DATASET_ID
    FROM TIM_DOC DOC
    INNER JOIN TIM_WORKINGSET WS ON DOC.TIM_WORKINGSET_ID = WS.TIM_WORKINGSET_ID
    --INNER JOIN GEN_WF_INSTANCE WFI ON WS.TIM_WORKINGSET_GUID = WFI.GEN_WF_INSTANCE_OBJECT
    --INNER JOIN GEN_WF_STATUS WFS ON WFI.GEN_WF_STATUS_ID = WFS.GEN_WF_STATUS_ID
    INNER JOIN TIM_DATASET DS ON DOC.TIM_DATASET_ID = DS.TIM_DATASET_ID
    INNER JOIN TIM_EICL_CLASS_ATTRIBUTE CA ON DS.TIM_EICL_CLASS_ID = CA.TIM_EICL_CLASS_ID
    INNER JOIN TIM_EICL_ATTRIBUTE A ON CA.TIM_EICL_ATTRIBUTE_ID = A.TIM_EICL_ATTRIBUTE_ID
    WHERE WS.TIM_WORKINGSET_NEXTVERSION_ID IS NULL
    AND (DOC.TIM_DOC_STATE IN (0,1,4) /*OR (DOC.TIM_DOC_STATE = 2 AND WFS.GEN_WF_STATUS_NAME = 'workingset_active')*/)
    AND A.TIM_EICL_ATTRIBUTE_GEICL_ID = '{ModProjectCode_attribute_GEICL_id}'
    UPDATE TIM_DOC
    SET TIM_DOC_ISVALIDATED = 0
    FROM TIM_DOC
    WHERE TIM_DATASET_ID IN (SELECT ID FROM @UPDATED_DATASET_IDS)

    Attribute extension <tim:ExcelBulkDownload ../>

    The attribute extension <tim:ExcelBulkDownload ../> is required for configuration of the attribute export process in the scope of Working Set to Excel file download. The following extension property is currently supported:

    hidden – a boolean flag indicating whether the column representing the attribute is to be hidden in the output Excel file or not. If the extension is absent or the property hidden is set to false, the column is to be included into the output file. If the property hidden is set to true, the column is to be excluded from the output file.

    The extension <tim:ExcelBulkDownload ../> can be set up and configured for a specific attribute using AVEVA Information Standards Manager™.

    Data prefetch configuration for attribute extension <tim:ValidateAsReference ../>

    If the attribute extension <tim:ValidateAsReference classId="..." context="..." /> is used to validate the attribute's value against the external reference list of valid values stored in the backend system, the validation performance can be improved by means of the property prefetchData="true", that is, <tim:ValidateAsReference classId="..." context="..." prefetchData="true" />. In such case, the whole list of valid values (for example, the collection of System codes, Area codes, etc.) is fetched from the backend system during the first validation call and cached for further use.

    Notes:

    1. When the data prefetching mechanism is used, the maximum number of items in the external reference list is not limited and depends on environment performance and connection bandwidth between the AVEVA NET Gatekeeper or AVEVA Change Manager web server and the AVEVA NET Workhub and Dashboard server. If the environment satisfies the minimum system requirements mentioned in 4 System Requirements and the number of data items in the external reference list is less than or equals to 3000, the property prefetchData="true" is recommended to be used. In the other case, some preliminary testing is recommended.

    2. Be aware that the AVEVA NET Workhub and Dashboard EIA services have the default maximum number of data items that can be returned at once during a data retrieve call. It is 250. If a longer external reference list is expected to be used for attribute validation by means of the extension <tim:ValidateAsReference classId="..." context="..." prefetchData="true" />, specify the property pagesize with an appropriate value in the section <dataSource ../> of the configuration file AVEVA.NET.Services.OPE.DomainHost.exe.config in the EIA services' working directory which is C:\Program Files\AVEVA\AVEVA NET\EIA by default.

      ...

      <dataSourceConfiguration>

      ...

      <dataSources>

      ...

      <dataSource name="..." server="..." username="..." password="..." pagesize="3000"/>

      ...

      </dataSources>

      ...

      </dataSourceConfiguration>

      In This Topic
      TitleResults for “How to create a CRG?”Also Available in