> ## Documentation Index
> Fetch the complete documentation index at: https://docs.kodelabs.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Asset discovery

> Define data sources, run discovery, configure field mapping and matching, and link assets at the building level

**Asset discovery** lets you import and onboard assets at the [building level](/products/assetops/quickstart/usage-workflow#building-level). You define a data source from an Excel template, then run discovery to add assets to the building.

```mermaid actions={false} theme={"theme":{"light":"github-light","dark":"github-dark"}}
---
config:
  theme: neutral
  layout: dagre
---
flowchart LR
 subgraph s1["Data source"]
        B2["Asset 1"]
        B3["Asset 2"]
        B4["Asset 3"]
  end
 subgraph s2["Define data source"]
        B1["data-source.xlsx"]
        D["Data sources"]
        Z["Data source name"]
  end
    B1 -- define assets --- B2 & B3 & B4
    AD["Asset discovery"] -- access --- D & DL["Discovery logs"]
    D -- upload --- B1
    DL -- initiate --- ID["Initiate discovery"]
    ID -- discover --- s1
    D -- define --- Z

     B2:::Rose
     B3:::Rose
     B4:::Rose
     B1:::Sky
     Z:::Sky
     ID:::Sky
    classDef Rose stroke-width:1px, stroke-dasharray:none, stroke:#FF5978, fill:#FFDFE5, color:#8E2236
    classDef Sky stroke-width:1px, stroke-dasharray:none, stroke:#374D7C, fill:#E2EBFF, color:#374D7C
    linkStyle 0 stroke:#FF6D00,fill:none
    linkStyle 1 stroke:#FF6D00,fill:none
    linkStyle 2 stroke:#FF6D00,fill:none
    linkStyle 3 stroke:#00C853,fill:none
    linkStyle 4 stroke:#00C853,fill:none
    linkStyle 5 stroke:#00C853,fill:none
    linkStyle 6 stroke:#00C853,fill:none
    linkStyle 7 stroke:#FF6D00,fill:none
    linkStyle 8 stroke:#00C853,fill:none
```

Open a building from [Buildings](/products/assetops/resources/buildings), then select **Asset discovery** in the building sidebar. Use the secondary navigation:

* **Data sources** — Upload and manage import files
* **Discovery logs** — Run discovery and review results
* **Configurations** — [Field mapping](#field-mapping) and [matching rules](#matching-rules)
* **Asset linking** — Merge duplicate assets into one record

***

## Concepts and rationale

**Asset linking** associates newly discovered assets from data sources with existing assets in your building. When multiple discovery sources (BMS, CMMS, IoT sensors) detect the same physical device, linking keeps one record so the database stays accurate and free of redundant entries.

Asset linking provides these capabilities:

| Capability               | Description                                                                                                                            |
| ------------------------ | -------------------------------------------------------------------------------------------------------------------------------------- |
| **Duplicate check**      | Runs automatically after discovery, and on demand when you choose match fields. Profiling recommends the strongest fields for the site |
| **Scored suggestions**   | Each candidate pair includes a match score so you can filter and confirm high-confidence links first                                   |
| **Linking confirmation** | You review suggested links, confirm matches, and merge information without creating a duplicate                                        |
| **Manual linking**       | Pair assets yourself when suggestions do not fit                                                                                       |

Configure [field mapping](#field-mapping) and [matching](#matching-rules) before you link assets. Merged asset fields follow mapping priorities. Duplicate checks use profiling-driven fields and the match configuration you accept or adjust.

### Linking constraints

<Warning>
  An asset cannot link to another asset that originates from the same external source. This rule prevents circular references and keeps data logic consistent in your asset database.
</Warning>

***

## Data sources

### View data sources

<Frame caption="The Data sources page lists each source with connector type and last discovery time">
  <img src="https://mintcdn.com/kodelabs/E_jpUki-mggVLzq3/images/assetops/assetops-building-asset-discovery-data-sources.png?fit=max&auto=format&n=E_jpUki-mggVLzq3&q=85&s=221c013458bf9781dccd617a2f400b08" alt="Asset Discovery Data Sources table with Name, Connector Type, and Last Discovery columns plus Add Data Source button" width="1024" height="328" data-path="images/assetops/assetops-building-asset-discovery-data-sources.png" />
</Frame>

| Column             | Description                                                             |
| ------------------ | ----------------------------------------------------------------------- |
| **Name**           | Data source display name                                                |
| **Connector type** | How assets are retrieved (for example, KODE API for uploaded templates) |
| **Last discovery** | Date and time of the most recent discovery run                          |

Use **Search** and **Filters** to find sources. Select **+ Add data source** to upload a new file.

### Add a data source

<Frame caption="Download the template, fill asset data, and upload the completed file">
  <img src="https://mintcdn.com/kodelabs/E_jpUki-mggVLzq3/images/assetops/assetops-building-asset-discovery-add-data-source.png?fit=max&auto=format&n=E_jpUki-mggVLzq3&q=85&s=cdc8229f9e738f140626de9085ed908a" alt="Add Data Source modal with Name field, template download steps, and file upload area" width="645" height="610" data-path="images/assetops/assetops-building-asset-discovery-add-data-source.png" />
</Frame>

<Steps>
  <Step title="Open Data sources">
    Navigate to **Asset discovery** > **Data sources**.
  </Step>

  <Step title="Select + Add data source">
    Select **+ Add data source**.
  </Step>

  <Step title="Download and complete the template">
    1. Download the [asset import template](/downloads/asset_import_template.xlsx).
    2. Fill in asset data using the template columns.
    3. Upload the completed `.xlsx` file in the **File** field.
  </Step>

  <Step title="Save">
    Enter a **Name** for the data source and select **Save**.
  </Step>
</Steps>

<Info>
  Uploaded sources use the provided template format. To connect other connector types, configure integrations in [Cloud BMS](/products/kode-os/get-started/introduction).
</Info>

<Expandable title="Template column reference">
  | Field         | Example                |
  | ------------- | ---------------------- |
  | ID            | `AHU-RT-01`            |
  | Name          | `Rooftop AHU - Zone A` |
  | Category      | `HVAC`                 |
  | IP address    | `192.168.10.45`        |
  | MAC address   | `00:1A:2B:3C:4D:5E`    |
  | Model number  | `48HC-24-500`          |
  | Serial number | `SN-2024-88421`        |
  | Status        | `Active`               |
  | Location      | `Roof - Zone A`        |

  See the template file for the full column list and required formats.
</Expandable>

### Discover assets from a data source

Open the row menu on a data source and select **Discover assets** to start discovery without opening **Discovery logs** first.

<Frame caption="Use the row menu to discover assets, edit, or delete a data source">
  <img src="https://mintcdn.com/kodelabs/E_jpUki-mggVLzq3/images/assetops/assetops-building-asset-discovery-discover-assets-menu.png?fit=max&auto=format&n=E_jpUki-mggVLzq3&q=85&s=22d9e40e18ad1e1ad81db80b30195c2c" alt="Data source row menu with Discover Assets, Edit, and Delete options" width="341" height="257" data-path="images/assetops/assetops-building-asset-discovery-discover-assets-menu.png" />
</Frame>

***

## Discovery logs

### View discovery logs

<Frame caption="Discovery logs list each run with status badges and actions to open results">
  <img src="https://mintcdn.com/kodelabs/E_jpUki-mggVLzq3/images/assetops/assetops-building-discovery-logs.png?fit=max&auto=format&n=E_jpUki-mggVLzq3&q=85&s=b5e6fe35adcbdffa76d4aac9cb583f4d" alt="Discovery Logs table with Data Source, Date and Time, Discovered and Cancelled status badges, User, Discovered count, and row actions" width="839" height="205" data-path="images/assetops/assetops-building-discovery-logs.png" />
</Frame>

| Column          | Description                                                                          |
| --------------- | ------------------------------------------------------------------------------------ |
| **Data source** | Source name and connector type (for example, **KODE API**)                           |
| **Date & time** | When discovery started                                                               |
| **Status**      | **Discovered** when complete, **Cancelled** if stopped, or in progress while running |
| **User**        | User who initiated the run                                                           |
| **Discovered**  | Count of assets found in the run                                                     |

Row actions:

* Select the arrow icon to open **Results: Asset Discovery** for that run
* Select the **X** icon to cancel or remove the log entry when available

Use **Search** and **Filters** to find runs. Select **Initiate discovery** to start a new run.

### Initiate discovery

Select **Initiate discovery** to open the discovery dialog.

<Frame caption="Choose a data source and start discovery">
  <img src="https://mintcdn.com/kodelabs/E_jpUki-mggVLzq3/images/assetops/assetops-building-asset-discovery-initiate-discovery.png?fit=max&auto=format&n=E_jpUki-mggVLzq3&q=85&s=e11c0a9398ded4411bf21510352c37c6" alt="Initiate Discovery modal with Choose Data Source dropdown and Initiate Discovery button" width="1024" height="319" data-path="images/assetops/assetops-building-asset-discovery-initiate-discovery.png" />
</Frame>

<Steps>
  <Step title="Open Discovery logs">
    Navigate to **Asset discovery** > **Discovery logs**.
  </Step>

  <Step title="Select Initiate discovery">
    Select **Initiate discovery**.
  </Step>

  <Step title="Choose data source">
    Select the **Data source** to discover, then select **Initiate discovery**.
  </Step>
</Steps>

While discovery runs, the **Asset Discovery Log** shows progress for the selected source. The log walks through **Discovering assets**, then **Scan for matching assets**, so matching starts as part of the same run.

<Frame caption="Asset Discovery Log tracks discovering assets and the matching scan">
  <img src="https://mintcdn.com/kodelabs/E_jpUki-mggVLzq3/images/assetops/assetops-building-discovery-match-menu.png?fit=max&auto=format&n=E_jpUki-mggVLzq3&q=85&s=b27784b70acbd36dc490bb0e5c8efd7c" alt="Asset Discovery Log popup for New Furniture via KODE API showing Discovering assets in progress and Scan for matching assets as the next step" width="721" height="498" data-path="images/assetops/assetops-building-discovery-match-menu.png" />
</Frame>

### Review discovery results

When discovery completes, select the arrow on the log row to open **Results: Asset Discovery**. The header shows the data source name and connector type (for example, **100 Assets - KODE API**).

Two tabs organize results:

| Tab                 | Description                                                  |
| ------------------- | ------------------------------------------------------------ |
| **New assets**      | Discovered records not yet in AssetOps for this building     |
| **Existing assets** | Discovered records that match assets already in the building |

Use **Search**, **Filters**, and row checkboxes to work with the list. Select **Done** to exit without saving changes.

#### Add new assets

On the **New assets** tab, select assets to import.

<Frame caption="New assets tab with Link with Existing and Add as New Assets actions">
  <img src="https://mintcdn.com/kodelabs/E_jpUki-mggVLzq3/images/assetops/assetops-building-discovery-results-new.png?fit=max&auto=format&n=E_jpUki-mggVLzq3&q=85&s=f08d700f1f2e5ac4054a8913799d957e" alt="Results Asset Discovery New Assets tab with selected rows and Link with Existing and Add as New Assets buttons" width="837" height="819" data-path="images/assetops/assetops-building-discovery-results-new.png" />
</Frame>

| Action                 | Description                                                           |
| ---------------------- | --------------------------------------------------------------------- |
| **Link with existing** | Map new records to assets already in the building to avoid duplicates |
| **Add as new assets**  | Create new building assets from the selected discovered records       |

##### Link with existing

Select **Link with existing** to open the **Link with existing assets** page. You can link with [autosuggest](#link-assets-using-autosuggest) or [manually](#link-assets-manually).

<Note>
  You can select up to 50 assets at a time for linking.
</Note>

<Frame caption="Map each new asset to an existing building asset manually or with autosuggest">
  <img src="https://mintcdn.com/kodelabs/E_jpUki-mggVLzq3/images/assetops/assetops-building-discovery-link-with-existing.png?fit=max&auto=format&n=E_jpUki-mggVLzq3&q=85&s=03b1511c644f0f4f107b3f4c3c81669e" alt="Link with Existing screen showing Selected New Assets paired with Existing Assets dropdowns and Autosuggest button" width="834" height="834" data-path="images/assetops/assetops-building-discovery-link-with-existing.png" />
</Frame>

The page has two sides:

* **Selected new assets** — Discovered records you selected on the left
* **Existing assets** — Dropdown on the right for each building asset to link to

Use **Reset all** to clear mappings, **Cancel** to exit without saving, or **Save** to confirm links. Merged fields follow [field mapping](#field-mapping) priorities.

<Frame caption="Toast notifications show linking progress and completion with link to Assets">
  <img src="https://mintcdn.com/kodelabs/E_jpUki-mggVLzq3/images/assetops/assetops-building-discovery-linking-toasts.png?fit=max&auto=format&n=E_jpUki-mggVLzq3&q=85&s=df3afdc2a338dd1a6d59db736186cea8" alt="Linking assets in progress and Linking completed successfully toasts with Go to Assets link" width="399" height="424" data-path="images/assetops/assetops-building-discovery-linking-toasts.png" />
</Frame>

When linking finishes, **Linking completed successfully** shows how many assets linked. Select **Go to Assets** to open the [Assets](/products/assetops/assets/assets) list.

#### Update existing assets

On the **Existing assets** tab, select records to update with values from the discovery run.

<Frame caption="Existing assets tab lists matched assets with Update Assets action">
  <img src="https://mintcdn.com/kodelabs/E_jpUki-mggVLzq3/images/assetops/assetops-building-discovery-results-existing.png?fit=max&auto=format&n=E_jpUki-mggVLzq3&q=85&s=979cbf59b121986e449c54d26cd5ed61" alt="Results Asset Discovery Existing Assets tab with Name, Category, Model Number, Type, and Located In columns and Update Assets button" width="847" height="819" data-path="images/assetops/assetops-building-discovery-results-existing.png" />
</Frame>

Select **Update assets** to apply field values from discovery to the selected building assets. A confirmation dialog shows how many assets you selected.

<Frame caption="Confirm before updating discovered values on existing building assets">
  <img src="https://mintcdn.com/kodelabs/E_jpUki-mggVLzq3/images/assetops/assetops-building-discovery-update-existing-confirm.png?fit=max&auto=format&n=E_jpUki-mggVLzq3&q=85&s=00747f182213fc38cb97646cdbd4061d" alt="Update Existing Assets modal asking to confirm updating four selected discovered assets" width="471" height="226" data-path="images/assetops/assetops-building-discovery-update-existing-confirm.png" />
</Frame>

Select **Yes, confirm** to apply updates, or **Cancel** to return to the results screen. Updated assets reflect [field mapping](#field-mapping) priorities when multiple sources supply the same field.

***

## Configurations

**Configurations** control how discovery maps and matches imported assets. Set up configurations before you run discovery and link assets so field updates and duplicate checks behave predictably.

Select **Asset discovery** > **Configurations** in the building sidebar. The page has two tabs: **Field mapping** and **Matching rules**.

```mermaid actions={false} theme={"theme":{"light":"github-light","dark":"github-dark"}}
---
config:
  theme: neutral
---
flowchart LR
 subgraph s1["Asset fields"]
        F3["Field 1"]
        F4["Field 2"]
        F5["Field 3"]
  end
 subgraph s2["Data sources"]
        D1["Data source 1"]
        D2["Data source 2"]
        D3["Data source 3"]
  end
    FM["Field mapping"] --- AF["Asset fields"]
    AF --- F3 & F4 & F5
    F4 -- priority --- D1
    F4 --- D2 & D3

     F3:::Sky
     F4:::Sky
     F5:::Sky
     D1:::Rose
     D2:::Rose
     D3:::Rose
    classDef Sky stroke-width:1px, stroke-dasharray:none, stroke:#374D7C, fill:#E2EBFF, color:#374D7C
    classDef Rose stroke-width:1px, stroke-dasharray:none, stroke:#FF5978, fill:#FFDFE5, color:#8E2236
    linkStyle 0 stroke:#00C853,fill:none
    linkStyle 1 stroke:#00C853,fill:none
    linkStyle 2 stroke:#00C853,fill:none
    linkStyle 3 stroke:#00C853,fill:none
    linkStyle 4 stroke:#FF6D00,fill:none
```

### Field mapping

Field mapping defines which data source is the primary source of truth for each asset field (name, serial number, location, and others). For every field, you maintain a priority list of data sources.

When two assets link, AssetOps fills each field with the highest-priority value that exists between the linked records. If a field has no sources in its priority list, that field is not updated during linking.

<Frame caption="Field mapping lists 33 asset fields with expandable source priority per field">
  <img src="https://mintcdn.com/kodelabs/E_jpUki-mggVLzq3/images/assetops/assetops-building-configurations-field-mapping.png?fit=max&auto=format&n=E_jpUki-mggVLzq3&q=85&s=a632b138bc8626505936dd1ecca87c2c" alt="Configurations Field Mapping tab showing Name field expanded with KODE API source priority and Add Source button" width="1024" height="788" data-path="images/assetops/assetops-building-configurations-field-mapping.png" />
</Frame>

<Steps>
  <Step title="Open Field mapping">
    Navigate to **Asset discovery** > **Configurations** and stay on the **Field mapping** tab.
  </Step>

  <Step title="Expand a field">
    Select a field card to expand it and view current source priorities.
  </Step>

  <Step title="Add a source">
    Select **+ Add source**. In the **Add source** dialog, choose a data source from the dropdown, then select **Save**. The source appears in the field list.
  </Step>

  <Step title="Set priority">
    Drag sources to reorder priority. The system uses data from the highest-priority source that has a value between the linked assets.
  </Step>
</Steps>

Remove a source with the minus icon when it should no longer apply to that field.

After you upload a template in [Data sources](#data-sources), fields typically show **KODE API** as the source.

#### Mappable fields (33)

AssetOps supports field mapping for these asset attributes:

| Field             | Field            | Field            |
| ----------------- | ---------------- | ---------------- |
| Name              | Category         | Model number     |
| Serial number     | IP address       | MAC address      |
| Installation date | Warranty date    | Commission date  |
| Turnover date     | Asset tag        | Initial cost     |
| Weight            | Life expectancy  | Location         |
| Belt size         | Filter size      | Power            |
| Tonnage           | Amps             | Volts            |
| RPMs              | Status           | Manufactured by  |
| Repair cost       | Replacement cost | Firmware version |
| OS version        | Type             | Located in       |
| Commissioned by   | Installed by     | Serviced by      |

### Matching rules

Matching configuration drives automatic and manual [duplicate checks](#link-assets-using-autosuggest). Profiling inspects completeness, uniqueness, and how fields are shared across sources, then recommends fields and match settings for the site. Strong identifiers are preferred when the data supports them. Blank or generic values (for example, `N/A`, `0.0.0.0`, or `00:00:00:00:00:00`) are ignored.

The matching engine compares identifiers and names across common formatting differences (spaces, hyphens, underscores, and reordered tokens). Suggestions include a **match score** so stronger candidates surface first.

Each matching rule contains up to three conditions. Every condition must be true for the rule to suggest a link. One rule must be the default so automatic and on-demand checks always have a baseline configuration.

<Frame caption="Matching rules list default and custom rules with conditions">
  <img src="https://mintcdn.com/kodelabs/E_jpUki-mggVLzq3/images/assetops/assetops-building-configurations-matching-rules.png?fit=max&auto=format&n=E_jpUki-mggVLzq3&q=85&s=abe7fe38d6b2075e98d77321264bdd9f" alt="Configurations Matching Rules tab showing Exact match by Name default rule with Field Name and Match Type columns" width="1024" height="516" data-path="images/assetops/assetops-building-configurations-matching-rules.png" />
</Frame>

#### Match types

| Match type      | Behavior                                             |
| --------------- | ---------------------------------------------------- |
| **Match**       | Case-insensitive comparison (`abc` matches `ABC`)    |
| **Exact match** | Case-sensitive comparison (`abc` matches only `abc`) |

#### Default rule

The system creates a default rule with a field and match type for baseline checks. Duplicate checks use the default when you do not select another rule. Profiling may suggest different fields for a given site; accept or adjust those suggestions when you run a manual check.

<Warning>
  A default matching rule must always exist and cannot be deleted. Duplicate checks require a default rule to run.
</Warning>

#### Create a matching rule

<Frame caption="Define rule name, description, and conditions with field and match type">
  <img src="https://mintcdn.com/kodelabs/E_jpUki-mggVLzq3/images/assetops/assetops-building-configurations-add-rule.png?fit=max&auto=format&n=E_jpUki-mggVLzq3&q=85&s=aef1055074ba035fb1c53bcc8f524746" alt="Add Rule modal with Rule Name, Description, Rule Conditions with Field Name and Match Type dropdowns, and Set as default rule for Autosuggest checkbox" width="862" height="622" data-path="images/assetops/assetops-building-configurations-add-rule.png" />
</Frame>

<Steps>
  <Step title="Open Matching rules">
    Navigate to **Asset discovery** > **Configurations** and select the **Matching rules** tab.
  </Step>

  <Step title="Select + Add rule">
    Select **+ Add rule** in the upper right corner.
  </Step>

  <Step title="Enter rule details">
    Enter a unique **Rule name** and **Description**.
  </Step>

  <Step title="Add conditions">
    For each condition, set **Field name** (for example, serial number) and **Match type**. Select **+ Add condition** for up to three conditions total. Use profiling suggestions when they appear so you prioritize fields with strong coverage for this data source.
  </Step>

  <Step title="Save the rule">
    Select **Save**. Enable **Set as default rule for autosuggest** if this rule should become the default.
  </Step>
</Steps>

#### Designate a default matching rule

<Steps>
  <Step title="Open the rule menu">
    In the matching rules list, select the three-dot menu on the rule row.
  </Step>

  <Step title="Edit the rule">
    Select **Edit**.
  </Step>

  <Step title="Set default">
    Enable **Set as default rule for autosuggest**, then select **Save**.
  </Step>
</Steps>

You can also enable **Set as default rule for autosuggest** when you create a new rule.

#### Edit a matching rule

<Steps>
  <Step title="Open the rule menu">
    Select the three-dot menu on the rule row, then select **Edit**.
  </Step>

  <Step title="Update and save">
    Change rule settings as needed, then select **Save**. Select **Cancel** to discard changes.
  </Step>
</Steps>

#### Delete a matching rule

<Steps>
  <Step title="Open the rule menu">
    Select the three-dot menu on the rule row, then select **Delete**.
  </Step>

  <Step title="Confirm deletion">
    In the **Delete matching rule** dialog, select **Delete** to confirm or **Cancel** to keep the rule.
  </Step>
</Steps>

You cannot delete the default matching rule.

```mermaid actions={false} theme={"theme":{"light":"github-light","dark":"github-dark"}}
---
config:
  theme: neutral
---
flowchart LR
 subgraph s1["Condition 1"]
        Field1["Field"]
        Match1["Match type"]
  end
 subgraph s2["Condition 2"]
        Field2["Field"]
        Match2["Match type"]
  end
    MR["Matching rules"] --- R1["Rule 1"]
    R1 --- s1 & s2

     Field1:::Rose
     Field2:::Rose
     R1:::Sky
    classDef Sky stroke-width:1px, stroke-dasharray:none, stroke:#374D7C, fill:#E2EBFF, color:#374D7C
    classDef Rose stroke-width:1px, stroke-dasharray:none, stroke:#FF5978, fill:#FFDFE5, color:#8E2236
```

***

## Asset linking

Link newly discovered assets with existing building assets to merge information and prevent duplicate entries. See [Concepts and rationale](#concepts-and-rationale) for how duplicate checks, scored suggestions, confirmation, and manual linking work together.

Discovery starts an automatic duplicate check when assets are ingested. You can also run checks on demand for selected items or the full result set. You can start linking from the **New assets** tab in [Review discovery results](#review-discovery-results), or select **Asset discovery** > **Asset linking** in the building sidebar.

### Link assets using autosuggest

Use **Autosuggest** to fill **Existing assets** on the right from the duplicate check. The review list highlights the **best match** for each discovered asset. Expand a row to see alternative scored candidates when the top suggestion is wrong. Filter by match score, category, type, or area to focus the list. Confirm high-confidence links in bulk, then save.

<Frame caption="Link with existing assets page with Autosuggest and per-row existing asset dropdowns">
  <img src="https://mintcdn.com/kodelabs/E_jpUki-mggVLzq3/images/assetops/assetops-building-discovery-link-with-existing.png?fit=max&auto=format&n=E_jpUki-mggVLzq3&q=85&s=03b1511c644f0f4f107b3f4c3c81669e" alt="Link with Existing screen showing selected new assets on the left, existing asset dropdowns on the right, and Autosuggest button in the header" width="834" height="834" data-path="images/assetops/assetops-building-discovery-link-with-existing.png" />
</Frame>

<Steps>
  <Step title="Open discovery results">
    Navigate to **Asset discovery** > **Discovery logs**. Run **Initiate discovery** or open a completed log with the arrow icon to reach **Results: Asset Discovery** on the **New assets** tab.
  </Step>

  <Step title="Select assets">
    Select discovered assets to link. You can limit the selection to run a check on selected items only. **Link with existing** becomes active.
  </Step>

  <Step title="Open Link with existing">
    Select **Link with existing**. The **Link with existing assets** page opens with selected new assets on the left and existing asset fields on the right.
  </Step>

  <Step title="Run Autosuggest or configure the check">
    Select **Autosuggest** to run with the current configuration. To choose fields or a rule, open the configuration next to **Autosuggest**, review profiling suggestions, pick a [matching rule](#matching-rules) or fields, then select **Save**. If you do not change the configuration, the [default matching rule](#default-rule) applies.

    <Frame caption="Autosuggest configurations modal to pick a matching rule or open Configurations">
      <img src="https://mintcdn.com/kodelabs/E_jpUki-mggVLzq3/images/assetops/assetops-building-discovery-autosuggest-config.png?fit=max&auto=format&n=E_jpUki-mggVLzq3&q=85&s=bc0b734631150fdb2d8bc8f6fe49e301" alt="Autosuggest Configurations modal with Exact match by Name default rule and Go to Configs button" width="705" height="293" data-path="images/assetops/assetops-building-discovery-autosuggest-config.png" />
    </Frame>

    | Control                | Description                                                                                        |
    | ---------------------- | -------------------------------------------------------------------------------------------------- |
    | Matching rule / fields | Rules and fields from [Matching rules](#matching-rules), with profiling suggestions when available |
    | **Go to Configs**      | Opens **Configurations** to edit rules                                                             |
    | **Save**               | Applies the selected configuration and runs the duplicate check                                    |
  </Step>

  <Step title="Filter and review suggestions">
    Filter suggestions by score range (for example, above 90%), category, type, or area. Review the highlighted best match on each row. Expand alternatives when you need a different candidate. Adjust any mapping with the existing asset dropdown.
  </Step>

  <Step title="Run the check again when needed">
    If matches look weak, run the duplicate check again. Profiling identifies which fields have the strongest coverage for the data source so the next check can use better criteria.
  </Step>

  <Step title="Save or pause">
    Select **Save** to confirm links. Linked asset fields update using [field mapping](#field-mapping) priorities. Use **Close for now** to leave the session and finish linking later. Use **Reset all** to clear mappings, or **Cancel** to exit without saving.
  </Step>
</Steps>

After you confirm links in bulk, linked assets leave the **New assets** list.

### Link assets manually

Use manual linking when scored suggestions do not fit or you need precise control. For each new asset on the left, search and select the correct building asset from the **Existing assets** dropdown on the right. Filters on the existing-asset picker narrow the inventory so you do not search the full building list.

<Frame caption="Manually map each new asset to an existing asset using the Existing assets dropdown">
  <img src="https://mintcdn.com/kodelabs/E_jpUki-mggVLzq3/images/assetops/assetops-building-discovery-link-with-existing.png?fit=max&auto=format&n=E_jpUki-mggVLzq3&q=85&s=03b1511c644f0f4f107b3f4c3c81669e" alt="Link with Existing screen with new assets on the left and Existing Assets dropdown fields on the right for manual pairing" width="834" height="834" data-path="images/assetops/assetops-building-discovery-link-with-existing.png" />
</Frame>

<Steps>
  <Step title="Open discovery results">
    Navigate to **Asset discovery** > **Discovery logs**. Open **Results: Asset Discovery** on the **New assets** tab.
  </Step>

  <Step title="Select assets">
    Select assets, then select **Link with existing**.
  </Step>

  <Step title="Map each pair">
    For each new asset on the left, select the matching existing asset from the dropdown on the right. Use search and filters on the picker when the list is large.
  </Step>

  <Step title="Save links">
    Select **Save** to link the assets. Fields update per [field mapping](#field-mapping). Use **Close for now**, **Reset all**, or **Cancel** as needed.
  </Step>
</Steps>

After linking, verify merged fields on the [Assets](/products/assetops/assets/assets) page and in the asset **Sources** tab.

***

## Related modules

<CardGroup cols={2}>
  <Card title="Assets" icon="box" href="/products/assetops/assets/assets" arrow={true}>
    View and manage assets after discovery completes.
  </Card>
</CardGroup>
