Free cookie consent management tool by TermsFeed

Create a Record Type

On This Page

Record types allow you to connect to enterprise data regardless of its source. When you create a record type, you select a data source and determine the data access method (optimized or direct).

Create a record type object

To create a record type:

  1. In your application, go to the Build view.
  2. Click NEW > Record Type.

    Tip:  If you have multiple existing database tables, click GENERATE to create multiple record types instead.

  3. In Create Record Type, configure the following properties:

    Property Description
    Name The name of the record type that is displayed in the Appian Designer. For example, in the Appian Retail application, you could have AR Order, AR Customer, or AR Support Ticket. Follow the recommended naming standard when creating this name.
    Display Name (Plural) The name of the record type in plural form. For example, Orders, Customers, or Support Tickets. This is the name that business users see in Process HQ, Tempo, and as the search placeholder text in the record list and any records-powered grids.
    Description The description of the record type shown in Process HQ, Tempo, and in Appian Designer.

    Click Generate AI Description to allow Appian AI Copilot to generate a record type description for you.
  4. Click Create.
  5. In the Review Application Security dialog, review the record type security settings.
  6. Click SAVE.
  7. Click TELL US ABOUT YOUR DATA.
  8. Select a data source based on your data availability:

    Note:  You can create a records-backed record type if you're preparing data for process analysis in Process HQ and need to perform complex data transformations.

Connect to a database

If your data lives in a relational database, you can connect it using optimized data access or direct data access.

Appian recommends using optimized data access whenever possible, so you can leverage automatically optimized data and all of Appian's data fabric features.

If you use direct data access to connect to data in a MariaDB or MySQL database, you can take advantage of relationships and related features. Otherwise, you'll need to disable those features to use direct data access to connect to other databases.

Tip:  See the Record Type Tutorial (Database) for a step-by-step example creating a record type that connects to a database.

Using optimized data access

You can use optimized data access to connect your record type to a database table or view from any supported database.

Before you begin, ensure your data source meets the following requirements for synced record types.

Field Requirements:

  • Primary keys: At least one primary key field is required. For database tables, you can have multiple fields that together create a composite primary key.
  • Field limit: Each record type can have up to 100 fields, including custom record fields.
  • Supported field types: Database columns must use a supported data type. Review the list of unsupported database column types.
  • Character limits: Unique fields have a maximum of 765 characters. Text fields longer than 4,000 characters are truncated.
  • Long text fields: To store up to 64,000 characters, use the Extra Long Text field type. If your field exceeds 64,000 characters, use an unsynced record type instead.

