---
title: Introducing user profile self-service
description: Learn to create a user profile self-service journey so users can manage their own profile information, such as name, address, and marketing preferences.
component: orchsdks
page_id: orchsdks:journey:use-cases/user-self-service/index
canonical_url: https://developer.pingidentity.com/orchsdks/journey/use-cases/user-self-service/index.html
revdate: Wed, 17 May 2023 14:10:20 +0100
keywords: ["PingOne Advanced Identity Cloud", "PingAM", "Journeys", "User Profile", "Self-Service", "Profile Management", "SDK"]
section_ids:
  compatibility: Compatibility
  configure_the_server: Configure the server
  create_a_user_profile_management_journey: Create a user profile management journey
  configure_the_client_app: Configure the client app
---

# Introducing user profile self-service

[icon: circle-check, set=far]PingOne Advanced Identity Cloud [icon: circle-check, set=far]PingAM [icon: android, set=fab]Android [icon: apple, set=fab]iOS [icon: js, set=fab]JavaScript

The Orchestration SDKs [support many of the callbacks](../../compatibility.html#supported-authentication-journey-callbacks) that authentication journeys use, including many that enable your users to manage their own profile information, such as name, address, phone numbers, and marketing preferences.

To update a user's profile information, you must first authenticate them to get a session token.

You can then use that session token to start a new journey that allows the user to update their profile data.

## Compatibility

PingIDM is responsible for profile management. Therefore you can only implement user profile self-service when using the following server environments:

* [icon: check-square-o, set=fa]PingOne Advanced Identity Cloud

* [icon: check-square-o, set=fa]PingAM and PingIDM deployed together as [Ping Advanced Identity Software](https://docs.pingidentity.com/platform)

* [icon: check-square-o, set=fa]PingAM and PingIDM deployed together by using [ForgeOps](https://docs.pingidentity.com/forgeops/2025.2)

## Configure the server

You must create an authentication journey that checks for a user session and then displays the user profile fields for editing. The journey must also update the profile with any changed values.

### Create a user profile management journey

Follow the steps below to create a user profile management journey:

1. Create a new journey or tree, give it a name, and save your changes:

   > **Collapse: PingOne Advanced Identity Cloud**
   >
   > 1. In your PingOne Advanced Identity Cloud tenant, navigate to **Journeys**, and click **[icon: plus, set=fa]New Journey**.
   >
   > 2. Enter a name, such as `sdkProfileManagement`
   >
   > 3. In **Identity Object**, select **Alpha realm - Users**.
   >
   > 4. Enable **Run journey for all users regardless of current session.**
   >
   >    Enabling this option in the journey means you do not have to append a parameter when starting the journey from the client.
   >
   > 5. Click **Save**.
   >
   >    The authentication journey designer appears.

   > **Collapse: Ping Advanced Identity Software / ForgeOps**
   >
   > 1. Sign in to your administration console, navigate to **Journeys** > **Journeys**, and then click **[icon: plus, set=fa]New Journey**.
   >
   > 2. Enter a name, such as `sdkProfileManagement`
   >
   > 3. In **Identity Object**, select **Users** (managed/user).
   >
   > 4. Enable **Run journey for all users regardless of current session.**
   >
   >    Enabling this option in the journey means you do not have to append a parameter when starting the journey from the client.
   >
   > 5. Click **Save**.
   >
   >    The authentication journey designer appears.

2. Drag the following nodes into the designer area:

   * **Scripted Decision** - Checks for a session token and only proceeds if present.

   * **Get Session Data** - Gets the user identifier from the session token.

   * **Attribute Collector** - Displays profile attributes and allows updates.

   * **Patch Object** - Persists any changes/

3. Connect the nodes as follows:

   ![journey profile management aic](../../_images/user-self-service/journey-profile-management-aic.png)Figure 1. Example profile management authentication journey

4. Select the **Scripted Decision** node.

   1. Click the **Script** field, and then click **Add** ([icon: plus, set=fa]).

      1. In the **Choose Script Engine** dialog, select **Next Generation**, and then click **Next**.

      2. In **Name**, enter a suitable name for the script, such as `nextGenHasSession`.

      3. In the JavaScript editor, paste the following code:

         ```javascript
         if (typeof existingSession !== 'undefined') {
             action.goTo("True");
         } else {
             action.goTo("False");
         }
         ```

      4. Click **Save and Close**

   2. In **Outcomes**, enter the following values:

      * `True`

      * `False`

      |   |                                                                                                                                             |
      | - | ------------------------------------------------------------------------------------------------------------------------------------------- |
      |   | The strings you enter must exactly match the parameters you used for the `action.goTo()` method in the script.They are also case-sensitive. |

5. Select the **Get Session Data** node and configure it to obtain the user's account name from a session token.

   If the Orchestration SDKs already have a session token, they automatically attach it to the call to start a new journey or tree.

   1. In **Session Data Key**, enter `UserToken`.

      |   |                                                                                                                                                                                                                                               |
      | - | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
      |   | This field is case-sensitive. The value must exactly match the name of a property in the user's session.For a list of properties, refer to [Get Session Data node](https://docs.pingidentity.com/auth-node-ref/latest/get-session-data.html). |

   2. In **Shared State Key**, enter `userName`.

   The result resembles the following:

   ![journey profile management get session data config](../../_images/user-self-service/journey-profile-management-get-session-data-config.png)Figure 2. Configure the Get Session Data node for profile management.

6. Select the **Attribute Collector** node and configure it with the profile attributes you want the user to view and edit:

   1. In **Attributes to Collect**, enter the profile attributes to display. For example:

      * `givenName`

      * `sn`

      * `mail`

      * `telephoneNumber`

      * `postalAddress`

      * `city`

      * `country`

      * `preferences/marketing`

   2. In **Identity Attribute**, enter `userName`.

   The result resembles the following:

   ![journey profile management attribute collector config](../../_images/user-self-service/journey-profile-management-attribute-collector-config.png)Figure 3. Configure the Attribute Collector node for profile management.

7. Select the **Patch Object** node and configure it to update the user's profile:

   1. In **Identity Resource**:

      * For **PingOne Advanced Identity Cloud**, enter `managed/alpha_user`.

      * For **Ping Advanced Identity Software** or **ForgeOps**, enter `managed/user`.

   2. In **Identity Attribute**, enter `userName`.

   The result resembles the following, for an Advanced Identity Cloud deployment:

   ![journey profile management patch object config](../../_images/user-self-service/journey-profile-management-patch-object-config.png)Figure 4. Configure the Patch Object node for profile management.

8. Click **Save**.

## Configure the client app

[icon: android, set=fab, size=3x]

#### [Android](android-user-self-service.html)

Add user profile self-service to your Android apps.

[icon: apple, set=fab, size=3x]

#### [iOS](ios-user-self-service.html)

Add user profile self-service to your iOS apps.

[icon: js, set=fab, size=3x]

#### [JavaScript](javascript-user-self-service.html)

Add user profile self-service to your JavaScript apps.
