# SailPoint Delimited File SaaS Connector Documentation > Delimited File SaaS Connector Documentation # Documentation # Connecting SailPoint and Delimited File SaaS To connect SailPoint with Delimited File, perform the following tasks: ## Adding the Source in SailPoint To connect to SailPoint, perform the following steps. Once the connection is made, you can configure it to meet your company's needs. > [!IMPORTANT] > > By default, the provisioning feature is **disabled**, and the connector only supports read-only operations. To support provisioning operations, you must manually enable the feature in the source configuration. **To configure a new source:** 1. Sign in to SailPoint. 2. Go to **Admin \> Connections \> Sources**. 3. Select **Create New**. 4. Search for the connector by entering the name in the search box, and then select **Configure**. 5. Enter the following information: - **Source Name** - Enter a name for the new source. - **Description** - Enter a description for the new source to help distinguish it from similar sources. - **Source Owner** - Begin typing the name of an owner. Matches appear after you type two or more letters. > **Note** > > You must add a source owner at the same time as you add a Name, Description, and Source Type while creating the source. - **Platform Type** - Select **SaaS**. - **SaaS** - Select **SaaS** if no connector is available, or if another system restricts the connection. This option allows only reading and aggregating data as a generic application. Provisioning activity is unsupported, and additional configuration pages like connection settings and aggregation settings are unavailable. - **Governance Group (Optional)** - Select an optional governance group from the dropdown list. - Select **Authoritative Source** if the source will be used as the account source for an identity profile. For more information, refer to [Creating Identity Profiles](). 6. Select **Continue** to create the new source with your selections. ## Base Configuration Provide the base configuration parameters. Information you entered in the Create New Source dialog is automatically entered into the fields in the Base Configuration page. You can edit this information if necessary. 1. Enter a unique name and description for the source. 2. In the **Source Owner** dropdown list, select the identity that owns this source. - To find a source owner, begin entering their name. 3. (Optional) If enabled for your organization, select the **Use a Credential Provider** checkbox to manage the source's authentication using a credential provider. > **Note** > > To add a credential provider, go to **Admin \> Connections \> Credential Providers**. For more information about credential providers, refer to [Credential Providers](). 4. Configure the authentication to allow SailPoint to connect to the source. 5. (Optional) In the **Governance Group for Source Management** dropdown list, select a governance group to associate with this source. For more information about governance groups, refer to [Associating Governance Groups with a Source](). 6. (Optional) Choose whether to enable or disable provisioning for the source. Provisioning is disabled by default. - **Enable Provisioning** - Set the toggle to **Enabled** to allow the source to create, update, and deactivate accounts in the connected source system. - **Disable Provisioning** - Set the toggle to **Disabled** to disable provisioning for the source. Disabling provisioning will prevent the creation, updating, or deactivating of accounts on this source. 7. Select **Save**. ## Parsing Settings Configure the parsing technique the connector uses to parse the data file: **Delimited** or **Regular Expression**. > [!NOTE] > > **Screenshot** > > [![Parsing Settings]()]() - **Delimited** - When **Parsing Type** is set to **Delimited**, select the edit button for the schema in **File Settings** to enter the character to use as a delimiter. - **Regular Expression** - When **Parsing Type** is set to **Regular Expression**, select the edit button for the schema in **File Settings** to enter the regular expression using regular expression groups to break the data into tokens. ## File Settings For each schema type, specify the attributes to use during aggregation. ### Account Schema File Settings Complete the following tasks to configure the file path, parsing, merging, and filtering settings for the Account schema: #### File Use the **File Path** attribute to specify the path to the export file that the Delimited File source uses for the Account Schema. > [!NOTE] > > **Screenshot** > > [![File Path]()]() Enter the path and name of the data file that should be parsed. #### Parsing Use the following parsing attributes for the Account Schema: > [!NOTE] > > **Screenshot** > > [![Parsing]()]() - **Delimiter** - Applicable when **Parsing Type** is set to **Delimited**. - Enter the character to use as a delimiter. - If the delimiter is a Unicode character, use the `\u` format. For example, `\u0009` is used for the tab character. - **Regular Expression** - Applicable when **Parsing Type** is set to **Regular Expression**. - Enter the regular expression using regular expression groups to break the data into tokens. - **Columns** - Enter the names of the columns to use when parsing the file. - If you are using the **Regular Expression** parsing type, this field is required. - If you are using the **Delimited** parsing type, configure this field only if there is no header defined or you want to rename the columns used in the buildMap rule. #### Filtering Use the following filtering attributes for the Account schema: > [!NOTE] > > **Screenshot** > > [![Filtering]()]() - **Number of Lines to Skip** - Enter the **Number of Lines to Skip** in the data file before parsing the data. For example, when the value is set to `1`, the connector skips the first line of data from the input file along with the header line. > **Note** > > The first line of the input file consists of column headers. For the **Regular Expression** parsing type, the connector skips the header section during aggregation if the value is set to `1`. - **Filter Empty** - Select this checkbox to filter out any objects that parse but have no attributes. - **Comment Character** - Enter a comment character in the **Comment Character** field. Records that start with the comment character are skipped by the source. The default value is `#`. - **Filter String** - Enter a string that represents a filter object in the **Filter String** field. Any object that matches this filter is excluded from the dataset and is not returned. For example, the following filter excludes all objects from the Marketing department: ```text department == "Marketing" ``` #### Merging Use the following merging attributes for the Account Schema of the Delimited File source: > [!NOTE] > > **Screenshot** > > [![Merging]()]() - **Data sorted by the indexColumn(s)** - Select this checkbox if the data is sorted by the index columns. If the data is not sorted, an in-memory representation of the data is built and used. - **Ignore case while merging** - Select this checkbox to ignore case during the merge. The **Data sorted by the indexColumn(s)** option must be selected. ### Group Schema File Settings Complete the following tasks to configure the file path, parsing, merging, and filtering settings for the Account schema: #### File Use the **File Path** attribute to specify the path to the export file that the Delimited File source uses for the Account Schema. > [!NOTE] > > **Screenshot** > > [![File Path]()]() Enter the path and name of the data file that should be parsed. #### Parsing Use the following parsing attributes for the Account Schema: > [!NOTE] > > **Screenshot** > > [![Parsing]()]() - **Delimiter** - Applicable when **Parsing Type** is set to **Delimited**. - Enter the character to use as a delimiter. - If the delimiter is a Unicode character, use the `\u` format. For example, `\u0009` is used for the tab character. - **Regular Expression** - Applicable when **Parsing Type** is set to **Regular Expression**. - Enter the regular expression using regular expression groups to break the data into tokens. - **Columns** - Enter the names of the columns to use when parsing the file. - If you are using the **Regular Expression** parsing type, this field is required. - If you are using the **Delimited** parsing type, configure this field only if there is no header defined or you want to rename the columns used in the buildMap rule. > [!NOTE] > > The delimiter character the connector should use to parse group data is defined separately by the `group.delimiter` parameter. Set the `group.delimiter` parameter value using the SailPoint REST API as shown in the following `PATCH` example. The default value is a comma (`,`). > > ```text > PATCH https://{orgName}.api.identitynow.com/v3/sources/:id > ``` > > ```json > [ > { > "op": "add", > "path": "/connectorAttributes/group.delimiter", > "value": > } > ] > ``` > > For more information on SailPoint's REST APIs, refer to [Best Practices: REST API Authentication]() and [REST API - Update Source (Partial)]() in the SailPoint Developer Community. #### Filtering Use the following filtering attributes for the Group schema: > [!NOTE] > > **Screenshot** > > [![Filtering]()]() - **Number of Lines to Skip** - Enter the **Number of Lines to Skip** in the data file before parsing the data. For example, when the value is set to `1`, the connector skips the first line of data from the input file along with the header line. > **Note** > > The first line of the input file consists of column headers. For the **Regular Expression** parsing type, the connector skips the header section during aggregation if the value is set to `1`. - **Filter Empty** - Select this checkbox to filter out any objects that parse but have no attributes. - **Comment Character** - Enter a comment character in the **Comment Character** field. Records that start with the comment character are skipped by the source. The default value is `#`. - **Filter String** - Enter a string that represents a filter object in the **Filter String** field. Any object that matches this filter is excluded from the dataset and is not returned. For example, the following filter excludes all objects from the Marketing department: ```text department == "Manufacturing" ``` #### Merging Use the following merging attributes for the Account Schema of the Delimited File source: > [!NOTE] > > **Screenshot** > > [![Merging]()]() - **Data sorted by the indexColumn(s)** - Select this checkbox if the data is sorted by the index columns. If the data is not sorted, an in-memory representation of the data is built and used. - **Ignore case while merging** - Select this checkbox to ignore case during the merge. The **Data sorted by the indexColumn(s)** option must be selected. ## Review and Finish Once you have completed your configuration, review your settings. 1. Select **Review and Finish** from the left-hand menu. 2. Select the **X** icon to exit. ### Review and Import Accounts If you are configuring a Delimited File source for the first time, select **Review and Import Accounts** to review your connectivity details and import a CSV file of your accounts for correlation recommendations. Importing accounts at this stage does not aggregate them. Refer to [Source Recommendations]() for more information. # Integrating SailPoint with Delimited File SaaS An integration of SailPoint with a Delimited File source creates a connector that reads account data from a file. The Delimited File connector is designed to work with any system to fetch data. It supports customizable account schemas based on your specific requirements and can retrieve both accounts and groups. Additionally, it is capable of handling multi-valued attributes. Compared to the Generic Flat File connector, the Delimited File connector offers more control options in the SailPoint configuration pages, giving you more flexibility with the source file. > [!NOTE] > > To view the latest features, enhancements, and fixes for all SaaS connectors, refer to the [SaaS Release Notes]() page. ## Supported Features The Delimited File connector supports the following features: - Custom account schema - Load accounts - Load entitlements For more information on features, refer to [Source Features](). ## Prerequisites - A delimited file is required to use this source. - The first line of the file must be column headers. ### SailPoint File Upload Utility The SailPoint File Upload Utility provides a way for you to upload files to the cloud automatically. You may use the SailPoint File Upload Utility with the Delimited File source. For more information about downloading and using the SailPoint File Upload Utility, refer to [SailPoint File Upload Utility.]() > [!NOTE] > > **Best Practice** > > For best results, delimited files should not exceed 500 MB. # Schema Reference The application schema is used to configure the objects returned from a connector. > [!NOTE] > > - The **Account Schema** tab is used to define the attributes for each object type in the application being configured. The schema attributes can be defined as **Entitlement** or **Multi-Valued**. Refer to [Managing Source Account Schemas]() for more information. > - The schema attributes that are not present by [default](<#default-account-schema>) must be defined as strings if not specified. The Delimited File SaaS connector uses the following default correlation and object configurations. ## Correlation For the Delimited File connector, a correlation rule must be defined to correlate the accounts to identities. There is no default correlation rule with this connector. ## Default Account Schema Each source supports a variety of details, or attributes, about each user who has an account, such as their name, email address, manager name, and location. The set of account attributes each source stores and how they're organized is known as the account's *schema*. To best represent your data, you can configure sources to use an account schema matching the one you use in the external connector. Refer to [Managing Source Account Schemas]() for more information. ### Default Account ID SailPoint requires that certain attributes remain in your configuration. These attributes are referred to as *account IDs*. > [!CAUTION] > > Changing the attribute marked as the account ID after aggregating accounts can result in duplicate accounts being created. To avoid this, either reset the accounts on this source before editing the account ID attribute or edit the account ID attribute before aggregating accounts. > > To resolve issues caused by changing account IDs, reconfigure them to their default values. The following table lists the default account IDs for this connector: | Account ID | Schema Object Type | | --- | --- | | id | Account | | id | Group | ### Default Account Attributes The Delimited File SaaS connector supports the following default account schema attributes and customer configurable attributes. The attributes must be defined as strings if not specified. > [!IMPORTANT] > > When you upload an updated account schema, the Delimited File source checks if any of the new attributes were included in the old schema. The source keeps the settings (description, entitlement, multi-valued, type, etc.) for any previously included attributes. The source also removes any attributes that are not found in newly discovered or uploaded schema, as long as the attributes aren't used in other configurations. | Attribute Name | Description | | --- | --- | | id | The unique ID for the account. | | name | The username of the account. | | givenName | The first or given name of the user associated with the account. | | familyName | The last, family name, or surname of the user associated with the account. | | e-mail | The primary email address of the user associated with the account. | | location | The location associated with this account. | | manager | Reference to the manager of this particular account. | | groups | The groups or roles that reference account group objects. | | IIQDisabled | This is an optional attribute. SailPoint recommends that you work with Services to create a Build Map Rule specific to your company's needs.
This is a Boolean attribute to set an account as enabled or disabled in SailPoint. You can add the IIQDisabled attribute in the source account schema or use the Build Map Rule to set the value as true/false based on the incoming data from the file. For more information, refer to the [SailPoint Rule Guide](). | > [!NOTE] > > The default input for `id` and `name` are set as **Account ID** and **Account Name** respectively. The `groups` attribute is multi-valued and entitlement, by default. ## Default Entitlement Attributes Entitlement attributes define the entitlements, such as groups or roles, that can be assigned to the managed system's user accounts. Refer to [Managing Entitlements]() for more information. > [!CAUTION] > > Changing the attribute marked as the Entitlement ID after aggregating accounts or entitlements can result in duplicate entitlements being created, or access profiles and roles breaking. To avoid this, edit the entitlement schema before performing any aggregations. ### Default Group Attributes The Delimited File SaaS connector also supports groups. The following attributes must be configured on the managed system and in the SailPoint source schema to manage groups. | Attribute Name | Description | | --- | --- | | id | Unique ID for the group. | | name | The name of the group. | | displayName | The preferred display name for the group. | | created | Date and time when the group was created. | | description | Multi-purpose field used to capture a description or comments. | | modified | Date and time when the group was modified. | | entitlements | The access rights and entitlements that the group has access to. | | groups | The groups and roles that reference to account group objects. | | permissions | The permissions associated with the account. | ## Multi-Group Object Schemas The Delimited File source supports multi-group object schemas. You can define additional group objects or entitlement types (such as roles) for a source and aggregate those into SailPoint. ### Data Import You can import accounts for the Delimited File source. This step must be performed only after you have defined the account schema. There are two ways to load accounts for this source: - Use the SailPoint File Upload utility as mentioned in the [Prerequisites]() section. > **Best Practice** > > For best results, delimited files should not exceed 500 MB. - Manually aggregate accounts. For more information, refer to [Manually Aggregating Accounts from a Flat File](). ### File Structure In a delimited file, each row represents one account (with the exception of multi-valued values). Each column has the ability to hold values of data that are associated with the account and are of a certain fixed order. These columns should be in the same order as the Account Schema. Their data can be left blank as long as the fields are not required. The file should be sorted based on the Account ID attribute. This is especially important for handling multi-valued attributes. > [!NOTE] > > The first row of the file is the header of the file, and will not be skipped. | ID | name | givenName | familyName | This header row will be skipped | | --- | --- | --- | --- | --- | | 1 | jdoe | John | Doe | This is the first account | | 2 | msmith | Mary | Smith | This is the second account | ### Handling Multi-Valued Attributes Some attributes, like groups, support the ability to have multiple values and are stored as a list. In order to model this, you will put each value on a separate row for that field. All additional values should be repeated. | ID | name | ... | groups | ... | This header row will be skipped. | | --- | --- | --- | --- | --- | --- | | 1 | jdoe | ... | Admins | ... | This is the first account. | | 1 | jdoe | ... | Employee | ... | | | 2 | msmith | ... | Employee | ... | This is the second account. | > [!NOTE] > > The `name` attribute is a single-valued attribute. This will yield jdoe with Admins and Employee groups, and msmith with a single Employee group. # Troubleshooting If you encounter any of the following issues or errors, SailPoint recommends that you follow the guidance provided below to resolve the error before contacting SailPoint Support. For issues or errors that are not addressed in this connector guide, refer to the following resources for troubleshooting information: - [SailPoint Identity Services Documentation]() - [SailPoint Support Knowledge Base]() - [SailPoint Developer Community]() ## Debug Logs For information about managing additional source settings, including debug logging and downloading connector logs, refer to [Managing Additional Settings](). ## Records with the comment character are also fetched during aggregation The normal behavior of a comment character (for example, `#`) is to distinguish comments from the records. The connector should skip any lines which contain the character. **Resolution:** To prevent the aggregation of comment characters in the records, remove the comment character first and save the file. Re-enter the comment character, save the file and run the aggregation again. ## Data is not correctly aggregating when merging is enabled **Resolution:** In the Merging of File Settings section, enable the following checkboxes and retry the use case: **Data sorted by the indexColumn(s)** **Ignore case while merging** ## Entitlement attributes don't populate correctly when the delimited file uses a custom delimiter If you've defined a delimiter other than the default comma (`,`), aggregated entitlement data isn't populated correctly. **Resolution:** In the Parsing of File Settings section, enter your custom delimiter in the text box and retry the use case. For more information, refer to [Define a Group Data Parsing Delimiter]().