To connect to a database using optimized data access:

  1. In your new record type, go to Data Model.
  2. Click Tell Us About Your Data.
  3. Select Database.

    Scroll or drag to pan · ⌘+/⌘− to zoom · Esc to closeimages/db-selection.png

  4. Click NEXT.
  5. For Choose how to access data, keep the default selection Optimized Data Access.

    Scroll or drag to pan · ⌘+/⌘− to zoom · Esc to closeimages/data-access-methods.png

  6. Click NEXT.
  7. For Choose Database Table or View, keep Browse selected to see a list of available databases.
  8. Select a database.

    If your environment contains a single relational database, that database is selected and cannot be unselected.

  9. Select a schema or data catalog from the database.

    Note:  If a schema or catalog is missing, check the permissions for the account used in your data source connected system. System and internal schemas aren't supported and won't appear in the list.

  10. (Optional) Select the Show only the default schema checkbox to only see tables and views from the default schema defined in the data source.

    Tip:  Selecting a table or view from the default schema prevents connection issues when deploying the record type to an environment where the schema name is different. Otherwise, a schema mismatch error will occur if the schema names are different or changed.

  11. Select a database table or view. For Oracle databases, you can select a table synonym.

    A preview of the data appears.

  12. Click NEXT.
  13. For Configure Sync Filters, configure the following properties:

    Property

    Action

    Sync Options

    Enable the following sync options as needed:

    Sync Filters

    Add sync filters to specify which data is synced in the record type:

    1. Click Add Filter.
    2. Select a source field to filter by. Only source types that can be converted to Appian types appear in the dropdown.
    3. Select the operator to apply to the filter.
    4. Use the context menu next to the field to select how you want to pass the value into the filter. The options in this menu change based on the data type of the field selected. You can enter a static value or enter an expression.
    5. Click Add Filter to add additional filters. Multiple filters are evaluated with an AND operator.
    6. Click TEST FILTER to validate the filter conditions.

    You can add additional sync filters after configuring the source of the record type, where you can filter by source fields and by a relationship.

  14. Click NEXT.
  15. For Map source fields to record fields, clear the checkbox next to any field you don't want to include in the record type. By default, all source fields are selected.

    Note:  You must include the primary key field. For tables with a composite primary key, you must include all fields that make up the composite key.

  16. Configure the field properties:

    Property

    Action

    Primary Key Field

    The way Appian handles primary keys depends on the data source:

    • Database table: Appian automatically designates one or more fields as the primary key based on the source table.
    • Database view: You must manually select a field to serve as the primary key. Composite primary keys are not supported for database views.
    Unique Fields

    The way Appian handles unique keys depends on the data source:

    • Database table: Appian automatically designates fields as unique if they have a uniqueness constraint or unique index defined in the source table.
    • Database view: You must manually select which fields contain unique values.
    Source Field Name Use the checkbox next to a Source Field Name to add or remove a field from your record type. You can have up to 100 fields.

    Certain column data types cannot be used in synced record types.
    Record Field Name Enter the name for the record field. This is the name that will be used to reference the field in Appian Designer.
    Record Field Type Use the dropdown to select the data types for the record fields.
    We automatically suggest types based on the data type in the source.

    We recommend at least the following changes:
    • For fields containing usernames, change the type from Text to User.
    • For fields containing group identifiers, change the type from Number (Integer) to Group.
    • For fields containing more than 4,000 characters, change the type from Text to Extra Long Text. You can only have a maximum of three Extra Long Text fields on a record type for optimal performance.
    Display Name Enter a user-friendly field name to display to business users in Process HQ. Use title case formatting and spaces in the display name so it's easy for users to read. For example, First Name.

    When this field is blank, the Record Field Name is displayed in Process HQ using title case formatting.
    Description Enter a description of the field to display to business users in Process HQ.
  17. Drag and drop the rows to change the order in which the record fields are displayed.
  18. Click FINISH.
  19. Click SAVE to sync your data.
  20. (Optional) For record types with a single primary key, you can update the primary key field to use a sequence to generate primary key values.

Using direct data access (features enabled)

If you need direct access to a database table or view in a MariaDB or MySQL database, you can use direct data access and take advantage of relationships and related features.

However, you must disable relationships and related features if you are directly connecting to:

  • Any database other than MariaDB or MySQL.
  • External databases over PrivateLink.

Note:  VPN connections are supported for direct data access with features enabled. Contact Appian Support to enable VPN support in the data service.

Before you begin, ensure your data source meets the following requirements for synced record types.

Field Requirements:

  • Primary key: A single primary key field is required. The table cannot have a composite primary key.
  • Field limit: Each record type can have up to 100 fields, including custom record fields.
  • Supported field types: Database columns must use a supported data type. Review the list of unsupported database column types.
  • Character limits: Unique fields have a maximum of 765 characters.
  • Text fields: Text fields and Extra Long Text fields do not have a character limit. Use Extra Long Text fields to more effectively store and display large volumes of unstructured data.

