# Solidworks PDM

We provide two methods for integrating Solidworks PDM part and assembly data into Violet:

1. **Manual** **Import** - via [.csv file import](#manual-upload-.csv-file-import)
2. **Live Integration** - via [direct query to your SQL database](#live-fetch-direct-query)

Our live integration fetches data directly from your Solidworks PDM server instead of via the API. This means it works with any tier of Solidworks PDM - it does not require you to have PDM Professional.

## Manual Import

In this method, you'll need to export a .csv file of your Bill of Materials (BOM) from Solidworks PDM. When exporting, make sure to:&#x20;

* Remove any header/title info from your BOM .csv file for proper import. The first row should contain the names of each column.
* Either the 'File Name' or 'Part Number' field should be populated in order to generate a unique identifier for each row.

Then, follow the instructions below to import:

1. In [Violet](https://app.violetlabs.com/) (or [VioletGov](https://app.violetgov.com/)), navigate to **Integrations** and click  <img src="https://2091741164-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FvrraExym8pNEUvBDoima%2Fuploads%2FtlFf29W81Xw97AUJ5zwb%2FScreenshot%202026-02-19%20at%201.13.34%E2%80%AFPM.png?alt=media&#x26;token=c80f613a-d379-4cd4-a5c8-9c04e63e37ea" alt="" data-size="line"> to add a new integration.&#x20;
2. Select <img src="https://2091741164-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FvrraExym8pNEUvBDoima%2Fuploads%2FJq3xOadLK94mdK0Htemw%2Fsolidworks-pdm.png?alt=media&#x26;token=ad0ff24a-be5c-41c0-931d-cacb0de1b20f" alt="" data-size="line"> **Solidworks PDM**
3. Click **Upload File**, locate your exported BOM, and click Open.

\[Optional] You can also provide a unique name for the connection based on the credentials you're using, and you can create **restricted permissions** to users or groups:

<figure><img src="https://2091741164-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FvrraExym8pNEUvBDoima%2Fuploads%2FLNq8XfPFudyBudwAhJwe%2Fpermissions.png?alt=media&#x26;token=502752e3-2f38-4c8b-8fa0-2ff8b3a5a19a" alt="" width="375"><figcaption></figcaption></figure>

4. Click **Create**.
5. You can continue to upload new versions of the BOM over time. Each subsequent import will intelligently map and update part data based on either filename or part number.

## Live Integration

In this method, Violet queries the SQL server hosting your Solidworks PDM vault directly. Violet fetches part and assembly (BOM) data.

To enable this, you will need to configure access:

{% stepper %}
{% step %}

#### Enable connectivity to your PDM server

Allow Violet to connect to your server by allowlisting our IP address or setting up a VPN tunnel.

For VPN, we recommend Tailscale. These options are described in further detail [here](https://docs.violetlabs.com/resources/administrative/connect-self-hosted-software).
{% endstep %}

{% step %}

#### Provide read-only access to your PDM server

1. First, create a read-only SQL login:

```sql
CREATE LOGIN swpdm_bom_user WITH PASSWORD = 'StrongPasswordHere!';
```

2. Next, create a user in the PDM database

```sql
USE YourPDMDatabase;
CREATE USER swpdm_bom_user FOR LOGIN swpdm_bom_user;
```

3. Last, add the user to the db\_datareader role

```sql
EXEC sp_addrolemember 'db_datareader', 'swpdm_bom_user';
```

This enables access to the entire PDM database. If you have sensitive and/or non-BOM data that needs to be restricted, follow the instructions below for [#advanced-sql-access-optional](#advanced-sql-access-optional "mention").
{% endstep %}

{% step %}

#### Create an integration

Navigate to the **Integrations** page and select <img src="https://2091741164-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FvrraExym8pNEUvBDoima%2Fuploads%2FJq3xOadLK94mdK0Htemw%2Fsolidworks-pdm.png?alt=media&#x26;token=ad0ff24a-be5c-41c0-931d-cacb0de1b20f" alt="" data-size="line"> **Solidworks PDM SQL Server.** Provide the username and password created above, the IP address of your server, port (typically `1433`) and the name of your database.

<figure><img src="https://2091741164-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FvrraExym8pNEUvBDoima%2Fuploads%2FPiXIUSX99YDpiRnOgYyS%2FScreenshot%202026-03-17%20at%206.23.24%E2%80%AFAM.png?alt=media&#x26;token=70d03e66-27f5-43d7-82dd-0c54a1733268" alt="" width="188"><figcaption></figcaption></figure>

Click **Connect** to configure your integration.
{% endstep %}
{% endstepper %}

### Advanced SQL access \[optional]

<details>

<summary>Instructions for advanced SQL access</summary>

If you have sensitive, non-BOM-related data on your server that you need to safeguard, you can enable SQL access to specific tables only.

1. Create a SQL login

```sql
CREATE LOGIN swpdm_bom_user WITH PASSWORD = 'StrongPasswordHere!';
```

2. Create a user in the PDM database

```sql
USE YourPDMDatabase;
CREATE USER swpdm_bom_user FOR LOGIN swpdm_bom_user;
```

3. Grant read-only access to required BOM-related tables

```sql
GRANT SELECT ON dbo.Documents          TO swpdm_bom_user;
GRANT SELECT ON dbo.DocumentReferences TO swpdm_bom_user;
GRANT SELECT ON dbo.Configurations     TO swpdm_bom_user;
GRANT SELECT ON dbo.CardVariables      TO swpdm_bom_user;
GRANT SELECT ON dbo.Users              TO swpdm_bom_user;
GRANT SELECT ON dbo.States             TO swpdm_bom_user;

```

The names of your tables may be different from those listed above. Use the below query to list all the tables in your PDM database. We'll then identify which ones correspond to the tables we need.

```sql
SELECT name 
FROM sys.tables 
ORDER BY name;
```

</details>

## Sync Solidworks data to other tools

Your Solidworks PDM data can also be synced to downstream tools. Refer to the below examples for more detail:

* [solidworks-pdm-to-ion](https://docs.violetlabs.com/features/workflows/legacy-data-syncs/solidworks-pdm-to-ion "mention")
* [solidworks-pdm-to-boltline](https://docs.violetlabs.com/features/workflows/legacy-data-syncs/solidworks-pdm-to-boltline "mention")
