---
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


---

# GlideDynamicAttribute - Global

# GlideDynamicAttribute - Global {#ariaid-title1}

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

This API provides methods that enable you to get dynamic schema values defined in the Dynamic Attribute \[dynamic_attribute\] table. Dynamic attributes have a defined data type and a 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 transient dynamic attributes in the [GlideTransientDynamicAttribute - Global](https://servicenow-prod.fluidtopics.net/pYou33CaGWncAwE6htcbRw#GlideTransientDynamicAttributeAPI "The GlideTransientDynamicAttribute API provides access to transient 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.")
{#GlideDynamicAttributeAPI__ul_dvm_lym_b2c}

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

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

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

{#GDA-getGroupName__table_n5y_sln_b2c} {#GDA-getGroupName__table_o5y_sln_b2c__entry__2}

| Type | Description |
|-|-|
| String | Value of the 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]

{#GDA-getGroupName__table_o5y_sln_b2c}  
In the following example, the value of the 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

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

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

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

{#GDA-getName__table_n5y_sln_b2c} {#GDA-getName__table_o5y_sln_b2c__entry__2}

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

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

    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

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

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

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

{#GDA-getPath__table_n5y_sln_b2c} {#GDA-getPath__table_o5y_sln_b2c__entry__2}

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

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

    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

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

Gets the sys_id of a dynamic attribute object.
{#GDA-getSysId__table_n5y_sln_b2c__entry__3}

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

{#GDA-getSysId__table_n5y_sln_b2c} {#GDA-getSysId__table_o5y_sln_b2c__entry__2}

| Type | Description |
|-|-|
| String | Value of the dynamic attribute's sys_id. |
[Table 8. Returns]

{#GDA-getSysId__table_o5y_sln_b2c}  
In the following example, the value of the dynamic attribute object's sys_id is displayed as 8bc411a94fc01210b8ddc0e552ce0b3c.

    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

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

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

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

{#GDA-getType__table_n5y_sln_b2c} {#GDA-getType__table_o5y_sln_b2c__entry__2}

| Type | Description |
|-|-|
| String | Value of the dynamic attribute's data type. |
[Table 10. Returns]

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

    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

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

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

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

{#GDA-isTransient__table_n5y_sln_b2c} {#GDA-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. {#GDA-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]

{#GDA-isTransient__table_o5y_sln_b2c}  
In the following example, the isTransient() method returns false for the non-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