To connect to a database using direct data access and use relationships and all related features:

  1. In your new record type, go to Data Model.
  2. Click Tell Us About Your Data.
  3. Select Database.

    Scroll or drag to pan · ⌘+/⌘− to zoom · Esc to closeimages/db-selection.png

  4. Click NEXT.
  5. For Choose how to access data, select Direct Data Access.
  6. Keep the Disable relationships and all related features checkbox unselected.

    Scroll or drag to pan · ⌘+/⌘− to zoom · Esc to closeimages/data-access-methods-features-enabled.png

  7. Click NEXT.
  8. For Choose Database Table or View, keep Browse selected to see a list of available databases.
  9. Select a MariaDB or MySQL database.

    If your environment contains a single relational database, that database is selected and cannot be unselected.

  10. Select a schema or data catalog from the database.


    Note:  If a schema or catalog is missing, check the permissions for the account used in your data source connected system. System and internal schemas aren't supported.

  11. (Optional) Select the Show only the default schema checkbox to only see tables and views from the default schema defined in the data source.

    Tip:  Selecting a table or view from the default schema prevents connection issues when deploying the record type to an environment where the schema name is different. Otherwise, a schema mismatch error will occur if the schema names are different or changed.

  12. Select a database table or view.

    A preview of the data appears.

  13. Click NEXT.
  14. For Map source fields to record fields, clear the checkbox next to any field you don't want to include in the record type. By default, all source fields are selected, and you must include the primary key.

  15. Configure the field properties:

    Property

    Action

    Primary Key Field

    The way Appian handles primary keys depends on the data source:

    • Database table: Appian automatically designates one or more fields as the primary key based on the source table.
    • Database view: You must manually select a field to serve as the primary key. Composite primary keys are not supported for database views.
    Unique Fields

    The way Appian handles unique keys depends on the data source:

    • Database table: Appian automatically designates fields as unique if they have a uniqueness constraint or unique index defined in the source table.
    • Database view: You must manually select which fields contain unique values.
    Source Field Name Use the checkbox next to a Source Field Name to add or remove a field from your record type. You can have up to 100 fields.

    Certain column data types cannot be used in unsynced record types.
    Record Field Name Enter the name for the record field. This is the name that will be used to reference the field in Appian Designer.
    Record Field Type Use the dropdown to select the data types for the record fields.
    We automatically suggest types based on the data type in the source.

    We recommend at least the following changes:
    • For fields containing usernames, change the type from Text to User.
    • For fields containing group identifiers, change the type from Number (Integer) to Group.
    • For fields containing more than 4,000 characters, change the type from Text to Extra Long Text. You can only have a maximum of three Extra Long Text fields on a record type for optimal performance.
    Display Name Enter a user-friendly field name to display to business users in Process HQ. Use title case formatting and spaces in the display name so it's easy for users to read. For example, First Name.

    When this field is blank, the Record Field Name is displayed in Process HQ using title case formatting.
    Description Enter a description of the field to display to business users in Process HQ.
  16. Drag and drop the rows to change the order in which the record fields are displayed.
  17. Click FINISH.
  18. Click SAVE.

Using direct data access (features disabled)

If you need direct access to data from a database other than MariaDB or MySQL, you must use direct data access and disable relationships and related features.

You can connect to any database table or view from any supported database.

To connect to a database using direct data access with features disabled:

  1. Create a custom data type (CDT) that reflects the fields in your database table or views. The CDT must contain a primary key.
  2. Create a data store entity (DSE) to specify the database and entity to connect to.
  3. Create a new record type.
  4. In your new record type, go to Data Model.
  5. Click Tell Us About Your Data.
  6. Select Database.

    Scroll or drag to pan · ⌘+/⌘− to zoom · Esc to closeimages/db-selection.png

  7. Click NEXT.
  8. For Choose how to access data, select Direct Data Access.
  9. Select the Disable relationships and all related features checkbox.

    Scroll or drag to pan · ⌘+/⌘− to zoom · Esc to closeimages/data-access-methods-features-disabled.png

  10. Click NEXT.
  11. For Choose Data Store and Entity, select a data store.
  12. Select an entity from the selected data store.

    A preview of the data appears.

  13. Click FINISH.
  14. Click SAVE.

Unsupported database columns

There are some databases that have unique data types that are not supported in synced record types or unsynced record types. In general, Appian does not support binary large object (BLOB), spatial, or XML types, or any user-defined types.

For binary types, you may still be able to manually map a field in your record type to that column, but it is not guaranteed to work correctly and may fail completely with a future version of Appian.

Note:  If your table includes LONG or BIGINT columns, the safe range of values is from -2,147,483,647 to 2,147,483,647. Numbers outside that range may not be synced correctly. See the Number (Integer) data type for more information about number values in Appian.

The following table provides a reference of unsupported data types and may not be comprehensive. Vendor-specific and user-defined types are generally not supported and may cause record types to not sync or other issues.

Database Vendor

Unsupported types

IBM DB2
  • BINARY
  • BLOB
  • DBCLOB
  • GRAPHIC
Maria DB and MySQL
  • BLOB
  • BINARY
  • LONGBLOB
  • MEDIUMBLOB
  • MULTILINESTRING
  • MULTIPOINT
  • MULTIPOLYGON
  • POINT
  • POLYGON
  • TINYBLOB
  • VARBINARY
  • YEAR
  • UUID
Microsoft SQL Server
  • binary
  • datetimeoffset
  • geography
  • geometry
  • hierarchyid
  • image
  • rowversion
  • sql_variant
  • varbinary
