--- title: Add a ServiceNow source slug: '2107' canonical_url: https://docs.coveo.com/en/2107/ collection: coveo-for-servicenow source_format: adoc --- # Add a ServiceNow source In order for your support agents and customers to be able to view [items](https://docs.coveo.com/en/210/) from your ServiceNow instance in their [query](https://docs.coveo.com/en/231/) results, as a member of the **Administrators** or **Content Managers** [built-in groups](https://docs.coveo.com/en/1980#built-in-groups), you must create a ServiceNow [source](https://docs.coveo.com/en/246/) in your [Coveo organization](https://docs.coveo.com/en/185/). > **Notes** > > * The Coveo for ServiceNow integration isn't required to create a ServiceNow source. > > You can create a ServiceNow source to index content from your ServiceNow instance even if you're not using the Coveo for ServiceNow integration. > That is, even if you don't [install the Coveo for ServiceNow application](https://docs.coveo.com/en/2104/) in your ServiceNow instance. > For example, you can index your ServiceNow content so that the [items](https://docs.coveo.com/en/210/) appear in search results in a Coveo-powered [search interface](https://docs.coveo.com/en/3366/) outside of ServiceNow. > > * A ServiceNow source isn't required even if you're using the Coveo for ServiceNow integration. > > Typically, you'll want to index your ServiceNow content and make it searchable in ServiceNow when using the Coveo for ServiceNow integration. > However, you can choose to index content only from other [sources](https://docs.coveo.com/en/1702/), or you can index content from ServiceNow as well as other sources. > > Regardless of whether you're using the Coveo for ServiceNow integration, the procedure to create a ServiceNow source is as detailed in this article. To create a properly functioning ServiceNow source, you must: . [Create a crawling account](https://docs.coveo.com/en/2107#create-a-crawling-account). . [Create a ServiceNow source](https://docs.coveo.com/en/2107#add-a-servicenow-source). . [Build or rebuild your source](https://docs.coveo.com/en/2107#build-or-rebuild-your-source). . [Verify your source fields and mappings](https://docs.coveo.com/en/2107#about-source-fields-and-mappings). > **Leading practice** > > The number of [items](https://docs.coveo.com/en/210/) that a source processes per hour (crawling speed) depends on various factors, such as network bandwidth and source configuration. > See [About crawling speed](https://docs.coveo.com/en/2078/) for information on what can impact crawling speed, as well as possible solutions. ## Source key characteristics [cols="4",options="header"] |=== 2+|Features |Supported |Additional information 2+|ServiceNow version |Latest cloud version |Following available ServiceNow releases 2+|Indexable content a|[items](https://docs.coveo.com/en/210/) from any ServiceNow system table, such as: * Knowledge base articles * Knowledge base questions * Knowledge base answers * Knowledge base comments * Problems * Incidents * Catalog items * Catalog tasks * Customer service cases * HR cases | .3+.^|[Content update operations](https://docs.coveo.com/en/2039/) |[refresh](https://docs.coveo.com/en/2710/) ^|[check] |By default, the refresh operation doesn't take account of deleted records. |[rescan](https://docs.coveo.com/en/2711/) ^|[check] |[Takes place every day by default](https://docs.coveo.com/en/1933/). |[rebuild](https://docs.coveo.com/en/2712/) ^|[check] | .3+.^|[Content security](https://docs.coveo.com/en/1779/) options |[Same users and groups as in your content system](https://docs.coveo.com/en/1779#same-users-and-groups-as-in-your-content-system) ^|[check] a|Coveo for ServiceNow only partially supports ServiceNow permissions. See ["Content Security" tab](https://docs.coveo.com/en/2107#content-security-tab) for more information. |[Specific users and groups](https://docs.coveo.com/en/1779#specific-users-and-groups) ^|[check] | |[Everyone](https://docs.coveo.com/en/1779#everyone) ^|[check] | |=== ## Create a crawling account Before you create your ServiceNow source, you must create a user in your ServiceNow instance that your source will use as a [crawling account](https://docs.coveo.com/en/2122/) to retrieve your ServiceNow content and make it searchable. . [Create a user](https://www.servicenow.com/docs/bundle/zurich-api-reference/page/script/business-rules/concept/c_BusinessRules.html) in your ServiceNow instance that will be used as the [crawling account](https://docs.coveo.com/en/2122/). Make sure to: * Set the account **Time Zone** to **GMT**. * Set the account credentials based on the [source credentials leading practices](https://docs.coveo.com/en/1920/). . Grant the crawling account read access to your ServiceNow content. To do so, [assign the crawling account one or more user roles](https://www.servicenow.com/docs/bundle/zurich-platform-administration/page/administer/users-and-groups/task/t_AssignARoleToAUser.html) that have read access to the following ServiceNow tables, including all the corresponding table rows (records) and columns (fields). > **Tip** > > To make this task easier to manage, create a user role in ServiceNow, such as `coveo_crawling`, that's used only to provide read access to the crawling account, and then assign the user role to the following tables and tables rows as well as to the crawling account. > **Note** > > The following tables must have access to web services. > Ensure that the **Allow access to this table via web services** checkbox is enabled for the table on the **Application Access** tab in ServiceNow. ** All the tables that you [choose to index](https://docs.coveo.com/en/2107#content-to-include-tab) for your ServiceNow source. ** All the following ServiceNow tables, including all the corresponding table rows (records) and columns (fields): [cols="2",options="header"] |=== |Purpose |Table 1.10+.^|Global |`sys_db_object` |`sys_dictionary` |`sys_group_has_role` |`sys_properties` |`sys_security_acl` |`sys_security_acl_role` a|`sys_user` > **Note** > > To support locked-out ServiceNow users in your search interface, you must also [grant the crawling account specific access to the `locked_out` field](#support-locked-out-users) in the `sys_user` table. |`sys_user_grmember` |`sys_user_has_role` |`sys_user_role` 1.2+.^a|Domain Separation > **Note** > > Requires the [Domain Separation plugin](https://www.servicenow.com/docs/bundle/zurich-platform-security/page/administer/company-and-domain-separation/concept/domain-sep-plugin.html). |`domain` |`domain_contains` 1.9+.^|Service Catalog and Knowledge Base |`kb_uc_can_contribute_mtom` |`kb_uc_can_read_mtom` |`kb_uc_cannot_read_mtom` |`sc_cat_item_user_criteria_mtom` |`sc_cat_item_user_criteria_no_mtom` |`sc_category` |`sc_category_user_criteria_mtom` |`sc_category_user_criteria_no_mtom` |`user_criteria` |=== . [Grant the crawling account access to locked-out user data in ServiceNow](#support-locked-out-users). . (Optional) Set additional [settings](#optional-settings). ### Support locked-out users Your Coveo-powered search interface supports locked-out ServiceNow users. This means that users that are locked-out of their ServiceNow account won't be able to access ServiceNow content in your search interface. To configure support for locked-out users, grant the crawling account specific access to the `locked_out` field in the `sys_user` table via an access control list (ACL). > **Important** > > You must still grant the crawling account specific access to the `sys_user.locked_out` field as detailed in this section even if you've already granted the crawling account access to the `sys_user` table and all its corresponding rows (records) and columns (fields). > > This is because an ACL already exists by default in ServiceNow that limits access to the `sys_user.locked_out` field to admins only. > Therefore, your crawling account won't have access to the `sys_user.locked_out` field unless you grant it specific access. > > If your crawling account is an admin account, the default ACL already gives the account access so no further action is required. [Create an ACL rule](https://www.servicenow.com/docs/bundle/zurich-platform-security/page/administer/contextual-security/task/t_CreateAnACLRule.html) in your ServiceNow instance with the following configuration: ```text Type: record Operation: read Table: User (sys_user) Field: Locked out (locked_out) Requires role: ``` ![ACL](https://docs.coveo.com/en/assets/images/coveo-for-servicenow/servicenow-acl-locked-out.png) ### Optional settings * For added security, enable the **Web Service Access Only** field for the crawling account. This sets the crawling account as a link:https://www.servicenow.com/docs/bundle/zurich-platform-administration/page/administer/users-and-groups/concept/c_NonInteractiveSessions.html * By default, the crawler retrieves changes in content state, such as from "Published" to "Retired". To retrieve deletions of records as well: . Grant the crawling account read access to the `sys_audit_delete` table. . After you [create your ServiceNow source](https://docs.coveo.com/en/2107#add-a-servicenow-source): .. On the [**Sources**](https://platform.cloud.coveo.com/admin/#/orgid/content/sources/) ([platform-ca](https://platform-ca.cloud.coveo.com/admin/#/orgid/content/sources/) | [platform-eu](https://platform-eu.cloud.coveo.com/admin/#/orgid/content/sources/) | [platform-au](https://platform-au.cloud.coveo.com/admin/#/orgid/content/sources/)) page, click the ServiceNow source and then click **More** > **Edit configuration with JSON** in the Action bar. .. In the **Edit configuration with JSON** panel that opens, set the `FetchDeletedRecords` parameter value to `true`, and then click **Save**. ## Add a ServiceNow source > **Notes** > > * The Coveo for ServiceNow integration isn't required to create a ServiceNow source. > > You can create a ServiceNow source to index content from your ServiceNow instance even if you're not using the Coveo for ServiceNow integration. > That is, even if you don't [install the Coveo for ServiceNow application](https://docs.coveo.com/en/2104/) in your ServiceNow instance. > For example, you can index your ServiceNow content so that the [items](https://docs.coveo.com/en/210/) appear in search results in a Coveo-powered [search interface](https://docs.coveo.com/en/3366/) outside of ServiceNow. > > * A ServiceNow source isn't required even if you're using the Coveo for ServiceNow integration. > > Typically, you'll want to index your ServiceNow content and make it searchable in ServiceNow when using the Coveo for ServiceNow integration. > However, you can choose to index content only from other [sources](https://docs.coveo.com/en/1702/), or you can index content from ServiceNow as well as other sources. > > Regardless of whether you're using the Coveo for ServiceNow integration, the procedure to create a ServiceNow source is as detailed in this article. . Ensure that you've [created a crawling account](https://docs.coveo.com/en/2107#create-a-crawling-account). . On the [**Sources**](https://platform.cloud.coveo.com/admin/#/orgid/content/sources/) ([platform-ca](https://platform-ca.cloud.coveo.com/admin/#/orgid/content/sources/) | [platform-eu](https://platform-eu.cloud.coveo.com/admin/#/orgid/content/sources/) | [platform-au](https://platform-au.cloud.coveo.com/admin/#/orgid/content/sources/)) page, click **Add source**, and then click **ServiceNow**. -- > **Leading practice** > > It's best to create or edit your source in your sandbox organization first. > Once you've confirmed that it indexes the desired content, you can copy your source configuration to your production organization, either [with a snapshot](https://docs.coveo.com/en/3239/) or manually. > > See [About non-production organizations](https://docs.coveo.com/en/2959/) for more information and best practices regarding sandbox organizations. -- . Specify your source settings on the **Add a ServiceNow source** page. Refer to the following sections for detailed information on the source settings: * ["Configuration" tab](https://docs.coveo.com/en/2107#configuration-tab) * ["Content security" tab](https://docs.coveo.com/en/2107#content-security-tab) * ["Access" tab](https://docs.coveo.com/en/2107#access-tab) * ["Content to include" tab](https://docs.coveo.com/en/2107#content-to-include-tab) > **Note** > > You can save your source settings at any time by clicking **Add and build source**/**Add source**, or **Save and rebuild source**/**Save**. > By default, a ServiceNow source starts a [rescan](https://docs.coveo.com/en/2711/) every day to retrieve ServiceNow content changes, such as item additions, modifications, and deletions. However, you can [edit your source rescan schedule](https://docs.coveo.com/en/1933/). ### "Configuration" tab On the **Add a ServiceNow source** page, the **Configuration** tab is selected by default. It contains your source's general information, as well as other parameters. #### General information ##### Source name Enter a name for your source. > **Leading practice** > > A source name can't be modified once it's saved, therefore be sure to use a short and descriptive name, using letters, numbers, hyphens (`-`), and underscores (`_`). Avoid spaces and other special characters. ##### Instance URL Enter your instance URL. **Example** Your instance URL is `+https://myinstance.service-now.com+`. ##### Optical character recognition (OCR) If you want Coveo to extract text from image files or PDF files containing images, enable the appropriate option. The extracted text is processed as item data, meaning that it's fully searchable and will appear in the item [Quick view](https://docs.coveo.com/en/2760#search-result-quick-view). > **Note** > > When OCR is enabled, ensure the source's relevant [file type configurations](https://docs.coveo.com/en/l3qg9275/) index the item content. > Indexing the item's metadata only or ignoring the item will prevent OCR from being applied. See [Enable optical character recognition](https://docs.coveo.com/en/2937/) for details on this feature. ##### Project Use the **Project** selector to associate your source with one or more Coveo [projects](https://docs.coveo.com/en/n7ef0517/). #### "Authentication" section Select an authentication option: * If you select **OAuth 2.0**, which is the most secure and therefore recommended option: .. Click **Authorize Account**. .. In the **Sign in to ServiceNow** window that appears, enter your ServiceNow [**Instance URL**](https://docs.coveo.com/en/2107#instance-url), **Client Id**, and **Client Secret**, and then click **Authorize**. > **Leading practice** > > You can find the client ID and client secret in the **Coveo** application registry in ServiceNow as follows: > > ... In the Now Platform UI of your ServiceNow instance, navigate to **System OAuth** > **Application Registry**. > > ... In the **Applications Registries** list, click the **Coveo** registry. > > ... To view the client secret, switch the instance application to **AI-Powered Search & Recommendations by Coveo** in the ServiceNow banner, and then click icon:tabler-lock[alt=tabler-lock,width=16] next to the **Client Secret** field. .. In the ServiceNow window that appears, do one of the following: ** If a login screen appears, enter the credentials of your [source crawling account](https://docs.coveo.com/en/2107#create-a-crawling-account), and then click **Login**. ** If a login screen doesn't appear, ensure that the username that appears at the top of the ServiceNow window corresponds to your [source crawling account](https://docs.coveo.com/en/2107#create-a-crawling-account). If it doesn't correspond, click **Not You?**, enter the credentials of your crawling account, and then click **Login**. ![Authentication window](https://docs.coveo.com/en/assets/images/coveo-for-servicenow/oauth.png) .. Click **Allow**. > **Note** > > Once you've authorized your account, the OAuth 2.0 handshake must be refreshed once in a while. > The default lifespan of a token is two years, but ServiceNow allows you to change this duration. * If you select **Basic authentication**, enter the **Username** and **Password** of a dedicated ServiceNow account that has access to the content you want to make searchable. See [Source Credentials Leading Practices](https://docs.coveo.com/en/1920/). ### "Content security" tab Select who will be able to access the source items through a Coveo-powered [search interface](https://docs.coveo.com/en/2741/). For details on the content security options, see [Content security](https://docs.coveo.com/en/1779/). > **Note** > > Coveo for ServiceNow only partially supports ServiceNow permissions. If you select the **Same users and groups as in your content system** option, keep in mind that: > > * Coveo supports ServiceNow base system roles, user criteria, access control lists (ACLs), and [domain separation](https://docs.coveo.com/en/2967#domain-separation). > > * Coveo doesn't support ServiceNow advanced (scripted) permissions in both user criteria records and ACLs. > If a user criteria record or ACL uses only advanced permissions, and no other condition such as roles, the user criteria record or ACL essentially has no user access criteria as far as Coveo is concerned. > As a result, the associated indexed item will be accessible to everyone. > However, you can [replicate the advanced permissions using query filters](https://docs.coveo.com/en/2114/), or you can use [custom table fields](https://docs.coveo.com/en/l2be0198/) to index user permissions in user criteria records with advanced permissions. > **Important** > > When using the **Everyone** content security option, see [Safely apply content filtering](#safe) for information on how to ensure that your source content is safely filtered and only accessible by intended users. ### "Access" tab . On the **Access** tab, specify whether each group (and API key, if applicable) in your [Coveo organization](https://docs.coveo.com/en/185/) can view or edit the current source. For example, when creating a new source, you could decide that members of Group A can edit its configuration, while Group B can only view it. For more information, see [Custom access level](https://docs.coveo.com/en/3151#custom-access-level). On the **Access** tab, specify whether each group (and API key, if applicable) in your [Coveo organization](https://docs.coveo.com/en/185/) can view or edit the current source. For example, when creating a new source, you could decide that members of Group A can edit its configuration, while Group B can only view it. For more information, see [Custom access level](https://docs.coveo.com/en/3151#custom-access-level). ### "Content to include" tab These settings determine which [items](https://docs.coveo.com/en/210/) and [metadata](https://docs.coveo.com/en/218/) your Coveo for ServiceNow source indexes. #### Default configuration When you create a new ServiceNow source, the source is preconfigured to retrieve metadata from certain basic tables and fields. However, you should [modify the default configuration](https://docs.coveo.com/en/2107#modify-the-source-index-configuration) to suit your needs. > **Leading practice** > > * Set the **View** filter to **Selected** in the table list header to view only the tables that are currently set to be indexed by your source. > > * If your ServiceNow instance tables don't appear on the **Content to include** tab, click **Add source**, and then re-open your source. > **Important** > > Coveo for ServiceNow doesn't support ServiceNow attachments. > The attachment file data is stored in the `Attachment Document` (`sys_attachment_doc`) and `Attachment Document V2` (`sys_attachment_doc_v2`) system tables in ServiceNow. > Make sure to exclude these tables from your ServiceNow source configuration or your source will fail to build successfully. > This is done to prevent cluttering your index with non-useful data. The following table lists the ServiceNow tables that are indexed by default: [cols="3",options="header"] |=== |Item |Table label |Table name |Incidents |Incident |`incident` |Problems |Problem |`problem` |Knowledge base articles |Knowledge |`kb_knowledge` |Catalog items |Catalog Item |`sc_cat_item` |Catalog tasks |Catalog Task |`sc_task` |=== #### Modify the source index configuration This section describes how to select the objects and metadata that your Coveo for ServiceNow source indexes. . In your ServiceNow source, select the **Content to include** tab. ![Content to include | Coveo](https://docs.coveo.com/en/assets/images/coveo-for-servicenow/content-include-tab.png) [cols="2"] |=== |1 |The system table list shows the tables that are available in the ServiceNow instance that you specified for the [Instance URL](https://docs.coveo.com/en/2107#instance-url) field. |2 |The column (fields) list shows the table fields, including fields from referenced tables, that correspond to the currently highlighted system table in the system table list. |=== > **Leading practice** > > * Set the **View** filter to **Selected** in the table list header to view only the tables that are currently set to be indexed by your source. > > * If your ServiceNow instance tables don't appear on the **Content to include** tab, click **Add source**, and then re-open your source. From the **Content to include** tab, you can: * [Enable or disable a system table](#table). Your source indexes the metadata for a table only when the table is selected. * [Enable or disable fields for a system table](#column). Your source indexes the metadata only from selected fields when the associated system table is enabled. You should limit the number of fields to retrieve to reduce the request payload and improve the general performance of the connector. * [Apply a query](#query) to a selected system table to index or exclude specific records. . [[table]]To enable or disable a system table: .. In the left pane, enter the table label or name in the search field to locate the system table in the list. .. Check or clear the **Select** box for the table to enable or disable the table respectively. > **Note** > > If you're using [knowledge blocks](https://www.servicenow.com/docs/bundle/zurich-servicenow-platform/page/product/knowledge-management/concept/knowledge-blocks.html) in your ServiceNow instance, and your ServiceNow [source](https://docs.coveo.com/en/246/) is configured to [index](https://docs.coveo.com/en/204/) knowledge articles, the ServiceNow source automatically indexes the content of knowledge blocks that are included in knowledge articles. > For more information, see [Index ServiceNow knowledge blocks](https://docs.coveo.com/en/l3uc0533/). > **Important** > > Coveo for ServiceNow doesn't support ServiceNow attachments. > The attachment file data is stored in the `Attachment Document` (`sys_attachment_doc`) and `Attachment Document V2` (`sys_attachment_doc_v2`) system tables in ServiceNow. > Make sure to exclude these tables from your ServiceNow source configuration or your source will fail to build successfully. > This is done to prevent cluttering your index with non-useful data. . [[column]]To select the table fields to index: .. If required, locate and click the corresponding system table in the left pane to open the corresponding column (field) list in the right pane. You must enable a system table to select its fields. .. In the right pane, enter the column label or name in the search field to locate the field in the list. .. Check or clear the **Select** box for the field to enable or disable the field respectively. Some essential system fields are always indexed by Coveo and can't be disabled, such as `sys_id` and `sys_updated_on`. For reference fields, you can select the field to index the corresponding metadata, and then expand the field to also index a specific field from the referenced table. **Example** For the `author` field, you choose to index metadata from the `name` field from the referenced table as follows: ![Reference field configuration panel with Name Notification and data types | Coveo](https://docs.coveo.com/en/assets/images/coveo-for-servicenow/reference-field.png) The extracted metadata for a field in a referenced table is always prefixed with the reference field (key). In this example, the extracted metadata is `author.name`. > **Note** > > To index fields in child tables that aren't, included in the parent table, see [Index child-only table fields](https://docs.coveo.com/en/2107#index-child-only-table-fields). . [[query]]To apply or edit a query for the table: .. If required, locate and click the corresponding system table in the left pane to open the corresponding column list in the right pane. You must enable a system table to apply or edit a table query. .. Click **Query** in the column list header, and then enter or edit the query expression in the text field using [ServiceNow syntax](https://www.servicenow.com/docs/bundle/zurich-platform-user-interface/page/use/common-ui-elements/reference/r_OpAvailableFiltersQueries.html). For example, enter `workflow_state=published` to retrieve only the table objects whose state is "Published". > **Note** > > A view icon appears next to **Query** when the table contains a query expression. > > ![Applied query | Coveo](coveo-for-servicenow/content-to-include-query.png) . Click **Save and rebuild source**/**Save**. > **Note** > > Your ServiceNow source doesn't automatically delete a field or its [mapping rule](https://docs.coveo.com/en/2107#about-source-fields-and-mappings) if you choose to no longer index that field. Unused fields don't impact your Coveo organization negatively, however you can choose to delete unused fields. Default Coveo fields, however, can't be deleted. To delete an unused field, access the [mapping panel for your source](https://docs.coveo.com/en/1640#navigating-the-edit-mappings-panel), locate and click the field mapping rule, and then click **Delete**. Then, on the [**Fields**](https://platform.cloud.coveo.com/admin/#/orgid/content/fields/) ([platform-ca](https://platform-ca.cloud.coveo.com/admin/#/orgid/content/fields/) | [platform-eu](https://platform-eu.cloud.coveo.com/admin/#/orgid/content/fields/) | [platform-au](https://platform-au.cloud.coveo.com/admin/#/orgid/content/fields/)) page, delete the field from your Coveo index. #### Index child-only table fields When you choose to index a table that has one or more child tables, Coveo automatically indexes all child tables. However, if a child table has a field that's not included in the parent table, Coveo doesn't automatically index that child table field. To index a field that's specific to a child table, you must exclude the child table from the parent table, and then index the child table separately. To do so: . In your ServiceNow source, select the **Content to include** tab. . In the left pane, enter the parent table label or name in the search field to locate the system table in the list. . Click the parent table to open the corresponding column list in the right pane. . Click the **Query** icon in the column list header. . In the query filter text field, exclude the child table objects from the parent table by entering the expression `sys_class_name!=`, where `TABLE_NAME` is the child table to exclude. To exclude multiple child tables, use `^` to separate the table entries, such as `"sys_class_name!=^sys_class_name!="`. For example, to exclude the child tables `incident` and `change_request`, enter `"sys_class_name!=incident^sys_class_name!=change_request"`. . Index the child table separately as follows: .. In the left pane, enter the child table label or name in the search field to locate the table in the list. .. Enable the child table. .. Click the child table to open the corresponding column list, and enable the fields that you want to index. ## Build or rebuild your source You must build the source in order for Coveo to retrieve the source content and apply changes to your source settings. You can build or rebuild your source as follows: - You can choose to build when saving the source by clicking **Add and build source**/**Save and rebuild source**. - If you chose not to build when saving your source settings, you can build your source directly from the [**Sources**](https://platform.cloud.coveo.com/admin/#/orgid/content/sources/) ([platform-ca](https://platform-ca.cloud.coveo.com/admin/#/orgid/content/sources/) | [platform-eu](https://platform-eu.cloud.coveo.com/admin/#/orgid/content/sources/) | [platform-au](https://platform-au.cloud.coveo.com/admin/#/orgid/content/sources/)) page by clicking **Launch build** or **Start required rebuild** in the **Status** column for your source. If **Launch build** or **Start required rebuild** doesn't appear on the [**Sources**](https://platform.cloud.coveo.com/admin/#/orgid/content/sources/) ([platform-ca](https://platform-ca.cloud.coveo.com/admin/#/orgid/content/sources/) | [platform-eu](https://platform-eu.cloud.coveo.com/admin/#/orgid/content/sources/) | [platform-au](https://platform-au.cloud.coveo.com/admin/#/orgid/content/sources/)) page for your source, click the source, and then click **More** > **Rebuild** in the Action bar. Once the source is built, you can [review its content in the Content Browser](https://docs.coveo.com/en/2053/). > **Note** > > By default, a ServiceNow source starts a [rescan](https://docs.coveo.com/en/2711/) every day to retrieve ServiceNow content changes, such as item additions, modifications, and deletions. However, you can [edit your source rescan schedule](https://docs.coveo.com/en/1933/). ## About source fields and mappings [mappings](https://docs.coveo.com/en/217/) define what Coveo [index](https://docs.coveo.com/en/204/) [fields](https://docs.coveo.com/en/200/) contain for each [source](https://docs.coveo.com/en/246/) [item](https://docs.coveo.com/en/210/). Your ServiceNow source automatically includes [mapping](https://docs.coveo.com/en/217/) rules for the system table fields that are [indexed by default](https://docs.coveo.com/en/2107#default-configuration). If you [choose to index non-default fields](https://docs.coveo.com/en/2107#modify-the-source-index-configuration), your ServiceNow source automatically creates the field in the Coveo index, as well as the associated mapping rule in your source. All fields are created using the ServiceNow prefix `sn` followed by the `fieldname`, and the mapping rule is set based on the fieldname metadata. **Example** You choose to index a field named `closed_by`. Your ServiceNow source creates a field named `snclosedby` with its mapping rule set to `%[closed_by]`. ### Verify and edit your source field mappings The default mapping rules are suitable in most instances, however you can modify the mappings as required. **Example** In your ServiceNow source, the `title` field is mapped with the following rule: `%[uri]`. As a result, in your search interface, this item has a URL in place of its title. This makes it difficult for a search interface user to know at a glance whether this item is relevant to their query. ![Search-result](https://docs.coveo.com/en/assets/images/coveo-for-servicenow/result.png) Therefore, you could change the `title` field mapping rule to `%[title]` or `%[short_description]` so that Coveo extracts a title or a description to display instead. Do one or both of the following to verify and edit your field mappings: - Access the [mapping panel for your source](https://docs.coveo.com/en/1640#navigating-the-edit-mappings-panel), and then review and [edit](https://docs.coveo.com/en/1640#manage-mappings) the mappings as required. - [Build your source](https://docs.coveo.com/en/2107#build-or-rebuild-your-source), use the [**Content Browser**](https://platform.cloud.coveo.com/admin/#/orgid/content/browser/) ([platform-ca](https://platform-ca.cloud.coveo.com/admin/#/orgid/content/browser/) | [platform-eu](https://platform-eu.cloud.coveo.com/admin/#/orgid/content/browser/) | [platform-au](https://platform-au.cloud.coveo.com/admin/#/orgid/content/browser/)) to inspect the source content, and then [edit](https://docs.coveo.com/en/1640#manage-mappings) the mappings as required. ### Create additional source fields and mappings (optional) In certain situations, you may want to create a field in addition to the fields that are created automatically by your source. For example, you may want to create a field that's used across many sources and mapped to different metadata for each source, or you may want to create a field that aggregates many metadata for a single source. To create additional fields and mappings: . [Add a field](https://docs.coveo.com/en/1833#add-a-field) to the Coveo index manually. . [Create a mapping rule](https://docs.coveo.com/en/1640/) in each source that you want to use the new field. . [Build the sources that you modified](https://docs.coveo.com/en/2107#build-or-rebuild-your-source). ## [[safe]]Safely apply content filtering The best way to ensure that your indexed content is seen only by the intended users is to enforce [content security](#content-security-tab) by selecting the [**Same users and groups as in your content system**](https://docs.coveo.com/en/1779#same-users-and-groups-as-in-your-content-system) option. Should this option be unavailable, select [**Specific users and groups**](https://docs.coveo.com/en/1779#specific-users-and-groups) instead. However, if you need to configure your source so that the indexed source content is accessible to [**Everyone**](https://docs.coveo.com/en/1779#everyone), you should adhere to the following leading practices. These practices ensure that your source content is safely filtered and only accessible by the appropriate users: * [Configure query filters](#configure-query-filters): Apply filter rules on a query pipeline to filter the source content that appears in search results when a query goes through that pipeline. * [Use condition-based query pipeline routing](#use-condition-based-query-pipeline-routing): Apply a condition on a query pipeline to make sure that every query originating from a specific search hub is routed to the right query pipeline. * [Plan for query pipelines](https://docs.coveo.com/en/3198/) by establishing a widget naming convention. * [Configure query filters](https://docs.coveo.com/en/2114/) in ServiceNow for your widgets. * Configure your query pipelines for use with the Coveo widgets by applying a condition to make sure that every query originating from a specific search hub is routed to the right query pipeline. For more information, see the corresponding article: ** [Case Deflection](https://docs.coveo.com/en/2111#configure-your-query-pipeline) ** [Main Search](https://docs.coveo.com/en/2105#configure-your-query-pipeline) ** [Recommendations](https://docs.coveo.com/en/2863#configure-your-query-pipeline) ** [Searchbox](https://docs.coveo.com/en/2106#configure-your-query-pipeline) ** [Insight Panel](https://docs.coveo.com/en/2113#configure-your-query-pipeline) ## Required privileges You can assign privileges to allow access to specific tools in the [Coveo Administration Console](https://docs.coveo.com/en/183/). The following table indicates the privileges required to view or edit elements of the [**Sources**](https://platform.cloud.coveo.com/admin/#/orgid/content/sources/) ([platform-ca](https://platform-ca.cloud.coveo.com/admin/#/orgid/content/sources/) | [platform-eu](https://platform-eu.cloud.coveo.com/admin/#/orgid/content/sources/) | [platform-au](https://platform-au.cloud.coveo.com/admin/#/orgid/content/sources/)) page and associated panels. See [Manage privileges](https://docs.coveo.com/en/3151/) and [Privilege reference](https://docs.coveo.com/en/1707/) for more information. > **Note** > > The **Edit all** privilege isn't required to create sources. > When granting privileges for the [Sources](https://docs.coveo.com/en/1707#sources-domain) domain, you can grant a group or API key the **View all** or [**Custom**](https://docs.coveo.com/en/3151#custom-access-level) access level, instead of **Edit all**, and then select the **Can Create** checkbox to allow users to create sources. > See [Can Create ability dependence](https://docs.coveo.com/en/3151#can-create-ability-dependence) for more information. ## What's next? * [Schedule source updates](https://docs.coveo.com/en/1933/). [Schedule source updates](https://docs.coveo.com/en/1933/).