> For the complete documentation index, see [llms.txt](https://sharpsync.gitbook.io/sharpsync/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://sharpsync.gitbook.io/sharpsync/~/changes/zcOMaRcqMhiRElzWzdJZ/fundamentals/data-sources.md).

# Data Sources

A `Data Source` is exactly that - a source of data you configure to read/write data from, or a source of data with an add-in to push data to SharpSync.&#x20;

A primary source will be a Bill of Materials (BOM) structure and metadata (e.g., part number, description, revision). A secondary source will be Inventory records and BOM data.

Each source may be registered as either a *Primary* or a *Secondary* Data Source.&#x20;

It works as follows:

* *Primary Data Source* ↔️ SharpSync ↔️ S*econdary Data Source*

### Core concept: Sources

* A *Primary* Data Source is typically a CAD / PDM / PLM source. It is the origin of your CAD data.
* A S*econdary* Data Source is typically an ERP / MRP source.
* SharpSync uses both sources to do bi-directional synchronization, meaning it pulls information from the *Primary* and writes to the *Secondary*. It can also pull information from the *Secondary* and write to the *Primary*.
* Currently the application is limited to a single *Primary* source and a single *Secondary* source

### Core concept: Primary and Alternative Component Identifiers

SharpSync is a synchronization tool. It synchronizes data between two Data Sources. To do this, it uses the following two settings:

* Primary Component Identifier: The preferred property or meta data name to search
* Alternative Component Identifier: The alternative property or meta data name to search if the primary returns an empty result.

A Primary (or alternative) component identifier is the meta data, part number or custom property that uniquely identifies the component item (part, assembly, item or drawing) in a Data Source.

Typically this property (in a CAD environment) would be something like `Number`, `PartNumber`, `No`, `PartNo.`  or similar.

Typically in an ERP system, this would be something like `Number`, `PartNo`, `ItemId`, `Id` or similar.

**Example**

Let's say we're working with a part called '123'. Our primary identifier is `'PartNumber'` and our alternative identifier is `'name'.`

The way SharpSync works is that it searches the source for the *Primary* identifier (in this case the primary identifier is `PartNumber`). So it  searches the source for a component identifier  `PartNumber` with a value of `123.`&#x20;

If nothing is found using an exact match (i.e. no component identifier `PartNumber` with a value of `123`), it will search the source using the *Alternative Component Identifier*. In this case, the alternative identifier is`name`, so the source is searched for a component identifier `name` with a value of `123`.

As an example of a Primary Identifier, we have included a screenshot from OnShape. This will of course vary from other platforms:

<figure><img src="https://2811874215-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FcO2KdHJXVWdQ1ou1L85s%2Fuploads%2F1fD5CAVq2fmZZ5jQkLfT%2Fimage.png?alt=media&amp;token=ccbc7cd6-167d-4e2a-b71d-3fc334f4c389" alt="" width="563"><figcaption><p>OnShape Property Map</p></figcaption></figure>

### Core concepts: Setup

To complete a Data Source's setup, you have to complete at least the following two items:

* Setup authentication
* Setup BOM configuration

### Resource links

Select an individual Data Source to view the configuration setup for that source.

<table data-full-width="false"><thead><tr><th width="152">Data Source</th><th>Type</th><th>Sync</th><th>Status</th><th>Documentation</th></tr></thead><tbody><tr><td>CSV</td><td>Primary</td><td>single direction</td><td><span data-gb-custom-inline data-tag="emoji" data-code="2705">✅</span></td><td><a href="/sharpsync/~/changes/zcOMaRcqMhiRElzWzdJZ/data-sources/editor.md">Documentation</a></td></tr><tr><td>Inventor / CAD</td><td>Primary</td><td>single-directional</td><td><span data-gb-custom-inline data-tag="emoji" data-code="2705">✅</span></td><td>Documentation</td></tr><tr><td>MS Dynamics</td><td>Secondary</td><td>bi-directional</td><td>[WIP]</td><td>Documentation</td></tr><tr><td>NetSuite</td><td>Secondary</td><td>bi-directional</td><td><span data-gb-custom-inline data-tag="emoji" data-code="2705">✅</span></td><td><a href="/sharpsync/~/changes/zcOMaRcqMhiRElzWzdJZ/data-sources/netsuite.md">Documentation</a></td></tr><tr><td>Odoo</td><td>Secondary</td><td>bi-directional</td><td><span data-gb-custom-inline data-tag="emoji" data-code="2705">✅</span></td><td>Documentation</td></tr><tr><td>Onshape / CAD</td><td>Primary</td><td>bi-directional</td><td><span data-gb-custom-inline data-tag="emoji" data-code="2705">✅</span></td><td>Documentation</td></tr><tr><td>PropelPLM</td><td>Secondary</td><td>bi-directional</td><td><span data-gb-custom-inline data-tag="emoji" data-code="2705">✅</span></td><td>Documentation</td></tr><tr><td>SOLIDWORKS</td><td>Primary</td><td>bi-directional</td><td><span data-gb-custom-inline data-tag="emoji" data-code="2705">✅</span></td><td>Documentation</td></tr><tr><td>SOLIDWORKS /  CAD</td><td>Primary</td><td>single-directional</td><td><span data-gb-custom-inline data-tag="emoji" data-code="2705">✅</span></td><td>Documentation</td></tr></tbody></table>

See also [Troubleshooting](https://github.com/SharpSync/docs/blob/main/datasources/troubleshooting_datasources.md)