Oracle
  • BFILE
  • BINARYDOUBLE
  • BINARYFLOAT
  • BLOB
  • INTERVAL_DAY_TOSECOND
  • INTERVAL_YEAR_TOMONTH
  • ROWID
  • TIMESTAMP_WITH_LOCALTZ
  • TIMESTAMP_WITH_TZ
  • UROWID
  • VARBINARY
PostgreSQL
  • BIT
  • BIT_VARYING
  • BOX
  • BYTEA
  • CIDR
  • CIRCLE
  • INET
  • INTERVAL
  • JSON
  • JSONB
  • LINE
  • LSEG
  • MACADDR
  • MACADDR8
  • MONEY
  • PATH
  • PG_LSN
  • PG_SNAPSHOT
  • POINT
  • POLYGON
  • TSQUERY
  • TSVECTOR
  • TXID_SNAPSHOT
  • UUID
  • XML

If your data lives in an external system, you can connect to it using optimized data access or direct data access.

To connect a record type to a web service:

  1. Create an integration.
  2. Create a record data source.
  3. In your record type, connect to the web service using:

If you're new to creating service-backed record types, check out this Academy Online course to get started.

Create an integration

Before connecting a web source, you must configure a connected system and an integration object to authenticate and connect to your external system.

Create a record data source

Once you've created your integration, you'll need to create a record data source to allow the record type to access data from the web service.

The record data source is an expression rule that calls an integration and returns data from the response body. Within the expression, you can add rule inputs and functions to configure additional record type behavior.

To create a record data source, create a new expression rule that meets the following requirements:

  • Integration response requirements:
    • The expression calls the necessary integration. This could be in the form of a local variable, like local!integrationResponse: rule!AR_getIntegrationData.
    • The response body must cast to a List of Map, List of Dictionary, or a List of CDT, and it must have at least one Number (Integer) field that's non-null for every entry to act as the primary key for the record type.

  • Function requirements:
    • The expression does not use plug-ins or any of the following functions: a!query, a!queryEntity, a!queryProcessAnalytics, a!queryRecordType.

  • Batching requirements (optimized data access):
  • Rule input requirements (direct data access):
    • The expression has a rule input of type PagingInfo to allow for paging and sorting of records.
    • The expression has a rule input of type Text to allow users to search for records.
    • If you add rule inputs for paging and search to your record data source expression, you must update the underlying integration to reference the rule inputs from the expression.

Batch by sequential values

If your web service uses an integer pagination value, you can batch by sequential values {1,2,3…} to sync more than 1,000 rows from the web service.

Check out this Appian Community video for a guided walkthrough on how to batch by sequential values.

To batch by sequential values:

  1. In the record data source expression:

    1. Add exactly one rule input with the following properties:

      Property

      Value

      Name batchNumber
      Type Number (Integer)
    2. Click SAVE.

  2. In the underlying integration:

    1. Add a rule input of the same name and type as the rule input in the record data source expression.

    2. Add a query parameter that uses the rule input as the Value.

      If the underlying API requires a Start Index, you can calculate the index with the following formula: 1 + ((batchNumber - 1) * batchSize) = startIndex.

      For example, the query parameter below uses the formula, where ri!batchNumber passes in each sequential value. If you have a batch size of 1,000, batch 1 would have a start index of 1 + ((1 - 1) * 1000) = 1.

      Scroll or drag to pan · ⌘+/⌘− to zoom · Esc to closeimages/startIndex-integration-ex.png

    3. Click SAVE.

  3. In the record data source expression:

    1. Update the local variable that calls the integration so you can pass the rule input to the integration.

      For example:

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      24
      25
      26
      27
      28
      29
      
      a!localVariables(
              
      /* Calls the integration and stores the response in a local variable */
      /* Uses the batchNumber rule input to pass sequential values to the integration */
      local!integrationResponse: rule!AR_getOrderData(
      +   batchNumber: ri!batchNumber
        ),
              
      if(
      /* This will return true if the integration succeeds */
      local!integrationResponse.success,
              
      /* Returns the list of values from the integration response that will map to your record data */
      local!integrationResponse.result.body,
              
      /* If the integration is unsuccessful, handle accordingly */
              
      if(
        /* Note: handling of out of bounds exceptions varies by web service */
        tointeger(index(local!integrationResponse.result, "statusCode", 0)) = 416,
              
        /* If this is an out of bounds error, return an empty list to finish syncing */
        {},
               
        /* If this is a different error, return the integration error. */
        local!integrationResponse.error
          )
         )
        )
      
    2. Click SAVE.

