

# Connecting Salesforce Online to Amazon Q Business
<a name="salesforce-connector"></a>

Salesforce is a customer relationship management (CRM) tool for managing support, sales, and marketing teams. You can connect Salesforce Online instance to Amazon Q Business—using either the AWS Management Console or the [https://docs.aws.amazon.com/amazonq/latest/api-reference/API_CreateDataSource.html](https://docs.aws.amazon.com/amazonq/latest/api-reference/API_CreateDataSource.html) API—and create an Amazon Q web experience.

The Amazon Q Salesforce Online connector supports the following Salesforce Online editions: Developer Edition and Enterprise Edition.

**Topics**
+ [Known limitations for the Salesforce Online connector](salesforce-limitations.md)
+ [Salesforce Online connector overview](salesforce-overview.md)
+ [Prerequisites for connecting Amazon Q Business to Salesforce Online](salesforce-prereqs.md)
+ [Setting up Salesforce Online for connecting to Amazon Q Business](salesforce-credentials.md)
+ [Connecting Amazon Q Business to Salesforce Online using the console](salesforce-console.md)
+ [Connecting Amazon Q Business to Salesforce using APIs](salesforce-api.md)
+ [How Amazon Q Business connector crawls Salesforce ACLs](salesforce-user-management.md)
+ [Salesforce Online data source connector field mappings](salesforce-field-mappings.md)
+ [IAM role for Salesforce Online connector](salesforce-iam-role.md)
+ [Troubleshooting your Salesforce Online connector](salesforce-error-codes.md)

**Learn more**
+ For an overview of the Amazon Q web experience creation process using IAM Identity Center, see [Configuring an application using IAM Identity Center](https://docs.aws.amazon.com/amazonq/latest/qbusiness-ug/create-application.html).
+ For an overview of the Amazon Q web experience creation process using AWS Identity and Access Management, see [Configuring an application using IAM](https://docs.aws.amazon.com/amazonq/latest/qbusiness-ug/create-application-iam.html).
+ For an overview of connector features, see [Data source connector concepts](https://docs.aws.amazon.com/amazonq/latest/qbusiness-ug/connector-concepts.html).
+ For information about connector configuration best practices, see [Connector configuration best practices](https://docs.aws.amazon.com/amazonq/latest/qbusiness-ug/connector-best-practices.html).

# Known limitations for the Salesforce Online connector
<a name="salesforce-limitations"></a>

The Salesforce Online connector has the following known limitations:
+ The Salesforce Online connector doesn't currently (as of 2/14/25) support explicit deny permission specifications for Contract, Task, and Custom objects and their respective attachments, although it respects base access controls for Salesforce Online entities. Users who have access to an entity through base access controls would still have access to those entities in Amazon Q Business - even if they have been added to the explicit deny list in Salesforce. 
+ The Salesforce Online connector doesn't support field-level access control, respecting only the parent-level access control. If a field-level access control configuration is detected within an entity, Amazon Q Business will utilize the parent level security setting. This means that if a user has access to the parent entity/document in Salesforce, they will be able to see all fields of that document in Amazon Q Business, regardless of any field-level security restrictions that exist in Salesforce.
+ The Salesforce Online connector does not offer the ability to perform incremental syncs based on new, modified, or deleted files. At this time, it can perform only full syncs.
+  The Salesforce Online API doesn't provide the status of deleted **Group**, **Partner**, **Profile**, and **User** entities. So, the Salesforce Online connector can't retrieve this information.
+ The Salesforce Online API doesn't provide the status of modified **Attachment titles** (Lightning Version). So, the Salesforce Online connector can't retrieve this information.
+ The Salesforce Online connector supports custom field mappings only for the following entities: **Account**, **Campaign**, **Contact**, **Contract**, **Case**, **Product** **Lead**, **Pricebook**, and **CustomEntity**.
+ The Salesforce Online API does not provide ACL information for documents with shared access types. 
+ By default, Salesforce Online Developer has a maximum limit of 15000 total calls per 24 hour period. If a request exceeds this limit, the API returns a `REQUEST_LIMIT_EXCEEDED` error.
+ Because Amazon Q Business uses email address as unique identifiers, each user must have a unique email address. 
+ The Salesforce Online connector only updates user status during connector syncs, meaning that any deactivated users are only deactivated in Amazon Q Business during the next connector sync. If a user is deactivated in Salesforce they may retain access through Amazon Q Business until the next sync.
+ The Salesforce Online connector respects hierarchies for custom object record access regardless of Salesforce settings, due to Salesforce API limitations. In other words, while Salesforce Online lets users disable Grant Access Using Hierarchies for custom objects, the role hierarchy will still apply for Amazon Q Business.
+ When Access Control Lists (ACLs) are enabled, the "Sync only new or modified content" option is not available due to Salesforce Online API limitations. We recommend using "Full sync" or "New, modified, or deleted content sync" modes instead, or disable ACLs if you need to use this sync mode.

# Salesforce Online connector overview
<a name="salesforce-overview"></a>

The following table gives an overview of the Salesforce Online connector and its supported features.


****  
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/amazonq/latest/qbusiness-ug/salesforce-overview.html)

# Prerequisites for connecting Amazon Q Business to Salesforce Online
<a name="salesforce-prereqs"></a>

Before you begin, make sure that you have completed the following prerequisites.

**In Salesforce, make sure you have:**
+ Copied the Salesforce security token associated with the account that's used to connect to Salesforce.
+ Created a Salesforce Connected App account with OAuth activated and have copied the consumer key (client ID) and consumer secret (client secret) assigned to your Salesforce Connected App. For more information, see [Salesforce documentation on Connected Apps](https://help.salesforce.com/s/articleView?id=sf.connected_app_overview.htm&type=5) on the Salesforce website.
+ Copied the URL of the Salesforce instance that you want to index. Typically, this is *https://<company>.salesforce.com/*. The server must be running a Salesforce connected app.

**In your AWS account, make sure you have:**
+ Created a Amazon Q Business application.
+ Created a [Amazon Q Business retriever and added an index](https://docs.aws.amazon.com/amazonq/latest/qbusiness-ug/select-retriever.html).
+ Created an [IAM role](https://docs.aws.amazon.com/amazonq/latest/qbusiness-ug/iam-roles.html#iam-roles-ds) for your data source and, if using the Amazon Q API, noted the ARN of the IAM role.
+ Stored your Salesforce Online authentication credentials in an AWS Secrets Manager secret and, if using the Amazon Q API, noted the ARN of the secret.
**Note**  
If you’re a console user, you can create the IAM role and Secrets Manager secret as part of configuring your Amazon Q application on the console.

For a list of things to consider while configuring your data source, see [ Data source connector configuration best practices](https://docs.aws.amazon.com/amazonq/latest/qbusiness-ug/connector-best-practices.html).

# Setting up Salesforce Online for connecting to Amazon Q Business
<a name="salesforce-credentials"></a>

Before you connect Salesforce Online to Amazon Q Business, you need to create and retrieve the Salesforce Online credentials you will use to connect Salesforce Online to Amazon Q. You will also need to add any authorization permissions needed by Salesforce Online to connect to Amazon Q.

The following procedure gives you an overview of how to configure Salesforce Online for Amazon Q.

**Configuring Salesforce Online for Amazon Q**

1. Create a Salesforce Online instance at [https://developer.salesforce.com/signup](https://developer.salesforce.com/signup). Note the username and password you logged in with. Also note the Salesforce Online URL that's sent to your email on successful instance setup.

   You will need these pieces of information later to connect to Amazon Q.

1. Log in to your Salesforce Online Developer Edition account at [https://login.salesforce.com](https://login.salesforce.com) or Salesforce Online Sandbox Edition account at [https://test.salesforce.com](https://test.salesforce.com).

1. From the Salesforce Online profile menu, copy your Salesforce Online URL, if you haven't already. This will be the URL you will input as host URL in Amazon Q.  
![\[Screenshot showing the Salesforce login page where users enter their credentials to access their Salesforce instance.\]](http://docs.aws.amazon.com/amazonq/latest/qbusiness-ug/images/salesforce-1.png)

1. Then, from the Salesforce Online profile menu, select the **Setup** icon and then select **Setup**.  
![\[Screenshot of the Salesforce profile menu showing the Setup icon and Setup option that users need to select to access the setup page.\]](http://docs.aws.amazon.com/amazonq/latest/qbusiness-ug/images/salesforce-3.png)

1. From the left navigation menu, on the **Setup** home page, go to **Platform tools**, select **Apps**, and then, select **App manager**.

   Then, from the **Lightning Experience App Manager** page, select **New Connected App**.  
![\[Screenshot of the Salesforce Lightning Experience App Manager page showing the "New Connected App" button that users need to click to create a new connected app.\]](http://docs.aws.amazon.com/amazonq/latest/qbusiness-ug/images/salesforce-2.png)

1. On the **New Connected App** page, do the following:
   + In **Basic information**, enter the following required information:
     + **Connect App Name** – A name for your connected app.
     + **API Name** – A name for your API.
     + **Contact Email** – Your contact email.  
![\[Screenshot of the Salesforce "New Connected App" page showing the Basic Information section where users enter the app name, API name, and contact email.\]](http://docs.aws.amazon.com/amazonq/latest/qbusiness-ug/images/salesforce-4.png)

     Enter other values as per your use case.
   + In **API (Enable OAuth Settings)**, select the checkbox to enable. Then, enter the following information:
     + **Callback URL** – Enter the following callback URL, depending on your Salesforce Online account type:
       + Developer Edition – `https://login.salesforce.com/services/oauth2/token`
       + Sandbox Edition – `https://test.salesforce.com/services/oauth2/token`

       Also, copy and save this URL in a text editor of your choice. You will enter this callback URL in Amazon Q later as **Authentication URL**.
     + **Select OAuth Scopes** – Select **Full access (full)** as your OAuth Scope.
     + **Introspect All Tokens** – Select this option to generate access tokens in a future step. You need this access token to connect to Amazon Q. You enter this as the **Security token** in the Amazon Q console.

     Select other options as per your use case.
   + Select **Save**.

1. From the **Manage Connected Apps** page that opens, choose **Manage Consumer Details**. You will be redirected to a **Connected App Name** summary page.  
![\[Screenshot of the Salesforce confirmation message indicating that the connected app has been created successfully and will be available after a short delay.\]](http://docs.aws.amazon.com/amazonq/latest/qbusiness-ug/images/salesforce-6.png)

1. On the **Connected App Name** page, do the following:
   + From **Consumer Details**, copy and save the following in a text editor of your choice:
     + **Consumer Key** – You will need this to connect Salesforce Online to Amazon Q.
     + **Consumer Secret** – You will need this to connect Salesforce Online to Amazon Q.
     + Select **Apply**.  
![\[Screenshot of the Salesforce Connected App details page showing the Consumer Details section with the Consumer Key (client ID) and Consumer Secret that need to be copied for API authentication.\]](http://docs.aws.amazon.com/amazonq/latest/qbusiness-ug/images/salesforce-7.png)

1. Next, you will generate a security token. Navigate back to your Salesforce Online account home page. From the Salesforce Online profile menu, select **Settings**.  
![\[Screenshot of the Salesforce user menu showing the "Settings" option that users need to select to access personal settings for generating a security token.\]](http://docs.aws.amazon.com/amazonq/latest/qbusiness-ug/images/salesforce-8.png)

1. Then, from the left navigation menu, select **My Personal Information**. Then, select **Reset My Security Token**. Your security token will be sent to the email address connect to your Salesforce Online instance. You need this security token to connect Salesforce Online to Amazon Q.  
![\[Screenshot of the Salesforce personal settings page showing the "My Personal Information" menu with the "Reset My Security Token" option highlighted for generating a new security token.\]](http://docs.aws.amazon.com/amazonq/latest/qbusiness-ug/images/salesforce-9.png)

1. Then, you activate OAuth Username-Password Flow for the Salesforce Online Connected App you've created. From the left navigation menu, from **Settings**, select **Identity** and then select **OAuth and OpenID Connect Settings**.

1. On the **OAuth and OpenID Connect Settings**, in **OAuth and OpenID Connect Flows**, make sure that both **Allow OAuth Username-Password Flows** and **Allow OAuth User-Agent Flows** are activated.  
![\[Screenshot of the Salesforce OAuth and OpenID Connect Settings page showing the OAuth settings configuration options for enabling the Username-Password flow for the connected app.\]](http://docs.aws.amazon.com/amazonq/latest/qbusiness-ug/images/salesforce-11.png)

   You now have the Salesforce Online host URL, username, password, security token, client ID, client secret, and authentication URL you need to connect Salesforce Online to Amazon Q.

# Connecting Amazon Q Business to Salesforce Online using the console
<a name="salesforce-console"></a>

The following procedure outlines how to connect Amazon Q Business to Salesforce Online using the AWS Management Console.

**Connecting Amazon Q to Salesforce Online**

1. Sign in to the AWS Management Console and open the Amazon Q Business console.

1. From the left navigation menu, choose **Data sources**.

1. From the **Data sources** page, choose **Add data source**.

1. Then, on the **Add data sources** page, from **Data sources**, add the **Salesforce Online** data source to your Amazon Q application.

1. Then, on the **Salesforce Online** data source page, enter the following information:

1. **Name and description**, do the following:
   + For **Data source name** – Name your data source for easy tracking.
**Note**  
You can include hyphens (-) but not spaces. Maximum of 1,000 alphanumeric characters.
   + **Description – *optional*** – Add an optional description for your data source. This text is viewed only by Amazon Q Business administrators and can be edited later.

1. In **Source**, enter the following information:
   +  **Salesforce URL** – Enter your Salesforce server URL. For example, *https://mysite.salesforce.com*.

1. **Authorization** – Amazon Q Business crawls ACL information by default to ensure responses are generated only from documents your end users have access to. If supported for your connector, you can manage ACLs by selecting ** Enable ACLs ** to enable ACLs or **Disable ACLs** to disable them. To manage ACLs, you need specific IAM permissions. See [Grant permission to create data sources with ACLs disabled](https://docs.aws.amazon.com/amazonq/latest/qbusiness-ug/setting-up.html#DisableAclOnDataSource) for more details. See [Authorization](https://docs.aws.amazon.com/amazonq/latest/qbusiness-ug/connector-concepts.html#connector-authorization) for more details.

1. **Authentication** – Enter the following information for your **AWS Secrets Manager secret**.

   1. **Secret name** – A name for your secret.

   1. For **Username**, **Password**, **Security token**, **Consumer key**, **Consumer secret**, and **Authentication URL** – Enter the authentication credential values that you created in your Salesforce account. 
**Note**  
If you use Salesforce Online Developer Edition, use `https://login.salesforce.com/services/oauth2/token` or the My Domain login URL (for example, * https://MyCompany.my.salesforce.com*) as the **Authentication URL**. If you use Salesforce Online Sandbox Edition, use `https://test.salesforce.com/services/oauth2/token ` or the My Domain login URL (for example, * MyDomainName--SandboxName.sandbox.my.salesforce.com*) as the **Authentication URL**.

   1. Choose **Save and add secret**.

1. **Configure VPC and security group – *optional*** – Choose whether you want to use a VPC. If you do, enter the following information:

   1. **Subnets** – Select up to 6 repository subnets that define the subnets and IP ranges the repository instance uses in the selected VPC.

   1. **VPC security groups** – Choose up to 10 security groups that allow access to your data source. Ensure that the security group allows incoming traffic from Amazon EC2 instances and devices outside your VPC. For databases, security group instances are required. 

   For more information, see [VPC](https://docs.aws.amazon.com/amazonq/latest/qbusiness-ug/connector-concepts.html#connector-vpc).

1. **IAM role** – Choose an existing IAM role or create an IAM role to access your repository credentials and index content.
**Note**  
Creating a new service IAM role is recommended.

   For more information, see [IAM role](https://docs.aws.amazon.com/amazonq/latest/qbusiness-ug/salesforce-connector.html#salesforce-iam).

1. **Sync scope** – Set the content that you want to sync.

   1. For **Standard objects**, **Standard objects with attachments**, **Standard objects without attachments**, and **Knowledge articles** – Select Salesforce entities or content types you want to crawl.
**Note**  
You must provide configuration information for indexing at least one of standard objects, knowledge articles, or chatter feeds. If you choose to crawl **Knowledge articles** you must specify the types of knowledge articles to index, the name of the articles, and whether to index the standard fields of all knowledge articles or only the fields of a custom article type. If you choose to index custom articles, you must specify the internal name of the article type. You can specify up to 10 article types.

   1. For **Custom objects** – Add custom object names. You can choose to include custom object attachments as well.

   1. **Multi-media content configuration – optional** – To enable content extraction from embedded images and visuals in documents, choose **Visual content in documents**.

      To extract audio transcriptions and video content, enable processing for the following file types:

   1. **Advanced settings**

      **Document deletion safeguard** - *optional*–To safeguard your documents from deletion during a sync job, select **On** and enter an integer between 0 - 100. If the percentage of documents to be deleted in your sync job exceeds the percentage you selected, the delete phase will be skipped and no documents from this data source will be deleted from your index. For more information, see [Document deletion safeguard](connector-concepts.md#document-deletion-safeguard).

1. For **Maximum file size** – Specify the file size limit in MBs that Amazon Q will crawl. Amazon Q will crawl only the files within the size limit you define. The default file size is 50MB. The maximum file size should be greater than 0MB and less than or equal to 50MB.

1. In **Additional configuration – *optional***:
   + For **Entity regex patterns** and **Attachment regex patterns** – Add regular expression patterns to include or exclude certain files. You can add up to 100 patterns.

1. In **Sync mode**, choose how you want to update your index when your data source content changes. When you sync your data source with Amazon Q for the first time, all content is synced by default.
   + **Full sync** – Sync all content regardless of the previous sync status.
   + **New or modified content sync** – Sync only new and modified documents.
   + **New, modified, or deleted content sync** – Sync only new, modified, and deleted documents.

   For more details, see [Sync mode](https://docs.aws.amazon.com/amazonq/latest/qbusiness-ug/connector-concepts.html#connector-sync-mode).

1. In **Sync run schedule**, for **Frequency** – Choose how often Amazon Q will sync with your data source. For more details, see [Sync run schedule](https://docs.aws.amazon.com/amazonq/latest/qbusiness-ug/connector-concepts.html#connector-sync-run). To learn how to start a data sync job, see [Starting data source connector sync jobs](https://docs.aws.amazon.com/amazonq/latest/qbusiness-ug/supported-datasource-actions.html#start-datasource-sync-jobs).

1. **Tags - *optional*** – Add tags to search and filter your resources or track your AWS costs. See [Tags](https://docs.aws.amazon.com/amazonq/latest/qbusiness-ug/tagging.html) for more details.

1. **Field mappings** – A list of data source document attributes to map to your index fields.
**Note**  
Add or update the fields from the **Data source details** page after you finish adding your data source. You can choose from two types of fields: 

   1. **Default** – Automatically created by Amazon Q on your behalf based on common fields in your data source. You can't edit these.

   1. **Custom** – Automatically created by Amazon Q on your behalf based on common fields in your data source. You can edit these. You can also create and add new custom fields.
**Note**  
Support for adding custom fields varies by connector. You won't see the **Add field** option if your connector doesn't support adding custom fields.

   For more information, see [Field mappings](https://docs.aws.amazon.com/amazonq/latest/qbusiness-ug/connector-concepts.html#connector-field-mappings).

1. In **Data source details**, choose **Sync now** to allow Amazon Q to begin syncing (crawling and ingesting) data from your data source. When the sync job finishes, your data source is ready to use.
**Note**  
View CloudWatch logs for your data source sync job by selecting **View CloudWatch logs**. If you encounter a `Resource not found exception` error, wait and try again as logs may not be available immediately.  
You can also view a detailed document-level report by selecting **View Report**. This report shows the status of each document during the crawl, sync, and index stages, including any errors. If the report is empty for an in-progress job, check back later as data is emitted to the report as events occur during the sync process.  
For more information, see [Troubleshooting data source connectors](https://docs.aws.amazon.com/amazonq/latest/qbusiness-ug/troubleshooting-data-sources.html#troubleshooting-data-sources-not-indexed).

# Connecting Amazon Q Business to Salesforce using APIs
<a name="salesforce-api"></a>

You use the [CreateDataSource](https://docs.aws.amazon.com/amazonq/latest/api-reference/API_CreateDataSource.html) action to connect a data source to your Amazon Q application. You can also use the [UpdateDataSource](https://docs.aws.amazon.com/amazonq/latest/api-reference/API_UpdateDataSource.html) action to modify an existing data source configuration.

Then, you use the `configuration` parameter to provide a JSON blob that conforms the AWS-defined JSON schema.

For an example of the API request, see [CreateDataSource](https://docs.aws.amazon.com/amazonq/latest/api-reference/API_CreateDataSource.html) and [UpdateDataSource](https://docs.aws.amazon.com/amazonq/latest/api-reference/API_UpdateDataSource.html) in the Amazon Q API Reference.

## Salesforce JSON schema
<a name="salesforce-json"></a>

The following is the Salesforce JSON schema:

```
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties":
  {
    "connectionConfiguration": {
      "type": "object",
      "properties":
      {
        "repositoryEndpointMetadata":
        {
          "type": "object",
          "properties":
          {
            "hostUrl":
            {
              "type": "string",
              "pattern": "^https:\/\/[a-zA-Z0-9-./]*\\.(salesforce|force).com\/?$"
            }
          },
          "required":
          [
            "hostUrl"
          ]
        }
      },
      "required":
      [
        "repositoryEndpointMetadata"
      ]
    },
    "repositoryConfigurations": {
      "type": "object",
      "properties":
      {
        "account":
        {
          "type": "object",
          "properties":
          {
            "fieldMappings":
            {
              "type": "array",
              "items":
              [
                {
                  "type": "object",
                  "properties":
                  {
                    "indexFieldName":
                    {
                      "type": "string"
                    },
                    "indexFieldType":
                    {
                      "type": "string",
                      "enum":
                      [
                        "STRING",
                        "STRING_LIST",
                        "DATE",
                        "LONG"
                      ]
                    },
                    "dataSourceFieldName":
                    {
                      "type": "string"
                    },
                    "dateFieldFormat":
                    {
                      "type": "string",
                      "pattern": "yyyy-MM-dd'T'HH:mm:ss'Z'"
                    }
                  },
                  "required":
                  [
                    "indexFieldName",
                    "indexFieldType",
                    "dataSourceFieldName"
                  ]
                }
              ]
            }
          },
          "required":
          [
            "fieldMappings"
          ]
        },
        "contact":
        {
          "type": "object",
          "properties":
          {
            "fieldMappings":
            {
              "type": "array",
              "items":
              [
                {
                  "type": "object",
                  "properties":
                  {
                    "indexFieldName":
                    {
                      "type": "string"
                    },
                    "indexFieldType":
                    {
                      "type": "string",
                      "enum":
                      [
                        "STRING",
                        "STRING_LIST",
                        "DATE"
                      ]
                    },
                    "dataSourceFieldName":
                    {
                      "type": "string"
                    },
                    "dateFieldFormat":
                    {
                      "type": "string",
                      "pattern": "yyyy-MM-dd'T'HH:mm:ss'Z'"
                    }
                  },
                  "required":
                  [
                    "indexFieldName",
                    "indexFieldType",
                    "dataSourceFieldName"
                  ]
                }
              ]
            }
          },
          "required":
          [
            "fieldMappings"
          ]
        },
        "campaign":
        {
          "type": "object",
          "properties":
          {
            "fieldMappings":
            {
              "type": "array",
              "items":
              [
                {
                  "type": "object",
                  "properties":
                  {
                    "indexFieldName":
                    {
                      "type": "string"
                    },
                    "indexFieldType":
                    {
                      "type": "string",
                      "enum":
                      [
                        "STRING",
                        "STRING_LIST",
                        "DATE",
                        "LONG"
                      ]
                    },
                    "dataSourceFieldName":
                    {
                      "type": "string"
                    },
                    "dateFieldFormat":
                    {
                      "type": "string",
                      "pattern": "yyyy-MM-dd'T'HH:mm:ss'Z'"
                    }
                  },
                  "required":
                  [
                    "indexFieldName",
                    "indexFieldType",
                    "dataSourceFieldName"
                  ]
                }
              ]
            }
          },
          "required":
          [
            "fieldMappings"
          ]
        },
        "case":
        {
          "type": "object",
          "properties":
          {
            "fieldMappings":
            {
              "type": "array",
              "items":
              [
                {
                  "type": "object",
                  "properties":
                  {
                    "indexFieldName":
                    {
                      "type": "string"
                    },
                    "indexFieldType":
                    {
                      "type": "string",
                      "enum":
                      [
                        "STRING",
                        "STRING_LIST",
                        "DATE"
                      ]
                    },
                    "dataSourceFieldName":
                    {
                      "type": "string"
                    },
                    "dateFieldFormat":
                    {
                      "type": "string",
                      "pattern": "yyyy-MM-dd'T'HH:mm:ss'Z'"
                    }
                  },
                  "required":
                  [
                    "indexFieldName",
                    "indexFieldType",
                    "dataSourceFieldName"
                  ]
                }
              ]
            }
          },
          "required":
          [
            "fieldMappings"
          ]
        },
        "product":
        {
          "type": "object",
          "properties":
          {
            "fieldMappings":
            {
              "type": "array",
              "items":
              [
                {
                  "type": "object",
                  "properties":
                  {
                    "indexFieldName":
                    {
                      "type": "string"
                    },
                    "indexFieldType":
                    {
                      "type": "string",
                      "enum":
                      [
                        "STRING",
                        "STRING_LIST",
                        "DATE"
                      ]
                    },
                    "dataSourceFieldName":
                    {
                      "type": "string"
                    },
                    "dateFieldFormat":
                    {
                      "type": "string",
                      "pattern": "yyyy-MM-dd'T'HH:mm:ss'Z'"
                    }
                  },
                  "required":
                  [
                    "indexFieldName",
                    "indexFieldType",
                    "dataSourceFieldName"
                  ]
                }
              ]
            }
          },
          "required":
          [
            "fieldMappings"
          ]
        },
        "lead":
        {
          "type": "object",
          "properties":
          {
            "fieldMappings":
            {
              "type": "array",
              "items":
              [
                {
                  "type": "object",
                  "properties":
                  {
                    "indexFieldName":
                    {
                      "type": "string"
                    },
                    "indexFieldType":
                    {
                      "type": "string",
                      "enum":
                      [
                        "STRING",
                        "STRING_LIST",
                        "DATE",
                        "LONG"
                      ]
                    },
                    "dataSourceFieldName":
                    {
                      "type": "string"
                    },
                    "dateFieldFormat":
                    {
                      "type": "string",
                      "pattern": "yyyy-MM-dd'T'HH:mm:ss'Z'"
                    }
                  },
                  "required":
                  [
                    "indexFieldName",
                    "indexFieldType",
                    "dataSourceFieldName"
                  ]
                }
              ]
            }
          },
          "required":
          [
            "fieldMappings"
          ]
        },
        "contract":
        {
          "type": "object",
          "properties":
          {
            "fieldMappings":
            {
              "type": "array",
              "items":
              [
                {
                  "type": "object",
                  "properties":
                  {
                    "indexFieldName":
                    {
                      "type": "string"
                    },
                    "indexFieldType":
                    {
                      "type": "string",
                      "enum":
                      [
                        "STRING",
                        "STRING_LIST",
                        "DATE"
                      ]
                    },
                    "dataSourceFieldName":
                    {
                      "type": "string"
                    },
                    "dateFieldFormat":
                    {
                      "type": "string",
                      "pattern": "yyyy-MM-dd'T'HH:mm:ss'Z'"
                    }
                  },
                  "required":
                  [
                    "indexFieldName",
                    "indexFieldType",
                    "dataSourceFieldName"
                  ]
                }
              ]
            }
          },
          "required":
          [
            "fieldMappings"
          ]
        },
        "partner":
        {
          "type": "object",
          "properties":
          {
            "fieldMappings":
            {
              "type": "array",
              "items":
              [
                {
                  "type": "object",
                  "properties":
                  {
                    "indexFieldName":
                    {
                      "type": "string"
                    },
                    "indexFieldType":
                    {
                      "type": "string",
                      "enum":
                      [
                        "STRING",
                        "STRING_LIST",
                        "DATE"
                      ]
                    },
                    "dataSourceFieldName":
                    {
                      "type": "string"
                    },
                    "dateFieldFormat":
                    {
                      "type": "string",
                      "pattern": "yyyy-MM-dd'T'HH:mm:ss'Z'"
                    }
                  },
                  "required":
                  [
                    "indexFieldName",
                    "indexFieldType",
                    "dataSourceFieldName"
                  ]
                }
              ]
            }
          },
          "required":
          [
            "fieldMappings"
          ]
        },
        "profile":
        {
          "type": "object",
          "properties":
          {
            "fieldMappings":
            {
              "type": "array",
              "items":
              [
                {
                  "type": "object",
                  "properties":
                  {
                    "indexFieldName":
                    {
                      "type": "string"
                    },
                    "indexFieldType":
                    {
                      "type": "string",
                      "enum":
                      [
                        "STRING",
                        "STRING_LIST",
                        "DATE"
                      ]
                    },
                    "dataSourceFieldName":
                    {
                      "type": "string"
                    },
                    "dateFieldFormat":
                    {
                      "type": "string",
                      "pattern": "yyyy-MM-dd'T'HH:mm:ss'Z'"
                    }
                  },
                  "required":
                  [
                    "indexFieldName",
                    "indexFieldType",
                    "dataSourceFieldName"
                  ]
                }
              ]
            }
          },
          "required":
          [
            "fieldMappings"
          ]
        },
        "idea":
        {
          "type": "object",
          "properties":
          {
            "fieldMappings":
            {
              "type": "array",
              "items":
              [
                {
                  "type": "object",
                  "properties":
                  {
                    "indexFieldName":
                    {
                      "type": "string"
                    },
                    "indexFieldType":
                    {
                      "type": "string",
                      "enum":
                      [
                        "STRING",
                        "STRING_LIST",
                        "DATE",
                        "LONG"
                      ]
                    },
                    "dataSourceFieldName":
                    {
                      "type": "string"
                    },
                    "dateFieldFormat":
                    {
                      "type": "string",
                      "pattern": "yyyy-MM-dd'T'HH:mm:ss'Z'"
                    }
                  },
                  "required":
                  [
                    "indexFieldName",
                    "indexFieldType",
                    "dataSourceFieldName"
                  ]
                }
              ]
            }
          },
          "required":
          [
            "fieldMappings"
          ]
        },
        "pricebook":
        {
          "type": "object",
          "properties":
          {
            "fieldMappings":
            {
              "type": "array",
              "items":
              [
                {
                  "type": "object",
                  "properties":
                  {
                    "indexFieldName":
                    {
                      "type": "string"
                    },
                    "indexFieldType":
                    {
                      "type": "string",
                      "enum":
                      [
                        "STRING",
                        "STRING_LIST",
                        "DATE"
                      ]
                    },
                    "dataSourceFieldName":
                    {
                      "type": "string"
                    },
                    "dateFieldFormat":
                    {
                      "type": "string",
                      "pattern": "yyyy-MM-dd'T'HH:mm:ss'Z'"
                    }
                  },
                  "required":
                  [
                    "indexFieldName",
                    "indexFieldType",
                    "dataSourceFieldName"
                  ]
                }
              ]
            }
          },
          "required":
          [
            "fieldMappings"
          ]
        },
        "task":
        {
          "type": "object",
          "properties":
          {
            "fieldMappings":
            {
              "type": "array",
              "items":
              [
                {
                  "type": "object",
                  "properties":
                  {
                    "indexFieldName":
                    {
                      "type": "string"
                    },
                    "indexFieldType":
                    {
                      "type": "string",
                      "enum":
                      [
                        "STRING",
                        "STRING_LIST",
                        "DATE"
                      ]
                    },
                    "dataSourceFieldName":
                    {
                      "type": "string"
                    },
                    "dateFieldFormat":
                    {
                      "type": "string",
                      "pattern": "yyyy-MM-dd'T'HH:mm:ss'Z'"
                    }
                  },
                  "required":
                  [
                    "indexFieldName",
                    "indexFieldType",
                    "dataSourceFieldName"
                  ]
                }
              ]
            }
          },
          "required":
          [
            "fieldMappings"
          ]
        },
        "solution":
        {
          "type": "object",
          "properties":
          {
            "fieldMappings":
            {
              "type": "array",
              "items":
              [
                {
                  "type": "object",
                  "properties":
                  {
                    "indexFieldName":
                    {
                      "type": "string"
                    },
                    "indexFieldType":
                    {
                      "type": "string",
                      "enum":
                      [
                        "STRING",
                        "STRING_LIST",
                        "DATE"
                      ]
                    },
                    "dataSourceFieldName":
                    {
                      "type": "string"
                    },
                    "dateFieldFormat":
                    {
                      "type": "string",
                      "pattern": "yyyy-MM-dd'T'HH:mm:ss'Z'"
                    }
                  },
                  "required":
                  [
                    "indexFieldName",
                    "indexFieldType",
                    "dataSourceFieldName"
                  ]
                }
              ]
            }
          },
          "required":
          [
            "fieldMappings"
          ]
        },
        "attachment":
        {
          "type": "object",
          "properties":
          {
            "fieldMappings":
            {
              "type": "array",
              "items":
              [
                {
                  "type": "object",
                  "properties":
                  {
                    "indexFieldName":
                    {
                      "type": "string"
                    },
                    "indexFieldType":
                    {
                      "type": "string",
                      "enum":
                      [
                        "STRING",
                        "STRING_LIST",
                        "DATE",
                        "LONG"
                      ]
                    },
                    "dataSourceFieldName":
                    {
                      "type": "string"
                    },
                    "dateFieldFormat":
                    {
                      "type": "string",
                      "pattern": "yyyy-MM-dd'T'HH:mm:ss'Z'"
                    }
                  },
                  "required":
                  [
                    "indexFieldName",
                    "indexFieldType",
                    "dataSourceFieldName"
                  ]
                }
              ]
            }
          },
          "required":
          [
            "fieldMappings"
          ]
        },
        "user":
        {
          "type": "object",
          "properties":
          {
            "fieldMappings":
            {
              "type": "array",
              "items":
              [
                {
                  "type": "object",
                  "properties":
                  {
                    "indexFieldName":
                    {
                      "type": "string"
                    },
                    "indexFieldType":
                    {
                      "type": "string",
                      "enum":
                      [
                        "STRING",
                        "STRING_LIST",
                        "DATE"
                      ]
                    },
                    "dataSourceFieldName":
                    {
                      "type": "string"
                    },
                    "dateFieldFormat":
                    {
                      "type": "string",
                      "pattern": "yyyy-MM-dd'T'HH:mm:ss'Z'"
                    }
                  },
                  "required":
                  [
                    "indexFieldName",
                    "indexFieldType",
                    "dataSourceFieldName"
                  ]
                }
              ]
            }
          },
          "required":
          [
            "fieldMappings"
          ]
        },
        "document":
        {
          "type": "object",
          "properties":
          {
            "fieldMappings":
            {
              "type": "array",
              "items":
              [
                {
                  "type": "object",
                  "properties":
                  {
                    "indexFieldName":
                    {
                      "type": "string"
                    },
                    "indexFieldType":
                    {
                      "type": "string",
                      "enum":
                      [
                        "STRING",
                        "STRING_LIST",
                        "DATE",
                        "LONG"
                      ]
                    },
                    "dataSourceFieldName":
                    {
                      "type": "string"
                    },
                    "dateFieldFormat":
                    {
                      "type": "string",
                      "pattern": "yyyy-MM-dd'T'HH:mm:ss'Z'"
                    }
                  },
                  "required":
                  [
                    "indexFieldName",
                    "indexFieldType",
                    "dataSourceFieldName"
                  ]
                }
              ]
            }
          },
          "required":
          [
            "fieldMappings"
          ]
        },
        "knowledgeArticles":
        {
          "type": "object",
          "properties":
          {
            "fieldMappings":
            {
              "type": "array",
              "items":
              [
                {
                  "type": "object",
                  "properties":
                  {
                    "indexFieldName":
                    {
                      "type": "string"
                    },
                    "indexFieldType":
                    {
                      "type": "string",
                      "enum":
                      [
                        "STRING",
                        "STRING_LIST",
                        "DATE"
                      ]
                    },
                    "dataSourceFieldName":
                    {
                      "type": "string"
                    },
                    "dateFieldFormat":
                    {
                      "type": "string",
                      "pattern": "yyyy-MM-dd'T'HH:mm:ss'Z'"
                    }
                  },
                  "required":
                  [
                    "indexFieldName",
                    "indexFieldType",
                    "dataSourceFieldName"
                  ]
                }
              ]
            }
          },
          "required":
          [
            "fieldMappings"
          ]
        },
        "group":
        {
          "type": "object",
          "properties":
          {
            "fieldMappings":
            {
              "type": "array",
              "items":
              [
                {
                  "type": "object",
                  "properties":
                  {
                    "indexFieldName":
                    {
                      "type": "string"
                    },
                    "indexFieldType":
                    {
                      "type": "string",
                      "enum":
                      [
                        "STRING",
                        "STRING_LIST",
                        "DATE"
                      ]
                    },
                    "dataSourceFieldName":
                    {
                      "type": "string"
                    },
                    "dateFieldFormat":
                    {
                      "type": "string",
                      "pattern": "yyyy-MM-dd'T'HH:mm:ss'Z'"
                    }
                  },
                  "required":
                  [
                    "indexFieldName",
                    "indexFieldType",
                    "dataSourceFieldName"
                  ]
                }
              ]
            }
          },
          "required":
          [
            "fieldMappings"
          ]
        },
        "opportunity":
        {
          "type": "object",
          "properties":
          {
            "fieldMappings":
            {
              "type": "array",
              "items":
              [
                {
                  "type": "object",
                  "properties":
                  {
                    "indexFieldName":
                    {
                      "type": "string"
                    },
                    "indexFieldType":
                    {
                      "type": "string",
                      "enum":
                      [
                        "STRING",
                        "STRING_LIST",
                        "DATE",
                        "LONG"
                      ]
                    },
                    "dataSourceFieldName":
                    {
                      "type": "string"
                    },
                    "dateFieldFormat":
                    {
                      "type": "string",
                      "pattern": "yyyy-MM-dd'T'HH:mm:ss'Z'"
                    }
                  },
                  "required":
                  [
                    "indexFieldName",
                    "indexFieldType",
                    "dataSourceFieldName"
                  ]
                }
              ]
            }
          },
          "required":
          [
            "fieldMappings"
          ]
        },
        "chatter":
        {
          "type": "object",
          "properties":
          {
            "fieldMappings":
            {
              "type": "array",
              "items":
              [
                {
                  "type": "object",
                  "properties":
                  {
                    "indexFieldName":
                    {
                      "type": "string"
                    },
                    "indexFieldType":
                    {
                      "type": "string",
                      "enum":
                      [
                        "STRING",
                        "STRING_LIST",
                        "DATE"
                      ]
                    },
                    "dataSourceFieldName":
                    {
                      "type": "string"
                    },
                    "dateFieldFormat":
                    {
                      "type": "string",
                      "pattern": "yyyy-MM-dd'T'HH:mm:ss'Z'"
                    }
                  },
                  "required":
                  [
                    "indexFieldName",
                    "indexFieldType",
                    "dataSourceFieldName"
                  ]
                }
              ]
            }
          },
          "required":
          [
            "fieldMappings"
          ]
        },
        "customEntity":
        {
          "type": "object",
          "properties":
          {
            "fieldMappings":
            {
              "type": "array",
              "items":
              [
                {
                  "type": "object",
                  "properties":
                  {
                    "indexFieldName":
                    {
                      "type": "string"
                    },
                    "indexFieldType":
                    {
                      "type": "string",
                      "enum":
                      [
                        "STRING",
                        "STRING_LIST",
                        "DATE"
                      ]
                    },
                    "dataSourceFieldName":
                    {
                      "type": "string"
                    },
                    "dateFieldFormat":
                    {
                      "type": "string",
                      "pattern": "yyyy-MM-dd'T'HH:mm:ss'Z'"
                    }
                  },
                  "required":
                  [
                    "indexFieldName",
                    "indexFieldType",
                    "dataSourceFieldName"
                  ]
                }
              ]
            }
          },
          "required":
          [
            "fieldMappings"
          ]
        }
      }
    },
    "additionalProperties": {
      "type": "object",
      "properties":
      {
        "accountFilter":{
          "type": "array",
          "items":
          {
            "type": "string"
          }
        },
        "contactFilter":{
          "type": "array",
          "items":
          {
            "type": "string"
          }
        },
        "caseFilter":{
          "type": "array",
          "items":
          {
            "type": "string"
          }
        },
        "campaignFilter":{
          "type": "array",
          "items":
          {
            "type": "string"
          }
        },
        "contractFilter":{
          "type": "array",
          "items":
          {
            "type": "string"
          }
        },
        "groupFilter":{
          "type": "array",
          "items":
          {
            "type": "string"
          }
        },
        "leadFilter":{
          "type": "array",
          "items":
          {
            "type": "string"
          }
        },
        "productFilter":{
          "type": "array",
          "items":
          {
            "type": "string"
          }
        },
        "opportunityFilter":{
          "type": "array",
          "items":
          {
            "type": "string"
          }
        },
        "partnerFilter":{
          "type": "array",
          "items":
          {
            "type": "string"
          }
        },
        "pricebookFilter":{
          "type": "array",
          "items":
          {
            "type": "string"
          }
        },
        "ideaFilter":{
          "type": "array",
          "items":
          {
            "type": "string"
          }
        },
        "profileFilter":{
          "type": "array",
          "items":
          {
            "type": "string"
          }
        },
        "taskFilter":{
          "type": "array",
          "items":
          {
            "type": "string"
          }
        },
        "solutionFilter":{
          "type": "array",
          "items":
          {
            "type": "string"
          }
        },
        "userFilter":{
          "type": "array",
          "items":
          {
            "type": "string"
          }
        },
        "chatterFilter":{
          "type": "array",
          "items":
          {
            "type": "string"
          }
        },
        "documentFilter":{
          "type": "array",
          "items":
          {
            "type": "string"
          }
        },
        "knowledgeArticleFilter":{
          "type": "array",
          "items":
          {
            "type": "string"
          }
        },
        "customEntities":{
          "type": "array",
          "items":
          {
            "type": "string"
          }
        },
        "isCrawlAcl": {
          "type": "boolean"
        },
        "maxFileSizeInMegaBytes": {
          "type": "string"
        },
        "fieldForUserId": {
          "type": "string"
        },
        "isCrawlAccount": {
          "type": "boolean"
        },
        "isCrawlContact": {
          "type": "boolean"
        },
        "isCrawlCase": {
          "type": "boolean"
        },
        "isCrawlCampaign": {
          "type": "boolean"
        },
        "isCrawlProduct": {
          "type": "boolean"
        },
        "isCrawlLead": {
          "type": "boolean"
        },
        "isCrawlContract": {
          "type": "boolean"
        },
        "isCrawlPartner": {
          "type": "boolean"
        },
        "isCrawlProfile": {
          "type": "boolean"
        },
        "isCrawlIdea": {
          "type": "boolean"
        },
        "isCrawlPricebook": {
          "type": "boolean"
        },
        "isCrawlDocument": {
          "type": "boolean"
        },
        "crawlSharedDocument": {
          "type": "boolean"
        },
        "isCrawlGroup": {
          "type": "boolean"
        },
        "isCrawlOpportunity": {
          "type": "boolean"
        },
        "isCrawlChatter": {
          "type": "boolean"
        },
        "isCrawlUser": {
          "type": "boolean"
        },
        "isCrawlSolution":{
          "type": "boolean"
        },
        "isCrawlTask":{
          "type": "boolean"
        },

        "isCrawlAccountAttachments": {
          "type": "boolean"
        },
        "isCrawlContactAttachments": {
          "type": "boolean"
        },
        "isCrawlCaseAttachments": {
          "type": "boolean"
        },
        "isCrawlCampaignAttachments": {
          "type": "boolean"
        },
        "isCrawlLeadAttachments": {
          "type": "boolean"
        },
        "isCrawlContractAttachments": {
          "type": "boolean"
        },
        "isCrawlGroupAttachments": {
          "type": "boolean"
        },
        "isCrawlOpportunityAttachments": {
          "type": "boolean"
        },
        "isCrawlChatterAttachments": {
          "type": "boolean"
        },
        "isCrawlSolutionAttachments":{
          "type": "boolean"
        },
        "isCrawlTaskAttachments":{
          "type": "boolean"
        },
        "isCrawlCustomEntityAttachments":{
          "type": "boolean"
        },
        "isCrawlKnowledgeArticles": {
          "type": "object",
          "properties":
          {
            "isCrawlDraft": {
              "type": "boolean"
            },
            "isCrawlPublish": {
              "type": "boolean"
            },
            "isCrawlArchived": {
              "type": "boolean"
            }
          }
        },
        "inclusionDocumentFileTypePatterns":{
          "type": "array",
          "items":
          {
            "type": "string"
          }
        },
        "exclusionDocumentFileTypePatterns": {
          "type": "array",
          "items":
          {
            "type": "string"
          }
        },
        "inclusionDocumentFileNamePatterns":{
          "type": "array",
          "items":
          {
            "type": "string"
          }
        },
        "exclusionDocumentFileNamePatterns": {
          "type": "array",
          "items":
          {
            "type": "string"
          }
        },
        "inclusionAccountFileTypePatterns": {
          "type": "array",
          "items":
          {
            "type": "string"
          }
        },
        "exclusionAccountFileTypePatterns": {
          "type": "array",
          "items":
          {
            "type": "string"
          }
        },
        "inclusionAccountFileNamePatterns":{
          "type": "array",
          "items":
          {
            "type": "string"
          }
        },
        "exclusionAccountFileNamePatterns":{
          "type": "array",
          "items":
          {
            "type": "string"
          }
        },
        "inclusionCampaignFileTypePatterns": {
          "type": "array",
          "items":
          {
            "type": "string"
          }
        },
        "exclusionCampaignFileTypePatterns": {
          "type": "array",
          "items":
          {
            "type": "string"
          }
        },
        "inclusionCampaignFileNamePatterns":{
          "type": "array",
          "items":
          {
            "type": "string"
          }
        },
        "exclusionCampaignFileNamePatterns":{
          "type": "array",
          "items":
          {
            "type": "string"
          }
        },
        "inclusionCaseFileTypePatterns":{
          "type": "array",
          "items":
          {
            "type": "string"
          }
        },
        "exclusionCaseFileTypePatterns":{
          "type": "array",
          "items":
          {
            "type": "string"
          }
        },
        "inclusionCaseFileNamePatterns":{
          "type": "array",
          "items":
          {
            "type": "string"
          }
        },
        "exclusionCaseFileNamePatterns":{
          "type": "array",
          "items":
          {
            "type": "string"
          }
        },
        "inclusionContactFileTypePatterns":{
          "type": "array",
          "items":
          {
            "type": "string"
          }
        },
        "exclusionContactFileTypePatterns":{
          "type": "array",
          "items":
          {
            "type": "string"
          }
        },
        "inclusionContactFileNamePatterns":{
          "type": "array",
          "items":
          {
            "type": "string"
          }
        },
        "exclusionContactFileNamePatterns":{
          "type": "array",
          "items":
          {
            "type": "string"
          }
        },
        "inclusionContractFileTypePatterns":{
          "type": "array",
          "items":
          {
            "type": "string"
          }
        },
        "exclusionContractFileTypePatterns":{
          "type": "array",
          "items":
          {
            "type": "string"
          }
        },
        "inclusionContractFileNamePatterns":{
          "type": "array",
          "items":
          {
            "type": "string"
          }
        },
        "exclusionContractFileNamePatterns":{
          "type": "array",
          "items":
          {
            "type": "string"
          }
        },
        "inclusionLeadFileTypePatterns":{
          "type": "array",
          "items":
          {
            "type": "string"
          }
        },
        "exclusionLeadFileTypePatterns":{
          "type": "array",
          "items":
          {
            "type": "string"
          }
        },
        "inclusionLeadFileNamePatterns":{
          "type": "array",
          "items":
          {
            "type": "string"
          }
        },
        "exclusionLeadFileNamePatterns":{
          "type": "array",
          "items":
          {
            "type": "string"
          }
        },
        "inclusionOpportunityFileTypePatterns":{
          "type": "array",
          "items":
          {
            "type": "string"
          }
        },
        "exclusionOpportunityFileTypePatterns":{
          "type": "array",
          "items":
          {
            "type": "string"
          }
        },
        "inclusionOpportunityFileNamePatterns":{
          "type": "array",
          "items":
          {
            "type": "string"
          }
        },
        "exclusionOpportunityFileNamePatterns":{
          "type": "array",
          "items":
          {
            "type": "string"
          }
        },
        "inclusionSolutionFileTypePatterns":{
          "type": "array",
          "items":
          {
            "type": "string"
          }
        },
        "exclusionSolutionFileTypePatterns":{
          "type": "array",
          "items":
          {
            "type": "string"
          }
        },
        "inclusionSolutionFileNamePatterns":{
          "type": "array",
          "items":
          {
            "type": "string"
          }
        },
        "exclusionSolutionFileNamePatterns":{
          "type": "array",
          "items":
          {
            "type": "string"
          }
        },
        "inclusionTaskFileTypePatterns":{
          "type": "array",
          "items":
          {
            "type": "string"
          }
        },
        "exclusionTaskFileTypePatterns":{
          "type": "array",
          "items":
          {
            "type": "string"
          }
        },
        "inclusionTaskFileNamePatterns":{
          "type": "array",
          "items":
          {
            "type": "string"
          }
        },
        "exclusionTaskFileNamePatterns":{
          "type": "array",
          "items":
          {
            "type": "string"
          }
        },
        "inclusionGroupFileTypePatterns":{
          "type": "array",
          "items":
          {
            "type": "string"
          }
        },
        "exclusionGroupFileTypePatterns":{
          "type": "array",
          "items":
          {
            "type": "string"
          }
        },
        "inclusionGroupFileNamePatterns":{
          "type": "array",
          "items":
          {
            "type": "string"
          }
        },
        "exclusionGroupFileNamePatterns":{
          "type": "array",
          "items":
          {
            "type": "string"
          }
        },
        "inclusionChatterFileTypePatterns":{
          "type": "array",
          "items":
          {
            "type": "string"
          }
        },
        "exclusionChatterFileTypePatterns":{
          "type": "array",
          "items":
          {
            "type": "string"
          }
        },
        "inclusionChatterFileNamePatterns":{
          "type": "array",
          "items":
          {
            "type": "string"
          }
        },
        "exclusionChatterFileNamePatterns":{
          "type": "array",
          "items":
          {
            "type": "string"
          }
        },
        "inclusionCustomEntityFileTypePatterns":{
          "type": "array",
          "items":
          {
            "type": "string"
          }
        },
        "exclusionCustomEntityFileTypePatterns":{
          "type": "array",
          "items":
          {
            "type": "string"
          }
        },
        "inclusionCustomEntityFileNamePatterns":{
          "type": "array",
          "items":
          {
            "type": "string"
          }
        },
        "exclusionCustomEntityFileNamePatterns":{
          "type": "array",
          "items":
          {
            "type": "string"
          }
        }
      },
      "required":
      []
    },
    "enableIdentityCrawler": {
      "type": "boolean"
    },
    "type": {
      "type": "string",
			"enum": [
			  "SALESFORCEV2",
			  "SALESFORCE"
			]
    },
    "syncMode": {
      "type": "string",
      "enum": [
        "FULL_CRAWL",
        "FORCED_FULL_CRAWL",
        "CHANGE_LOG"
      ]
    },
    "secretArn": {
      "type": "string",
      "minLength": 20,
      "maxLength": 2048
    }
  },
  "version": {
    "type": "string",
    "anyOf": [
      {
        "pattern": "1.0.0"
      }
    ]
  },
  "required": [
    "connectionConfiguration",
    "repositoryConfigurations",
    "syncMode",
    "additionalProperties",
    "secretArn",
    "type"
  ]
}
```

The following table provides information about important JSON keys to configure.


| Configuration | Description | 
| --- | --- | 
| connectionConfiguration | Configuration information for the endpoint for the data source. | 
| repositoryEndpointMetadata | The endpoint information for the data source. | 
| hostUrl | The URL of the Salesforce instance to be indexed. | 
| repositoryConfigurations | Configuration information for the content of the data source. For example, configuring specific types of content and field mappings. | 
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/amazonq/latest/qbusiness-ug/salesforce-api.html)  |  A list of objects that map the attributes or field names of your Salesforce entities to Amazon Q index field names.  | 
| additionalProperties | Additional configuration options for your content in your data source. | 
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/amazonq/latest/qbusiness-ug/salesforce-api.html)  | Filters to specify content for Amazon Q to crawl. | 
| customEntities | Custom entities that Amazon Q should crawl. | 
| `inclusionPatterns` [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/amazonq/latest/qbusiness-ug/salesforce-api.html)  | A list of regular expression patterns to include specific files in your Salesforce data source. Files that match the patterns are included in the index. Files that don't match the patterns are excluded from the index. If a file matches both an inclusion and exclusion pattern, the exclusion pattern takes precedence and the file isn't included in the index. | 
| `exclusionPatterns` [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/amazonq/latest/qbusiness-ug/salesforce-api.html)  | A list of regular expression patterns to exclude specific files in your Salesforce data source. Files that match the patterns are excluded from the index. Files that don't match the patterns are included in the index. If a file matches both an exclusion and inclusion pattern, the exclusion pattern takes precedence and the file isn't included in the index. | 
| isCrawlAcl | Specify true to crawl access control information from documents.  Amazon Q Business crawls ACL information by default to ensure responses are generated only from documents your end users have access to. See [Authorization](https://docs.aws.amazon.com/amazonq/latest/qbusiness-ug/connector-concepts.html#connector-authorization) for more details.  | 
| maxFileSizeInMegaBytes | Specify the maximum single file size limit in MBs that Amazon Q will crawl. Amazon Q will crawl only the files within the size limit you define. The default file size is 50MB. The maximum file size should be greater than 0MB and less than or equal to 50MB. | 
| fieldForUserId | Specify field to use for UserId for ACL crawling. | 
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/amazonq/latest/qbusiness-ug/salesforce-api.html)  | true to index corresponding files in your Salesforce account. | 
| type | The type of data source. Specify SALESFORCE as your data source type. | 
| enableIdentityCrawler | true to activate identity crawler. Identity crawler is activated by default. Crawling identity information on users and groups with access to certain documents is useful for user context filtering. Search results are filtered based on the user or their group access to documents.  Amazon Q Business crawls identity information from your data source by default to ensure responses are generated only from documents end users have access to. For more information, see [Identity crawler](https://docs.aws.amazon.com/amazonq/latest/qbusiness-ug/connector-concepts.html#connector-identity-crawler).  | 
| syncMode | Specify whether Amazon Q should update your index by syncing all documents or only new, modified, and deleted documents. You can choose between the following options: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/amazonq/latest/qbusiness-ug/salesforce-api.html)  | 
| secretARN | The Amazon Resource Name (ARN) of an AWS Secrets Manager secret that contains the key-value pairs required to connect to your Salesforce data source. The secret must contain a JSON structure with the following keys: <pre>{<br />    "authenticationUrl": "The OAUTH endpoint that Amazon Q connects to get an OAUTH token.",<br />    "consumerKey": "The application public key generated when you created your Salesforce application.",<br />    "consumerSecret": "The application private key generated when you created your Salesforce application.",<br />    "password": "The password associated with the user logging in to the Salesforce instance.",<br />    "securityToken": "The token associated with the user account logging in to the Salesforce instance.",<br />    "username": "The user name of the user logging in to the Salesforce instance."<br />}</pre> | 
| version | The version of this template that's currently supported. | 

# How Amazon Q Business connector crawls Salesforce ACLs
<a name="salesforce-user-management"></a>

Connectors support crawling ACL and identity information where applicable based on the data source. If you index documents without ACLs, all documents are considered public. Indexing documents with ACLs ensures data security.

Amazon Q Business supports crawling ACLs for document security by default.

When you connect an Salesforce data source to Amazon Q Business, Amazon Q Business crawls ACL information attached to a document (user and group information) from your Salesforce instance. If you choose to activate ACL crawling, the information can be used to filter chat responses to your end user's document access level.

You can apply ACL based chat filtering using Salesforce standard objects and chatter feeds. ACL based chat filtering isn't available for Salesforce knowledge articles.

**For standard objects, the `_user_id` and `_group_ids` are used as follows:**
+ `_user_id` – The username of the Salesforce user.
+ `_group_ids` – The group names in Salesforce.
  + Name of the Salesforce `Profile`
  + Name of the Salesforce `Group`
  + Name of the Salesforce `UserRole`
  + Name of the Salesforce `PermissionSet`

**For chatter feeds, the `_user_id` and `_group_ids` are used as follows:**
+ `_user_id` – The username of the Salesforce user. Only available if the item is posted in the user's feed.
+ `_group_ids` – Group IDs are used as follows. Only available if the feed item is posted in a chatter or collaboration group.
  + The name of the chatter or collaboration group.
  + If the group is public, `PUBLIC:ALL`.

**Important**  
To maintain secure access control for Amazon Q Business, each user must have a unique email address across all connected data sources.  
In Salesforce users can share an email address while having a different application-specific unique identifier. However, in Amazon Q Business email addresses act as unique identifiers.  
This means that if a document is shared with a particular user (for example, arnav\$1desai@example.com who is part of pentesters@example.com) on the basis of an application-specific unique ID, every other user who shares pentesters@example.com (for example, xiulan\$1wang@example.com and efua\$1owusu@example.com, both of whom are part of pentesters@example.com) can receive Amazon Q Business responses with content from a document that was shared only with Arnav. Similarly, content created by Arnav that only he should be able to access via Amazon Q Business chat responses, could also be part of Amazon Q Business chat responses for Xiulan and Efua, because they share the same email address.

 For more information, see:
+ [Authorization](https://docs.aws.amazon.com/amazonq/latest/qbusiness-ug/connector-concepts.html#connector-authorization)
+ [Identity crawler](https://docs.aws.amazon.com/amazonq/latest/qbusiness-ug/connector-concepts.html#connector-identity-crawler)
+ [Understanding User Store](https://docs.aws.amazon.com/amazonq/latest/qbusiness-ug/connector-principal-store.html)

# Salesforce Online data source connector field mappings
<a name="salesforce-field-mappings"></a>

To improve retrieved results and customize the end user chat experience, Amazon Q Business enables you to map document attributes from your data sources to fields in your Amazon Q index.

Amazon Q offers two kinds of attributes to map to index fields:
+ **Reserved or default** – Reserved attributes are based on document attributes that commonly occur in most data. You can use reserved attributes to map commonly occurring document attributes in your data source to Amazon Q index fields.
+ **Custom** – You can create custom attributes to map document attributes that are unique to your data to Amazon Q index fields.

When you connect Amazon Q to a data source, Amazon Q automatically maps specific data source document attributes to fields within an Amazon Q index. If a document attribute in your data source doesn't have a attribute mapping already available, or if you want to map additional document attributes to index fields, use the custom field mappings to specify how a data source attribute maps to an Amazon Q index field. You create field mappings by editing your data source after your application and retriever are created.

To learn more about document attributes and how they work in Amazon Q, see [Document attributes and types in Amazon Q](https://docs.aws.amazon.com/amazonq/latest/qbusiness-ug/doc-attributes.html).

**Important**  
Filtering using document attributes in chat is only supported through the API.

The Amazon Q Salesforce connector supports the following entities and the associated reserved and custom attributes.

**Note**  
You can map any Salesforce field to the document title or document body Amazon Q reserved/default index fields.

**Topics**
+ [Account](#salesforce-field-mappings-account)
+ [Campaign](#salesforce-field-mappings-sc)
+ [Case](#salesforce-field-mappings-case)
+ [Contact](#salesforce-field-mappings-contact)
+ [Contract](#salesforce-field-mappings-contract)
+ [Document](#salesforce-field-mappings-document)
+ [Group](#salesforce-field-mappings-group)
+ [Idea](#salesforce-field-mappings-idea)
+ [Lead](#salesforce-field-mappings-lead)
+ [Opportunity](#salesforce-field-mappings-opportunity)
+ [Partner](#salesforce-field-mappings-partner)
+ [Pricebook](#salesforce-field-mappings-pricebook)
+ [Product](#salesforce-field-mappings-product)
+ [Solution](#salesforce-field-mappings-solution)
+ [Profile](#salesforce-field-mappings-profile)
+ [Task](#salesforce-field-mappings-task)
+ [User](#salesforce-field-mappings-user)
+ [Chatter](#salesforce-field-mappings-chatter)
+ [Knowledge articles](#salesforce-field-mappings-ka)
+ [Attachments](#salesforce-field-mappings-attachments)
+ [Custom object](#salesforce-field-mappings-co)

## Account
<a name="salesforce-field-mappings-account"></a>

Amazon Q supports crawling [Salesforce Online Accounts](https://developer.salesforce.com/docs/atlas.en-us.object_reference.meta/object_reference/sforce_api_objects_account.htm) and offers the following account field mappings.


| Salesforce field name | Index field name | Description | Data type | 
| --- | --- | --- | --- | 
| category | \$1category | Default | String | 
| sourceUrl | \$1source\$1uri | Default | String | 
| createdAt | \$1created\$1at | Default | Date | 
| updatedAt | \$1last\$1updated\$1at | Default | Date | 
| authors | \$1authors | Default | String list | 
| lastModifiedBy | sf\$1last\$1modified\$1by | Custom | String | 
| shippingCity | sf\$1shipping\$1city | Custom | String | 
| shippingCountry | sf\$1shipping\$1country | Custom | String | 
| shippingState | sf\$1shipping\$1state | Custom | String | 
| website | sf\$1website | Custom | String | 
| industry | sf\$1industry | Custom | String | 
| accountSource | sf\$1account\$1source | Custom | String | 
| billingCity | sf\$1billing\$1city | Custom | String | 
| billingCountry | sf\$1billing\$1country | Custom | String | 
| billingState | sf\$1billing\$1state | Custom | String | 
| createdBy | sf\$1created\$1by | Custom | String | 
| lastActivityDate | sf\$1last\$1activity\$1date | Custom | Date | 
| parentId | sf\$1parent\$1id | Custom | String | 
| typeValue | sf\$1type\$1value | Custom | String | 
| billingStreet | sf\$1billing\$1street | Custom | String | 
| billingPostalCode | sf\$1billing\$1postal\$1code | Custom | String | 
| billingLatitude | sf\$1billing\$1latitude | Custom | String | 
| billingLongitude | sf\$1billing\$1longitude | Custom | String | 
| billingGeocodeAccuracy | sf\$1billing\$1geocode\$1accuracy | Custom | String | 
| shippingStreet | sf\$1shipping\$1street | Custom | String | 
| shippingPostalCode | sf\$1shipping\$1postal\$1code | Custom | String | 
| phone | sf\$1phone | Custom | String | 
| fax | sf\$1fax | Custom | String | 
| annualRevenue | sf\$1annual\$1revenue | Custom | String | 
| numberOfEmployees | sf\$1number\$1of\$1employees | Custom | Long (numeric) | 
| jigsaw | sf\$1jigsaw | Custom | String | 

## Campaign
<a name="salesforce-field-mappings-sc"></a>

Amazon Q supports crawling [Salesforce Online Campaigns](https://developer.salesforce.com/docs/atlas.en-us.object_reference.meta/object_reference/sforce_api_objects_campaign.htm) and offers the following campaign field mappings.


| Salesforce field name | Index field name | Description | Data type | 
| --- | --- | --- | --- | 
| category | \$1category | Default | String | 
| sourceUrl | \$1source\$1uri | Default | String | 
| createdAt | \$1created\$1at | Default | Date | 
| isActive | sf\$1is\$1active | Custom | String | 
| updatedAt | \$1last\$1updated\$1at | Default | Date | 
| ownerName | \$1authors | Default | String list | 
| lastModifiedBy | sf\$1last\$1modified\$1by | Custom | String | 
| createdBy | sf\$1created\$1by | Custom | String | 
| lastActivityDate | sf\$1last\$1activity\$1date | Custom | Date | 
| parentId | sf\$1parent\$1id | Custom | String | 
| campaignName | sf\$1campaign\$1name | Custom | String | 
| status | sf\$1status | Custom | String | 
| parentName | sf\$1parent\$1name | Custom | String | 
| campaignType | sf\$1type | Custom | String | 
| expectedRevenue | sf\$1expected\$1revenue | Custom | Long (numeric) | 
| budgetedCost | sf\$1budgeted\$1cost | Custom | Long (numeric) | 
| actualCost | sf\$1actual\$1cost | Custom | Long(numeric) | 
| expectedResponse | sf\$1expected\$1response | Custom | String | 
| numberSent | sf\$1number\$1sent | Default | Long numeric) | 
| numberOfLeads | sf\$1number\$1of\$1leads | Custom | Long (numeric) | 
| numberOfConvertedLeads | sf\$1number\$1of\$1convererted\$1leads | Custom | Long (numeric) | 
| numberOfContacts | sf\$1number\$1of\$1contacts | Custom | Long (numeric) | 
| numberOfResponses | sf\$1number\$1of\$1responses | Custom | Long (numeric) | 
| numberOfOpportunites | sf\$1number\$1of\$1opportunities | Custom | Long (numeric) | 
| numberOfWonOpportunities | sf\$1number\$1of\$1won\$1opportunitues | Custom | Long (numeric) | 
| amountAllOpportunities | sf\$1amount\$1all\$1opportunities | Custom | Long (numeric) | 
| amountWonOpportunities | sf\$1amount\$1won\$1opportunities | Custom | Long (numeric) | 

## Case
<a name="salesforce-field-mappings-case"></a>

Amazon Q supports crawling [Salesforce Online Cases](https://developer.salesforce.com/docs/atlas.en-us.object_reference.meta/object_reference/sforce_api_objects_case.htm) and offers the following case field mappings.


| Salesforce field name | Index field name | Description | Data type | 
| --- | --- | --- | --- | 
| category | \$1category | Default | String | 
| sourceUrl | \$1source\$1uri | Default | String | 
| authors | \$1authors | Default | String list | 
| createdAt | \$1created\$1at | Default | Date | 
| updatedAt | \$1last\$1updated\$1at | Default | Date | 
| ownerName | sf\$1owner\$1name | Custom | String | 
| createdBy | sf\$1created\$1by | Custom | String | 
| caseNumber | sf\$1case\$1number | Custom | String | 
| isClosed | sf\$1is\$1closed | Custom | String | 
| isEscalated | sf\$1is\$1escalated | Custom | String | 
| priority | sf\$1priority | Custom | String | 
| status | sf\$1status | Custom | String | 
| accountName | sf\$1account\$1name | Custom | String | 
| lastModifiedBy | af\$1last\$1modified\$1by | Custom | String | 
| updatedAt | \$1last\$1updated\$1at | Default | Date | 
| typeValue | sf\$1type | Custom | String | 
| reason | sf\$1reason | Custom | String | 
| contactId | sf\$1contact\$1id | Custom | String | 
| origin | sf\$1origin | Custom | String | 
| parentId | sf\$1parent\$1id | Custom | String | 
| contactName | sf\$1contact\$1name | Custom | String | 
| parentCaseNumber | sf\$1parent\$1case\$1number | Custom | String | 
| parentSubject | sf\$1parent\$1subject | Custom | String | 
| suppliedEmail | sf\$1supplied\$1email | Custom | String | 
| contactPhone | sf\$1contact\$1phone | Custom | String | 
| contactMobile | sf\$1contact\$1mobile | Custom | String | 
| contactEmail | sf\$1contact\$1email | Custom | String | 
| contactFax | sf\$1contact\$1fax | Custom | String | 
| comments | sf\$1comments | Custom | String | 
| lastViewedDate | sf\$1last\$1viewed\$1date | Custom | String | 

## Contact
<a name="salesforce-field-mappings-contact"></a>

Amazon Q supports crawling [Salesforce Online Contacts](https://developer.salesforce.com/docs/atlas.en-us.object_reference.meta/object_reference/sforce_api_objects_contact.htm) and offers the following contact field mappings.


| Salesforce field name | Index field name | Description | Data type | 
| --- | --- | --- | --- | 
| category | \$1category | Default | String | 
| sourceUrl | \$1source\$1uri | Default | String | 
| authors | \$1authors | Default | String list | 
| createdAt | \$1created\$1at | Default | Date | 
| updatedAt | \$1last\$1updated\$1at | Default | Date | 
| lastModifiedBy | sf\$1last\$1modified\$1by | Custom | String | 
| lastActivityDate | sf\$1last\$1activity\$1date | Custom | Date | 
| createdBy | sf\$1created\$1by | Custom | String | 
| contactName | sf\$1contact\$1name | Custom | String | 
| phone | sf\$1phone | Custom | String | 
| email | sf\$1email | Custom | String | 
| department | sf\$1department | Custom | String | 
| lastname | sf\$1lastname | Custom | String | 
| title | sf\$1title | Custom | String | 
| reportsTo | sf\$1reports\$1to | Custom | String | 
| account | sf\$1account | Custom | String | 
| otherStreet | sf\$1other\$1street | Custom | String | 
| otherCity | sf\$1other\$1city | Custom | String | 
| otherState | sf\$1other\$1state | Custom | String | 
| otherPostalCode | sf\$1other\$1postal\$1code | Custom | String | 
| otherCountry | sf\$1other\$1country | Custom | String | 
| otherLatitude | sf\$1other\$1latitude | Custom | String | 
| otherLongitude | sf\$1other\$1longitude | Custom | String | 
| otherGeocodeAccuracy | sf\$1other\$1geocode\$1accuracy | Custom | String | 
| mailingStreet | sf\$1mailing\$1street | Custom | String | 
| mailingCity | sf\$1mailing\$1city | Custom | String | 
| mailingState | sf\$1mailing\$1state | Custom | String | 
| mailingPostalCode | sf\$1mailing\$1postal\$1code | Custom | String | 
| mailingCountry | sf\$1mailing\$1country | Custom | String | 
| mailingLatitude | sf\$1mailing\$1latitude | Custom | String | 
| mailingLongitude | sf\$1mailing\$1longitude | Custom | String | 
| mailingGeocodeAccuracy | sf\$1mailing\$1geocode\$1accuracy | Custom | String | 
| fax | sf\$1fax | Custom | String | 
| mobilePhone | sf\$1mobile\$1phone | Custom | String | 
| homePhone | sf\$1home\$1phone | Custom | String | 
| otherPhone | sf\$1other\$1phone | Custom | String | 
| assistantPhone | sf\$1assistant\$1phone | Custom | String | 
| assistantName | sf\$1assistant\$1name | Custom | String | 
| leadSource | sf\$1lead\$1source | Custom | String | 
| birthDate | sf\$1birthdate | Custom | Date | 
| jigsaw | sf\$1jigsaw | Custom | String | 

## Contract
<a name="salesforce-field-mappings-contract"></a>

Amazon Q supports crawling [Salesforce Online Contracts](https://developer.salesforce.com/docs/atlas.en-us.object_reference.meta/object_reference/sforce_api_objects_contract.htm) and offers the following contract field mappings.


| Salesforce field name | Index field name | Description | Data type | 
| --- | --- | --- | --- | 
| category | \$1category | Default | String | 
| sourceUrl | \$1source\$1uri | Default | String | 
| authors | \$1authors | Default | String list | 
| createdAt | \$1created\$1at | Default | Date | 
| updatedAt | \$1last\$1updated\$1at | Default | Date | 
| authors | \$1authors | Default | String list | 
| accountId | \$1sf\$1accoung\$1id | Custom | String | 
| ownerExpirationNotice | sf\$1owner\$1expiration\$1notice | Custom | String | 
| billingStreet | sf\$1billing\$1street | Custom | String | 
| billingCity | sf\$1billing\$1city | Custom | String | 
| billingState | sf\$1billing\$1state | Custom | String | 
| billingPostalCode | sf\$1billing\$1postal\$1code | Custom | String | 
| billingCountry | sf\$1billing\$1country | Custom | String | 
| contractTerm | sf\$1contract\$1term | Custom | String | 
| ownerId | sf\$1owner\$1id | Custom | String | 
| status | sf\$1status | Custom | String | 
| customerSignedTitle | sf\$1customer\$1signed\$1title | Custom | String | 
| specialTerms | sf\$1special\$1terms | Custom | String | 
| statusCode | sf\$1status\$1code | Custom | String | 
| contractNumber | sf\$1contract\$1number | Custom | String | 
| lastViewedDate | sf\$1last\$1viewed\$1date | Custom | Date | 
| lastReferenceDate | sf\$1last\$1reference\$1date | Custom | Date | 
| billingAddressCity | sf\$1billing\$1address\$1city | Custom | String | 
| billingAddressCountry | sf\$1billing\$1address\$1country | Custom | String | 
| billingAddressPostalCode | sf\$1billing\$1address\$1postal\$1code | Custom | String | 
| billingAddressState | sf\$1billing\$1address\$1state | Custom | String | 
| billingAddressStreet | sf\$1billing\$1address\$1street | Custom | String | 
| pricebookDescription | sf\$1pricebook\$1description | Custom | String | 
| pricebookId | sf\$1pricebook\$1id | Custom | String | 
| billingLatitude | sf\$1billing\$1latitude | Custom | String | 
| billingLongitude | sf\$1billing\$1longitude | Custom | String | 
| billingGeocodeAccuracy | sf\$1billing\$1geocode\$1accuracy | Custom | String | 
| companySignedId | sf\$1company\$1signed\$1id | Custom | String | 
| companySignedDate | sf\$1company\$1signed\$1date | Custom | Date | 
| customerSignedId | sf\$1customer\$1signed\$1id | Custom | String | 
| activatedById | sf\$1activated\$1by\$1id | Custom | String | 
| activatedDate | sf\$1activated\$1date | Custom | Date | 
| lastApprovedDate | sf\$1last\$1approved\$1date | Custom | Date | 
| lastActivityDate | sf\$1last\$1activity\$1date | Custom | Date | 
| accountName | sf\$1account\$1name | Custom | String | 
| startDate | sf\$1start\$1date | Custom | Date | 
| endDate | sf\$1end\$1date | Custom | Date | 
| createdBy | sf\$1created\$1by | Custom | String | 

## Document
<a name="salesforce-field-mappings-document"></a>

Amazon Q supports crawling [Salesforce Online Documents](https://developer.salesforce.com/docs/atlas.en-us.object_reference.meta/object_reference/sforce_api_objects_document.htm) and offers the following document field mappings.


| Salesforce field name | Index field name | Description | Data type | 
| --- | --- | --- | --- | 
| category | \$1category | Default | String | 
| sourceUrl | \$1source\$1uri | Default | String | 
| author | \$1authors | Default | String list | 
| createdAt | \$1created\$1at | Default | Date | 
| folder | sf\$1folder\$1name | Custom | String | 
| isInternalUseOnly | sf\$1is\$1internal\$1use\$1only | Custom | String | 
| isPublic | sf\$1is\$1public | Custom | String | 
| keywords | sf\$1keywords | Custom | String | 
| lastModifiedBy | sf\$1last\$1modified\$1by | Custom | String | 
| updatedAt | \$1last\$1updated\$1at | Default | Date | 
| fileName | sf\$1file\$1name | Custom | String | 
| fileType | \$1file\$1type | Default | String | 
| fileSize | sf\$1file\$1size | Custom | Long (numeric) | 
| createdBy | sf\$1created\$1by | Custom | String | 
| isBodySearchable | sf\$1is\$1body\$1searchable | Custom | String | 

## Group
<a name="salesforce-field-mappings-group"></a>

Amazon Q supports crawling [Salesforce Online Groups](https://developer.salesforce.com/docs/atlas.en-us.object_reference.meta/object_reference/sforce_api_objects_group.htm) and offers the following group field mappings.


| Salesforce field name | Index field name | Description | Data type | 
| --- | --- | --- | --- | 
| category | \$1category | Default | String | 
| sourceUrl | \$1source\$1uri | Default | String | 
| createdAt | \$1created\$1at | Default | Date | 
| groupEmail | sf\$1group\$1email | Custom | String | 
| lastModifiedBy | sf\$1last\$1modified\$1by | Custom | String | 
| lastModifiedDate | \$1last\$1modified\$1at | Default | Date | 
| ownerId | sf\$1owner\$1id | Custom | String | 
| groupName | sf\$1group\$1name | Custom | String | 
| createdBy | \$1authors | Default | String list | 
| lastFeedModifiedDate | sf\$1last\$1feed\$1modified\$1date | Custom | Date | 
| hasPrivateFieldsAccess | sf\$1has\$1private\$1fields\$1access | Custom | String | 
| canHaveGuests | sf\$1can\$1have\$1guests | Custom | String | 
| isArchived | sf\$1is\$1archived | Custom | String | 
| isAutoArchived | sf\$1is\$1auto\$1archive\$1disabled | Custom | String | 
| memberCount | sf\$1member\$1count | Custom | String | 
| collaborationType | sf\$1collabotration\$1type | Custom | String | 
| informationTitle | sf\$1information\$1title | Custom | String | 

## Idea
<a name="salesforce-field-mappings-idea"></a>

Amazon Q supports crawling [Salesforce Online Ideas](https://developer.salesforce.com/docs/atlas.en-us.object_reference.meta/object_reference/sforce_api_objects_idea.htm) and offers the following idea field mappings.


| Salesforce field name | Index field name | Description | Data type | 
| --- | --- | --- | --- | 
| category | \$1category | Default | String | 
| sourceUrl | \$1source\$1uri | Default | String | 
| createdAt | \$1created\$1at | Default | Date | 
| lastModifiedBy | sf\$1last\$1modified\$1by | Custom | String | 
| title | sf\$1title | Custom | String | 
| status | sf\$1status | Custom | String | 
| createdByName | sf\$1created\$1by | Custom | String | 
| parentIdea | sf\$1parent\$1idea\$1id | Custom | String | 
| parentIdeaId | sf\$1parent\$1idea\$1id | Custom | String | 
| lastModifiedDate | \$1last\$1modified\$1at | Default | Date | 
| recordTypeId | sf\$1record\$1type\$1id | Custom | String | 
| communityId | sf\$1community\$1id | Custom | String | 
| numComments | sf\$1number\$1of\$1comments | Custom | Long (numeric) | 
| voteScore | sf\$1vote\$1score | Custom | Long (numeric) | 
| voteTotal | sf\$1vote\$1total | Custom | Long (numeric) | 
| lastCommentDate | sf\$1last\$1comment\$1date | Custom | Date | 

## Lead
<a name="salesforce-field-mappings-lead"></a>

Amazon Q supports crawling [Salesforce Online Leads](https://developer.salesforce.com/docs/atlas.en-us.object_reference.meta/object_reference/sforce_api_objects_lead.htm) and offers the following lead field mappings.


| Salesforce field name | Index field name | Description | Data type | 
| --- | --- | --- | --- | 
| category | \$1category | Default | String | 
| sourceUrl | \$1source\$1uri | Default | String | 
| city | sf\$1city | Custom | String | 
| company | sf\$1company | Custom | String | 
| country | sf\$1country | Custom | String | 
| createdAt | \$1created\$1at | Default | Date | 
| lastModifiedBy | sf\$1last\$1modified\$1by | Custom | String | 
| updatedAt | \$1last\$1updated\$1at | Default | Date | 
| leadSource | sf\$1lead\$1source | Custom | String | 
| state | sf\$1state | Custom | String | 
| status | sf\$1status | Custom | String | 
| convertedAccount | sf\$1converted\$1account | Custom | String | 
| convertedAccountId | sf\$1converted\$1account\$1id | Custom | String | 
| convertedContact | sf\$1converted\$1contact | Custom | String | 
| convertedContactId | sf\$1converted\$1contact\$1id | Custom | String | 
| convertedDate | sf\$1converted\$1date | Custom | Date | 
| convertedOpportunity | sf\$1converted\$1opportunity | Custom | String | 
| convertedOpportunityId | sf\$1converted\$1opportunity\$1id | Custom | String | 
| firstName | sf\$1first\$1name | Custom | String | 
| createdBy | \$1authors | Default | String list | 
| isConverted | sf\$1is\$1converted | Custom | String | 
| owner | sf\$1owner\$1name | Custom | String | 
| lastActivityDate | sf\$1last\$1activity\$1date | Custom | Date | 
| ownerId | sf\$1owner\$1id | Custom | String | 
| lastName | sf\$1last\$1name | Custom | String | 
| title | sf\$1title | Custom | String | 
| street | sf\$1street | Custom | String | 
| postalCode | sf\$1postal\$1code | Custom | String | 
| latitude | sf\$1latitude | Custom | String | 
| longitude | sf\$1longitude | Custom | String | 
| geocodeAccuracy | sf\$1geocode\$1accuracy | Custom | String | 
| phone | sf\$1phone | Custom | String | 
| email | sf\$1email | Custom | String | 
| industry | sf\$1industry | Custom | String | 
| rating | sf\$1rating | Custom | String | 
| annualRevenue | sf\$1annual\$1revenue | Custom | String | 
| numberofEmployees | sf\$1number\$1of\$1employees | Custom | Long (numeric) | 
| jigsaw | sf\$1jigsaw | Custom | String | 
| jigsawContactId | sf\$1jigsaw\$1contact\$1id | Custom | String | 
| emailBouncedReason | sf\$1email\$1bounced\$1reason | Custom | String | 
| individualId | sf\$1individual\$1id | Custom | String | 

## Opportunity
<a name="salesforce-field-mappings-opportunity"></a>

Amazon Q supports crawling [Salesforce Online Opportunities](https://developer.salesforce.com/docs/atlas.en-us.object_reference.meta/object_reference/sforce_api_objects_opportunity.htm) and offers the following opportunity field mappings.


| Salesforce field name | Index field name | Description | Data type | 
| --- | --- | --- | --- | 
| category | \$1category | Default | String | 
| sourceUrl | \$1source\$1uri | Default | String | 
| accountName | sf\$1account\$1name | Custom | String | 
| amount | sf\$1amount | Custom | String | 
| campaign | sf\$1campaign\$1name | Custom | String | 
| createdAt | \$1created\$1at | Default | Date | 
| createdBy | sf\$1created\$1by | Custom | String | 
| lastModifiedBy | sf\$1last\$1modified\$1by | Custom | String | 
| lastModifiedDate | \$1last\$1updated\$1at | Default | Date | 
| fiscalQuarter | sf\$1fiscal\$1quarter | Custom | String | 
| fiscalYear | sf\$1fiscal\$1year | Custom | String | 
| isClosed | sf\$1is\$1closed | Custom | String | 
| isWon | sf\$1is\$1won | Custom | String | 
| leadSource | sf\$1lead\$1source | Custom | String | 
| opportunityName | sf\$1opportunity\$1name | Custom | String | 
| accountId | sf\$1account\$1id | Custom | String | 
| campaignId | sf\$1campaign\$1id | Custom | String | 
| closeDate | sf\$1close\$1date | Custom | Date | 
| typeValue | sf\$1type\$1value | Custom | String | 
| lastActivityDate | sf\$1last\$1activity\$1date | Date | String | 
| ownerName | sf\$1owner\$1name | Custom | String | 
| ownerId | sf\$1owner\$1id | Custom | String | 
| stageName | sf\$1stage\$1name | Custom | String | 
| probability | sf\$1probability | Custom | Long (numeric) | 
| nextStep | sf\$1next\$1step | Custom | String | 
| forestCategory | sf\$1forecast\$1category | Custom | String | 
| forestCategoryName | sf\$1forest\$1category\$1name | Custom | String | 
| hasOpportunityLineItem | sf\$1has\$1opportunity\$1line\$1item | Custom | String | 
| pricebook2id | sf\$1pricebook2\$1id | Custom | String | 
| pushCount | sf\$1push\$1count | Custom | String | 
| fiscal | sf\$1fiscal | Custom | String | 
| contactId | sf\$1contact\$1id | Custom | String | 
| lastViewedDate | sf\$1last\$1viewed\$1date | Custom | Date | 
| hasOpenActivity | sf\$1has\$1open\$1activity | Custom | Long (numeric) | 
| hasOverdueTask | sf\$1has\$1overdue\$1task | Custom | String | 

## Partner
<a name="salesforce-field-mappings-partner"></a>

Amazon Q supports crawling [Salesforce Online Partner](https://developer.salesforce.com/docs/atlas.en-us.object_reference.meta/object_reference/sforce_api_objects_partner.htm) and offers the following partner field mappings.


| Salesforce field name | Index field name | Description | Data type | 
| --- | --- | --- | --- | 
| category | \$1category | Default | String | 
| sourceUrl | \$1source\$1uri | Default | String | 
| createdAt | \$1created\$1at | Default | Date | 
| updatedAt | \$1last\$1updated\$1at | Default | Date | 
| createdBy | \$1authors | Default | String list | 
| opportunityId | sf\$1opportunity\$1id | Custom | String | 
| accountFromId | sf\$1account\$1from\$1id | Custom | String | 
| accountToId | sf\$1role | Custom | String | 
| role | sf\$1role | Custom | String | 
| isPrimary | sf\$1is\$1primary | Custom | String | 
| systemModstamp | sf\$1system\$1modstamp | Custom | Date | 
| reversePartnerId | sf\$1reverse\$1partner\$1id | Custom | String | 
| opportunity | sf\$1opportunity | Custom | String | 
| accountFrom | sf\$1account\$1from | Custom | String | 
| accountTo | sf\$1account\$1to | Custom | String | 

## Pricebook
<a name="salesforce-field-mappings-pricebook"></a>

Amazon Q supports crawling [Salesforce Online Pricebooks](https://developer.salesforce.com/docs/atlas.en-us.object_reference.meta/object_reference/sforce_api_objects_pricebook2.htm) and offers the following pricebook field mappings.


| Salesforce field name | Index field name | Description | Data type | 
| --- | --- | --- | --- | 
| category | \$1category | Default | String | 
| sourceUrl | \$1source\$1uri | Default | String | 
| isActive | sf\$1is\$1active | Custom | String | 
| lastModifiedBy | sf\$1last\$1modified\$1by | Default | String | 
| lastModifiedDate | \$1last\$1updated\$1at | Default | Date | 
| pricebookName | sf\$1pricebook\$1name | Custom | String | 
| createdAt | \$1created\$1at | Default | Date | 
| createdBy | \$1authors | Default | String list | 
| lastViewedDate | sf\$1last\$1viewed\$1date | Custom | Date | 
| isStandard | sf\$1is\$1standard | Custom | String | 

## Product
<a name="salesforce-field-mappings-product"></a>

Amazon Q supports crawling [Salesforce Online Product](https://developer.salesforce.com/docs/atlas.en-us.object_reference.meta/object_reference/sforce_api_objects_product2.htm) and offers the following product field mappings.


| Salesforce field name | Index field name | Description | Data type | 
| --- | --- | --- | --- | 
| category | \$1category | Default | String | 
| sourceUrl | \$1source\$1uri | Default | String | 
| family | sf\$1family | Custom | String | 
| isActive | sf\$1is\$1active | Custom | String | 
| createdAt | \$1created\$1at | Default | Date | 
| updatedAt | \$1last\$1updated\$1at | Default | Date | 
| lastModifiedBy | sf\$1last\$1modified\$1by | Custom | String | 
| productCode | sf\$1product\$1code | Custom | String | 
| createdBy | \$1authors | Default | String list | 
| productName | sf\$1product\$1name | Custom | String | 
| externalDataSourceId | sf\$1external\$1datasource\$1id | Custom | String | 
| externalId | sf\$1external\$1id | Custom | String | 
| displayUrl | sf\$1display\$1url | Custom | String | 
| quantityUnitOfMeasure | sf\$1quantity\$1unit\$1of\$1measure | Custom | String | 
| isArchived | sf\$1is\$1archived | Custom | String | 
| lastViewedDate | sf\$1last\$1viewed\$1date | Custom | Date | 
| stockKeepingUnit | sf\$1stock\$1keeping\$1unit | Custom | String | 

## Solution
<a name="salesforce-field-mappings-solution"></a>

Amazon Q supports crawling [Salesforce Online Solutions](https://developer.salesforce.com/docs/atlas.en-us.object_reference.meta/object_reference/sforce_api_objects_solution.htm) and offers the following solution field mappings.


| Salesforce field name | Index field name | Description | Data type | 
| --- | --- | --- | --- | 
| category | \$1category | Default | String | 
| sourceUrl | \$1source\$1uri | Default | String | 
| isPublished | sf\$1is\$1published | Custom | String | 
| isReviewed | sf\$1is\$1reviewed | Custom | String | 
| lastModifiedBy | sf\$1last\$1modified\$1by | Custom | String | 
| lastModifiedDate | \$1last\$1updated\$1at | Default | Date | 
| ownerName | sf\$1owner\$1name | Custom | String | 
| solutionNumber | sf\$1solution\$1number | Custom | String | 
| status | sf\$1status | Custom | String | 
| timesUsed | sf\$1times\$1used | Custom | String | 
| solutionName | sf\$1solution\$1name | Custom | String | 
| createdByName | \$1authors | Default | String list | 
| createdAt | \$1created\$1at | Default | Date | 
| solutionNote | sf\$1solution\$1note | Custom | String | 
| ownderId | sf\$1ownderId | Custom | String | 
| lastViewedDate | sf\$1last\$1viewed\$1date | Custom | Date | 

## Profile
<a name="salesforce-field-mappings-profile"></a>

Amazon Q supports crawling [Salesforce Online Profiles](https://developer.salesforce.com/docs/atlas.en-us.object_reference.meta/object_reference/sforce_api_objects_profile.htm) and offers the following profile field mappings.


| Salesforce field name | Index field name | Description | Data type | 
| --- | --- | --- | --- | 
| category | \$1category | Default | String | 
| sourceUrl | \$1source\$1uri | Default | String | 
| updatedAt | \$1last\$1updated\$1at | Default | Date | 
| lastModifiedBy | sf\$1last\$1modified\$1by | Custom | String | 
| createdBy | \$1authors | Default | String list | 
| createdAt | \$1created\$1at | Default | Date | 
| userType | sf\$1user\$1type | Custom | String | 

## Task
<a name="salesforce-field-mappings-task"></a>

Amazon Q supports crawling [Salesforce Online Tasks](https://developer.salesforce.com/docs/atlas.en-us.object_reference.meta/object_reference/sforce_api_objects_task.htm) and offers the following task field mappings.


| Salesforce field name | Index field name | Description | Data type | 
| --- | --- | --- | --- | 
| category | \$1category | Default | String | 
| sourceUrl | \$1source\$1uri | Default | String | 
| accountName | sf\$1account\$1name | Custom | String | 
| lastModifiedBy | sf\$1last\$1modified\$1by | Custom | String | 
| lastModifiedDate | \$1last\$1updated\$1at | Default | Date | 
| ownerName | sf\$1owner\$1name | Custom | String | 
| isRecurrence | sf\$1is\$1recurrence | Custom | String | 
| isClosed | sf\$1is\$1closed | Custom | String | 
| isArchived | sf\$1is\$1archived | Custom | String | 
| priority | sf\$1priority | Custom | String | 
| status | sf\$1status | Custom | String | 
| whatId | sf\$1what\$1id | Custom | String | 
| createdByName | \$1authors | Default | String list | 
| createdAt | \$1created\$1at | Default | Date | 
| subject | sf\$1subject | Custom | String | 
| activityDate | sf\$1activity\$1date | Custom | Date | 
| activityDate | sf\$1activity\$1date | Custom | Date | 
| isHighPriority | sf\$1is\$1high\$1priority | Custom | String | 
| ownerId | sf\$1owner\$1id | Custom | String | 
| callType | sf\$1call\$1type | Custom | String | 

## User
<a name="salesforce-field-mappings-user"></a>

Amazon Q supports crawling [Salesforce Online Users](https://developer.salesforce.com/docs/atlas.en-us.object_reference.meta/object_reference/sforce_api_objects_user.htm) and offers the following user field mappings.


| Salesforce field name | Index field name | Description | Data type | 
| --- | --- | --- | --- | 
| category | \$1category | Default | String | 
| sourceUrl | \$1source\$1uri | Default | String | 
| account | sf\$1account | Custom | String | 
| isActive | sf\$1is\$1active | Custom | String | 
| city | sf\$1city | Custom | String | 
| lastModifiedBy | sf\$1last\$1modified\$1by | Custom | String | 
| updatedAt | \$1last\$1updated\$1at | Default | Date | 
| companyName | sf\$1company\$1name | Custom | String | 
| country | sf\$1country | Custom | String | 
| department | sf\$1department | Custom | String | 
| division | sf\$1division | Custom | String | 
| email | sf\$1email | Custom | String | 
| employeeNumber | sf\$1employee\$1number | Custom | String | 
| firstName | sf\$1first\$1name | Custom | String | 
| lastName | sf\$1last\$1name | Custom | String | 
| manager | sf\$1manager | Custom | String | 
| state | sf\$1state | Custom | String | 
| userRole | sf\$1user\$1role | Custom | String | 
| username | sf\$1username | Custom | String | 
| createdBy | \$1authors | Default | String list | 
| createdAt | \$1created\$1at | Default | Date | 
| street | sf\$1street | Custom | String | 
| postalCode | sf\$1postal\$1code | Custom | String | 
| latitude | sf\$1latitiude | Custom | String | 
| longitude | sf\$1longitude | Custom | String | 
| geocodeAccuracy | sf\$1geocode\$1accuracy | Custom | String | 
| phone | sf\$1phone | Custom | String | 
| fax | sf\$1fax | Custom | String | 
| mobilePhone | sf\$1mobile\$1phone | Custom | String | 
| profileName | sf\$1profile\$1name | Custom | String | 
| aboutMe | sf\$1about\$1me | Custom | String | 
| languageLocaleKey | sf\$1language\$1locale\$1key | Custom | String | 

## Chatter
<a name="salesforce-field-mappings-chatter"></a>

Amazon Q supports crawling [Salesforce Online Chatters](https://developer.salesforce.com/docs/atlas.en-us.object_reference.meta/object_reference/sforce_api_objects_chatteractivity.htm) and offers the following chatter field mappings.


| Salesforce field name | Index field name | Description | Data type | 
| --- | --- | --- | --- | 
| category | \$1category | Default | String | 
| sourceUrl | \$1source\$1uri | Default | String | 
| body | sf\$1body | Custom | String | 
| createdAt | \$1created\$1at | Default | Date | 
| lastEditById | sf\$1last\$1edit\$1by\$1id | Custom | String | 
| lastEditDate | sf\$1last\$1edit\$1date | Custom | Date | 
| lastModifiedDate | \$1last\$1updated\$1at | Default | Date | 
| insertedById | sf\$1inserted\$1by\$1id | Custom | String | 
| createdBy | \$1authors | Default | String list | 
| parentId | sf\$1parent\$1id | Custom | String | 
| revision | sf\$1revision | Custom | String | 
| status | sf\$1status | Custom | String | 
| isRichText | sf\$1is\$1rich\$1texrt | Custom | String | 

## Knowledge articles
<a name="salesforce-field-mappings-ka"></a>

Amazon Q supports crawling [Salesforce Online Knowledge articles](https://developer.salesforce.com/docs/atlas.en-us.object_reference.meta/object_reference/sforce_api_objects_knowledgearticle.htm) and offers the following knowledge article field mappings.


| Salesforce field name | Index field name | Description | Data type | 
| --- | --- | --- | --- | 
| category | \$1category | Default | String | 
| sourceUrl | \$1source\$1uri | Default | String | 
| articleTitle | sf\$1title | Custom | String | 
| articleNumber | sf\$1article\$1number | Default | Date | 
| knowledgeArticleId | sf\$1knowledge\$1article\$1id | Custom | String | 
| lastPublishedDate | sf\$1last\$1published\$1date | Custom | Date | 
| publishStatus | sf\$1publish\$1status | Custom | String | 
| versionNumber | sf\$1version\$1number | Custom | String | 
| language | sf\$1language | Custom | String | 
| ownerId | sf\$1ownder\$1id | Custom | String | 
| summary | sf\$1summary | Custom | String | 
| firstPublishedDate | sf\$1first\$1published\$1date | Custom | Date | 
| updatedAt | \$1last\$1updated\$1at | Default | Date | 
| archivedDate | sf\$1archived\$1date | Custom | Date | 
| isLatestVersion | sf\$1is\$1latest\$1version | Custom | String | 
| sourceId | sf\$1sourceId | Custom | String | 
| createdBy | \$1authors | Default | String list | 
| assignmentDate | sf\$1assignment\$1date | Custom | Long (numeric) | 
| assignmentDueDate | sf\$1assignment\$1due\$1date | Custom | Date | 
| articleCaseAttachCount | sf\$1article\$1case\$1attach\$1count | Custom | Long (numeric) | 
| articleTotalViewCount | sf\$1article\$1total\$1view\$1count | Custom | Long (numeric) | 
| urlName | sf\$1url\$1name | Custom | String | 
| assignmentNote | sf\$1assignment\$1date | Custom | String | 
| migratedToFromArticleVersion | sf\$1migrated\$1article\$1version | Custom | String | 
| assignedBy | sf\$1assigned\$1by | Custom | String | 
| assignedTo | sf\$1assigned\$1to | Custom | Date | 

## Attachments
<a name="salesforce-field-mappings-attachments"></a>

Amazon Q supports crawling [Salesforce Online Attachments](https://developer.salesforce.com/docs/atlas.en-us.object_reference.meta/object_reference/sforce_api_objects_attachment.htm) and offers the following attachment field mappings.


| Salesforce field name | Index field name | Description | Data type | 
| --- | --- | --- | --- | 
| category | \$1category | Default | String | 
| sourceUrl | \$1source\$1uri | Default | String | 
| createdAt | \$1created\$1at | Default | Date | 
| updatedAt | \$1last\$1updated\$1at | Default | Date | 
| fileName | sf\$1file\$1name | Custom | String | 
| fileType | \$1file\$1type | Default | String | 
| fileSize | sf\$1file\$1size | Custom | Long (numeric) | 
| parentName | sf\$1parent\$1name | Default | String | 
| createdBy | \$1authors | Default | String list | 

## Custom object
<a name="salesforce-field-mappings-co"></a>

Amazon Q supports crawling custom objects and offers the following custom object field mappings.


| Salesforce field name | Index field name | Description | Data type | 
| --- | --- | --- | --- | 
| category | \$1category | Default | String | 
| sourceUrl | \$1source\$1uri | Default | String | 
| createdAt | \$1created\$1at | Default | Date | 
| updatedAt | \$1last\$1updated\$1at | Default | Date | 
| lastModifiedById | sf\$1last\$1modified\$1by\$1id | Custom | String | 
| customObjectName | sf\$1custom\$1object\$1name | Custom | String | 
| createdBy | \$1authors | Default | String list | 
| lastModifiedBy | sf\$1last\$1modified\$1by | Custom | String | 
| documentbody | \$1document\$1body | Custom | String | 

# IAM role for Salesforce Online connector
<a name="salesforce-iam-role"></a>

If you use the AWS CLI or an AWS SDK, you must create an AWS Identity and Access Management (IAM) policy before you create an Amazon Q resource. When you call the [CreateDataSource](https://docs.aws.amazon.com/amazonq/latest/api-reference/API_CreateDataSource.html) operation, you provide the Amazon Resource Name (ARN) role with the policy attached.

If you use the AWS Management Console, you can create a new IAM role in the Amazon Q console or use an existing IAM role.

To learn more about IAM roles, see [IAM roles](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html) in the *AWS Identity and Access Management User Guide*.

To connect your data source connector to Amazon Q, you must give Amazon Q an IAM role that has the following permissions:
+ Permission to access the `BatchPutDocument` and `BatchDeleteDocument` operations to ingest documents.
+ Permission to access the [User Store](https://docs.aws.amazon.com/amazonq/latest/qbusiness-ug/connector-principal-store.html) API operations to ingest user and group access control information from documents.
+ Permission to access your AWS Secrets Manager secret to authenticate your data source connector instance.
+ **(Optional)** If you're using Amazon VPC, permission to access your Amazon VPC.

```
{
  "Version": "2012-10-17",		 	 	 ,
  "Statement": [
    {
      "Sid": "AllowsAmazonQToGetSecret",
      "Effect": "Allow",
      "Action": [
        "secretsmanager:GetSecretValue"
      ],
      "Resource": [
        "arn:aws:secretsmanager:{{region}}:{{account_id}}:secret:[[secret_id]]"
      ]
    },
    {
      "Sid": "AllowsAmazonQToDecryptSecret",
      "Effect": "Allow",
      "Action": [
        "kms:Decrypt"
      ],
      "Resource": [
        "arn:aws:kms:{{region}}:{{account_id}}:key/[[key_id]]"
      ],
      "Condition": {
        "StringLike": {
          "kms:ViaService": [
            "secretsmanager.*.amazonaws.com"
          ]
        }
      }
    },
    {
      "Sid": "AllowsAmazonQToIngestDocuments",
      "Effect": "Allow",
      "Action": [
        "qbusiness:BatchPutDocument",
        "qbusiness:BatchDeleteDocument"
      ],
      "Resource": [
      "arn:aws:qbusiness:{{region}}:{{source_account}}:application/{{application_id}}",
      "arn:aws:qbusiness:{{region}}:{{source_account}}:application/{{application_id}}/index/{{index_id}}"
      ]
    },
    {
      "Sid": "AllowsAmazonQToIngestPrincipalMapping",
      "Effect": "Allow",
      "Action": [
        "qbusiness:PutGroup",
        "qbusiness:CreateUser",
        "qbusiness:DeleteGroup",
        "qbusiness:UpdateUser",
        "qbusiness:ListGroups"
      ],
      "Resource": [
        "arn:aws:qbusiness:{{region}}:{{account_id}}:application/{{application_id}}",
        "arn:aws:qbusiness:{{region}}:{{account_id}}:application/{{application_id}}/index/{{index_id}}",
        "arn:aws:qbusiness:{{region}}:{{account_id}}:application/{{application_id}}/index/{{index_id}}/data-source/*"
      ]
    },
    {
      "Sid": "AllowsAmazonQToCreateAndDeleteNI",
      "Effect": "Allow",
      "Action": [
        "ec2:CreateNetworkInterface",
        "ec2:DeleteNetworkInterface"
      ],
      "Resource": [
        "arn:aws:ec2:{{region}}:{{account_id}}:subnet/[[subnet_ids]]",
        "arn:aws:ec2:{{region}}:{{account_id}}:security-group/[[security_group]]"
      ]
    },
    {
      "Sid": "AllowsAmazonQToCreateAndDeleteNIForSpecificTag",
      "Effect": "Allow",
      "Action": [
        "ec2:CreateNetworkInterface",
        "ec2:DeleteNetworkInterface"
      ],
      "Resource": "arn:aws:ec2:{{region}}:{{account_id}}:network-interface/*",
      "Condition": {
        "StringLike": {
          "aws:RequestTag/AMAZON_Q": "qbusiness_{{account_id}}_{{application_id}}_*"
        },
        "ForAllValues:StringEquals": {
          "aws:TagKeys": [
            "AMAZON_Q"
          ]
        }
      }
    },
    {
      "Sid": "AllowsAmazonQToCreateTags",
      "Effect": "Allow",
      "Action": [
        "ec2:CreateTags"
      ],
      "Resource": "arn:aws:ec2:{{region}}:{{account_id}}:network-interface/*",
      "Condition": {
        "StringEquals": {
          "ec2:CreateAction": "CreateNetworkInterface"
        }
      }
    },
    {
      "Sid": "AllowsAmazonQToCreateNetworkInterfacePermission",
      "Effect": "Allow",
      "Action": [
        "ec2:CreateNetworkInterfacePermission"
      ],
      "Resource": "arn:aws:ec2:{{region}}:{{account_id}}:network-interface/*",
      "Condition": {
        "StringLike": {
          "aws:ResourceTag/AMAZON_Q": "qbusiness_{{account_id}}_{{application_id}}_*"
        }
      }
    },
   {
      "Sid": "AllowsAmazonQToDescribeResourcesForVPC",
      "Effect": "Allow",
      "Action": [
        "ec2:DescribeNetworkInterfaces",
        "ec2:DescribeAvailabilityZones",
        "ec2:DescribeNetworkInterfaceAttribute",
        "ec2:DescribeVpcs",
        "ec2:DescribeRegions",
        "ec2:DescribeNetworkInterfacePermissions",
        "ec2:DescribeSubnets"
      ],
      "Resource": "*"
    }
  ]
}
```

**To allow Amazon Q to assume a role, you must also use the following trust policy:**

```
{
  "Version": "2012-10-17",		 	 	 ,
  "Statement": [
    {
      "Sid": "AllowsAmazonQServicePrincipal",
      "Effect": "Allow",
      "Principal": {
        "Service": "qbusiness.amazonaws.com"
      },
      "Action": "sts:AssumeRole",
      "Condition": {
        "StringEquals": {
          "aws:SourceAccount": "{{source_account}}"
        },
        "ArnEquals": {
          "aws:SourceArn": "arn:aws:qbusiness:{{region}}:{{source_account}}:application/{{application_id}}"
        }
      }
    }
  ]
}
```

For more information on Amazon Q data source connector IAM roles, see [IAM roles for Amazon Q data source connectors](https://docs.aws.amazon.com/amazonq/latest/qbusiness-ug/iam-roles.html#iam-roles-ds).

# Troubleshooting your Salesforce Online connector
<a name="salesforce-error-codes"></a>

The following table provides information about error codes you may see for the Salesforce Online connector and suggested resolutions.


| Error code | Error message | Suggested resolution | 
| --- | --- | --- | 
| SF-5001 | Invalid HostURL. | Provide valid HostURL. | 
| SF-5002 | Invalid userName or password. | Provide valid userName or password. | 
| SF-5003 | Invalid clientSecret. | Provide valid clientSecret. | 
| SF-5004 | Invalid clientId. | Provide valid clientId. | 
| SF-5005 | Invalid grant type. | Provide valid grant type. | 
| SF-5006 | Error while generating Access Token. | Provide valid credentials or try again later. | 
| SF-5100 | Null/empty HostUrl. | Provide HostUrl. | 
| SF-5101 | Null/empty client ID. | Provide client ID. | 
| SF-5102 | Null/empty client secret | Provide client secret. | 
| SF-5103 | Null/empty username. | Provide username. | 
| SF-5104 | Null/empty password. | Provide password. | 
| SF-5150 | Null/empty authentication URL. | Provide authentication URL. | 
| SF-5151 | Invalid HostURL pattern. | Provide valid HostURL pattern. | 
| SF-5152 | Invalid Authentication URL. | Provide valid Authentication URL. | 
| SF-5500 | ContinuableInternalServerError. | Try again later. | 