Each Appian environment has a directory of users available as a record type. The User record type can be added to a site page and referenced throughout your applications to display relevant user information in your queries, interfaces, or reports. End users can also access this directory by navigating to the User record type in Tempo and browsing or searching the record list.
Each user in Appian has a User record, which by default includes a Summary, News, and Related Actions view. In a site, the News view is available based on a site design configuration and can be turned off.
This page explains how to edit the User record type to meet the specific needs of your organization. For more information on user management in Tempo, refer to User Management.
When you upgrade an Appian environment to version 22.4, the User record type displays an alert at the top of the page. This alert indicates that new features are available and that you need to update the User record type in order to take advantage of these features.
Updating the User record type will automatically enable data sync on the record type. This allows you to leverage additional low-code data features like record type relationships, custom record fields, and record-level security.
Note: Since you can seamlessly secure your user data using record-level security, any existing User Profile Visibility settings will be removed and should be replaced with security rules or a security expression.
To update the User record type:
user
to find the User record type. If you've changed the name of the User record type (for example, to Corporate Directory
), search for the new name instead.If you do not update the User record type, you cannot perform certain modifications listed in this page, like modifying relationships, modifying record-level security, or generating additional record views or record actions.
After you update the User record type, new record fields with new UUIDs will be created for your record type. Appian will automatically update any existing field references in your record type to reference the new record fields. However, you will need to manually replace existing references to the User record type that are used throughout your applications (like in expression rules or interfaces).
To find and replace existing field references in your environment:
You may need to modify the name and description of the User record type, especially if you need to translate it to a different language to fit the locale of your users.
To modify the record type's name and description:
Update the following properties:
Property | Description |
---|---|
Name | The name of the record type. This is the name that developers see in your application. |
Display Name (Plural) | The name that end users see as the search placeholder text in the record list and any records-powered grids. Also appears in the Records tab in Tempo. |
Description | The description that displays on the record type list in Tempo. |
If your user base speaks multiple languages, consider populating the fields with all relevant languages. For example:
Tip: As you develop, keep in mind Appian design guidance is not available on the User record type.
By default, the User record type contains the following fields:
Field | Type | Description |
---|---|---|
uuid |
Text | The unique ID associated with each user. This is the primary key field. |
active |
Boolean | Indicates whether the user is active or not. |
username |
User | The unique username with which the user logs into Appian. |
firstName |
Text | The user's first name. |
middleName |
Text | The user's middle name. |
lastName |
Text | The user's last name. |
displayName |
Text | The user's nickname. |
email |
Text | The user's email address. |
address1 |
Text | The first line of the user's address. |
address2 |
Text | The second line of the user's address. |
address3 |
Text | The third line of the user's address. |
city |
Text | The city of the user's location. |
state |
Text | The state of the user's location. |
zipCode |
Text | The zip code of the user's location. |
province |
Text | The province of the user's location. |
country |
Text | The country of the user's location. |
phoneHome |
Text | The user's home phone number. |
phoneMobile |
Text | The user's mobile phone number. |
phoneOffice |
Text | The user's office phone number. |
supervisor |
User | The user's supervisor. |
title |
Text | The user's title. |
blurb |
Text | The user's blurb as provided on their profile Summary view. |
isServiceAccount |
Boolean | Determines whether the user is in the Service Accounts system group. |
firstAndLastName |
Text | A custom record field that concatenates the firstName and lastName field. |
You cannot edit or remove any Appian-configured record fields, but you can edit the firstAndLastName
custom record field and create new custom record fields.
By default, the User record type has the custom record field firstAndLastName
, which displays a user's first and last name together.
However, you may decide that you want to show a user's displayName
instead of their first name, or you may just want to update the name of the custom record field.
To edit the existing custom record field:
firstAndLastName
.Update the following properties as needed:
Property | Description |
---|---|
Name | The name of the custom record field. This is how you'll reference the field in the application. |
Type | The data type of the field. |
Error Value | The value to display if there is an error evaluating the custom record field. By default, this is set to Null. |
Expression | The custom record field expression defined with record fields and supported functions. This custom record field evaluates at sync-time, so you must reference a record field using rv!record followed by a record field reference in brackets. For example, rv!record[recordType!User.fields.displayName] . |
To add a new custom record field:
To delete a custom record field:
In the dependencies dialog, click DELETE.
Note: If you remove a custom record field, any references to the field will break.
By default, the User record type has two relationships:
You can add, edit, and delete relationships just like you would in other record types.
Tip: To easily establish relationships to and from the User record type, Appian recommends using the username
field as the common field.
When you update the User record type, Appian will automatically update the record list to a default feed-style record list defined using the a!userRecordListViewItem() function. Any existing record list customizations will be removed upon update.
The a!userRecordListViewItem()
function returns a default list view only available for the User record type. The list will display the first and last name, email, office phone, and mobile phone for each user in the record type.
You can replace the function with your own rule that defines a different list, or you can use a grid-style record list.
To modify the feed-style record list:
In List View, replace the existing function with your own expression using the a!listViewItem function.
For example, you could create a rule with the following expression to display each user's city and state instead of email and phone numbers:
1
2
3
4
5
a!listViewItem(
title: rv!record[recordType!User.fields.firstName] & " " & rv!record[recordType!User.fields.lastName],
details: rv!record[recordType!User.fields.city] & ", " & rv!record[recordType!User.fields.state],
image: touser(rv!record[recordType!User.fields.username])
)
Click OK. The record list now looks like this:
To create a grid-style record list:
By default, the User record type uses the a!userRecordFilterList() function as a user filter.
This function contains a Status user filter with filter options Active and Inactive, with Active selected by default. As a result, users see only active users in the record list when it first loads. Inactive users are users whose accounts have been deactivated.
Appian does not recommend removing the default user filter. Doing so will result in the record list displaying all inactive users, with no way for users to filter out the inactive users.
However, you can add your own user filters in addition to the default "Status" user filter. For example, if your users span multiple countries, you could add a "Country" user filter.
Learn how to add more user filters and customize the search.
By default, there is a Summary view for the User record type. You can edit the Summary view, and define additional record views to display more user information on user profiles.
Adding record views to the User record type is the same as adding record views to any other record type. Since the User record type has data sync enabled, you can also generate record views.
Like other record types, you can also remove the News and Related Actions views. Learn how to remove default record views.
By default, the User record type does not have any record actions, but you can add record actions to this record type just as you would any other record type.
By default, there are two security rules configured on the User record type:
These security rules are automatically applied anywhere the User record type is referenced, including your interfaces and queries. You can add more security rules to meet your business needs, or manage the existing security rules.
Note: Record-level security will not impact objects that are secured by user profile visibility settings. It will only apply where there are references to the User record type.
The User record type will automatically sync any data created or changed by the following smart services:
Note: You cannot sync the User record type using a records-powered smart service, like Sync Records, Write Records, or Delete Records.
The User record type will also automatically sync changes made in:
Additionally, if you use the userService
public Java API to create plug-ins that modify user information, those changes will also be automatically synced.
You can reference your user data throughout your applications using a record field reference. For example, you can easily query a user's name and title using the following query:
1
2
3
4
5
6
7
8
9
10
11
12
13
a!queryRecordType(
recordType: recordType!User,
fields: {
recordType!User.fields.firstAndLastName,
recordType!User.fields.title
},
filters: a!queryFilter(
field: recordType!User.fields.username,
operator: "=",
value: ri!username
),
pagingInfo: a!pagingInfo(startIndex: 1, batchSize: 100)
).data
Tip: By default, querying the User record type will always return the username
field as the identifier.
Additionally, when you build relationships between your record types and the User record type, you can seamlessly reference user data in the context of your other business data.
For example, if the Case record type has a relationship to the User record type, you could return all support engineers who are currently assigned to an open case using the following expression.
1
2
3
4
5
6
7
8
9
10
a!queryRecordType(
recordType: recordType!Case,
fields: recordType!Case.relationships.User.fields.firstAndLastName,
filters: a!queryFilter(
field: recordType!Case.fields.status,
operator: "<>",
value: "Open"
),
pagingInfo: a!pagingInfo(startIndex: 1, batchSize: 500)
).data
There are also numerous interface components that allow you to pull data directly from the User record type:
Once you have made changes to the User record type in one environment, you may need to deploy those changes to other environments. For example, you might make changes in a development environment that you need to deploy in a test or production environment.
The steps for deploying changes to the User record type are the same as those for deploying changes to any other record type. Simply create an application containing the User record type and any dependencies, export the application, and import it to the new environment.
Learn more about deploying to a target environment.
Modify the User Record Type