Batch by cursor or token

In some instances, the integration will return a parameter in the response header or body that contains a cursor or token identifying the next page of data.

You can batch by this value so the cursor or token is automatically appended to the integration URL, which will allow you to sync more than 1,000 rows from the web service.

To batch by cursor or token:

  1. In the record data source expression:

    1. Add exactly one rule input with the following properties:

      Property

      Value

      Name nextPageUri
      Type Text
    2. Add the a!pageResponse() function to the expression to identify the data in the current integration response, and the path for the next set of data to request. The value of the nextPage parameter will be automatically passed to the rule input.

    3. Click SAVE.

  2. In the underlying integration:
    1. Add a rule input of the same name and data type as the rule input in the record data source expression.
    2. Add a query parameter that uses the rule input as the Value.

      Scroll or drag to pan · ⌘+/⌘− to zoom · Esc to closeimages/cursor-integration-ex.png

    3. Click SAVE.
  3. In the record data source expression:
    1. Update the local variable that calls the integration so you can pass the rule input to the integration.

      You must use a!defaultValue() to pass a null value when the next page is empty or null. This will ensure the sync ends when there is no more data to sync. For example:

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      24
      25
      26
      27
      28
      29
      30
      31
      32
      33
      34
      35
      36
      37
      38
      
      a!localVariables(
      
      /* Calls the integration and stores the response in a local variable */
      /* Uses the nextPageUri rule input to pass the URI for the next page */
      /* If the next page is empty, returns null to stop paging */
            local!integrationResponse: rule!AR_getCustomerData(
      +        a!defaultValue(value: ri!nextPageUri, default: fn!null())
        ), 
      
        if(
      
         /* This will return true if the integration succeeds */
         local!integrationResponse.success,
      
         a!pageResponse(
                     
             /* Returns a list of maps, dictionaries, or CDTs that map to your record data */
             data: local!integrationResponse.result.body.results,
      
             /* Identifies the location of the next page of results */
             /* which is automatically used in the nextPageUri rule input */
             nextPage: local!integrationResponse.result.body.next
         ),
      
         /* If the integration is unsuccessful, handle accordingly */
         if(
      
             /* Note: handling of out of bounds exceptions varies by web service */
             tointeger(index(local!integrationResponse.result, "statusCode", 0)) = 416,
      
             /* If this is an out of bounds error, return an empty list to finish syncing */
             {},
      
             /* If this is a different error, return the integration error. */
             local!integrationResponse.error
           )
          )
        )
      
    2. Click SAVE.

Batch by a full URL or URI

If your integration returns a full URL or URI that contains the next page of data, you can batch by that value.

If the full URL or URI is embedded within a response parameter, you can use familiar functions to extract the value in your record data source expression. Learn more.

