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

 Release :

    - australia

ft:locale :

    - en-US

ft:publication_title :

    - Australia API Reference

ft:clusterId :

    - crapiref

bundleId :

    - crapiref

workflow :

    - Creator


---

# GlideDynamicAttribute - Global

# GlideDynamicAttribute - Global {#ariaid-title1}

Release version: Australia  
Updated March 12, 2026  
![](https://www.servicenow.com/docs/portal-asset/ico-clock) 8 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=australia&pubname=australia-platform-administration&ft:locale=en-US).

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.  
[GlideAggregate - Global](https://servicenow-prod.fluidtopics.net/aPbyi64jPLfd02y5D2rZSg#c_GlideAggregateAPI "The GlideAggregate API enables creating database aggregation queries.") methods usable with dynamic schema:

* addAggregate()
* addHaving()
* getDynamicAttributeValue()
* getDynamicAttributeDisplayValue()
* getValue()
* groupBy()
* orderBy()
* orderByAggregate()

{#GlideDynamicAttributeAPI__ul_tc3_1nj_zgc}[GlideRecord - Global](https://servicenow-prod.fluidtopics.net/kEnhxKeOH9ksdDjzH~63~A#c_GlideRecordAPI "The GlideRecord API is used for database operations.") methods usable with dynamic schema:

* addQuery()
* getDisplayValue()
* getDynamicAttribute()
* getDynamicAttributeDisplayValue()
* getDynamicAttributeValue()
* getValue()
* orderBy()
* orderByDesc()
* setDisplayValue()
* setDynamicAttributeDisplayValue()
* setDynamicAttributeValue()
* setDynamicAttributeValues()
* setValue()
{#GlideDynamicAttributeAPI__ul_cd4_wnj_zgc}  
See also:

* [GlideDynamicAttributeStore - Global](https://servicenow-prod.fluidtopics.net/LIzpeO8Zm4gqCjkhgpdcbw#GlideDynamicAttStoreAPI "Use the GlideDynamicAttributeStore API to create objects for working with dynamic attributes independently of a table or field.")
* [GlideDynamicNamespace - Global](https://servicenow-prod.fluidtopics.net/gcpCaMBidDHif~qHQ78buA#GlideDynamicNamespaceAPI "The GlideDynamicNamespace API provides access to dynamic namespace metadata.")
* [GlideElement - Global](https://servicenow-prod.fluidtopics.net/o_Lv25nSEwsDQ_Ej4p8L5Q#c_GlideElementAPI "The GlideElement API provides a number of convenient script methods for dealing with fields and their values. GlideElement methods are available for the fields of the current glide record.")
* [GlideElementDynamicAttributeStore - Global](https://servicenow-prod.fluidtopics.net/fjrJkrdI5LlAxwWa7NS2SQ#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.
As of the Zurich release, dynamic groups have been removed from dynamic schema. For dynamic attributes defined with an associated dynamic attribute group before the Zurich release, this method continues to work for backwards
compatibility. Customers are urged to migrate to the current Dynamic Attribute definitions to take advantage of future improvements in features and functionality.  
For migration details, see the [Dynamic Schema Zurich Migration Guide \[KB2146133\]](https://support.servicenow.com/kb?id=kb_article_view&sysparm_article=KB2146133) article in the Now Support Knowledge Base.  
Note:  
This method returns null for migrated attributes and newly created attributes.

You can use dynamic attributes in dynamic categories to simplify administration and improve the dynamic schema user experience. For more information, see [Working with Dynamic Schema](https://www.servicenow.com/docs/access?context=working-with-dynamic-schema&version=australia&pubname=australia-platform-administration&ft:locale=en-US).
{#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. |
[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 + "].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].isTransient()  = false
    *** Script: [0].getType()      = integer
    *** Script: 
    *** Script: [1].getPath()      = a->b
    *** Script: [1].getName()      = b
    *** Script: [1].getGroupName() = a
    *** 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}  
The following example shows how to return the value of the dynamic attribute object name.

    var used_car = new GlideDynamicAttributeStore('u_product/u_car_inventory');
    used_car.setDynamicAttributeValue('mfg_year', 2014);       // transient (adding here)
    used_car.setDynamicAttributeValue('u_total_miles', 53246); // defined in dynamic_attribute table

    var attributes = used_car.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 + "].getNamespaceName()  = " + attr.getNamespaceName());
        gs.info("[" + i + "].getNamespacedName() = " + attr.getNamespacedName());
        gs.info("[" + i + "].isTransient()       = " + attr.isTransient());
        gs.info("[" + i + "].getType()           = " + attr.getType());
    }

Output:

    *** Script: mfg_year,u_total_miles
    *** Script: 
    *** Script: [0].getPath()           = mfg_year
    *** Script: [0].getName()           = mfg_year
    *** Script: [0].getNamespaceName()  = u_product/u_car_inventory
    *** Script: [0].getNamespacedName() = u_product/u_car_inventory/mfg_year
    *** Script: [0].isTransient()       = true
    *** Script: [0].getType()           = string
    *** Script: 
    *** Script: [1].getPath()           = u_total_miles
    *** Script: [1].getName()           = u_total_miles
    *** Script: [1].getNamespaceName()  = u_product/u_car_inventory
    *** Script: [1].getNamespacedName() = u_product/u_car_inventory/u_total_miles
    *** Script: [1].isTransient()       = false
    *** Script: [1].getType()           = integer

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

Gets the name of a dynamic attribute within its namespace.
{#GDA-getNamespacedName__table_n5y_sln_b2c__entry__3}

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

{#GDA-getNamespacedName__table_n5y_sln_b2c} {#GDA-getNamespacedName__table_o5y_sln_b2c__entry__2}

| Type | Description |
|-|-|
| String | Name of the dynamic attribute within its namespace. Format: `namespace_name/attribute_name` |
[Table 6. Returns]

{#GDA-getNamespacedName__table_o5y_sln_b2c}  
The following example shows how to return the dynamic attribute name within a namespace called `u_product/u_car_inventory`.

    var used_car = new GlideDynamicAttributeStore('u_product/u_car_inventory');
    used_car.setDynamicAttributeValue('mfg_year', 2014);       // transient (adding here)
    used_car.setDynamicAttributeValue('u_total_miles', 53246); // defined in dynamic_attribute table

    var attributes = used_car.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 + "].getNamespaceName()  = " + attr.getNamespaceName());
        gs.info("[" + i + "].getNamespacedName() = " + attr.getNamespacedName());
        gs.info("[" + i + "].isTransient()       = " + attr.isTransient());
        gs.info("[" + i + "].getType()           = " + attr.getType());
    }

Output:

    *** Script: mfg_year,u_total_miles
    *** Script: 
    *** Script: [0].getPath()           = mfg_year
    *** Script: [0].getName()           = mfg_year
    *** Script: [0].getNamespaceName()  = u_product/u_car_inventory
    *** Script: [0].getNamespacedName() = u_product/u_car_inventory/mfg_year
    *** Script: [0].isTransient()       = true
    *** Script: [0].getType()           = string
    *** Script: 
    *** Script: [1].getPath()           = u_total_miles
    *** Script: [1].getName()           = u_total_miles
    *** Script: [1].getNamespaceName()  = u_product/u_car_inventory
    *** Script: [1].getNamespacedName() = u_product/u_car_inventory/u_total_miles
    *** Script: [1].isTransient()       = false
    *** Script: [1].getType()           = integer

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

Gets the name of a dynamic attribute namespace.
{#GDA-getNamespaceName__table_n5y_sln_b2c__entry__3}

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

{#GDA-getNamespaceName__table_n5y_sln_b2c} {#GDA-getNamespaceName__table_o5y_sln_b2c__entry__2}

| Type | Description |
|-|-|
| String | Name of the dynamic attribute namespace. |
[Table 8. Returns]

{#GDA-getNamespaceName__table_o5y_sln_b2c}  
The following example shows how to return the dynamic attribute namespace, `u_product/u_car_inventory`.

    var used_car = new GlideDynamicAttributeStore('u_product/u_car_inventory');
    used_car.setDynamicAttributeValue('mfg_year', 2014);       // transient (adding here)
    used_car.setDynamicAttributeValue('u_total_miles', 53246); // defined in dynamic_attribute table

    var attributes = used_car.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 + "].getNamespaceName()  = " + attr.getNamespaceName());
        gs.info("[" + i + "].getNamespacedName() = " + attr.getNamespacedName());
        gs.info("[" + i + "].isTransient()       = " + attr.isTransient());
        gs.info("[" + i + "].getType()           = " + attr.getType());
    }

Output:

    *** Script: mfg_year,u_total_miles
    *** Script: 
    *** Script: [0].getPath()           = mfg_year
    *** Script: [0].getName()           = mfg_year
    *** Script: [0].getNamespaceName()  = u_product/u_car_inventory
    *** Script: [0].getNamespacedName() = u_product/u_car_inventory/mfg_year
    *** Script: [0].isTransient()       = true
    *** Script: [0].getType()           = string
    *** Script: 
    *** Script: [1].getPath()           = u_total_miles
    *** Script: [1].getName()           = u_total_miles
    *** Script: [1].getNamespaceName()  = u_product/u_car_inventory
    *** Script: [1].getNamespacedName() = u_product/u_car_inventory/u_total_miles
    *** Script: [1].isTransient()       = false
    *** Script: [1].getType()           = integer

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

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 9. 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 10. Returns]

{#GDA-getPath__table_o5y_sln_b2c}  
The following example shows how to return the value of the dynamic attribute object path.

    var used_car = new GlideDynamicAttributeStore('u_product/u_car_inventory');
    used_car.setDynamicAttributeValue('mfg_year', 2014);       // transient (adding here)
    used_car.setDynamicAttributeValue('u_total_miles', 53246); // defined in dynamic_attribute table

    var attributes = used_car.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 + "].getNamespaceName()  = " + attr.getNamespaceName());
        gs.info("[" + i + "].getNamespacedName() = " + attr.getNamespacedName());
        gs.info("[" + i + "].isTransient()       = " + attr.isTransient());
        gs.info("[" + i + "].getType()           = " + attr.getType());
    }

Output:

    *** Script: mfg_year,u_total_miles
    *** Script: 
    *** Script: [0].getPath()           = mfg_year
    *** Script: [0].getName()           = mfg_year
    *** Script: [0].getNamespaceName()  = u_product/u_car_inventory
    *** Script: [0].getNamespacedName() = u_product/u_car_inventory/mfg_year
    *** Script: [0].isTransient()       = true
    *** Script: [0].getType()           = string
    *** Script: 
    *** Script: [1].getPath()           = u_total_miles
    *** Script: [1].getName()           = u_total_miles
    *** Script: [1].getNamespaceName()  = u_product/u_car_inventory
    *** Script: [1].getNamespacedName() = u_product/u_car_inventory/u_total_miles
    *** Script: [1].isTransient()       = false
    *** Script: [1].getType()           = integer

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

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 11. 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 12. Returns]

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

    var used_car = new GlideDynamicAttributeStore('u_product/u_car_inventory');
    used_car.setDynamicAttributeValue('mfg_year', 2014);       // transient (adding here)
    used_car.setDynamicAttributeValue('u_total_miles', 53246); // defined in dynamic_attribute table

    var attributes = used_car.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 + "].getNamespaceName()  = " + attr.getNamespaceName());
        gs.info("[" + i + "].getNamespacedName() = " + attr.getNamespacedName());
        gs.info("[" + i + "].isTransient()       = " + attr.isTransient());
        gs.info("[" + i + "].getType()           = " + attr.getType());
    }

Output:

    *** Script: mfg_year,u_total_miles
    *** Script: 
    *** Script: [0].getPath()           = mfg_year
    *** Script: [0].getName()           = mfg_year
    *** Script: [0].getNamespaceName()  = u_product/u_car_inventory
    *** Script: [0].getNamespacedName() = u_product/u_car_inventory/mfg_year
    *** Script: [0].isTransient()       = true
    *** Script: [0].getType()           = string
    *** Script: 
    *** Script: [1].getPath()           = u_total_miles
    *** Script: [1].getName()           = u_total_miles
    *** Script: [1].getNamespaceName()  = u_product/u_car_inventory
    *** Script: [1].getNamespacedName() = u_product/u_car_inventory/u_total_miles
    *** Script: [1].isTransient()       = false
    *** Script: [1].getType()           = integer

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

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

| Name | Type | Description |
|-|-|-|
| None |   |   |
[Table 13. 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. See [GlideDynamicAttribute](https://servicenow-prod.fluidtopics.net/qkURqhb1AentmdQLTt_bMw#GlideDynamicAttributeAPI "The GlideDynamicAttribute API provides access to dynamic attribute metadata."). * 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} |
[Table 14. Returns]

{#GDA-isTransient__table_o5y_sln_b2c}  
In the following example, the isTransient() method returns false for the non-transient object.

    var used_car = new GlideDynamicAttributeStore('u_product/u_car_inventory');
    used_car.setDynamicAttributeValue('mfg_year', 2014);       // transient (adding here)
    used_car.setDynamicAttributeValue('u_total_miles', 53246); // defined in dynamic_attribute table

    var attributes = used_car.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 + "].getNamespaceName()  = " + attr.getNamespaceName());
        gs.info("[" + i + "].getNamespacedName() = " + attr.getNamespacedName());
        gs.info("[" + i + "].isTransient()       = " + attr.isTransient());
        gs.info("[" + i + "].getType()           = " + attr.getType());
    }

Output:

    *** Script: mfg_year,u_total_miles
    *** Script: 
    *** Script: [0].getPath()           = mfg_year
    *** Script: [0].getName()           = mfg_year
    *** Script: [0].getNamespaceName()  = u_product/u_car_inventory
    *** Script: [0].getNamespacedName() = u_product/u_car_inventory/mfg_year
    *** Script: [0].isTransient()       = true
    *** Script: [0].getType()           = string
    *** Script: 
    *** Script: [1].getPath()           = u_total_miles
    *** Script: [1].getName()           = u_total_miles
    *** Script: [1].getNamespaceName()  = u_product/u_car_inventory
    *** Script: [1].getNamespacedName() = u_product/u_car_inventory/u_total_miles
    *** Script: [1].isTransient()       = false
    *** Script: [1].getType()           = integer


