---
sourceDocument: Yokohama API Reference
sourceDocumentLink: https://servicenow-prod.fluidtopics.net/r/yokohama/api-reference

 Release :

    - yokohama

ft:locale :

    - en-US

ft:publication_title :

    - Yokohama API Reference

ft:clusterId :

    - crapiref

bundleId :

    - crapiref

workflow :

    - Creator


---

# GlideTransientDynamicAttribute - Global

# GlideTransientDynamicAttribute - Global {#ariaid-title1}

Release version: Yokohama  
Updated January 30, 2025  
![](https://www.servicenow.com/docs/portal-asset/ico-clock) 7 minutes to read  
The GlideTransientDynamicAttribute API provides access to transient dynamic attribute metadata.

This API provides methods that enable you to get transient dynamic attributes values that are added to a DynamicAttributeStore field and not defined in the Dynamic Attribute \[dynamic_attribute\] table. Transient dynamic attributes are
all handled as String data types and have no sys_id. For more details on dynamic attributes, see [Dynamic schema](https://www.servicenow.com/docs/access?context=dynamic-schema&version=yokohama&pubname=yokohama-platform-administration&ft:locale=en-US). The same methods are also available for dynamic attributes in the [GlideDynamicAttribute - Global](https://servicenow-prod.fluidtopics.net/7A_ss0GHBtbAYZs4KkAZOQ#GlideDynamicAttributeAPI "The GlideDynamicAttribute API provides access to dynamic attribute metadata.") API.

To use this API to create dynamic attributes you must have the dynamic_schema_writer role. To read dynamic data using this API you must have the dynamic_schema_reader role.  
See also:

* [GlideDynamicAttributeStore - Global](https://servicenow-prod.fluidtopics.net/yQSETZRAk9OciCsoBevD6w#GlideDynamicAttStoreAPI "The GlideDynamicAttributeStore API provides access to a dynamic attribute store data type, similar to other data types such as string, date, or date/time.")
* [GlideElementDynamicAttributeStore - Global](https://servicenow-prod.fluidtopics.net/3AwPJDDHaoi8TEXmWMjjVw#GlideElementDynamicAttStoreAPI "The GlideElementDynamicAttributeStore API provides convenient script methods for managing dynamic attributes in the current glide record. Use these methods in conjunction with the GlideRecord API to get and set defined dynamic attribute values.")
{#GlideTransientDynamicAttributeAPI__ul_dvm_lym_b2c}

## GlideTransientDynamicAttribute - getGroupName() {#ariaid-title2}

Gets the value of the group name property of a transient dynamic attribute object.
{#GTDA-getGroupName__table_n5y_sln_b2c__entry__3}

| Name | Type | Description |
|-|-|-|
| None |   |   |
[Table 1. Parameters]

{#GTDA-getGroupName__table_n5y_sln_b2c} {#GTDA-getGroupName__table_o5y_sln_b2c__entry__2}

| Type | Description |
|-|-|
| String | Value of the transient dynamic attribute's group name property. See also [Create a dynamic attribute group](https://www.servicenow.com/docs/access?context=create-dynamic-attribute-group&version=yokohama&pubname=yokohama-platform-administration&ft:locale=en-US). |
[Table 2. Returns]

{#GTDA-getGroupName__table_o5y_sln_b2c}  
In the following example, the value of the transient dynamic attribute object group name is displayed as a.

    var das = new GlideDynamicAttributeStore();
    das.setDynamicAttributeValue('a->b', 5);    // transient (adding here)
    das.setDynamicAttributeValue('a->c', 10);   // defined in dynamic_attribute table

    var attributes = das.getDynamicAttributes();
    gs.info(attributes);

    for (var i = 0; i < attributes.length; i++) {
        var attr = attributes[i];
    	
        gs.info("");
        gs.info("[" + i + "].getPath()      = " + attr.getPath());
        gs.info("[" + i + "].getName()      = " + attr.getName());
        gs.info("[" + i + "].getGroupName() = " + attr.getGroupName());
        gs.info("[" + i + "].getSysId()     = " + attr.getSysId());
        gs.info("[" + i + "].isTransient()  = " + attr.isTransient());
        gs.info("[" + i + "].getType()      = " + attr.getType());
    }

Output:

    *** Script: a->c,a->b
    *** Script: 
    *** Script: [0].getPath()      = a->c
    *** Script: [0].getName()      = c
    *** Script: [0].getGroupName() = a
    *** Script: [0].getSysId()     = 8bc411a94fc01210b8ddc0e552ce0b3c
    *** Script: [0].isTransient()  = false
    *** Script: [0].getType()      = integer
    *** Script: 
    *** Script: [1].getPath()      = a->b
    *** Script: [1].getName()      = b
    *** Script: [1].getGroupName() = a
    *** Script: [1].getSysId()     = undefined
    *** Script: [1].isTransient()  = true
    *** Script: [1].getType()      = string

## GlideTransientDynamicAttribute - getName() {#ariaid-title3}

Gets the value of the name property of a transient dynamic attribute object.
{#GTDA-getName__table_n5y_sln_b2c__entry__3}

| Name | Type | Description |
|-|-|-|
| None |   |   |
[Table 3. Parameters]

{#GTDA-getName__table_n5y_sln_b2c} {#GTDA-getName__table_o5y_sln_b2c__entry__2}

| Type | Description |
|-|-|
| String | Value of the transient dynamic attribute's name property. |
[Table 4. Returns]

{#GTDA-getName__table_o5y_sln_b2c}  
In the following example, the value of the transient dynamic attribute object name is displayed as b.

    var das = new GlideDynamicAttributeStore();
    das.setDynamicAttributeValue('a->b', 5);    // transient (adding here)
    das.setDynamicAttributeValue('a->c', 10);   // defined in dynamic_attribute table

    var attributes = das.getDynamicAttributes();
    gs.info(attributes);

    for (var i = 0; i < attributes.length; i++) {
        var attr = attributes[i];
    	
        gs.info("");
        gs.info("[" + i + "].getPath()      = " + attr.getPath());
        gs.info("[" + i + "].getName()      = " + attr.getName());
        gs.info("[" + i + "].getGroupName() = " + attr.getGroupName());
        gs.info("[" + i + "].getSysId()     = " + attr.getSysId());
        gs.info("[" + i + "].isTransient()  = " + attr.isTransient());
        gs.info("[" + i + "].getType()      = " + attr.getType());
    }

Output:

    *** Script: a->c,a->b
    *** Script: 
    *** Script: [0].getPath()      = a->c
    *** Script: [0].getName()      = c
    *** Script: [0].getGroupName() = a
    *** Script: [0].getSysId()     = 8bc411a94fc01210b8ddc0e552ce0b3c
    *** Script: [0].isTransient()  = false
    *** Script: [0].getType()      = integer
    *** Script: 
    *** Script: [1].getPath()      = a->b
    *** Script: [1].getName()      = b
    *** Script: [1].getGroupName() = a
    *** Script: [1].getSysId()     = undefined
    *** Script: [1].isTransient()  = true
    *** Script: [1].getType()      = string

## GlideTransientDynamicAttribute - getPath() {#ariaid-title4}

Gets the value of the path property of a transient dynamic attribute object.
{#GTDA-getPath__table_n5y_sln_b2c__entry__3}

| Name | Type | Description |
|-|-|-|
| None |   |   |
[Table 5. Parameters]

{#GTDA-getPath__table_n5y_sln_b2c} {#GTDA-getPath__table_o5y_sln_b2c__entry__2}

| Type | Description |
|-|-|
| String | Value of the transient dynamic attribute's path. |
[Table 6. Returns]

{#GTDA-getPath__table_o5y_sln_b2c}  
In the following example, the value of the transient dynamic attribute object path is displayed as a-\>b.

    var das = new GlideDynamicAttributeStore();
    das.setDynamicAttributeValue('a->b', 5);    // transient (adding here)
    das.setDynamicAttributeValue('a->c', 10);   // defined in dynamic_attribute table

    var attributes = das.getDynamicAttributes();
    gs.info(attributes);

    for (var i = 0; i < attributes.length; i++) {
        var attr = attributes[i];
    	
        gs.info("");
        gs.info("[" + i + "].getPath()      = " + attr.getPath());
        gs.info("[" + i + "].getName()      = " + attr.getName());
        gs.info("[" + i + "].getGroupName() = " + attr.getGroupName());
        gs.info("[" + i + "].getSysId()     = " + attr.getSysId());
        gs.info("[" + i + "].isTransient()  = " + attr.isTransient());
        gs.info("[" + i + "].getType()      = " + attr.getType());
    }

Output:

    *** Script: a->c,a->b
    *** Script: 
    *** Script: [0].getPath()      = a->c
    *** Script: [0].getName()      = c
    *** Script: [0].getGroupName() = a
    *** Script: [0].getSysId()     = 8bc411a94fc01210b8ddc0e552ce0b3c
    *** Script: [0].isTransient()  = false
    *** Script: [0].getType()      = integer
    *** Script: 
    *** Script: [1].getPath()      = a->b
    *** Script: [1].getName()      = b
    *** Script: [1].getGroupName() = a
    *** Script: [1].getSysId()     = undefined
    *** Script: [1].isTransient()  = true
    *** Script: [1].getType()      = string

## GlideTransientDynamicAttribute - getSysId() {#ariaid-title5}

Gets the sys_id value (undefined) of a transient dynamic attribute object.
{#GTDA-getSysId__table_n5y_sln_b2c__entry__3}

| Name | Type | Description |
|-|-|-|
| None |   |   |
[Table 7. Parameters]

{#GTDA-getSysId__table_n5y_sln_b2c} {#GTDA-getSysId__table_o5y_sln_b2c__entry__2}

| Type | Description |
|-|-|
| String | If the selected object is a transient dynamic attribute, the result is undefined. Otherwise, sys_id of a dynamic attribute. |
[Table 8. Returns]

{#GTDA-getSysId__table_o5y_sln_b2c}  
In the following example, the value of the transient dynamic attribute object's sys_id is displayed as null.

    var das = new GlideDynamicAttributeStore();
    das.setDynamicAttributeValue('a->b', 5);    // transient (adding here)
    das.setDynamicAttributeValue('a->c', 10);   // defined in dynamic_attribute table

    var attributes = das.getDynamicAttributes();
    gs.info(attributes);

    for (var i = 0; i < attributes.length; i++) {
        var attr = attributes[i];
    	
        gs.info("");
        gs.info("[" + i + "].getPath()      = " + attr.getPath());
        gs.info("[" + i + "].getName()      = " + attr.getName());
        gs.info("[" + i + "].getGroupName() = " + attr.getGroupName());
        gs.info("[" + i + "].getSysId()     = " + attr.getSysId());
        gs.info("[" + i + "].isTransient()  = " + attr.isTransient());
        gs.info("[" + i + "].getType()      = " + attr.getType());
    }

Output:

    *** Script: a->c,a->b
    *** Script: 
    *** Script: [0].getPath()      = a->c
    *** Script: [0].getName()      = c
    *** Script: [0].getGroupName() = a
    *** Script: [0].getSysId()     = 8bc411a94fc01210b8ddc0e552ce0b3c
    *** Script: [0].isTransient()  = false
    *** Script: [0].getType()      = integer
    *** Script: 
    *** Script: [1].getPath()      = a->b
    *** Script: [1].getName()      = b
    *** Script: [1].getGroupName() = a
    *** Script: [1].getSysId()     = undefined
    *** Script: [1].isTransient()  = true
    *** Script: [1].getType()      = string

## GlideTransientDynamicAttribute - getType() {#ariaid-title6}

Gets the value of the type property of a transient dynamic attribute object.
{#GTDA-getType__table_n5y_sln_b2c__entry__3}

| Name | Type | Description |
|-|-|-|
| None |   |   |
[Table 9. Parameters]

{#GTDA-getType__table_n5y_sln_b2c} {#GTDA-getType__table_o5y_sln_b2c__entry__2}

| Type | Description |
|-|-|
| String | Value of the transient dynamic attribute's data type. The data type for transient dynamic attributes is always string. |
[Table 10. Returns]

{#GTDA-getType__table_o5y_sln_b2c}  
In the following example, the value of the transient dynamic attribute object type is displayed as string.

    var das = new GlideDynamicAttributeStore();
    das.setDynamicAttributeValue('a->b', 5);    // transient (adding here)
    das.setDynamicAttributeValue('a->c', 10);   // defined in dynamic_attribute table

    var attributes = das.getDynamicAttributes();
    gs.info(attributes);

    for (var i = 0; i < attributes.length; i++) {
        var attr = attributes[i];
    	
        gs.info("");
        gs.info("[" + i + "].getPath()      = " + attr.getPath());
        gs.info("[" + i + "].getName()      = " + attr.getName());
        gs.info("[" + i + "].getGroupName() = " + attr.getGroupName());
        gs.info("[" + i + "].getSysId()     = " + attr.getSysId());
        gs.info("[" + i + "].isTransient()  = " + attr.isTransient());
        gs.info("[" + i + "].getType()      = " + attr.getType());
    }

Output:

    *** Script: a->c,a->b
    *** Script: 
    *** Script: [0].getPath()      = a->c
    *** Script: [0].getName()      = c
    *** Script: [0].getGroupName() = a
    *** Script: [0].getSysId()     = 8bc411a94fc01210b8ddc0e552ce0b3c
    *** Script: [0].isTransient()  = false
    *** Script: [0].getType()      = integer
    *** Script: 
    *** Script: [1].getPath()      = a->b
    *** Script: [1].getName()      = b
    *** Script: [1].getGroupName() = a
    *** Script: [1].getSysId()     = undefined
    *** Script: [1].isTransient()  = true
    *** Script: [1].getType()      = string

## GlideTransientDynamicAttribute - isTransient() {#ariaid-title7}

Returns whether an object is a transient dynamic attribute.
{#GTDA-isTransient__table_n5y_sln_b2c__entry__3}

| Name | Type | Description |
|-|-|-|
| None |   |   |
[Table 11. Parameters]

{#GTDA-isTransient__table_n5y_sln_b2c} {#GTDA-isTransient__table_o5y_sln_b2c__entry__2}

| Type | Description |
|-|-|
| Boolean | Flag that indicates if a dynamic attribute is transient. Valid values: * true: The dynamic attribute is transient. Dynamic attributes are defined in the Dynamic Attribute \[dynamic_attribute\] table with a data type and a sys_id. * false: The dynamic attribute is not transient. Transient dynamic attributes are dynamic attributes that have been added to a DynamicAttributeStore field without a definition in the Dynamic Attribute \[dynamic_attribute\] table. Transient dynamic attributes are handled as strings and have no sys_id. {#GTDA-isTransient__ul_trp_nxn_b2c} Note: The Dynamic Attribute \[dynamic_attribute\] table is accessible by navigating to AllDynamic SchemaDynamic Attribute Groups, selecting a group, and selecting the Dynamic Attributes tab. |
[Table 12. Returns]

{#GTDA-isTransient__table_o5y_sln_b2c}  
In the following example, the isTransient() method returns true for the transient object.

    var das = new GlideDynamicAttributeStore();
    das.setDynamicAttributeValue('a->b', 5);    // transient (adding here)
    das.setDynamicAttributeValue('a->c', 10);   // defined in dynamic_attribute table

    var attributes = das.getDynamicAttributes();
    gs.info(attributes);

    for (var i = 0; i < attributes.length; i++) {
        var attr = attributes[i];
    	
        gs.info("");
        gs.info("[" + i + "].getPath()      = " + attr.getPath());
        gs.info("[" + i + "].getName()      = " + attr.getName());
        gs.info("[" + i + "].getGroupName() = " + attr.getGroupName());
        gs.info("[" + i + "].getSysId()     = " + attr.getSysId());
        gs.info("[" + i + "].isTransient()  = " + attr.isTransient());
        gs.info("[" + i + "].getType()      = " + attr.getType());
    }

Output:

    *** Script: a->c,a->b
    *** Script: 
    *** Script: [0].getPath()      = a->c
    *** Script: [0].getName()      = c
    *** Script: [0].getGroupName() = a
    *** Script: [0].getSysId()     = 8bc411a94fc01210b8ddc0e552ce0b3c
    *** Script: [0].isTransient()  = false
    *** Script: [0].getType()      = integer
    *** Script: 
    *** Script: [1].getPath()      = a->b
    *** Script: [1].getName()      = b
    *** Script: [1].getGroupName() = a
    *** Script: [1].getSysId()     = undefined
    *** Script: [1].isTransient()  = true
    *** Script: [1].getType()      = string

*[\>]: and then