To batch by a full URL or URI:

  1. In the record data source expression:

    1. Add exactly one rule input with the following properties:

      Property

      Value

      Name nextPageUri
      Type Text
    2. Add the a!pageResponse() function to the expression to identify the data in the current integration response, and the path for the next set of data to request. The value of the nextPage parameter will be automatically passed to the rule input.

    If the next page link is embedded in a response parameter, use the appropriate functions to extract it. See an example.

    1. Click SAVE.
  2. In the underlying integration:
    1. Add a rule input of the same name and data type as the rule input in the record data source expression.
    2. For URL, select Build URL from Scratch.

      Note:  This option only appears if you use a connected system to configure your integration.

    3. Hover over the URL input and click Edit as Expression.

    4. In the expression, reference the rule input.

      As a best practice, use a!defaultValue() to provide the rule input value until it returns null or empty. At which point, the function can return a static URL.

      Scroll or drag to pan · ⌘+/⌘− to zoom · Esc to closeimages/custom-url-integration-ex.png

    5. Click SAVE.
  3. In the record data source expression:
    1. Update the local variable that calls the integration so you can pass the rule input to the integration.

      You must use a!defaultValue() to pass a null value when the next page is empty or null. This will ensure the sync ends when there is no more data to sync.

      For example:

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      24
      25
      26
      27
      28
      29
      30
      31
      32
      33
      34
      35
      36
      37
      38
      39
      40
      41
      42
      43
      44
      45
      46
      
        a!localVariables(
              
        /* Call the integration and store the response in a local variable */
        local!integrationResponse: rule!SXBR_newChicagoInt(
              
        /* The record data source will be executed multiple times, passing the nextPageUri until an empty next page value is returned */
        /* The batch size is limited to 1000 records per batch */
      +    a!defaultValue(value: ri!nextPageUri, default: fn!null())),
      
        if(
        /* This will return true if the integration succeeds */
        local!integrationResponse.success,
      
        /* If needed, modify the expression below to return a list of maps, dictionaries, or CDTs that map to your record data */
        /* Update the nextPage parameter value to the location of the nextPage value */
           
        a!pageResponse(
          data: a!forEach(
             items: local!integrationResponse.result.body.data, 
             expression: 
             a!map(
                  id: fv!item.id,
                  title: fv!item.title,
                  description: fv!item.description,
                  price: fv!item.price_display,
                  max_price: todecimal(fv!item.max_current_price)
             )
          ),
          nextPage: local!integrationResponse.result.body.pagination.next_url
        ),
      
        /* If the integration is unsuccessful, handle accordingly */
      
        if(
             /* Note: handling of out of bounds exceptions varies by web service */
             tointeger(index(local!integrationResponse.result, "statusCode", 0)) = 416,
      
             /* If this is an out of bounds error, return an empty list to finish syncing */
             {},
      
             /* If this is a different error, return the integration error. */
             /* If you need additional logic to determine the error, use a!integrationError() in the integration to format the error displayed in the sync monitor */
             local!integrationResponse.error
           )
          )
        )
      
    2. Click SAVE.

Using optimized data access

Once you have your integration and record data source, you can connect and sync data from the web service using optimized data access.

To connect to a web service using optimized data access:

  1. In your record type, go to Data Model.
  2. Click Tell Us About Your Data.
  3. Select Web Service.

    Scroll or drag to pan · ⌘+/⌘− to zoom · Esc to closeimages/wb-selection.png

  4. Click NEXT.
  5. For Choose how to access data, keep the default selection Optimized Data Access.

    Scroll or drag to pan · ⌘+/⌘− to zoom · Esc to closeimages/data-access-methods.png

  6. Click NEXT.
  7. For Choose Record Data Source:
    • If you have an existing expression rule for your record data source, select it from the list.
    • If you do not have an existing expression rule, click Create Record Data Source to create one. As you create the record data source, choose a batching option to allow the record type to sync more than 1,000 rows from the web service.
  8. Click NEXT.
  9. For Map source fields to record fields, configure the following field properties:

    Property

    Action

    Primary Key Field Select a field of any data type to be the primary key.
    Unique Fields Specify which fields must have all unique values. Unique fields can be used as a common field on the one-side of a relationship configuration.
    Source Field Name Use the checkbox next to a Source Field Name to add or remove a field from your record type. You can have up to 100 fields.
    Record Field Name Enter the name for the record field. This is the name that will be used to reference the field in Appian Designer.
    Record Field Type Use the dropdown to select the data types for the record fields.
    We automatically suggest types based on the data type in the source.

    We recommend at least the following changes:
    1. For fields containing usernames, change the type from Text to User.
    2. For fields containing group identifiers, change the type from Number (Integer) to Group.
    Display Name Enter a user-friendly field name to display to business users in Process HQ. Use title case formatting and spaces in the display name so it's easy for users to read. For example, Year-to-Date.

    When this field is blank, the Record Field Name is displayed in Process HQ using title case formatting.
    Description Enter a description of the field to display to business users in Process HQ.
  10. Drag and drop the rows to change the order in which the record fields are displayed.
  11. Click FINISH.
  12. Click SAVE to sync your data.

Using direct data access (features disabled)

Once you have your integration and record data source, you can connect and query the web service in real time using direct data access.

Note:  The record type cannot use relationships and related features when you use direct data access to connect to a web service.

