---
title: Scripting tips
description: User self-service journeys primarily use PingIDM nodes.
component: platform
version: 7.5
page_id: platform:platform-self-service:scripting-for-user-self-service
canonical_url: https://docs.pingidentity.com/platform/7.5/platform-self-service/scripting-for-user-self-service.html
llms_txt: https://docs.pingidentity.com/platform/llms.txt
docs_for_agents: https://developer.pingidentity.com/build-with-ai/docs-for-agents.md
keywords: ["Journeys", "Nodes &amp; Trees", "Shared State", "Scripts"]
section_ids:
  access_idm_properties_in_scripts: Access IDM properties in scripts
---

# Scripting tips

## Access IDM properties in scripts

User self-service journeys primarily use PingIDM nodes.

Nodes save data in the shared state of journeys. PingIDM nodes save data in the shared state differently than other nodes.

You can extend the functionality of journeys using scripts you write in the [Scripted Decision node](../auth-node-ref/scripted-decision.html).

When you use a [Scripted Decision node](../auth-node-ref/scripted-decision.html) node to access properties saved in the shared state by PingIDM nodes, you must reference the IDM properties using the `objectAttrbutes` object.

For example, to access the first name (`givenName`) from the shared state, returned from an PingIDM node, you would use the syntax:

```js
var firstName = objectAttributes.get("givenName").asString();
```

For information on the shared state, refer to [access shared state data](https://docs.pingidentity.com/pingam/7.5/authentication-guide/scripting-api-node.html#scripting-api-node-nodeState).