To connect to a web service using direct data access:

  1. Create a custom data type (CDT) that defines the output of the integration's expected response. Each response property should have a field in the CDT.
  2. In your record type, go to Data Model.
  3. Click Tell Us About Your Data.
  4. Select Web Service.

    Scroll or drag to pan · ⌘+/⌘− to zoom · Esc to closeimages/wb-selection.png

  5. Click NEXT.
  6. For Choose how to access data, select Direct Data Access.

    Relationships and all related features are disabled by default.

    Scroll or drag to pan · ⌘+/⌘− to zoom · Esc to closeimages/data-access-methods-features-disabled-default.png

  7. Click NEXT.
  8. For Choose Record Data Source:
    • If you have an existing expression rule for your record data source, select it from the list.
    • If you do not have an existing expression rule, click Create Record Data Source to create one.
  9. Click NEXT.
  10. For Data Type, select the CDT that matches the output of the integration's expected response.
  11. Click FINISH.
  12. Enable paging.
  13. Enable search.
  14. Enable user filters.
  15. Configure a single record source.
  16. Test your configurations:
    1. In the Test Record Source section of the record type, select one of the expressions to test: Record Data Source or Single Record Source.
    2. Click TEST. The first 100 records of the DataSubset are returned.

Connect to Salesforce

By default, Salesforce is listed as a data source shortcut. This allows you to quickly connect the record type to a Salesforce connected system.

You can connect to a Salesforce using optimized data access or direct data access. If you use direct data access to connect to a Salesforce, you'll follow the same steps to connect to a web service.

Using optimized data access

You can connect and sync data from Salesforce using optimized data access.

To connect to a Salesforce using optimized data access:

  1. Ensure your Salesforce instance is large enough to sync the data you need.
  2. Create a new record type.
  3. On the Data Model, click Tell Us About Your Data.
  4. Select Salesforce.

    Scroll or drag to pan · ⌘+/⌘− to zoom · Esc to closeimages/sf-selection.png

  5. Click NEXT.
  6. For Choose how to access data, keep the default selection Optimized Data Access.

    Scroll or drag to pan · ⌘+/⌘− to zoom · Esc to closeimages/data-access-methods.png

  7. Click NEXT.
  8. For Choose Salesforce Object:
    • If you have an existing Salesforce connected system, select it from the list.
    • If you do not have a Salesforce connected system yet, click New Connected System to create one.
  9. Click NEXT.
  10. For Configure Sync Filters, add sync filters to specify which data is synced in the record type:
    1. Click Add Filter.
    2. Select a source field to filter by. Only source types that can be converted to Appian types appear in the dropdown.
    3. Select the operator to apply to the filter.
    4. Use the context menu next to the field to select how you want to pass the value into the filter. The options in this menu change based on the data type of the field selected. You can enter a static value or enter an expression.
    5. Click Add Filter to add additional filters. Multiple filters are evaluated with an AND operator.
    6. Click TEST FILTER to validate the filter conditions.
  11. Click NEXT.
  12. For Map source fields to record fields, configure the following field properties:

    Property

    Action

    Source Field Name Use the checkbox next to a Source Field Name to add or remove a field from your record type. You can have up to 100 fields.
    Record Field Name Enter the name for the record field. This is the name that will be used to reference the field in Appian Designer.
    Record Field Type Use the dropdown to select the data types for the record fields.
    We automatically suggest types based on the data type in the source.

    We recommend at least the following changes:
    1. For fields containing usernames, change the type from Text to User.
    2. For fields containing group identifiers, change the type from Number (Integer) to Group.
    Display Name Enter a user-friendly field name to display to business users in Process HQ. Use title case formatting and spaces in the display name so it's easy for users to read. For example, First Name.

    When this field is blank, the Record Field Name is displayed in Process HQ using title case formatting.
    Description Enter a description of the field to display to business users in Process HQ.
  13. Drag and drop the rows to change the order in which the record fields are displayed.
  14. Click FINISH.
  15. Click SAVE to sync your data.

Using direct data access (features disabled)

To connect to Salesforce using direct data access, follow the steps to connect to a web service using direct data access (features disabled). The record type cannot use relationships or related features when using direct data access to connect to Salesforce.

Connect to a process model

You can use any process model as the source for a record type. Each running instance of that process model will be treated as an individual record of your record type.

This configuration is less common and can only be done using direct data access. Relationships and related features are not available for record types that connect to a process model.

Using direct data access (features disabled)

To connect to a process model using direct data access:

  1. In your record type, go to Data Model.
  2. Click Tell Us About Your Data.
  3. Select Process.

    Scroll or drag to pan · ⌘+/⌘− to zoom · Esc to closeimages/pm-selection.png

  4. Click NEXT.
  5. For Choose Process Model, select a process model.
  6. Click FINISH.

Now, each active (unarchived) process instance will appear as a row in the record type.

Feedback